analytica-frontend-lib 1.6.21 → 1.6.22

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 (405) hide show
  1. package/dist/AccessReportModal/index.js +1 -1
  2. package/dist/AccessReportModal/index.mjs +1 -1
  3. package/dist/AccessibilityWidget/index.js +1 -1
  4. package/dist/AccessibilityWidget/index.mjs +1 -1
  5. package/dist/Accordation/index.js +1 -1
  6. package/dist/Accordation/index.mjs +1 -1
  7. package/dist/ActivitiesHistory/index.js +19 -19
  8. package/dist/ActivitiesHistory/index.mjs +18 -18
  9. package/dist/ActivityCardQuestionBanks/index.js +19 -19
  10. package/dist/ActivityCardQuestionBanks/index.mjs +18 -18
  11. package/dist/ActivityCardQuestionPreview/index.js +19 -19
  12. package/dist/ActivityCardQuestionPreview/index.mjs +18 -18
  13. package/dist/ActivityCreate/ActivityCreate.utils/index.js +3 -3
  14. package/dist/ActivityCreate/ActivityCreate.utils/index.mjs +2 -2
  15. package/dist/ActivityCreate/ActivityCreateContent/index.js +19 -19
  16. package/dist/ActivityCreate/ActivityCreateContent/index.mjs +18 -18
  17. package/dist/ActivityCreate/index.js +19 -19
  18. package/dist/ActivityCreate/index.mjs +18 -18
  19. package/dist/ActivityDetails/index.js +19 -19
  20. package/dist/ActivityDetails/index.mjs +18 -18
  21. package/dist/ActivityFilters/index.js +19 -19
  22. package/dist/ActivityFilters/index.mjs +18 -18
  23. package/dist/ActivityPageLayout/index.js +19 -19
  24. package/dist/ActivityPageLayout/index.mjs +18 -18
  25. package/dist/ActivityPreview/index.js +19 -19
  26. package/dist/ActivityPreview/index.mjs +18 -18
  27. package/dist/Alert/index.js +1 -1
  28. package/dist/Alert/index.mjs +1 -1
  29. package/dist/AlertDialog/index.js +1 -1
  30. package/dist/AlertDialog/index.mjs +1 -1
  31. package/dist/AlertManager/index.js +19 -19
  32. package/dist/AlertManager/index.mjs +18 -18
  33. package/dist/AlertManagerView/index.js +1 -1
  34. package/dist/AlertManagerView/index.mjs +1 -1
  35. package/dist/Alternative/index.js +1 -1
  36. package/dist/Alternative/index.mjs +1 -1
  37. package/dist/AnnouncementModal/index.js +1 -1
  38. package/dist/AnnouncementModal/index.mjs +1 -1
  39. package/dist/AnnouncementsGate/index.js +1 -1
  40. package/dist/AnnouncementsGate/index.mjs +1 -1
  41. package/dist/AnswerKeyModal/index.js +1 -1
  42. package/dist/AnswerKeyModal/index.mjs +1 -1
  43. package/dist/AppHeader/index.js +1 -1
  44. package/dist/AppHeader/index.mjs +1 -1
  45. package/dist/AppLayout/index.js +1 -1
  46. package/dist/AppLayout/index.mjs +1 -1
  47. package/dist/Avatar/index.js +1 -1
  48. package/dist/Avatar/index.mjs +1 -1
  49. package/dist/Badge/index.js +1 -1
  50. package/dist/Badge/index.mjs +1 -1
  51. package/dist/BreadcrumbMenu/index.js +1 -1
  52. package/dist/BreadcrumbMenu/index.mjs +1 -1
  53. package/dist/Button/index.js +1 -1
  54. package/dist/Button/index.mjs +1 -1
  55. package/dist/Calendar/index.js +1 -1
  56. package/dist/Calendar/index.mjs +1 -1
  57. package/dist/CalendarCard/index.js +1 -1
  58. package/dist/CalendarCard/index.mjs +1 -1
  59. package/dist/Card/index.js +1 -1
  60. package/dist/Card/index.mjs +1 -1
  61. package/dist/ChartComponents/index.js +1 -1
  62. package/dist/ChartComponents/index.mjs +1 -1
  63. package/dist/Chat/index.js +1 -1
  64. package/dist/Chat/index.mjs +1 -1
  65. package/dist/Chatbot/index.js +1 -1
  66. package/dist/Chatbot/index.mjs +1 -1
  67. package/dist/CheckBox/index.js +1 -1
  68. package/dist/CheckBox/index.mjs +1 -1
  69. package/dist/CheckBoxGroup/index.js +19 -19
  70. package/dist/CheckBoxGroup/index.mjs +18 -18
  71. package/dist/Chips/index.js +1 -1
  72. package/dist/Chips/index.mjs +1 -1
  73. package/dist/ChoroplethMap/index.js +1 -1
  74. package/dist/ChoroplethMap/index.mjs +1 -1
  75. package/dist/ColorPicker/index.js +1 -1
  76. package/dist/ColorPicker/index.mjs +1 -1
  77. package/dist/ComparatorChart/ComparatorView/index.js +1 -1
  78. package/dist/ComparatorChart/ComparatorView/index.mjs +1 -1
  79. package/dist/CorrectActivityModal/index.js +6 -6
  80. package/dist/CorrectActivityModal/index.mjs +5 -5
  81. package/dist/Divider/index.js +1 -1
  82. package/dist/Divider/index.mjs +1 -1
  83. package/dist/DownloadButton/index.js +1 -1
  84. package/dist/DownloadButton/index.mjs +1 -1
  85. package/dist/DownloadModal/index.js +1 -1
  86. package/dist/DownloadModal/index.mjs +1 -1
  87. package/dist/DragHandleButton/index.js +1 -1
  88. package/dist/DragHandleButton/index.mjs +1 -1
  89. package/dist/DropdownMenu/index.js +1 -1
  90. package/dist/DropdownMenu/index.mjs +1 -1
  91. package/dist/EmptyState/index.js +1 -1
  92. package/dist/EmptyState/index.mjs +1 -1
  93. package/dist/EnemClassroomStartModal/index.d.ts +0 -2
  94. package/dist/EnemClassroomStartModal/index.d.ts.map +1 -1
  95. package/dist/EnemClassroomStartModal/index.js +4 -6
  96. package/dist/EnemClassroomStartModal/index.js.map +1 -1
  97. package/dist/EnemClassroomStartModal/index.mjs +3 -5
  98. package/dist/EssayThemePicker/index.js +1 -1
  99. package/dist/EssayThemePicker/index.mjs +1 -1
  100. package/dist/ExamDetailsLayout/ExamDetailsPage/index.js +19 -19
  101. package/dist/ExamDetailsLayout/ExamDetailsPage/index.mjs +18 -18
  102. package/dist/ExamPageLayout/examsTableConfig/index.js +1 -1
  103. package/dist/ExamPageLayout/examsTableConfig/index.mjs +1 -1
  104. package/dist/ExamPageLayout/index.js +19 -19
  105. package/dist/ExamPageLayout/index.mjs +18 -18
  106. package/dist/FileAttachment/index.js +1 -1
  107. package/dist/FileAttachment/index.mjs +1 -1
  108. package/dist/FileDropzone/index.js +1 -1
  109. package/dist/FileDropzone/index.mjs +1 -1
  110. package/dist/Forum/index.js +4 -4
  111. package/dist/Forum/index.mjs +3 -3
  112. package/dist/HtmlMathRenderer/index.js +1 -1
  113. package/dist/HtmlMathRenderer/index.mjs +1 -1
  114. package/dist/IconButton/index.js +1 -1
  115. package/dist/IconButton/index.mjs +1 -1
  116. package/dist/IconRoundedButton/index.js +1 -1
  117. package/dist/IconRoundedButton/index.mjs +1 -1
  118. package/dist/ImagePreviewCard/index.js +1 -1
  119. package/dist/ImagePreviewCard/index.mjs +1 -1
  120. package/dist/ImageUpload/index.js +1 -1
  121. package/dist/ImageUpload/index.mjs +1 -1
  122. package/dist/LatexRenderer/index.js +1 -1
  123. package/dist/LatexRenderer/index.mjs +1 -1
  124. package/dist/LevelBar/index.js +1 -1
  125. package/dist/LevelBar/index.mjs +1 -1
  126. package/dist/Menu/index.js +1 -1
  127. package/dist/Menu/index.mjs +1 -1
  128. package/dist/MetricBox/index.js +1 -1
  129. package/dist/MetricBox/index.mjs +1 -1
  130. package/dist/Modal/index.js +1 -1
  131. package/dist/Modal/index.mjs +1 -1
  132. package/dist/ModalComponents/index.js +1 -1
  133. package/dist/ModalComponents/index.mjs +1 -1
  134. package/dist/MultiSearchSelect/index.js +1 -1
  135. package/dist/MultiSearchSelect/index.mjs +1 -1
  136. package/dist/MultipleChoice/index.js +1 -1
  137. package/dist/MultipleChoice/index.mjs +1 -1
  138. package/dist/NavButton/index.js +1 -1
  139. package/dist/NavButton/index.mjs +1 -1
  140. package/dist/NoSearchResult/index.js +1 -1
  141. package/dist/NoSearchResult/index.mjs +1 -1
  142. package/dist/NotFound/index.js +1 -1
  143. package/dist/NotFound/index.mjs +1 -1
  144. package/dist/NotificationCard/index.js +1 -1
  145. package/dist/NotificationCard/index.mjs +1 -1
  146. package/dist/PerformanceDistributionChart/index.js +1 -1
  147. package/dist/PerformanceDistributionChart/index.mjs +1 -1
  148. package/dist/PerformanceQuestionsData/index.js +1 -1
  149. package/dist/PerformanceQuestionsData/index.mjs +1 -1
  150. package/dist/PerformanceRanking/index.js +1 -1
  151. package/dist/PerformanceRanking/index.mjs +1 -1
  152. package/dist/PerformanceReport/index.js +1 -1
  153. package/dist/PerformanceReport/index.mjs +1 -1
  154. package/dist/PerformanceReportModal/index.js +1 -1
  155. package/dist/PerformanceReportModal/index.mjs +1 -1
  156. package/dist/PeriodSelector/index.js +1 -1
  157. package/dist/PeriodSelector/index.mjs +1 -1
  158. package/dist/PrintableUsersTable/index.js +19 -19
  159. package/dist/PrintableUsersTable/index.mjs +18 -18
  160. package/dist/ProficiencyChart/index.js +1 -1
  161. package/dist/ProficiencyChart/index.mjs +1 -1
  162. package/dist/ProgressBar/index.js +1 -1
  163. package/dist/ProgressBar/index.mjs +1 -1
  164. package/dist/ProgressCircle/index.js +1 -1
  165. package/dist/ProgressCircle/index.mjs +1 -1
  166. package/dist/ProgressModal/index.js +1 -1
  167. package/dist/ProgressModal/index.mjs +1 -1
  168. package/dist/QuestionsData/index.js +1 -1
  169. package/dist/QuestionsData/index.mjs +1 -1
  170. package/dist/QuestionsPerformanceCard/index.js +19 -19
  171. package/dist/QuestionsPerformanceCard/index.mjs +18 -18
  172. package/dist/Quiz/QuizResult/index.d.ts.map +1 -1
  173. package/dist/Quiz/QuizResult/index.js +4 -4
  174. package/dist/Quiz/QuizResult/index.mjs +3 -3
  175. package/dist/Quiz/TeacherFeedbackSection/index.js +3 -3
  176. package/dist/Quiz/TeacherFeedbackSection/index.mjs +2 -2
  177. package/dist/Quiz/TeacherQuestionComment/index.js +3 -3
  178. package/dist/Quiz/TeacherQuestionComment/index.mjs +2 -2
  179. package/dist/Quiz/index.d.ts.map +1 -1
  180. package/dist/Quiz/index.js +6 -6
  181. package/dist/Quiz/index.mjs +5 -5
  182. package/dist/Quiz/useQuizStore/index.d.ts +6 -0
  183. package/dist/Quiz/useQuizStore/index.d.ts.map +1 -1
  184. package/dist/Quiz/useQuizStore/index.js +2 -2
  185. package/dist/Quiz/useQuizStore/index.mjs +1 -1
  186. package/dist/QuizTimer/index.js +3 -3
  187. package/dist/QuizTimer/index.mjs +2 -2
  188. package/dist/Radio/index.js +1 -1
  189. package/dist/Radio/index.mjs +1 -1
  190. package/dist/RangeGauge/index.js +1 -1
  191. package/dist/RangeGauge/index.mjs +1 -1
  192. package/dist/RecommendedLessonCreate/index.js +19 -19
  193. package/dist/RecommendedLessonCreate/index.mjs +18 -18
  194. package/dist/RecommendedLessonDetails/index.js +1 -1
  195. package/dist/RecommendedLessonDetails/index.mjs +1 -1
  196. package/dist/RecommendedLessonsHistory/index.js +19 -19
  197. package/dist/RecommendedLessonsHistory/index.mjs +18 -18
  198. package/dist/ReportDetailModal/index.js +1 -1
  199. package/dist/ReportDetailModal/index.mjs +1 -1
  200. package/dist/RestrictedAccess/index.js +1 -1
  201. package/dist/RestrictedAccess/index.mjs +1 -1
  202. package/dist/RichEditor/index.js +3 -3
  203. package/dist/RichEditor/index.mjs +2 -2
  204. package/dist/{RichEditorCore-F5QPQLEK.js → RichEditorCore-NEIZKFKE.js} +2 -2
  205. package/dist/{RichEditorCore-F5QPQLEK.js.map → RichEditorCore-NEIZKFKE.js.map} +1 -1
  206. package/dist/{RichEditorCore-QZYPHNRY.mjs → RichEditorCore-TLAFZ5XG.mjs} +2 -2
  207. package/dist/ScoreCircle/index.js +1 -1
  208. package/dist/ScoreCircle/index.mjs +1 -1
  209. package/dist/Search/index.js +1 -1
  210. package/dist/Search/index.mjs +1 -1
  211. package/dist/SearchSelect/index.js +1 -1
  212. package/dist/SearchSelect/index.mjs +1 -1
  213. package/dist/Select/index.js +1 -1
  214. package/dist/Select/index.mjs +1 -1
  215. package/dist/SelectionButton/index.js +1 -1
  216. package/dist/SelectionButton/index.mjs +1 -1
  217. package/dist/SendActivityModal/SendActivityModal.js +19 -19
  218. package/dist/SendActivityModal/SendActivityModal.mjs +18 -18
  219. package/dist/SendActivityModal/index.js +19 -19
  220. package/dist/SendActivityModal/index.mjs +18 -18
  221. package/dist/SendLessonModal/index.js +19 -19
  222. package/dist/SendLessonModal/index.mjs +18 -18
  223. package/dist/SimpleBarChart/index.js +1 -1
  224. package/dist/SimpleBarChart/index.mjs +1 -1
  225. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.js +19 -19
  226. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.mjs +18 -18
  227. package/dist/SimulatedPerformance/useSimulatedPerformance/index.js +1 -1
  228. package/dist/SimulatedPerformance/useSimulatedPerformance/index.mjs +1 -1
  229. package/dist/SimulatedStudentSimulationsModal/index.js +19 -19
  230. package/dist/SimulatedStudentSimulationsModal/index.mjs +5 -5
  231. package/dist/SimulationsPage/index.js +19 -19
  232. package/dist/SimulationsPage/index.mjs +18 -18
  233. package/dist/Skeleton/index.js +1 -1
  234. package/dist/Skeleton/index.mjs +1 -1
  235. package/dist/StatisticsCard/index.js +1 -1
  236. package/dist/StatisticsCard/index.mjs +1 -1
  237. package/dist/Stepper/index.js +1 -1
  238. package/dist/Stepper/index.mjs +1 -1
  239. package/dist/StudentLessonProgressModal/index.js +1 -1
  240. package/dist/StudentLessonProgressModal/index.mjs +1 -1
  241. package/dist/StudentPerformanceDetailsModal/index.js +1 -1
  242. package/dist/StudentPerformanceDetailsModal/index.mjs +1 -1
  243. package/dist/StudentRanking/index.js +1 -1
  244. package/dist/StudentRanking/index.mjs +1 -1
  245. package/dist/SubjectIcons/index.js +1 -1
  246. package/dist/SubjectIcons/index.mjs +1 -1
  247. package/dist/SubjectMenuOverflow/index.js +1 -1
  248. package/dist/SubjectMenuOverflow/index.mjs +1 -1
  249. package/dist/Support/TicketModal/index.js +1 -1
  250. package/dist/Support/TicketModal/index.mjs +1 -1
  251. package/dist/Support/index.js +1 -1
  252. package/dist/Support/index.mjs +1 -1
  253. package/dist/Table/TablePagination/index.js +1 -1
  254. package/dist/Table/TablePagination/index.mjs +1 -1
  255. package/dist/Table/index.js +1 -1
  256. package/dist/Table/index.mjs +1 -1
  257. package/dist/TableProvider/index.js +19 -19
  258. package/dist/TableProvider/index.mjs +18 -18
  259. package/dist/Text/index.js +1 -1
  260. package/dist/Text/index.mjs +1 -1
  261. package/dist/TextArea/index.js +1 -1
  262. package/dist/TextArea/index.mjs +1 -1
  263. package/dist/ThemeToggle/index.js +1 -1
  264. package/dist/ThemeToggle/index.mjs +1 -1
  265. package/dist/TimeChart/index.js +1 -1
  266. package/dist/TimeChart/index.mjs +1 -1
  267. package/dist/TimeReport/index.js +1 -1
  268. package/dist/TimeReport/index.mjs +1 -1
  269. package/dist/Toast/Toaster/index.js +1 -1
  270. package/dist/Toast/Toaster/index.mjs +1 -1
  271. package/dist/Toast/index.js +1 -1
  272. package/dist/Toast/index.mjs +1 -1
  273. package/dist/ToggleSwitch/index.js +1 -1
  274. package/dist/ToggleSwitch/index.mjs +1 -1
  275. package/dist/TokenValidation/index.js +1 -1
  276. package/dist/TokenValidation/index.mjs +1 -1
  277. package/dist/Tooltip/index.js +1 -1
  278. package/dist/Tooltip/index.mjs +1 -1
  279. package/dist/TruncatedText/index.js +1 -1
  280. package/dist/TruncatedText/index.mjs +1 -1
  281. package/dist/TypeSelector/index.js +1 -1
  282. package/dist/TypeSelector/index.mjs +1 -1
  283. package/dist/UnifiedDraftModelPage/index.js +19 -19
  284. package/dist/UnifiedDraftModelPage/index.mjs +18 -18
  285. package/dist/UnifiedHistoryPage/index.js +19 -19
  286. package/dist/UnifiedHistoryPage/index.mjs +18 -18
  287. package/dist/VerticalBarChart/index.js +1 -1
  288. package/dist/VerticalBarChart/index.mjs +1 -1
  289. package/dist/VideoPlayer/index.js +1 -1
  290. package/dist/VideoPlayer/index.mjs +1 -1
  291. package/dist/Whiteboard/index.js +1 -1
  292. package/dist/Whiteboard/index.mjs +1 -1
  293. package/dist/{chunk-JBAGQ7L5.js → chunk-3VG5MEMY.js} +14 -13
  294. package/dist/chunk-3VG5MEMY.js.map +1 -0
  295. package/dist/{chunk-ED23HOE6.mjs → chunk-5NIU4XJY.mjs} +7 -6
  296. package/dist/chunk-5NIU4XJY.mjs.map +1 -0
  297. package/dist/{chunk-DDZDNGBU.mjs → chunk-64WGFT5E.mjs} +3 -1
  298. package/dist/chunk-64WGFT5E.mjs.map +1 -0
  299. package/dist/{chunk-QN32O3J3.js → chunk-6MK23BTK.js} +62 -62
  300. package/dist/{chunk-QN32O3J3.js.map → chunk-6MK23BTK.js.map} +1 -1
  301. package/dist/{chunk-XX4WE4TL.js → chunk-726PIA5M.js} +1 -1
  302. package/dist/chunk-726PIA5M.js.map +1 -0
  303. package/dist/{chunk-VZJKHIHN.mjs → chunk-7KALNPIG.mjs} +4 -4
  304. package/dist/{chunk-NQNEG4KR.mjs → chunk-7VKFZHWP.mjs} +11 -10
  305. package/dist/chunk-7VKFZHWP.mjs.map +1 -0
  306. package/dist/{chunk-GYQUB3VW.js → chunk-BBFV3NDF.js} +8 -6
  307. package/dist/chunk-BBFV3NDF.js.map +1 -0
  308. package/dist/{chunk-I3Z2BHGN.js → chunk-BJHYT75K.js} +3 -3
  309. package/dist/{chunk-I3Z2BHGN.js.map → chunk-BJHYT75K.js.map} +1 -1
  310. package/dist/{chunk-CFTQ24UT.mjs → chunk-CMYBNZ74.mjs} +2 -2
  311. package/dist/{chunk-R7NS5KFE.mjs → chunk-CWUNF7U6.mjs} +3 -3
  312. package/dist/{chunk-NAOHJW6H.mjs → chunk-DLHV7CZN.mjs} +6 -6
  313. package/dist/{chunk-7EXSCXPK.mjs → chunk-DMYETMZG.mjs} +2 -2
  314. package/dist/{chunk-RQPSA4QV.js → chunk-GQUTHDV2.js} +3 -3
  315. package/dist/{chunk-RQPSA4QV.js.map → chunk-GQUTHDV2.js.map} +1 -1
  316. package/dist/{chunk-OZWPOXVU.mjs → chunk-GVGDUCVF.mjs} +2 -2
  317. package/dist/{chunk-QFWY46XU.js → chunk-IMDS5NQL.js} +16 -16
  318. package/dist/{chunk-QFWY46XU.js.map → chunk-IMDS5NQL.js.map} +1 -1
  319. package/dist/{chunk-KYGFYAU7.js → chunk-JHN35HPH.js} +3 -3
  320. package/dist/{chunk-KYGFYAU7.js.map → chunk-JHN35HPH.js.map} +1 -1
  321. package/dist/{chunk-DMZTDCUF.js → chunk-JPQI2RIV.js} +3 -3
  322. package/dist/{chunk-DMZTDCUF.js.map → chunk-JPQI2RIV.js.map} +1 -1
  323. package/dist/{chunk-LXX5KU3O.mjs → chunk-LMDAF6LA.mjs} +2 -2
  324. package/dist/{chunk-FL4W4S6J.mjs → chunk-MOSP7FR5.mjs} +1 -1
  325. package/dist/chunk-MOSP7FR5.mjs.map +1 -0
  326. package/dist/{chunk-HZXXADG4.js → chunk-NLPBW3SW.js} +44 -43
  327. package/dist/chunk-NLPBW3SW.js.map +1 -0
  328. package/dist/{chunk-TAABXGZL.mjs → chunk-O3JP6ZMQ.mjs} +2 -2
  329. package/dist/{chunk-MFO4S7T5.js → chunk-PJOBOBNJ.js} +3 -3
  330. package/dist/{chunk-MFO4S7T5.js.map → chunk-PJOBOBNJ.js.map} +1 -1
  331. package/dist/{chunk-CWGYVJTQ.mjs → chunk-PORNR2NU.mjs} +3 -3
  332. package/dist/chunk-QF3UKRIJ.js +33 -0
  333. package/dist/chunk-QF3UKRIJ.js.map +1 -0
  334. package/dist/chunk-RAHXO5YU.mjs +33 -0
  335. package/dist/chunk-RAHXO5YU.mjs.map +1 -0
  336. package/dist/{chunk-BTZANNVO.js → chunk-RQ65U5G2.js} +3 -3
  337. package/dist/{chunk-BTZANNVO.js.map → chunk-RQ65U5G2.js.map} +1 -1
  338. package/dist/{chunk-Q56I63FO.mjs → chunk-RVGLLMWG.mjs} +2 -2
  339. package/dist/{chunk-VVRRAF6H.js → chunk-S2S7TK3L.js} +49 -36
  340. package/dist/chunk-S2S7TK3L.js.map +1 -0
  341. package/dist/{chunk-INIH23HU.js → chunk-VF6QXUX3.js} +2 -2
  342. package/dist/{chunk-INIH23HU.js.map → chunk-VF6QXUX3.js.map} +1 -1
  343. package/dist/{chunk-QWC5GC2Q.mjs → chunk-WY7V5UJN.mjs} +2 -2
  344. package/dist/{chunk-OCKO7T7L.js → chunk-XQAYZBLL.js} +3 -3
  345. package/dist/{chunk-OCKO7T7L.js.map → chunk-XQAYZBLL.js.map} +1 -1
  346. package/dist/{chunk-ATGLKKXI.js → chunk-Y7ZBWTD7.js} +17 -17
  347. package/dist/{chunk-ATGLKKXI.js.map → chunk-Y7ZBWTD7.js.map} +1 -1
  348. package/dist/{chunk-7XWWI5EY.js → chunk-YFIB3YNQ.js} +11 -11
  349. package/dist/{chunk-7XWWI5EY.js.map → chunk-YFIB3YNQ.js.map} +1 -1
  350. package/dist/{chunk-UCWTF336.mjs → chunk-YWGJAB63.mjs} +2 -2
  351. package/dist/{chunk-4MPXVPBQ.mjs → chunk-YYHS2TM6.mjs} +43 -30
  352. package/dist/chunk-YYHS2TM6.mjs.map +1 -0
  353. package/dist/components/Quiz/Quiz.utils.d.ts +8 -0
  354. package/dist/components/Quiz/Quiz.utils.d.ts.map +1 -1
  355. package/dist/hooks/useAppContent/index.js +19 -19
  356. package/dist/hooks/useAppContent/index.mjs +18 -18
  357. package/dist/hooks/useComparator/index.js +1 -1
  358. package/dist/hooks/useComparator/index.mjs +1 -1
  359. package/dist/hooks/useDraftAutoSave/index.js +3 -3
  360. package/dist/hooks/useDraftAutoSave/index.mjs +2 -2
  361. package/dist/index.js +19 -19
  362. package/dist/index.mjs +18 -18
  363. package/dist/types/enemClassroom/index.d.ts +29 -2
  364. package/dist/types/enemClassroom/index.d.ts.map +1 -1
  365. package/dist/types/enemClassroom/index.js +4 -2
  366. package/dist/types/enemClassroom/index.js.map +1 -1
  367. package/dist/types/enemClassroom/index.mjs +3 -1
  368. package/dist/types/enemClassroom.d.ts +29 -2
  369. package/dist/types/enemClassroom.d.ts.map +1 -1
  370. package/dist/types/questionTypes/index.js +1 -1
  371. package/dist/types/questionTypes/index.mjs +1 -1
  372. package/dist/utils/index.js +1 -1
  373. package/dist/utils/index.mjs +1 -1
  374. package/dist/utils/renderSubjectCell/index.js +1 -1
  375. package/dist/utils/renderSubjectCell/index.mjs +1 -1
  376. package/dist/utils/renderTextCell/index.js +1 -1
  377. package/dist/utils/renderTextCell/index.mjs +1 -1
  378. package/package.json +1 -1
  379. package/dist/chunk-4MPXVPBQ.mjs.map +0 -1
  380. package/dist/chunk-DDZDNGBU.mjs.map +0 -1
  381. package/dist/chunk-ED23HOE6.mjs.map +0 -1
  382. package/dist/chunk-FL4W4S6J.mjs.map +0 -1
  383. package/dist/chunk-GYQUB3VW.js.map +0 -1
  384. package/dist/chunk-HZXXADG4.js.map +0 -1
  385. package/dist/chunk-JBAGQ7L5.js.map +0 -1
  386. package/dist/chunk-ND5M3DZA.mjs +0 -21
  387. package/dist/chunk-ND5M3DZA.mjs.map +0 -1
  388. package/dist/chunk-NQNEG4KR.mjs.map +0 -1
  389. package/dist/chunk-NYKBCQUO.js +0 -21
  390. package/dist/chunk-NYKBCQUO.js.map +0 -1
  391. package/dist/chunk-VVRRAF6H.js.map +0 -1
  392. package/dist/chunk-XX4WE4TL.js.map +0 -1
  393. /package/dist/{RichEditorCore-QZYPHNRY.mjs.map → RichEditorCore-TLAFZ5XG.mjs.map} +0 -0
  394. /package/dist/{chunk-VZJKHIHN.mjs.map → chunk-7KALNPIG.mjs.map} +0 -0
  395. /package/dist/{chunk-CFTQ24UT.mjs.map → chunk-CMYBNZ74.mjs.map} +0 -0
  396. /package/dist/{chunk-R7NS5KFE.mjs.map → chunk-CWUNF7U6.mjs.map} +0 -0
  397. /package/dist/{chunk-NAOHJW6H.mjs.map → chunk-DLHV7CZN.mjs.map} +0 -0
  398. /package/dist/{chunk-7EXSCXPK.mjs.map → chunk-DMYETMZG.mjs.map} +0 -0
  399. /package/dist/{chunk-OZWPOXVU.mjs.map → chunk-GVGDUCVF.mjs.map} +0 -0
  400. /package/dist/{chunk-LXX5KU3O.mjs.map → chunk-LMDAF6LA.mjs.map} +0 -0
  401. /package/dist/{chunk-TAABXGZL.mjs.map → chunk-O3JP6ZMQ.mjs.map} +0 -0
  402. /package/dist/{chunk-CWGYVJTQ.mjs.map → chunk-PORNR2NU.mjs.map} +0 -0
  403. /package/dist/{chunk-Q56I63FO.mjs.map → chunk-RVGLLMWG.mjs.map} +0 -0
  404. /package/dist/{chunk-QWC5GC2Q.mjs.map → chunk-WY7V5UJN.mjs.map} +0 -0
  405. /package/dist/{chunk-UCWTF336.mjs.map → chunk-YWGJAB63.mjs.map} +0 -0
