@cuemath/leap 2.8.52 → 2.8.53-aa1

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 (1070) hide show
  1. package/dist/assets/line-icons/icons/alert.js +3 -3
  2. package/dist/assets/line-icons/icons/alert.js.map +1 -1
  3. package/dist/assets/line-icons/icons/back.js +4 -4
  4. package/dist/assets/line-icons/icons/back.js.map +1 -1
  5. package/dist/assets/line-icons/icons/back2.js +3 -3
  6. package/dist/assets/line-icons/icons/back2.js.map +1 -1
  7. package/dist/assets/line-icons/icons/bin.js +8 -8
  8. package/dist/assets/line-icons/icons/bin.js.map +1 -1
  9. package/dist/assets/line-icons/icons/bin2.js +4 -4
  10. package/dist/assets/line-icons/icons/bin2.js.map +1 -1
  11. package/dist/assets/line-icons/icons/book-closed.js +3 -3
  12. package/dist/assets/line-icons/icons/book-closed.js.map +1 -1
  13. package/dist/assets/line-icons/icons/book.js +4 -4
  14. package/dist/assets/line-icons/icons/book.js.map +1 -1
  15. package/dist/assets/line-icons/icons/book2.js +3 -3
  16. package/dist/assets/line-icons/icons/book2.js.map +1 -1
  17. package/dist/assets/line-icons/icons/bookmark-stroke-icon.js.map +1 -1
  18. package/dist/assets/line-icons/icons/bookmark.js +2 -2
  19. package/dist/assets/line-icons/icons/bookmark.js.map +1 -1
  20. package/dist/assets/line-icons/icons/bulb.js +8 -8
  21. package/dist/assets/line-icons/icons/bulb.js.map +1 -1
  22. package/dist/assets/line-icons/icons/bulb2.js +3 -3
  23. package/dist/assets/line-icons/icons/bulb2.js.map +1 -1
  24. package/dist/assets/line-icons/icons/calculator.js.map +1 -1
  25. package/dist/assets/line-icons/icons/calendar.js +3 -3
  26. package/dist/assets/line-icons/icons/calendar.js.map +1 -1
  27. package/dist/assets/line-icons/icons/carat-left.js.map +1 -1
  28. package/dist/assets/line-icons/icons/carat-right.js.map +1 -1
  29. package/dist/assets/line-icons/icons/chat.js +4 -4
  30. package/dist/assets/line-icons/icons/chat.js.map +1 -1
  31. package/dist/assets/line-icons/icons/check.js +4 -4
  32. package/dist/assets/line-icons/icons/check.js.map +1 -1
  33. package/dist/assets/line-icons/icons/check2.js +3 -3
  34. package/dist/assets/line-icons/icons/check2.js.map +1 -1
  35. package/dist/assets/line-icons/icons/chevron-down.js +6 -6
  36. package/dist/assets/line-icons/icons/chevron-down.js.map +1 -1
  37. package/dist/assets/line-icons/icons/chevron-left.js +4 -4
  38. package/dist/assets/line-icons/icons/chevron-left.js.map +1 -1
  39. package/dist/assets/line-icons/icons/chevron-right.js +6 -6
  40. package/dist/assets/line-icons/icons/chevron-right.js.map +1 -1
  41. package/dist/assets/line-icons/icons/circle-back.js.map +1 -1
  42. package/dist/assets/line-icons/icons/clear-all.js.map +1 -1
  43. package/dist/assets/line-icons/icons/clipboard.js +5 -5
  44. package/dist/assets/line-icons/icons/clipboard.js.map +1 -1
  45. package/dist/assets/line-icons/icons/clock.js +3 -3
  46. package/dist/assets/line-icons/icons/clock.js.map +1 -1
  47. package/dist/assets/line-icons/icons/clock2.js +5 -5
  48. package/dist/assets/line-icons/icons/clock2.js.map +1 -1
  49. package/dist/assets/line-icons/icons/closed-eye.js.map +1 -1
  50. package/dist/assets/line-icons/icons/code.js +3 -3
  51. package/dist/assets/line-icons/icons/code.js.map +1 -1
  52. package/dist/assets/line-icons/icons/copy.js +4 -4
  53. package/dist/assets/line-icons/icons/copy.js.map +1 -1
  54. package/dist/assets/line-icons/icons/cross.js +4 -4
  55. package/dist/assets/line-icons/icons/cross.js.map +1 -1
  56. package/dist/assets/line-icons/icons/cue-rocket.js +2 -2
  57. package/dist/assets/line-icons/icons/cue-rocket.js.map +1 -1
  58. package/dist/assets/line-icons/icons/cuemath-logo.js +2 -2
  59. package/dist/assets/line-icons/icons/cuemath-logo.js.map +1 -1
  60. package/dist/assets/line-icons/icons/cursor.js.map +1 -1
  61. package/dist/assets/line-icons/icons/dash-arrow.js +3 -3
  62. package/dist/assets/line-icons/icons/dash-arrow.js.map +1 -1
  63. package/dist/assets/line-icons/icons/down.js +2 -2
  64. package/dist/assets/line-icons/icons/down.js.map +1 -1
  65. package/dist/assets/line-icons/icons/download.js.map +1 -1
  66. package/dist/assets/line-icons/icons/draft.js +4 -4
  67. package/dist/assets/line-icons/icons/draft.js.map +1 -1
  68. package/dist/assets/line-icons/icons/drag.js +3 -3
  69. package/dist/assets/line-icons/icons/drag.js.map +1 -1
  70. package/dist/assets/line-icons/icons/edit-star.js +5 -5
  71. package/dist/assets/line-icons/icons/edit-star.js.map +1 -1
  72. package/dist/assets/line-icons/icons/edit.js +5 -5
  73. package/dist/assets/line-icons/icons/edit.js.map +1 -1
  74. package/dist/assets/line-icons/icons/edit2.js +2 -2
  75. package/dist/assets/line-icons/icons/edit2.js.map +1 -1
  76. package/dist/assets/line-icons/icons/equation.js.map +1 -1
  77. package/dist/assets/line-icons/icons/eraser.js +3 -3
  78. package/dist/assets/line-icons/icons/eraser.js.map +1 -1
  79. package/dist/assets/line-icons/icons/eye.js +4 -4
  80. package/dist/assets/line-icons/icons/eye.js.map +1 -1
  81. package/dist/assets/line-icons/icons/eye2.js +2 -2
  82. package/dist/assets/line-icons/icons/eye2.js.map +1 -1
  83. package/dist/assets/line-icons/icons/game.js +3 -3
  84. package/dist/assets/line-icons/icons/game.js.map +1 -1
  85. package/dist/assets/line-icons/icons/hand.js +2 -2
  86. package/dist/assets/line-icons/icons/hand.js.map +1 -1
  87. package/dist/assets/line-icons/icons/help.js +3 -3
  88. package/dist/assets/line-icons/icons/help.js.map +1 -1
  89. package/dist/assets/line-icons/icons/highlighter.js +4 -4
  90. package/dist/assets/line-icons/icons/highlighter.js.map +1 -1
  91. package/dist/assets/line-icons/icons/home.js +3 -3
  92. package/dist/assets/line-icons/icons/home.js.map +1 -1
  93. package/dist/assets/line-icons/icons/image.js +3 -3
  94. package/dist/assets/line-icons/icons/image.js.map +1 -1
  95. package/dist/assets/line-icons/icons/info.js +3 -3
  96. package/dist/assets/line-icons/icons/info.js.map +1 -1
  97. package/dist/assets/line-icons/icons/info2.js +3 -3
  98. package/dist/assets/line-icons/icons/info2.js.map +1 -1
  99. package/dist/assets/line-icons/icons/left.js +3 -3
  100. package/dist/assets/line-icons/icons/left.js.map +1 -1
  101. package/dist/assets/line-icons/icons/lock.js +3 -3
  102. package/dist/assets/line-icons/icons/lock.js.map +1 -1
  103. package/dist/assets/line-icons/icons/lock2.js +2 -2
  104. package/dist/assets/line-icons/icons/lock2.js.map +1 -1
  105. package/dist/assets/line-icons/icons/minus.js +2 -2
  106. package/dist/assets/line-icons/icons/minus.js.map +1 -1
  107. package/dist/assets/line-icons/icons/minus2.js +3 -3
  108. package/dist/assets/line-icons/icons/minus2.js.map +1 -1
  109. package/dist/assets/line-icons/icons/mistake.js +3 -3
  110. package/dist/assets/line-icons/icons/mistake.js.map +1 -1
  111. package/dist/assets/line-icons/icons/mobile.js +3 -3
  112. package/dist/assets/line-icons/icons/mobile.js.map +1 -1
  113. package/dist/assets/line-icons/icons/more-vertical.js +3 -3
  114. package/dist/assets/line-icons/icons/more-vertical.js.map +1 -1
  115. package/dist/assets/line-icons/icons/next.js +5 -5
  116. package/dist/assets/line-icons/icons/next.js.map +1 -1
  117. package/dist/assets/line-icons/icons/next2.js +4 -4
  118. package/dist/assets/line-icons/icons/next2.js.map +1 -1
  119. package/dist/assets/line-icons/icons/pan.js.map +1 -1
  120. package/dist/assets/line-icons/icons/pencil.js +3 -3
  121. package/dist/assets/line-icons/icons/pencil.js.map +1 -1
  122. package/dist/assets/line-icons/icons/play.js +5 -5
  123. package/dist/assets/line-icons/icons/play.js.map +1 -1
  124. package/dist/assets/line-icons/icons/play2.js +5 -5
  125. package/dist/assets/line-icons/icons/play2.js.map +1 -1
  126. package/dist/assets/line-icons/icons/plus.js +4 -4
  127. package/dist/assets/line-icons/icons/plus.js.map +1 -1
  128. package/dist/assets/line-icons/icons/plus2.js +3 -3
  129. package/dist/assets/line-icons/icons/plus2.js.map +1 -1
  130. package/dist/assets/line-icons/icons/pointer.js +2 -2
  131. package/dist/assets/line-icons/icons/pointer.js.map +1 -1
  132. package/dist/assets/line-icons/icons/practice.js +2 -2
  133. package/dist/assets/line-icons/icons/practice.js.map +1 -1
  134. package/dist/assets/line-icons/icons/progress.js +3 -3
  135. package/dist/assets/line-icons/icons/progress.js.map +1 -1
  136. package/dist/assets/line-icons/icons/question-letter.js +3 -3
  137. package/dist/assets/line-icons/icons/question-letter.js.map +1 -1
  138. package/dist/assets/line-icons/icons/question.js +5 -5
  139. package/dist/assets/line-icons/icons/question.js.map +1 -1
  140. package/dist/assets/line-icons/icons/redo.js +4 -4
  141. package/dist/assets/line-icons/icons/redo.js.map +1 -1
  142. package/dist/assets/line-icons/icons/right.js +3 -3
  143. package/dist/assets/line-icons/icons/right.js.map +1 -1
  144. package/dist/assets/line-icons/icons/ruler.js +3 -3
  145. package/dist/assets/line-icons/icons/ruler.js.map +1 -1
  146. package/dist/assets/line-icons/icons/scribble.js.map +1 -1
  147. package/dist/assets/line-icons/icons/search.js +3 -3
  148. package/dist/assets/line-icons/icons/search.js.map +1 -1
  149. package/dist/assets/line-icons/icons/sheet.js +9 -9
  150. package/dist/assets/line-icons/icons/sheet.js.map +1 -1
  151. package/dist/assets/line-icons/icons/sketch.js +4 -4
  152. package/dist/assets/line-icons/icons/sketch.js.map +1 -1
  153. package/dist/assets/line-icons/icons/skip.js +6 -6
  154. package/dist/assets/line-icons/icons/skip.js.map +1 -1
  155. package/dist/assets/line-icons/icons/skip2.js +4 -4
  156. package/dist/assets/line-icons/icons/skip2.js.map +1 -1
  157. package/dist/assets/line-icons/icons/square-dots.js.map +1 -1
  158. package/dist/assets/line-icons/icons/star.js +3 -3
  159. package/dist/assets/line-icons/icons/star.js.map +1 -1
  160. package/dist/assets/line-icons/icons/star2.js +3 -3
  161. package/dist/assets/line-icons/icons/star2.js.map +1 -1
  162. package/dist/assets/line-icons/icons/striked-eye.js +4 -4
  163. package/dist/assets/line-icons/icons/striked-eye.js.map +1 -1
  164. package/dist/assets/line-icons/icons/switch-icon.js +4 -4
  165. package/dist/assets/line-icons/icons/switch-icon.js.map +1 -1
  166. package/dist/assets/line-icons/icons/text-icon.js.map +1 -1
  167. package/dist/assets/line-icons/icons/tick.js +2 -2
  168. package/dist/assets/line-icons/icons/tick.js.map +1 -1
  169. package/dist/assets/line-icons/icons/tri-dots.js.map +1 -1
  170. package/dist/assets/line-icons/icons/tri2-dots.js.map +1 -1
  171. package/dist/assets/line-icons/icons/trophy.js +3 -3
  172. package/dist/assets/line-icons/icons/trophy.js.map +1 -1
  173. package/dist/assets/line-icons/icons/tutoring.js +4 -4
  174. package/dist/assets/line-icons/icons/tutoring.js.map +1 -1
  175. package/dist/assets/line-icons/icons/undo.js +4 -4
  176. package/dist/assets/line-icons/icons/undo.js.map +1 -1
  177. package/dist/assets/line-icons/icons/unlock.js +4 -4
  178. package/dist/assets/line-icons/icons/unlock.js.map +1 -1
  179. package/dist/assets/line-icons/icons/up.js +3 -3
  180. package/dist/assets/line-icons/icons/up.js.map +1 -1
  181. package/dist/assets/line-icons/icons/upload.js.map +1 -1
  182. package/dist/assets/line-icons/icons/user.js +3 -3
  183. package/dist/assets/line-icons/icons/user.js.map +1 -1
  184. package/dist/assets/line-icons/icons/user2.js +2 -2
  185. package/dist/assets/line-icons/icons/user2.js.map +1 -1
  186. package/dist/assets/line-icons/icons/zoom-in.js.map +1 -1
  187. package/dist/assets/line-icons/icons/zoom-out.js.map +1 -1
  188. package/dist/constants/country.js.map +1 -1
  189. package/dist/features/blockers/multi-tab-blocker/multi-tab-blocker-context.js.map +1 -1
  190. package/dist/features/blockers/multi-tab-blocker/multi-tab-blocker.js +14 -14
  191. package/dist/features/blockers/multi-tab-blocker/multi-tab-blocker.js.map +1 -1
  192. package/dist/features/blockers/multi-tab-blocker/use-is-tab-blocked.js +2 -2
  193. package/dist/features/blockers/multi-tab-blocker/use-is-tab-blocked.js.map +1 -1
  194. package/dist/features/chapters/api/chapter.js.map +1 -1
  195. package/dist/features/chapters/chapter/chapter.js +20 -20
  196. package/dist/features/chapters/chapter/chapter.js.map +1 -1
  197. package/dist/features/chapters/chapter/comps/chapter-banner/chapter-banner-styled.js.map +1 -1
  198. package/dist/features/chapters/chapter/comps/chapter-banner/chapter-banner.js.map +1 -1
  199. package/dist/features/chapters/chapter/comps/core-lessons/core-lessons-styled.js.map +1 -1
  200. package/dist/features/chapters/chapter/comps/core-lessons/core-lessons.js.map +1 -1
  201. package/dist/features/chapters/chapter/comps/supplementary-resources/supplementary-resources-styled.js.map +1 -1
  202. package/dist/features/chapters/chapter/comps/supplementary-resources/supplementary-resources.js.map +1 -1
  203. package/dist/features/chapters/chapter/comps/supplementary-resources/utils.js.map +1 -1
  204. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
  205. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
  206. package/dist/features/chapters/chapters-list/chapters-list.js +13 -13
  207. package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
  208. package/dist/features/chapters/lpar-chapter/block-section/block-section-styled.js.map +1 -1
  209. package/dist/features/chapters/lpar-chapter/block-section/block-section.js.map +1 -1
  210. package/dist/features/chapters/lpar-chapter/block-section/chapter-block/chapter-block-action.js.map +1 -1
  211. package/dist/features/chapters/lpar-chapter/block-section/chapter-block/chapter-block-header.js.map +1 -1
  212. package/dist/features/chapters/lpar-chapter/block-section/chapter-block/chapter-block-utils.js +1 -1
  213. package/dist/features/chapters/lpar-chapter/block-section/chapter-block/chapter-block-utils.js.map +1 -1
  214. package/dist/features/chapters/lpar-chapter/block-section/chapter-block/chapter-block.js.map +1 -1
  215. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-item-utils.js.map +1 -1
  216. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-item.js.map +1 -1
  217. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/question-overview.js +4 -4
  218. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/question-overview.js.map +1 -1
  219. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary-utils.js.map +1 -1
  220. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary.js +15 -15
  221. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary.js.map +1 -1
  222. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/summary-module.js.map +1 -1
  223. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/student-actions/student-actions.js.map +1 -1
  224. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/teacher-actions/teacher-actions.js.map +1 -1
  225. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/context-menu-helper/context-menu-helper-styled.js.map +1 -1
  226. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/context-menu-helper/menu-element.js.map +1 -1
  227. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/reward-n-actions-styled.js.map +1 -1
  228. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/reward-n-actions.js.map +1 -1
  229. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions-utils.js.map +1 -1
  230. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/student-actions/student-actions.js.map +1 -1
  231. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js +2 -2
  232. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions/teacher-actions.js.map +1 -1
  233. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-icon.js.map +1 -1
  234. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-utils.js.map +1 -1
  235. package/dist/features/chapters/lpar-chapter/block-section/sheet-item/sheet-item.js.map +1 -1
  236. package/dist/features/chapters/lpar-chapter/comps/chapter-progress.js.map +1 -1
  237. package/dist/features/chapters/lpar-chapter/comps/tab-section.js.map +1 -1
  238. package/dist/features/chapters/lpar-chapter/constants/index.js +22 -5
  239. package/dist/features/chapters/lpar-chapter/constants/index.js.map +1 -1
  240. package/dist/features/chapters/lpar-chapter/constants/puzzle-card.js.map +1 -1
  241. package/dist/features/chapters/lpar-chapter/lpar-chapter-banner/chapter-banner.js.map +1 -1
  242. package/dist/features/chapters/lpar-chapter/lpar-chapter-banner/lpar-chapter-banner-styled.js.map +1 -1
  243. package/dist/features/chapters/lpar-chapter/lpar-chapter-styled.js.map +1 -1
  244. package/dist/features/chapters/lpar-chapter/lpar-chapter.js +26 -26
  245. package/dist/features/chapters/lpar-chapter/lpar-chapter.js.map +1 -1
  246. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-card/cue-coins.js.map +1 -1
  247. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-card/puzzle-card-styled.js.map +1 -1
  248. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-card/puzzle-card.js +1 -1
  249. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-card/puzzle-card.js.map +1 -1
  250. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-section-utils.js.map +1 -1
  251. package/dist/features/chapters/lpar-chapter/puzzle-section/puzzle-section.js.map +1 -1
  252. package/dist/features/chapters/lpar-chapter/utils/index.js.map +1 -1
  253. package/dist/features/chapters/lpar-milestone-chapter/block-section/block-section.js.map +1 -1
  254. package/dist/features/chapters/lpar-milestone-chapter/block-section/chapter-block/chapter-block.js.map +1 -1
  255. package/dist/features/chapters/lpar-milestone-chapter/block-section/sheet-item/rewards-n-actions/rewards-n-actions.js.map +1 -1
  256. package/dist/features/chapters/lpar-milestone-chapter/block-section/sheet-item/rewards-n-actions/student-actions.js.map +1 -1
  257. package/dist/features/chapters/lpar-milestone-chapter/block-section/sheet-item/rewards-n-actions/teacher-actions.js.map +1 -1
  258. package/dist/features/chapters/lpar-milestone-chapter/block-section/sheet-item/sheet-info.js.map +1 -1
  259. package/dist/features/chapters/lpar-milestone-chapter/block-section/sheet-item/sheet-item.js.map +1 -1
  260. package/dist/features/chapters/lpar-milestone-chapter/extra-practice-section/extra-practice-section.js.map +1 -1
  261. package/dist/features/chapters/lpar-milestone-chapter/lpar-milestone-chapter.js +21 -21
  262. package/dist/features/chapters/lpar-milestone-chapter/lpar-milestone-chapter.js.map +1 -1
  263. package/dist/features/chapters/lpar-milestone-chapter/puzzle-section/puzzle-card-util.js.map +1 -1
  264. package/dist/features/chapters/lpar-milestone-chapter/puzzle-section/puzzle-card.js +1 -1
  265. package/dist/features/chapters/lpar-milestone-chapter/puzzle-section/puzzle-card.js.map +1 -1
  266. package/dist/features/chapters/lpar-milestone-chapter/puzzle-section/puzzle-section.js.map +1 -1
  267. package/dist/features/circle-games/game-launcher/comps/card-container/card-container-styled.js.map +1 -1
  268. package/dist/features/circle-games/game-launcher/comps/card-container/card-container.js.map +1 -1
  269. package/dist/features/circle-games/game-launcher/comps/carousel/carousel.js.map +1 -1
  270. package/dist/features/circle-games/game-launcher/comps/segmented-game-card/segmented-game-card-styled.js.map +1 -1
  271. package/dist/features/circle-games/game-launcher/comps/segmented-game-card/segmented-game-card.js +6 -6
  272. package/dist/features/circle-games/game-launcher/comps/segmented-game-card/segmented-game-card.js.map +1 -1
  273. package/dist/features/circle-games/game-launcher/comps/tables-card/table-mode/table-mode.js.map +1 -1
  274. package/dist/features/circle-games/game-launcher/comps/tables-card/table-mode-star/table-mode-star.js.map +1 -1
  275. package/dist/features/circle-games/game-launcher/comps/tables-card/table-segment-star/table-segment-star.js.map +1 -1
  276. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card-styled.js +6 -6
  277. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js +4 -4
  278. package/dist/features/circle-games/game-launcher/comps/tables-card/tables-card.js.map +1 -1
  279. package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js.map +1 -1
  280. package/dist/features/circle-games/game-launcher/dal/use-post-update-circle-journey-dal/use-post-update-circle-journey-dal.js.map +1 -1
  281. package/dist/features/circle-games/game-launcher/game-launcher.js.map +1 -1
  282. package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
  283. package/dist/features/circle-games/game-launcher/hooks/use-table-launcher-journey/use-table-launcher-journey.js.map +1 -1
  284. package/dist/features/circle-games/games/tutorial/tutorial.js.map +1 -1
  285. package/dist/features/circle-games/games/web-view/web-view.js.map +1 -1
  286. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  287. package/dist/features/circle-games/leaderboard/comps/banner/banner-styled.js.map +1 -1
  288. package/dist/features/circle-games/leaderboard/comps/banner/banner.js.map +1 -1
  289. package/dist/features/circle-games/leaderboard/comps/info-bar/info-bar.js.map +1 -1
  290. package/dist/features/circle-games/leaderboard/comps/leaderboard-item/leaderboard-item.js.map +1 -1
  291. package/dist/features/circle-games/leaderboard/comps/navigation-button/navigation-button.js.map +1 -1
  292. package/dist/features/circle-games/leaderboard/comps/progress-item/progress-item.js.map +1 -1
  293. package/dist/features/circle-games/leaderboard/comps/progress-list-item/progress-list-item.js +1 -1
  294. package/dist/features/circle-games/leaderboard/comps/progress-list-item/progress-list-item.js.map +1 -1
  295. package/dist/features/circle-games/leaderboard/comps/streak-reduction-infobar/streak-reduction-infobar.js.map +1 -1
  296. package/dist/features/circle-games/leaderboard/comps/timer/timer.js.map +1 -1
  297. package/dist/features/circle-games/leaderboard/comps/with-grade/with-grade.js.map +1 -1
  298. package/dist/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.js.map +1 -1
  299. package/dist/features/circle-games/leaderboard/hooks/use-intersection-observer/use-intersection-observer.tsx.js.map +1 -1
  300. package/dist/features/circle-games/leaderboard/hooks/use-timer/use-timer.js.map +1 -1
  301. package/dist/features/circle-games/leaderboard/leaderboard.js.map +1 -1
  302. package/dist/features/circle-games/sign-up/comp/circular-steps/circular-steps.js.map +1 -1
  303. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js.map +1 -1
  304. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js.map +1 -1
  305. package/dist/features/circle-games/sign-up/comp/input-wrapper/input-wrapper.js.map +1 -1
  306. package/dist/features/circle-games/sign-up/comp/select-user-grade/select-user-grade.js +3 -3
  307. package/dist/features/circle-games/sign-up/comp/select-user-grade/select-user-grade.js.map +1 -1
  308. package/dist/features/circle-games/sign-up/comp/select-user-grade/select-user-grade.styled.js.map +1 -1
  309. package/dist/features/circle-games/sign-up/comp/splash-screen/splash-screen-styled.js +1 -1
  310. package/dist/features/circle-games/sign-up/comp/splash-screen/splash-screen.js.map +1 -1
  311. package/dist/features/circle-games/sign-up/comp/username-input/username-input.js.map +1 -1
  312. package/dist/features/circle-games/sign-up/dal/create-user-dal/create-user-dal.js.map +1 -1
  313. package/dist/features/circle-games/sign-up/dal/update-user-dal/update-user-dal.js.map +1 -1
  314. package/dist/features/circle-games/sign-up/dal/validate-username-dal/validate-username-dal.js.map +1 -1
  315. package/dist/features/circle-games/sign-up/helper.js.map +1 -1
  316. package/dist/features/circle-games/sign-up/sign-up.js +8 -8
  317. package/dist/features/circle-games/sign-up/sign-up.js.map +1 -1
  318. package/dist/features/circle-games/utils/streak-reduction-localstorage-util.js.map +1 -1
  319. package/dist/features/communication/hooks/use-inclass-message-broker/use-inclass-message-broker.js +18 -18
  320. package/dist/features/communication/hooks/use-inclass-message-broker/use-inclass-message-broker.js.map +1 -1
  321. package/dist/features/communication/hooks/use-trial-session-message-broker/use-trial-session-message-broker.js +11 -11
  322. package/dist/features/communication/hooks/use-trial-session-message-broker/use-trial-session-message-broker.js.map +1 -1
  323. package/dist/features/communication/pub-sub/core.js.map +1 -1
  324. package/dist/features/communication/pub-sub/hooks.js +1 -1
  325. package/dist/features/communication/pub-sub/hooks.js.map +1 -1
  326. package/dist/features/cue-canvas/cue-canvas-context.js +8 -5
  327. package/dist/features/cue-canvas/cue-canvas-context.js.map +1 -1
  328. package/dist/features/cue-canvas/cue-canvas-core.js +55 -22
  329. package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
  330. package/dist/features/cue-canvas/cue-canvas-helpers.js +56 -40
  331. package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
  332. package/dist/features/cue-canvas/cue-canvas-provider.js +16 -14
  333. package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
  334. package/dist/features/cue-canvas/cue-canvas.js +32 -32
  335. package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
  336. package/dist/features/cue-canvas/cue-cavas-styled.js +86 -78
  337. package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
  338. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +14 -14
  339. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
  340. package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js +14 -10
  341. package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js.map +1 -1
  342. package/dist/features/cue-canvas/hooks/use-height-extender.js.map +1 -1
  343. package/dist/features/cue-canvas/toolbar/color-palette.js.map +1 -1
  344. package/dist/features/cue-canvas/toolbar/color-picker-menu.js.map +1 -1
  345. package/dist/features/cue-canvas/toolbar/grid-menu.js.map +1 -1
  346. package/dist/features/cue-canvas/toolbar/icon-map.js +34 -32
  347. package/dist/features/cue-canvas/toolbar/icon-map.js.map +1 -1
  348. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js.map +1 -1
  349. package/dist/features/cue-canvas/toolbar/tool.js.map +1 -1
  350. package/dist/features/cue-canvas/toolbar/toolbar.js +10 -10
  351. package/dist/features/cue-canvas/toolbar/toolbar.js.map +1 -1
  352. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js.map +1 -1
  353. package/dist/features/extra-practice/extra-practice.js +21 -21
  354. package/dist/features/extra-practice/extra-practice.js.map +1 -1
  355. package/dist/features/extra-practice/list/list-constants.js.map +1 -1
  356. package/dist/features/extra-practice/list/list-styled.js.map +1 -1
  357. package/dist/features/extra-practice/list/list.js.map +1 -1
  358. package/dist/features/hooks/use-audio-player.js.map +1 -1
  359. package/dist/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js +3 -3
  360. package/dist/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js.map +1 -1
  361. package/dist/features/hooks/use-drag-helper.js.map +1 -1
  362. package/dist/features/hooks/use-force-reload.js +7 -7
  363. package/dist/features/hooks/use-force-reload.js.map +1 -1
  364. package/dist/features/hooks/use-is-unmounted.js.map +1 -1
  365. package/dist/features/hooks/use-lazy-ref.js.map +1 -1
  366. package/dist/features/hooks/use-previous.js.map +1 -1
  367. package/dist/features/hooks/use-zoom-disable.js +3 -3
  368. package/dist/features/hooks/use-zoom-disable.js.map +1 -1
  369. package/dist/features/journey/comps/coachmark/coachmark-styled.js.map +1 -1
  370. package/dist/features/journey/comps/coachmark/coachmark.js +1 -1
  371. package/dist/features/journey/comps/coachmark/coachmark.js.map +1 -1
  372. package/dist/features/journey/use-journey/journey-context-provider.js.map +1 -1
  373. package/dist/features/maintenance/maintenance.js +5 -5
  374. package/dist/features/maintenance/maintenance.js.map +1 -1
  375. package/dist/features/milestone/constants.js +15 -11
  376. package/dist/features/milestone/constants.js.map +1 -1
  377. package/dist/features/milestone/create/api/goal-submit.js.map +1 -1
  378. package/dist/features/milestone/create/api/milestone-bulk.js.map +1 -1
  379. package/dist/features/milestone/create/api/milestone-submit.js.map +1 -1
  380. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  381. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  382. package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js.map +1 -1
  383. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  384. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  385. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters-styled.js.map +1 -1
  386. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  387. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  388. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  389. package/dist/features/milestone/create/comps/chapter-item/chapter-item-styled.js.map +1 -1
  390. package/dist/features/milestone/create/comps/chapter-item/chapter-item.js.map +1 -1
  391. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/category-card.js.map +1 -1
  392. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js.map +1 -1
  393. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-styled.js.map +1 -1
  394. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-selection.js.map +1 -1
  395. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapters-list.js.map +1 -1
  396. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  397. package/dist/features/milestone/create/comps/chapters-selection-step/use-chapter-list-update.js.map +1 -1
  398. package/dist/features/milestone/create/comps/chapters-selection-step/utils.js.map +1 -1
  399. package/dist/features/milestone/create/comps/class-details-step/class-details-selectors.js.map +1 -1
  400. package/dist/features/milestone/create/comps/class-details-step/class-details-step.js.map +1 -1
  401. package/dist/features/milestone/create/comps/class-details-step/class-details-styled.js.map +1 -1
  402. package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js.map +1 -1
  403. package/dist/features/milestone/create/comps/confirmation-modals/chapter-clearance-confirmation.js +9 -9
  404. package/dist/features/milestone/create/comps/confirmation-modals/chapter-clearance-confirmation.js.map +1 -1
  405. package/dist/features/milestone/create/comps/confirmation-modals/goal-creation-confirmation-utils.js.map +1 -1
  406. package/dist/features/milestone/create/comps/confirmation-modals/goal-creation-confirmation.js +14 -14
  407. package/dist/features/milestone/create/comps/confirmation-modals/goal-creation-confirmation.js.map +1 -1
  408. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector-styled.js.map +1 -1
  409. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector-view.js.map +1 -1
  410. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  411. package/dist/features/milestone/create/comps/info-points/info-points.js.map +1 -1
  412. package/dist/features/milestone/create/comps/milestone-progress/milestone-progress.js.map +1 -1
  413. package/dist/features/milestone/create/comps/milestone-progress-v2/milestone-progress-v2.js.map +1 -1
  414. package/dist/features/milestone/create/comps/milestone-progress-v2/styled.js.map +1 -1
  415. package/dist/features/milestone/create/comps/sheets-list/sheets-list-styled.js.map +1 -1
  416. package/dist/features/milestone/create/comps/sheets-list/sheets-list.js.map +1 -1
  417. package/dist/features/milestone/create/comps/test-type-step/category-component-styled.js.map +1 -1
  418. package/dist/features/milestone/create/comps/test-type-step/category-component.js.map +1 -1
  419. package/dist/features/milestone/create/comps/test-type-step/test-type-step-constants.js.map +1 -1
  420. package/dist/features/milestone/create/comps/test-type-step/test-type-step.js.map +1 -1
  421. package/dist/features/milestone/create/comps/test-type-step/test-type-utils.js.map +1 -1
  422. package/dist/features/milestone/create/milestone-create-constants.js.map +1 -1
  423. package/dist/features/milestone/create/milestone-create-container.js +25 -25
  424. package/dist/features/milestone/create/milestone-create-container.js.map +1 -1
  425. package/dist/features/milestone/create/milestone-create-form-tree.js +2 -2
  426. package/dist/features/milestone/create/milestone-create-form-tree.js.map +1 -1
  427. package/dist/features/milestone/create/milestone-create-helpers.js +3 -3
  428. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  429. package/dist/features/milestone/create/milestone-create-hooks.js.map +1 -1
  430. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  431. package/dist/features/milestone/create/milestone-create.js +20 -19
  432. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  433. package/dist/features/milestone/create/styled-comps/progressive-loader.js +1 -1
  434. package/dist/features/milestone/create/styled-comps/progressive-loader.js.map +1 -1
  435. package/dist/features/milestone/create/submit-modal/submit-modal.js +9 -9
  436. package/dist/features/milestone/create/submit-modal/submit-modal.js.map +1 -1
  437. package/dist/features/milestone/create/submit-modal/submit-with-plan-modal/submit-with-plan-modal-styled.js.map +1 -1
  438. package/dist/features/milestone/create/submit-modal/submit-with-plan-modal/submit-with-plan-modal.js.map +1 -1
  439. package/dist/features/milestone/create/submit-modal/use-submit-milestone.js.map +1 -1
  440. package/dist/features/milestone/create/utils/index.js.map +1 -1
  441. package/dist/features/milestone/edit/comps/delete-milestone/confirm-delete.js.map +1 -1
  442. package/dist/features/milestone/edit/comps/delete-milestone/styled.js.map +1 -1
  443. package/dist/features/milestone/edit/comps/edit-milestone-modal/edit-milestone.js.map +1 -1
  444. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +44 -43
  445. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
  446. package/dist/features/milestone/edit/comps/milestone-edit-loader/milestone-edit-loader-styled.js.map +1 -1
  447. package/dist/features/milestone/edit/comps/milestone-edit-loader/milestone-edit-loader.js.map +1 -1
  448. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +27 -27
  449. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  450. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-helpers.js.map +1 -1
  451. package/dist/features/milestone/edit/goal-edit-container.js +21 -21
  452. package/dist/features/milestone/edit/goal-edit-container.js.map +1 -1
  453. package/dist/features/milestone/edit/goal-edit-helpers.js +3 -3
  454. package/dist/features/milestone/edit/goal-edit-helpers.js.map +1 -1
  455. package/dist/features/milestone/edit/milestone-edit-container.js +23 -23
  456. package/dist/features/milestone/edit/milestone-edit-container.js.map +1 -1
  457. package/dist/features/milestone/edit/milestone-edit-helpers.js.map +1 -1
  458. package/dist/features/milestone/hooks/use-submit-goal-creation.js.map +1 -1
  459. package/dist/features/milestone/milestone-action-widget/milestone-action-widget-styled.js.map +1 -1
  460. package/dist/features/milestone/milestone-action-widget/milestone-action-widget.js +15 -15
  461. package/dist/features/milestone/milestone-action-widget/milestone-action-widget.js.map +1 -1
  462. package/dist/features/milestone/milestone-list-container/api/get-milestone-resources.js.map +1 -1
  463. package/dist/features/milestone/milestone-list-container/api/get-milestones.js.map +1 -1
  464. package/dist/features/milestone/milestone-list-container/api/get-tests-list.js.map +1 -1
  465. package/dist/features/milestone/milestone-list-container/filter-milestones.js.map +1 -1
  466. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  467. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-loader/milestone-loader.js.map +1 -1
  468. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element.js.map +1 -1
  469. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  470. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-utils.js.map +1 -1
  471. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/use-goal-draft-publish.js.map +1 -1
  472. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  473. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  474. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  475. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-utils.js.map +1 -1
  476. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js +2 -2
  477. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js.map +1 -1
  478. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js.map +1 -1
  479. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  480. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-info.js.map +1 -1
  481. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-rank.js.map +1 -1
  482. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-styled.js.map +1 -1
  483. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome.js.map +1 -1
  484. package/dist/features/milestone/milestone-list-container/milestone-list/no-active-milestone/no-active-milestone.js.map +1 -1
  485. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +21 -21
  486. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  487. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  488. package/dist/features/milestone/milestone-resources/resources-assign/api/goal-resource-assign.js.map +1 -1
  489. package/dist/features/milestone/milestone-resources/resources-assign/api/lpar-resource-assign.js.map +1 -1
  490. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item-styled.js.map +1 -1
  491. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  492. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  493. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/no-resource-screen.js.map +1 -1
  494. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  495. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign-styled.js.map +1 -1
  496. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +39 -39
  497. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  498. package/dist/features/milestone/milestone-resources/resources-assign/utils.js.map +1 -1
  499. package/dist/features/milestone/milestone-resources/resources-list/resources-list-styled.js.map +1 -1
  500. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  501. package/dist/features/milestone/milestone-tests/tests-creation/api/test-sheet-assign.js.map +1 -1
  502. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-item/chapter-item-styled.js.map +1 -1
  503. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-item/chapter-item.js.map +1 -1
  504. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  505. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  506. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-card-lottie-animation.js.map +1 -1
  507. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-radio-card-styled.js.map +1 -1
  508. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-radio-card.js.map +1 -1
  509. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  510. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +28 -28
  511. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  512. package/dist/features/milestone/milestone-tests/tests-creation/utils/index.js.map +1 -1
  513. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-cta.js.map +1 -1
  514. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-styled.js.map +1 -1
  515. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js.map +1 -1
  516. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item.js.map +1 -1
  517. package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list.js.map +1 -1
  518. package/dist/features/milestone/milestone-tests/tests-list/tests-list.js.map +1 -1
  519. package/dist/features/milestone/outcome/api/milestone-achievement.js +3 -3
  520. package/dist/features/milestone/outcome/api/milestone-outcome.js.map +1 -1
  521. package/dist/features/milestone/outcome/comps/achievement/achievement-constants.js.map +1 -1
  522. package/dist/features/milestone/outcome/comps/achievement/achievement-container-styled.js.map +1 -1
  523. package/dist/features/milestone/outcome/comps/achievement/achievement-container.js +3 -3
  524. package/dist/features/milestone/outcome/comps/achievement/achievement-container.js.map +1 -1
  525. package/dist/features/milestone/outcome/comps/achievement/reason-submit-modal.js +13 -13
  526. package/dist/features/milestone/outcome/comps/achievement/reason-submit-modal.js.map +1 -1
  527. package/dist/features/milestone/outcome/comps/achievement/share-instructions-modal.js +20 -20
  528. package/dist/features/milestone/outcome/comps/achievement/share-instructions-modal.js.map +1 -1
  529. package/dist/features/milestone/outcome/comps/outcome-collection/dynamic-input-handler.js.map +1 -1
  530. package/dist/features/milestone/outcome/comps/outcome-collection/input-descriptor.js.map +1 -1
  531. package/dist/features/milestone/outcome/comps/outcome-collection/input-handler.js.map +1 -1
  532. package/dist/features/milestone/outcome/comps/outcome-collection/milestone-outcome-collection-container.js.map +1 -1
  533. package/dist/features/milestone/outcome/comps/outcome-collection/outcome-collection-helper.js.map +1 -1
  534. package/dist/features/milestone/outcome/comps/outcome-collection/outcome-form/outcome-form-helpers.js.map +1 -1
  535. package/dist/features/milestone/outcome/comps/outcome-collection/outcome-form/outcome-form.js.map +1 -1
  536. package/dist/features/milestone/outcome/comps/outcome-collection/outcome-styled.js.map +1 -1
  537. package/dist/features/milestone/outcome/comps/outcome-collection/rank-inputs/index.js.map +1 -1
  538. package/dist/features/milestone/outcome/comps/outcome-collection/score-marks-input/index.js.map +1 -1
  539. package/dist/features/milestone/outcome/comps/past-milestone/past-milestone-container.js.map +1 -1
  540. package/dist/features/milestone/outcome/comps/past-milestone/past-milestone-form.js.map +1 -1
  541. package/dist/features/milestone/outcome/comps/past-milestone/past-milestone-styled.js.map +1 -1
  542. package/dist/features/milestone/outcome/comps/past-milestone/question.js.map +1 -1
  543. package/dist/features/milestone/outcome/milestone-outcome-container.js +23 -23
  544. package/dist/features/milestone/outcome/milestone-outcome-container.js.map +1 -1
  545. package/dist/features/milestone/outcome/milestone-outcome-styled.js.map +1 -1
  546. package/dist/features/milestone/outcome/outcome-helpers.js.map +1 -1
  547. package/dist/features/milestone/start/milestone-start.js +3 -3
  548. package/dist/features/milestone/start/milestone-start.js.map +1 -1
  549. package/dist/features/pointer-sync/hooks/use-pointer-sync.js +13 -13
  550. package/dist/features/pointer-sync/hooks/use-pointer-sync.js.map +1 -1
  551. package/dist/features/pointer-sync/pointer.js +7 -7
  552. package/dist/features/pointer-sync/pointer.js.map +1 -1
  553. package/dist/features/post-game-stats/accuracy/accuracy-styled.js +5 -5
  554. package/dist/features/post-game-stats/accuracy/accuracy-styled.js.map +1 -1
  555. package/dist/features/post-game-stats/accuracy/accuracy-utils.js.map +1 -1
  556. package/dist/features/post-game-stats/accuracy/accuracy.js +3 -3
  557. package/dist/features/post-game-stats/accuracy/accuracy.js.map +1 -1
  558. package/dist/features/post-game-stats/clock/clock-styled.js +1 -1
  559. package/dist/features/post-game-stats/clock/clock-styled.js.map +1 -1
  560. package/dist/features/post-game-stats/clock/clock.js +3 -3
  561. package/dist/features/post-game-stats/clock/clock.js.map +1 -1
  562. package/dist/features/post-game-stats/digital-meter/comp/animated-arc/animated-arc.js +13 -12
  563. package/dist/features/post-game-stats/digital-meter/comp/animated-arc/animated-arc.js.map +1 -1
  564. package/dist/features/post-game-stats/digital-meter/digital-meter-styled.js +11 -11
  565. package/dist/features/post-game-stats/digital-meter/digital-meter-styled.js.map +1 -1
  566. package/dist/features/post-game-stats/digital-meter/digital-meter.js +7 -7
  567. package/dist/features/post-game-stats/digital-meter/digital-meter.js.map +1 -1
  568. package/dist/features/post-game-stats/digital-meter/helper.js.map +1 -1
  569. package/dist/features/post-game-stats/number-count-animation/number-count-animation.js.map +1 -1
  570. package/dist/features/post-game-stats/points/points.js.map +1 -1
  571. package/dist/features/post-game-stats/post-game-stats.js.map +1 -1
  572. package/dist/features/post-game-stats/streak/streak-styled.js +5 -5
  573. package/dist/features/post-game-stats/streak/streak-styled.js.map +1 -1
  574. package/dist/features/post-game-stats/streak/streak.js +1 -1
  575. package/dist/features/post-game-stats/streak/streak.js.map +1 -1
  576. package/dist/features/sheet-tools/desmos-calculator/desmos-calculator-styled.js.map +1 -1
  577. package/dist/features/sheet-tools/desmos-calculator/desmos-calculator.js +13 -13
  578. package/dist/features/sheet-tools/desmos-calculator/desmos-calculator.js.map +1 -1
  579. package/dist/features/sheet-tools/tool-header/tool-header-styled.js.map +1 -1
  580. package/dist/features/sheet-tools/tool-header/tool-header.js +14 -14
  581. package/dist/features/sheet-tools/tool-header/tool-header.js.map +1 -1
  582. package/dist/features/sheets/comps/sheet-button/index.js.map +1 -1
  583. package/dist/features/sheets/comps/sheet-button/styled.js.map +1 -1
  584. package/dist/features/sheets/comps/sheet-button/variant.js.map +1 -1
  585. package/dist/features/sheets/constants/sheet.js.map +1 -1
  586. package/dist/features/sheets/lessons-list/lesson-item/context-menu-helper/context-menu-helper-styled.js.map +1 -1
  587. package/dist/features/sheets/lessons-list/lesson-item/context-menu-helper/menu-element-styled.js.map +1 -1
  588. package/dist/features/sheets/lessons-list/lesson-item/context-menu-helper/menu-element.js.map +1 -1
  589. package/dist/features/sheets/lessons-list/lesson-item/context-menu-helper/target-element.js.map +1 -1
  590. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-cta-info.js.map +1 -1
  591. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-styled.js.map +1 -1
  592. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-utils.js +3 -4
  593. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-utils.js.map +1 -1
  594. package/dist/features/sheets/lessons-list/lesson-item/lesson-item-view.js.map +1 -1
  595. package/dist/features/sheets/lessons-list/lesson-item/lesson-item.js.map +1 -1
  596. package/dist/features/sheets/lessons-list/lessons-list.js.map +1 -1
  597. package/dist/features/sheets/reference-sheet/reference-sheet.js +14 -14
  598. package/dist/features/sheets/reference-sheet/reference-sheet.js.map +1 -1
  599. package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element-styled.js.map +1 -1
  600. package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element.js.map +1 -1
  601. package/dist/features/sheets/resources-list/resource-item/resource-item.js +3 -3
  602. package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
  603. package/dist/features/sheets/resources-list/resource-item/styled.js.map +1 -1
  604. package/dist/features/sheets/resources-list/resource-item/utils.js.map +1 -1
  605. package/dist/features/sheets/resources-list/resources-list.js.map +1 -1
  606. package/dist/features/sheets/resources-list/styled.js.map +1 -1
  607. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/context-menu-helper/menu-element/menu-element.js.map +1 -1
  608. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/context-menu-helper/target-element/target-element.js.map +1 -1
  609. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-styled.js.map +1 -1
  610. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions-utils.js.map +1 -1
  611. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/reward-n-actions.js.map +1 -1
  612. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/student-actions/student-actions.js.map +1 -1
  613. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js +2 -0
  614. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js.map +1 -1
  615. package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions.js.map +1 -1
  616. package/dist/features/sheets/sheets-list/sheet-item/sheet-item-icon.js.map +1 -1
  617. package/dist/features/sheets/sheets-list/sheet-item/sheet-item-styled.js.map +1 -1
  618. package/dist/features/sheets/sheets-list/sheet-item/sheet-item-tag.js.map +1 -1
  619. package/dist/features/sheets/sheets-list/sheet-item/sheet-item-utils.js.map +1 -1
  620. package/dist/features/sheets/sheets-list/sheet-item/sheet-item.js.map +1 -1
  621. package/dist/features/sheets/sheets-list/sheets-list.js +15 -15
  622. package/dist/features/sheets/sheets-list/sheets-list.js.map +1 -1
  623. package/dist/features/sheets/utils/is-v3-worksheet.js +9 -9
  624. package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
  625. package/dist/features/student-details/class-details/class-details-utils.js.map +1 -1
  626. package/dist/features/student-details/class-details/class-details.js.map +1 -1
  627. package/dist/features/student-details/student-details-styled.js.map +1 -1
  628. package/dist/features/student-details/student-details-utils.js.map +1 -1
  629. package/dist/features/student-details/student-details.js +17 -17
  630. package/dist/features/student-details/student-details.js.map +1 -1
  631. package/dist/features/student-details/wins-preview/wins-preview-styled.js.map +1 -1
  632. package/dist/features/student-details/wins-preview/wins-preview.js.map +1 -1
  633. package/dist/features/talk-meter/helper.js.map +1 -1
  634. package/dist/features/talk-meter/hooks/use-talk-meter.js.map +1 -1
  635. package/dist/features/talk-meter/ripple/index.js +1 -1
  636. package/dist/features/talk-meter/ripple/index.js.map +1 -1
  637. package/dist/features/talk-meter/talk-meter-styled.js +1 -1
  638. package/dist/features/talk-meter/talk-meter-styled.js.map +1 -1
  639. package/dist/features/talk-meter/talk-meter-view/talk-meter-view.js +14 -12
  640. package/dist/features/talk-meter/talk-meter-view/talk-meter-view.js.map +1 -1
  641. package/dist/features/talk-meter/talk-meter.js +23 -23
  642. package/dist/features/talk-meter/talk-meter.js.map +1 -1
  643. package/dist/features/trial-session/api/course-stream.js.map +1 -1
  644. package/dist/features/trial-session/comps/about-cuemath/about-cuemath-constants.js.map +1 -1
  645. package/dist/features/trial-session/comps/about-cuemath/index.js.map +1 -1
  646. package/dist/features/trial-session/comps/additional-info/additional-info.js.map +1 -1
  647. package/dist/features/trial-session/comps/av-panels/student-av-panel/student-av-panel.js.map +1 -1
  648. package/dist/features/trial-session/comps/av-panels/teacher-av-panel/teacher-av-panel.js.map +1 -1
  649. package/dist/features/trial-session/comps/background-grid/background-grid-styled.js.map +1 -1
  650. package/dist/features/trial-session/comps/background-grid/background-grid-utils.js.map +1 -1
  651. package/dist/features/trial-session/comps/background-grid/background-grid.js.map +1 -1
  652. package/dist/features/trial-session/comps/class-preference/class-preference.js.map +1 -1
  653. package/dist/features/trial-session/comps/clock/clock.js.map +1 -1
  654. package/dist/features/trial-session/comps/communication-slide/index.js.map +1 -1
  655. package/dist/features/trial-session/comps/countdown-progress-bar/countdown-progress-bar.js.map +1 -1
  656. package/dist/features/trial-session/comps/cue-tips/cues/cues-styled.js +6 -6
  657. package/dist/features/trial-session/comps/cue-tips/cues/index.js.map +1 -1
  658. package/dist/features/trial-session/comps/cue-tips/tips/index.js.map +1 -1
  659. package/dist/features/trial-session/comps/cue-tips/tips/tips-styled.js.map +1 -1
  660. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  661. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  662. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +1 -1
  663. package/dist/features/trial-session/comps/learning-session/learning-session-constants.js.map +1 -1
  664. package/dist/features/trial-session/comps/learning-session/learning-session-styled.js.map +1 -1
  665. package/dist/features/trial-session/comps/learning-session/learning-session.js.map +1 -1
  666. package/dist/features/trial-session/comps/navigation-bar/index.js.map +1 -1
  667. package/dist/features/trial-session/comps/navigation-bar/navigation-bar-styled.js.map +1 -1
  668. package/dist/features/trial-session/comps/offering-information/offering-information-constants.js.map +1 -1
  669. package/dist/features/trial-session/comps/offering-information/offering-information-styled.js.map +1 -1
  670. package/dist/features/trial-session/comps/offering-information/offering-information.js.map +1 -1
  671. package/dist/features/trial-session/comps/pricing/board-comp.js.map +1 -1
  672. package/dist/features/trial-session/comps/pricing/pricing-styled.js.map +1 -1
  673. package/dist/features/trial-session/comps/pricing/pricing.js.map +1 -1
  674. package/dist/features/trial-session/comps/school-goals/school-goals-view.js.map +1 -1
  675. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  676. package/dist/features/trial-session/comps/session-insights/session-insights.js.map +1 -1
  677. package/dist/features/trial-session/comps/session-overview/session-overview-styled.js.map +1 -1
  678. package/dist/features/trial-session/comps/session-overview/session-overview-utils.js.map +1 -1
  679. package/dist/features/trial-session/comps/session-overview/session-overview.js.map +1 -1
  680. package/dist/features/trial-session/comps/session-report/report-card.js.map +1 -1
  681. package/dist/features/trial-session/comps/session-report/session-report.js +3 -3
  682. package/dist/features/trial-session/comps/session-report/session-report.js.map +1 -1
  683. package/dist/features/trial-session/comps/slide-header/index.js.map +1 -1
  684. package/dist/features/trial-session/comps/solutions/index.js.map +1 -1
  685. package/dist/features/trial-session/comps/solutions/solutions.styled.js +5 -5
  686. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  687. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js.map +1 -1
  688. package/dist/features/trial-session/comps/student-feedback/student-feedback-styled.js.map +1 -1
  689. package/dist/features/trial-session/comps/student-feedback/student-feedback.js +3 -3
  690. package/dist/features/trial-session/comps/student-feedback/student-feedback.js.map +1 -1
  691. package/dist/features/trial-session/comps/student-info/student-info-styled.js.map +1 -1
  692. package/dist/features/trial-session/comps/student-info/student-info.js.map +1 -1
  693. package/dist/features/trial-session/comps/student-personalization/student-personalization.js +7 -7
  694. package/dist/features/trial-session/comps/student-personalization/student-personalization.js.map +1 -1
  695. package/dist/features/trial-session/comps/student-profile/student-profile-styled.js.map +1 -1
  696. package/dist/features/trial-session/comps/student-profile/student-profile-utils.js.map +1 -1
  697. package/dist/features/trial-session/comps/student-profile/student-profile.js.map +1 -1
  698. package/dist/features/trial-session/comps/teacher-intro/teacher-intro-constants.js.map +1 -1
  699. package/dist/features/trial-session/comps/teacher-intro/teacher-intro.js.map +1 -1
  700. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  701. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game-launch-screen/trial-circle-game-launch-screen.js.map +1 -1
  702. package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js.map +1 -1
  703. package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
  704. package/dist/features/trial-session/context/trial-session-context.js.map +1 -1
  705. package/dist/features/trial-session/helper.js.map +1 -1
  706. package/dist/features/trial-session/hooks/use-class-time-alerts.js.map +1 -1
  707. package/dist/features/trial-session/hooks/use-left-panel-button-state.js.map +1 -1
  708. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +86 -76
  709. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  710. package/dist/features/trial-session/left-panel/index.js.map +1 -1
  711. package/dist/features/trial-session/right-panel/index.js.map +1 -1
  712. package/dist/features/trial-session/right-panel/right-panel-styled.js.map +1 -1
  713. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  714. package/dist/features/trial-session/trial-session.js +6 -6
  715. package/dist/features/trial-session/trial-session.js.map +1 -1
  716. package/dist/features/ui/accordion-section/accordion-section.js +13 -13
  717. package/dist/features/ui/accordion-section/accordion-section.js.map +1 -1
  718. package/dist/features/ui/arc-button/arc-button.js.map +1 -1
  719. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js +21 -20
  720. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js.map +1 -1
  721. package/dist/features/ui/arrow-tooltip/arrow-tooltip-util.js.map +1 -1
  722. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +14 -14
  723. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
  724. package/dist/features/ui/avatar/avatar-types.js +5 -5
  725. package/dist/features/ui/avatar/avatar.js +11 -11
  726. package/dist/features/ui/avatar/avatar.js.map +1 -1
  727. package/dist/features/ui/avatar/layers/base/variant-1.js.map +1 -1
  728. package/dist/features/ui/avatar/layers/eyes/variant-1.js.map +1 -1
  729. package/dist/features/ui/avatar/layers/eyes/variant-10.js.map +1 -1
  730. package/dist/features/ui/avatar/layers/eyes/variant-11.js.map +1 -1
  731. package/dist/features/ui/avatar/layers/eyes/variant-12.js.map +1 -1
  732. package/dist/features/ui/avatar/layers/eyes/variant-13.js.map +1 -1
  733. package/dist/features/ui/avatar/layers/eyes/variant-14.js.map +1 -1
  734. package/dist/features/ui/avatar/layers/eyes/variant-15.js.map +1 -1
  735. package/dist/features/ui/avatar/layers/eyes/variant-16.js.map +1 -1
  736. package/dist/features/ui/avatar/layers/eyes/variant-17.js.map +1 -1
  737. package/dist/features/ui/avatar/layers/eyes/variant-18.js.map +1 -1
  738. package/dist/features/ui/avatar/layers/eyes/variant-2.js.map +1 -1
  739. package/dist/features/ui/avatar/layers/eyes/variant-3.js.map +1 -1
  740. package/dist/features/ui/avatar/layers/eyes/variant-4.js.map +1 -1
  741. package/dist/features/ui/avatar/layers/eyes/variant-5.js.map +1 -1
  742. package/dist/features/ui/avatar/layers/eyes/variant-6.js.map +1 -1
  743. package/dist/features/ui/avatar/layers/eyes/variant-7.js.map +1 -1
  744. package/dist/features/ui/avatar/layers/eyes/variant-8.js.map +1 -1
  745. package/dist/features/ui/avatar/layers/eyes/variant-9.js.map +1 -1
  746. package/dist/features/ui/avatar/layers/hair/variant-1.js.map +1 -1
  747. package/dist/features/ui/avatar/layers/hair/variant-10.js.map +1 -1
  748. package/dist/features/ui/avatar/layers/hair/variant-2.js.map +1 -1
  749. package/dist/features/ui/avatar/layers/hair/variant-3.js.map +1 -1
  750. package/dist/features/ui/avatar/layers/hair/variant-4.js.map +1 -1
  751. package/dist/features/ui/avatar/layers/hair/variant-5.js.map +1 -1
  752. package/dist/features/ui/avatar/layers/hair/variant-6.js.map +1 -1
  753. package/dist/features/ui/avatar/layers/hair/variant-7.js.map +1 -1
  754. package/dist/features/ui/avatar/layers/hair/variant-8.js.map +1 -1
  755. package/dist/features/ui/avatar/layers/hair/variant-9.js.map +1 -1
  756. package/dist/features/ui/avatar/layers/mouth/variant-1.js.map +1 -1
  757. package/dist/features/ui/avatar/layers/mouth/variant-10.js.map +1 -1
  758. package/dist/features/ui/avatar/layers/mouth/variant-11.js.map +1 -1
  759. package/dist/features/ui/avatar/layers/mouth/variant-12.js.map +1 -1
  760. package/dist/features/ui/avatar/layers/mouth/variant-13.js.map +1 -1
  761. package/dist/features/ui/avatar/layers/mouth/variant-14.js.map +1 -1
  762. package/dist/features/ui/avatar/layers/mouth/variant-15.js.map +1 -1
  763. package/dist/features/ui/avatar/layers/mouth/variant-16.js.map +1 -1
  764. package/dist/features/ui/avatar/layers/mouth/variant-17.js.map +1 -1
  765. package/dist/features/ui/avatar/layers/mouth/variant-18.js.map +1 -1
  766. package/dist/features/ui/avatar/layers/mouth/variant-2.js.map +1 -1
  767. package/dist/features/ui/avatar/layers/mouth/variant-3.js.map +1 -1
  768. package/dist/features/ui/avatar/layers/mouth/variant-4.js.map +1 -1
  769. package/dist/features/ui/avatar/layers/mouth/variant-5.js.map +1 -1
  770. package/dist/features/ui/avatar/layers/mouth/variant-6.js.map +1 -1
  771. package/dist/features/ui/avatar/layers/mouth/variant-7.js.map +1 -1
  772. package/dist/features/ui/avatar/layers/mouth/variant-8.js.map +1 -1
  773. package/dist/features/ui/avatar/layers/mouth/variant-9.js.map +1 -1
  774. package/dist/features/ui/buttons/button/button-styled.js.map +1 -1
  775. package/dist/features/ui/buttons/button/button.js +25 -25
  776. package/dist/features/ui/buttons/button/button.js.map +1 -1
  777. package/dist/features/ui/buttons/clickable/clickable.js +9 -9
  778. package/dist/features/ui/buttons/clickable/clickable.js.map +1 -1
  779. package/dist/features/ui/buttons/icon-button/icon-button-styled.js.map +1 -1
  780. package/dist/features/ui/buttons/icon-button/icon-button.js +14 -14
  781. package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
  782. package/dist/features/ui/buttons/text-button/text-button-styled.js.map +1 -1
  783. package/dist/features/ui/buttons/text-button/text-button.js +19 -19
  784. package/dist/features/ui/buttons/text-button/text-button.js.map +1 -1
  785. package/dist/features/ui/callout/callout.js +10 -10
  786. package/dist/features/ui/callout/callout.js.map +1 -1
  787. package/dist/features/ui/constants/z-index.js +2 -0
  788. package/dist/features/ui/constants/z-index.js.map +1 -1
  789. package/dist/features/ui/context/context.js.map +1 -1
  790. package/dist/features/ui/context/use-tracking-context.js +2 -2
  791. package/dist/features/ui/context/use-tracking-context.js.map +1 -1
  792. package/dist/features/ui/context-menu/context-menu.js +13 -13
  793. package/dist/features/ui/context-menu/context-menu.js.map +1 -1
  794. package/dist/features/ui/error/error.js +11 -11
  795. package/dist/features/ui/error/error.js.map +1 -1
  796. package/dist/features/ui/grade-selector/grade-selector-styled.js.map +1 -1
  797. package/dist/features/ui/grade-selector/grade-selector.js.map +1 -1
  798. package/dist/features/ui/grade-selector/grade-tab.js.map +1 -1
  799. package/dist/features/ui/hooks/use-click-handler.js.map +1 -1
  800. package/dist/features/ui/hooks/use-context-menu-click-handler.js +17 -17
  801. package/dist/features/ui/hooks/use-context-menu-click-handler.js.map +1 -1
  802. package/dist/features/ui/hooks/use-response-handler.js.map +1 -1
  803. package/dist/features/ui/image/image.js.map +1 -1
  804. package/dist/features/ui/inputs/base-input/base-input-styled.js.map +1 -1
  805. package/dist/features/ui/inputs/base-input/base-input.js.map +1 -1
  806. package/dist/features/ui/inputs/base-select-input/base-select-input-styled.js.map +1 -1
  807. package/dist/features/ui/inputs/base-select-input/base-select-input.js.map +1 -1
  808. package/dist/features/ui/inputs/base-select-input/select-option/select-option.js.map +1 -1
  809. package/dist/features/ui/inputs/base-select-input/select-section/select-section-styled.js.map +1 -1
  810. package/dist/features/ui/inputs/base-select-input/select-section/select-section.js.map +1 -1
  811. package/dist/features/ui/inputs/cascading-select-input/cascading-select-input.js +23 -23
  812. package/dist/features/ui/inputs/cascading-select-input/cascading-select-input.js.map +1 -1
  813. package/dist/features/ui/inputs/checkbox-input/checkbox-input-styled.js.map +1 -1
  814. package/dist/features/ui/inputs/checkbox-input/checkbox-input.js +20 -20
  815. package/dist/features/ui/inputs/checkbox-input/checkbox-input.js.map +1 -1
  816. package/dist/features/ui/inputs/checkbox-input-list/checkbox-input-list.js +16 -16
  817. package/dist/features/ui/inputs/checkbox-input-list/checkbox-input-list.js.map +1 -1
  818. package/dist/features/ui/inputs/google-places-search-input/google-places-search-input.js +6 -6
  819. package/dist/features/ui/inputs/google-places-search-input/google-places-search-input.js.map +1 -1
  820. package/dist/features/ui/inputs/num-range-input/num-range-input.js +4 -4
  821. package/dist/features/ui/inputs/num-range-input/num-range-input.js.map +1 -1
  822. package/dist/features/ui/inputs/percentile-input/percentile-input.js +21 -21
  823. package/dist/features/ui/inputs/percentile-input/percentile-input.js.map +1 -1
  824. package/dist/features/ui/inputs/percentile-input/percentile-styled.js.map +1 -1
  825. package/dist/features/ui/inputs/radio-input/radio-input.js +14 -14
  826. package/dist/features/ui/inputs/radio-input/radio-input.js.map +1 -1
  827. package/dist/features/ui/inputs/radio-input/radio-option/radio-option-styled.js.map +1 -1
  828. package/dist/features/ui/inputs/radio-input/radio-option/radio-option.js.map +1 -1
  829. package/dist/features/ui/inputs/searchable-input/searchable-input-styled.js.map +1 -1
  830. package/dist/features/ui/inputs/searchable-input/searchable-input.js +3 -3
  831. package/dist/features/ui/inputs/searchable-input/searchable-input.js.map +1 -1
  832. package/dist/features/ui/inputs/searchable-select-input/searchable-select-input.js +17 -17
  833. package/dist/features/ui/inputs/searchable-select-input/searchable-select-input.js.map +1 -1
  834. package/dist/features/ui/inputs/searchable-select-input/use-filtered-options.js.map +1 -1
  835. package/dist/features/ui/inputs/select-input/select-input.js +3 -3
  836. package/dist/features/ui/inputs/select-input/select-input.js.map +1 -1
  837. package/dist/features/ui/inputs/text-input/text-input-styled.js.map +1 -1
  838. package/dist/features/ui/inputs/text-input/text-input.js +33 -33
  839. package/dist/features/ui/inputs/text-input/text-input.js.map +1 -1
  840. package/dist/features/ui/layout/flex-view.js +23 -23
  841. package/dist/features/ui/layout/flex-view.js.map +1 -1
  842. package/dist/features/ui/loader/app-loader/app-loader.js +3 -3
  843. package/dist/features/ui/loader/app-loader/app-loader.js.map +1 -1
  844. package/dist/features/ui/lottie-animation/helper.js.map +1 -1
  845. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  846. package/dist/features/ui/nudge/nudge.js +9 -9
  847. package/dist/features/ui/nudge/nudge.js.map +1 -1
  848. package/dist/features/ui/perfect-hits/perfect-hits-helpers.js +1 -1
  849. package/dist/features/ui/perfect-hits/perfect-hits-helpers.js.map +1 -1
  850. package/dist/features/ui/perfect-hits/perfect-hits-styled.js +1 -1
  851. package/dist/features/ui/perfect-hits/perfect-hits.js.map +1 -1
  852. package/dist/features/ui/radio-cards/radio-card-option/radio-card-option-styled.js.map +1 -1
  853. package/dist/features/ui/radio-cards/radio-card-option/radio-card-option.js.map +1 -1
  854. package/dist/features/ui/radio-cards/radio-cards.js +15 -15
  855. package/dist/features/ui/radio-cards/radio-cards.js.map +1 -1
  856. package/dist/features/ui/section-list/section-list.js +9 -9
  857. package/dist/features/ui/section-list/section-list.js.map +1 -1
  858. package/dist/features/ui/selection-cards/selection-card-option/selection-card-option-styled.js.map +1 -1
  859. package/dist/features/ui/selection-cards/selection-card-option/selection-card-option.js.map +1 -1
  860. package/dist/features/ui/selection-cards/selection-cards.js +18 -18
  861. package/dist/features/ui/selection-cards/selection-cards.js.map +1 -1
  862. package/dist/features/ui/separator/separator.js +6 -6
  863. package/dist/features/ui/separator/separator.js.map +1 -1
  864. package/dist/features/ui/stepper/stepper-styled.js.map +1 -1
  865. package/dist/features/ui/stepper/stepper.js +7 -7
  866. package/dist/features/ui/stepper/stepper.js.map +1 -1
  867. package/dist/features/ui/streak-icon/streak-icon.js +14 -14
  868. package/dist/features/ui/streak-icon/streak-icon.js.map +1 -1
  869. package/dist/features/ui/superscript/superscript.js.map +1 -1
  870. package/dist/features/ui/tab/tab-styled.js.map +1 -1
  871. package/dist/features/ui/tab/tab.js +17 -17
  872. package/dist/features/ui/tab/tab.js.map +1 -1
  873. package/dist/features/ui/tag/tag-styled.js.map +1 -1
  874. package/dist/features/ui/tag/tag.js +4 -4
  875. package/dist/features/ui/tag/tag.js.map +1 -1
  876. package/dist/features/ui/text/text.js +24 -23
  877. package/dist/features/ui/text/text.js.map +1 -1
  878. package/dist/features/ui/theme/arrow-tooltip.js.map +1 -1
  879. package/dist/features/ui/theme/button.js.map +1 -1
  880. package/dist/features/ui/theme/checkbox.js.map +1 -1
  881. package/dist/features/ui/theme/get-theme.js.map +1 -1
  882. package/dist/features/ui/theme/input.js.map +1 -1
  883. package/dist/features/ui/theme/layout.js.map +1 -1
  884. package/dist/features/ui/theme/tab.js.map +1 -1
  885. package/dist/features/ui/theme/text-button.js.map +1 -1
  886. package/dist/features/ui/theme/text.js.map +1 -1
  887. package/dist/features/ui/time-left-timeline/time-left-timeline-styled.js.map +1 -1
  888. package/dist/features/ui/time-left-timeline/time-left-timeline.js +16 -16
  889. package/dist/features/ui/time-left-timeline/time-left-timeline.js.map +1 -1
  890. package/dist/features/ui/timers/countdown-timer/countdown-timer.js +15 -15
  891. package/dist/features/ui/timers/countdown-timer/countdown-timer.js.map +1 -1
  892. package/dist/features/ui/video/index.js +3 -3
  893. package/dist/features/ui/video/index.js.map +1 -1
  894. package/dist/features/ui/video/styled.js.map +1 -1
  895. package/dist/features/utils/load-script.js +9 -9
  896. package/dist/features/utils/load-script.js.map +1 -1
  897. package/dist/features/utils/utils.js.map +1 -1
  898. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js +25 -25
  899. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js.map +1 -1
  900. package/dist/features/worksheet/learnosity-preloader/use-download-script.js.map +1 -1
  901. package/dist/features/worksheet/learnosity-preloader/use-is-learnosity-loaded.js +2 -2
  902. package/dist/features/worksheet/learnosity-preloader/use-is-learnosity-loaded.js.map +1 -1
  903. package/dist/features/worksheet/user-pointer-pin/hooks/use-user-location.js.map +1 -1
  904. package/dist/features/worksheet/user-pointer-pin/user-pin.js.map +1 -1
  905. package/dist/features/worksheet/worksheet/constants.js.map +1 -1
  906. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
  907. package/dist/features/worksheet/worksheet/hooks/use-get-active-question-id.js.map +1 -1
  908. package/dist/features/worksheet/worksheet/hooks/use-learnosity-append.js.map +1 -1
  909. package/dist/features/worksheet/worksheet/hooks/use-learnosity.js.map +1 -1
  910. package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js.map +1 -1
  911. package/dist/features/worksheet/worksheet/hooks/use-time-on-questions.js.map +1 -1
  912. package/dist/features/worksheet/worksheet/hooks/use-worksheet-data-helper.js.map +1 -1
  913. package/dist/features/worksheet/worksheet/question-tips.js.map +1 -1
  914. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  915. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/exit-ticket-intervention.js.map +1 -1
  916. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/exit-ticket-review-available.js.map +1 -1
  917. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/exit-ticket-review.js.map +1 -1
  918. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/exit-ticket-student-submission.js.map +1 -1
  919. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/optional-items-assignment.js.map +1 -1
  920. package/dist/features/worksheet/worksheet/worksheet-blocker/blockers/optional-items-skip.js.map +1 -1
  921. package/dist/features/worksheet/worksheet/worksheet-blocker/worksheet-blocker.js.map +1 -1
  922. package/dist/features/worksheet/worksheet/worksheet-container.js +17 -17
  923. package/dist/features/worksheet/worksheet/worksheet-container.js.map +1 -1
  924. package/dist/features/worksheet/worksheet/worksheet-helpers.js +4 -4
  925. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  926. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-navigation/worksheet-item-navigation.js.map +1 -1
  927. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number-styled.js.map +1 -1
  928. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-item-number/worksheet-item-number.js.map +1 -1
  929. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation-styled.js.map +1 -1
  930. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
  931. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +2 -2
  932. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
  933. package/dist/features/worksheet/worksheet/worksheet-permissions/error.js.map +1 -1
  934. package/dist/features/worksheet/worksheet/worksheet-permissions/sheet-locked.js.map +1 -1
  935. package/dist/features/worksheet/worksheet/worksheet-question/header/header-tags.js.map +1 -1
  936. package/dist/features/worksheet/worksheet/worksheet-question/header/header.js.map +1 -1
  937. package/dist/features/worksheet/worksheet/worksheet-question/header/validated-animation.js.map +1 -1
  938. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
  939. package/dist/features/worksheet/worksheet/worksheet-question/question-backdrop/question-backdrop-styled.js.map +1 -1
  940. package/dist/features/worksheet/worksheet/worksheet-question/question-backdrop/question-backdrop.js.map +1 -1
  941. package/dist/features/worksheet/worksheet/worksheet-question/subjective-feedback.js.map +1 -1
  942. package/dist/features/worksheet/worksheet/worksheet-question/subjective-review.js.map +1 -1
  943. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js.map +1 -1
  944. package/dist/features/worksheet/worksheet/worksheet-question/system-intros/advanced-practice-intro.js.map +1 -1
  945. package/dist/features/worksheet/worksheet/worksheet-question/system-intros/basic-practice-intro.js.map +1 -1
  946. package/dist/features/worksheet/worksheet/worksheet-question/system-intros/exit-ticket-intro.js.map +1 -1
  947. package/dist/features/worksheet/worksheet/worksheet-question/system-intros/regular-practice-intro.js.map +1 -1
  948. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  949. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  950. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +1 -1
  951. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +1 -1
  952. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  953. package/dist/features/worksheet/worksheet/worksheet-questions-summary/worksheet-questions-summary-styled.js.map +1 -1
  954. package/dist/features/worksheet/worksheet/worksheet-questions-summary/worksheet-questions-summary.js.map +1 -1
  955. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js.map +1 -1
  956. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +1 -1
  957. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +1 -1
  958. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +1 -1
  959. package/dist/features/worksheet/worksheet/worksheet-styled.js +4 -4
  960. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  961. package/dist/features/worksheet/worksheet/worksheet-summary/worksheet-summary.js.map +1 -1
  962. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
  963. package/dist/features/worksheet/worksheet/worksheet.js +5 -5
  964. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  965. package/dist/features/worksheet/worksheet-preview/api/get-preview-worksheet.js.map +1 -1
  966. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +16 -16
  967. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  968. package/dist/features/worksheet/worksheet-preview/worksheet-preview-styled.js.map +1 -1
  969. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  970. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +16 -16
  971. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  972. package/dist/helpers/date-time.js.map +1 -1
  973. package/dist/helpers/get-device-details.js.map +1 -1
  974. package/dist/helpers/label-text.js.map +1 -1
  975. package/dist/index.d.ts +1 -0
  976. package/dist/index.js +481 -481
  977. package/dist/node_modules/@cuemath/analytics-v2/dist/constants.js.map +1 -1
  978. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -1
  979. package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -1
  980. package/dist/node_modules/date-fns/_lib/format/formatters.js +2 -0
  981. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -1
  982. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -1
  983. package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -1
  984. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -1
  985. package/dist/node_modules/date-fns/addDays.js.map +1 -1
  986. package/dist/node_modules/date-fns/addMonths.js.map +1 -1
  987. package/dist/node_modules/date-fns/constructNow.js.map +1 -1
  988. package/dist/node_modules/date-fns/eachMonthOfInterval.js.map +1 -1
  989. package/dist/node_modules/date-fns/format.js.map +1 -1
  990. package/dist/node_modules/date-fns/getDefaultOptions.js.map +1 -1
  991. package/dist/node_modules/date-fns/getISODay.js.map +1 -1
  992. package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -1
  993. package/dist/node_modules/date-fns/getWeekYear.js.map +1 -1
  994. package/dist/node_modules/date-fns/isAfter.js.map +1 -1
  995. package/dist/node_modules/date-fns/lastDayOfMonth.js.map +1 -1
  996. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -1
  997. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -1
  998. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -1
  999. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -1
  1000. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -1
  1001. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -1
  1002. package/dist/node_modules/date-fns/parse/_lib/Parser.js.map +1 -1
  1003. package/dist/node_modules/date-fns/parse/_lib/Setter.js.map +1 -1
  1004. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js.map +1 -1
  1005. package/dist/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js.map +1 -1
  1006. package/dist/node_modules/date-fns/parse/_lib/parsers/DateParser.js.map +1 -1
  1007. package/dist/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js.map +1 -1
  1008. package/dist/node_modules/date-fns/parse/_lib/parsers/DayParser.js.map +1 -1
  1009. package/dist/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js.map +1 -1
  1010. package/dist/node_modules/date-fns/parse/_lib/parsers/EraParser.js.map +1 -1
  1011. package/dist/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js.map +1 -1
  1012. package/dist/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js.map +1 -1
  1013. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js.map +1 -1
  1014. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js.map +1 -1
  1015. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js.map +1 -1
  1016. package/dist/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js.map +1 -1
  1017. package/dist/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js.map +1 -1
  1018. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js.map +1 -1
  1019. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js.map +1 -1
  1020. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js.map +1 -1
  1021. package/dist/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js.map +1 -1
  1022. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js.map +1 -1
  1023. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js.map +1 -1
  1024. package/dist/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js.map +1 -1
  1025. package/dist/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js.map +1 -1
  1026. package/dist/node_modules/date-fns/parse/_lib/parsers/MonthParser.js.map +1 -1
  1027. package/dist/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js.map +1 -1
  1028. package/dist/node_modules/date-fns/parse/_lib/parsers/SecondParser.js.map +1 -1
  1029. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js.map +1 -1
  1030. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js.map +1 -1
  1031. package/dist/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js.map +1 -1
  1032. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js.map +1 -1
  1033. package/dist/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js.map +1 -1
  1034. package/dist/node_modules/date-fns/parse/_lib/parsers/YearParser.js.map +1 -1
  1035. package/dist/node_modules/date-fns/parse/_lib/utils.js.map +1 -1
  1036. package/dist/node_modules/date-fns/parse.js.map +1 -1
  1037. package/dist/node_modules/date-fns/setDay.js.map +1 -1
  1038. package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -1
  1039. package/dist/node_modules/date-fns/startOfWeek.js.map +1 -1
  1040. package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -1
  1041. package/dist/node_modules/date-fns/transpose.js.map +1 -1
  1042. package/dist/node_modules/fast-equals/dist/esm/index.js +133 -174
  1043. package/dist/node_modules/fast-equals/dist/esm/index.js.map +1 -1
  1044. package/dist/node_modules/filter-obj/index.js.map +1 -1
  1045. package/dist/node_modules/humanize-plus/dist/humanize.js.map +1 -1
  1046. package/dist/node_modules/lodash.debounce/index.js.map +1 -1
  1047. package/dist/node_modules/lodash.isequal/index.js +1 -1
  1048. package/dist/node_modules/lodash.isequal/index.js.map +1 -1
  1049. package/dist/node_modules/lodash.throttle/index.js.map +1 -1
  1050. package/dist/node_modules/query-string/base.js +1 -1
  1051. package/dist/node_modules/query-string/base.js.map +1 -1
  1052. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +1 -0
  1053. package/dist/node_modules/split-on-first/index.js.map +1 -1
  1054. package/dist/node_modules/ua-parser-js/src/ua-parser.js +3 -3
  1055. package/dist/node_modules/ua-parser-js/src/ua-parser.js.map +1 -1
  1056. package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  1057. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  1058. package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
  1059. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  1060. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
  1061. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  1062. package/dist/node_modules/uuid/dist/esm-browser/v4.js +9 -12
  1063. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  1064. package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  1065. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  1066. package/package.json +3 -2
  1067. package/dist/node_modules/decode-uri-component/index.js.map +0 -1
  1068. package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
  1069. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  1070. /package/dist/node_modules/{decode-uri-component → query-string/node_modules/decode-uri-component}/index.js +0 -0
