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.
- package/dist/AccessReportModal/index.js +1 -1
- package/dist/AccessReportModal/index.mjs +1 -1
- package/dist/AccessibilityWidget/index.js +1 -1
- package/dist/AccessibilityWidget/index.mjs +1 -1
- package/dist/Accordation/index.js +1 -1
- package/dist/Accordation/index.mjs +1 -1
- package/dist/ActivitiesHistory/index.js +19 -19
- package/dist/ActivitiesHistory/index.mjs +18 -18
- package/dist/ActivityCardQuestionBanks/index.js +19 -19
- package/dist/ActivityCardQuestionBanks/index.mjs +18 -18
- package/dist/ActivityCardQuestionPreview/index.js +19 -19
- package/dist/ActivityCardQuestionPreview/index.mjs +18 -18
- package/dist/ActivityCreate/ActivityCreate.utils/index.js +3 -3
- package/dist/ActivityCreate/ActivityCreate.utils/index.mjs +2 -2
- package/dist/ActivityCreate/ActivityCreateContent/index.js +19 -19
- package/dist/ActivityCreate/ActivityCreateContent/index.mjs +18 -18
- package/dist/ActivityCreate/index.js +19 -19
- package/dist/ActivityCreate/index.mjs +18 -18
- package/dist/ActivityDetails/index.js +19 -19
- package/dist/ActivityDetails/index.mjs +18 -18
- package/dist/ActivityFilters/index.js +19 -19
- package/dist/ActivityFilters/index.mjs +18 -18
- package/dist/ActivityPageLayout/index.js +19 -19
- package/dist/ActivityPageLayout/index.mjs +18 -18
- package/dist/ActivityPreview/index.js +19 -19
- package/dist/ActivityPreview/index.mjs +18 -18
- package/dist/Alert/index.js +1 -1
- package/dist/Alert/index.mjs +1 -1
- package/dist/AlertDialog/index.js +1 -1
- package/dist/AlertDialog/index.mjs +1 -1
- package/dist/AlertManager/index.js +19 -19
- package/dist/AlertManager/index.mjs +18 -18
- package/dist/AlertManagerView/index.js +1 -1
- package/dist/AlertManagerView/index.mjs +1 -1
- package/dist/Alternative/index.js +1 -1
- package/dist/Alternative/index.mjs +1 -1
- package/dist/AnnouncementModal/index.js +1 -1
- package/dist/AnnouncementModal/index.mjs +1 -1
- package/dist/AnnouncementsGate/index.js +1 -1
- package/dist/AnnouncementsGate/index.mjs +1 -1
- package/dist/AnswerKeyModal/index.js +1 -1
- package/dist/AnswerKeyModal/index.mjs +1 -1
- package/dist/AppHeader/index.js +1 -1
- package/dist/AppHeader/index.mjs +1 -1
- package/dist/AppLayout/index.js +1 -1
- package/dist/AppLayout/index.mjs +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/Avatar/index.mjs +1 -1
- package/dist/Badge/index.js +1 -1
- package/dist/Badge/index.mjs +1 -1
- package/dist/BreadcrumbMenu/index.js +1 -1
- package/dist/BreadcrumbMenu/index.mjs +1 -1
- package/dist/Button/index.js +1 -1
- package/dist/Button/index.mjs +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/index.mjs +1 -1
- package/dist/CalendarCard/index.js +1 -1
- package/dist/CalendarCard/index.mjs +1 -1
- package/dist/Card/index.js +1 -1
- package/dist/Card/index.mjs +1 -1
- package/dist/ChartComponents/index.js +1 -1
- package/dist/ChartComponents/index.mjs +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/Chat/index.mjs +1 -1
- package/dist/Chatbot/index.js +1 -1
- package/dist/Chatbot/index.mjs +1 -1
- package/dist/CheckBox/index.js +1 -1
- package/dist/CheckBox/index.mjs +1 -1
- package/dist/CheckBoxGroup/index.js +19 -19
- package/dist/CheckBoxGroup/index.mjs +18 -18
- package/dist/Chips/index.js +1 -1
- package/dist/Chips/index.mjs +1 -1
- package/dist/ChoroplethMap/index.js +1 -1
- package/dist/ChoroplethMap/index.mjs +1 -1
- package/dist/ColorPicker/index.js +1 -1
- package/dist/ColorPicker/index.mjs +1 -1
- package/dist/ComparatorChart/ComparatorView/index.js +1 -1
- package/dist/ComparatorChart/ComparatorView/index.mjs +1 -1
- package/dist/CorrectActivityModal/index.js +6 -6
- package/dist/CorrectActivityModal/index.mjs +5 -5
- package/dist/Divider/index.js +1 -1
- package/dist/Divider/index.mjs +1 -1
- package/dist/DownloadButton/index.js +1 -1
- package/dist/DownloadButton/index.mjs +1 -1
- package/dist/DownloadModal/index.js +1 -1
- package/dist/DownloadModal/index.mjs +1 -1
- package/dist/DragHandleButton/index.js +1 -1
- package/dist/DragHandleButton/index.mjs +1 -1
- package/dist/DropdownMenu/index.js +1 -1
- package/dist/DropdownMenu/index.mjs +1 -1
- package/dist/EmptyState/index.js +1 -1
- package/dist/EmptyState/index.mjs +1 -1
- package/dist/EnemClassroomStartModal/index.d.ts +0 -2
- package/dist/EnemClassroomStartModal/index.d.ts.map +1 -1
- package/dist/EnemClassroomStartModal/index.js +4 -6
- package/dist/EnemClassroomStartModal/index.js.map +1 -1
- package/dist/EnemClassroomStartModal/index.mjs +3 -5
- package/dist/EssayThemePicker/index.js +1 -1
- package/dist/EssayThemePicker/index.mjs +1 -1
- package/dist/ExamDetailsLayout/ExamDetailsPage/index.js +19 -19
- package/dist/ExamDetailsLayout/ExamDetailsPage/index.mjs +18 -18
- package/dist/ExamPageLayout/examsTableConfig/index.js +1 -1
- package/dist/ExamPageLayout/examsTableConfig/index.mjs +1 -1
- package/dist/ExamPageLayout/index.js +19 -19
- package/dist/ExamPageLayout/index.mjs +18 -18
- package/dist/FileAttachment/index.js +1 -1
- package/dist/FileAttachment/index.mjs +1 -1
- package/dist/FileDropzone/index.js +1 -1
- package/dist/FileDropzone/index.mjs +1 -1
- package/dist/Forum/index.js +4 -4
- package/dist/Forum/index.mjs +3 -3
- package/dist/HtmlMathRenderer/index.js +1 -1
- package/dist/HtmlMathRenderer/index.mjs +1 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/IconButton/index.mjs +1 -1
- package/dist/IconRoundedButton/index.js +1 -1
- package/dist/IconRoundedButton/index.mjs +1 -1
- package/dist/ImagePreviewCard/index.js +1 -1
- package/dist/ImagePreviewCard/index.mjs +1 -1
- package/dist/ImageUpload/index.js +1 -1
- package/dist/ImageUpload/index.mjs +1 -1
- package/dist/LatexRenderer/index.js +1 -1
- package/dist/LatexRenderer/index.mjs +1 -1
- package/dist/LevelBar/index.js +1 -1
- package/dist/LevelBar/index.mjs +1 -1
- package/dist/Menu/index.js +1 -1
- package/dist/Menu/index.mjs +1 -1
- package/dist/MetricBox/index.js +1 -1
- package/dist/MetricBox/index.mjs +1 -1
- package/dist/Modal/index.js +1 -1
- package/dist/Modal/index.mjs +1 -1
- package/dist/ModalComponents/index.js +1 -1
- package/dist/ModalComponents/index.mjs +1 -1
- package/dist/MultiSearchSelect/index.js +1 -1
- package/dist/MultiSearchSelect/index.mjs +1 -1
- package/dist/MultipleChoice/index.js +1 -1
- package/dist/MultipleChoice/index.mjs +1 -1
- package/dist/NavButton/index.js +1 -1
- package/dist/NavButton/index.mjs +1 -1
- package/dist/NoSearchResult/index.js +1 -1
- package/dist/NoSearchResult/index.mjs +1 -1
- package/dist/NotFound/index.js +1 -1
- package/dist/NotFound/index.mjs +1 -1
- package/dist/NotificationCard/index.js +1 -1
- package/dist/NotificationCard/index.mjs +1 -1
- package/dist/PerformanceDistributionChart/index.js +1 -1
- package/dist/PerformanceDistributionChart/index.mjs +1 -1
- package/dist/PerformanceQuestionsData/index.js +1 -1
- package/dist/PerformanceQuestionsData/index.mjs +1 -1
- package/dist/PerformanceRanking/index.js +1 -1
- package/dist/PerformanceRanking/index.mjs +1 -1
- package/dist/PerformanceReport/index.js +1 -1
- package/dist/PerformanceReport/index.mjs +1 -1
- package/dist/PerformanceReportModal/index.js +1 -1
- package/dist/PerformanceReportModal/index.mjs +1 -1
- package/dist/PeriodSelector/index.js +1 -1
- package/dist/PeriodSelector/index.mjs +1 -1
- package/dist/PrintableUsersTable/index.js +19 -19
- package/dist/PrintableUsersTable/index.mjs +18 -18
- package/dist/ProficiencyChart/index.js +1 -1
- package/dist/ProficiencyChart/index.mjs +1 -1
- package/dist/ProgressBar/index.js +1 -1
- package/dist/ProgressBar/index.mjs +1 -1
- package/dist/ProgressCircle/index.js +1 -1
- package/dist/ProgressCircle/index.mjs +1 -1
- package/dist/ProgressModal/index.js +1 -1
- package/dist/ProgressModal/index.mjs +1 -1
- package/dist/QuestionsData/index.js +1 -1
- package/dist/QuestionsData/index.mjs +1 -1
- package/dist/QuestionsPerformanceCard/index.js +19 -19
- package/dist/QuestionsPerformanceCard/index.mjs +18 -18
- package/dist/Quiz/QuizResult/index.d.ts.map +1 -1
- package/dist/Quiz/QuizResult/index.js +4 -4
- package/dist/Quiz/QuizResult/index.mjs +3 -3
- package/dist/Quiz/TeacherFeedbackSection/index.js +3 -3
- package/dist/Quiz/TeacherFeedbackSection/index.mjs +2 -2
- package/dist/Quiz/TeacherQuestionComment/index.js +3 -3
- package/dist/Quiz/TeacherQuestionComment/index.mjs +2 -2
- package/dist/Quiz/index.d.ts.map +1 -1
- package/dist/Quiz/index.js +6 -6
- package/dist/Quiz/index.mjs +5 -5
- package/dist/Quiz/useQuizStore/index.d.ts +6 -0
- package/dist/Quiz/useQuizStore/index.d.ts.map +1 -1
- package/dist/Quiz/useQuizStore/index.js +2 -2
- package/dist/Quiz/useQuizStore/index.mjs +1 -1
- package/dist/QuizTimer/index.js +3 -3
- package/dist/QuizTimer/index.mjs +2 -2
- package/dist/Radio/index.js +1 -1
- package/dist/Radio/index.mjs +1 -1
- package/dist/RangeGauge/index.js +1 -1
- package/dist/RangeGauge/index.mjs +1 -1
- package/dist/RecommendedLessonCreate/index.js +19 -19
- package/dist/RecommendedLessonCreate/index.mjs +18 -18
- package/dist/RecommendedLessonDetails/index.js +1 -1
- package/dist/RecommendedLessonDetails/index.mjs +1 -1
- package/dist/RecommendedLessonsHistory/index.js +19 -19
- package/dist/RecommendedLessonsHistory/index.mjs +18 -18
- package/dist/ReportDetailModal/index.js +1 -1
- package/dist/ReportDetailModal/index.mjs +1 -1
- package/dist/RestrictedAccess/index.js +1 -1
- package/dist/RestrictedAccess/index.mjs +1 -1
- package/dist/RichEditor/index.js +3 -3
- package/dist/RichEditor/index.mjs +2 -2
- package/dist/{RichEditorCore-F5QPQLEK.js → RichEditorCore-NEIZKFKE.js} +2 -2
- package/dist/{RichEditorCore-F5QPQLEK.js.map → RichEditorCore-NEIZKFKE.js.map} +1 -1
- package/dist/{RichEditorCore-QZYPHNRY.mjs → RichEditorCore-TLAFZ5XG.mjs} +2 -2
- package/dist/ScoreCircle/index.js +1 -1
- package/dist/ScoreCircle/index.mjs +1 -1
- package/dist/Search/index.js +1 -1
- package/dist/Search/index.mjs +1 -1
- package/dist/SearchSelect/index.js +1 -1
- package/dist/SearchSelect/index.mjs +1 -1
- package/dist/Select/index.js +1 -1
- package/dist/Select/index.mjs +1 -1
- package/dist/SelectionButton/index.js +1 -1
- package/dist/SelectionButton/index.mjs +1 -1
- package/dist/SendActivityModal/SendActivityModal.js +19 -19
- package/dist/SendActivityModal/SendActivityModal.mjs +18 -18
- package/dist/SendActivityModal/index.js +19 -19
- package/dist/SendActivityModal/index.mjs +18 -18
- package/dist/SendLessonModal/index.js +19 -19
- package/dist/SendLessonModal/index.mjs +18 -18
- package/dist/SimpleBarChart/index.js +1 -1
- package/dist/SimpleBarChart/index.mjs +1 -1
- package/dist/SimulatedPerformance/SimulatedPerformanceView/index.js +19 -19
- package/dist/SimulatedPerformance/SimulatedPerformanceView/index.mjs +18 -18
- package/dist/SimulatedPerformance/useSimulatedPerformance/index.js +1 -1
- package/dist/SimulatedPerformance/useSimulatedPerformance/index.mjs +1 -1
- package/dist/SimulatedStudentSimulationsModal/index.js +19 -19
- package/dist/SimulatedStudentSimulationsModal/index.mjs +5 -5
- package/dist/SimulationsPage/index.js +19 -19
- package/dist/SimulationsPage/index.mjs +18 -18
- package/dist/Skeleton/index.js +1 -1
- package/dist/Skeleton/index.mjs +1 -1
- package/dist/StatisticsCard/index.js +1 -1
- package/dist/StatisticsCard/index.mjs +1 -1
- package/dist/Stepper/index.js +1 -1
- package/dist/Stepper/index.mjs +1 -1
- package/dist/StudentLessonProgressModal/index.js +1 -1
- package/dist/StudentLessonProgressModal/index.mjs +1 -1
- package/dist/StudentPerformanceDetailsModal/index.js +1 -1
- package/dist/StudentPerformanceDetailsModal/index.mjs +1 -1
- package/dist/StudentRanking/index.js +1 -1
- package/dist/StudentRanking/index.mjs +1 -1
- package/dist/SubjectIcons/index.js +1 -1
- package/dist/SubjectIcons/index.mjs +1 -1
- package/dist/SubjectMenuOverflow/index.js +1 -1
- package/dist/SubjectMenuOverflow/index.mjs +1 -1
- package/dist/Support/TicketModal/index.js +1 -1
- package/dist/Support/TicketModal/index.mjs +1 -1
- package/dist/Support/index.js +1 -1
- package/dist/Support/index.mjs +1 -1
- package/dist/Table/TablePagination/index.js +1 -1
- package/dist/Table/TablePagination/index.mjs +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/index.mjs +1 -1
- package/dist/TableProvider/index.js +19 -19
- package/dist/TableProvider/index.mjs +18 -18
- package/dist/Text/index.js +1 -1
- package/dist/Text/index.mjs +1 -1
- package/dist/TextArea/index.js +1 -1
- package/dist/TextArea/index.mjs +1 -1
- package/dist/ThemeToggle/index.js +1 -1
- package/dist/ThemeToggle/index.mjs +1 -1
- package/dist/TimeChart/index.js +1 -1
- package/dist/TimeChart/index.mjs +1 -1
- package/dist/TimeReport/index.js +1 -1
- package/dist/TimeReport/index.mjs +1 -1
- package/dist/Toast/Toaster/index.js +1 -1
- package/dist/Toast/Toaster/index.mjs +1 -1
- package/dist/Toast/index.js +1 -1
- package/dist/Toast/index.mjs +1 -1
- package/dist/ToggleSwitch/index.js +1 -1
- package/dist/ToggleSwitch/index.mjs +1 -1
- package/dist/TokenValidation/index.js +1 -1
- package/dist/TokenValidation/index.mjs +1 -1
- package/dist/Tooltip/index.js +1 -1
- package/dist/Tooltip/index.mjs +1 -1
- package/dist/TruncatedText/index.js +1 -1
- package/dist/TruncatedText/index.mjs +1 -1
- package/dist/TypeSelector/index.js +1 -1
- package/dist/TypeSelector/index.mjs +1 -1
- package/dist/UnifiedDraftModelPage/index.js +19 -19
- package/dist/UnifiedDraftModelPage/index.mjs +18 -18
- package/dist/UnifiedHistoryPage/index.js +19 -19
- package/dist/UnifiedHistoryPage/index.mjs +18 -18
- package/dist/VerticalBarChart/index.js +1 -1
- package/dist/VerticalBarChart/index.mjs +1 -1
- package/dist/VideoPlayer/index.js +1 -1
- package/dist/VideoPlayer/index.mjs +1 -1
- package/dist/Whiteboard/index.js +1 -1
- package/dist/Whiteboard/index.mjs +1 -1
- package/dist/{chunk-JBAGQ7L5.js → chunk-3VG5MEMY.js} +14 -13
- package/dist/chunk-3VG5MEMY.js.map +1 -0
- package/dist/{chunk-ED23HOE6.mjs → chunk-5NIU4XJY.mjs} +7 -6
- package/dist/chunk-5NIU4XJY.mjs.map +1 -0
- package/dist/{chunk-DDZDNGBU.mjs → chunk-64WGFT5E.mjs} +3 -1
- package/dist/chunk-64WGFT5E.mjs.map +1 -0
- package/dist/{chunk-QN32O3J3.js → chunk-6MK23BTK.js} +62 -62
- package/dist/{chunk-QN32O3J3.js.map → chunk-6MK23BTK.js.map} +1 -1
- package/dist/{chunk-XX4WE4TL.js → chunk-726PIA5M.js} +1 -1
- package/dist/chunk-726PIA5M.js.map +1 -0
- package/dist/{chunk-VZJKHIHN.mjs → chunk-7KALNPIG.mjs} +4 -4
- package/dist/{chunk-NQNEG4KR.mjs → chunk-7VKFZHWP.mjs} +11 -10
- package/dist/chunk-7VKFZHWP.mjs.map +1 -0
- package/dist/{chunk-GYQUB3VW.js → chunk-BBFV3NDF.js} +8 -6
- package/dist/chunk-BBFV3NDF.js.map +1 -0
- package/dist/{chunk-I3Z2BHGN.js → chunk-BJHYT75K.js} +3 -3
- package/dist/{chunk-I3Z2BHGN.js.map → chunk-BJHYT75K.js.map} +1 -1
- package/dist/{chunk-CFTQ24UT.mjs → chunk-CMYBNZ74.mjs} +2 -2
- package/dist/{chunk-R7NS5KFE.mjs → chunk-CWUNF7U6.mjs} +3 -3
- package/dist/{chunk-NAOHJW6H.mjs → chunk-DLHV7CZN.mjs} +6 -6
- package/dist/{chunk-7EXSCXPK.mjs → chunk-DMYETMZG.mjs} +2 -2
- package/dist/{chunk-RQPSA4QV.js → chunk-GQUTHDV2.js} +3 -3
- package/dist/{chunk-RQPSA4QV.js.map → chunk-GQUTHDV2.js.map} +1 -1
- package/dist/{chunk-OZWPOXVU.mjs → chunk-GVGDUCVF.mjs} +2 -2
- package/dist/{chunk-QFWY46XU.js → chunk-IMDS5NQL.js} +16 -16
- package/dist/{chunk-QFWY46XU.js.map → chunk-IMDS5NQL.js.map} +1 -1
- package/dist/{chunk-KYGFYAU7.js → chunk-JHN35HPH.js} +3 -3
- package/dist/{chunk-KYGFYAU7.js.map → chunk-JHN35HPH.js.map} +1 -1
- package/dist/{chunk-DMZTDCUF.js → chunk-JPQI2RIV.js} +3 -3
- package/dist/{chunk-DMZTDCUF.js.map → chunk-JPQI2RIV.js.map} +1 -1
- package/dist/{chunk-LXX5KU3O.mjs → chunk-LMDAF6LA.mjs} +2 -2
- package/dist/{chunk-FL4W4S6J.mjs → chunk-MOSP7FR5.mjs} +1 -1
- package/dist/chunk-MOSP7FR5.mjs.map +1 -0
- package/dist/{chunk-HZXXADG4.js → chunk-NLPBW3SW.js} +44 -43
- package/dist/chunk-NLPBW3SW.js.map +1 -0
- package/dist/{chunk-TAABXGZL.mjs → chunk-O3JP6ZMQ.mjs} +2 -2
- package/dist/{chunk-MFO4S7T5.js → chunk-PJOBOBNJ.js} +3 -3
- package/dist/{chunk-MFO4S7T5.js.map → chunk-PJOBOBNJ.js.map} +1 -1
- package/dist/{chunk-CWGYVJTQ.mjs → chunk-PORNR2NU.mjs} +3 -3
- package/dist/chunk-QF3UKRIJ.js +33 -0
- package/dist/chunk-QF3UKRIJ.js.map +1 -0
- package/dist/chunk-RAHXO5YU.mjs +33 -0
- package/dist/chunk-RAHXO5YU.mjs.map +1 -0
- package/dist/{chunk-BTZANNVO.js → chunk-RQ65U5G2.js} +3 -3
- package/dist/{chunk-BTZANNVO.js.map → chunk-RQ65U5G2.js.map} +1 -1
- package/dist/{chunk-Q56I63FO.mjs → chunk-RVGLLMWG.mjs} +2 -2
- package/dist/{chunk-VVRRAF6H.js → chunk-S2S7TK3L.js} +49 -36
- package/dist/chunk-S2S7TK3L.js.map +1 -0
- package/dist/{chunk-INIH23HU.js → chunk-VF6QXUX3.js} +2 -2
- package/dist/{chunk-INIH23HU.js.map → chunk-VF6QXUX3.js.map} +1 -1
- package/dist/{chunk-QWC5GC2Q.mjs → chunk-WY7V5UJN.mjs} +2 -2
- package/dist/{chunk-OCKO7T7L.js → chunk-XQAYZBLL.js} +3 -3
- package/dist/{chunk-OCKO7T7L.js.map → chunk-XQAYZBLL.js.map} +1 -1
- package/dist/{chunk-ATGLKKXI.js → chunk-Y7ZBWTD7.js} +17 -17
- package/dist/{chunk-ATGLKKXI.js.map → chunk-Y7ZBWTD7.js.map} +1 -1
- package/dist/{chunk-7XWWI5EY.js → chunk-YFIB3YNQ.js} +11 -11
- package/dist/{chunk-7XWWI5EY.js.map → chunk-YFIB3YNQ.js.map} +1 -1
- package/dist/{chunk-UCWTF336.mjs → chunk-YWGJAB63.mjs} +2 -2
- package/dist/{chunk-4MPXVPBQ.mjs → chunk-YYHS2TM6.mjs} +43 -30
- package/dist/chunk-YYHS2TM6.mjs.map +1 -0
- package/dist/components/Quiz/Quiz.utils.d.ts +8 -0
- package/dist/components/Quiz/Quiz.utils.d.ts.map +1 -1
- package/dist/hooks/useAppContent/index.js +19 -19
- package/dist/hooks/useAppContent/index.mjs +18 -18
- package/dist/hooks/useComparator/index.js +1 -1
- package/dist/hooks/useComparator/index.mjs +1 -1
- package/dist/hooks/useDraftAutoSave/index.js +3 -3
- package/dist/hooks/useDraftAutoSave/index.mjs +2 -2
- package/dist/index.js +19 -19
- package/dist/index.mjs +18 -18
- package/dist/types/enemClassroom/index.d.ts +29 -2
- package/dist/types/enemClassroom/index.d.ts.map +1 -1
- package/dist/types/enemClassroom/index.js +4 -2
- package/dist/types/enemClassroom/index.js.map +1 -1
- package/dist/types/enemClassroom/index.mjs +3 -1
- package/dist/types/enemClassroom.d.ts +29 -2
- package/dist/types/enemClassroom.d.ts.map +1 -1
- package/dist/types/questionTypes/index.js +1 -1
- package/dist/types/questionTypes/index.mjs +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.mjs +1 -1
- package/dist/utils/renderSubjectCell/index.js +1 -1
- package/dist/utils/renderSubjectCell/index.mjs +1 -1
- package/dist/utils/renderTextCell/index.js +1 -1
- package/dist/utils/renderTextCell/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-4MPXVPBQ.mjs.map +0 -1
- package/dist/chunk-DDZDNGBU.mjs.map +0 -1
- package/dist/chunk-ED23HOE6.mjs.map +0 -1
- package/dist/chunk-FL4W4S6J.mjs.map +0 -1
- package/dist/chunk-GYQUB3VW.js.map +0 -1
- package/dist/chunk-HZXXADG4.js.map +0 -1
- package/dist/chunk-JBAGQ7L5.js.map +0 -1
- package/dist/chunk-ND5M3DZA.mjs +0 -21
- package/dist/chunk-ND5M3DZA.mjs.map +0 -1
- package/dist/chunk-NQNEG4KR.mjs.map +0 -1
- package/dist/chunk-NYKBCQUO.js +0 -21
- package/dist/chunk-NYKBCQUO.js.map +0 -1
- package/dist/chunk-VVRRAF6H.js.map +0 -1
- package/dist/chunk-XX4WE4TL.js.map +0 -1
- /package/dist/{RichEditorCore-QZYPHNRY.mjs.map → RichEditorCore-TLAFZ5XG.mjs.map} +0 -0
- /package/dist/{chunk-VZJKHIHN.mjs.map → chunk-7KALNPIG.mjs.map} +0 -0
- /package/dist/{chunk-CFTQ24UT.mjs.map → chunk-CMYBNZ74.mjs.map} +0 -0
- /package/dist/{chunk-R7NS5KFE.mjs.map → chunk-CWUNF7U6.mjs.map} +0 -0
- /package/dist/{chunk-NAOHJW6H.mjs.map → chunk-DLHV7CZN.mjs.map} +0 -0
- /package/dist/{chunk-7EXSCXPK.mjs.map → chunk-DMYETMZG.mjs.map} +0 -0
- /package/dist/{chunk-OZWPOXVU.mjs.map → chunk-GVGDUCVF.mjs.map} +0 -0
- /package/dist/{chunk-LXX5KU3O.mjs.map → chunk-LMDAF6LA.mjs.map} +0 -0
- /package/dist/{chunk-TAABXGZL.mjs.map → chunk-O3JP6ZMQ.mjs.map} +0 -0
- /package/dist/{chunk-CWGYVJTQ.mjs.map → chunk-PORNR2NU.mjs.map} +0 -0
- /package/dist/{chunk-Q56I63FO.mjs.map → chunk-RVGLLMWG.mjs.map} +0 -0
- /package/dist/{chunk-QWC5GC2Q.mjs.map → chunk-WY7V5UJN.mjs.map} +0 -0
- /package/dist/{chunk-UCWTF336.mjs.map → chunk-YWGJAB63.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkPJOBOBNJjs = require('./chunk-PJOBOBNJ.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkZW6L2ZQAjs = require('./chunk-ZW6L2ZQA.js');
|
|
@@ -18,10 +18,11 @@ var _chunkYCOW5GXGjs = require('./chunk-YCOW5GXG.js');
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _chunkIMDS5NQLjs = require('./chunk-IMDS5NQL.js');
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
var _chunkBBFV3NDFjs = require('./chunk-BBFV3NDF.js');
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
var _chunk4XUEJUISjs = require('./chunk-4XUEJUIS.js');
|
|
@@ -58,7 +59,7 @@ var _chunkANT66KVKjs = require('./chunk-ANT66KVK.js');
|
|
|
58
59
|
var _chunkTN3AYOMVjs = require('./chunk-TN3AYOMV.js');
|
|
59
60
|
|
|
60
61
|
|
|
61
|
-
var
|
|
62
|
+
var _chunk726PIA5Mjs = require('./chunk-726PIA5M.js');
|
|
62
63
|
|
|
63
64
|
// src/components/Quiz/Quiz.tsx
|
|
64
65
|
var _BookOpen = require('@phosphor-icons/react/dist/csr/BookOpen');
|
|
@@ -129,7 +130,7 @@ var getFinishConfirmationText = (type) => {
|
|
|
129
130
|
return `Tem certeza que deseja finalizar ${config.article} ${config.label.toLowerCase()}?`;
|
|
130
131
|
};
|
|
131
132
|
var Quiz = _react.forwardRef.call(void 0, ({ children, className, variant = "default" /* DEFAULT */, ...props }, ref) => {
|
|
132
|
-
const { setVariant } =
|
|
133
|
+
const { setVariant } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
133
134
|
_react.useEffect.call(void 0, () => {
|
|
134
135
|
setVariant(variant);
|
|
135
136
|
}, [variant, setVariant]);
|
|
@@ -142,7 +143,7 @@ var QuizTitle = _react.forwardRef.call(void 0, ({ className, onBack, showTimer =
|
|
|
142
143
|
getTotalQuestions,
|
|
143
144
|
getQuizTitle,
|
|
144
145
|
isStarted
|
|
145
|
-
} =
|
|
146
|
+
} = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
146
147
|
const [showExitConfirmation, setShowExitConfirmation] = _react.useState.call(void 0, false);
|
|
147
148
|
const totalQuestions = getTotalQuestions();
|
|
148
149
|
const quizTitle = getQuizTitle();
|
|
@@ -192,7 +193,7 @@ var QuizTitle = _react.forwardRef.call(void 0, ({ className, onBack, showTimer =
|
|
|
192
193
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "md", weight: "bold", color: "text-text-950", children: quizTitle }),
|
|
193
194
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "xs", color: "text-text-600", children: totalQuestions > 0 ? `${currentQuestionIndex + 1} de ${totalQuestions}` : "0 de 0" })
|
|
194
195
|
] }),
|
|
195
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "justify-self-end", children: showTimer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
196
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "justify-self-end", children: showTimer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPJOBOBNJjs.QuizTimer_default, {}) })
|
|
196
197
|
]
|
|
197
198
|
}
|
|
198
199
|
),
|
|
@@ -212,36 +213,36 @@ var QuizTitle = _react.forwardRef.call(void 0, ({ className, onBack, showTimer =
|
|
|
212
213
|
] });
|
|
213
214
|
});
|
|
214
215
|
var QuizHeader = () => {
|
|
215
|
-
const { getCurrentQuestion, getQuestionIndex, quiz } =
|
|
216
|
+
const { getCurrentQuestion, getQuestionIndex, quiz } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
216
217
|
const currentQuestion = getCurrentQuestion();
|
|
217
218
|
let currentId = currentQuestion && "questionId" in currentQuestion ? currentQuestion.questionId : _optionalChain([currentQuestion, 'optionalAccess', _2 => _2.id]);
|
|
218
219
|
const questionIndex = getQuestionIndex(currentId);
|
|
219
220
|
const questionNumber = currentQuestion ? `Quest\xE3o ${questionIndex.toString().padStart(2, "0")}` : "Quest\xE3o";
|
|
220
|
-
const
|
|
221
|
-
const examInfo =
|
|
221
|
+
const showExamInfo = _chunkBBFV3NDFjs.shouldShowExamInfo.call(void 0, quiz);
|
|
222
|
+
const examInfo = showExamInfo ? _chunkBBFV3NDFjs.formatExamInfo.call(void 0, _optionalChain([currentQuestion, 'optionalAccess', _3 => _3.examBoard]), _optionalChain([currentQuestion, 'optionalAccess', _4 => _4.examYear])) : "";
|
|
222
223
|
const title = examInfo ? `${questionNumber} ${examInfo}` : questionNumber;
|
|
223
224
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
224
225
|
_chunkB6K3W2ERjs.HeaderAlternative,
|
|
225
226
|
{
|
|
226
227
|
title,
|
|
227
|
-
subTitle: _nullishCoalesce(_optionalChain([currentQuestion, 'optionalAccess',
|
|
228
|
-
content: _nullishCoalesce(_optionalChain([currentQuestion, 'optionalAccess',
|
|
228
|
+
subTitle: _nullishCoalesce(_optionalChain([currentQuestion, 'optionalAccess', _5 => _5.knowledgeMatrix, 'optionalAccess', _6 => _6[0], 'optionalAccess', _7 => _7.topic, 'optionalAccess', _8 => _8.name]), () => ( "")),
|
|
229
|
+
content: _nullishCoalesce(_optionalChain([currentQuestion, 'optionalAccess', _9 => _9.statement]), () => ( ""))
|
|
229
230
|
}
|
|
230
231
|
);
|
|
231
232
|
};
|
|
232
233
|
var QuizContent = ({ paddingBottom }) => {
|
|
233
|
-
const { getCurrentQuestion } =
|
|
234
|
+
const { getCurrentQuestion } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
234
235
|
const { isMobile } = _chunkZHWRUIVEjs.useMobile.call(void 0, );
|
|
235
236
|
const currentQuestion = getCurrentQuestion();
|
|
236
237
|
const contentPaddingBottom = _nullishCoalesce(paddingBottom, () => ( (isMobile ? "pb-32" : "pb-24")));
|
|
237
238
|
const questionComponents = {
|
|
238
|
-
["ALTERNATIVA" /* ALTERNATIVA */]:
|
|
239
|
-
["MULTIPLA_ESCOLHA" /* MULTIPLA_ESCOLHA */]:
|
|
240
|
-
["DISSERTATIVA" /* DISSERTATIVA */]:
|
|
241
|
-
["VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */]:
|
|
242
|
-
["RELACIONAR" /* RELACIONAR */]:
|
|
243
|
-
["PREENCHER_LACUNAS" /* PREENCHER_LACUNAS */]:
|
|
244
|
-
["IMAGEM" /* IMAGEM */]:
|
|
239
|
+
["ALTERNATIVA" /* ALTERNATIVA */]: _chunkIMDS5NQLjs.QuizAlternative,
|
|
240
|
+
["MULTIPLA_ESCOLHA" /* MULTIPLA_ESCOLHA */]: _chunkIMDS5NQLjs.QuizMultipleChoice,
|
|
241
|
+
["DISSERTATIVA" /* DISSERTATIVA */]: _chunkIMDS5NQLjs.QuizDissertative,
|
|
242
|
+
["VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */]: _chunkIMDS5NQLjs.QuizTrueOrFalse,
|
|
243
|
+
["RELACIONAR" /* RELACIONAR */]: _chunkIMDS5NQLjs.QuizConnectDots,
|
|
244
|
+
["PREENCHER_LACUNAS" /* PREENCHER_LACUNAS */]: _chunkIMDS5NQLjs.QuizFill,
|
|
245
|
+
["IMAGEM" /* IMAGEM */]: _chunkIMDS5NQLjs.QuizImageQuestion
|
|
245
246
|
};
|
|
246
247
|
const QuestionComponent = currentQuestion ? questionComponents[currentQuestion.questionType] : null;
|
|
247
248
|
if (!QuestionComponent) {
|
|
@@ -259,8 +260,8 @@ var QuizQuestionList = ({
|
|
|
259
260
|
getQuestionStatusFromUserAnswers,
|
|
260
261
|
getQuestionIndex,
|
|
261
262
|
quiz
|
|
262
|
-
} =
|
|
263
|
-
const
|
|
263
|
+
} = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
264
|
+
const showExamInfo = _chunkBBFV3NDFjs.shouldShowExamInfo.call(void 0, quiz);
|
|
264
265
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
265
266
|
const getQuestionStatus = (questionId) => {
|
|
266
267
|
return getQuestionStatusFromUserAnswers(questionId);
|
|
@@ -302,12 +303,12 @@ var QuizQuestionList = ({
|
|
|
302
303
|
([subjectId, questions]) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "section", { className: "flex flex-col gap-2", children: [
|
|
303
304
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "pt-6 pb-4 flex flex-row gap-2", children: [
|
|
304
305
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-primary-500 p-1 rounded-sm flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _BookOpen.BookOpenIcon, { size: 17, className: "text-white" }) }),
|
|
305
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-text-800 font-bold text-lg", children: _nullishCoalesce(_optionalChain([questions, 'optionalAccess',
|
|
306
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-text-800 font-bold text-lg", children: _nullishCoalesce(_optionalChain([questions, 'optionalAccess', _10 => _10[0], 'optionalAccess', _11 => _11.knowledgeMatrix, 'optionalAccess', _12 => _12[0], 'optionalAccess', _13 => _13.subject, 'optionalAccess', _14 => _14.name]), () => ( "Sem componente curricular")) })
|
|
306
307
|
] }),
|
|
307
308
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "flex flex-col gap-2", children: questions.map((question) => {
|
|
308
309
|
const status = getQuestionStatus(question.id);
|
|
309
310
|
const questionNumber = getQuestionIndex(question.id);
|
|
310
|
-
const examInfo =
|
|
311
|
+
const examInfo = showExamInfo ? _chunkBBFV3NDFjs.formatExamInfo.call(void 0, question.examBoard, question.examYear) : "";
|
|
311
312
|
const questionTitle = `Quest\xE3o ${questionNumber.toString().padStart(2, "0")}`;
|
|
312
313
|
const header = examInfo ? `${questionTitle} ${examInfo}` : questionTitle;
|
|
313
314
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -317,7 +318,7 @@ var QuizQuestionList = ({
|
|
|
317
318
|
label: getStatusLabel(status),
|
|
318
319
|
onClick: () => {
|
|
319
320
|
goToQuestion(questionNumber - 1);
|
|
320
|
-
_optionalChain([onQuestionClick, 'optionalCall',
|
|
321
|
+
_optionalChain([onQuestionClick, 'optionalCall', _15 => _15()]);
|
|
321
322
|
}
|
|
322
323
|
},
|
|
323
324
|
question.id
|
|
@@ -355,13 +356,13 @@ var QuizResultModal = ({
|
|
|
355
356
|
}
|
|
356
357
|
);
|
|
357
358
|
var useCurrentCorrection = () => {
|
|
358
|
-
const { getCurrentQuestion, getQuestionResultByQuestionId } =
|
|
359
|
+
const { getCurrentQuestion, getQuestionResultByQuestionId } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
359
360
|
const currentQuestion = getCurrentQuestion();
|
|
360
361
|
const result = currentQuestion ? getQuestionResultByQuestionId(currentQuestion.id) : null;
|
|
361
362
|
return {
|
|
362
363
|
comment: _chunkYCOW5GXGjs.resolveCorrectionText.call(void 0, { ...result }),
|
|
363
|
-
correctionSource: _optionalChain([result, 'optionalAccess',
|
|
364
|
-
aiCorrectionStatus: _optionalChain([result, 'optionalAccess',
|
|
364
|
+
correctionSource: _optionalChain([result, 'optionalAccess', _16 => _16.correctionSource]),
|
|
365
|
+
aiCorrectionStatus: _optionalChain([result, 'optionalAccess', _17 => _17.aiCorrectionStatus])
|
|
365
366
|
};
|
|
366
367
|
};
|
|
367
368
|
var getCorrectionModalTitle = (correctionSource) => {
|
|
@@ -378,10 +379,10 @@ var QuizReviewActions = ({
|
|
|
378
379
|
onOpenComment,
|
|
379
380
|
className
|
|
380
381
|
}) => {
|
|
381
|
-
const { getCurrentQuestion } =
|
|
382
|
+
const { getCurrentQuestion } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
382
383
|
const { comment, correctionSource, aiCorrectionStatus } = useCurrentCorrection();
|
|
383
384
|
const currentQuestion = getCurrentQuestion();
|
|
384
|
-
const hasResolution = Boolean(_optionalChain([currentQuestion, 'optionalAccess',
|
|
385
|
+
const hasResolution = Boolean(_optionalChain([currentQuestion, 'optionalAccess', _18 => _18.solutionExplanation]));
|
|
385
386
|
const isAiCorrecting = aiCorrectionStatus === "PENDING" /* PENDING */;
|
|
386
387
|
const commentLabel = correctionSource === "IA" /* IA */ ? "Ver corre\xE7\xE3o da IA" : "Ver coment\xE1rio";
|
|
387
388
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, children: [
|
|
@@ -442,7 +443,7 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
442
443
|
getQuestionStatusFromUserAnswers,
|
|
443
444
|
variant,
|
|
444
445
|
getQuestionResultStatistics
|
|
445
|
-
} =
|
|
446
|
+
} = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
446
447
|
const { isMobile } = _chunkZHWRUIVEjs.useMobile.call(void 0, );
|
|
447
448
|
const totalQuestions = getTotalQuestions();
|
|
448
449
|
const isFirstQuestion = currentQuestionIndex === 0;
|
|
@@ -463,10 +464,10 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
463
464
|
const unansweredQuestions = getUnansweredQuestionsFromUserAnswers();
|
|
464
465
|
const allQuestions = getTotalQuestions();
|
|
465
466
|
const stats = getQuestionResultStatistics();
|
|
466
|
-
const correctAnswers = _optionalChain([stats, 'optionalAccess',
|
|
467
|
-
const quizType = _optionalChain([quiz, 'optionalAccess',
|
|
467
|
+
const correctAnswers = _optionalChain([stats, 'optionalAccess', _19 => _19.correctAnswers]);
|
|
468
|
+
const quizType = _optionalChain([quiz, 'optionalAccess', _20 => _20.type]) || "SIMULADO" /* SIMULADO */;
|
|
468
469
|
const quizTypeLabel = getTypeLabel(quizType);
|
|
469
|
-
const moduleName = _optionalChain([quiz, 'optionalAccess',
|
|
470
|
+
const moduleName = _optionalChain([quiz, 'optionalAccess', _21 => _21.questions, 'optionalAccess', _22 => _22[0], 'optionalAccess', _23 => _23.knowledgeMatrix, 'optionalAccess', _24 => _24[0], 'optionalAccess', _25 => _25.subtopic, 'optionalAccess', _26 => _26.name]);
|
|
470
471
|
const submitAndOpenResultModal = async () => {
|
|
471
472
|
if (handleFinishSimulated) {
|
|
472
473
|
await Promise.resolve(handleFinishSimulated());
|
|
@@ -476,8 +477,8 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
476
477
|
return;
|
|
477
478
|
}
|
|
478
479
|
const latestStats = getQuestionResultStatistics();
|
|
479
|
-
const latestCorrect = _optionalChain([latestStats, 'optionalAccess',
|
|
480
|
-
const latestTotal = _optionalChain([latestStats, 'optionalAccess',
|
|
480
|
+
const latestCorrect = _optionalChain([latestStats, 'optionalAccess', _27 => _27.correctAnswers]);
|
|
481
|
+
const latestTotal = _optionalChain([latestStats, 'optionalAccess', _28 => _28.totalAnswered]);
|
|
481
482
|
if (quizType === "QUESTIONARIO" /* QUESTIONARIO */ && typeof latestCorrect === "number" && typeof latestTotal === "number" && latestCorrect === latestTotal) {
|
|
482
483
|
openModal("modalQuestionnaireAllCorrect");
|
|
483
484
|
return;
|
|
@@ -754,7 +755,7 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
754
755
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
755
756
|
_chunk5W7C4GZVjs.HtmlMathRenderer_default,
|
|
756
757
|
{
|
|
757
|
-
content: _optionalChain([currentQuestion, 'optionalAccess',
|
|
758
|
+
content: _optionalChain([currentQuestion, 'optionalAccess', _29 => _29.solutionExplanation]) || "",
|
|
758
759
|
className: "text-text-950 text-base"
|
|
759
760
|
}
|
|
760
761
|
)
|
|
@@ -809,10 +810,10 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
809
810
|
description: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
810
811
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { as: "p", size: "sm", color: "text-text-500", children: "Voc\xEA tirou 0 no question\xE1rio, mas n\xE3o se preocupe! Isso \xE9 apenas uma oportunidade de aprendizado." }),
|
|
811
812
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { as: "p", size: "sm", color: "text-text-500", children: "Que tal tentar novamente para melhorar sua nota? Estamos aqui para te ajudar a entender o conte\xFAdo e evoluir." }),
|
|
812
|
-
_optionalChain([quiz, 'optionalAccess',
|
|
813
|
+
_optionalChain([quiz, 'optionalAccess', _30 => _30.canRetry]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { as: "p", size: "sm", color: "text-text-500", children: "Clique em Repetir Question\xE1rio e mostre do que voc\xEA \xE9 capaz! \u{1F4AA}" })
|
|
813
814
|
] }),
|
|
814
815
|
footer: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-row justify-center items-center gap-2 w-full", children: [
|
|
815
|
-
_optionalChain([quiz, 'optionalAccess',
|
|
816
|
+
_optionalChain([quiz, 'optionalAccess', _31 => _31.canRetry]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
816
817
|
_chunkXN2HPVVHjs.Button_default,
|
|
817
818
|
{
|
|
818
819
|
type: "button",
|
|
@@ -836,7 +837,7 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
836
837
|
children: "Detalhar resultado"
|
|
837
838
|
}
|
|
838
839
|
),
|
|
839
|
-
_optionalChain([quiz, 'optionalAccess',
|
|
840
|
+
_optionalChain([quiz, 'optionalAccess', _32 => _32.canRetry]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXN2HPVVHjs.Button_default, { className: "w-auto", size: "small", onClick: onRepeat, children: "Repetir question\xE1rio" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
840
841
|
_chunkXN2HPVVHjs.Button_default,
|
|
841
842
|
{
|
|
842
843
|
className: "w-auto",
|
|
@@ -858,11 +859,11 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
858
859
|
cancelButtonLabel: "Repetir question\xE1rio",
|
|
859
860
|
submitButtonLabel: "Tentar depois",
|
|
860
861
|
onSubmit: () => {
|
|
861
|
-
_optionalChain([onTryLater, 'optionalCall',
|
|
862
|
+
_optionalChain([onTryLater, 'optionalCall', _33 => _33()]);
|
|
862
863
|
closeModal();
|
|
863
864
|
},
|
|
864
865
|
onCancel: () => {
|
|
865
|
-
_optionalChain([onRepeat, 'optionalCall',
|
|
866
|
+
_optionalChain([onRepeat, 'optionalCall', _34 => _34()]);
|
|
866
867
|
closeModal();
|
|
867
868
|
}
|
|
868
869
|
}
|
|
@@ -887,4 +888,4 @@ var QuizFooter = _react.forwardRef.call(void 0,
|
|
|
887
888
|
|
|
888
889
|
|
|
889
890
|
exports.getQuizTypeConfig = getQuizTypeConfig; exports.getTypeLabel = getTypeLabel; exports.getQuizArticle = getQuizArticle; exports.getQuizPreposition = getQuizPreposition; exports.getCompletionTitle = getCompletionTitle; exports.getGoBackButtonLabel = getGoBackButtonLabel; exports.getExitConfirmationText = getExitConfirmationText; exports.getFinishConfirmationText = getFinishConfirmationText; exports.Quiz = Quiz; exports.QuizTitle = QuizTitle; exports.QuizHeader = QuizHeader; exports.QuizContent = QuizContent; exports.QuizQuestionList = QuizQuestionList; exports.QuizFooter = QuizFooter;
|
|
890
|
-
//# sourceMappingURL=chunk-
|
|
891
|
+
//# sourceMappingURL=chunk-NLPBW3SW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-NLPBW3SW.js","../src/components/Quiz/Quiz.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-NLPBW3SW.js","sourcesContent":[null,"import { BookOpenIcon } from '@phosphor-icons/react/dist/csr/BookOpen';\nimport { CaretLeftIcon } from '@phosphor-icons/react/dist/csr/CaretLeft';\nimport { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';\nimport { SquaresFourIcon } from '@phosphor-icons/react/dist/csr/SquaresFour';\nimport { HeaderAlternative } from '../Alternative/Alternative';\nimport Button from '../Button/Button';\nimport IconButton from '../IconButton/IconButton';\nimport {\n forwardRef,\n ReactNode,\n useEffect,\n useState,\n ComponentType,\n} from 'react';\nimport {\n useQuizStore,\n QUESTION_TYPE,\n QUIZ_TYPE,\n AI_CORRECTION_STATUS,\n CORRECTION_SOURCE,\n} from './useQuizStore';\nimport CorrectionSourceTag from './CorrectionSourceTag';\nimport { resolveCorrectionText } from './correction.utils';\nimport { QuizVariant } from './Quiz.types';\nimport { AlertDialog } from '../AlertDialog/AlertDialog';\nimport Modal from '../Modal/Modal';\n\nimport Select, {\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../Select/Select';\nimport { cn } from '../../utils/utils';\nimport {\n QuizAlternative,\n QuizConnectDots,\n QuizDissertative,\n QuizFill,\n QuizImageQuestion,\n QuizMultipleChoice,\n QuizTrueOrFalse,\n} from './QuizContent';\nimport { CardStatus } from '../Card/Card';\nimport Text from '../Text/Text';\nimport HtmlMathRenderer from '../HtmlMathRenderer/HtmlMathRenderer';\nimport { formatExamInfo, shouldShowExamInfo } from './Quiz.utils';\nimport QuizTimer from '../QuizTimer/QuizTimer';\nimport { useMobile } from '../../hooks/useMobile';\n\n// Função para obter configuração do tipo de quiz\nexport const getQuizTypeConfig = (type: QUIZ_TYPE) => {\n // Configuração centralizada para cada tipo de quiz\n const QUIZ_TYPE_CONFIG = {\n [QUIZ_TYPE.SIMULADO]: {\n label: 'Simulado',\n article: 'o',\n preposition: 'do',\n },\n [QUIZ_TYPE.QUESTIONARIO]: {\n label: 'Questionário',\n article: 'o',\n preposition: 'do',\n },\n [QUIZ_TYPE.ATIVIDADE]: {\n label: 'Atividade',\n article: 'a',\n preposition: 'da',\n },\n [QUIZ_TYPE.AULA_RECOMENDADA]: {\n label: 'Aula recomendada',\n article: 'a',\n preposition: 'da',\n },\n } as const;\n\n const config = QUIZ_TYPE_CONFIG[type];\n return config || QUIZ_TYPE_CONFIG[QUIZ_TYPE.SIMULADO]; // fallback para simulado\n};\n\n// Função para obter o label do tipo\nexport const getTypeLabel = (type: QUIZ_TYPE) => {\n return getQuizTypeConfig(type).label;\n};\n\n// Função para obter o artigo (o/a)\nexport const getQuizArticle = (type: QUIZ_TYPE) => {\n return getQuizTypeConfig(type).article;\n};\n\n// Função para obter a preposição (do/da)\nexport const getQuizPreposition = (type: QUIZ_TYPE) => {\n return getQuizTypeConfig(type).preposition;\n};\n\n// Função para gerar título de conclusão\nexport const getCompletionTitle = (type: QUIZ_TYPE) => {\n const config = getQuizTypeConfig(type);\n return `Você concluiu ${config.article} ${config.label.toLowerCase()}!`;\n};\n\n// Função para gerar o rótulo do botão de retorno no modal de conclusão\nexport const getGoBackButtonLabel = (type: QUIZ_TYPE): string => {\n if (type === QUIZ_TYPE.SIMULADO) return 'Ir para simulados';\n if (type === QUIZ_TYPE.QUESTIONARIO) return 'Ir para aulas';\n if (type === QUIZ_TYPE.ATIVIDADE) return 'Ir para atividades';\n if (type === QUIZ_TYPE.AULA_RECOMENDADA) return 'Ir para aulas recomendadas';\n return 'Ir para simulados';\n};\n\n// Função para gerar texto de confirmação de saída\nexport const getExitConfirmationText = (type: QUIZ_TYPE) => {\n const config = getQuizTypeConfig(type);\n // QUESTIONARIO não tem rascunho: ao sair, as respostas são perdidas.\n // Demais tipos (SIMULADO, ATIVIDADE, AULA_RECOMENDADA e fallback) salvam o\n // progresso, então o aluno pode continuar depois de onde parou.\n if (type === QUIZ_TYPE.QUESTIONARIO) {\n return `Se você sair ${config.preposition} ${config.label.toLowerCase()} agora, todas as respostas serão perdidas.`;\n }\n return `Se você sair ${config.preposition} ${config.label.toLowerCase()} agora, poderá continuar de onde parou depois.`;\n};\n\n// Função para gerar texto de confirmação de finalização\nexport const getFinishConfirmationText = (type: QUIZ_TYPE) => {\n const config = getQuizTypeConfig(type);\n return `Tem certeza que deseja finalizar ${config.article} ${config.label.toLowerCase()}?`;\n};\n\nconst Quiz = forwardRef<\n HTMLDivElement,\n { children: ReactNode; className?: string; variant?: 'result' | 'default' }\n>(({ children, className, variant = QuizVariant.DEFAULT, ...props }, ref) => {\n const { setVariant } = useQuizStore();\n\n useEffect(() => {\n setVariant(variant as QuizVariant);\n }, [variant, setVariant]);\n\n return (\n <div ref={ref} className={cn('flex flex-col', className)} {...props}>\n {children}\n </div>\n );\n});\n\nconst QuizTitle = forwardRef<\n HTMLDivElement,\n { className?: string; onBack?: () => void; showTimer?: boolean }\n>(({ className, onBack, showTimer = false, ...props }, ref) => {\n const {\n quiz,\n currentQuestionIndex,\n getTotalQuestions,\n getQuizTitle,\n isStarted,\n } = useQuizStore();\n\n const [showExitConfirmation, setShowExitConfirmation] = useState(false);\n\n const totalQuestions = getTotalQuestions();\n const quizTitle = getQuizTitle();\n\n const handleBackClick = () => {\n if (isStarted) {\n setShowExitConfirmation(true);\n } else {\n actionOnBack();\n }\n };\n\n const handleConfirmExit = () => {\n setShowExitConfirmation(false);\n actionOnBack();\n };\n\n const actionOnBack = () => {\n if (onBack) {\n onBack();\n } else {\n globalThis.history.back();\n }\n };\n\n const handleCancelExit = () => {\n setShowExitConfirmation(false);\n };\n\n return (\n <>\n <div\n ref={ref}\n /*\n * Três colunas em vez de `justify-between`: as laterais são `1fr`\n * iguais, então o título fica centralizado na tela mesmo com o voltar\n * e o cronômetro tendo larguras diferentes. Com flex ele era empurrado\n * para a direita junto do cronômetro.\n */\n className={cn(\n 'grid grid-cols-[1fr_auto_1fr] items-center gap-2 relative p-2',\n className\n )}\n {...props}\n >\n <IconButton\n icon={<CaretLeftIcon size={24} />}\n size=\"md\"\n aria-label=\"Voltar\"\n onClick={handleBackClick}\n className=\"justify-self-start\"\n />\n <span className=\"flex flex-col gap-2 text-center\">\n <Text size=\"md\" weight=\"bold\" color=\"text-text-950\">\n {quizTitle}\n </Text>\n <Text size=\"xs\" color=\"text-text-600\">\n {totalQuestions > 0\n ? `${currentQuestionIndex + 1} de ${totalQuestions}`\n : '0 de 0'}\n </Text>\n </span>\n <div className=\"justify-self-end\">{showTimer && <QuizTimer />}</div>\n </div>\n\n <AlertDialog\n isOpen={showExitConfirmation}\n onChangeOpen={setShowExitConfirmation}\n title=\"Deseja sair?\"\n description={getExitConfirmationText(quiz?.type || QUIZ_TYPE.SIMULADO)}\n cancelButtonLabel=\"Voltar e revisar\"\n submitButtonLabel=\"Sair Mesmo Assim\"\n onSubmit={handleConfirmExit}\n onCancel={handleCancelExit}\n />\n </>\n );\n});\n\nconst QuizHeader = () => {\n const { getCurrentQuestion, getQuestionIndex, quiz } = useQuizStore();\n const currentQuestion = getCurrentQuestion();\n let currentId =\n currentQuestion && 'questionId' in currentQuestion\n ? (currentQuestion.questionId as string)\n : currentQuestion?.id;\n const questionIndex = getQuestionIndex(currentId!);\n\n const questionNumber = currentQuestion\n ? `Questão ${questionIndex.toString().padStart(2, '0')}`\n : 'Questão';\n\n const showExamInfo = shouldShowExamInfo(quiz);\n const examInfo = showExamInfo\n ? formatExamInfo(currentQuestion?.examBoard, currentQuestion?.examYear)\n : '';\n\n const title = examInfo ? `${questionNumber} ${examInfo}` : questionNumber;\n\n return (\n <HeaderAlternative\n title={title}\n subTitle={currentQuestion?.knowledgeMatrix?.[0]?.topic?.name ?? ''}\n content={currentQuestion?.statement ?? ''}\n />\n );\n};\n\nconst QuizContent = ({ paddingBottom }: { paddingBottom?: string }) => {\n const { getCurrentQuestion } = useQuizStore();\n const { isMobile } = useMobile();\n const currentQuestion = getCurrentQuestion();\n\n // `QuizFooter` is `position: fixed`, so it sits on top of the content instead\n // of taking space in the flow — without room reserved here, the last\n // alternative ends up underneath it and unreadable. The bar is taller on a\n // phone, where its controls stack into two rows.\n const contentPaddingBottom = paddingBottom ?? (isMobile ? 'pb-32' : 'pb-24');\n const questionComponents: Record<\n string,\n ComponentType<QuizVariantInterface>\n > = {\n [QUESTION_TYPE.ALTERNATIVA]: QuizAlternative,\n [QUESTION_TYPE.MULTIPLA_ESCOLHA]: QuizMultipleChoice,\n [QUESTION_TYPE.DISSERTATIVA]: QuizDissertative,\n [QUESTION_TYPE.VERDADEIRO_FALSO]: QuizTrueOrFalse,\n [QUESTION_TYPE.RELACIONAR]: QuizConnectDots,\n [QUESTION_TYPE.PREENCHER_LACUNAS]: QuizFill,\n [QUESTION_TYPE.IMAGEM]: QuizImageQuestion,\n };\n\n const QuestionComponent = currentQuestion\n ? questionComponents[currentQuestion.questionType]\n : null;\n\n if (!QuestionComponent) {\n return (\n <Text size=\"md\" weight=\"medium\" className=\"text-text-950 text-md\">\n Tipo de questão não suportado\n </Text>\n );\n }\n\n // The teacher's comment is no longer echoed here: in the result variant it\n // lives behind the \"Ver comentário\" button in the footer, so it is not shown\n // twice on the same screen.\n return <QuestionComponent paddingBottom={contentPaddingBottom} />;\n};\n\ninterface QuizVariantInterface {\n paddingBottom?: string;\n}\n\nconst QuizQuestionList = ({\n filterType = 'all',\n onQuestionClick,\n}: {\n filterType?: string;\n onQuestionClick?: () => void;\n} = {}) => {\n const {\n getQuestionsGroupedBySubject,\n goToQuestion,\n getQuestionStatusFromUserAnswers,\n getQuestionIndex,\n quiz,\n } = useQuizStore();\n\n const showExamInfo = shouldShowExamInfo(quiz);\n\n const groupedQuestions = getQuestionsGroupedBySubject();\n const getQuestionStatus = (questionId: string) => {\n return getQuestionStatusFromUserAnswers(questionId);\n };\n const filteredGroupedQuestions = Object.entries(groupedQuestions).reduce(\n (acc, [subjectId, questions]) => {\n const filteredQuestions = questions.filter((question) => {\n const status = getQuestionStatus(question.id);\n switch (filterType) {\n case 'answered':\n return status === 'answered';\n case 'unanswered':\n return status === 'unanswered' || status === 'skipped';\n default:\n return true;\n }\n });\n\n if (filteredQuestions.length > 0) {\n acc[subjectId] = filteredQuestions;\n }\n\n return acc;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {} as { [key: string]: any[] }\n );\n\n const getStatusLabel = (status: string) => {\n switch (status) {\n case 'answered':\n return 'Respondida';\n case 'skipped':\n return 'Em branco';\n default:\n return 'Em branco';\n }\n };\n return (\n <div className=\"space-y-6 px-4 h-full\">\n {Object.entries(filteredGroupedQuestions).length == 0 && (\n <div className=\"flex items-center justify-center text-gray-500 py-8 h-full\">\n <p className=\"text-lg\">Nenhum resultado</p>\n </div>\n )}\n {Object.entries(filteredGroupedQuestions).map(\n ([subjectId, questions]) => (\n <section key={subjectId} className=\"flex flex-col gap-2\">\n <span className=\"pt-6 pb-4 flex flex-row gap-2\">\n <div className=\"bg-primary-500 p-1 rounded-sm flex items-center justify-center\">\n <BookOpenIcon size={17} className=\"text-white\" />\n </div>\n <p className=\"text-text-800 font-bold text-lg\">\n {questions?.[0]?.knowledgeMatrix?.[0]?.subject?.name ??\n 'Sem componente curricular'}\n </p>\n </span>\n\n <ul className=\"flex flex-col gap-2\">\n {questions.map((question) => {\n const status = getQuestionStatus(question.id);\n const questionNumber = getQuestionIndex(question.id);\n const examInfo = showExamInfo\n ? formatExamInfo(question.examBoard, question.examYear)\n : '';\n const questionTitle = `Questão ${questionNumber.toString().padStart(2, '0')}`;\n const header = examInfo\n ? `${questionTitle} ${examInfo}`\n : questionTitle;\n return (\n <CardStatus\n key={question.id}\n header={header}\n label={getStatusLabel(status)}\n onClick={() => {\n goToQuestion(questionNumber - 1);\n onQuestionClick?.();\n }}\n />\n );\n })}\n </ul>\n </section>\n )\n )}\n </div>\n );\n};\n\n/**\n * Shared layout for the quiz result modals (generic result, all-correct and\n * all-incorrect questionnaire variants): a centered image, a title and a\n * footer with action buttons.\n */\nconst QuizResultModal = ({\n isOpen,\n onClose,\n image,\n showImagePlaceholder = true,\n title,\n description,\n footer,\n}: {\n isOpen: boolean;\n onClose: () => void;\n image?: ReactNode;\n showImagePlaceholder?: boolean;\n title: ReactNode;\n description: ReactNode;\n footer: ReactNode;\n}) => (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n title=\"\"\n closeOnEscape={false}\n hideCloseButton\n size={'md'}\n >\n <div className=\"flex flex-col w-full h-full items-center justify-center gap-4\">\n {image ? (\n <div className=\"w-[282px] h-auto\">{image}</div>\n ) : (\n showImagePlaceholder && (\n <div className=\"w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center\">\n <Text as=\"span\" size=\"sm\" color=\"text-gray-500\">\n Imagem de resultado\n </Text>\n </div>\n )\n )}\n <div className=\"flex flex-col gap-2 text-center\">\n <Text as=\"h2\" size=\"lg\" weight=\"bold\">\n {title}\n </Text>\n {description}\n </div>\n {footer}\n </div>\n </Modal>\n);\n\n/**\n * Correction of the question currently on screen, resolved once.\n *\n * A dissertativa may have been graded by the AI. The teacher's text wins when it\n * exists, the AI's stands otherwise; the two are never merged — the backend\n * keeps them in separate columns precisely so a review does not destroy the\n * original verdict — and `correctionSource` says which one is on screen.\n *\n * It lives here, and not inline in `QuizFooter`, because both the footer (for\n * the modal body and title) and `QuizReviewActions` (for the buttons) need the\n * same four values, and deriving them twice would be two chances to disagree.\n *\n * @returns The effective comment plus the fields the tag and the title read\n */\nconst useCurrentCorrection = () => {\n const { getCurrentQuestion, getQuestionResultByQuestionId } = useQuizStore();\n\n const currentQuestion = getCurrentQuestion();\n const result = currentQuestion\n ? getQuestionResultByQuestionId(currentQuestion.id)\n : null;\n\n return {\n comment: resolveCorrectionText({ ...result }),\n correctionSource: result?.correctionSource,\n aiCorrectionStatus: result?.aiCorrectionStatus,\n };\n};\n\n/**\n * Title for the per-question feedback modal, phrased for whoever wrote it.\n *\n * Calling an AI correction \"Comentário do professor\" would be a lie the tag\n * inside the modal immediately contradicts, so both are derived from the same\n * `correctionSource`.\n *\n * @param correctionSource - Who produced the correction on display\n * @returns The modal title\n */\nconst getCorrectionModalTitle = (\n correctionSource?: CORRECTION_SOURCE | null\n): string => {\n if (correctionSource === CORRECTION_SOURCE.IA) {\n return 'Correção por IA';\n }\n\n if (correctionSource === CORRECTION_SOURCE.IA_PROFESSOR) {\n return 'Correção revisada pelo professor';\n }\n\n return 'Comentário do professor';\n};\n\n/**\n * The review bar's question-scoped actions: see the resolution, see the correction.\n *\n * Split out of `QuizFooter` because the two bars do different jobs — the\n * `default` one navigates between questions, this one reads a question already\n * graded — and because the four conditions the correction needs pushed the\n * footer past the cognitive-complexity limit while sitting in the middle of\n * unrelated navigation markup.\n *\n * @param props - Callbacks that open the footer's modals\n * @returns JSX element\n */\nconst QuizReviewActions = ({\n onOpenResolution,\n onOpenComment,\n className,\n}: {\n onOpenResolution: () => void;\n onOpenComment: () => void;\n readonly className?: string;\n}) => {\n const { getCurrentQuestion } = useQuizStore();\n const { comment, correctionSource, aiCorrectionStatus } =\n useCurrentCorrection();\n\n const currentQuestion = getCurrentQuestion();\n const hasResolution = Boolean(currentQuestion?.solutionExplanation);\n const isAiCorrecting = aiCorrectionStatus === AI_CORRECTION_STATUS.PENDING;\n const commentLabel =\n correctionSource === CORRECTION_SOURCE.IA\n ? 'Ver correção da IA'\n : 'Ver comentário';\n\n return (\n <div className={className}>\n {hasResolution && (\n <Button\n variant=\"solid\"\n action=\"primary\"\n size=\"large\"\n onClick={onOpenResolution}\n >\n Ver resolução\n </Button>\n )}\n {comment && (\n <Button\n variant=\"outline\"\n action=\"primary\"\n size=\"large\"\n onClick={onOpenComment}\n >\n {commentLabel}\n </Button>\n )}\n {/* Sem comentário ainda, mas a IA está corrigindo: o aluno acaba de\n entregar e chegou aqui antes do feedback existir. Dizer que está a\n caminho é melhor do que não mostrar nada. */}\n {!comment && isAiCorrecting && (\n <CorrectionSourceTag\n aiCorrectionStatus={aiCorrectionStatus}\n className=\"self-center\"\n />\n )}\n </div>\n );\n};\n\n/**\n * What the completion modal shows instead of the score.\n *\n * Some exams are not corrected on the spot — the in-classroom ENEM simulation\n * is graded later — so telling the student how many they got right would be\n * wrong. With this set, finishing opens a modal with only this content and\n * one button.\n */\nexport interface QuizCompletionOverride {\n title: ReactNode;\n description: ReactNode;\n buttonLabel: string;\n onConfirm: () => void;\n}\n\nconst QuizFooter = forwardRef<\n HTMLDivElement,\n {\n className?: string;\n onGoToSimulated?: () => void;\n onDetailResult?: () => void;\n handleFinishSimulated?: () => void;\n onGoToNextModule?: () => void;\n onRepeat?: () => void;\n onTryLater?: () => void;\n resultImageComponent?: ReactNode;\n resultIncorrectImageComponent?: ReactNode;\n /** Replaces the score modal; see `QuizCompletionOverride`. */\n completionOverride?: QuizCompletionOverride;\n }\n>(\n (\n {\n className,\n onGoToSimulated,\n onDetailResult,\n handleFinishSimulated,\n onGoToNextModule,\n onRepeat,\n onTryLater,\n resultImageComponent,\n resultIncorrectImageComponent,\n completionOverride,\n ...props\n },\n ref\n ) => {\n const {\n quiz,\n currentQuestionIndex,\n getTotalQuestions,\n goToNextQuestion,\n goToPreviousQuestion,\n getUnansweredQuestionsFromUserAnswers,\n getCurrentAnswer,\n skipQuestion,\n skipCurrentQuestionIfUnanswered,\n getCurrentQuestion,\n getQuestionStatusFromUserAnswers,\n variant,\n getQuestionResultStatistics,\n } = useQuizStore();\n\n // The review bar carries four controls. Below ~500px they no longer fit on\n // one line, so the actions and the pagination stack into two centred rows.\n const { isMobile } = useMobile();\n\n const totalQuestions = getTotalQuestions();\n const isFirstQuestion = currentQuestionIndex === 0;\n const isLastQuestion = currentQuestionIndex === totalQuestions - 1;\n const currentAnswer = getCurrentAnswer();\n const currentQuestion = getCurrentQuestion();\n const {\n comment: teacherComment,\n correctionSource,\n aiCorrectionStatus,\n } = useCurrentCorrection();\n const isCurrentQuestionSkipped = currentQuestion\n ? getQuestionStatusFromUserAnswers(currentQuestion.id) === 'skipped'\n : false;\n // Sistema unificado de controle de modais\n const [activeModal, setActiveModal] = useState<string | null>(null);\n const [filterType, setFilterType] = useState<string>('all');\n\n // Funções para controlar modais\n const openModal = (modalName: string) => setActiveModal(modalName);\n const closeModal = () => setActiveModal(null);\n const isModalOpen = (modalName: string) => activeModal === modalName;\n const unansweredQuestions = getUnansweredQuestionsFromUserAnswers();\n const allQuestions = getTotalQuestions();\n const stats = getQuestionResultStatistics();\n const correctAnswers = stats?.correctAnswers;\n const quizType = quiz?.type || QUIZ_TYPE.SIMULADO;\n const quizTypeLabel = getTypeLabel(quizType);\n // Real subtopic name, used to label the questionnaire completion modals.\n // The backend always populates the question knowledge matrix, so this is\n // available as soon as the quiz is loaded.\n const moduleName =\n quiz?.questions?.[0]?.knowledgeMatrix?.[0]?.subtopic?.name;\n\n // Submits the answers and opens the correct result modal. Statistics must\n // be read AFTER handleFinishSimulated, which is what populates\n // questionsResult in the store (the render-time values are still empty).\n const submitAndOpenResultModal = async () => {\n if (handleFinishSimulated) {\n await Promise.resolve(handleFinishSimulated());\n }\n\n if (completionOverride) {\n openModal('modalCompletionOverride');\n return;\n }\n\n const latestStats = getQuestionResultStatistics();\n const latestCorrect = latestStats?.correctAnswers;\n const latestTotal = latestStats?.totalAnswered;\n\n if (\n quizType === QUIZ_TYPE.QUESTIONARIO &&\n typeof latestCorrect === 'number' &&\n typeof latestTotal === 'number' &&\n latestCorrect === latestTotal\n ) {\n openModal('modalQuestionnaireAllCorrect');\n return;\n }\n\n if (\n quizType === QUIZ_TYPE.QUESTIONARIO &&\n typeof latestCorrect === 'number' &&\n latestCorrect === 0\n ) {\n openModal('modalQuestionnaireAllIncorrect');\n return;\n }\n\n openModal('modalResult');\n };\n\n const handleFinishQuiz = async () => {\n // Marca a questão atual como pulada se não foi respondida\n skipCurrentQuestionIfUnanswered();\n\n if (unansweredQuestions.length > 0) {\n openModal('alertDialog');\n return;\n }\n\n try {\n await submitAndOpenResultModal();\n } catch (err) {\n console.error('handleFinishSimulated failed:', err);\n }\n };\n\n const handleAlertSubmit = async () => {\n try {\n await submitAndOpenResultModal();\n } catch (err) {\n console.error('handleFinishSimulated failed:', err);\n closeModal();\n }\n };\n\n return (\n <>\n <footer\n ref={ref}\n className={cn(\n 'w-full px-2 bg-background lg:max-w-[1000px] not-lg:max-w-[calc(100vw-32px)] border-t border-border-50 fixed bottom-0 min-h-[80px] flex flex-row justify-between items-center',\n className\n )}\n {...props}\n >\n {variant === 'default' ? (\n <>\n <div className=\"flex flex-row items-center gap-1\">\n <IconButton\n icon={<SquaresFourIcon size={24} className=\"text-text-950\" />}\n size=\"md\"\n onClick={() => openModal('modalNavigate')}\n />\n\n {isFirstQuestion ? (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={() => {\n skipQuestion();\n goToNextQuestion();\n }}\n >\n Pular\n </Button>\n ) : (\n <Button\n size=\"medium\"\n variant=\"link\"\n action=\"primary\"\n iconLeft={<CaretLeftIcon size={18} />}\n onClick={() => {\n goToPreviousQuestion();\n }}\n >\n Voltar\n </Button>\n )}\n </div>\n\n {!isFirstQuestion && !isLastQuestion && (\n <Button\n size=\"small\"\n variant=\"outline\"\n action=\"primary\"\n onClick={() => {\n skipQuestion();\n goToNextQuestion();\n }}\n >\n Pular\n </Button>\n )}\n\n {isLastQuestion ? (\n <Button\n size=\"medium\"\n variant=\"solid\"\n action=\"primary\"\n onClick={handleFinishQuiz}\n >\n Finalizar\n </Button>\n ) : (\n <Button\n size=\"medium\"\n variant=\"link\"\n action=\"primary\"\n iconRight={<CaretRightIcon size={18} />}\n disabled={!currentAnswer && !isCurrentQuestionSkipped}\n onClick={() => {\n goToNextQuestion();\n }}\n >\n Avançar\n </Button>\n )}\n </>\n ) : (\n <div\n className={cn(\n 'flex w-full items-center gap-2',\n isMobile ? 'flex-col py-2' : 'flex-row'\n )}\n >\n <QuizReviewActions\n className={cn(\n 'flex flex-row items-center gap-2',\n isMobile && 'justify-center'\n )}\n onOpenResolution={() => openModal('modalResolution')}\n onOpenComment={() => openModal('modalTeacherComment')}\n />\n {/* On a wide bar the pagination sits at the far end, away from the\n actions that act on the question being read; stacked, it is\n centred under them. */}\n <div\n className={cn(\n 'flex flex-row items-center gap-2',\n isMobile ? 'justify-center' : 'flex-1 justify-end'\n )}\n >\n <Button\n variant=\"outline\"\n action=\"primary\"\n size=\"medium\"\n aria-label=\"Questão anterior\"\n disabled={isFirstQuestion}\n onClick={goToPreviousQuestion}\n >\n <CaretLeftIcon size={18} />\n </Button>\n <Button\n variant=\"outline\"\n action=\"primary\"\n size=\"medium\"\n aria-label=\"Próxima questão\"\n disabled={isLastQuestion}\n onClick={goToNextQuestion}\n >\n <CaretRightIcon size={18} />\n </Button>\n </div>\n </div>\n )}\n </footer>\n\n <AlertDialog\n isOpen={isModalOpen('alertDialog')}\n onChangeOpen={(open) =>\n open ? openModal('alertDialog') : closeModal()\n }\n title={`Finalizar ${quizTypeLabel.toLowerCase()}?`}\n description={\n unansweredQuestions.length > 0\n ? `Você deixou as questões ${unansweredQuestions.join(', ')} sem resposta. Finalizar agora pode impactar seu desempenho.`\n : getFinishConfirmationText(quizType)\n }\n cancelButtonLabel=\"Voltar e revisar\"\n submitButtonLabel=\"Finalizar Mesmo Assim\"\n onSubmit={handleAlertSubmit}\n />\n\n <QuizResultModal\n isOpen={isModalOpen('modalResult')}\n onClose={closeModal}\n image={resultImageComponent}\n title={getCompletionTitle(quizType)}\n description={\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n Você acertou {correctAnswers ?? '--'} de {allQuestions} questões.\n </Text>\n }\n footer={\n <div className=\"px-6 flex flex-row items-center gap-2 w-full\">\n <Button\n variant=\"outline\"\n className=\"w-full\"\n size=\"small\"\n onClick={onGoToSimulated}\n >\n {getGoBackButtonLabel(quizType)}\n </Button>\n\n <Button className=\"w-full\" onClick={onDetailResult}>\n Detalhar resultado\n </Button>\n </div>\n }\n />\n\n {completionOverride && (\n <QuizResultModal\n isOpen={isModalOpen('modalCompletionOverride')}\n onClose={closeModal}\n image={resultImageComponent}\n title={completionOverride.title}\n description={\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n {completionOverride.description}\n </Text>\n }\n footer={\n <div className=\"px-6 flex flex-row items-center w-full\">\n <Button\n className=\"w-full\"\n onClick={completionOverride.onConfirm}\n data-testid=\"quiz-completion-override-confirm\"\n >\n {completionOverride.buttonLabel}\n </Button>\n </div>\n }\n />\n )}\n\n <Modal\n isOpen={isModalOpen('modalNavigate')}\n onClose={closeModal}\n title=\"Questões\"\n size={'lg'}\n >\n <div className=\"flex flex-col w-full not-lg:h-[calc(100vh-200px)] lg:max-h-[687px] lg:h-[687px]\">\n <div className=\"flex flex-row justify-between items-center py-6 pt-6 pb-4 border-b border-border-200 flex-shrink-0\">\n <p className=\"text-text-950 font-bold text-lg\">Filtrar por</p>\n <span className=\"max-w-[266px]\">\n <Select value={filterType} onValueChange={setFilterType}>\n <SelectTrigger\n variant=\"rounded\"\n className=\"max-w-[266px] min-w-[160px]\"\n >\n <SelectValue placeholder=\"Selecione uma opção\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">Todas</SelectItem>\n <SelectItem value=\"unanswered\">Em branco</SelectItem>\n <SelectItem value=\"answered\">Respondidas</SelectItem>\n </SelectContent>\n </Select>\n </span>\n </div>\n\n <div className=\"flex flex-col gap-2 flex-1 min-h-0 overflow-y-auto\">\n <QuizQuestionList\n filterType={filterType}\n onQuestionClick={closeModal}\n />\n </div>\n </div>\n </Modal>\n\n <Modal\n isOpen={isModalOpen('modalResolution')}\n onClose={closeModal}\n title=\"Resolução\"\n size={'lg'}\n >\n <HtmlMathRenderer\n content={currentQuestion?.solutionExplanation || ''}\n className=\"text-text-950 text-base\"\n />\n </Modal>\n\n <Modal\n isOpen={isModalOpen('modalTeacherComment')}\n onClose={closeModal}\n title={getCorrectionModalTitle(correctionSource)}\n size={'lg'}\n >\n {/* A tag fica dentro do modal, junto do texto: é ela que diz se o que\n está sendo lido saiu da IA, do professor, ou da IA revisada por\n ele. Sem isso o título sozinho teria que carregar essa informação\n em toda variação. */}\n <CorrectionSourceTag\n correctionSource={correctionSource}\n aiCorrectionStatus={aiCorrectionStatus}\n className=\"mb-3\"\n />\n {/* Plain text on purpose: the teacher writes this in a bare textarea,\n so running it through the HTML/LaTeX renderer would change what\n they typed. `whitespace-pre-wrap` keeps their line breaks. The AI\n feedback is plain text for the same reason. */}\n <Text\n size=\"md\"\n className=\"text-text-950 whitespace-pre-wrap break-words\"\n >\n {teacherComment}\n </Text>\n </Modal>\n\n <QuizResultModal\n isOpen={isModalOpen('modalQuestionnaireAllCorrect')}\n onClose={closeModal}\n image={resultImageComponent}\n title=\"🎉 Parabéns!\"\n description={\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n {moduleName\n ? `Você concluiu o módulo ${moduleName}.`\n : 'Você concluiu o questionário!'}\n </Text>\n }\n footer={\n <div className=\"px-6 flex flex-row items-center gap-2 w-full\">\n <Button className=\"w-full\" onClick={onGoToNextModule}>\n {getGoBackButtonLabel(quizType)}\n </Button>\n </div>\n }\n />\n\n <QuizResultModal\n isOpen={isModalOpen('modalQuestionnaireAllIncorrect')}\n onClose={closeModal}\n image={resultIncorrectImageComponent}\n showImagePlaceholder={false}\n title=\"😕 Não foi dessa vez...\"\n description={\n <>\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n Você tirou 0 no questionário, mas não se preocupe! Isso é apenas\n uma oportunidade de aprendizado.\n </Text>\n\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n Que tal tentar novamente para melhorar sua nota? Estamos aqui\n para te ajudar a entender o conteúdo e evoluir.\n </Text>\n\n {quiz?.canRetry && (\n <Text as=\"p\" size=\"sm\" color=\"text-text-500\">\n Clique em Repetir Questionário e mostre do que você é capaz!\n 💪\n </Text>\n )}\n </>\n }\n footer={\n <div className=\"flex flex-row justify-center items-center gap-2 w-full\">\n {quiz?.canRetry && (\n <Button\n type=\"button\"\n variant=\"link\"\n size=\"small\"\n className=\"w-auto\"\n onClick={() => {\n closeModal();\n openModal('alertDialogTryLater');\n }}\n >\n Tentar depois\n </Button>\n )}\n\n <Button\n variant=\"outline\"\n size=\"small\"\n className=\"w-auto\"\n onClick={onDetailResult}\n >\n Detalhar resultado\n </Button>\n\n {quiz?.canRetry ? (\n <Button className=\"w-auto\" size=\"small\" onClick={onRepeat}>\n Repetir questionário\n </Button>\n ) : (\n <Button\n className=\"w-auto\"\n size=\"small\"\n onClick={onGoToSimulated}\n >\n {getGoBackButtonLabel(quizType)}\n </Button>\n )}\n </div>\n }\n />\n\n <AlertDialog\n isOpen={isModalOpen('alertDialogTryLater')}\n onChangeOpen={(open) =>\n open ? openModal('alertDialogTryLater') : closeModal()\n }\n title=\"Tentar depois?\"\n description={\n 'Você optou por refazer o questionário mais tarde.\\n\\nLembre-se: enquanto não refazer o questionário, sua nota permanecerá 0 no sistema.'\n }\n cancelButtonLabel=\"Repetir questionário\"\n submitButtonLabel=\"Tentar depois\"\n onSubmit={() => {\n onTryLater?.();\n closeModal();\n }}\n onCancel={() => {\n onRepeat?.();\n closeModal();\n }}\n />\n </>\n );\n }\n);\n\nexport {\n QuizTitle,\n Quiz,\n QuizHeader,\n QuizContent,\n QuizFooter,\n QuizQuestionList,\n};\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { lazy, Suspense, Component } from "react";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
var RichEditorCore = lazy(
|
|
5
|
-
() => import("./RichEditorCore-
|
|
5
|
+
() => import("./RichEditorCore-TLAFZ5XG.mjs").then((module) => ({
|
|
6
6
|
default: module.RichEditor
|
|
7
7
|
}))
|
|
8
8
|
);
|
|
@@ -93,4 +93,4 @@ function MissingDependenciesErrorFallback(error) {
|
|
|
93
93
|
export {
|
|
94
94
|
RichEditor
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-O3JP6ZMQ.mjs.map
|
|
@@ -9,7 +9,7 @@ var _chunkTN3AYOMVjs = require('./chunk-TN3AYOMV.js');
|
|
|
9
9
|
var _chunkFPOKJGC6js = require('./chunk-FPOKJGC6.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunk726PIA5Mjs = require('./chunk-726PIA5M.js');
|
|
13
13
|
|
|
14
14
|
// src/components/QuizTimer/QuizTimer.tsx
|
|
15
15
|
var _Clock = require('@phosphor-icons/react/dist/csr/Clock');
|
|
@@ -17,7 +17,7 @@ var _react = require('react');
|
|
|
17
17
|
var _jsxruntime = require('react/jsx-runtime');
|
|
18
18
|
var QuizTimer = _react.forwardRef.call(void 0,
|
|
19
19
|
({ className, ...props }, ref) => {
|
|
20
|
-
const { timeElapsed, isTimeExceeded } =
|
|
20
|
+
const { timeElapsed, isTimeExceeded } = _chunk726PIA5Mjs.useQuizStore.call(void 0, );
|
|
21
21
|
const exceeded = isTimeExceeded();
|
|
22
22
|
const formatted = _chunkFPOKJGC6js.formatTimeSpent.call(void 0, timeElapsed);
|
|
23
23
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -48,4 +48,4 @@ var QuizTimer_default = QuizTimer;
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
exports.QuizTimer_default = QuizTimer_default;
|
|
51
|
-
//# sourceMappingURL=chunk-
|
|
51
|
+
//# sourceMappingURL=chunk-PJOBOBNJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-PJOBOBNJ.js","../src/components/QuizTimer/QuizTimer.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACbA,6DAA0B;AAC1B,8BAA2B;AAyBrB,+CAAA;AAPN,IAAM,UAAA,EAAY,+BAAA;AAAA,EAChB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAChC,IAAA,MAAM,EAAE,WAAA,EAAa,eAAe,EAAA,EAAI,2CAAA,CAAa;AACrD,IAAA,MAAM,SAAA,EAAW,cAAA,CAAe,CAAA;AAChC,IAAA,MAAM,UAAA,EAAY,8CAAA,WAA2B,CAAA;AAE7C,IAAA,uBACE,8BAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAU,KAAA;AAAA,QACV,YAAA,EAAY,CAAA,gBAAA,EAAmB,SAAS,CAAA,EAAA;AAC7B,QAAA;AACT,UAAA;AACA,UAAA;AAEI,UAAA;AAEJ,UAAA;AACF,QAAA;AACI,QAAA;AAEJ,QAAA;AAAiB,0BAAA;AACR,0BAAA;AAET,QAAA;AAAA,MAAA;AACF,IAAA;AAEJ,EAAA;AACF;AAEwB;AAET;ADNoC;AACA;AACA;AACA","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-PJOBOBNJ.js","sourcesContent":[null,"import { ClockIcon } from '@phosphor-icons/react/dist/csr/Clock';\nimport { forwardRef } from 'react';\nimport { useQuizStore } from '../Quiz/useQuizStore';\nimport { formatTimeSpent } from '../../utils/activityDetailsUtils';\nimport { cn } from '../../utils/utils';\nimport Text from '../Text/Text';\n\nexport interface QuizTimerProps {\n className?: string;\n}\n\n/**\n * Progressive exam stopwatch, driven entirely by the quiz store.\n *\n * Presentational only: the counting, the pausing and the resume seed all live\n * in `useQuizStore`. Once the configured warning threshold is passed the\n * display turns red and keeps going — going over time is reported, never\n * enforced.\n */\nconst QuizTimer = forwardRef<HTMLDivElement, QuizTimerProps>(\n ({ className, ...props }, ref) => {\n const { timeElapsed, isTimeExceeded } = useQuizStore();\n const exceeded = isTimeExceeded();\n const formatted = formatTimeSpent(timeElapsed);\n\n return (\n <div\n ref={ref}\n role=\"timer\"\n aria-live=\"off\"\n aria-label={`Tempo de prova: ${formatted}${exceeded ? ' — tempo excedido' : ''}`}\n className={cn(\n 'inline-flex flex-row items-center gap-1 tabular-nums',\n 'rounded-md border px-2 py-1',\n exceeded\n ? 'bg-error-background border-error-300 text-error-700'\n : 'bg-info border-info-300 text-info-800',\n className\n )}\n {...props}\n >\n <ClockIcon size={16} weight={exceeded ? 'fill' : 'regular'} />\n <Text as=\"span\" size=\"sm\" weight=\"medium\" color=\"\">\n {formatted}\n </Text>\n </div>\n );\n }\n);\n\nQuizTimer.displayName = 'QuizTimer';\n\nexport default QuizTimer;\n"]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
QUESTION_STATUS,
|
|
6
6
|
TrueFalseStatementList,
|
|
7
7
|
getQuestionStatusBadgeConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DMYETMZG.mjs";
|
|
9
9
|
import {
|
|
10
10
|
QuestionCommentField
|
|
11
11
|
} from "./chunk-22FRIL3I.mjs";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
DEFAULT_IMAGE_TOLERANCE,
|
|
17
17
|
ImageAnswerView
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CWUNF7U6.mjs";
|
|
19
19
|
import {
|
|
20
20
|
AlternativesList
|
|
21
21
|
} from "./chunk-ET3BKMTB.mjs";
|
|
@@ -1083,4 +1083,4 @@ export {
|
|
|
1083
1083
|
SimulationAnswers,
|
|
1084
1084
|
SimulationsDetailModal
|
|
1085
1085
|
};
|
|
1086
|
-
//# sourceMappingURL=chunk-
|
|
1086
|
+
//# sourceMappingURL=chunk-PORNR2NU.mjs.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/types/enemClassroom.ts
|
|
2
|
+
var ENEM_CLASSROOM_LANGUAGE = {
|
|
3
|
+
INGLES: "INGLES",
|
|
4
|
+
ESPANHOL: "ESPANHOL"
|
|
5
|
+
};
|
|
6
|
+
var ENEM_CLASSROOM_LANGUAGE_LABELS = {
|
|
7
|
+
INGLES: "Ingl\xEAs",
|
|
8
|
+
ESPANHOL: "Espanhol"
|
|
9
|
+
};
|
|
10
|
+
var ENEM_CLASSROOM_PARTICIPATION_STATUS = {
|
|
11
|
+
NOT_STARTED: "NOT_STARTED",
|
|
12
|
+
IN_PROGRESS: "IN_PROGRESS",
|
|
13
|
+
FINISHED: "FINISHED"
|
|
14
|
+
};
|
|
15
|
+
var ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS = {
|
|
16
|
+
bannerTitle: "Simula\xE7\xE3o do ENEM em sala de aula!",
|
|
17
|
+
bannerSubtitle: "",
|
|
18
|
+
bannerText: "Sua prova est\xE1 liberada.",
|
|
19
|
+
bannerItems: [],
|
|
20
|
+
bannerCta: "Toque para come\xE7ar.",
|
|
21
|
+
introVideoText: "Assista \xE0s orienta\xE7\xF5es.",
|
|
22
|
+
introHeading: "Ei, l\xEA isso antes de come\xE7ar!",
|
|
23
|
+
introWarningTitle: "S\xF3 vale em sala de aula",
|
|
24
|
+
introWarningText: "Essa simula\xE7\xE3o precisa ser feita com seu professor presente. N\xE3o vale fazer em casa!"
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
exports.ENEM_CLASSROOM_LANGUAGE = ENEM_CLASSROOM_LANGUAGE; exports.ENEM_CLASSROOM_LANGUAGE_LABELS = ENEM_CLASSROOM_LANGUAGE_LABELS; exports.ENEM_CLASSROOM_PARTICIPATION_STATUS = ENEM_CLASSROOM_PARTICIPATION_STATUS; exports.ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS = ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS;
|
|
33
|
+
//# sourceMappingURL=chunk-QF3UKRIJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-QF3UKRIJ.js","../src/types/enemClassroom.ts"],"names":[],"mappings":"AAAA;ACWO,IAAM,wBAAA,EAA0B;AAAA,EACrC,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAMO,IAAM,+BAAA,EAGT;AAAA,EACF,MAAA,EAAQ,WAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAGO,IAAM,oCAAA,EAAsC;AAAA,EACjD,WAAA,EAAa,aAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU;AACZ,CAAA;AAsEO,IAAM,qCAAA,EAAkE;AAAA,EAC7E,WAAA,EAAa,0CAAA;AAAA,EACb,cAAA,EAAgB,EAAA;AAAA,EAChB,UAAA,EAAY,6BAAA;AAAA,EACZ,WAAA,EAAa,CAAC,CAAA;AAAA,EACd,SAAA,EAAW,wBAAA;AAAA,EACX,cAAA,EAAgB,kCAAA;AAAA,EAChB,YAAA,EAAc,qCAAA;AAAA,EACd,iBAAA,EAAmB,4BAAA;AAAA,EACnB,gBAAA,EACE;AACJ,CAAA;ADzFA;AACA;AACE;AACA;AACA;AACA;AACF,2SAAC","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-QF3UKRIJ.js","sourcesContent":[null,"/**\n * In-classroom ENEM simulation (\"Simulação do ENEM em sala de aula\").\n *\n * Shapes of the student-facing API (`/enem-classroom/*`), shared by the\n * student web app and the backoffice so both read the same vocabulary.\n */\n\n/**\n * Foreign language the student sits the exam in. Picks which of the two\n * language blocks of the exam the student receives.\n */\nexport const ENEM_CLASSROOM_LANGUAGE = {\n INGLES: 'INGLES',\n ESPANHOL: 'ESPANHOL',\n} as const;\n\nexport type EnemClassroomLanguage =\n (typeof ENEM_CLASSROOM_LANGUAGE)[keyof typeof ENEM_CLASSROOM_LANGUAGE];\n\n/** Human labels for each language, in the order the student sees them. */\nexport const ENEM_CLASSROOM_LANGUAGE_LABELS: Record<\n EnemClassroomLanguage,\n string\n> = {\n INGLES: 'Inglês',\n ESPANHOL: 'Espanhol',\n};\n\n/** Where the student stands in the exam. FINISHED is final. */\nexport const ENEM_CLASSROOM_PARTICIPATION_STATUS = {\n NOT_STARTED: 'NOT_STARTED',\n IN_PROGRESS: 'IN_PROGRESS',\n FINISHED: 'FINISHED',\n} as const;\n\nexport type EnemClassroomParticipationStatus =\n (typeof ENEM_CLASSROOM_PARTICIPATION_STATUS)[keyof typeof ENEM_CLASSROOM_PARTICIPATION_STATUS];\n\n/**\n * One socio-economic question asked before the exam starts. Free text with a\n * \"skip\" option — every field is written by the backoffice.\n */\nexport interface EnemClassroomSurveyQuestion {\n id: string;\n position: number;\n /** Short name of the step in the stepper (\"Curso\"). */\n stepLabel: string;\n /** The question itself (\"Você já tem o curso que quer fazer em mente?\"). */\n prompt: string;\n /** Label of the option that opens the text field (\"Se sim, escreva o seu curso\"). */\n inputLabel: string;\n /** Placeholder of the text field (\"Escreva o curso\"). */\n inputPlaceholder: string;\n /** Label of the option that skips the question (\"Não, ainda estou pensando\"). */\n skipLabel: string;\n}\n\n/** The exam as the student sees it before starting. */\nexport interface EnemClassroomExam {\n id: string;\n title: string;\n /** Introduction video shown on the first step; null when there is none. */\n videoUrl: string | null;\n /** How long the student has once they start. */\n durationMinutes: number;\n /**\n * Whether the student picks English or Spanish before starting (ENEM's\n * day 1). Off, the exam has no foreign-language block and the choice step\n * is not shown (day 2).\n */\n languageChoice: boolean;\n /** The texts of the panel card and of the start modal, as the backoffice wrote them. */\n studentTexts: EnemClassroomStudentTexts;\n surveyQuestions: EnemClassroomSurveyQuestion[];\n}\n\n/**\n * Every text the student sees around the exam — the panel card and the\n * introduction step of the start modal. The backoffice rewrites them per\n * exam; the API always sends the full set.\n */\nexport interface EnemClassroomStudentTexts {\n /** The card's first line. */\n bannerTitle: string;\n /** The card's second line; empty hides it. */\n bannerSubtitle: string;\n /** The card's body line. */\n bannerText: string;\n /** Bullet list under the body; empty hides it. */\n bannerItems: string[];\n /** The call to action on the card's right. */\n bannerCta: string;\n /** Above the introduction video; only shown when the exam has one. */\n introVideoText: string;\n /** The heading over the warnings of the introduction step. */\n introHeading: string;\n /** The first warning's title (the other two are fixed). */\n introWarningTitle: string;\n /** The first warning's description. */\n introWarningText: string;\n}\n\n/** The texts the API sends unless the backoffice wrote others; stories and tests start from here. */\nexport const ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS: EnemClassroomStudentTexts = {\n bannerTitle: 'Simulação do ENEM em sala de aula!',\n bannerSubtitle: '',\n bannerText: 'Sua prova está liberada.',\n bannerItems: [],\n bannerCta: 'Toque para começar.',\n introVideoText: 'Assista às orientações.',\n introHeading: 'Ei, lê isso antes de começar!',\n introWarningTitle: 'Só vale em sala de aula',\n introWarningText:\n 'Essa simulação precisa ser feita com seu professor presente. Não vale fazer em casa!',\n};\n\n/** A survey answer; `null` means the student skipped the question. */\nexport interface EnemClassroomSurveyAnswer {\n questionId: string;\n answer: string | null;\n}\n\n/** The student's own record of the exam. */\nexport interface EnemClassroomParticipation {\n status: EnemClassroomParticipationStatus;\n language: EnemClassroomLanguage | null;\n /** ISO 8601 */\n startedAt: string | null;\n /** ISO 8601. `startedAt + durationMinutes`; the exam is submitted at this point. */\n deadlineAt: string | null;\n /** The shared activity behind the exam — what drafts and answers address. */\n activityId: string;\n surveyAnswers: EnemClassroomSurveyAnswer[];\n}\n\n/** `GET /enem-classroom/current` */\nexport interface EnemClassroomCurrentResponse {\n message: string;\n data: {\n /** Null when the institution has no active exam. */\n exam: EnemClassroomExam | null;\n /** Null until the student starts. */\n participation: EnemClassroomParticipation | null;\n };\n}\n\n/** `POST /enem-classroom/exams/:id/start` body */\nexport interface EnemClassroomStartPayload {\n /** Null when the exam offers no language choice. */\n language: EnemClassroomLanguage | null;\n surveyAnswers: EnemClassroomSurveyAnswer[];\n}\n\n/** `POST /enem-classroom/exams/:id/start` response */\nexport interface EnemClassroomStartResponse {\n message: string;\n data: {\n activityId: string;\n startedAt: string;\n deadlineAt: string;\n };\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// src/types/enemClassroom.ts
|
|
2
|
+
var ENEM_CLASSROOM_LANGUAGE = {
|
|
3
|
+
INGLES: "INGLES",
|
|
4
|
+
ESPANHOL: "ESPANHOL"
|
|
5
|
+
};
|
|
6
|
+
var ENEM_CLASSROOM_LANGUAGE_LABELS = {
|
|
7
|
+
INGLES: "Ingl\xEAs",
|
|
8
|
+
ESPANHOL: "Espanhol"
|
|
9
|
+
};
|
|
10
|
+
var ENEM_CLASSROOM_PARTICIPATION_STATUS = {
|
|
11
|
+
NOT_STARTED: "NOT_STARTED",
|
|
12
|
+
IN_PROGRESS: "IN_PROGRESS",
|
|
13
|
+
FINISHED: "FINISHED"
|
|
14
|
+
};
|
|
15
|
+
var ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS = {
|
|
16
|
+
bannerTitle: "Simula\xE7\xE3o do ENEM em sala de aula!",
|
|
17
|
+
bannerSubtitle: "",
|
|
18
|
+
bannerText: "Sua prova est\xE1 liberada.",
|
|
19
|
+
bannerItems: [],
|
|
20
|
+
bannerCta: "Toque para come\xE7ar.",
|
|
21
|
+
introVideoText: "Assista \xE0s orienta\xE7\xF5es.",
|
|
22
|
+
introHeading: "Ei, l\xEA isso antes de come\xE7ar!",
|
|
23
|
+
introWarningTitle: "S\xF3 vale em sala de aula",
|
|
24
|
+
introWarningText: "Essa simula\xE7\xE3o precisa ser feita com seu professor presente. N\xE3o vale fazer em casa!"
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
ENEM_CLASSROOM_LANGUAGE,
|
|
29
|
+
ENEM_CLASSROOM_LANGUAGE_LABELS,
|
|
30
|
+
ENEM_CLASSROOM_PARTICIPATION_STATUS,
|
|
31
|
+
ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-RAHXO5YU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/enemClassroom.ts"],"sourcesContent":["/**\n * In-classroom ENEM simulation (\"Simulação do ENEM em sala de aula\").\n *\n * Shapes of the student-facing API (`/enem-classroom/*`), shared by the\n * student web app and the backoffice so both read the same vocabulary.\n */\n\n/**\n * Foreign language the student sits the exam in. Picks which of the two\n * language blocks of the exam the student receives.\n */\nexport const ENEM_CLASSROOM_LANGUAGE = {\n INGLES: 'INGLES',\n ESPANHOL: 'ESPANHOL',\n} as const;\n\nexport type EnemClassroomLanguage =\n (typeof ENEM_CLASSROOM_LANGUAGE)[keyof typeof ENEM_CLASSROOM_LANGUAGE];\n\n/** Human labels for each language, in the order the student sees them. */\nexport const ENEM_CLASSROOM_LANGUAGE_LABELS: Record<\n EnemClassroomLanguage,\n string\n> = {\n INGLES: 'Inglês',\n ESPANHOL: 'Espanhol',\n};\n\n/** Where the student stands in the exam. FINISHED is final. */\nexport const ENEM_CLASSROOM_PARTICIPATION_STATUS = {\n NOT_STARTED: 'NOT_STARTED',\n IN_PROGRESS: 'IN_PROGRESS',\n FINISHED: 'FINISHED',\n} as const;\n\nexport type EnemClassroomParticipationStatus =\n (typeof ENEM_CLASSROOM_PARTICIPATION_STATUS)[keyof typeof ENEM_CLASSROOM_PARTICIPATION_STATUS];\n\n/**\n * One socio-economic question asked before the exam starts. Free text with a\n * \"skip\" option — every field is written by the backoffice.\n */\nexport interface EnemClassroomSurveyQuestion {\n id: string;\n position: number;\n /** Short name of the step in the stepper (\"Curso\"). */\n stepLabel: string;\n /** The question itself (\"Você já tem o curso que quer fazer em mente?\"). */\n prompt: string;\n /** Label of the option that opens the text field (\"Se sim, escreva o seu curso\"). */\n inputLabel: string;\n /** Placeholder of the text field (\"Escreva o curso\"). */\n inputPlaceholder: string;\n /** Label of the option that skips the question (\"Não, ainda estou pensando\"). */\n skipLabel: string;\n}\n\n/** The exam as the student sees it before starting. */\nexport interface EnemClassroomExam {\n id: string;\n title: string;\n /** Introduction video shown on the first step; null when there is none. */\n videoUrl: string | null;\n /** How long the student has once they start. */\n durationMinutes: number;\n /**\n * Whether the student picks English or Spanish before starting (ENEM's\n * day 1). Off, the exam has no foreign-language block and the choice step\n * is not shown (day 2).\n */\n languageChoice: boolean;\n /** The texts of the panel card and of the start modal, as the backoffice wrote them. */\n studentTexts: EnemClassroomStudentTexts;\n surveyQuestions: EnemClassroomSurveyQuestion[];\n}\n\n/**\n * Every text the student sees around the exam — the panel card and the\n * introduction step of the start modal. The backoffice rewrites them per\n * exam; the API always sends the full set.\n */\nexport interface EnemClassroomStudentTexts {\n /** The card's first line. */\n bannerTitle: string;\n /** The card's second line; empty hides it. */\n bannerSubtitle: string;\n /** The card's body line. */\n bannerText: string;\n /** Bullet list under the body; empty hides it. */\n bannerItems: string[];\n /** The call to action on the card's right. */\n bannerCta: string;\n /** Above the introduction video; only shown when the exam has one. */\n introVideoText: string;\n /** The heading over the warnings of the introduction step. */\n introHeading: string;\n /** The first warning's title (the other two are fixed). */\n introWarningTitle: string;\n /** The first warning's description. */\n introWarningText: string;\n}\n\n/** The texts the API sends unless the backoffice wrote others; stories and tests start from here. */\nexport const ENEM_CLASSROOM_DEFAULT_STUDENT_TEXTS: EnemClassroomStudentTexts = {\n bannerTitle: 'Simulação do ENEM em sala de aula!',\n bannerSubtitle: '',\n bannerText: 'Sua prova está liberada.',\n bannerItems: [],\n bannerCta: 'Toque para começar.',\n introVideoText: 'Assista às orientações.',\n introHeading: 'Ei, lê isso antes de começar!',\n introWarningTitle: 'Só vale em sala de aula',\n introWarningText:\n 'Essa simulação precisa ser feita com seu professor presente. Não vale fazer em casa!',\n};\n\n/** A survey answer; `null` means the student skipped the question. */\nexport interface EnemClassroomSurveyAnswer {\n questionId: string;\n answer: string | null;\n}\n\n/** The student's own record of the exam. */\nexport interface EnemClassroomParticipation {\n status: EnemClassroomParticipationStatus;\n language: EnemClassroomLanguage | null;\n /** ISO 8601 */\n startedAt: string | null;\n /** ISO 8601. `startedAt + durationMinutes`; the exam is submitted at this point. */\n deadlineAt: string | null;\n /** The shared activity behind the exam — what drafts and answers address. */\n activityId: string;\n surveyAnswers: EnemClassroomSurveyAnswer[];\n}\n\n/** `GET /enem-classroom/current` */\nexport interface EnemClassroomCurrentResponse {\n message: string;\n data: {\n /** Null when the institution has no active exam. */\n exam: EnemClassroomExam | null;\n /** Null until the student starts. */\n participation: EnemClassroomParticipation | null;\n };\n}\n\n/** `POST /enem-classroom/exams/:id/start` body */\nexport interface EnemClassroomStartPayload {\n /** Null when the exam offers no language choice. */\n language: EnemClassroomLanguage | null;\n surveyAnswers: EnemClassroomSurveyAnswer[];\n}\n\n/** `POST /enem-classroom/exams/:id/start` response */\nexport interface EnemClassroomStartResponse {\n message: string;\n data: {\n activityId: string;\n startedAt: string;\n deadlineAt: string;\n };\n}\n"],"mappings":";AAWO,IAAM,0BAA0B;AAAA,EACrC,QAAQ;AAAA,EACR,UAAU;AACZ;AAMO,IAAM,iCAGT;AAAA,EACF,QAAQ;AAAA,EACR,UAAU;AACZ;AAGO,IAAM,sCAAsC;AAAA,EACjD,aAAa;AAAA,EACb,aAAa;AAAA,EACb,UAAU;AACZ;AAsEO,IAAM,uCAAkE;AAAA,EAC7E,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,aAAa,CAAC;AAAA,EACd,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,kBACE;AACJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkIMDS5NQLjs = require('./chunk-IMDS5NQL.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkCOMNJBRHjs = require('./chunk-COMNJBRH.js');
|
|
@@ -385,7 +385,7 @@ var TrueFalseStatementList = ({
|
|
|
385
385
|
{
|
|
386
386
|
className: _chunkTN3AYOMVjs.cn.call(void 0,
|
|
387
387
|
"flex flex-row justify-between items-center gap-2 p-2 rounded-md border",
|
|
388
|
-
canShowCorrectness && hasAnswered ?
|
|
388
|
+
canShowCorrectness && hasAnswered ? _chunkIMDS5NQLjs.getStatusStyles.call(void 0, variantCorrect) : ""
|
|
389
389
|
),
|
|
390
390
|
children: [
|
|
391
391
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkANT66KVKjs.Text_default, { as: "span", size: "sm", weight: "normal", color: "text-text-900", children: [
|
|
@@ -425,4 +425,4 @@ var TrueFalseStatementList = ({
|
|
|
425
425
|
|
|
426
426
|
|
|
427
427
|
exports.QUESTION_STATUS = QUESTION_STATUS; exports.getQuestionStatusBadgeConfig = getQuestionStatusBadgeConfig; exports.getQuestionStatusFromData = getQuestionStatusFromData; exports.convertApiResponseToCorrectionData = convertApiResponseToCorrectionData; exports.getStatusBadge = getStatusBadge; exports.FillQuestionContent = FillQuestionContent; exports.TrueFalseStatementList = TrueFalseStatementList;
|
|
428
|
-
//# sourceMappingURL=chunk-
|
|
428
|
+
//# sourceMappingURL=chunk-RQ65U5G2.js.map
|