package/dist/index.mjs CHANGED
@@ -94,7 +94,7 @@ import {
94
94
  useSimulatedSubjects,
95
95
  useStudentsFilter,
96
96
  useUserAccessData
97
- } from "./chunk-NAOHJW6H.mjs";
97
+ } from "./chunk-DLHV7CZN.mjs";
98
98
  import {
99
99
  buildExamPackagePages
100
100
  } from "./chunk-RRID37Y3.mjs";
@@ -196,7 +196,7 @@ import {
196
196
  } from "./chunk-SZ4UPEXQ.mjs";
197
197
  import {
198
198
  useDraftAutoSave
199
- } from "./chunk-OZWPOXVU.mjs";
199
+ } from "./chunk-GVGDUCVF.mjs";
200
200
  import {
201
201
  DEFAULT_EXAM_DETAILS_PAGINATION,
202
202
  StudentAnswerDisplayStatus,
@@ -285,13 +285,13 @@ import {
285
285
  QuizResultHeaderTitle,
286
286
  QuizResultPerformance,
287
287
  QuizResultTitle
288
- } from "./chunk-ED23HOE6.mjs";
288
+ } from "./chunk-5NIU4XJY.mjs";
289
289
  import {
290
290
  TeacherFeedbackSection
291
- } from "./chunk-QWC5GC2Q.mjs";
291
+ } from "./chunk-WY7V5UJN.mjs";
292
292
  import {
293
293
  TeacherQuestionComment
294
- } from "./chunk-Q56I63FO.mjs";
294
+ } from "./chunk-RVGLLMWG.mjs";
295
295
  import {
296
296
  RecommendedLessonDetails_default,
297
297
  StudentPerformanceModal
@@ -406,7 +406,7 @@ import {
406
406
  } from "./chunk-DZMWZNQK.mjs";
407
407
  import {
408
408
  Forum
409
- } from "./chunk-CFTQ24UT.mjs";
409
+ } from "./chunk-CMYBNZ74.mjs";
410
410
  import "./chunk-CERPYLMY.mjs";