@@ -1,9 +1,9 @@
1
1
  import { jsx as D } from "react/jsx-runtime";
2
- import { memo as u, useEffect as m, useMemo as E, useCallback as p } from "react";
2
+ import { memo as u, useEffect as m, useMemo as l, useCallback as p } from "react";
3
3
  import t from "../constants/events.js";
4
4
  import { setMathJaxConfigInWindow as T } from "../worksheet/worksheet-helpers.js";
5
5
  import f from "./learnosity-preloader-context.js";
6
- import l from "./use-download-script.js";
6
+ import E from "./use-download-script.js";
7
7
  const C = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js", O = {
8
8
  LOADING: t.WORKSHEET_V3_SCRIPT_LOADING,
9
9
  LOADED: t.WORKSHEET_V3_SCRIPT_LOADED,
@@ -11,52 +11,52 @@ const C = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js", O = {
11
11
  FALLBACK_LOADING: t.WORKSHEET_V3_SCRIPT_FALLBACK_LOADING,
12
12
  FALLBACK_LOADED: t.WORKSHEET_V3_SCRIPT_FALLBACK_LOADED,
13
13
  FALLBACK_FAILED: t.WORKSHEET_V3_SCRIPT_FALLBACK_FAILED
14
- }, R = {
14
+ }, P = {
15
15
  LOADING: t.MATHJAX_SCRIPT_LOADING,
16
16
  LOADED: t.MATHJAX_SCRIPT_LOADED,
17
17
  FAILED: t.MATHJAX_SCRIPT_FAILED
18
- }, H = u(
19
- ({ apiURL: a, fallbackAPIURL: S, logger: e, children: c }) => {
18
+ }, R = u(
19
+ ({ apiURL: a, fallbackAPIURL: c, logger: e, children: S }) => {
20
20
  var _;
21
- const s = (_ = window == null ? void 0 : window.MathJax) == null ? void 0 : _.version, {
21
+ const n = (_ = window == null ? void 0 : window.MathJax) == null ? void 0 : _.version, {
22
22
  scriptStatus: o,
23
- loadedAPIURL: n,
23
+ loadedAPIURL: d,
24
24
  downloadScript: i
25
- } = l(
25
+ } = E(
26
26
  e,
27
27
  a,
28
28
  "learnosity-preloader-script",
29
29
  O,
30
- S
31
- ), { scriptStatus: r, downloadScript: L } = l(
30
+ c
31
+ ), { scriptStatus: r, downloadScript: L } = E(
32
32
  e,
33
33
  C,
34
34
  "mathjax-script",
35
- R,
35
+ P,
36
36
  void 0,
37
- s ? "loaded" : "loading"
37
+ n ? "loaded" : "loading"
38
38
  );
39
39
  m(() => {
40
- s || T(e);
41
- }, [s, e]);
42
- const A = E(() => o === "loaded" && r === "loaded" ? "loaded" : o === "error" || r === "error" ? "error" : "loading", [o, r]), d = p(() => {
40
+ n || T(e);
41
+ }, [n, e]);
42
+ const s = l(() => o === "loaded" && r === "loaded" ? "loaded" : o === "error" || r === "error" ? "error" : "loading", [o, r]), A = p(() => {
43
43
  o === "error" && i(), r === "error" && L();
44
- }, [o, i, L, r]), I = E(() => A === "loaded" ? {
45
- scriptStatus: A,
44
+ }, [o, i, L, r]), I = l(() => s === "loaded" ? {
45
+ scriptStatus: s,
46
46
  defaultAPIURL: a,
47
- loadedAPIURL: n,
48
- downloadScript: d
47
+ loadedAPIURL: d,
48
+ downloadScript: A
49
49
  } : {
50
- scriptStatus: A,
50
+ scriptStatus: s,
51
51
  defaultAPIURL: a,
52
52
  loadedAPIURL: void 0,
53
- downloadScript: d
54
- }, [a, d, n, A]);
55
- return /* @__PURE__ */ D(f.Provider, { value: I, children: c });
53
+ downloadScript: A
54
+ }, [a, A, d, s]);
55
+ return /* @__PURE__ */ D(f.Provider, { value: I, children: S });
56
56
  }
57
- );
57
+ ), v = R;
58
58
  export {
59
59
  C as MATHJAX_URL,
60
- H as default
60
+ v as default
61
61
  };