411
411
  import {
412
412
  useAlertFormStore
@@ -428,13 +428,13 @@ import {
428
428
  import "./chunk-7CIEFLUE.mjs";
429
429
  import {
430
430
  EnemClassroomStartModal_default
431
- } from "./chunk-4MPXVPBQ.mjs";
431
+ } from "./chunk-YYHS2TM6.mjs";
432
432
  import {
433
433
  ENEM_CLASSROOM_LANGUAGE,
434
434
  ENEM_CLASSROOM_LANGUAGE_LABELS,
435
435
  ENEM_CLASSROOM_PARTICIPATION_STATUS
436
- } from "./chunk-ND5M3DZA.mjs";
437
- import "./chunk-UCWTF336.mjs";
436
+ } from "./chunk-RAHXO5YU.mjs";
437
+ import "./chunk-YWGJAB63.mjs";
438
438
  import {
439
439
  useQuestionFiltersStore
440
440
  } from "./chunk-HL7UCODK.mjs";
@@ -568,7 +568,7 @@ import {
568
568
  } from "./chunk-NCWGCMGJ.mjs";
569
569
  import {
570
570
  SimulationsDetailModal
571
- } from "./chunk-CWGYVJTQ.mjs";
571
+ } from "./chunk-PORNR2NU.mjs";
572
572
  import {
573
573
  createUseSimulations
574
574
  } from "./chunk-MHRJKJBN.mjs";
@@ -746,7 +746,7 @@ import {
746
746
  } from "./chunk-6KIDNQFP.mjs";
747
747
  import {
748
748
  RichEditor
749
- } from "./chunk-TAABXGZL.mjs";
749
+ } from "./chunk-O3JP6ZMQ.mjs";
750
750
  import {
751
751
  ImageUpload
752
752
  } from "./chunk-LXP6LRHO.mjs";
@@ -771,10 +771,10 @@ import {
771
771
  QuizHeader,
772
772
  QuizQuestionList,
773
773
  QuizTitle
774
- } from "./chunk-NQNEG4KR.mjs";
774
+ } from "./chunk-7VKFZHWP.mjs";
775
775
  import {
776
776
  QuizTimer_default
777
- } from "./chunk-LXX5KU3O.mjs";
777
+ } from "./chunk-LMDAF6LA.mjs";
778
778
  import {
779
779
  AlertDialog
780
780
  } from "./chunk-CKTHUTMH.mjs";
@@ -845,14 +845,14 @@ import {
845
845
  } from "./chunk-YUL3MXIB.mjs";
846
846
  import {
847
847
  CorrectActivityModal_default
848
- } from "./chunk-VZJKHIHN.mjs";
848
+ } from "./chunk-7KALNPIG.mjs";
849
849
  import "./chunk-MCYODANA.mjs";
850
850
  import {
851
851
  QUESTION_STATUS as QUESTION_STATUS2,
852
852
  TrueFalseStatementList,
853
853
  convertApiResponseToCorrectionData,
854
854
  getQuestionStatusBadgeConfig
855
- } from "./chunk-7EXSCXPK.mjs";
855
+ } from "./chunk-DMYETMZG.mjs";
856
856
  import {
857
857
  QuestionCommentField
858
858
  } from "./chunk-22FRIL3I.mjs";
@@ -875,10 +875,10 @@ import {
875
875
  QuizMultipleChoice,
876
876
  QuizTrueOrFalse,
877
877
  getStatusBadge
878
- } from "./chunk-R7NS5KFE.mjs";
878
+ } from "./chunk-CWUNF7U6.mjs";
879
879
  import {
880
880
  formatExamInfo
881
- } from "./chunk-DDZDNGBU.mjs";
881
+ } from "./chunk-64WGFT5E.mjs";
882
882
  import {
883
883
  TrueFalseEnum
884
884
  } from "./chunk-5GYKI7WV.mjs";
@@ -1204,7 +1204,7 @@ import {
1204
1204
  QUIZ_TYPE,
1205
1205
  SUBTYPE_ENUM,
1206
1206
  useQuizStore
1207
- } from "./chunk-FL4W4S6J.mjs";
1207
+ } from "./chunk-MOSP7FR5.mjs";
1208
1208
  import {
1209
1209
  QuizVariant
1210
1210
  } from "./chunk-RB5U4DHU.mjs";
@@ -54,10 +54,37 @@ export interface EnemClassroomExam {
54
54
  * is not shown (day 2).
55
55
  */
56
56
  languageChoice: boolean;
57
- /** What the panel card says while the exam waits to be started; written by the backoffice. */
58
- bannerText: string;
57
+ /** The texts of the panel card and of the start modal, as the backoffice wrote them. */
58
+ studentTexts: EnemClassroomStudentTexts;
59
59
  surveyQuestions: EnemClassroomSurveyQuestion[];
60
60
  }
61
+ /**
62
+ * Every text the student sees around the exam — the panel card and the
63
+ * introduction step of the start modal. The backoffice rewrites them per
64
+ * exam; the API always sends the full set.
65
+ */
66
+ export interface EnemClassroomStudentTexts {
67
+ /** The card's first line. */
68
+ bannerTitle: string;
69
+ /** The card's second line; empty hides it. */
70
+ bannerSubtitle: string;
71
+ /** The card's body line. */
72
+ bannerText: string;
73
+ /** Bullet list under the body; empty hides it. */
74
+ bannerItems: string[];
75
+ /** The call to action on the card's right. */
76
+ bannerCta: string;
77
+ /** Above the introduction video; only shown when the exam has one. */
78
+ introVideoText: string;
79
+ /** The heading over the warnings of the introduction step. */
80
+ introHeading: string;
81
+ /** The first warning's title (the other two are fixed). */
82
+ introWarningTitle: string;
83
+ /** The first warning's description. */
84
+ introWarningText: string;
85
+ }
86
+ /** The texts the API sends unless the backoffice wrote others; stories and tests start from here. */
87
+ export declare const ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS: EnemClassroomStudentTexts;
61
88
  /** A survey answer; `null` means the student skipped the question. */