62
62
  //# sourceMappingURL=learnosity-preloader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"learnosity-preloader.js","sources":["../../../../src/features/worksheet/learnosity-preloader/learnosity-preloader.tsx"],"sourcesContent":["import type {\n ILearnosityPreloaderProps,\n TLearnosityPreloaderContextValue,\n IMathJaxConfig,\n} from './learnosity-preloader-types';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport EVENTS from '../constants/events';\nimport { setMathJaxConfigInWindow } from '../worksheet/worksheet-helpers';\nimport LearnosityPreloaderContext from './learnosity-preloader-context';\nimport useDownloadScript from './use-download-script';\n\nexport const MATHJAX_URL = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js';\n\ndeclare global {\n interface Window {\n MathJax: IMathJaxConfig;\n }\n}\n\nconst LearnosityEventsMap = {\n LOADING: EVENTS.WORKSHEET_V3_SCRIPT_LOADING,\n LOADED: EVENTS.WORKSHEET_V3_SCRIPT_LOADED,\n FAILED: EVENTS.WORKSHEET_V3_SCRIPT_FAILED,\n FALLBACK_LOADING: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_LOADING,\n FALLBACK_LOADED: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_LOADED,\n FALLBACK_FAILED: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_FAILED,\n};\n\nconst MathJaxEventsMap = {\n LOADING: EVENTS.MATHJAX_SCRIPT_LOADING,\n LOADED: EVENTS.MATHJAX_SCRIPT_LOADED,\n FAILED: EVENTS.MATHJAX_SCRIPT_FAILED,\n};\n\nconst LearnosityPreloader: FC<PropsWithChildren<ILearnosityPreloaderProps>> = memo(\n ({ apiURL, fallbackAPIURL, logger, children }) => {\n const isMathJaxLoaded = window?.MathJax?.version;\n const {\n scriptStatus: learnosityScriptStatus,\n loadedAPIURL,\n downloadScript: loadLearnosity,\n } = useDownloadScript(\n logger,\n apiURL,\n 'learnosity-preloader-script',\n LearnosityEventsMap,\n fallbackAPIURL,\n );\n const { scriptStatus: mathjaxScriptStatus, downloadScript: loadMathjax } = useDownloadScript(\n logger,\n MATHJAX_URL,\n 'mathjax-script',\n MathJaxEventsMap,\n undefined,\n isMathJaxLoaded ? 'loaded' : 'loading',\n );\n\n useEffect(() => {\n if (!isMathJaxLoaded) {\n setMathJaxConfigInWindow(logger);\n }\n }, [isMathJaxLoaded, logger]);\n\n const scriptStatus = useMemo(() => {\n if (learnosityScriptStatus === 'loaded' && mathjaxScriptStatus === 'loaded') {\n return 'loaded';\n }\n\n if (learnosityScriptStatus === 'error' || mathjaxScriptStatus === 'error') {\n return 'error';\n }\n\n return 'loading';\n }, [learnosityScriptStatus, mathjaxScriptStatus]);\n\n const downloadScript = useCallback(() => {\n if (learnosityScriptStatus === 'error') {\n loadLearnosity();\n }\n\n if (mathjaxScriptStatus === 'error') {\n loadMathjax();\n }\n }, [learnosityScriptStatus, loadLearnosity, loadMathjax, mathjaxScriptStatus]);\n\n const contextValue = useMemo<TLearnosityPreloaderContextValue>(() => {\n if (scriptStatus === 'loaded') {\n return {\n scriptStatus,\n defaultAPIURL: apiURL,\n loadedAPIURL,\n downloadScript,\n };\n }\n\n return {\n scriptStatus,\n defaultAPIURL: apiURL,\n loadedAPIURL: undefined,\n downloadScript,\n };\n }, [apiURL, downloadScript, loadedAPIURL, scriptStatus]);\n\n return (\n <LearnosityPreloaderContext.Provider value={contextValue}>\n {children}\n </LearnosityPreloaderContext.Provider>\n );\n },\n);\n\nexport default LearnosityPreloader;\n"],"names":["MATHJAX_URL","LearnosityEventsMap","EVENTS","MathJaxEventsMap","LearnosityPreloader","memo","apiURL","fallbackAPIURL","logger","children","isMathJaxLoaded","_a","learnosityScriptStatus","loadedAPIURL","loadLearnosity","useDownloadScript","mathjaxScriptStatus","loadMathjax","useEffect","setMathJaxConfigInWindow","scriptStatus","useMemo","downloadScript","useCallback","contextValue","LearnosityPreloaderContext"],"mappings":";;;;;;AAcO,MAAMA,IAAc,gEAQrBC,IAAsB;AAAA,EAC1B,SAASC,EAAO;AAAA,EAChB,QAAQA,EAAO;AAAA,EACf,QAAQA,EAAO;AAAA,EACf,kBAAkBA,EAAO;AAAA,EACzB,iBAAiBA,EAAO;AAAA,EACxB,iBAAiBA,EAAO;AAC1B,GAEMC,IAAmB;AAAA,EACvB,SAASD,EAAO;AAAA,EAChB,QAAQA,EAAO;AAAA,EACf,QAAQA,EAAO;AACjB,GAEME,IAAwEC;AAAA,EAC5E,CAAC,EAAE,QAAAC,GAAQ,gBAAAC,GAAgB,QAAAC,GAAQ,UAAAC,QAAe;;AAC1C,UAAAC,KAAkBC,IAAA,iCAAQ,YAAR,gBAAAA,EAAiB,SACnC;AAAA,MACJ,cAAcC;AAAA,MACd,cAAAC;AAAA,MACA,gBAAgBC;AAAA,IAAA,IACdC;AAAA,MACFP;AAAA,MACAF;AAAA,MACA;AAAA,MACAL;AAAA,MACAM;AAAA,IACF,GACM,EAAE,cAAcS,GAAqB,gBAAgBC,EAAgB,IAAAF;AAAA,MACzEP;AAAA,MACAR;AAAA,MACA;AAAA,MACAG;AAAA,MACA;AAAA,MACAO,IAAkB,WAAW;AAAA,IAC/B;AAEA,IAAAQ,EAAU,MAAM;AACd,MAAKR,KACHS,EAAyBX,CAAM;AAAA,IACjC,GACC,CAACE,GAAiBF,CAAM,CAAC;AAEtB,UAAAY,IAAeC,EAAQ,MACvBT,MAA2B,YAAYI,MAAwB,WAC1D,WAGLJ,MAA2B,WAAWI,MAAwB,UACzD,UAGF,WACN,CAACJ,GAAwBI,CAAmB,CAAC,GAE1CM,IAAiBC,EAAY,MAAM;AACvC,MAAIX,MAA2B,WACdE,EAAA,GAGbE,MAAwB,WACdC,EAAA;AAAA,OAEb,CAACL,GAAwBE,GAAgBG,GAAaD,CAAmB,CAAC,GAEvEQ,IAAeH,EAA0C,MACzDD,MAAiB,WACZ;AAAA,MACL,cAAAA;AAAA,MACA,eAAed;AAAA,MACf,cAAAO;AAAA,MACA,gBAAAS;AAAA,IACF,IAGK;AAAA,MACL,cAAAF;AAAA,MACA,eAAed;AAAA,MACf,cAAc;AAAA,MACd,gBAAAgB;AAAA,IACF,GACC,CAAChB,GAAQgB,GAAgBT,GAAcO,CAAY,CAAC;AAEvD,6BACGK,EAA2B,UAA3B,EAAoC,OAAOD,GACzC,UAAAf,GACH;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"learnosity-preloader.js","sources":["../../../../src/features/worksheet/learnosity-preloader/learnosity-preloader.tsx"],"sourcesContent":["import type {\n ILearnosityPreloaderProps,\n TLearnosityPreloaderContextValue,\n IMathJaxConfig,\n} from './learnosity-preloader-types';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport EVENTS from '../constants/events';\nimport { setMathJaxConfigInWindow } from '../worksheet/worksheet-helpers';\nimport LearnosityPreloaderContext from './learnosity-preloader-context';\nimport useDownloadScript from './use-download-script';\n\nexport const MATHJAX_URL = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js';\n\ndeclare global {\n interface Window {\n MathJax: IMathJaxConfig;\n }\n}\n\nconst LearnosityEventsMap = {\n LOADING: EVENTS.WORKSHEET_V3_SCRIPT_LOADING,\n LOADED: EVENTS.WORKSHEET_V3_SCRIPT_LOADED,\n FAILED: EVENTS.WORKSHEET_V3_SCRIPT_FAILED,\n FALLBACK_LOADING: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_LOADING,\n FALLBACK_LOADED: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_LOADED,\n FALLBACK_FAILED: EVENTS.WORKSHEET_V3_SCRIPT_FALLBACK_FAILED,\n};\n\nconst MathJaxEventsMap = {\n LOADING: EVENTS.MATHJAX_SCRIPT_LOADING,\n LOADED: EVENTS.MATHJAX_SCRIPT_LOADED,\n FAILED: EVENTS.MATHJAX_SCRIPT_FAILED,\n};\n\nconst LearnosityPreloader: FC<PropsWithChildren<ILearnosityPreloaderProps>> = memo(\n ({ apiURL, fallbackAPIURL, logger, children }) => {\n const isMathJaxLoaded = window?.MathJax?.version;\n const {\n scriptStatus: learnosityScriptStatus,\n loadedAPIURL,\n downloadScript: loadLearnosity,\n } = useDownloadScript(\n logger,\n apiURL,\n 'learnosity-preloader-script',\n LearnosityEventsMap,\n fallbackAPIURL,\n );\n const { scriptStatus: mathjaxScriptStatus, downloadScript: loadMathjax } = useDownloadScript(\n logger,\n MATHJAX_URL,\n 'mathjax-script',\n MathJaxEventsMap,\n undefined,\n isMathJaxLoaded ? 'loaded' : 'loading',\n );\n\n useEffect(() => {\n if (!isMathJaxLoaded) {\n setMathJaxConfigInWindow(logger);\n }\n }, [isMathJaxLoaded, logger]);\n\n const scriptStatus = useMemo(() => {\n if (learnosityScriptStatus === 'loaded' && mathjaxScriptStatus === 'loaded') {\n return 'loaded';\n }\n\n if (learnosityScriptStatus === 'error' || mathjaxScriptStatus === 'error') {\n return 'error';\n }\n\n return 'loading';\n }, [learnosityScriptStatus, mathjaxScriptStatus]);\n\n const downloadScript = useCallback(() => {\n if (learnosityScriptStatus === 'error') {\n loadLearnosity();\n }\n\n if (mathjaxScriptStatus === 'error') {\n loadMathjax();\n }\n }, [learnosityScriptStatus, loadLearnosity, loadMathjax, mathjaxScriptStatus]);\n\n const contextValue = useMemo<TLearnosityPreloaderContextValue>(() => {\n if (scriptStatus === 'loaded') {\n return {\n scriptStatus,\n defaultAPIURL: apiURL,\n loadedAPIURL,\n downloadScript,\n };\n }\n\n return {\n scriptStatus,\n defaultAPIURL: apiURL,\n loadedAPIURL: undefined,\n downloadScript,\n };\n }, [apiURL, downloadScript, loadedAPIURL, scriptStatus]);\n\n return (\n <LearnosityPreloaderContext.Provider value={contextValue}>\n {children}\n </LearnosityPreloaderContext.Provider>\n );\n },\n);\n\nexport default LearnosityPreloader;\n"],"names":["MATHJAX_URL","LearnosityEventsMap","EVENTS","MathJaxEventsMap","LearnosityPreloader","memo","apiURL","fallbackAPIURL","logger","children","isMathJaxLoaded","_a","learnosityScriptStatus","loadedAPIURL","loadLearnosity","useDownloadScript","mathjaxScriptStatus","loadMathjax","useEffect","setMathJaxConfigInWindow","scriptStatus","useMemo","downloadScript","useCallback","contextValue","LearnosityPreloaderContext","LearnosityPreloader$1"],"mappings":";;;;;;AAcO,MAAMA,IAAc,gEAQrBC,IAAsB;AAAA,EAC1B,SAASC,EAAO;AAAA,EAChB,QAAQA,EAAO;AAAA,EACf,QAAQA,EAAO;AAAA,EACf,kBAAkBA,EAAO;AAAA,EACzB,iBAAiBA,EAAO;AAAA,EACxB,iBAAiBA,EAAO;AAC1B,GAEMC,IAAmB;AAAA,EACvB,SAASD,EAAO;AAAA,EAChB,QAAQA,EAAO;AAAA,EACf,QAAQA,EAAO;AACjB,GAEME,IAAwEC;AAAA,EAC5E,CAAC,EAAE,QAAAC,GAAQ,gBAAAC,GAAgB,QAAAC,GAAQ,UAAAC,QAAe;;AAC1C,UAAAC,KAAkBC,IAAA,iCAAQ,YAAR,gBAAAA,EAAiB,SACnC;AAAA,MACJ,cAAcC;AAAA,MACd,cAAAC;AAAA,MACA,gBAAgBC;AAAA,IAAA,IACdC;AAAA,MACFP;AAAA,MACAF;AAAA,MACA;AAAA,MACAL;AAAA,MACAM;AAAA,IAAA,GAEI,EAAE,cAAcS,GAAqB,gBAAgBC,EAAgB,IAAAF;AAAA,MACzEP;AAAA,MACAR;AAAA,MACA;AAAA,MACAG;AAAA,MACA;AAAA,MACAO,IAAkB,WAAW;AAAA,IAAA;AAG/B,IAAAQ,EAAU,MAAM;AACd,MAAKR,KACHS,EAAyBX,CAAM;AAAA,IACjC,GACC,CAACE,GAAiBF,CAAM,CAAC;AAEtB,UAAAY,IAAeC,EAAQ,MACvBT,MAA2B,YAAYI,MAAwB,WAC1D,WAGLJ,MAA2B,WAAWI,MAAwB,UACzD,UAGF,WACN,CAACJ,GAAwBI,CAAmB,CAAC,GAE1CM,IAAiBC,EAAY,MAAM;AACvC,MAAIX,MAA2B,WACdE,KAGbE,MAAwB,WACdC;OAEb,CAACL,GAAwBE,GAAgBG,GAAaD,CAAmB,CAAC,GAEvEQ,IAAeH,EAA0C,MACzDD,MAAiB,WACZ;AAAA,MACL,cAAAA;AAAA,MACA,eAAed;AAAA,MACf,cAAAO;AAAA,MACA,gBAAAS;AAAA,IAAA,IAIG;AAAA,MACL,cAAAF;AAAA,MACA,eAAed;AAAA,MACf,cAAc;AAAA,MACd,gBAAAgB;AAAA,IAAA,GAED,CAAChB,GAAQgB,GAAgBT,GAAcO,CAAY,CAAC;AAEvD,6BACGK,EAA2B,UAA3B,EAAoC,OAAOD,GACzC,UAAAf,EACH,CAAA;AAAA,EAEJ;AACF,GAEAiB,IAAetB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-download-script.js","sources":["../../../../src/features/worksheet/learnosity-preloader/use-download-script.ts"],"sourcesContent":["import type { TScriptStatus } from './learnosity-preloader-types';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport useIsUnmounted from '../../hooks/use-is-unmounted';\nimport loadScript from '../../utils/load-script';\n\ninterface IEvents {\n LOADING: string;\n LOADED: string;\n FAILED: string;\n FALLBACK_LOADING?: string;\n FALLBACK_LOADED?: string;\n FALLBACK_FAILED?: string;\n}\n\nconst useDownloadScript = (\n logger: (eventName: string, data?: Record<string, unknown>) => void,\n apiURL: string,\n id: string,\n eventsMap: IEvents,\n fallbackAPIURL?: string,\n state: TScriptStatus = 'loading',\n) => {\n const [scriptStatus, setScriptStatus] = useState<TScriptStatus>(state);\n const [loadedAPIURL, setLoadedAPIURL] = useState<string>();\n const unmountedRef = useIsUnmounted();\n const fallbackId = id + '-fallback';\n\n const downloadScript = useCallback(async () => {\n setScriptStatus('loading');\n try {\n logger(eventsMap.LOADING);\n await loadScript(apiURL, id);\n\n logger(eventsMap.LOADED);\n if (!unmountedRef.current) {\n setScriptStatus('loaded');\n setLoadedAPIURL(apiURL);\n }\n } catch {\n logger(eventsMap.FAILED);\n if (!unmountedRef.current && !!fallbackAPIURL) {\n try {\n logger(eventsMap.FALLBACK_LOADING as string);\n await loadScript(fallbackAPIURL, fallbackId);\n logger(eventsMap.FALLBACK_LOADING as string);\n if (!unmountedRef.current) {\n setScriptStatus('loaded');\n setLoadedAPIURL(fallbackAPIURL);\n }\n } catch {\n logger(eventsMap.FALLBACK_FAILED as string);\n if (!unmountedRef.current) {\n setScriptStatus('error');\n }\n }\n }\n }\n }, [apiURL, eventsMap, fallbackAPIURL, fallbackId, id, logger, unmountedRef]);\n\n useEffect(() => {\n if (scriptStatus !== 'loaded') {\n downloadScript();\n }\n // Disabling Because we are retruning downloadScript so\n // we don't want to re-run the effect for scriptStatus changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [downloadScript]);\n\n return { scriptStatus, loadedAPIURL, downloadScript };\n};\n\nexport default useDownloadScript;\n"],"names":["useDownloadScript","logger","apiURL","id","eventsMap","fallbackAPIURL","state","scriptStatus","setScriptStatus","useState","loadedAPIURL","setLoadedAPIURL","unmountedRef","useIsUnmounted","fallbackId","downloadScript","useCallback","loadScript","useEffect"],"mappings":";;;AAgBM,MAAAA,IAAoB,CACxBC,GACAC,GACAC,GACAC,GACAC,GACAC,IAAuB,cACpB;AACH,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAwBH,CAAK,GAC/D,CAACI,GAAcC,CAAe,IAAIF,EAAiB,GACnDG,IAAeC,EAAe,GAC9BC,IAAaX,IAAK,aAElBY,IAAiBC,EAAY,YAAY;AAC7C,IAAAR,EAAgB,SAAS;AACrB,QAAA;AACF,MAAAP,EAAOG,EAAU,OAAO,GAClB,MAAAa,EAAWf,GAAQC,CAAE,GAE3BF,EAAOG,EAAU,MAAM,GAClBQ,EAAa,YAChBJ,EAAgB,QAAQ,GACxBG,EAAgBT,CAAM;AAAA,IACxB,QACM;AAEN,UADAD,EAAOG,EAAU,MAAM,GACnB,CAACQ,EAAa,WAAaP;AACzB,YAAA;AACF,UAAAJ,EAAOG,EAAU,gBAA0B,GACrC,MAAAa,EAAWZ,GAAgBS,CAAU,GAC3Cb,EAAOG,EAAU,gBAA0B,GACtCQ,EAAa,YAChBJ,EAAgB,QAAQ,GACxBG,EAAgBN,CAAc;AAAA,QAChC,QACM;AACN,UAAAJ,EAAOG,EAAU,eAAyB,GACrCQ,EAAa,WAChBJ,EAAgB,OAAO;AAAA,QACzB;AAAA,IAEJ;AAAA,EACF,GACC,CAACN,GAAQE,GAAWC,GAAgBS,GAAYX,GAAIF,GAAQW,CAAY,CAAC;AAE5E,SAAAM,EAAU,MAAM;AACd,IAAIX,MAAiB,YACJQ,EAAA;AAAA,EACjB,GAIC,CAACA,CAAc,CAAC,GAEZ,EAAE,cAAAR,GAAc,cAAAG,GAAc,gBAAAK,EAAe;AACtD;"}
1
+ {"version":3,"file":"use-download-script.js","sources":["../../../../src/features/worksheet/learnosity-preloader/use-download-script.ts"],"sourcesContent":["import type { TScriptStatus } from './learnosity-preloader-types';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport useIsUnmounted from '../../hooks/use-is-unmounted';\nimport loadScript from '../../utils/load-script';\n\ninterface IEvents {\n LOADING: string;\n LOADED: string;\n FAILED: string;\n FALLBACK_LOADING?: string;\n FALLBACK_LOADED?: string;\n FALLBACK_FAILED?: string;\n}\n\nconst useDownloadScript = (\n logger: (eventName: string, data?: Record<string, unknown>) => void,\n apiURL: string,\n id: string,\n eventsMap: IEvents,\n fallbackAPIURL?: string,\n state: TScriptStatus = 'loading',\n) => {\n const [scriptStatus, setScriptStatus] = useState<TScriptStatus>(state);\n const [loadedAPIURL, setLoadedAPIURL] = useState<string>();\n const unmountedRef = useIsUnmounted();\n const fallbackId = id + '-fallback';\n\n const downloadScript = useCallback(async () => {\n setScriptStatus('loading');\n try {\n logger(eventsMap.LOADING);\n await loadScript(apiURL, id);\n\n logger(eventsMap.LOADED);\n if (!unmountedRef.current) {\n setScriptStatus('loaded');\n setLoadedAPIURL(apiURL);\n }\n } catch {\n logger(eventsMap.FAILED);\n if (!unmountedRef.current && !!fallbackAPIURL) {\n try {\n logger(eventsMap.FALLBACK_LOADING as string);\n await loadScript(fallbackAPIURL, fallbackId);\n logger(eventsMap.FALLBACK_LOADING as string);\n if (!unmountedRef.current) {\n setScriptStatus('loaded');\n setLoadedAPIURL(fallbackAPIURL);\n }\n } catch {\n logger(eventsMap.FALLBACK_FAILED as string);\n if (!unmountedRef.current) {\n setScriptStatus('error');\n }\n }\n }\n }\n }, [apiURL, eventsMap, fallbackAPIURL, fallbackId, id, logger, unmountedRef]);\n\n useEffect(() => {\n if (scriptStatus !== 'loaded') {\n downloadScript();\n }\n // Disabling Because we are retruning downloadScript so\n // we don't want to re-run the effect for scriptStatus changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [downloadScript]);\n\n return { scriptStatus, loadedAPIURL, downloadScript };\n};\n\nexport default useDownloadScript;\n"],"names":["useDownloadScript","logger","apiURL","id","eventsMap","fallbackAPIURL","state","scriptStatus","setScriptStatus","useState","loadedAPIURL","setLoadedAPIURL","unmountedRef","useIsUnmounted","fallbackId","downloadScript","useCallback","loadScript","useEffect"],"mappings":";;;AAgBM,MAAAA,IAAoB,CACxBC,GACAC,GACAC,GACAC,GACAC,GACAC,IAAuB,cACpB;AACH,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAwBH,CAAK,GAC/D,CAACI,GAAcC,CAAe,IAAIF,EAAiB,GACnDG,IAAeC,KACfC,IAAaX,IAAK,aAElBY,IAAiBC,EAAY,YAAY;AAC7C,IAAAR,EAAgB,SAAS;AACrB,QAAA;AACF,MAAAP,EAAOG,EAAU,OAAO,GAClB,MAAAa,EAAWf,GAAQC,CAAE,GAE3BF,EAAOG,EAAU,MAAM,GAClBQ,EAAa,YAChBJ,EAAgB,QAAQ,GACxBG,EAAgBT,CAAM;AAAA,IACxB,QACM;AAEN,UADAD,EAAOG,EAAU,MAAM,GACnB,CAACQ,EAAa,WAAaP;AACzB,YAAA;AACF,UAAAJ,EAAOG,EAAU,gBAA0B,GACrC,MAAAa,EAAWZ,GAAgBS,CAAU,GAC3Cb,EAAOG,EAAU,gBAA0B,GACtCQ,EAAa,YAChBJ,EAAgB,QAAQ,GACxBG,EAAgBN,CAAc;AAAA,QAChC,QACM;AACN,UAAAJ,EAAOG,EAAU,eAAyB,GACrCQ,EAAa,WAChBJ,EAAgB,OAAO;AAAA,QAE3B;AAAA,IAEJ;AAAA,EAAA,GACC,CAACN,GAAQE,GAAWC,GAAgBS,GAAYX,GAAIF,GAAQW,CAAY,CAAC;AAE5E,SAAAM,EAAU,MAAM;AACd,IAAIX,MAAiB,YACJQ;EACjB,GAIC,CAACA,CAAc,CAAC,GAEZ,EAAE,cAAAR,GAAc,cAAAG,GAAc,gBAAAK;AACvC;"}
@@ -1,7 +1,7 @@
1
1
  import { useContext as t } from "react";
2
2
  import o from "./learnosity-preloader-context.js";
3
- const s = () => t(o);
3
+ const e = () => t(o), a = e;
4
4
  export {
5
- s as default
5
+ a as default
6
6
  };