62
89
  export interface EnemClassroomSurveyAnswer {
63
90
  questionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"enemClassroom.d.ts","sourceRoot":"","sources":["../../src/types/enemClassroom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAC/B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,qBAAqB,EACrB,MAAM,CAIP,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mCAAmC;;;;CAItC,CAAC;AAEX,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,OAAO,mCAAmC,CAAC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,2BAA2B,EAAE,CAAC;CAChD;AAED,sEAAsE;AACtE,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,4CAA4C;AAC5C,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,gCAAgC,CAAC;IACzC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,eAAe;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oFAAoF;IACpF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,oCAAoC;AACpC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,oDAAoD;QACpD,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC/B,qCAAqC;QACrC,aAAa,EAAE,0BAA0B,GAAG,IAAI,CAAC;KAClD,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,sDAAsD;AACtD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
1
+ {"version":3,"file":"enemClassroom.d.ts","sourceRoot":"","sources":["../../src/types/enemClassroom.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,12 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkNYKBCQUOjs = require('../../chunk-NYKBCQUO.js');
6
5
 
6
+ var _chunkQF3UKRIJjs = require('../../chunk-QF3UKRIJ.js');
7
7
 
8
8
 
9
9
 
10
- exports.ENEM_CLASSROOM_LANGUAGE = _chunkNYKBCQUOjs.ENEM_CLASSROOM_LANGUAGE; exports.ENEM_CLASSROOM_LANGUAGE_LABELS = _chunkNYKBCQUOjs.ENEM_CLASSROOM_LANGUAGE_LABELS; exports.ENEM_CLASSROOM_PARTICIPATION_STATUS = _chunkNYKBCQUOjs.ENEM_CLASSROOM_PARTICIPATION_STATUS;
10
+
11
+
12
+ exports.ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS = _chunkQF3UKRIJjs.ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS; exports.ENEM_CLASSROOM_LANGUAGE = _chunkQF3UKRIJjs.ENEM_CLASSROOM_LANGUAGE; exports.ENEM_CLASSROOM_LANGUAGE_LABELS = _chunkQF3UKRIJjs.ENEM_CLASSROOM_LANGUAGE_LABELS; exports.ENEM_CLASSROOM_PARTICIPATION_STATUS = _chunkQF3UKRIJjs.ENEM_CLASSROOM_PARTICIPATION_STATUS;
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/types/enemClassroom/index.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,0DAAgC;AAChC;AACE;AACA;AACA;AACF,yQAAC","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/types/enemClassroom/index.js"}
1
+ {"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/types/enemClassroom/index.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,0DAAgC;AAChC;AACE;AACA;AACA;AACA;AACF,+WAAC","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/types/enemClassroom/index.js"}
@@ -1,9 +1,11 @@
1
1
  import {
2
+ ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS,
2
3
  ENEM_CLASSROOM_LANGUAGE,
3
4
  ENEM_CLASSROOM_LANGUAGE_LABELS,
4
5
  ENEM_CLASSROOM_PARTICIPATION_STATUS
5
- } from "../../chunk-ND5M3DZA.mjs";
6
+ } from "../../chunk-RAHXO5YU.mjs";
6
7
  export {
8
+ ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS,
7
9
  ENEM_CLASSROOM_LANGUAGE,
8
10
  ENEM_CLASSROOM_LANGUAGE_LABELS,
9
11
  ENEM_CLASSROOM_PARTICIPATION_STATUS
@@ -54,10 +54,37 @@ export interface EnemClassroomExam {
54
54
  * is not shown (day 2).
55
55
  */
56
56
  languageChoice: boolean;
57
- /** What the panel card says while the exam waits to be started; written by the backoffice. */
58
- bannerText: string;
57
+ /** The texts of the panel card and of the start modal, as the backoffice wrote them. */
58
+ studentTexts: EnemClassroomStudentTexts;
59
59
  surveyQuestions: EnemClassroomSurveyQuestion[];
60
60
  }
61
+ /**
62
+ * Every text the student sees around the exam — the panel card and the
63
+ * introduction step of the start modal. The backoffice rewrites them per
64
+ * exam; the API always sends the full set.
65
+ */
66
+ export interface EnemClassroomStudentTexts {
67
+ /** The card's first line. */
68
+ bannerTitle: string;
69
+ /** The card's second line; empty hides it. */
70
+ bannerSubtitle: string;
71
+ /** The card's body line. */
72
+ bannerText: string;
73
+ /** Bullet list under the body; empty hides it. */
74
+ bannerItems: string[];
75
+ /** The call to action on the card's right. */
76
+ bannerCta: string;
77
+ /** Above the introduction video; only shown when the exam has one. */
78
+ introVideoText: string;
79
+ /** The heading over the warnings of the introduction step. */
80
+ introHeading: string;
81
+ /** The first warning's title (the other two are fixed). */
82
+ introWarningTitle: string;
83
+ /** The first warning's description. */
84
+ introWarningText: string;
85
+ }
86
+ /** The texts the API sends unless the backoffice wrote others; stories and tests start from here. */
87
+ export declare const ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS: EnemClassroomStudentTexts;
61
88
  /** A survey answer; `null` means the student skipped the question. */
62
89
  export interface EnemClassroomSurveyAnswer {
63
90
  questionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"enemClassroom.d.ts","sourceRoot":"","sources":["../../src/types/enemClassroom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAC/B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,qBAAqB,EACrB,MAAM,CAIP,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,mCAAmC;;;;CAItC,CAAC;AAEX,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,OAAO,mCAAmC,CAAC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,2BAA2B,EAAE,CAAC;CAChD;AAED,sEAAsE;AACtE,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,4CAA4C;AAC5C,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,gCAAgC,CAAC;IACzC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,eAAe;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oFAAoF;IACpF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,oCAAoC;AACpC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,oDAAoD;QACpD,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAC/B,qCAAqC;QACrC,aAAa,EAAE,0BAA0B,GAAG,IAAI,CAAC;KAClD,CAAC;CACH;AAED,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,sDAAsD;AACtD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
1
+ {"version":3,"file":"enemClassroom.d.ts","sourceRoot":"","sources":["../../src/types/enemClassroom.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
  var _chunkERYPJBIPjs = require('../../chunk-ERYPJBIP.js');
4
- require('../../chunk-XX4WE4TL.js');
4
+ require('../../chunk-726PIA5M.js');
5
5
  require('../../chunk-YQ3JVMVB.js');
6
6
 
7
7
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  questionTypeLabels
3
3
  } from "../../chunk-GRGWBD7V.mjs";
4
- import "../../chunk-FL4W4S6J.mjs";
4
+ import "../../chunk-MOSP7FR5.mjs";
5
5
  import "../../chunk-RB5U4DHU.mjs";
6
6
  export {
7
7
  questionTypeLabels
@@ -24,7 +24,7 @@ var _chunkTN3AYOMVjs = require('../chunk-TN3AYOMV.js');
24
24
  var _chunkFPOKJGC6js = require('../chunk-FPOKJGC6.js');
25
25
  require('../chunk-5LIGAN3C.js');
26
26
  require('../chunk-6WDBJAVC.js');
27
- require('../chunk-XX4WE4TL.js');
27
+ require('../chunk-726PIA5M.js');
28
28
  require('../chunk-YQ3JVMVB.js');
29
29
 
30
30
 
@@ -24,7 +24,7 @@ import {
24
24
  } from "../chunk-WKILJIST.mjs";
25
25
  import "../chunk-FJ533SXL.mjs";
26
26
  import "../chunk-RVSZBIDS.mjs";
27
- import "../chunk-FL4W4S6J.mjs";
27
+ import "../chunk-MOSP7FR5.mjs";
28
28
  import "../chunk-RB5U4DHU.mjs";
29
29
  export {
30
30
  areFiltersEqual,
@@ -17,7 +17,7 @@ require('../../chunk-TN3AYOMV.js');
17
17
  require('../../chunk-FPOKJGC6.js');
18
18
  require('../../chunk-5LIGAN3C.js');
19
19
  require('../../chunk-6WDBJAVC.js');
20
- require('../../chunk-XX4WE4TL.js');
20
+ require('../../chunk-726PIA5M.js');
21
21
  require('../../chunk-YQ3JVMVB.js');
22
22
 
23
23
 
@@ -17,7 +17,7 @@ import "../../chunk-53ICLDGS.mjs";
17
17
  import "../../chunk-WKILJIST.mjs";
18
18
  import "../../chunk-FJ533SXL.mjs";
19
19
  import "../../chunk-RVSZBIDS.mjs";
20
- import "../../chunk-FL4W4S6J.mjs";
20
+ import "../../chunk-MOSP7FR5.mjs";
21
21
  import "../../chunk-RB5U4DHU.mjs";
22
22
  export {
23
23
  renderSubjectCell,
@@ -8,7 +8,7 @@ require('../../chunk-TN3AYOMV.js');
8
8
  require('../../chunk-FPOKJGC6.js');
9
9
  require('../../chunk-5LIGAN3C.js');
10
10
  require('../../chunk-6WDBJAVC.js');
11
- require('../../chunk-XX4WE4TL.js');
11
+ require('../../chunk-726PIA5M.js');
12
12
  require('../../chunk-YQ3JVMVB.js');
13
13
 
14
14
 
@@ -8,7 +8,7 @@ import "../../chunk-53ICLDGS.mjs";
8
8
  import "../../chunk-WKILJIST.mjs";
9
9
  import "../../chunk-FJ533SXL.mjs";
10
10
  import "../../chunk-RVSZBIDS.mjs";
11
- import "../../chunk-FL4W4S6J.mjs";
11
+ import "../../chunk-MOSP7FR5.mjs";
12
12
  import "../../chunk-RB5U4DHU.mjs";
13
13
  export {
14
14
  renderTextCell
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "analytica-frontend-lib",
3
- "version": "1.6.21",
3
+ "version": "1.6.22",
4
4
  "description": "Repositório público dos componentes utilizados nas plataformas da Analytica Ensino",
5
5
  "main": "dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/EnemClassroomStartModal/EnemClassroomStartModal.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, ChangeEvent } from 'react';\nimport Modal from '../Modal/Modal';\nimport Stepper from '../Stepper/Stepper';\nimport Button from '../Button/Button';\nimport Input from '../Input/Input';\nimport CheckBox from '../CheckBox/CheckBox';\nimport Text from '../Text/Text';\nimport VideoPlayer from '../VideoPlayer/VideoPlayer';\nimport { CaretLeftIcon } from '@phosphor-icons/react/dist/csr/CaretLeft';\nimport { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';\nimport { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';\nimport { cn } from '../../utils/utils';\nimport warningClassroomIcon from '../../assets/img/enemClassroom/warning-classroom.png';\nimport warningTimerIcon from '../../assets/img/enemClassroom/warning-timer.png';\nimport warningIrreversibleIcon from '../../assets/img/enemClassroom/warning-irreversible.png';\nimport flagEnglish from '../../assets/img/enemClassroom/flag-english.png';\nimport flagSpanish from '../../assets/img/enemClassroom/flag-spanish.png';\nimport surveyCourseIllustration from '../../assets/img/enemClassroom/survey-course.svg';\nimport surveyUniversityIllustration from '../../assets/img/enemClassroom/survey-university.png';\nimport {\n ENEM_CLASSROOM_LANGUAGE,\n ENEM_CLASSROOM_LANGUAGE_LABELS,\n type EnemClassroomExam,\n type EnemClassroomLanguage,\n type EnemClassroomStartPayload,\n type EnemClassroomSurveyQuestion,\n} from '../../types/enemClassroom';\n\n/** Title shared by every step, as in the design. */\nexport const ENEM_CLASSROOM_MODAL_TITLE = 'Simulação do ENEM em sala de aula!';\n\n/**\n * The three warnings of the introduction step. The exam only counts when\n * taken in class, so they are shown before anything else.\n */\nconst INTRO_WARNINGS = [\n {\n icon: warningClassroomIcon,\n title: 'Só vale em sala de aula',\n description:\n 'Essa simulação precisa ser feita com seu professor presente. Não vale fazer em casa!',\n },\n {\n icon: warningTimerIcon,\n title: 'O cronômetro liga na hora',\n description:\n 'Assim que clicar em começar, o tempo já corre e não para, mesmo se fechar o navegador.',\n },\n {\n icon: warningIrreversibleIcon,\n title: 'Não tem como desfazer',\n description:\n 'Iniciar fora do horário estabelecido pelo seu professor em sala de aula pode atrapalhar seu resultado!',\n },\n] as const;\n\n/** Flag shown next to each language, as in the design. */\nconst LANGUAGE_FLAGS: Record<EnemClassroomLanguage, string> = {\n [ENEM_CLASSROOM_LANGUAGE.INGLES]: flagEnglish,\n [ENEM_CLASSROOM_LANGUAGE.ESPANHOL]: flagSpanish,\n};\n\n/**\n * Illustration of each survey step, in the order the steps are asked: the\n * course question, then the university one.\n *\n * Fixed here rather than sent by the backoffice, so it is keyed by position —\n * reordering the questions there moves the illustration with the position,\n * not with the question. A question past the end simply gets none.\n */\nconst SURVEY_ILLUSTRATIONS = [\n surveyCourseIllustration,\n surveyUniversityIllustration,\n] as const;\n\n/**\n * The white card the warnings and the options sit on. Same vocabulary as\n * SelectionButton, so the modal reads like the rest of the design system\n * against the modal's `secondary-50` background.\n */\nconst CARD_CLASSES =\n 'rounded-xl border border-border-50 bg-background shadow-soft-shadow-1';\n\n/**\n * Gradiente da identidade da simulação em sala de aula — os mesmos tons do\n * card do painel do aluno. Não sai dos tokens de tema porque é a marca da\n * prova, não a da instituição.\n */\n/*\n * Gradiente literal, e não `bg-gradient-to-r from-… to-…`: o Tailwind v4\n * interpola `in oklab`, o que muda os tons do meio em relação ao sRGB do CSS\n * que veio do design.\n */\nconst GRADIENT_CTA_CLASSES =\n 'bg-[linear-gradient(270deg,#B21FF6_0%,#F95493_100%)] hover:opacity-90 transition-opacity';\n\n/**\n * One selectable option: a card carrying an optional icon and a label.\n *\n * The radio control itself is visually hidden — in the design the card's own\n * border carries the selection. The native input stays in the tree so the\n * options remain a real radio group: arrow keys move between them and screen\n * readers announce \"1 of 2\", which a set of toggle buttons would not.\n */\nconst OptionCard = ({\n name,\n value,\n label,\n iconSrc,\n checked,\n onSelect,\n testId,\n}: {\n name: string;\n value: string;\n label: string;\n iconSrc?: string;\n checked: boolean;\n onSelect: () => void;\n testId?: string;\n}) => (\n <label\n className={cn(\n CARD_CLASSES,\n 'flex flex-row items-center gap-3 px-4 py-3.5',\n 'cursor-pointer transition-colors hover:bg-background-100',\n 'focus-within:ring-2 focus-within:ring-indicator-info',\n checked && 'border-primary-700 ring-1 ring-primary-700'\n )}\n >\n <input\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n onChange={onSelect}\n className=\"sr-only\"\n data-testid={testId}\n />\n {iconSrc && (\n <img src={iconSrc} alt=\"\" aria-hidden className=\"w-6 h-6 flex-shrink-0\" />\n )}\n <Text size=\"sm\" weight=\"semibold\" className=\"text-text-900\">\n {label}\n </Text>\n </label>\n);\n\n/**\n * How a survey question was answered. The student either writes an answer or\n * ticks \"ainda estou pensando\" — the tick clears and disables the field, so\n * the two never disagree.\n */\ninterface SurveyAnswerDraft {\n skipped: boolean;\n text: string;\n}\n\n/**\n * One line of the summary: the step's name over what the student answered.\n */\nconst SummaryRow = ({ label, value }: { label: string; value: string }) => (\n <div className=\"flex flex-col rounded-lg bg-primary-50 px-3 py-2\">\n <Text as=\"dt\" size=\"sm\" weight=\"bold\" className=\"text-primary-800\">\n {label}\n </Text>\n <Text as=\"dd\" size=\"sm\" className=\"text-text-600\">\n {value}\n </Text>\n </div>\n);\n\n/** The introduction is always first; the first choice comes right after it. */\nconst INTRO_STEP = 0;\nconst FIRST_CHOICE_STEP = 1;\n\n/** One screen of the flow. Which ones exist depends on the exam. */\ntype FlowStep =\n | { kind: 'intro' }\n | { kind: 'language' }\n | { kind: 'survey'; question: EnemClassroomSurveyQuestion; index: number }\n | { kind: 'summary' };\n\nexport interface EnemClassroomStartModalProps {\n isOpen: boolean;\n onClose: () => void;\n exam: EnemClassroomExam;\n /** Called with everything the start endpoint needs. */\n onStart: (payload: EnemClassroomStartPayload) => void;\n /** Disables the final button while the start request is in flight. */\n isStarting?: boolean;\n}\n\n/**\n * Whether a survey draft is complete: skipped, or answered with some text.\n */\nconst isSurveyAnswerComplete = (draft: SurveyAnswerDraft | undefined) =>\n draft?.skipped === true || (draft?.text.trim().length ?? 0) > 0;\n\n/**\n * The text shown for a survey answer on the summary screen.\n */\nconst describeSurveyAnswer = (\n question: EnemClassroomSurveyQuestion,\n draft: SurveyAnswerDraft | undefined\n) => (draft && !draft.skipped ? draft.text.trim() : question.skipLabel);\n\n/**\n * Start flow of the in-classroom ENEM simulation.\n *\n * Steps, in order: introduction (video + warnings), foreign language — only\n * when the exam offers the choice —, one step per survey question, and a\n * summary the student confirms before the exam opens. The stepper only lists\n * the steps that carry a choice; the summary is a screen of its own, as in\n * the design.\n *\n * Presentational: it collects the choices and hands them to `onStart`; the\n * caller talks to the API.\n *\n * @example\n * ```tsx\n * <EnemClassroomStartModal\n * isOpen={open}\n * onClose={() => setOpen(false)}\n * exam={exam}\n * onStart={(payload) => start(exam.id, payload)}\n * />\n * ```\n */\nconst EnemClassroomStartModal = ({\n isOpen,\n onClose,\n exam,\n onStart,\n isStarting = false,\n}: EnemClassroomStartModalProps) => {\n const surveyQuestions = useMemo(\n () => [...exam.surveyQuestions].sort((a, b) => a.position - b.position),\n [exam.surveyQuestions]\n );\n // The screens this exam has: no language step on an exam without the\n // choice, so the student goes from the warnings straight to the survey.\n const steps = useMemo<FlowStep[]>(\n () => [\n { kind: 'intro' },\n ...(exam.languageChoice ? [{ kind: 'language' } as const] : []),\n ...surveyQuestions.map((question, index) => ({\n kind: 'survey' as const,\n question,\n index,\n })),\n { kind: 'summary' },\n ],\n [exam.languageChoice, surveyQuestions]\n );\n const summaryStep = steps.length - 1;\n\n const [step, setStep] = useState(INTRO_STEP);\n const [language, setLanguage] = useState<EnemClassroomLanguage | null>(null);\n const [answers, setAnswers] = useState<Record<string, SurveyAnswerDraft>>({});\n\n // Every opening starts from the introduction with nothing filled in — and\n // so does a different exam handed in while the modal is open, whose steps\n // and questions are not the ones the answers were given to.\n useEffect(() => {\n if (isOpen) {\n setStep(INTRO_STEP);\n setLanguage(null);\n setAnswers({});\n }\n }, [isOpen, exam.id]);\n\n const stepperSteps = useMemo(\n () =>\n steps\n .filter((flowStep) => flowStep.kind !== 'summary')\n .map((flowStep) => {\n if (flowStep.kind === 'intro') {\n return {\n id: 'intro',\n label: 'Introdução',\n state: 'pending' as const,\n };\n }\n if (flowStep.kind === 'language') {\n return {\n id: 'language',\n label: 'Língua estrangeira',\n state: 'pending' as const,\n };\n }\n return {\n id: flowStep.question.id,\n label: flowStep.question.stepLabel,\n state: 'pending' as const,\n };\n }),\n [steps]\n );\n\n const currentStep = steps[step] ?? steps[INTRO_STEP];\n const currentQuestion =\n currentStep.kind === 'survey' ? currentStep.question : null;\n\n const canGoNext =\n currentStep.kind === 'language'\n ? language !== null\n : currentQuestion !== null &&\n isSurveyAnswerComplete(answers[currentQuestion.id]);\n\n const updateAnswer = useCallback(\n (questionId: string, patch: Partial<SurveyAnswerDraft>) => {\n setAnswers((prev) => {\n const current = prev[questionId] ?? { skipped: false, text: '' };\n return { ...prev, [questionId]: { ...current, ...patch } };\n });\n },\n []\n );\n\n const handleStart = useCallback(() => {\n // The language is only a choice on an exam that offers one.\n if (exam.languageChoice && !language) return;\n onStart({\n language: exam.languageChoice ? language : null,\n surveyAnswers: surveyQuestions.map((question) => {\n const draft = answers[question.id];\n const text = draft && !draft.skipped ? draft.text.trim() : '';\n return { questionId: question.id, answer: text || null };\n }),\n });\n }, [exam.languageChoice, language, surveyQuestions, answers, onStart]);\n\n const renderIntroStep = () => (\n <div className=\"flex flex-col gap-6\" data-testid=\"enem-classroom-intro\">\n {exam.videoUrl && (\n <VideoPlayer\n src={exam.videoUrl}\n title={exam.title}\n // O desenho mostra só o vídeo: o nome da prova já está no título do\n // modal. O `title` fica para rotular o player nos leitores de tela.\n hideHeader\n className=\"w-full rounded-xl overflow-hidden\"\n autoSave={false}\n />\n )}\n\n <div className=\"flex flex-col gap-4\">\n <Text size=\"lg\" weight=\"bold\" className=\"text-text-950\">\n Ei, lê isso antes de começar!\n </Text>\n {INTRO_WARNINGS.map(({ icon, title, description }) => (\n <div\n key={title}\n className={cn(CARD_CLASSES, 'flex flex-row gap-4 items-start p-4')}\n >\n <img\n src={icon}\n alt=\"\"\n aria-hidden\n className=\"flex-shrink-0 w-10 h-10\"\n />\n <div className=\"flex flex-col gap-1\">\n <Text size=\"md\" weight=\"bold\" className=\"text-text-950\">\n {title}\n </Text>\n <Text size=\"sm\" className=\"text-text-600\">\n {description}\n </Text>\n </div>\n </div>\n ))}\n </div>\n\n <Button\n size=\"large\"\n variant=\"solid\"\n action=\"primary\"\n className={cn('w-full', GRADIENT_CTA_CLASSES)}\n onClick={() => setStep(FIRST_CHOICE_STEP)}\n data-testid=\"enem-classroom-intro-continue\"\n >\n Estou em sala. Quero começar!\n </Button>\n </div>\n );\n\n const renderLanguageStep = () => (\n <div className=\"flex flex-col gap-4\" data-testid=\"enem-classroom-language\">\n <Text\n id=\"enem-classroom-language-prompt\"\n size=\"lg\"\n weight=\"bold\"\n className=\"text-text-950\"\n >\n Qual língua estrangeira você vai usar na simulação?\n </Text>\n <div\n role=\"radiogroup\"\n aria-labelledby=\"enem-classroom-language-prompt\"\n className=\"flex flex-col gap-4\"\n >\n {Object.values(ENEM_CLASSROOM_LANGUAGE).map((value) => (\n <OptionCard\n key={value}\n name=\"enem-classroom-language\"\n value={value}\n label={ENEM_CLASSROOM_LANGUAGE_LABELS[value]}\n iconSrc={LANGUAGE_FLAGS[value]}\n checked={language === value}\n onSelect={() => setLanguage(value)}\n testId={`enem-classroom-language-${value.toLowerCase()}`}\n />\n ))}\n </div>\n </div>\n );\n\n const renderSurveyStep = (\n question: EnemClassroomSurveyQuestion,\n index: number\n ) => {\n const draft = answers[question.id];\n const illustration = SURVEY_ILLUSTRATIONS[index];\n // The two ways of answering disable each other, so they can never\n // contradict — and either one on its own releases the step.\n const hasText = (draft?.text.trim().length ?? 0) > 0;\n const isSkipped = draft?.skipped === true;\n return (\n <div\n className=\"flex flex-col gap-4\"\n data-testid={`enem-classroom-survey-${question.id}`}\n >\n {illustration && (\n <img\n src={illustration}\n alt=\"\"\n aria-hidden\n className=\"w-[220px] max-w-full self-center\"\n data-testid=\"enem-classroom-survey-illustration\"\n />\n )}\n <Text\n id={`enem-classroom-survey-prompt-${question.id}`}\n size=\"lg\"\n weight=\"bold\"\n className=\"text-text-950\"\n >\n {question.prompt}\n </Text>\n <div className=\"flex flex-col gap-2\">\n <Text\n as=\"label\"\n htmlFor={`enem-classroom-survey-input-${question.id}`}\n size=\"sm\"\n className=\"text-text-600\"\n >\n {question.inputLabel}\n </Text>\n <Input\n id={`enem-classroom-survey-input-${question.id}`}\n variant=\"rounded\"\n placeholder={question.inputPlaceholder}\n value={draft?.text ?? ''}\n maxLength={255}\n disabled={isSkipped}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n updateAnswer(question.id, { text: event.target.value })\n }\n data-testid=\"enem-classroom-survey-input\"\n />\n </div>\n\n <CheckBox\n label={question.skipLabel}\n checked={isSkipped}\n disabled={hasText}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n updateAnswer(question.id, { skipped: event.target.checked })\n }\n data-testid=\"enem-classroom-survey-skip\"\n />\n </div>\n );\n };\n\n const renderSummaryStep = () => (\n <div\n className=\"flex flex-col items-center gap-6 text-center\"\n data-testid=\"enem-classroom-summary\"\n >\n <span className=\"flex items-center justify-center w-14 h-14 rounded-full bg-success-200 text-success-950\">\n <CheckIcon size={24} aria-hidden />\n </span>\n <div className=\"flex flex-col gap-2\">\n <Text size=\"xl\" weight=\"bold\" className=\"text-text-950\">\n Boa sorte!\n </Text>\n <Text size=\"sm\" className=\"text-text-600\">\n Sua simulação do ENEM já está para começar e o cronômetro vai iniciar.\n Respira fundo e dá o seu melhor!\n </Text>\n </div>\n\n <div\n className={cn(CARD_CLASSES, 'flex flex-col gap-3 w-full text-left p-4')}\n >\n <Text size=\"sm\" weight=\"bold\" className=\"text-text-950\">\n Suas respostas\n </Text>\n <dl className=\"flex flex-col gap-2\">\n {exam.languageChoice && (\n <SummaryRow\n label=\"Idioma\"\n value={language ? ENEM_CLASSROOM_LANGUAGE_LABELS[language] : '—'}\n />\n )}\n {surveyQuestions.map((question) => (\n <SummaryRow\n key={question.id}\n label={question.stepLabel}\n value={describeSurveyAnswer(question, answers[question.id])}\n />\n ))}\n </dl>\n <Button\n size=\"medium\"\n variant=\"outline\"\n action=\"primary\"\n className=\"self-center\"\n disabled={isStarting}\n onClick={() => setStep(FIRST_CHOICE_STEP)}\n data-testid=\"enem-classroom-review\"\n >\n Revisar minhas respostas\n </Button>\n </div>\n\n <Button\n size=\"large\"\n variant=\"solid\"\n action=\"primary\"\n className={cn('w-full', GRADIENT_CTA_CLASSES)}\n disabled={isStarting}\n onClick={handleStart}\n data-testid=\"enem-classroom-start\"\n >\n Iniciar a prova!\n </Button>\n </div>\n );\n\n const renderStepContent = () => {\n if (currentStep.kind === 'intro') return renderIntroStep();\n if (currentStep.kind === 'language') return renderLanguageStep();\n if (currentStep.kind === 'survey')\n return renderSurveyStep(currentStep.question, currentStep.index);\n return renderSummaryStep();\n };\n\n const showNavigation = step >= FIRST_CHOICE_STEP && step < summaryStep;\n const showStepper = step < summaryStep;\n\n const footer = showNavigation ? (\n <div className=\"flex flex-row justify-end gap-2 w-full\">\n <Button\n size=\"medium\"\n variant=\"outline\"\n action=\"primary\"\n iconLeft={<CaretLeftIcon size={16} aria-hidden />}\n onClick={() => setStep((current) => current - 1)}\n data-testid=\"enem-classroom-previous\"\n >\n Anterior\n </Button>\n <Button\n size=\"medium\"\n variant=\"solid\"\n action=\"primary\"\n iconRight={<CaretRightIcon size={16} aria-hidden />}\n disabled={!canGoNext}\n onClick={() => setStep((current) => current + 1)}\n data-testid=\"enem-classroom-next\"\n >\n Próximo\n </Button>\n </div>\n ) : undefined;\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n /*\n * A tela de resumo abre com o header vazio, só o X — quem dá o título\n * ali é o \"Boa sorte!\". O texto continua no <h2>, apenas oculto: o\n * `aria-labelledby` do Modal aponta pra ele, e um h2 vazio deixaria o\n * dialog sem nome acessível.\n */\n title={\n showStepper ? (\n ENEM_CLASSROOM_MODAL_TITLE\n ) : (\n <span className=\"sr-only\">{ENEM_CLASSROOM_MODAL_TITLE}</span>\n )\n }\n size=\"lg\"\n footer={footer}\n contentClassName=\"flex flex-col gap-6\"\n >\n {showStepper && (\n <Stepper steps={stepperSteps} currentStep={step} size=\"small\" />\n )}\n {renderStepContent()}\n </Modal>\n );\n};\n\nexport default EnemClassroomStartModal;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa,WAAW,SAAS,gBAA6B;AAQvE,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;A;;;;;;;;;;;;;;;;;;;;;;;AA+GxB,SASE,KATF;AA5FK,IAAM,6BAA6B;AAM1C,IAAM,iBAAiB;AAAA,EACrB;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AACF;AAGA,IAAM,iBAAwD;AAAA,EAC5D,CAAC,wBAAwB,MAAM,GAAG;AAAA,EAClC,CAAC,wBAAwB,QAAQ,GAAG;AACtC;AAUA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AACF;AAOA,IAAM,eACJ;AAYF,IAAM,uBACJ;AAUF,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MASE;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACb;AAAA,IAEA;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,WAAU;AAAA,UACV,eAAa;AAAA;AAAA,MACf;AAAA,MACC,WACC,oBAAC,SAAI,KAAK,SAAS,KAAI,IAAG,eAAW,MAAC,WAAU,yBAAwB;AAAA,MAE1E,oBAAC,gBAAK,MAAK,MAAK,QAAO,YAAW,WAAU,iBACzC,iBACH;AAAA;AAAA;AACF;AAgBF,IAAM,aAAa,CAAC,EAAE,OAAO,MAAM,MACjC,qBAAC,SAAI,WAAU,oDACb;AAAA,sBAAC,gBAAK,IAAG,MAAK,MAAK,MAAK,QAAO,QAAO,WAAU,oBAC7C,iBACH;AAAA,EACA,oBAAC,gBAAK,IAAG,MAAK,MAAK,MAAK,WAAU,iBAC/B,iBACH;AAAA,GACF;AAIF,IAAM,aAAa;AACnB,IAAM,oBAAoB;AAsB1B,IAAM,yBAAyB,CAAC,UAC9B,OAAO,YAAY,SAAS,OAAO,KAAK,KAAK,EAAE,UAAU,KAAK;AAKhE,IAAM,uBAAuB,CAC3B,UACA,UACI,SAAS,CAAC,MAAM,UAAU,MAAM,KAAK,KAAK,IAAI,SAAS;AAwB7D,IAAM,0BAA0B,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACf,MAAoC;AAClC,QAAM,kBAAkB;AAAA,IACtB,MAAM,CAAC,GAAG,KAAK,eAAe,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAAA,IACtE,CAAC,KAAK,eAAe;AAAA,EACvB;AAGA,QAAM,QAAQ;AAAA,IACZ,MAAM;AAAA,MACJ,EAAE,MAAM,QAAQ;AAAA,MAChB,GAAI,KAAK,iBAAiB,CAAC,EAAE,MAAM,WAAW,CAAU,IAAI,CAAC;AAAA,MAC7D,GAAG,gBAAgB,IAAI,CAAC,UAAU,WAAW;AAAA,QAC3C,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF,EAAE;AAAA,MACF,EAAE,MAAM,UAAU;AAAA,IACpB;AAAA,IACA,CAAC,KAAK,gBAAgB,eAAe;AAAA,EACvC;AACA,QAAM,cAAc,MAAM,SAAS;AAEnC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,UAAU;AAC3C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAuC,IAAI;AAC3E,QAAM,CAAC,SAAS,UAAU,IAAI,SAA4C,CAAC,CAAC;AAK5E,YAAU,MAAM;AACd,QAAI,QAAQ;AACV,cAAQ,UAAU;AAClB,kBAAY,IAAI;AAChB,iBAAW,CAAC,CAAC;AAAA,IACf;AAAA,EACF,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC;AAEpB,QAAM,eAAe;AAAA,IACnB,MACE,MACG,OAAO,CAAC,aAAa,SAAS,SAAS,SAAS,EAChD,IAAI,CAAC,aAAa;AACjB,UAAI,SAAS,SAAS,SAAS;AAC7B,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,SAAS,SAAS,YAAY;AAChC,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,QACL,IAAI,SAAS,SAAS;AAAA,QACtB,OAAO,SAAS,SAAS;AAAA,QACzB,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACL,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,cAAc,MAAM,IAAI,KAAK,MAAM,UAAU;AACnD,QAAM,kBACJ,YAAY,SAAS,WAAW,YAAY,WAAW;AAEzD,QAAM,YACJ,YAAY,SAAS,aACjB,aAAa,OACb,oBAAoB,QACpB,uBAAuB,QAAQ,gBAAgB,EAAE,CAAC;AAExD,QAAM,eAAe;AAAA,IACnB,CAAC,YAAoB,UAAsC;AACzD,iBAAW,CAAC,SAAS;AACnB,cAAM,UAAU,KAAK,UAAU,KAAK,EAAE,SAAS,OAAO,MAAM,GAAG;AAC/D,eAAO,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,YAAY,MAAM;AAEpC,QAAI,KAAK,kBAAkB,CAAC,SAAU;AACtC,YAAQ;AAAA,MACN,UAAU,KAAK,iBAAiB,WAAW;AAAA,MAC3C,eAAe,gBAAgB,IAAI,CAAC,aAAa;AAC/C,cAAM,QAAQ,QAAQ,SAAS,EAAE;AACjC,cAAM,OAAO,SAAS,CAAC,MAAM,UAAU,MAAM,KAAK,KAAK,IAAI;AAC3D,eAAO,EAAE,YAAY,SAAS,IAAI,QAAQ,QAAQ,KAAK;AAAA,MACzD,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG,CAAC,KAAK,gBAAgB,UAAU,iBAAiB,SAAS,OAAO,CAAC;AAErE,QAAM,kBAAkB,MACtB,qBAAC,SAAI,WAAU,uBAAsB,eAAY,wBAC9C;AAAA,SAAK,YACJ;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,OAAO,KAAK;AAAA,QAGZ,YAAU;AAAA,QACV,WAAU;AAAA,QACV,UAAU;AAAA;AAAA,IACZ;AAAA,IAGF,qBAAC,SAAI,WAAU,uBACb;AAAA,0BAAC,gBAAK,MAAK,MAAK,QAAO,QAAO,WAAU,iBAAgB,iDAExD;AAAA,MACC,eAAe,IAAI,CAAC,EAAE,MAAM,OAAO,YAAY,MAC9C;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW,GAAG,cAAc,qCAAqC;AAAA,UAEjE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL,KAAI;AAAA,gBACJ,eAAW;AAAA,gBACX,WAAU;AAAA;AAAA,YACZ;AAAA,YACA,qBAAC,SAAI,WAAU,uBACb;AAAA,kCAAC,gBAAK,MAAK,MAAK,QAAO,QAAO,WAAU,iBACrC,iBACH;AAAA,cACA,oBAAC,gBAAK,MAAK,MAAK,WAAU,iBACvB,uBACH;AAAA,eACF;AAAA;AAAA;AAAA,QAhBK;AAAA,MAiBP,CACD;AAAA,OACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,QAAO;AAAA,QACP,WAAW,GAAG,UAAU,oBAAoB;AAAA,QAC5C,SAAS,MAAM,QAAQ,iBAAiB;AAAA,QACxC,eAAY;AAAA,QACb;AAAA;AAAA,IAED;AAAA,KACF;AAGF,QAAM,qBAAqB,MACzB,qBAAC,SAAI,WAAU,uBAAsB,eAAY,2BAC/C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAU;AAAA,QACX;AAAA;AAAA,IAED;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,mBAAgB;AAAA,QAChB,WAAU;AAAA,QAET,iBAAO,OAAO,uBAAuB,EAAE,IAAI,CAAC,UAC3C;AAAA,UAAC;AAAA;AAAA,YAEC,MAAK;AAAA,YACL;AAAA,YACA,OAAO,+BAA+B,KAAK;AAAA,YAC3C,SAAS,eAAe,KAAK;AAAA,YAC7B,SAAS,aAAa;AAAA,YACtB,UAAU,MAAM,YAAY,KAAK;AAAA,YACjC,QAAQ,2BAA2B,MAAM,YAAY,CAAC;AAAA;AAAA,UAPjD;AAAA,QAQP,CACD;AAAA;AAAA,IACH;AAAA,KACF;AAGF,QAAM,mBAAmB,CACvB,UACA,UACG;AACH,UAAM,QAAQ,QAAQ,SAAS,EAAE;AACjC,UAAM,eAAe,qBAAqB,KAAK;AAG/C,UAAM,WAAW,OAAO,KAAK,KAAK,EAAE,UAAU,KAAK;AACnD,UAAM,YAAY,OAAO,YAAY;AACrC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAa,yBAAyB,SAAS,EAAE;AAAA,QAEhD;AAAA,0BACC;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,KAAI;AAAA,cACJ,eAAW;AAAA,cACX,WAAU;AAAA,cACV,eAAY;AAAA;AAAA,UACd;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,gCAAgC,SAAS,EAAE;AAAA,cAC/C,MAAK;AAAA,cACL,QAAO;AAAA,cACP,WAAU;AAAA,cAET,mBAAS;AAAA;AAAA,UACZ;AAAA,UACA,qBAAC,SAAI,WAAU,uBACb;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,SAAS,+BAA+B,SAAS,EAAE;AAAA,gBACnD,MAAK;AAAA,gBACL,WAAU;AAAA,gBAET,mBAAS;AAAA;AAAA,YACZ;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI,+BAA+B,SAAS,EAAE;AAAA,gBAC9C,SAAQ;AAAA,gBACR,aAAa,SAAS;AAAA,gBACtB,OAAO,OAAO,QAAQ;AAAA,gBACtB,WAAW;AAAA,gBACX,UAAU;AAAA,gBACV,UAAU,CAAC,UACT,aAAa,SAAS,IAAI,EAAE,MAAM,MAAM,OAAO,MAAM,CAAC;AAAA,gBAExD,eAAY;AAAA;AAAA,YACd;AAAA,aACF;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO,SAAS;AAAA,cAChB,SAAS;AAAA,cACT,UAAU;AAAA,cACV,UAAU,CAAC,UACT,aAAa,SAAS,IAAI,EAAE,SAAS,MAAM,OAAO,QAAQ,CAAC;AAAA,cAE7D,eAAY;AAAA;AAAA,UACd;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,oBAAoB,MACxB;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAY;AAAA,MAEZ;AAAA,4BAAC,UAAK,WAAU,2FACd,8BAAC,aAAU,MAAM,IAAI,eAAW,MAAC,GACnC;AAAA,QACA,qBAAC,SAAI,WAAU,uBACb;AAAA,8BAAC,gBAAK,MAAK,MAAK,QAAO,QAAO,WAAU,iBAAgB,wBAExD;AAAA,UACA,oBAAC,gBAAK,MAAK,MAAK,WAAU,iBAAgB,0IAG1C;AAAA,WACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,cAAc,0CAA0C;AAAA,YAEtE;AAAA,kCAAC,gBAAK,MAAK,MAAK,QAAO,QAAO,WAAU,iBAAgB,4BAExD;AAAA,cACA,qBAAC,QAAG,WAAU,uBACX;AAAA,qBAAK,kBACJ;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAM;AAAA,oBACN,OAAO,WAAW,+BAA+B,QAAQ,IAAI;AAAA;AAAA,gBAC/D;AAAA,gBAED,gBAAgB,IAAI,CAAC,aACpB;AAAA,kBAAC;AAAA;AAAA,oBAEC,OAAO,SAAS;AAAA,oBAChB,OAAO,qBAAqB,UAAU,QAAQ,SAAS,EAAE,CAAC;AAAA;AAAA,kBAFrD,SAAS;AAAA,gBAGhB,CACD;AAAA,iBACH;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,QAAO;AAAA,kBACP,WAAU;AAAA,kBACV,UAAU;AAAA,kBACV,SAAS,MAAM,QAAQ,iBAAiB;AAAA,kBACxC,eAAY;AAAA,kBACb;AAAA;AAAA,cAED;AAAA;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,QAAO;AAAA,YACP,WAAW,GAAG,UAAU,oBAAoB;AAAA,YAC5C,UAAU;AAAA,YACV,SAAS;AAAA,YACT,eAAY;AAAA,YACb;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAGF,QAAM,oBAAoB,MAAM;AAC9B,QAAI,YAAY,SAAS,QAAS,QAAO,gBAAgB;AACzD,QAAI,YAAY,SAAS,WAAY,QAAO,mBAAmB;AAC/D,QAAI,YAAY,SAAS;AACvB,aAAO,iBAAiB,YAAY,UAAU,YAAY,KAAK;AACjE,WAAO,kBAAkB;AAAA,EAC3B;AAEA,QAAM,iBAAiB,QAAQ,qBAAqB,OAAO;AAC3D,QAAM,cAAc,OAAO;AAE3B,QAAM,SAAS,iBACb,qBAAC,SAAI,WAAU,0CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,QAAO;AAAA,QACP,UAAU,oBAAC,iBAAc,MAAM,IAAI,eAAW,MAAC;AAAA,QAC/C,SAAS,MAAM,QAAQ,CAAC,YAAY,UAAU,CAAC;AAAA,QAC/C,eAAY;AAAA,QACb;AAAA;AAAA,IAED;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,QAAO;AAAA,QACP,WAAW,oBAAC,kBAAe,MAAM,IAAI,eAAW,MAAC;AAAA,QACjD,UAAU,CAAC;AAAA,QACX,SAAS,MAAM,QAAQ,CAAC,YAAY,UAAU,CAAC;AAAA,QAC/C,eAAY;AAAA,QACb;AAAA;AAAA,IAED;AAAA,KACF,IACE;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MAOA,OACE,cACE,6BAEA,oBAAC,UAAK,WAAU,WAAW,sCAA2B;AAAA,MAG1D,MAAK;AAAA,MACL;AAAA,MACA,kBAAiB;AAAA,MAEhB;AAAA,uBACC,oBAAC,mBAAQ,OAAO,cAAc,aAAa,MAAM,MAAK,SAAQ;AAAA,QAE/D,kBAAkB;AAAA;AAAA;AAAA,EACrB;AAEJ;AAEA,IAAO,kCAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Quiz/Quiz.utils.ts"],"sourcesContent":["import {\n QuizVariant,\n type QuestionAnswerResult,\n type TrueOrFalseOptionState,\n} from './Quiz.types';\nimport { TrueFalseEnum } from '../../enums/Quiz';\nimport { OptionStatus } from '../../enums/Options';\n\n/**\n * Helper function to format exam info (bank - year)\n * @param examBoard - The exam board/bank name\n * @param examYear - The exam year\n * @returns Formatted string like \"(ENEM - 2023)\" or empty string if no info\n */\nexport const formatExamInfo = (\n examBoard: string | null | undefined,\n examYear: string | null | undefined\n): string => {\n if (examBoard && examYear) {\n return `(${examBoard} - ${examYear})`;\n }\n if (examBoard) {\n return `(${examBoard})`;\n }\n if (examYear) {\n return `(${examYear})`;\n }\n return '';\n};\n\n/**\n * Shuffle array using a seed for consistent ordering per question\n * Uses Fisher-Yates shuffle with seeded random for deterministic results\n */\nexport const shuffleWithSeed = <T>(array: T[], seed: string): T[] => {\n const shuffled = [...array];\n // Simple hash function to convert string seed to number\n let hash = 0;\n for (let i = 0; i < seed.length; i++) {\n const char = seed.codePointAt(i) ?? 0;\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n // Fisher-Yates shuffle with seeded random\n const seededRandom = (max: number) => {\n hash = (hash * 1103515245 + 12345) & 0x7fffffff;\n return hash % max;\n };\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = seededRandom(i + 1);\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n }\n return shuffled;\n};\n\n/**\n * Helper to prepend letter to HTML content (handles <p> tags)\n * @example prependLetterToHtml('a', '<p>Text</p>') => '<p>a) Text</p>'\n * @example prependLetterToHtml('a', 'Text') => 'a) Text'\n */\nexport const prependLetterToHtml = (letter: string, html: string): string => {\n if (html.trim().startsWith('<p>')) {\n return html.replace(/^(\\s*<p>)/, `$1${letter}) `);\n }\n return `${letter}) ${html}`;\n};\n\n/**\n * Compute state for a true/false option\n * Handles both interactive (default) and result modes\n */\nexport const getTrueOrFalseOptionState = (\n optionId: string,\n variant: string,\n currentQuestionResult: QuestionAnswerResult | null | undefined,\n localAnswers: Record<string, string>\n): TrueOrFalseOptionState => {\n // Get whether the statement is TRUE or FALSE from persisted result\n const correctAnswerOption = currentQuestionResult?.options?.find(\n (op) => op.id === optionId\n );\n const isStatementTrue =\n variant === QuizVariant.RESULT\n ? (correctAnswerOption?.isCorrect ?? false)\n : false;\n\n // Get student's selection from selectedOptions\n const studentSelection =\n variant === QuizVariant.RESULT\n ? currentQuestionResult?.selectedOptions?.find(\n (op) => op.optionId === optionId\n )\n : undefined;\n\n // Determine if answered and what was marked\n const hasAnswered =\n variant === QuizVariant.RESULT\n ? studentSelection !== undefined\n : !!localAnswers[optionId];\n\n const studentMarkedTrue =\n variant === QuizVariant.RESULT\n ? (studentSelection?.isCorrect ?? false)\n : localAnswers[optionId] === TrueFalseEnum.VERDADEIRO;\n\n // Compute display values\n const getStudentAnswerDisplay = (): string => {\n if (variant !== QuizVariant.RESULT) {\n return localAnswers[optionId] || '-';\n }\n if (!hasAnswered) {\n return '-';\n }\n return studentMarkedTrue ? TrueFalseEnum.VERDADEIRO : TrueFalseEnum.FALSO;\n };\n const studentAnswer = getStudentAnswerDisplay();\n\n const correctAnswer = isStatementTrue\n ? TrueFalseEnum.VERDADEIRO\n : TrueFalseEnum.FALSO;\n const isStudentCorrect = hasAnswered && studentMarkedTrue === isStatementTrue;\n const variantCorrect = isStudentCorrect\n ? OptionStatus.CORRECT\n : OptionStatus.INCORRECT;\n\n return {\n isStatementTrue,\n hasAnswered,\n studentMarkedTrue,\n studentAnswer,\n correctAnswer,\n isStudentCorrect,\n variantCorrect,\n };\n};\n"],"mappings":";AAcO,IAAM,iBAAiB,CAC5B,WACA,aACW;AACX,MAAI,aAAa,UAAU;AACzB,WAAO,IAAI,SAAS,MAAM,QAAQ;AAAA,EACpC;AACA,MAAI,WAAW;AACb,WAAO,IAAI,SAAS;AAAA,EACtB;AACA,MAAI,UAAU;AACZ,WAAO,IAAI,QAAQ;AAAA,EACrB;AACA,SAAO;AACT;AAMO,IAAM,kBAAkB,CAAI,OAAY,SAAsB;AACnE,QAAM,WAAW,CAAC,GAAG,KAAK;AAE1B,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,OAAO,KAAK,YAAY,CAAC,KAAK;AACpC,YAAQ,QAAQ,KAAK,OAAO;AAC5B,WAAO,OAAO;AAAA,EAChB;AAEA,QAAM,eAAe,CAAC,QAAgB;AACpC,WAAQ,OAAO,aAAa,QAAS;AACrC,WAAO,OAAO;AAAA,EAChB;AACA,WAAS,IAAI,SAAS,SAAS,GAAG,IAAI,GAAG,KAAK;AAC5C,UAAM,IAAI,aAAa,IAAI,CAAC;AAC5B,KAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,EACxD;AACA,SAAO;AACT;AAOO,IAAM,sBAAsB,CAAC,QAAgB,SAAyB;AAC3E,MAAI,KAAK,KAAK,EAAE,WAAW,KAAK,GAAG;AACjC,WAAO,KAAK,QAAQ,aAAa,KAAK,MAAM,IAAI;AAAA,EAClD;AACA,SAAO,GAAG,MAAM,KAAK,IAAI;AAC3B;AAMO,IAAM,4BAA4B,CACvC,UACA,SACA,uBACA,iBAC2B;AAE3B,QAAM,sBAAsB,uBAAuB,SAAS;AAAA,IAC1D,CAAC,OAAO,GAAG,OAAO;AAAA,EACpB;AACA,QAAM,kBACJ,oCACK,qBAAqB,aAAa,QACnC;AAGN,QAAM,mBACJ,oCACI,uBAAuB,iBAAiB;AAAA,IACtC,CAAC,OAAO,GAAG,aAAa;AAAA,EAC1B,IACA;AAGN,QAAM,cACJ,oCACI,qBAAqB,SACrB,CAAC,CAAC,aAAa,QAAQ;AAE7B,QAAM,oBACJ,oCACK,kBAAkB,aAAa,QAChC,aAAa,QAAQ;AAG3B,QAAM,0BAA0B,MAAc;AAC5C,QAAI,mCAAgC;AAClC,aAAO,aAAa,QAAQ,KAAK;AAAA,IACnC;AACA,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,wBAAwB;AAE9C,QAAM,gBAAgB;AAGtB,QAAM,mBAAmB,eAAe,sBAAsB;AAC9D,QAAM,iBAAiB;AAIvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Quiz/QuizResult.tsx"],"sourcesContent":["import { forwardRef, useEffect, useState } from 'react';\nimport { CardResults, CardStatus } from '../Card/Card';\nimport {\n ANSWER_STATUS,\n Question,\n QuestionResult,\n QUESTION_DIFFICULTY,\n QUIZ_TYPE,\n SUBTYPE_ENUM,\n useQuizStore,\n} from './useQuizStore';\nimport ProgressCircle from '../ProgressCircle/ProgressCircle';\nimport { ClockIcon } from '@phosphor-icons/react/dist/csr/Clock';\nimport ProgressBar from '../ProgressBar/ProgressBar';\nimport { cn, getSubjectColorWithOpacity } from '../../utils/utils';\nimport Badge from '../Badge/Badge';\nimport { useTheme } from '../../hooks/useTheme';\nimport Button from '../Button/Button';\nimport { formatExamInfo } from './Quiz.utils';\n\nconst QuizBadge = ({\n subtype,\n}: {\n subtype: SUBTYPE_ENUM | undefined | string;\n}) => {\n switch (subtype) {\n case SUBTYPE_ENUM.PROVA:\n return (\n <Badge variant=\"examsOutlined\" action=\"exam2\" data-testid=\"quiz-badge\">\n Prova\n </Badge>\n );\n case SUBTYPE_ENUM.ENEM_PROVA_1:\n case SUBTYPE_ENUM.ENEM_PROVA_2:\n return (\n <Badge variant=\"examsOutlined\" action=\"exam1\" data-testid=\"quiz-badge\">\n Enem\n </Badge>\n );\n case SUBTYPE_ENUM.VESTIBULAR:\n return (\n <Badge variant=\"examsOutlined\" action=\"exam4\" data-testid=\"quiz-badge\">\n Vestibular\n </Badge>\n );\n case SUBTYPE_ENUM.SIMULADO:\n case SUBTYPE_ENUM.SIMULADAO:\n case undefined:\n return (\n <Badge variant=\"examsOutlined\" action=\"exam3\" data-testid=\"quiz-badge\">\n Simuladão\n </Badge>\n );\n default:\n return (\n <Badge variant=\"solid\" action=\"info\" data-testid=\"quiz-badge\">\n {subtype}\n </Badge>\n );\n }\n};\n\nconst QuizHeaderResult = forwardRef<HTMLDivElement, { className?: string }>(\n ({ className, ...props }, ref) => {\n const {\n getQuestionResultByQuestionId,\n getCurrentQuestion,\n questionsResult,\n } = useQuizStore();\n const [status, setStatus] = useState<ANSWER_STATUS | undefined>(undefined);\n useEffect(() => {\n const cq = getCurrentQuestion();\n if (!cq) {\n setStatus(undefined);\n return;\n }\n const qr = getQuestionResultByQuestionId(cq.id);\n setStatus(qr?.answerStatus);\n }, [\n getCurrentQuestion,\n getQuestionResultByQuestionId,\n getCurrentQuestion()?.id,\n questionsResult,\n ]);\n\n const getClassesByAnswersStatus = () => {\n // Guard para quando status ainda está carregando\n if (status === undefined) {\n return 'bg-gray-100';\n }\n\n switch (status) {\n case ANSWER_STATUS.RESPOSTA_CORRETA:\n return 'bg-success-background';\n case ANSWER_STATUS.RESPOSTA_INCORRETA:\n return 'bg-error-background';\n case ANSWER_STATUS.PENDENTE_AVALIACAO:\n return 'bg-info-background';\n default:\n return 'bg-error-background';\n }\n };\n\n const getLabelByAnswersStatus = () => {\n // Guard para quando status ainda está carregando\n if (status === undefined) {\n return 'Carregando...';\n }\n\n switch (status) {\n case ANSWER_STATUS.RESPOSTA_CORRETA:\n return '🎉 Parabéns!!';\n case ANSWER_STATUS.RESPOSTA_INCORRETA:\n return 'Não foi dessa vez...';\n case ANSWER_STATUS.PENDENTE_AVALIACAO:\n return 'Avaliação pendente';\n case ANSWER_STATUS.NAO_RESPONDIDO:\n return 'Não foi dessa vez...você deixou a resposta em branco';\n default:\n return 'Não foi dessa vez...você deixou a resposta em branco';\n }\n };\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-row items-center gap-10 p-3.5 rounded-xl mb-4',\n getClassesByAnswersStatus(),\n className\n )}\n {...props}\n >\n <p className=\"text-text-950 font-bold text-lg\">Resultado</p>\n <p className=\"text-text-700 text-md\">{getLabelByAnswersStatus()}</p>\n </div>\n );\n }\n);\n\nconst getRetryButtonLabel = (type: QUIZ_TYPE | undefined) => {\n switch (type) {\n case QUIZ_TYPE.ATIVIDADE:\n return 'Refazer atividade';\n case QUIZ_TYPE.QUESTIONARIO:\n return 'Repetir questionário';\n case QUIZ_TYPE.SIMULADO:\n return 'Repetir simulado';\n default:\n return 'Refazer';\n }\n};\n\nconst QuizResultHeaderTitle = forwardRef<\n HTMLDivElement,\n {\n className?: string;\n showBadge?: boolean;\n onRepeat?: () => void;\n canRetry?: boolean;\n }\n>(({ className, showBadge = true, onRepeat, canRetry, ...props }, ref) => {\n const { quiz } = useQuizStore();\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-row pt-4 justify-between items-center',\n className\n )}\n {...props}\n >\n <p className=\"text-text-950 font-bold text-2xl\">Resultado</p>\n <div className=\"flex flex-row gap-3 items-center\">\n {canRetry && onRepeat && (\n <Button\n variant=\"solid\"\n action=\"primary\"\n size=\"medium\"\n onClick={onRepeat}\n >\n {getRetryButtonLabel(quiz?.type)}\n </Button>\n )}\n\n {showBadge && <QuizBadge subtype={quiz?.subtype || undefined} />}\n </div>\n </div>\n );\n});\n\nconst QuizResultTitle = forwardRef<\n HTMLParagraphElement,\n { className?: string }\n>(({ className, ...props }, ref) => {\n const { getQuizTitle } = useQuizStore();\n const quizTitle = getQuizTitle();\n\n return (\n <p\n className={cn('pt-6 pb-4 text-text-950 font-bold text-lg', className)}\n ref={ref}\n {...props}\n >\n {quizTitle}\n </p>\n );\n});\n\n/**\n * Update statistics counters based on difficulty level\n * @param stats - Statistics object to update\n * @param difficulty - Question difficulty level\n * @param isCorrect - Whether the answer is correct\n */\nconst updateDifficultyStats = (\n stats: {\n correctEasyAnswers: number;\n correctMediumAnswers: number;\n correctDifficultAnswers: number;\n totalEasyQuestions: number;\n totalMediumQuestions: number;\n totalDifficultQuestions: number;\n },\n difficulty: string | undefined,\n isCorrect: boolean\n) => {\n if (difficulty === QUESTION_DIFFICULTY.FACIL) {\n stats.totalEasyQuestions++;\n if (isCorrect) stats.correctEasyAnswers++;\n } else if (difficulty === QUESTION_DIFFICULTY.MEDIO) {\n stats.totalMediumQuestions++;\n if (isCorrect) stats.correctMediumAnswers++;\n } else if (difficulty === QUESTION_DIFFICULTY.DIFICIL) {\n stats.totalDifficultQuestions++;\n if (isCorrect) stats.correctDifficultAnswers++;\n }\n};\n\n/**\n * Calculate answer statistics by difficulty level\n * @param answers - Array of question answers\n * @returns Statistics object with counts by difficulty\n */\nconst calculateAnswerStatistics = (\n answers: Array<{\n answerStatus: string;\n difficultyLevel?: string;\n }>\n) => {\n const stats = {\n correctAnswers: 0,\n correctEasyAnswers: 0,\n correctMediumAnswers: 0,\n correctDifficultAnswers: 0,\n totalEasyQuestions: 0,\n totalMediumQuestions: 0,\n totalDifficultQuestions: 0,\n };\n\n for (const answer of answers) {\n const isCorrect = answer.answerStatus === ANSWER_STATUS.RESPOSTA_CORRETA;\n\n if (isCorrect) {\n stats.correctAnswers++;\n }\n\n updateDifficultyStats(stats, answer.difficultyLevel, isCorrect);\n }\n\n return stats;\n};\n\nconst QuizResultPerformance = forwardRef<\n HTMLDivElement,\n {\n showDetails?: boolean;\n /**\n * Tempo gasto, dentro do anel. Segue `showDetails` por padrão; existe\n * separado porque uma prova feita no papel tem o desempenho por\n * dificuldade, mas não tem cronômetro — qualquer número ali seria\n * inventado.\n */\n showTimeSpent?: boolean;\n }\n>(({ showDetails = true, showTimeSpent = showDetails, ...props }, ref) => {\n const {\n getTotalQuestions,\n formatTime,\n getQuestionResultStatistics,\n getQuestionResult,\n } = useQuizStore();\n\n const totalQuestions = getTotalQuestions();\n const questionResult = getQuestionResult();\n\n const stats = questionResult\n ? calculateAnswerStatistics(questionResult.answers)\n : {\n correctAnswers: 0,\n correctEasyAnswers: 0,\n correctMediumAnswers: 0,\n correctDifficultAnswers: 0,\n totalEasyQuestions: 0,\n totalMediumQuestions: 0,\n totalDifficultQuestions: 0,\n };\n\n const percentage =\n totalQuestions > 0\n ? Math.round((stats.correctAnswers / totalQuestions) * 100)\n : 0;\n\n const classesJustifyBetween = showDetails\n ? 'justify-between'\n : 'justify-center';\n return (\n <div\n className={cn(\n 'flex flex-row gap-6 p-6 rounded-xl bg-background',\n classesJustifyBetween\n )}\n ref={ref}\n {...props}\n >\n <div className=\"relative\">\n <ProgressCircle\n size=\"medium\"\n variant=\"green\"\n value={percentage}\n showPercentage={false}\n label=\"\"\n />\n\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n {showTimeSpent && (\n <div className=\"flex items-center gap-1 mb-1\">\n <ClockIcon size={12} weight=\"regular\" className=\"text-text-800\" />\n <span className=\"text-2xs font-medium text-text-800\">\n {formatTime(\n (getQuestionResultStatistics()?.timeSpent ?? 0) * 60\n )}\n </span>\n </div>\n )}\n\n <div className=\"text-2xl font-medium text-text-800 leading-7\">\n {getQuestionResultStatistics()?.correctAnswers ?? '--'} de{' '}\n {totalQuestions}\n </div>\n\n <div className=\"text-2xs font-medium text-text-600 mt-1\">\n Corretas\n </div>\n </div>\n </div>\n\n {showDetails && (\n <div className=\"flex flex-col gap-4 w-full\">\n <ProgressBar\n className=\"w-full\"\n layout=\"stacked\"\n variant=\"green\"\n value={stats.correctEasyAnswers}\n max={stats.totalEasyQuestions}\n label=\"Fáceis\"\n showHitCount\n labelClassName=\"text-base font-medium text-text-800 leading-none\"\n percentageClassName=\"text-xs font-medium leading-[14px] text-right\"\n />\n\n <ProgressBar\n className=\"w-full\"\n layout=\"stacked\"\n variant=\"green\"\n value={stats.correctMediumAnswers}\n max={stats.totalMediumQuestions}\n label=\"Médias\"\n showHitCount\n labelClassName=\"text-base font-medium text-text-800 leading-none\"\n percentageClassName=\"text-xs font-medium leading-[14px] text-right\"\n />\n\n <ProgressBar\n className=\"w-full\"\n layout=\"stacked\"\n variant=\"green\"\n value={stats.correctDifficultAnswers}\n max={stats.totalDifficultQuestions}\n label=\"Difíceis\"\n showHitCount\n labelClassName=\"text-base font-medium text-text-800 leading-none\"\n percentageClassName=\"text-xs font-medium leading-[14px] text-right\"\n />\n </div>\n )}\n </div>\n );\n});\n\nconst QuizListResult = forwardRef<\n HTMLDivElement,\n {\n className?: string;\n onSubjectClick?: (subject: string) => void;\n }\n>(({ className, onSubjectClick, ...props }, ref) => {\n const { getQuestionsGroupedBySubject } = useQuizStore();\n const { isDark } = useTheme();\n const groupedQuestions = getQuestionsGroupedBySubject();\n const subjectsStats = Object.entries(groupedQuestions).map(\n ([subjectId, questions]) => {\n let correct = 0;\n let incorrect = 0;\n\n for (const question of questions) {\n if (question.answerStatus === ANSWER_STATUS.RESPOSTA_CORRETA) {\n correct++;\n } else {\n incorrect++;\n }\n }\n\n return {\n subject: {\n name:\n questions?.[0]?.knowledgeMatrix?.[0]?.subject?.name ??\n 'Sem componente curricular',\n id: subjectId,\n color: questions?.[0]?.knowledgeMatrix?.[0]?.subject?.color ?? '',\n icon: questions?.[0]?.knowledgeMatrix?.[0]?.subject?.icon ?? '',\n },\n correct,\n incorrect,\n total: questions.length,\n };\n }\n );\n\n return (\n <section ref={ref} className={className} {...props}>\n <p className=\"pt-6 pb-4 text-text-950 font-bold text-lg\">\n Componentes curriculares\n </p>\n\n <ul className=\"flex flex-col gap-2\">\n {subjectsStats.map((subject) => (\n <li key={subject.subject.id}>\n <CardResults\n onClick={() => onSubjectClick?.(subject.subject.id)}\n className=\"max-w-full\"\n header={subject.subject.name}\n correct_answers={subject.correct}\n incorrect_answers={subject.incorrect}\n icon={subject.subject.icon || 'Book'}\n color={\n getSubjectColorWithOpacity(subject.subject.color, isDark) ||\n undefined\n }\n direction=\"row\"\n />\n </li>\n ))}\n </ul>\n </section>\n );\n});\n\nconst QuizListResultByMateria = ({\n subject,\n onQuestionClick,\n subjectName,\n}: {\n subject: string;\n onQuestionClick: (\n question: Question | QuestionResult['answers'][number]\n ) => void;\n subjectName?: string;\n}) => {\n const { getQuestionsGroupedBySubject, getQuestionIndex, quiz } =\n useQuizStore();\n const groupedQuestions = getQuestionsGroupedBySubject();\n\n // Only show exam info (banca/year) for SIMULADO type\n const shouldShowExamInfo = quiz?.type === QUIZ_TYPE.SIMULADO;\n\n const answeredQuestions = groupedQuestions[subject] || [];\n const formattedQuestions =\n subject == 'all'\n ? Object.values(groupedQuestions).flat()\n : answeredQuestions;\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex flex-row pt-4 justify-between\">\n <p className=\"text-text-950 font-bold text-2xl\">\n {subjectName ||\n formattedQuestions?.[0]?.knowledgeMatrix?.[0]?.subject?.name ||\n 'Sem componente curricular'}\n </p>\n </div>\n\n <section className=\"flex flex-col \">\n <p className=\"pt-6 pb-4 text-text-950 font-bold text-lg\">\n Resultado das questões\n </p>\n\n <ul className=\"flex flex-col gap-2 pt-4\">\n {formattedQuestions.map((question) => {\n // questionId exists in QuestionResult answers, id in Question\n const questionId =\n 'questionId' in question ? question.questionId : question.id;\n const questionIndex = getQuestionIndex(questionId);\n\n // examBoard and examYear only exist in Question type - only show for SIMULADO\n const examBoard =\n 'examBoard' in question ? question.examBoard : null;\n const examYear = 'examYear' in question ? question.examYear : null;\n const examInfo = shouldShowExamInfo\n ? formatExamInfo(examBoard, examYear)\n : '';\n const questionTitle = `Questão ${questionIndex.toString().padStart(2, '0')}`;\n const header = examInfo\n ? `${questionTitle} ${examInfo}`\n : questionTitle;\n return (\n <li key={question.id}>\n <CardStatus\n className=\"max-w-full\"\n header={header}\n status={(() => {\n if (\n question.answerStatus === ANSWER_STATUS.RESPOSTA_CORRETA\n )\n return 'correct';\n if (\n question.answerStatus === ANSWER_STATUS.RESPOSTA_INCORRETA\n )\n return 'incorrect';\n if (question.answerStatus === ANSWER_STATUS.NAO_RESPONDIDO)\n return 'unanswered';\n if (\n question.answerStatus === ANSWER_STATUS.PENDENTE_AVALIACAO\n )\n return 'pending';\n return undefined;\n })()}\n onClick={() => onQuestionClick?.(question)}\n />\n </li>\n );\n })}\n </ul>\n </section>\n </div>\n );\n};\n\nexport {\n QuizListResultByMateria,\n QuizListResult,\n QuizResultPerformance,\n QuizResultTitle,\n QuizResultHeaderTitle,\n QuizHeaderResult,\n};\n"],"mappings":"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","names":[]}