7
7
  //# sourceMappingURL=use-is-learnosity-loaded.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-learnosity-loaded.js","sources":["../../../../src/features/worksheet/learnosity-preloader/use-is-learnosity-loaded.ts"],"sourcesContent":["import type { IUseIsLearnosityLoaded } from './learnosity-preloader-types';\n\nimport { useContext } from 'react';\n\nimport LearnosityPreloaderContext from './learnosity-preloader-context';\n\nconst useIsLearnosityLoaded: IUseIsLearnosityLoaded = () => {\n const context = useContext(LearnosityPreloaderContext);\n\n return context;\n};\n\nexport default useIsLearnosityLoaded;\n"],"names":["useIsLearnosityLoaded","useContext","LearnosityPreloaderContext"],"mappings":";;AAMA,MAAMA,IAAgD,MACpCC,EAAWC,CAA0B;"}
1
+ {"version":3,"file":"use-is-learnosity-loaded.js","sources":["../../../../src/features/worksheet/learnosity-preloader/use-is-learnosity-loaded.ts"],"sourcesContent":["import type { IUseIsLearnosityLoaded } from './learnosity-preloader-types';\n\nimport { useContext } from 'react';\n\nimport LearnosityPreloaderContext from './learnosity-preloader-context';\n\nconst useIsLearnosityLoaded: IUseIsLearnosityLoaded = () => {\n const context = useContext(LearnosityPreloaderContext);\n\n return context;\n};\n\nexport default useIsLearnosityLoaded;\n"],"names":["useIsLearnosityLoaded","useContext","LearnosityPreloaderContext","useIsLearnosityLoaded$1"],"mappings":";;AAMA,MAAMA,IAAgD,MACpCC,EAAWC,CAA0B,GAKvDC,IAAeH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-user-location.js","sources":["../../../../../src/features/worksheet/user-pointer-pin/hooks/use-user-location.ts"],"sourcesContent":["import type { TUserTypes } from '../../../ui/types';\nimport type { IWorksheetQuestion } from '../../worksheet/worksheet-types';\n\nimport { useAVMessage } from '@cuemath/av';\nimport { useCallback, useMemo, useState } from 'react';\n\ninterface IUseRemoteUserLocationProps {\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n userType?: TUserTypes;\n}\n\ntype TpointerLocation = 'up' | 'down' | undefined;\n\ninterface IUseRemoteUserLocation {\n peerLocation: TpointerLocation;\n peerQuestionIndex: number | undefined;\n peerItemNumber: number | undefined;\n}\n\nconst useRemoteUserLocation = ({\n questions,\n activeQuestionIndex,\n userType,\n}: IUseRemoteUserLocationProps): IUseRemoteUserLocation => {\n const [peerResponseId, setPeerResponseId] = useState<string | undefined>();\n const peerQuestionIndex = useMemo(\n () => questions.findIndex(qs => qs.response_id === peerResponseId),\n [peerResponseId, questions],\n );\n const onPointerReceive = useCallback((_: string, data: Record<string, unknown>) => {\n setPeerResponseId(data.id as string);\n }, []);\n\n useAVMessage<Record<string, unknown>>({\n type: 'STUDENT_MOUSE_POINTER_POSITION_CHANGED',\n onMessage: onPointerReceive,\n });\n\n if (\n userType !== 'TEACHER' ||\n peerQuestionIndex === -1 ||\n activeQuestionIndex === peerQuestionIndex\n ) {\n return {\n peerLocation: undefined,\n peerQuestionIndex: undefined,\n peerItemNumber: undefined,\n };\n }\n\n return {\n peerLocation: peerQuestionIndex > activeQuestionIndex ? 'down' : 'up',\n peerQuestionIndex,\n peerItemNumber: questions[peerQuestionIndex]?.item_number,\n };\n};\n\nexport default useRemoteUserLocation;\n"],"names":["useRemoteUserLocation","questions","activeQuestionIndex","userType","peerResponseId","setPeerResponseId","useState","peerQuestionIndex","useMemo","qs","onPointerReceive","useCallback","_","data","useAVMessage","_a"],"mappings":";;AAoBA,MAAMA,IAAwB,CAAC;AAAA,EAC7B,WAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,UAAAC;AACF,MAA2D;;AACzD,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAA6B,GACnEC,IAAoBC;AAAA,IACxB,MAAMP,EAAU,UAAU,CAAMQ,MAAAA,EAAG,gBAAgBL,CAAc;AAAA,IACjE,CAACA,GAAgBH,CAAS;AAAA,EAC5B,GACMS,IAAmBC,EAAY,CAACC,GAAWC,MAAkC;AACjF,IAAAR,EAAkBQ,EAAK,EAAY;AAAA,EACrC,GAAG,EAAE;AAOL,SALsCC,EAAA;AAAA,IACpC,MAAM;AAAA,IACN,WAAWJ;AAAA,EAAA,CACZ,GAGCP,MAAa,aACbI,MAAsB,MACtBL,MAAwBK,IAEjB;AAAA,IACL,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,EAClB,IAGK;AAAA,IACL,cAAcA,IAAoBL,IAAsB,SAAS;AAAA,IACjE,mBAAAK;AAAA,IACA,iBAAgBQ,IAAAd,EAAUM,CAAiB,MAA3B,gBAAAQ,EAA8B;AAAA,EAChD;AACF;"}
1
+ {"version":3,"file":"use-user-location.js","sources":["../../../../../src/features/worksheet/user-pointer-pin/hooks/use-user-location.ts"],"sourcesContent":["import type { TUserTypes } from '../../../ui/types';\nimport type { IWorksheetQuestion } from '../../worksheet/worksheet-types';\n\nimport { useAVMessage } from '@cuemath/av';\nimport { useCallback, useMemo, useState } from 'react';\n\ninterface IUseRemoteUserLocationProps {\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n userType?: TUserTypes;\n}\n\ntype TpointerLocation = 'up' | 'down' | undefined;\n\ninterface IUseRemoteUserLocation {\n peerLocation: TpointerLocation;\n peerQuestionIndex: number | undefined;\n peerItemNumber: number | undefined;\n}\n\nconst useRemoteUserLocation = ({\n questions,\n activeQuestionIndex,\n userType,\n}: IUseRemoteUserLocationProps): IUseRemoteUserLocation => {\n const [peerResponseId, setPeerResponseId] = useState<string | undefined>();\n const peerQuestionIndex = useMemo(\n () => questions.findIndex(qs => qs.response_id === peerResponseId),\n [peerResponseId, questions],\n );\n const onPointerReceive = useCallback((_: string, data: Record<string, unknown>) => {\n setPeerResponseId(data.id as string);\n }, []);\n\n useAVMessage<Record<string, unknown>>({\n type: 'STUDENT_MOUSE_POINTER_POSITION_CHANGED',\n onMessage: onPointerReceive,\n });\n\n if (\n userType !== 'TEACHER' ||\n peerQuestionIndex === -1 ||\n activeQuestionIndex === peerQuestionIndex\n ) {\n return {\n peerLocation: undefined,\n peerQuestionIndex: undefined,\n peerItemNumber: undefined,\n };\n }\n\n return {\n peerLocation: peerQuestionIndex > activeQuestionIndex ? 'down' : 'up',\n peerQuestionIndex,\n peerItemNumber: questions[peerQuestionIndex]?.item_number,\n };\n};\n\nexport default useRemoteUserLocation;\n"],"names":["useRemoteUserLocation","questions","activeQuestionIndex","userType","peerResponseId","setPeerResponseId","useState","peerQuestionIndex","useMemo","qs","onPointerReceive","useCallback","_","data","useAVMessage","_a"],"mappings":";;AAoBA,MAAMA,IAAwB,CAAC;AAAA,EAC7B,WAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,UAAAC;AACF,MAA2D;;AACzD,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAA6B,GACnEC,IAAoBC;AAAA,IACxB,MAAMP,EAAU,UAAU,CAAMQ,MAAAA,EAAG,gBAAgBL,CAAc;AAAA,IACjE,CAACA,GAAgBH,CAAS;AAAA,EAAA,GAEtBS,IAAmBC,EAAY,CAACC,GAAWC,MAAkC;AACjF,IAAAR,EAAkBQ,EAAK,EAAY;AAAA,EACrC,GAAG,CAAE,CAAA;AAOL,SALsCC,EAAA;AAAA,IACpC,MAAM;AAAA,IACN,WAAWJ;AAAA,EAAA,CACZ,GAGCP,MAAa,aACbI,MAAsB,MACtBL,MAAwBK,IAEjB;AAAA,IACL,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,EAAA,IAIb;AAAA,IACL,cAAcA,IAAoBL,IAAsB,SAAS;AAAA,IACjE,mBAAAK;AAAA,IACA,iBAAgBQ,IAAAd,EAAUM,CAAiB,MAA3B,gBAAAQ,EAA8B;AAAA,EAAA;AAElD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-pin.js","sources":["../../../../src/features/worksheet/user-pointer-pin/user-pin.tsx"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetQuestion } from '../worksheet/worksheet-types';\n\nimport React, { memo, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { scrollToQuestion } from '../worksheet/worksheet-helpers';\nimport useRemoteUserLocation from './hooks/use-user-location';\n\nconst USER_PIN_WIDTH = 32;\nconst USER_PIN_HEIGHT = 36;\n\nconst StyledImage = styled.img<{ $pointer: 'up' | 'down' | undefined }>`\n position: absolute;\n transform: ${({ $pointer }) =>\n $pointer === 'down'\n ? `translate(-${USER_PIN_WIDTH / 2}px, -${USER_PIN_HEIGHT}px)`\n : `translate(-${USER_PIN_WIDTH / 2}px, 0)`};\n`;\n\nconst StickyContainer = styled(FlexView)<{\n $pointer: 'up' | 'down' | undefined;\n $topOffset: number;\n $bottomOffset: number;\n}>(\n ({ $pointer, $topOffset, $bottomOffset }) => `\n position: sticky;\n top: ${\n $pointer === 'down' ? `calc(100% - ${$bottomOffset}px)` : `calc(${$topOffset + 48 + 8}px)`\n };\n z-index: 1;\n`,\n);\n\ninterface IUserPointerProps {\n activeQuestionIndex: number;\n onClick: (questionId: string) => void;\n questions: IWorksheetQuestion[];\n bottomOffset: number;\n topOffset: number;\n userType: TUserTypes;\n}\n\nconst UserPointer: React.FC<IUserPointerProps> = memo(props => {\n const { activeQuestionIndex, questions, bottomOffset, topOffset, userType } = props;\n const { peerLocation, peerQuestionIndex } = useRemoteUserLocation({\n questions,\n activeQuestionIndex,\n userType,\n });\n\n const handleClick = useCallback(() => {\n if (peerQuestionIndex === undefined) {\n return null;\n }\n\n if (questions[peerQuestionIndex]?.response_id) {\n const qrId = questions[peerQuestionIndex]?.response_id as string;\n\n scrollToQuestion(qrId);\n }\n }, [peerQuestionIndex, questions]);\n\n if (!peerLocation || userType !== 'TEACHER') {\n return null;\n }\n\n return (\n <StickyContainer\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $pointer={peerLocation}\n $bottomOffset={bottomOffset}\n $topOffset={topOffset}\n >\n <Clickable label=\"User Location Pointer\" onClick={handleClick}>\n <StyledImage\n $pointer={peerLocation}\n width={USER_PIN_WIDTH}\n height={USER_PIN_HEIGHT}\n src={peerLocation === 'up' ? ILLUSTRATIONS.USER_UP : ILLUSTRATIONS.USER_DOWN}\n />\n </Clickable>\n </StickyContainer>\n );\n});\n\nexport default UserPointer;\n"],"names":["USER_PIN_WIDTH","USER_PIN_HEIGHT","StyledImage","styled","$pointer","StickyContainer","FlexView","$topOffset","$bottomOffset","UserPointer","memo","props","activeQuestionIndex","questions","bottomOffset","topOffset","userType","peerLocation","peerQuestionIndex","useRemoteUserLocation","handleClick","useCallback","_a","qrId","_b","scrollToQuestion","jsx","Clickable","ILLUSTRATIONS"],"mappings":";;;;;;;;AAYA,MAAMA,IAAiB,IACjBC,IAAkB,IAElBC,IAAcC,EAAO;AAAA;AAAA,eAEZ,CAAC,EAAE,UAAAC,QACdA,MAAa,SACT,cAAcJ,IAAiB,CAAC,QAAQC,CAAe,QACvD,cAAcD,IAAiB,CAAC,QAAQ;AAAA,GAG1CK,IAAkBF,EAAOG,CAAQ;AAAA,EAKrC,CAAC,EAAE,UAAAF,GAAU,YAAAG,GAAY,eAAAC,QAAoB;AAAA;AAAA,SAG3CJ,MAAa,SAAS,eAAeI,CAAa,QAAQ,QAAQD,IAAa,KAAK,CAAC,KACvF;AAAA;AAAA;AAGF,GAWME,IAA2CC,EAAK,CAASC,MAAA;AAC7D,QAAM,EAAE,qBAAAC,GAAqB,WAAAC,GAAW,cAAAC,GAAc,WAAAC,GAAW,UAAAC,MAAaL,GACxE,EAAE,cAAAM,GAAc,mBAAAC,EAAkB,IAAIC,EAAsB;AAAA,IAChE,WAAAN;AAAA,IACA,qBAAAD;AAAA,IACA,UAAAI;AAAA,EAAA,CACD,GAEKI,IAAcC,EAAY,MAAM;;AACpC,QAAIH,MAAsB;AACjB,aAAA;AAGL,SAAAI,IAAAT,EAAUK,CAAiB,MAA3B,QAAAI,EAA8B,aAAa;AACvC,YAAAC,KAAOC,IAAAX,EAAUK,CAAiB,MAA3B,gBAAAM,EAA8B;AAE3C,MAAAC,EAAiBF,CAAI;AAAA,IAAA;AAAA,EACvB,GACC,CAACL,GAAmBL,CAAS,CAAC;AAE7B,SAAA,CAACI,KAAgBD,MAAa,YACzB,OAIP,gBAAAU;AAAA,IAACrB;AAAA,IAAA;AAAA,MACC,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,UAAUY;AAAA,MACV,eAAeH;AAAA,MACf,YAAYC;AAAA,MAEZ,UAAC,gBAAAW,EAAAC,GAAA,EAAU,OAAM,yBAAwB,SAASP,GAChD,UAAA,gBAAAM;AAAA,QAACxB;AAAA,QAAA;AAAA,UACC,UAAUe;AAAA,UACV,OAAOjB;AAAA,UACP,QAAQC;AAAA,UACR,KAAKgB,MAAiB,OAAOW,EAAc,UAAUA,EAAc;AAAA,QAAA;AAAA,MAAA,EAEvE,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ,CAAC;"}
1
+ {"version":3,"file":"user-pin.js","sources":["../../../../src/features/worksheet/user-pointer-pin/user-pin.tsx"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetQuestion } from '../worksheet/worksheet-types';\n\nimport React, { memo, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { scrollToQuestion } from '../worksheet/worksheet-helpers';\nimport useRemoteUserLocation from './hooks/use-user-location';\n\nconst USER_PIN_WIDTH = 32;\nconst USER_PIN_HEIGHT = 36;\n\nconst StyledImage = styled.img<{ $pointer: 'up' | 'down' | undefined }>`\n position: absolute;\n transform: ${({ $pointer }) =>\n $pointer === 'down'\n ? `translate(-${USER_PIN_WIDTH / 2}px, -${USER_PIN_HEIGHT}px)`\n : `translate(-${USER_PIN_WIDTH / 2}px, 0)`};\n`;\n\nconst StickyContainer = styled(FlexView)<{\n $pointer: 'up' | 'down' | undefined;\n $topOffset: number;\n $bottomOffset: number;\n}>(\n ({ $pointer, $topOffset, $bottomOffset }) => `\n position: sticky;\n top: ${\n $pointer === 'down' ? `calc(100% - ${$bottomOffset}px)` : `calc(${$topOffset + 48 + 8}px)`\n };\n z-index: 1;\n`,\n);\n\ninterface IUserPointerProps {\n activeQuestionIndex: number;\n onClick: (questionId: string) => void;\n questions: IWorksheetQuestion[];\n bottomOffset: number;\n topOffset: number;\n userType: TUserTypes;\n}\n\nconst UserPointer: React.FC<IUserPointerProps> = memo(props => {\n const { activeQuestionIndex, questions, bottomOffset, topOffset, userType } = props;\n const { peerLocation, peerQuestionIndex } = useRemoteUserLocation({\n questions,\n activeQuestionIndex,\n userType,\n });\n\n const handleClick = useCallback(() => {\n if (peerQuestionIndex === undefined) {\n return null;\n }\n\n if (questions[peerQuestionIndex]?.response_id) {\n const qrId = questions[peerQuestionIndex]?.response_id as string;\n\n scrollToQuestion(qrId);\n }\n }, [peerQuestionIndex, questions]);\n\n if (!peerLocation || userType !== 'TEACHER') {\n return null;\n }\n\n return (\n <StickyContainer\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $pointer={peerLocation}\n $bottomOffset={bottomOffset}\n $topOffset={topOffset}\n >\n <Clickable label=\"User Location Pointer\" onClick={handleClick}>\n <StyledImage\n $pointer={peerLocation}\n width={USER_PIN_WIDTH}\n height={USER_PIN_HEIGHT}\n src={peerLocation === 'up' ? ILLUSTRATIONS.USER_UP : ILLUSTRATIONS.USER_DOWN}\n />\n </Clickable>\n </StickyContainer>\n );\n});\n\nexport default UserPointer;\n"],"names":["USER_PIN_WIDTH","USER_PIN_HEIGHT","StyledImage","styled","$pointer","StickyContainer","FlexView","$topOffset","$bottomOffset","UserPointer","memo","props","activeQuestionIndex","questions","bottomOffset","topOffset","userType","peerLocation","peerQuestionIndex","useRemoteUserLocation","handleClick","useCallback","_a","qrId","_b","scrollToQuestion","jsx","Clickable","ILLUSTRATIONS"],"mappings":";;;;;;;;AAYA,MAAMA,IAAiB,IACjBC,IAAkB,IAElBC,IAAcC,EAAO;AAAA;AAAA,eAEZ,CAAC,EAAE,UAAAC,QACdA,MAAa,SACT,cAAcJ,IAAiB,CAAC,QAAQC,CAAe,QACvD,cAAcD,IAAiB,CAAC,QAAQ;AAAA,GAG1CK,IAAkBF,EAAOG,CAAQ;AAAA,EAKrC,CAAC,EAAE,UAAAF,GAAU,YAAAG,GAAY,eAAAC,EAAoB,MAAA;AAAA;AAAA,SAG3CJ,MAAa,SAAS,eAAeI,CAAa,QAAQ,QAAQD,IAAa,KAAK,CAAC,KACvF;AAAA;AAAA;AAGF,GAWME,IAA2CC,EAAK,CAASC,MAAA;AAC7D,QAAM,EAAE,qBAAAC,GAAqB,WAAAC,GAAW,cAAAC,GAAc,WAAAC,GAAW,UAAAC,EAAa,IAAAL,GACxE,EAAE,cAAAM,GAAc,mBAAAC,EAAkB,IAAIC,EAAsB;AAAA,IAChE,WAAAN;AAAA,IACA,qBAAAD;AAAA,IACA,UAAAI;AAAA,EAAA,CACD,GAEKI,IAAcC,EAAY,MAAM;;AACpC,QAAIH,MAAsB;AACjB,aAAA;AAGL,SAAAI,IAAAT,EAAUK,CAAiB,MAA3B,QAAAI,EAA8B,aAAa;AACvC,YAAAC,KAAOC,IAAAX,EAAUK,CAAiB,MAA3B,gBAAAM,EAA8B;AAE3C,MAAAC,EAAiBF,CAAI;AAAA,IACvB;AAAA,EAAA,GACC,CAACL,GAAmBL,CAAS,CAAC;AAE7B,SAAA,CAACI,KAAgBD,MAAa,YACzB,OAIP,gBAAAU;AAAA,IAACrB;AAAA,IAAA;AAAA,MACC,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,UAAUY;AAAA,MACV,eAAeH;AAAA,MACf,YAAYC;AAAA,MAEZ,UAAC,gBAAAW,EAAAC,GAAA,EAAU,OAAM,yBAAwB,SAASP,GAChD,UAAA,gBAAAM;AAAA,QAACxB;AAAA,QAAA;AAAA,UACC,UAAUe;AAAA,UACV,OAAOjB;AAAA,UACP,QAAQC;AAAA,UACR,KAAKgB,MAAiB,OAAOW,EAAc,UAAUA,EAAc;AAAA,QAAA;AAAA,MAAA,GAEvE;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/features/worksheet/worksheet/constants.ts"],"sourcesContent":["import type { QUESTIONS_RATING, TItemType } from './worksheet-types';\n\nexport const QUESTION_WIDTH = 792;\nexport const SPLIT_QUESTION_WIDTH = 1008; // 1024 - 16\nexport const INTERSECTION_OBSERVER_THRESHOLD_POINTS = 30;\nexport const INTERSECTION_OBSERVER_THROTTLE_TIME = 32; // in ms, 2 frames\nexport const WORKSHEET_NUDGE_BANNER_HEIGHT = 28;\n\nexport const TOP_NAVIGATION_HEIGHT = 48;\nexport const TOP_NAVIGATION_ARROW_WIDTH = 42;\n\nexport const QUESTIONS_GAP = 16;\nexport const ACTION_BAR_HEIGHT = 56;\nexport const WORKSHEET_CONTAINER_BORDER_RADIUS = 0;\nexport const LEARNOSITY_KEYBOARD_HEIGHT = 360;\nexport const SIDEBAR_WIDTH = 52;\n\nexport const DESMOS_CALC_POSITION = { left: 0, top: 56 };\n\nexport const OPTIONAL_ITEM_TYPES: TItemType[] = [\n 'practice-basic-optional',\n 'practice-regular-optional',\n 'advanced-we-do',\n 'advanced-your-turn',\n 'advanced-explore',\n 'advanced-practice',\n];\n\nexport const SYSTEM_VALIDATION_AUDIO_LIST = [\n { name: 'CORRECT', url: 'https://static.qumath.in/static/intel-student/cmpress/correct-zap.mp3' },\n {\n name: 'INCORRECT',\n url: 'https://static.qumath.in/static/intel-student/cmpress/incorrect-zap.mp3',\n },\n];\nexport const TEACHER_VALIDATION_AUDIO_LIST = [\n {\n name: 'VALIDATE',\n url: 'https://wmznlejcfq.s3.ap-southeast-1.amazonaws.com/static/intel-student/cmpress/validate-zap.mp3',\n },\n];\n\nexport const EXIT_TICKET_RATING_OPTIONS: Array<{\n label: string;\n id: keyof typeof QUESTIONS_RATING;\n}> = [\n {\n label: 'Answered all the questions independently.',\n id: 'E',\n },\n {\n label: 'Needed some help to answer the questions.',\n id: 'S',\n },\n {\n label: 'Needed a lot of help to answer the questions.',\n id: 'H',\n },\n];\n"],"names":["QUESTION_WIDTH","SPLIT_QUESTION_WIDTH","INTERSECTION_OBSERVER_THRESHOLD_POINTS","INTERSECTION_OBSERVER_THROTTLE_TIME","WORKSHEET_NUDGE_BANNER_HEIGHT","TOP_NAVIGATION_HEIGHT","TOP_NAVIGATION_ARROW_WIDTH","QUESTIONS_GAP","ACTION_BAR_HEIGHT","WORKSHEET_CONTAINER_BORDER_RADIUS","LEARNOSITY_KEYBOARD_HEIGHT","SIDEBAR_WIDTH","DESMOS_CALC_POSITION","OPTIONAL_ITEM_TYPES","SYSTEM_VALIDATION_AUDIO_LIST","TEACHER_VALIDATION_AUDIO_LIST","EXIT_TICKET_RATING_OPTIONS"],"mappings":"AAEO,MAAMA,IAAiB,KACjBC,IAAuB,MACvBC,IAAyC,IACzCC,IAAsC,IACtCC,IAAgC,IAEhCC,IAAwB,IACxBC,IAA6B,IAE7BC,IAAgB,IAChBC,IAAoB,IACpBC,IAAoC,GACpCC,IAA6B,KAC7BC,IAAgB,IAEhBC,IAAuB,EAAE,MAAM,GAAG,KAAK,GAAG,GAE1CC,IAAmC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,IAA+B;AAAA,EAC1C,EAAE,MAAM,WAAW,KAAK,wEAAwE;AAAA,EAChG;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAET,GACaC,IAAgC;AAAA,EAC3C;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAET,GAEaC,IAGR;AAAA,EACH;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/features/worksheet/worksheet/constants.ts"],"sourcesContent":["import type { QUESTIONS_RATING, TItemType } from './worksheet-types';\n\nexport const QUESTION_WIDTH = 792;\nexport const SPLIT_QUESTION_WIDTH = 1008; // 1024 - 16\nexport const INTERSECTION_OBSERVER_THRESHOLD_POINTS = 30;\nexport const INTERSECTION_OBSERVER_THROTTLE_TIME = 32; // in ms, 2 frames\nexport const WORKSHEET_NUDGE_BANNER_HEIGHT = 28;\n\nexport const TOP_NAVIGATION_HEIGHT = 48;\nexport const TOP_NAVIGATION_ARROW_WIDTH = 42;\n\nexport const QUESTIONS_GAP = 16;\nexport const ACTION_BAR_HEIGHT = 56;\nexport const WORKSHEET_CONTAINER_BORDER_RADIUS = 0;\nexport const LEARNOSITY_KEYBOARD_HEIGHT = 360;\nexport const SIDEBAR_WIDTH = 52;\n\nexport const DESMOS_CALC_POSITION = { left: 0, top: 56 };\n\nexport const OPTIONAL_ITEM_TYPES: TItemType[] = [\n 'practice-basic-optional',\n 'practice-regular-optional',\n 'advanced-we-do',\n 'advanced-your-turn',\n 'advanced-explore',\n 'advanced-practice',\n];\n\nexport const SYSTEM_VALIDATION_AUDIO_LIST = [\n { name: 'CORRECT', url: 'https://static.qumath.in/static/intel-student/cmpress/correct-zap.mp3' },\n {\n name: 'INCORRECT',\n url: 'https://static.qumath.in/static/intel-student/cmpress/incorrect-zap.mp3',\n },\n];\nexport const TEACHER_VALIDATION_AUDIO_LIST = [\n {\n name: 'VALIDATE',\n url: 'https://wmznlejcfq.s3.ap-southeast-1.amazonaws.com/static/intel-student/cmpress/validate-zap.mp3',\n },\n];\n\nexport const EXIT_TICKET_RATING_OPTIONS: Array<{\n label: string;\n id: keyof typeof QUESTIONS_RATING;\n}> = [\n {\n label: 'Answered all the questions independently.',\n id: 'E',\n },\n {\n label: 'Needed some help to answer the questions.',\n id: 'S',\n },\n {\n label: 'Needed a lot of help to answer the questions.',\n id: 'H',\n },\n];\n"],"names":["QUESTION_WIDTH","SPLIT_QUESTION_WIDTH","INTERSECTION_OBSERVER_THRESHOLD_POINTS","INTERSECTION_OBSERVER_THROTTLE_TIME","WORKSHEET_NUDGE_BANNER_HEIGHT","TOP_NAVIGATION_HEIGHT","TOP_NAVIGATION_ARROW_WIDTH","QUESTIONS_GAP","ACTION_BAR_HEIGHT","WORKSHEET_CONTAINER_BORDER_RADIUS","LEARNOSITY_KEYBOARD_HEIGHT","SIDEBAR_WIDTH","DESMOS_CALC_POSITION","OPTIONAL_ITEM_TYPES","SYSTEM_VALIDATION_AUDIO_LIST","TEACHER_VALIDATION_AUDIO_LIST","EXIT_TICKET_RATING_OPTIONS"],"mappings":"AAEO,MAAMA,IAAiB,KACjBC,IAAuB,MACvBC,IAAyC,IACzCC,IAAsC,IACtCC,IAAgC,IAEhCC,IAAwB,IACxBC,IAA6B,IAE7BC,IAAgB,IAChBC,IAAoB,IACpBC,IAAoC,GACpCC,IAA6B,KAC7BC,IAAgB,IAEhBC,IAAuB,EAAE,MAAM,GAAG,KAAK,GAAG,GAE1CC,IAAmC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,IAA+B;AAAA,EAC1C,EAAE,MAAM,WAAW,KAAK,wEAAwE;AAAA,EAChG;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,EACP;AACF,GACaC,IAAgC;AAAA,EAC3C;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,EACP;AACF,GAEaC,IAGR;AAAA,EACH;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,IAAI;AAAA,EACN;AACF;"}
@@ -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 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 +1 @@
1
- {"version":3,"file":"use-get-active-question-id.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-get-active-question-id.ts"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n ACTION_BAR_HEIGHT,\n INTERSECTION_OBSERVER_THRESHOLD_POINTS,\n INTERSECTION_OBSERVER_THROTTLE_TIME,\n TOP_NAVIGATION_HEIGHT,\n} from '../constants';\n\ninterface IUseGetActiveQuestionId {\n (initialQuestionId: string): {\n activeQuestionId?: string;\n setActiveQuestionId: (activeQuestionId: string) => void;\n intersectionObserver: IntersectionObserver;\n };\n}\n\nconst getThresholds = () => {\n const thresholds = [];\n\n for (let i = 0; i <= INTERSECTION_OBSERVER_THRESHOLD_POINTS; i++) {\n thresholds.push(i / INTERSECTION_OBSERVER_THRESHOLD_POINTS);\n }\n\n return thresholds;\n};\n\nconst thresholds = getThresholds();\n\n/**\n * Returns the question's response id which is currently in view with the highest intersection ratio\n * @returns activeQuestionId\n */\nconst useGetActiveQuestionId: IUseGetActiveQuestionId = initialQuestionId => {\n const [activeQuestionId, setActiveQuestionId] = useState<string>(initialQuestionId);\n const throttledSetActiveQuestionId = useMemo(\n () =>\n debounce(setActiveQuestionId, INTERSECTION_OBSERVER_THROTTLE_TIME, {\n trailing: true,\n }),\n [],\n );\n const activeQuestionRef = useRef<{\n questionEl: Element;\n intersectionRatio: number;\n }>();\n const intersectionObserver = useMemo(\n () =>\n new IntersectionObserver(\n entries => {\n const maxHeight = entries.reduce((acc, { isIntersecting, target }) => {\n return Math.max(acc, isIntersecting ? target.clientHeight : acc);\n }, 0);\n const [questionEl, questionIntersectionRatio, questionNormalisedRatio] = entries.reduce(\n (acc, { isIntersecting, target, intersectionRatio }) => {\n if (\n target.getAttribute('data-response-id') ===\n activeQuestionRef.current?.questionEl.getAttribute('data-response-id')\n ) {\n activeQuestionRef.current = undefined;\n }\n\n if (isIntersecting) {\n const normalisedRatio = (target.clientHeight / maxHeight) * intersectionRatio;\n\n if (normalisedRatio >= acc[2]) {\n return [target, intersectionRatio, normalisedRatio];\n }\n }\n\n return acc;\n },\n [null, 0, 0] as [Element | null, number, number],\n );\n\n if (questionEl) {\n if (!activeQuestionRef.current) {\n activeQuestionRef.current = {\n questionEl,\n intersectionRatio: questionIntersectionRatio,\n };\n throttledSetActiveQuestionId(questionEl.getAttribute('data-response-id') ?? '');\n } else {\n const nRatio =\n (activeQuestionRef.current.questionEl.clientHeight / maxHeight) *\n activeQuestionRef.current.intersectionRatio;\n\n if (questionNormalisedRatio >= nRatio) {\n activeQuestionRef.current = {\n questionEl,\n intersectionRatio: questionIntersectionRatio,\n };\n throttledSetActiveQuestionId(questionEl.getAttribute('data-response-id') ?? '');\n }\n }\n }\n },\n {\n rootMargin: `-${TOP_NAVIGATION_HEIGHT}px 0px -${ACTION_BAR_HEIGHT}px 0px`,\n threshold: thresholds,\n },\n ),\n [throttledSetActiveQuestionId],\n );\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n return {\n intersectionObserver,\n activeQuestionId,\n setActiveQuestionId,\n };\n};\n\nexport default useGetActiveQuestionId;\n"],"names":["getThresholds","thresholds","i","INTERSECTION_OBSERVER_THRESHOLD_POINTS","useGetActiveQuestionId","initialQuestionId","activeQuestionId","setActiveQuestionId","useState","throttledSetActiveQuestionId","useMemo","debounce","INTERSECTION_OBSERVER_THROTTLE_TIME","activeQuestionRef","useRef","intersectionObserver","entries","maxHeight","acc","isIntersecting","target","questionEl","questionIntersectionRatio","questionNormalisedRatio","intersectionRatio","_a","normalisedRatio","nRatio","TOP_NAVIGATION_HEIGHT","ACTION_BAR_HEIGHT","useEffect"],"mappings":";;;AAkBA,MAAMA,IAAgB,MAAM;AAC1B,QAAMC,IAAa,CAAC;AAEpB,WAASC,IAAI,GAAGA,KAAKC,GAAwCD;AAC3DD,IAAAA,EAAW,KAAKC,IAAIC,CAAsC;AAGrDF,SAAAA;AACT,GAEMA,IAAaD,EAAc,GAM3BI,IAAkD,CAAqBC,MAAA;AAC3E,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAiBH,CAAiB,GAC5EI,IAA+BC;AAAA,IACnC,MACEC,EAASJ,GAAqBK,GAAqC;AAAA,MACjE,UAAU;AAAA,IAAA,CACX;AAAA,IACH,CAAA;AAAA,EACF,GACMC,IAAoBC,EAGvB,GACGC,IAAuBL;AAAA,IAC3B,MACE,IAAI;AAAA,MACF,CAAWM,MAAA;AACH,cAAAC,IAAYD,EAAQ,OAAO,CAACE,GAAK,EAAE,gBAAAC,GAAgB,QAAAC,QAChD,KAAK,IAAIF,GAAKC,IAAiBC,EAAO,eAAeF,CAAG,GAC9D,CAAC,GACE,CAACG,GAAYC,GAA2BC,CAAuB,IAAIP,EAAQ;AAAA,UAC/E,CAACE,GAAK,EAAE,gBAAAC,GAAgB,QAAAC,GAAQ,mBAAAI,QAAwB;;AAQtD,gBANEJ,EAAO,aAAa,kBAAkB,QACtCK,IAAAZ,EAAkB,YAAlB,gBAAAY,EAA2B,WAAW,aAAa,yBAEnDZ,EAAkB,UAAU,SAG1BM,GAAgB;AACZ,oBAAAO,IAAmBN,EAAO,eAAeH,IAAaO;AAExD,kBAAAE,KAAmBR,EAAI,CAAC;AACnB,uBAAA,CAACE,GAAQI,GAAmBE,CAAe;AAAA,YACpD;AAGK,mBAAAR;AAAA,UACT;AAAA,UACA,CAAC,MAAM,GAAG,CAAC;AAAA,QACb;AAEA,YAAIG;AACE,cAAA,CAACR,EAAkB;AACrB,YAAAA,EAAkB,UAAU;AAAA,cAC1B,YAAAQ;AAAA,cACA,mBAAmBC;AAAA,YACrB,GACAb,EAA6BY,EAAW,aAAa,kBAAkB,KAAK,EAAE;AAAA,eACzE;AACL,kBAAMM,IACHd,EAAkB,QAAQ,WAAW,eAAeI,IACrDJ,EAAkB,QAAQ;AAE5B,YAAIU,KAA2BI,MAC7Bd,EAAkB,UAAU;AAAA,cAC1B,YAAAQ;AAAA,cACA,mBAAmBC;AAAA,YACrB,GACAb,EAA6BY,EAAW,aAAa,kBAAkB,KAAK,EAAE;AAAA,UAChF;AAAA,MAGN;AAAA,MACA;AAAA,QACE,YAAY,IAAIO,CAAqB,WAAWC,CAAiB;AAAA,QACjE,WAAW5B;AAAA,MAAA;AAAA,IAEf;AAAA,IACF,CAACQ,CAA4B;AAAA,EAC/B;AAEA,SAAAqB,EAAU,MACD,MAAM;AACX,IAAAf,EAAqB,WAAW;AAAA,EAClC,GACC,CAACA,CAAoB,CAAC,GAElB;AAAA,IACL,sBAAAA;AAAA,IACA,kBAAAT;AAAA,IACA,qBAAAC;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"use-get-active-question-id.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-get-active-question-id.ts"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n ACTION_BAR_HEIGHT,\n INTERSECTION_OBSERVER_THRESHOLD_POINTS,\n INTERSECTION_OBSERVER_THROTTLE_TIME,\n TOP_NAVIGATION_HEIGHT,\n} from '../constants';\n\ninterface IUseGetActiveQuestionId {\n (initialQuestionId: string): {\n activeQuestionId?: string;\n setActiveQuestionId: (activeQuestionId: string) => void;\n intersectionObserver: IntersectionObserver;\n };\n}\n\nconst getThresholds = () => {\n const thresholds = [];\n\n for (let i = 0; i <= INTERSECTION_OBSERVER_THRESHOLD_POINTS; i++) {\n thresholds.push(i / INTERSECTION_OBSERVER_THRESHOLD_POINTS);\n }\n\n return thresholds;\n};\n\nconst thresholds = getThresholds();\n\n/**\n * Returns the question's response id which is currently in view with the highest intersection ratio\n * @returns activeQuestionId\n */\nconst useGetActiveQuestionId: IUseGetActiveQuestionId = initialQuestionId => {\n const [activeQuestionId, setActiveQuestionId] = useState<string>(initialQuestionId);\n const throttledSetActiveQuestionId = useMemo(\n () =>\n debounce(setActiveQuestionId, INTERSECTION_OBSERVER_THROTTLE_TIME, {\n trailing: true,\n }),\n [],\n );\n const activeQuestionRef = useRef<{\n questionEl: Element;\n intersectionRatio: number;\n }>();\n const intersectionObserver = useMemo(\n () =>\n new IntersectionObserver(\n entries => {\n const maxHeight = entries.reduce((acc, { isIntersecting, target }) => {\n return Math.max(acc, isIntersecting ? target.clientHeight : acc);\n }, 0);\n const [questionEl, questionIntersectionRatio, questionNormalisedRatio] = entries.reduce(\n (acc, { isIntersecting, target, intersectionRatio }) => {\n if (\n target.getAttribute('data-response-id') ===\n activeQuestionRef.current?.questionEl.getAttribute('data-response-id')\n ) {\n activeQuestionRef.current = undefined;\n }\n\n if (isIntersecting) {\n const normalisedRatio = (target.clientHeight / maxHeight) * intersectionRatio;\n\n if (normalisedRatio >= acc[2]) {\n return [target, intersectionRatio, normalisedRatio];\n }\n }\n\n return acc;\n },\n [null, 0, 0] as [Element | null, number, number],\n );\n\n if (questionEl) {\n if (!activeQuestionRef.current) {\n activeQuestionRef.current = {\n questionEl,\n intersectionRatio: questionIntersectionRatio,\n };\n throttledSetActiveQuestionId(questionEl.getAttribute('data-response-id') ?? '');\n } else {\n const nRatio =\n (activeQuestionRef.current.questionEl.clientHeight / maxHeight) *\n activeQuestionRef.current.intersectionRatio;\n\n if (questionNormalisedRatio >= nRatio) {\n activeQuestionRef.current = {\n questionEl,\n intersectionRatio: questionIntersectionRatio,\n };\n throttledSetActiveQuestionId(questionEl.getAttribute('data-response-id') ?? '');\n }\n }\n }\n },\n {\n rootMargin: `-${TOP_NAVIGATION_HEIGHT}px 0px -${ACTION_BAR_HEIGHT}px 0px`,\n threshold: thresholds,\n },\n ),\n [throttledSetActiveQuestionId],\n );\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n return {\n intersectionObserver,\n activeQuestionId,\n setActiveQuestionId,\n };\n};\n\nexport default useGetActiveQuestionId;\n"],"names":["getThresholds","thresholds","i","INTERSECTION_OBSERVER_THRESHOLD_POINTS","useGetActiveQuestionId","initialQuestionId","activeQuestionId","setActiveQuestionId","useState","throttledSetActiveQuestionId","useMemo","debounce","INTERSECTION_OBSERVER_THROTTLE_TIME","activeQuestionRef","useRef","intersectionObserver","entries","maxHeight","acc","isIntersecting","target","questionEl","questionIntersectionRatio","questionNormalisedRatio","intersectionRatio","_a","normalisedRatio","nRatio","TOP_NAVIGATION_HEIGHT","ACTION_BAR_HEIGHT","useEffect"],"mappings":";;;AAkBA,MAAMA,IAAgB,MAAM;AAC1B,QAAMC,IAAa,CAAA;AAEnB,WAASC,IAAI,GAAGA,KAAKC,GAAwCD;AAC3DD,IAAAA,EAAW,KAAKC,IAAIC,CAAsC;AAGrDF,SAAAA;AACT,GAEMA,IAAaD,EAAc,GAM3BI,IAAkD,CAAqBC,MAAA;AAC3E,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAiBH,CAAiB,GAC5EI,IAA+BC;AAAA,IACnC,MACEC,EAASJ,GAAqBK,GAAqC;AAAA,MACjE,UAAU;AAAA,IAAA,CACX;AAAA,IACH,CAAC;AAAA,EAAA,GAEGC,IAAoBC,KAIpBC,IAAuBL;AAAA,IAC3B,MACE,IAAI;AAAA,MACF,CAAWM,MAAA;AACH,cAAAC,IAAYD,EAAQ,OAAO,CAACE,GAAK,EAAE,gBAAAC,GAAgB,QAAAC,QAChD,KAAK,IAAIF,GAAKC,IAAiBC,EAAO,eAAeF,CAAG,GAC9D,CAAC,GACE,CAACG,GAAYC,GAA2BC,CAAuB,IAAIP,EAAQ;AAAA,UAC/E,CAACE,GAAK,EAAE,gBAAAC,GAAgB,QAAAC,GAAQ,mBAAAI,QAAwB;;AAQtD,gBANEJ,EAAO,aAAa,kBAAkB,QACtCK,IAAAZ,EAAkB,YAAlB,gBAAAY,EAA2B,WAAW,aAAa,yBAEnDZ,EAAkB,UAAU,SAG1BM,GAAgB;AACZ,oBAAAO,IAAmBN,EAAO,eAAeH,IAAaO;AAExD,kBAAAE,KAAmBR,EAAI,CAAC;AACnB,uBAAA,CAACE,GAAQI,GAAmBE,CAAe;AAAA,YAEtD;AAEO,mBAAAR;AAAA,UACT;AAAA,UACA,CAAC,MAAM,GAAG,CAAC;AAAA,QAAA;AAGb,YAAIG;AACE,cAAA,CAACR,EAAkB;AACrB,YAAAA,EAAkB,UAAU;AAAA,cAC1B,YAAAQ;AAAA,cACA,mBAAmBC;AAAA,YAAA,GAErBb,EAA6BY,EAAW,aAAa,kBAAkB,KAAK,EAAE;AAAA,eACzE;AACL,kBAAMM,IACHd,EAAkB,QAAQ,WAAW,eAAeI,IACrDJ,EAAkB,QAAQ;AAE5B,YAAIU,KAA2BI,MAC7Bd,EAAkB,UAAU;AAAA,cAC1B,YAAAQ;AAAA,cACA,mBAAmBC;AAAA,YAAA,GAErBb,EAA6BY,EAAW,aAAa,kBAAkB,KAAK,EAAE;AAAA,UAElF;AAAA,MAEJ;AAAA,MACA;AAAA,QACE,YAAY,IAAIO,CAAqB,WAAWC,CAAiB;AAAA,QACjE,WAAW5B;AAAA,MACb;AAAA,IACF;AAAA,IACF,CAACQ,CAA4B;AAAA,EAAA;AAG/B,SAAAqB,EAAU,MACD,MAAM;AACX,IAAAf,EAAqB,WAAW;AAAA,EAAA,GAEjC,CAACA,CAAoB,CAAC,GAElB;AAAA,IACL,sBAAAA;AAAA,IACA,kBAAAT;AAAA,IACA,qBAAAC;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-learnosity-append.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity-append.ts"],"sourcesContent":["import type {\n ILearnosityError,\n ILearnosityQuestionResponse,\n IWorksheetQuestion,\n} from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useCallback } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\n\ninterface IForceAppend {\n (options: {\n question: IWorksheetQuestion;\n response: ILearnosityQuestionResponse;\n callback: (error?: ILearnosityError) => void;\n }): void;\n}\n\ninterface IUseLearnosityAppend {\n (\n signedRequest: string,\n loggerRef?: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): { forceAppend: IForceAppend };\n}\n\nconst useLearnosityAppend: IUseLearnosityAppend = signedRequest => {\n const unmountedRef = useIsUnmounted();\n const forceAppend = useCallback<IForceAppend>(\n ({ question, response, callback }) => {\n const parsedRequest = JSON.parse(signedRequest);\n let readyListenerFiredOnce = false;\n\n parsedRequest.type = 'local_practice';\n\n const learnosity = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (unmountedRef.current) return;\n\n if (!readyListenerFiredOnce) {\n learnosity.append({\n questions: [question],\n responses: {\n [question.response_id]: {\n ...response,\n },\n },\n });\n } else {\n const q = learnosity.question(question.response_id);\n\n if (q) {\n q.disable();\n q.validate({\n showCorrectAnswers: true,\n });\n }\n\n learnosity.renderMath('mathjax');\n\n callback();\n }\n\n readyListenerFiredOnce = true;\n },\n errorListener: (error: ILearnosityError) => {\n if (unmountedRef.current) return;\n\n callback(error as ILearnosityError);\n },\n });\n },\n [signedRequest, unmountedRef],\n );\n\n return { forceAppend };\n};\n\nexport default useLearnosityAppend;\n"],"names":["useLearnosityAppend","signedRequest","unmountedRef","useIsUnmounted","useCallback","question","response","callback","parsedRequest","readyListenerFiredOnce","learnosity","q","error"],"mappings":";;AA0BA,MAAMA,IAA4C,CAAiBC,MAAA;AACjE,QAAMC,IAAeC,EAAe;AAgDpC,SAAO,EAAE,aA/CWC;AAAA,IAClB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,UAAAC,QAAe;AAC9B,YAAAC,IAAgB,KAAK,MAAMP,CAAa;AAC9C,UAAIQ,IAAyB;AAE7B,MAAAD,EAAc,OAAO;AAErB,YAAME,IAAa,OAAO,cAAc,KAAKF,GAAe;AAAA,QAC1D,eAAe,MAAM;AACnB,cAAI,CAAAN,EAAa,SAEjB;AAAA,gBAAI,CAACO;AACH,cAAAC,EAAW,OAAO;AAAA,gBAChB,WAAW,CAACL,CAAQ;AAAA,gBACpB,WAAW;AAAA,kBACT,CAACA,EAAS,WAAW,GAAG;AAAA,oBACtB,GAAGC;AAAA,kBAAA;AAAA,gBACL;AAAA,cACF,CACD;AAAA,iBACI;AACL,oBAAMK,IAAID,EAAW,SAASL,EAAS,WAAW;AAElD,cAAIM,MACFA,EAAE,QAAQ,GACVA,EAAE,SAAS;AAAA,gBACT,oBAAoB;AAAA,cAAA,CACrB,IAGHD,EAAW,WAAW,SAAS,GAEtBH,EAAA;AAAA,YAAA;AAGc,YAAAE,IAAA;AAAA;AAAA,QAC3B;AAAA,QACA,eAAe,CAACG,MAA4B;AAC1C,UAAIV,EAAa,WAEjBK,EAASK,CAAyB;AAAA,QAAA;AAAA,MACpC,CACD;AAAA,IACH;AAAA,IACA,CAACX,GAAeC,CAAY;AAAA,EAC9B,EAEqB;AACvB;"}
1
+ {"version":3,"file":"use-learnosity-append.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity-append.ts"],"sourcesContent":["import type {\n ILearnosityError,\n ILearnosityQuestionResponse,\n IWorksheetQuestion,\n} from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useCallback } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\n\ninterface IForceAppend {\n (options: {\n question: IWorksheetQuestion;\n response: ILearnosityQuestionResponse;\n callback: (error?: ILearnosityError) => void;\n }): void;\n}\n\ninterface IUseLearnosityAppend {\n (\n signedRequest: string,\n loggerRef?: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): { forceAppend: IForceAppend };\n}\n\nconst useLearnosityAppend: IUseLearnosityAppend = signedRequest => {\n const unmountedRef = useIsUnmounted();\n const forceAppend = useCallback<IForceAppend>(\n ({ question, response, callback }) => {\n const parsedRequest = JSON.parse(signedRequest);\n let readyListenerFiredOnce = false;\n\n parsedRequest.type = 'local_practice';\n\n const learnosity = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (unmountedRef.current) return;\n\n if (!readyListenerFiredOnce) {\n learnosity.append({\n questions: [question],\n responses: {\n [question.response_id]: {\n ...response,\n },\n },\n });\n } else {\n const q = learnosity.question(question.response_id);\n\n if (q) {\n q.disable();\n q.validate({\n showCorrectAnswers: true,\n });\n }\n\n learnosity.renderMath('mathjax');\n\n callback();\n }\n\n readyListenerFiredOnce = true;\n },\n errorListener: (error: ILearnosityError) => {\n if (unmountedRef.current) return;\n\n callback(error as ILearnosityError);\n },\n });\n },\n [signedRequest, unmountedRef],\n );\n\n return { forceAppend };\n};\n\nexport default useLearnosityAppend;\n"],"names":["useLearnosityAppend","signedRequest","unmountedRef","useIsUnmounted","useCallback","question","response","callback","parsedRequest","readyListenerFiredOnce","learnosity","q","error"],"mappings":";;AA0BA,MAAMA,IAA4C,CAAiBC,MAAA;AACjE,QAAMC,IAAeC;AAgDrB,SAAO,EAAE,aA/CWC;AAAA,IAClB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,UAAAC,QAAe;AAC9B,YAAAC,IAAgB,KAAK,MAAMP,CAAa;AAC9C,UAAIQ,IAAyB;AAE7B,MAAAD,EAAc,OAAO;AAErB,YAAME,IAAa,OAAO,cAAc,KAAKF,GAAe;AAAA,QAC1D,eAAe,MAAM;AACnB,cAAI,CAAAN,EAAa,SAEjB;AAAA,gBAAI,CAACO;AACH,cAAAC,EAAW,OAAO;AAAA,gBAChB,WAAW,CAACL,CAAQ;AAAA,gBACpB,WAAW;AAAA,kBACT,CAACA,EAAS,WAAW,GAAG;AAAA,oBACtB,GAAGC;AAAA,kBACL;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,iBACI;AACL,oBAAMK,IAAID,EAAW,SAASL,EAAS,WAAW;AAElD,cAAIM,MACFA,EAAE,QAAQ,GACVA,EAAE,SAAS;AAAA,gBACT,oBAAoB;AAAA,cAAA,CACrB,IAGHD,EAAW,WAAW,SAAS,GAEtBH;YACX;AAEyB,YAAAE,IAAA;AAAA;AAAA,QAC3B;AAAA,QACA,eAAe,CAACG,MAA4B;AAC1C,UAAIV,EAAa,WAEjBK,EAASK,CAAyB;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAACX,GAAeC,CAAY;AAAA,EAAA,EAGT;AACvB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-learnosity.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity.ts"],"sourcesContent":["declare global {\n interface Window {\n LearnosityApp: {\n init: (\n config: Record<string, unknown>,\n callbacks: {\n readyListener: (learnosity: ILearnosity) => void;\n errorListener: (error: ILearnosityError) => void;\n },\n ) => ILearnosity;\n };\n }\n}\n// https://help.learnosity.com/hc/en-us/articles/16458083654173-troubleshooting-Questions-API\nconst NON_RECOVERABLE_ERROR_CODES = [10001, 10002, 10003, 10005, 10007, 10010, 10015, 10016, 10018];\n\nimport type { ILearnosity, ILearnosityError, ILearnosityQuestion } from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\nimport EVENTS from '../../constants/events';\nimport useIsLearnosityLoaded from '../../learnosity-preloader/use-is-learnosity-loaded';\n\ninterface IAppendQueue {\n response_id: string;\n toAppend: Parameters<ILearnosity['append']>[0];\n}\n\nconst patchLearnosity = (\n learnosity: ILearnosity,\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n) => {\n let appendQueue: IAppendQueue[] = [];\n let isAppending = false;\n\n learnosity.appendQuestion = ({ questions, responses }) => {\n const firstQuestionId = questions[0]?.response_id;\n\n if (firstQuestionId) {\n if (!isAppending) {\n isAppending = true;\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING, {\n questionId: firstQuestionId,\n });\n learnosity.append({ questions, responses });\n } else if (appendQueue.filter(({ response_id }) => response_id !== firstQuestionId)) {\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING_QUEUED, {\n questionId: firstQuestionId,\n });\n appendQueue = [\n ...appendQueue.filter(({ response_id }) => response_id !== firstQuestionId),\n {\n response_id: firstQuestionId,\n toAppend: {\n questions,\n responses,\n },\n },\n ];\n }\n }\n };\n\n learnosity.ready = () => {\n setTimeout(() => {\n if (appendQueue.length > 0) {\n const questions: ILearnosityQuestion[] = [];\n const responses: Record<string, unknown> = {};\n\n appendQueue.forEach(({ response_id, toAppend }) => {\n questions.push(...toAppend.questions);\n const response = toAppend.responses?.[response_id];\n\n if (response) {\n responses[response_id] = response;\n }\n });\n\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING, {\n questionIds: questions.map(({ response_id }) => response_id),\n });\n appendQueue = [];\n learnosity.append({\n questions,\n responses,\n });\n } else {\n isAppending = false;\n }\n }, 500);\n };\n};\n\ninterface IUseLearnosity {\n (\n signedRequest: string,\n onErrored: (error: ILearnosityError) => void,\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): {\n learnosity?: ILearnosity;\n appendedQuestionIds: string[];\n };\n}\n\nconst useLearnosity: IUseLearnosity = (signedRequest, onErrored, loggerRef) => {\n const [learnosity, setLearnosity] = useState<ILearnosity>();\n const { scriptStatus } = useIsLearnosityLoaded();\n const [appendedQuestionIds, setAppendedQuestionIds] = useState<string[]>([]);\n const appendedQuestionIdsRef = useRef(appendedQuestionIds);\n const unmountedRef = useIsUnmounted();\n\n useEffect(() => {\n if (scriptStatus === 'loaded') {\n const parsedRequest = JSON.parse(signedRequest);\n\n parsedRequest.type = 'local_practice';\n\n loggerRef.current(EVENTS.WORKSHHEET_V3_LEANROSITY_INITIALIZING);\n const learnosityApp = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (!unmountedRef.current) {\n setLearnosity(prevLearnosity => {\n if (!prevLearnosity) {\n loggerRef.current(EVENTS.WORKSHEET_V3_LEARNOSITY_INITIALIZED);\n patchLearnosity(learnosityApp, loggerRef);\n } else {\n learnosityApp.ready();\n\n const questionIds = Object.keys(learnosityApp.questions());\n\n questionIds.forEach(questionId => {\n if (!appendedQuestionIdsRef.current.includes(questionId)) {\n const question = learnosityApp.question(questionId);\n\n if (question) {\n if (appendedQuestionIdsRef.current.length === 0)\n loggerRef.current(EVENTS.WORKSHEET_V3_FIRST_QUESTION_APPENDED, {\n questionId,\n });\n\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDED, {\n questionId,\n });\n question.disable();\n }\n }\n });\n\n appendedQuestionIdsRef.current = questionIds;\n setAppendedQuestionIds(questionIds);\n }\n\n return learnosityApp;\n });\n }\n },\n errorListener: (error: ILearnosityError) => {\n loggerRef.current(EVENTS.WORKSHEET_V3_LEARNOSITY_FAILED, { error });\n\n // Block user only for NON_RECOVERABLE_ERROR_CODES\n if (NON_RECOVERABLE_ERROR_CODES.includes(error.code)) {\n onErrored(error as ILearnosityError);\n }\n },\n });\n\n return () => {\n learnosityApp.reset();\n };\n }\n\n return () => {};\n }, [loggerRef, onErrored, scriptStatus, signedRequest, unmountedRef]);\n\n return {\n learnosity,\n appendedQuestionIds,\n };\n};\n\nexport default useLearnosity;\n"],"names":["NON_RECOVERABLE_ERROR_CODES","patchLearnosity","learnosity","loggerRef","appendQueue","isAppending","questions","responses","firstQuestionId","_a","response_id","EVENTS","toAppend","response","useLearnosity","signedRequest","onErrored","setLearnosity","useState","scriptStatus","useIsLearnosityLoaded","appendedQuestionIds","setAppendedQuestionIds","appendedQuestionIdsRef","useRef","unmountedRef","useIsUnmounted","useEffect","parsedRequest","learnosityApp","prevLearnosity","questionIds","questionId","question","error"],"mappings":"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"}
1
+ {"version":3,"file":"use-learnosity.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-learnosity.ts"],"sourcesContent":["declare global {\n interface Window {\n LearnosityApp: {\n init: (\n config: Record<string, unknown>,\n callbacks: {\n readyListener: (learnosity: ILearnosity) => void;\n errorListener: (error: ILearnosityError) => void;\n },\n ) => ILearnosity;\n };\n }\n}\n// https://help.learnosity.com/hc/en-us/articles/16458083654173-troubleshooting-Questions-API\nconst NON_RECOVERABLE_ERROR_CODES = [10001, 10002, 10003, 10005, 10007, 10010, 10015, 10016, 10018];\n\nimport type { ILearnosity, ILearnosityError, ILearnosityQuestion } from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport useIsUnmounted from '../../../hooks/use-is-unmounted';\nimport EVENTS from '../../constants/events';\nimport useIsLearnosityLoaded from '../../learnosity-preloader/use-is-learnosity-loaded';\n\ninterface IAppendQueue {\n response_id: string;\n toAppend: Parameters<ILearnosity['append']>[0];\n}\n\nconst patchLearnosity = (\n learnosity: ILearnosity,\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n) => {\n let appendQueue: IAppendQueue[] = [];\n let isAppending = false;\n\n learnosity.appendQuestion = ({ questions, responses }) => {\n const firstQuestionId = questions[0]?.response_id;\n\n if (firstQuestionId) {\n if (!isAppending) {\n isAppending = true;\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING, {\n questionId: firstQuestionId,\n });\n learnosity.append({ questions, responses });\n } else if (appendQueue.filter(({ response_id }) => response_id !== firstQuestionId)) {\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING_QUEUED, {\n questionId: firstQuestionId,\n });\n appendQueue = [\n ...appendQueue.filter(({ response_id }) => response_id !== firstQuestionId),\n {\n response_id: firstQuestionId,\n toAppend: {\n questions,\n responses,\n },\n },\n ];\n }\n }\n };\n\n learnosity.ready = () => {\n setTimeout(() => {\n if (appendQueue.length > 0) {\n const questions: ILearnosityQuestion[] = [];\n const responses: Record<string, unknown> = {};\n\n appendQueue.forEach(({ response_id, toAppend }) => {\n questions.push(...toAppend.questions);\n const response = toAppend.responses?.[response_id];\n\n if (response) {\n responses[response_id] = response;\n }\n });\n\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDING, {\n questionIds: questions.map(({ response_id }) => response_id),\n });\n appendQueue = [];\n learnosity.append({\n questions,\n responses,\n });\n } else {\n isAppending = false;\n }\n }, 500);\n };\n};\n\ninterface IUseLearnosity {\n (\n signedRequest: string,\n onErrored: (error: ILearnosityError) => void,\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>,\n ): {\n learnosity?: ILearnosity;\n appendedQuestionIds: string[];\n };\n}\n\nconst useLearnosity: IUseLearnosity = (signedRequest, onErrored, loggerRef) => {\n const [learnosity, setLearnosity] = useState<ILearnosity>();\n const { scriptStatus } = useIsLearnosityLoaded();\n const [appendedQuestionIds, setAppendedQuestionIds] = useState<string[]>([]);\n const appendedQuestionIdsRef = useRef(appendedQuestionIds);\n const unmountedRef = useIsUnmounted();\n\n useEffect(() => {\n if (scriptStatus === 'loaded') {\n const parsedRequest = JSON.parse(signedRequest);\n\n parsedRequest.type = 'local_practice';\n\n loggerRef.current(EVENTS.WORKSHHEET_V3_LEANROSITY_INITIALIZING);\n const learnosityApp = window.LearnosityApp.init(parsedRequest, {\n readyListener: () => {\n if (!unmountedRef.current) {\n setLearnosity(prevLearnosity => {\n if (!prevLearnosity) {\n loggerRef.current(EVENTS.WORKSHEET_V3_LEARNOSITY_INITIALIZED);\n patchLearnosity(learnosityApp, loggerRef);\n } else {\n learnosityApp.ready();\n\n const questionIds = Object.keys(learnosityApp.questions());\n\n questionIds.forEach(questionId => {\n if (!appendedQuestionIdsRef.current.includes(questionId)) {\n const question = learnosityApp.question(questionId);\n\n if (question) {\n if (appendedQuestionIdsRef.current.length === 0)\n loggerRef.current(EVENTS.WORKSHEET_V3_FIRST_QUESTION_APPENDED, {\n questionId,\n });\n\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_APPENDED, {\n questionId,\n });\n question.disable();\n }\n }\n });\n\n appendedQuestionIdsRef.current = questionIds;\n setAppendedQuestionIds(questionIds);\n }\n\n return learnosityApp;\n });\n }\n },\n errorListener: (error: ILearnosityError) => {\n loggerRef.current(EVENTS.WORKSHEET_V3_LEARNOSITY_FAILED, { error });\n\n // Block user only for NON_RECOVERABLE_ERROR_CODES\n if (NON_RECOVERABLE_ERROR_CODES.includes(error.code)) {\n onErrored(error as ILearnosityError);\n }\n },\n });\n\n return () => {\n learnosityApp.reset();\n };\n }\n\n return () => {};\n }, [loggerRef, onErrored, scriptStatus, signedRequest, unmountedRef]);\n\n return {\n learnosity,\n appendedQuestionIds,\n };\n};\n\nexport default useLearnosity;\n"],"names":["NON_RECOVERABLE_ERROR_CODES","patchLearnosity","learnosity","loggerRef","appendQueue","isAppending","questions","responses","firstQuestionId","_a","response_id","EVENTS","toAppend","response","useLearnosity","signedRequest","onErrored","setLearnosity","useState","scriptStatus","useIsLearnosityLoaded","appendedQuestionIds","setAppendedQuestionIds","appendedQuestionIdsRef","useRef","unmountedRef","useIsUnmounted","useEffect","parsedRequest","learnosityApp","prevLearnosity","questionIds","questionId","question","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-s3-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-s3-helper.ts"],"sourcesContent":["import type { IFile } from '../worksheet-question/subjective-review';\n\nimport { useCallback, useEffect } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { useAwsSignedKey } from '../api/subjective-review';\n\ninterface IUseS3helper {\n (params: {\n studentId: string;\n query: {\n type: string;\n };\n }): (props: IUploadImageProps) => void;\n}\n\ninterface IUploadImageProps {\n images: IFile[];\n onSuccess: (urls: string[]) => void;\n onError: () => void;\n fileKey: string;\n fileName?: string;\n}\n\nconst useS3ImageUploadHelper: IUseS3helper = props => {\n const { studentId, query } = props;\n const { data: awsSignedKey, get: getAwsSignedKey } = useAwsSignedKey();\n\n useEffect(() => {\n getAwsSignedKey(studentId, query);\n }, [query, getAwsSignedKey, studentId]);\n\n const uploadImagesToS3 = useCallback(\n async ({ images, onSuccess, onError, fileKey, fileName }: IUploadImageProps) => {\n if (!awsSignedKey) return;\n\n const url = `https://${awsSignedKey.bucketName}.s3.amazonaws.com/`;\n\n try {\n const uploadPromises = images.map(async (item: { file: string | Blob }) => {\n const formData = new FormData();\n const key = `${fileKey}${fileName ?? uuidv4()}`;\n\n formData.append('key', key);\n formData.append('AWSAccessKeyId', awsSignedKey.awsKey);\n formData.append('acl', 'public-read');\n formData.append('success_action_redirect', '');\n formData.append('policy', awsSignedKey.policy);\n formData.append('signature', awsSignedKey.signature);\n formData.append('Content-Type', 'image/jpeg');\n formData.append('file', item.file);\n\n const res = await fetch(url, {\n method: 'POST',\n body: formData,\n });\n\n if (!res.ok) {\n throw new Error('Upload failed');\n }\n\n return `${url}${key}`;\n });\n\n const uploadedUrls = await Promise.all(uploadPromises);\n\n onSuccess(uploadedUrls);\n } catch (error) {\n onError();\n }\n },\n [awsSignedKey],\n );\n\n return uploadImagesToS3;\n};\n\nexport default useS3ImageUploadHelper;\n"],"names":["useS3ImageUploadHelper","props","studentId","query","awsSignedKey","getAwsSignedKey","useAwsSignedKey","useEffect","useCallback","images","onSuccess","onError","fileKey","fileName","url","uploadPromises","item","formData","key","uuidv4","uploadedUrls"],"mappings":";;;AAwBA,MAAMA,IAAuC,CAASC,MAAA;AAC9C,QAAA,EAAE,WAAAC,GAAW,OAAAC,EAAA,IAAUF,GACvB,EAAE,MAAMG,GAAc,KAAKC,EAAA,IAAoBC,EAAgB;AAErE,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAgBH,GAAWC,CAAK;AAAA,EAC/B,GAAA,CAACA,GAAOE,GAAiBH,CAAS,CAAC,GAEbM;AAAA,IACvB,OAAO,EAAE,QAAAC,GAAQ,WAAAC,GAAW,SAAAC,GAAS,SAAAC,GAAS,UAAAC,QAAkC;AAC9E,UAAI,CAACT,EAAc;AAEb,YAAAU,IAAM,WAAWV,EAAa,UAAU;AAE1C,UAAA;AACF,cAAMW,IAAiBN,EAAO,IAAI,OAAOO,MAAkC;AACnE,gBAAAC,IAAW,IAAI,SAAS,GACxBC,IAAM,GAAGN,CAAO,GAAGC,KAAYM,GAAQ;AAgBzC,cAdKF,EAAA,OAAO,OAAOC,CAAG,GACjBD,EAAA,OAAO,kBAAkBb,EAAa,MAAM,GAC5Ca,EAAA,OAAO,OAAO,aAAa,GAC3BA,EAAA,OAAO,2BAA2B,EAAE,GACpCA,EAAA,OAAO,UAAUb,EAAa,MAAM,GACpCa,EAAA,OAAO,aAAab,EAAa,SAAS,GAC1Ca,EAAA,OAAO,gBAAgB,YAAY,GACnCA,EAAA,OAAO,QAAQD,EAAK,IAAI,GAO7B,EALQ,MAAM,MAAMF,GAAK;AAAA,YAC3B,QAAQ;AAAA,YACR,MAAMG;AAAA,UAAA,CACP,GAEQ;AACD,kBAAA,IAAI,MAAM,eAAe;AAG1B,iBAAA,GAAGH,CAAG,GAAGI,CAAG;AAAA,QAAA,CACpB,GAEKE,IAAe,MAAM,QAAQ,IAAIL,CAAc;AAErD,QAAAL,EAAUU,CAAY;AAAA,cACR;AACN,QAAAT,EAAA;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA,CAACP,CAAY;AAAA,EACf;AAGF;"}
1
+ {"version":3,"file":"use-s3-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-s3-helper.ts"],"sourcesContent":["import type { IFile } from '../worksheet-question/subjective-review';\n\nimport { useCallback, useEffect } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { useAwsSignedKey } from '../api/subjective-review';\n\ninterface IUseS3helper {\n (params: {\n studentId: string;\n query: {\n type: string;\n };\n }): (props: IUploadImageProps) => void;\n}\n\ninterface IUploadImageProps {\n images: IFile[];\n onSuccess: (urls: string[]) => void;\n onError: () => void;\n fileKey: string;\n fileName?: string;\n}\n\nconst useS3ImageUploadHelper: IUseS3helper = props => {\n const { studentId, query } = props;\n const { data: awsSignedKey, get: getAwsSignedKey } = useAwsSignedKey();\n\n useEffect(() => {\n getAwsSignedKey(studentId, query);\n }, [query, getAwsSignedKey, studentId]);\n\n const uploadImagesToS3 = useCallback(\n async ({ images, onSuccess, onError, fileKey, fileName }: IUploadImageProps) => {\n if (!awsSignedKey) return;\n\n const url = `https://${awsSignedKey.bucketName}.s3.amazonaws.com/`;\n\n try {\n const uploadPromises = images.map(async (item: { file: string | Blob }) => {\n const formData = new FormData();\n const key = `${fileKey}${fileName ?? uuidv4()}`;\n\n formData.append('key', key);\n formData.append('AWSAccessKeyId', awsSignedKey.awsKey);\n formData.append('acl', 'public-read');\n formData.append('success_action_redirect', '');\n formData.append('policy', awsSignedKey.policy);\n formData.append('signature', awsSignedKey.signature);\n formData.append('Content-Type', 'image/jpeg');\n formData.append('file', item.file);\n\n const res = await fetch(url, {\n method: 'POST',\n body: formData,\n });\n\n if (!res.ok) {\n throw new Error('Upload failed');\n }\n\n return `${url}${key}`;\n });\n\n const uploadedUrls = await Promise.all(uploadPromises);\n\n onSuccess(uploadedUrls);\n } catch (error) {\n onError();\n }\n },\n [awsSignedKey],\n );\n\n return uploadImagesToS3;\n};\n\nexport default useS3ImageUploadHelper;\n"],"names":["useS3ImageUploadHelper","props","studentId","query","awsSignedKey","getAwsSignedKey","useAwsSignedKey","useEffect","useCallback","images","onSuccess","onError","fileKey","fileName","url","uploadPromises","item","formData","key","uuidv4","uploadedUrls"],"mappings":";;;AAwBA,MAAMA,IAAuC,CAASC,MAAA;AAC9C,QAAA,EAAE,WAAAC,GAAW,OAAAC,EAAU,IAAAF,GACvB,EAAE,MAAMG,GAAc,KAAKC,EAAA,IAAoBC;AAErD,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAgBH,GAAWC,CAAK;AAAA,EAC/B,GAAA,CAACA,GAAOE,GAAiBH,CAAS,CAAC,GAEbM;AAAA,IACvB,OAAO,EAAE,QAAAC,GAAQ,WAAAC,GAAW,SAAAC,GAAS,SAAAC,GAAS,UAAAC,QAAkC;AAC9E,UAAI,CAACT,EAAc;AAEb,YAAAU,IAAM,WAAWV,EAAa,UAAU;AAE1C,UAAA;AACF,cAAMW,IAAiBN,EAAO,IAAI,OAAOO,MAAkC;AACnE,gBAAAC,IAAW,IAAI,YACfC,IAAM,GAAGN,CAAO,GAAGC,KAAYM,EAAQ,CAAA;AAgBzC,cAdKF,EAAA,OAAO,OAAOC,CAAG,GACjBD,EAAA,OAAO,kBAAkBb,EAAa,MAAM,GAC5Ca,EAAA,OAAO,OAAO,aAAa,GAC3BA,EAAA,OAAO,2BAA2B,EAAE,GACpCA,EAAA,OAAO,UAAUb,EAAa,MAAM,GACpCa,EAAA,OAAO,aAAab,EAAa,SAAS,GAC1Ca,EAAA,OAAO,gBAAgB,YAAY,GACnCA,EAAA,OAAO,QAAQD,EAAK,IAAI,GAO7B,EALQ,MAAM,MAAMF,GAAK;AAAA,YAC3B,QAAQ;AAAA,YACR,MAAMG;AAAA,UAAA,CACP,GAEQ;AACD,kBAAA,IAAI,MAAM,eAAe;AAG1B,iBAAA,GAAGH,CAAG,GAAGI,CAAG;AAAA,QAAA,CACpB,GAEKE,IAAe,MAAM,QAAQ,IAAIL,CAAc;AAErD,QAAAL,EAAUU,CAAY;AAAA,cACR;AACN,QAAAT;MACV;AAAA,IACF;AAAA,IACA,CAACP,CAAY;AAAA,EAAA;AAIjB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-time-on-questions.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-time-on-questions.ts"],"sourcesContent":["import type { IWorksheetBehavior, IWorksheetResponse } from '../worksheet-types';\n\nimport { useEffect, useRef, useCallback } from 'react';\n\nimport usePrevious from '../../../hooks/use-previous';\n\nconst useTimeSpentOnQuestions = (\n behavior: IWorksheetBehavior,\n responses: Record<string, IWorksheetResponse>,\n questionId?: string,\n) => {\n const timeSpentRef = useRef<Record<string, number>>(\n Object.entries(responses).reduce((acc: Record<string, number>, [qId, res]) => {\n acc[qId] = res?.timeSpent ?? 0;\n\n return acc;\n }, {}),\n );\n const currentQuestionIdRef = useRef<string | undefined>(questionId);\n\n const startTimeRef = useRef<number | null>(Date.now());\n const previousQuestionId = usePrevious(questionId);\n\n const { canAttempt } = behavior;\n\n const getTimeSpentOnQuestion = useCallback(\n (qId: string) => {\n if (qId !== currentQuestionIdRef.current) {\n return timeSpentRef.current[qId] ?? 0;\n }\n\n if (qId && startTimeRef.current && canAttempt) {\n return (timeSpentRef.current[qId] ?? 0) + (Date.now() - startTimeRef.current);\n }\n\n return timeSpentRef.current[qId] ?? 0;\n },\n [canAttempt],\n );\n\n useEffect(() => {\n currentQuestionIdRef.current = questionId;\n }, [questionId]);\n\n const handleVisibilityChange = useCallback(() => {\n if (\n document.visibilityState === 'hidden' &&\n startTimeRef.current &&\n currentQuestionIdRef.current\n ) {\n const timeSpentInMs = Date.now() - startTimeRef.current;\n\n timeSpentRef.current[currentQuestionIdRef.current] =\n (timeSpentRef.current[currentQuestionIdRef.current] ?? 0) + timeSpentInMs;\n startTimeRef.current = null;\n } else if (document.visibilityState === 'visible' && !startTimeRef.current) {\n startTimeRef.current = Date.now();\n }\n }, []);\n\n useEffect(() => {\n if (!canAttempt) return;\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, [canAttempt, handleVisibilityChange]);\n\n useEffect(() => {\n if (!questionId || !canAttempt) return;\n\n if (previousQuestionId !== questionId) {\n if (startTimeRef.current && previousQuestionId) {\n const prevTimeSpent = timeSpentRef.current[previousQuestionId] ?? 0;\n const timeSpentInMs = Date.now() - startTimeRef.current;\n\n timeSpentRef.current[previousQuestionId] = prevTimeSpent + timeSpentInMs;\n }\n startTimeRef.current = Date.now();\n }\n }, [canAttempt, previousQuestionId, questionId]);\n\n return getTimeSpentOnQuestion;\n};\n\nexport default useTimeSpentOnQuestions;\n"],"names":["useTimeSpentOnQuestions","behavior","responses","questionId","timeSpentRef","useRef","acc","qId","res","currentQuestionIdRef","startTimeRef","previousQuestionId","usePrevious","canAttempt","getTimeSpentOnQuestion","useCallback","useEffect","handleVisibilityChange","timeSpentInMs","prevTimeSpent"],"mappings":";;AAMA,MAAMA,IAA0B,CAC9BC,GACAC,GACAC,MACG;AACH,QAAMC,IAAeC;AAAA,IACnB,OAAO,QAAQH,CAAS,EAAE,OAAO,CAACI,GAA6B,CAACC,GAAKC,CAAG,OAClEF,EAAAC,CAAG,KAAIC,KAAA,gBAAAA,EAAK,cAAa,GAEtBF,IACN,CAAE,CAAA;AAAA,EACP,GACMG,IAAuBJ,EAA2BF,CAAU,GAE5DO,IAAeL,EAAsB,KAAK,IAAA,CAAK,GAC/CM,IAAqBC,EAAYT,CAAU,GAE3C,EAAE,YAAAU,MAAeZ,GAEjBa,IAAyBC;AAAA,IAC7B,CAACR,MACKA,MAAQE,EAAqB,UACxBL,EAAa,QAAQG,CAAG,KAAK,IAGlCA,KAAOG,EAAa,WAAWG,KACzBT,EAAa,QAAQG,CAAG,KAAK,MAAM,KAAK,IAAA,IAAQG,EAAa,WAGhEN,EAAa,QAAQG,CAAG,KAAK;AAAA,IAEtC,CAACM,CAAU;AAAA,EACb;AAEA,EAAAG,EAAU,MAAM;AACd,IAAAP,EAAqB,UAAUN;AAAA,EAAA,GAC9B,CAACA,CAAU,CAAC;AAET,QAAAc,IAAyBF,EAAY,MAAM;AAC/C,QACE,SAAS,oBAAoB,YAC7BL,EAAa,WACbD,EAAqB,SACrB;AACA,YAAMS,IAAgB,KAAK,IAAI,IAAIR,EAAa;AAEnC,MAAAN,EAAA,QAAQK,EAAqB,OAAO,KAC9CL,EAAa,QAAQK,EAAqB,OAAO,KAAK,KAAKS,GAC9DR,EAAa,UAAU;AAAA,IAAA,OACd,SAAS,oBAAoB,aAAa,CAACA,EAAa,YACpDA,EAAA,UAAU,KAAK,IAAI;AAAA,EAEpC,GAAG,EAAE;AAEL,SAAAM,EAAU,MAAM;AACd,QAAKH;AACI,sBAAA,iBAAiB,oBAAoBI,CAAsB,GAE7D,MAAM;AACF,iBAAA,oBAAoB,oBAAoBA,CAAsB;AAAA,MACzE;AAAA,EAAA,GACC,CAACJ,GAAYI,CAAsB,CAAC,GAEvCD,EAAU,MAAM;AACV,QAAA,GAACb,KAAc,CAACU,MAEhBF,MAAuBR,GAAY;AACjC,UAAAO,EAAa,WAAWC,GAAoB;AAC9C,cAAMQ,IAAgBf,EAAa,QAAQO,CAAkB,KAAK,GAC5DO,IAAgB,KAAK,IAAI,IAAIR,EAAa;AAEnC,QAAAN,EAAA,QAAQO,CAAkB,IAAIQ,IAAgBD;AAAA,MAAA;AAEhD,MAAAR,EAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAAA,EAEjC,GAAA,CAACG,GAAYF,GAAoBR,CAAU,CAAC,GAExCW;AACT;"}
1
+ {"version":3,"file":"use-time-on-questions.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-time-on-questions.ts"],"sourcesContent":["import type { IWorksheetBehavior, IWorksheetResponse } from '../worksheet-types';\n\nimport { useEffect, useRef, useCallback } from 'react';\n\nimport usePrevious from '../../../hooks/use-previous';\n\nconst useTimeSpentOnQuestions = (\n behavior: IWorksheetBehavior,\n responses: Record<string, IWorksheetResponse>,\n questionId?: string,\n) => {\n const timeSpentRef = useRef<Record<string, number>>(\n Object.entries(responses).reduce((acc: Record<string, number>, [qId, res]) => {\n acc[qId] = res?.timeSpent ?? 0;\n\n return acc;\n }, {}),\n );\n const currentQuestionIdRef = useRef<string | undefined>(questionId);\n\n const startTimeRef = useRef<number | null>(Date.now());\n const previousQuestionId = usePrevious(questionId);\n\n const { canAttempt } = behavior;\n\n const getTimeSpentOnQuestion = useCallback(\n (qId: string) => {\n if (qId !== currentQuestionIdRef.current) {\n return timeSpentRef.current[qId] ?? 0;\n }\n\n if (qId && startTimeRef.current && canAttempt) {\n return (timeSpentRef.current[qId] ?? 0) + (Date.now() - startTimeRef.current);\n }\n\n return timeSpentRef.current[qId] ?? 0;\n },\n [canAttempt],\n );\n\n useEffect(() => {\n currentQuestionIdRef.current = questionId;\n }, [questionId]);\n\n const handleVisibilityChange = useCallback(() => {\n if (\n document.visibilityState === 'hidden' &&\n startTimeRef.current &&\n currentQuestionIdRef.current\n ) {\n const timeSpentInMs = Date.now() - startTimeRef.current;\n\n timeSpentRef.current[currentQuestionIdRef.current] =\n (timeSpentRef.current[currentQuestionIdRef.current] ?? 0) + timeSpentInMs;\n startTimeRef.current = null;\n } else if (document.visibilityState === 'visible' && !startTimeRef.current) {\n startTimeRef.current = Date.now();\n }\n }, []);\n\n useEffect(() => {\n if (!canAttempt) return;\n document.addEventListener('visibilitychange', handleVisibilityChange);\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n };\n }, [canAttempt, handleVisibilityChange]);\n\n useEffect(() => {\n if (!questionId || !canAttempt) return;\n\n if (previousQuestionId !== questionId) {\n if (startTimeRef.current && previousQuestionId) {\n const prevTimeSpent = timeSpentRef.current[previousQuestionId] ?? 0;\n const timeSpentInMs = Date.now() - startTimeRef.current;\n\n timeSpentRef.current[previousQuestionId] = prevTimeSpent + timeSpentInMs;\n }\n startTimeRef.current = Date.now();\n }\n }, [canAttempt, previousQuestionId, questionId]);\n\n return getTimeSpentOnQuestion;\n};\n\nexport default useTimeSpentOnQuestions;\n"],"names":["useTimeSpentOnQuestions","behavior","responses","questionId","timeSpentRef","useRef","acc","qId","res","currentQuestionIdRef","startTimeRef","previousQuestionId","usePrevious","canAttempt","getTimeSpentOnQuestion","useCallback","useEffect","handleVisibilityChange","timeSpentInMs","prevTimeSpent"],"mappings":";;AAMA,MAAMA,IAA0B,CAC9BC,GACAC,GACAC,MACG;AACH,QAAMC,IAAeC;AAAA,IACnB,OAAO,QAAQH,CAAS,EAAE,OAAO,CAACI,GAA6B,CAACC,GAAKC,CAAG,OAClEF,EAAAC,CAAG,KAAIC,KAAA,gBAAAA,EAAK,cAAa,GAEtBF,IACN,EAAE;AAAA,EAAA,GAEDG,IAAuBJ,EAA2BF,CAAU,GAE5DO,IAAeL,EAAsB,KAAK,IAAK,CAAA,GAC/CM,IAAqBC,EAAYT,CAAU,GAE3C,EAAE,YAAAU,EAAe,IAAAZ,GAEjBa,IAAyBC;AAAA,IAC7B,CAACR,MACKA,MAAQE,EAAqB,UACxBL,EAAa,QAAQG,CAAG,KAAK,IAGlCA,KAAOG,EAAa,WAAWG,KACzBT,EAAa,QAAQG,CAAG,KAAK,MAAM,KAAK,QAAQG,EAAa,WAGhEN,EAAa,QAAQG,CAAG,KAAK;AAAA,IAEtC,CAACM,CAAU;AAAA,EAAA;AAGb,EAAAG,EAAU,MAAM;AACd,IAAAP,EAAqB,UAAUN;AAAA,EAAA,GAC9B,CAACA,CAAU,CAAC;AAET,QAAAc,IAAyBF,EAAY,MAAM;AAC/C,QACE,SAAS,oBAAoB,YAC7BL,EAAa,WACbD,EAAqB,SACrB;AACA,YAAMS,IAAgB,KAAK,IAAI,IAAIR,EAAa;AAEnC,MAAAN,EAAA,QAAQK,EAAqB,OAAO,KAC9CL,EAAa,QAAQK,EAAqB,OAAO,KAAK,KAAKS,GAC9DR,EAAa,UAAU;AAAA,IAAA,OACd,SAAS,oBAAoB,aAAa,CAACA,EAAa,YACpDA,EAAA,UAAU,KAAK;EAEhC,GAAG,CAAE,CAAA;AAEL,SAAAM,EAAU,MAAM;AACd,QAAKH;AACI,sBAAA,iBAAiB,oBAAoBI,CAAsB,GAE7D,MAAM;AACF,iBAAA,oBAAoB,oBAAoBA,CAAsB;AAAA,MAAA;AAAA,EACzE,GACC,CAACJ,GAAYI,CAAsB,CAAC,GAEvCD,EAAU,MAAM;AACV,QAAA,GAACb,KAAc,CAACU,MAEhBF,MAAuBR,GAAY;AACjC,UAAAO,EAAa,WAAWC,GAAoB;AAC9C,cAAMQ,IAAgBf,EAAa,QAAQO,CAAkB,KAAK,GAC5DO,IAAgB,KAAK,IAAI,IAAIR,EAAa;AAEnC,QAAAN,EAAA,QAAQO,CAAkB,IAAIQ,IAAgBD;AAAA,MAC7D;AACa,MAAAR,EAAA,UAAU,KAAK;IAC9B;AAAA,EACC,GAAA,CAACG,GAAYF,GAAoBR,CAAU,CAAC,GAExCW;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-worksheet-data-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-worksheet-data-helper.ts"],"sourcesContent":["import type { ILearnosityItem, IWorksheetResponse, TItemType } from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport EVENTS from '../../constants/events';\nimport useIsLearnosityLoaded from '../../learnosity-preloader/use-is-learnosity-loaded';\nimport { useGetAttemptResponses } from '../api/attempt-responses';\n\ntype TLoadingState = 'loading' | 'success' | 'error';\ninterface IUseWorksheetDataHelper {\n (params: {\n attemptId?: string;\n signedRequest: string;\n loggerRef: MutableRefObject<(event: string, data?: Record<string, unknown>) => void>;\n }): {\n loadingState: TLoadingState;\n error?: string;\n data?: {\n learnosityItems: ILearnosityItem[];\n responses?: Record<string, IWorksheetResponse>;\n };\n learnosityActivityRef?: string;\n };\n}\n\ninterface ILearnosityActivityError {\n meta: {\n code: number;\n message: string;\n };\n}\n\ninterface ILearnosityActivityData {\n data: {\n apiActivity: {\n items: ILearnosityItem[];\n tags: Record<string, string[]>;\n };\n };\n}\n\nconst useWorksheetDataHelper: IUseWorksheetDataHelper = ({\n attemptId,\n signedRequest,\n loggerRef,\n}) => {\n const [error, setError] = useState<string>();\n const { scriptStatus, loadedAPIURL, downloadScript } = useIsLearnosityLoaded();\n const prevScriptStatusRef = useRef<typeof scriptStatus>();\n const [learnosityItems, setLearnosityItems] = useState<ILearnosityItem[]>();\n const [learnosityActivityRef, setLearnosityActivityRef] = useState<string>();\n\n const {\n isProcessed: isAttempsDataFetched,\n data: responsesData,\n get: getAttemptResponses,\n error: attemptResponsesError,\n } = useGetAttemptResponses(attemptId);\n\n const fetchLearnosityItems = useCallback(\n async (apiURL: string) => {\n const { security, request } = JSON.parse(signedRequest) as {\n security: {\n consumer_key: string;\n };\n request: {\n session_id: string;\n activity_template_id?: string;\n };\n };\n const bodyData = new URLSearchParams();\n\n bodyData.append('action', 'get');\n bodyData.append('security', JSON.stringify(security));\n bodyData.append('request', JSON.stringify(request));\n\n try {\n const url = apiURL.replace('questions', 'items').replace('?v', 'v');\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_LOADING);\n const response = await fetch(\n `${url}/activity?&a=get&c=${security.consumer_key}&s=${request.session_id}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n body: bodyData.toString(),\n },\n );\n\n if (!response.ok) {\n const err: ILearnosityActivityError = await response.json();\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_FAILED, {\n is_invalid_activity: true,\n activity_template_id: request.activity_template_id,\n error_message: err.meta.message,\n error_code: err.meta.code,\n });\n\n captureMessage(err.meta.message, {\n extra: {\n error_code: err.meta.code,\n },\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': request.activity_template_id,\n },\n fingerprint: [`invalid-activity-${request.activity_template_id}`], // Add unique fingerprint\n });\n\n setError('Failed to fetch Learnosity items');\n\n return;\n }\n\n const json: ILearnosityActivityData = await response.json();\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_LOADED);\n setLearnosityActivityRef(request.activity_template_id);\n setLearnosityItems(() => {\n const { items, tags: allTags } = json.data.apiActivity;\n\n return items.map(item => {\n const tags = allTags[item.reference];\n\n const itemType = tags?.find(tag => tag.startsWith('Item Type:'))?.split(':')[1] as\n | TItemType\n | undefined;\n\n return {\n ...item,\n itemType: itemType,\n tags: tags ?? [],\n };\n });\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : 'Failed to fetch Learnosity items';\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_FAILED, {\n is_invalid_activity: false,\n activity_template_id: request.activity_template_id,\n error_message: errorMessage,\n });\n setError('Failed to fetch Learnosity items');\n }\n },\n [loggerRef, signedRequest],\n );\n\n useEffect(() => {\n if (scriptStatus === 'loaded' && loadedAPIURL) {\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIPT_READY);\n fetchLearnosityItems(loadedAPIURL);\n }\n }, [fetchLearnosityItems, loadedAPIURL, loggerRef, scriptStatus]);\n\n useEffect(() => {\n if (attemptId) {\n loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_LOADING);\n getAttemptResponses(attemptId);\n }\n }, [getAttemptResponses, attemptId, loggerRef]);\n\n useEffect(() => {\n if (isAttempsDataFetched) loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_LOADED);\n }, [isAttempsDataFetched, loggerRef]);\n\n useEffect(() => {\n if (attemptResponsesError)\n loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_FAILED, {\n errorMessage: attemptResponsesError.message,\n });\n }, [attemptResponsesError, loggerRef]);\n\n useEffect(() => {\n // Only on mount and if script failed to load handle the download\n if (prevScriptStatusRef.current === undefined && scriptStatus === 'error') {\n downloadScript();\n }\n }, [downloadScript, scriptStatus]);\n\n useEffect(() => {\n // Save the previous script status only if it's not undefined or if the current status is not error\n if (\n prevScriptStatusRef.current !== undefined ||\n (scriptStatus !== 'error' && prevScriptStatusRef.current === undefined)\n ) {\n prevScriptStatusRef.current = scriptStatus;\n }\n }, [scriptStatus]);\n\n if (learnosityItems && (!attemptId || isAttempsDataFetched)) {\n return {\n loadingState: 'success',\n learnosityActivityRef,\n data: {\n learnosityItems,\n responses: responsesData ?? undefined,\n },\n };\n }\n\n if (\n error ||\n attemptResponsesError ||\n (prevScriptStatusRef.current !== undefined && scriptStatus === 'error')\n ) {\n return {\n loadingState: 'error',\n error:\n scriptStatus === 'error'\n ? 'Learnosity script failed to load'\n : error ?? attemptResponsesError?.message ?? 'Error loading worksheet',\n };\n }\n\n return {\n loadingState: 'loading',\n };\n};\n\nexport default useWorksheetDataHelper;\n"],"names":["useWorksheetDataHelper","attemptId","signedRequest","loggerRef","error","setError","useState","scriptStatus","loadedAPIURL","downloadScript","useIsLearnosityLoaded","prevScriptStatusRef","useRef","learnosityItems","setLearnosityItems","learnosityActivityRef","setLearnosityActivityRef","isAttempsDataFetched","responsesData","getAttemptResponses","attemptResponsesError","useGetAttemptResponses","fetchLearnosityItems","useCallback","apiURL","security","request","bodyData","url","EVENTS","response","err","captureMessage","json","items","allTags","item","tags","itemType","_a","tag","errorMessage","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"use-worksheet-data-helper.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-worksheet-data-helper.ts"],"sourcesContent":["import type { ILearnosityItem, IWorksheetResponse, TItemType } from '../worksheet-types';\nimport type { MutableRefObject } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport EVENTS from '../../constants/events';\nimport useIsLearnosityLoaded from '../../learnosity-preloader/use-is-learnosity-loaded';\nimport { useGetAttemptResponses } from '../api/attempt-responses';\n\ntype TLoadingState = 'loading' | 'success' | 'error';\ninterface IUseWorksheetDataHelper {\n (params: {\n attemptId?: string;\n signedRequest: string;\n loggerRef: MutableRefObject<(event: string, data?: Record<string, unknown>) => void>;\n }): {\n loadingState: TLoadingState;\n error?: string;\n data?: {\n learnosityItems: ILearnosityItem[];\n responses?: Record<string, IWorksheetResponse>;\n };\n learnosityActivityRef?: string;\n };\n}\n\ninterface ILearnosityActivityError {\n meta: {\n code: number;\n message: string;\n };\n}\n\ninterface ILearnosityActivityData {\n data: {\n apiActivity: {\n items: ILearnosityItem[];\n tags: Record<string, string[]>;\n };\n };\n}\n\nconst useWorksheetDataHelper: IUseWorksheetDataHelper = ({\n attemptId,\n signedRequest,\n loggerRef,\n}) => {\n const [error, setError] = useState<string>();\n const { scriptStatus, loadedAPIURL, downloadScript } = useIsLearnosityLoaded();\n const prevScriptStatusRef = useRef<typeof scriptStatus>();\n const [learnosityItems, setLearnosityItems] = useState<ILearnosityItem[]>();\n const [learnosityActivityRef, setLearnosityActivityRef] = useState<string>();\n\n const {\n isProcessed: isAttempsDataFetched,\n data: responsesData,\n get: getAttemptResponses,\n error: attemptResponsesError,\n } = useGetAttemptResponses(attemptId);\n\n const fetchLearnosityItems = useCallback(\n async (apiURL: string) => {\n const { security, request } = JSON.parse(signedRequest) as {\n security: {\n consumer_key: string;\n };\n request: {\n session_id: string;\n activity_template_id?: string;\n };\n };\n const bodyData = new URLSearchParams();\n\n bodyData.append('action', 'get');\n bodyData.append('security', JSON.stringify(security));\n bodyData.append('request', JSON.stringify(request));\n\n try {\n const url = apiURL.replace('questions', 'items').replace('?v', 'v');\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_LOADING);\n const response = await fetch(\n `${url}/activity?&a=get&c=${security.consumer_key}&s=${request.session_id}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n body: bodyData.toString(),\n },\n );\n\n if (!response.ok) {\n const err: ILearnosityActivityError = await response.json();\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_FAILED, {\n is_invalid_activity: true,\n activity_template_id: request.activity_template_id,\n error_message: err.meta.message,\n error_code: err.meta.code,\n });\n\n captureMessage(err.meta.message, {\n extra: {\n error_code: err.meta.code,\n },\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': request.activity_template_id,\n },\n fingerprint: [`invalid-activity-${request.activity_template_id}`], // Add unique fingerprint\n });\n\n setError('Failed to fetch Learnosity items');\n\n return;\n }\n\n const json: ILearnosityActivityData = await response.json();\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_LOADED);\n setLearnosityActivityRef(request.activity_template_id);\n setLearnosityItems(() => {\n const { items, tags: allTags } = json.data.apiActivity;\n\n return items.map(item => {\n const tags = allTags[item.reference];\n\n const itemType = tags?.find(tag => tag.startsWith('Item Type:'))?.split(':')[1] as\n | TItemType\n | undefined;\n\n return {\n ...item,\n itemType: itemType,\n tags: tags ?? [],\n };\n });\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : 'Failed to fetch Learnosity items';\n\n loggerRef.current(EVENTS.WORKSHEET_V3_ITEMS_FAILED, {\n is_invalid_activity: false,\n activity_template_id: request.activity_template_id,\n error_message: errorMessage,\n });\n setError('Failed to fetch Learnosity items');\n }\n },\n [loggerRef, signedRequest],\n );\n\n useEffect(() => {\n if (scriptStatus === 'loaded' && loadedAPIURL) {\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIPT_READY);\n fetchLearnosityItems(loadedAPIURL);\n }\n }, [fetchLearnosityItems, loadedAPIURL, loggerRef, scriptStatus]);\n\n useEffect(() => {\n if (attemptId) {\n loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_LOADING);\n getAttemptResponses(attemptId);\n }\n }, [getAttemptResponses, attemptId, loggerRef]);\n\n useEffect(() => {\n if (isAttempsDataFetched) loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_LOADED);\n }, [isAttempsDataFetched, loggerRef]);\n\n useEffect(() => {\n if (attemptResponsesError)\n loggerRef.current(EVENTS.WORKSHEET_V3_ATTEMPT_RESPONSES_FAILED, {\n errorMessage: attemptResponsesError.message,\n });\n }, [attemptResponsesError, loggerRef]);\n\n useEffect(() => {\n // Only on mount and if script failed to load handle the download\n if (prevScriptStatusRef.current === undefined && scriptStatus === 'error') {\n downloadScript();\n }\n }, [downloadScript, scriptStatus]);\n\n useEffect(() => {\n // Save the previous script status only if it's not undefined or if the current status is not error\n if (\n prevScriptStatusRef.current !== undefined ||\n (scriptStatus !== 'error' && prevScriptStatusRef.current === undefined)\n ) {\n prevScriptStatusRef.current = scriptStatus;\n }\n }, [scriptStatus]);\n\n if (learnosityItems && (!attemptId || isAttempsDataFetched)) {\n return {\n loadingState: 'success',\n learnosityActivityRef,\n data: {\n learnosityItems,\n responses: responsesData ?? undefined,\n },\n };\n }\n\n if (\n error ||\n attemptResponsesError ||\n (prevScriptStatusRef.current !== undefined && scriptStatus === 'error')\n ) {\n return {\n loadingState: 'error',\n error:\n scriptStatus === 'error'\n ? 'Learnosity script failed to load'\n : error ?? attemptResponsesError?.message ?? 'Error loading worksheet',\n };\n }\n\n return {\n loadingState: 'loading',\n };\n};\n\nexport default useWorksheetDataHelper;\n"],"names":["useWorksheetDataHelper","attemptId","signedRequest","loggerRef","error","setError","useState","scriptStatus","loadedAPIURL","downloadScript","useIsLearnosityLoaded","prevScriptStatusRef","useRef","learnosityItems","setLearnosityItems","learnosityActivityRef","setLearnosityActivityRef","isAttempsDataFetched","responsesData","getAttemptResponses","attemptResponsesError","useGetAttemptResponses","fetchLearnosityItems","useCallback","apiURL","security","request","bodyData","url","EVENTS","response","err","captureMessage","json","items","allTags","item","tags","itemType","_a","tag","errorMessage","useEffect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"question-tips.js","sources":["../../../../src/features/worksheet/worksheet/question-tips.tsx"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { ILearnosity, IWorksheetQuestion } from './worksheet-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport UpIcon from '../../../assets/line-icons/icons/up';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { ACTION_BAR_HEIGHT } from './constants';\nimport { CustomElement } from './worksheet-question/worksheet-question-styled';\n\ntype TStyledComponentProps = {\n $isExpanded: boolean;\n};\n\nconst Wrapper = styled(FlexView)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n const { layout, colors, zIndex } = theme;\n\n return `\n position: absolute;\n bottom: 0px;\n z-index: ${zIndex.QUESTION_TIPS};\n max-height: calc(${layout.gutter * 2}px + ${ACTION_BAR_HEIGHT}px);\n \n border-radius: 6px 6px 0px 0px;\n background: ${colors.REAL_BLACK_60};\n backdrop-filter: blur(8px);\n align-self: center;\n \n ${\n $isExpanded &&\n `\n max-height: calc(${layout.gutter * 15.625}px + ${ACTION_BAR_HEIGHT}px);\n overflow-y: auto;\n\n @supports selector(::-webkit-scrollbar) {\n &::-webkit-scrollbar {\n border-top-right-radius: 6px;\n width: 8px;\n background-color: ${colors.WHITE};\n }\n \n &::-webkit-scrollbar-thumb {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n background: ${colors.REAL_BLACK_60};\n }\n }\n `\n }\n `;\n});\n\nconst Header = styled(FlexView)`\n padding: 8px 12px;\n\n & * {\n background-color: transparent !important;\n }\n`;\n\nconst TipText = styled(CustomElement)<TStyledComponentProps>(\n ({ theme, $isExpanded }) => `\n color: ${theme.colors.WHITE};\n padding: 0px 0px ${ACTION_BAR_HEIGHT}px;\n ${$isExpanded ? '' : `& > * { display: inline; }`}\n font-family: 'UntitledSans-Regular';\n\n &::before {\n content: 'CUE DON’T TELL:';\n font-family: 'Athletics-Bold';\n margin-right: 8px;\n ${$isExpanded ? ` display: block; margin-bottom: 8px;` : ''}\n }\n `,\n);\n\nconst ChevIconWrapper = styled(FlexView)`\n position: sticky;\n top: 8px;\n`;\n\nconst ChevIcon = styled(UpIcon)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n return `\n transform: rotate(${$isExpanded ? 180 : 0}deg);\n transition: transform 0.3s ease;\n color: ${theme.colors.WHITE};\n cursor: pointer;\n `;\n});\n\ninterface IQuestionTips {\n width: number | string;\n userType: TUserTypes;\n learnosity: ILearnosity;\n question?: IWorksheetQuestion;\n}\n\nconst QuestionTips: FC<IQuestionTips> = memo(({ width, question, userType, learnosity }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const tipRef = useRef<HTMLDivElement>(null);\n const tipContentRef = useRef<string | null>('');\n\n const [menuVisible, setMenuVisible] = useState(false);\n\n const { teacher_tips: tips } = question?.metadata || {};\n\n const tipsMemoized = useMemo(() => {\n return tips?.toString();\n }, [tips]);\n\n const handleClick = useCallback(() => {\n if (tipContentRef.current && tipRef.current) {\n setMenuVisible(prev => !prev);\n }\n }, []);\n\n useLayoutEffect(() => {\n if (tipRef.current && tips) {\n tipContentRef.current = tipRef.current.textContent;\n\n learnosity.renderMath('mathjax');\n }\n }, [learnosity, tips]);\n\n useEffect(() => {\n if (!tipsMemoized) {\n setMenuVisible(false);\n }\n }, [tipsMemoized]);\n\n if (userType !== 'TEACHER' || !tipsMemoized) return null;\n\n return (\n <Wrapper ref={containerRef} $width={width} $isExpanded={menuVisible}>\n <Clickable label=\"Teacher Tip\" onClick={!menuVisible ? handleClick : undefined}>\n <Header $flexDirection=\"row\" $flexGap={10} $justifyContent=\"space-between\">\n <FlexView $flexDirection=\"row\" $flexGap={5}>\n <TipText\n ref={tipRef}\n dangerouslySetInnerHTML={{ __html: tipsMemoized }}\n $isExpanded={menuVisible}\n />\n </FlexView>\n\n <ChevIconWrapper $width={20} $height={20}>\n <ChevIcon $isExpanded={menuVisible} onClick={menuVisible ? handleClick : undefined} />\n </ChevIconWrapper>\n </Header>\n </Clickable>\n </Wrapper>\n );\n});\n\nexport default QuestionTips;\n"],"names":["Wrapper","styled","FlexView","$isExpanded","theme","layout","colors","zIndex","ACTION_BAR_HEIGHT","Header","TipText","CustomElement","ChevIconWrapper","ChevIcon","UpIcon","QuestionTips","memo","width","question","userType","learnosity","containerRef","useRef","tipRef","tipContentRef","menuVisible","setMenuVisible","useState","tips","tipsMemoized","useMemo","handleClick","useCallback","prev","useLayoutEffect","useEffect","jsx","Clickable","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"question-tips.js","sources":["../../../../src/features/worksheet/worksheet/question-tips.tsx"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { ILearnosity, IWorksheetQuestion } from './worksheet-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport UpIcon from '../../../assets/line-icons/icons/up';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { ACTION_BAR_HEIGHT } from './constants';\nimport { CustomElement } from './worksheet-question/worksheet-question-styled';\n\ntype TStyledComponentProps = {\n $isExpanded: boolean;\n};\n\nconst Wrapper = styled(FlexView)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n const { layout, colors, zIndex } = theme;\n\n return `\n position: absolute;\n bottom: 0px;\n z-index: ${zIndex.QUESTION_TIPS};\n max-height: calc(${layout.gutter * 2}px + ${ACTION_BAR_HEIGHT}px);\n \n border-radius: 6px 6px 0px 0px;\n background: ${colors.REAL_BLACK_60};\n backdrop-filter: blur(8px);\n align-self: center;\n \n ${\n $isExpanded &&\n `\n max-height: calc(${layout.gutter * 15.625}px + ${ACTION_BAR_HEIGHT}px);\n overflow-y: auto;\n\n @supports selector(::-webkit-scrollbar) {\n &::-webkit-scrollbar {\n border-top-right-radius: 6px;\n width: 8px;\n background-color: ${colors.WHITE};\n }\n \n &::-webkit-scrollbar-thumb {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n background: ${colors.REAL_BLACK_60};\n }\n }\n `\n }\n `;\n});\n\nconst Header = styled(FlexView)`\n padding: 8px 12px;\n\n & * {\n background-color: transparent !important;\n }\n`;\n\nconst TipText = styled(CustomElement)<TStyledComponentProps>(\n ({ theme, $isExpanded }) => `\n color: ${theme.colors.WHITE};\n padding: 0px 0px ${ACTION_BAR_HEIGHT}px;\n ${$isExpanded ? '' : `& > * { display: inline; }`}\n font-family: 'UntitledSans-Regular';\n\n &::before {\n content: 'CUE DON’T TELL:';\n font-family: 'Athletics-Bold';\n margin-right: 8px;\n ${$isExpanded ? ` display: block; margin-bottom: 8px;` : ''}\n }\n `,\n);\n\nconst ChevIconWrapper = styled(FlexView)`\n position: sticky;\n top: 8px;\n`;\n\nconst ChevIcon = styled(UpIcon)<TStyledComponentProps>(({ $isExpanded, theme }) => {\n return `\n transform: rotate(${$isExpanded ? 180 : 0}deg);\n transition: transform 0.3s ease;\n color: ${theme.colors.WHITE};\n cursor: pointer;\n `;\n});\n\ninterface IQuestionTips {\n width: number | string;\n userType: TUserTypes;\n learnosity: ILearnosity;\n question?: IWorksheetQuestion;\n}\n\nconst QuestionTips: FC<IQuestionTips> = memo(({ width, question, userType, learnosity }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const tipRef = useRef<HTMLDivElement>(null);\n const tipContentRef = useRef<string | null>('');\n\n const [menuVisible, setMenuVisible] = useState(false);\n\n const { teacher_tips: tips } = question?.metadata || {};\n\n const tipsMemoized = useMemo(() => {\n return tips?.toString();\n }, [tips]);\n\n const handleClick = useCallback(() => {\n if (tipContentRef.current && tipRef.current) {\n setMenuVisible(prev => !prev);\n }\n }, []);\n\n useLayoutEffect(() => {\n if (tipRef.current && tips) {\n tipContentRef.current = tipRef.current.textContent;\n\n learnosity.renderMath('mathjax');\n }\n }, [learnosity, tips]);\n\n useEffect(() => {\n if (!tipsMemoized) {\n setMenuVisible(false);\n }\n }, [tipsMemoized]);\n\n if (userType !== 'TEACHER' || !tipsMemoized) return null;\n\n return (\n <Wrapper ref={containerRef} $width={width} $isExpanded={menuVisible}>\n <Clickable label=\"Teacher Tip\" onClick={!menuVisible ? handleClick : undefined}>\n <Header $flexDirection=\"row\" $flexGap={10} $justifyContent=\"space-between\">\n <FlexView $flexDirection=\"row\" $flexGap={5}>\n <TipText\n ref={tipRef}\n dangerouslySetInnerHTML={{ __html: tipsMemoized }}\n $isExpanded={menuVisible}\n />\n </FlexView>\n\n <ChevIconWrapper $width={20} $height={20}>\n <ChevIcon $isExpanded={menuVisible} onClick={menuVisible ? handleClick : undefined} />\n </ChevIconWrapper>\n </Header>\n </Clickable>\n </Wrapper>\n );\n});\n\nexport default QuestionTips;\n"],"names":["Wrapper","styled","FlexView","$isExpanded","theme","layout","colors","zIndex","ACTION_BAR_HEIGHT","Header","TipText","CustomElement","ChevIconWrapper","ChevIcon","UpIcon","QuestionTips","memo","width","question","userType","learnosity","containerRef","useRef","tipRef","tipContentRef","menuVisible","setMenuVisible","useState","tips","tipsMemoized","useMemo","handleClick","useCallback","prev","useLayoutEffect","useEffect","jsx","Clickable","jsxs"],"mappings":"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"}