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
package/dist/RichEditor/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var _chunkHOEAKVCXjs = require('../chunk-HOEAKVCX.js');
|
|
|
9
9
|
var _chunkQKHUMQV4js = require('../chunk-QKHUMQV4.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkVF6QXUX3js = require('../chunk-VF6QXUX3.js');
|
|
13
13
|
require('../chunk-HMIMGXGB.js');
|
|
14
14
|
require('../chunk-4IASFFQ2.js');
|
|
15
15
|
require('../chunk-ZHWRUIVE.js');
|
|
@@ -28,7 +28,7 @@ require('../chunk-TN3AYOMV.js');
|
|
|
28
28
|
require('../chunk-FPOKJGC6.js');
|
|
29
29
|
require('../chunk-5LIGAN3C.js');
|
|
30
30
|
require('../chunk-6WDBJAVC.js');
|
|
31
|
-
require('../chunk-
|
|
31
|
+
require('../chunk-726PIA5M.js');
|
|
32
32
|
require('../chunk-YQ3JVMVB.js');
|
|
33
33
|
|
|
34
34
|
|
|
@@ -37,5 +37,5 @@ require('../chunk-YQ3JVMVB.js');
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
exports.FormulaDialog = _chunkQKHUMQV4js.FormulaDialog; exports.ImageDialog = _chunkHOEAKVCXjs.ImageDialog; exports.MAX_IMAGE_SIZE = _chunkHOEAKVCXjs.MAX_IMAGE_SIZE; exports.RichEditor =
|
|
40
|
+
exports.FormulaDialog = _chunkQKHUMQV4js.FormulaDialog; exports.ImageDialog = _chunkHOEAKVCXjs.ImageDialog; exports.MAX_IMAGE_SIZE = _chunkHOEAKVCXjs.MAX_IMAGE_SIZE; exports.RichEditor = _chunkVF6QXUX3js.RichEditor; exports.processLatexInHtml = _chunkQKHUMQV4js.processLatexInHtml; exports.unprocessLatexInHtml = _chunkQKHUMQV4js.unprocessLatexInHtml;
|
|
41
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "../chunk-6KIDNQFP.mjs";
|
|
10
10
|
import {
|
|
11
11
|
RichEditor
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-O3JP6ZMQ.mjs";
|
|
13
13
|
import "../chunk-LXP6LRHO.mjs";
|
|
14
14
|
import "../chunk-GZGHWAVG.mjs";
|
|
15
15
|
import "../chunk-GKY77WVA.mjs";
|
|
@@ -28,7 +28,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
28
28
|
import "../chunk-WKILJIST.mjs";
|
|
29
29
|
import "../chunk-FJ533SXL.mjs";
|
|
30
30
|
import "../chunk-RVSZBIDS.mjs";
|
|
31
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
32
32
|
import "../chunk-RB5U4DHU.mjs";
|
|
33
33
|
export {
|
|
34
34
|
FormulaDialog,
|
|
@@ -37,7 +37,7 @@ require('./chunk-TN3AYOMV.js');
|
|
|
37
37
|
require('./chunk-FPOKJGC6.js');
|
|
38
38
|
require('./chunk-5LIGAN3C.js');
|
|
39
39
|
require('./chunk-6WDBJAVC.js');
|
|
40
|
-
require('./chunk-
|
|
40
|
+
require('./chunk-726PIA5M.js');
|
|
41
41
|
require('./chunk-YQ3JVMVB.js');
|
|
42
42
|
|
|
43
43
|
// src/components/RichEditor/RichEditorCore.tsx
|
|
@@ -709,4 +709,4 @@ function RichEditor({
|
|
|
709
709
|
|
|
710
710
|
|
|
711
711
|
exports.RichEditor = RichEditor;
|
|
712
|
-
//# sourceMappingURL=RichEditorCore-
|
|
712
|
+
//# sourceMappingURL=RichEditorCore-NEIZKFKE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/RichEditorCore-F5QPQLEK.js","../src/components/RichEditor/RichEditorCore.tsx","../src/components/RichEditor/components/extensions.ts","../src/components/RichEditor/components/pastedImage.ts"],"names":["editor"],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/RichEditorCore-F5QPQLEK.js","sourcesContent":[null,"import { EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport { createRichEditorExtensions } from './components/extensions';\nimport {\n normalizeLineBreaksInHtml,\n processLatexInHtml,\n} from './components/utils';\nimport 'katex/dist/katex.min.css';\nimport { TextBolderIcon } from '@phosphor-icons/react/dist/csr/TextB';\nimport { TextItalicIcon } from '@phosphor-icons/react/dist/csr/TextItalic';\nimport { TextUnderlineIcon } from '@phosphor-icons/react/dist/csr/TextUnderline';\nimport { TextStrikethroughIcon } from '@phosphor-icons/react/dist/csr/TextStrikethrough';\nimport { TextAlignLeftIcon } from '@phosphor-icons/react/dist/csr/TextAlignLeft';\nimport { TextAlignCenterIcon } from '@phosphor-icons/react/dist/csr/TextAlignCenter';\nimport { TextAlignRightIcon } from '@phosphor-icons/react/dist/csr/TextAlignRight';\nimport { TextAlignJustifyIcon } from '@phosphor-icons/react/dist/csr/TextAlignJustify';\nimport { LinkIcon } from '@phosphor-icons/react/dist/csr/Link';\nimport { ListBulletsIcon } from '@phosphor-icons/react/dist/csr/ListBullets';\nimport { ListNumbersIcon } from '@phosphor-icons/react/dist/csr/ListNumbers';\nimport { QuotesIcon } from '@phosphor-icons/react/dist/csr/Quotes';\nimport { MinusIcon } from '@phosphor-icons/react/dist/csr/Minus';\nimport { CodeIcon } from '@phosphor-icons/react/dist/csr/Code';\nimport { TextHOneIcon } from '@phosphor-icons/react/dist/csr/TextHOne';\nimport { TextHTwoIcon } from '@phosphor-icons/react/dist/csr/TextHTwo';\nimport { TextHThreeIcon } from '@phosphor-icons/react/dist/csr/TextHThree';\nimport { MathOperationsIcon } from '@phosphor-icons/react/dist/csr/MathOperations';\nimport { ImageIcon } from '@phosphor-icons/react/dist/csr/Image';\nimport { TableIcon } from '@phosphor-icons/react/dist/csr/Table';\nimport { RowsPlusTopIcon } from '@phosphor-icons/react/dist/csr/RowsPlusTop';\nimport { RowsPlusBottomIcon } from '@phosphor-icons/react/dist/csr/RowsPlusBottom';\nimport { ColumnsPlusLeftIcon } from '@phosphor-icons/react/dist/csr/ColumnsPlusLeft';\nimport { ColumnsPlusRightIcon } from '@phosphor-icons/react/dist/csr/ColumnsPlusRight';\nimport { RowsIcon } from '@phosphor-icons/react/dist/csr/Rows';\nimport { ColumnsIcon } from '@phosphor-icons/react/dist/csr/Columns';\nimport { TrashIcon } from '@phosphor-icons/react/dist/csr/Trash';\nimport { useState, useRef, useEffect, ReactNode } from 'react';\nimport { FormulaDialog } from './components/FormulaDialog';\nimport { ImageDialog } from './components/ImageDialog';\nimport { createPastedImageHandler } from './components/pastedImage';\nimport { resolveInsertWidth } from './components/imageSize';\nimport Button from '../Button/Button';\nimport Text from '../Text/Text';\n\ninterface ToolbarBtnProps {\n onClick: () => void;\n active?: boolean;\n title: string;\n children: ReactNode;\n}\n\nconst ToolbarBtn = ({ onClick, active, title, children }: ToolbarBtnProps) => (\n <Button\n type=\"button\"\n onClick={onClick}\n title={title}\n size=\"small\"\n className={`bg-transparent border-transparent h-7 w-7 p-0 flex items-center justify-center rounded hover:bg-background-100 ${\n active ? 'bg-background-200 text-primary-700' : 'text-text-700'\n }`}\n >\n {children}\n </Button>\n);\n\nconst Divider = () => <div className=\"w-px h-5 bg-border-200 mx-0.5\" />;\n\ninterface TableActionBtnProps {\n onClick: () => void;\n label: string;\n danger?: boolean;\n children: ReactNode;\n}\n\n/**\n * Ação da barra de tabela. Leva rótulo escrito, e não só ícone: \"linha acima\"\n * e \"coluna à esquerda\" são indistinguíveis em 16px para quem não usa o editor\n * com frequência, e esta barra só aparece de vez em quando — há espaço de sobra.\n */\nconst TableActionBtn = ({\n onClick,\n label,\n danger,\n children,\n}: TableActionBtnProps) => (\n <Button\n type=\"button\"\n onClick={onClick}\n title={label}\n size=\"small\"\n className={`bg-transparent border-transparent h-7 px-2 flex items-center gap-1 rounded text-xs whitespace-nowrap hover:bg-background-100 ${\n danger ? 'text-error-600' : 'text-text-700'\n }`}\n >\n {children}\n {label}\n </Button>\n);\n\n/** Tabela padrão de quem está montando um enunciado: cabeçalho + 2 linhas. */\nconst NEW_TABLE = { rows: 3, cols: 3, withHeaderRow: true };\n\n/**\n * Prepares stored content for the TipTap parser. Line breaks are restored first\n * so that LaTeX spans are injected into already-structured markup.\n */\nconst prepareContent = (content?: string) =>\n processLatexInHtml(normalizeLineBreaksInHtml(content || ''));\n\n/** Shown when a pasted image is bigger than the storage backend accepts. */\nconst OVERSIZED_PASTE_MESSAGE = 'A imagem deve ter no máximo 5MB.';\n\n/** Shown when the upload rejects with something that is not an `Error`. */\nconst GENERIC_PASTE_ERROR = 'Erro ao enviar a imagem.';\n\ninterface RichEditorProps {\n readonly content?: string;\n readonly onChange?: (data: { json: object; html: string }) => void;\n readonly placeholder?: string;\n /**\n * Optional callback to generate LaTeX using AI\n * If provided, the AI generation feature will be enabled in the formula dialog\n * @param description - Natural language description of the formula\n * @returns Promise resolving to the LaTeX string\n */\n readonly onGenerateLatexWithAI?: (description: string) => Promise<string>;\n /**\n * Optional callback to upload an image file and get back its public URL.\n * If provided, the file upload tab is enabled in the image dialog; otherwise\n * images can still be inserted by URL.\n * @param file - The image file selected by the user\n * @returns Promise resolving to the public URL of the uploaded image\n */\n readonly onUploadImage?: (file: File) => Promise<string>;\n /**\n * Enables pasting an image straight from the clipboard (Ctrl+V), uploading it\n * through `onUploadImage` and inserting the resulting URL. Off by default and\n * ignored without `onUploadImage`, since there would be nowhere to put the\n * file — the editor schema rejects base64 sources.\n */\n readonly allowImagePaste?: boolean;\n}\n\nexport function RichEditor({\n content,\n onChange,\n placeholder = 'Digite aqui...',\n onGenerateLatexWithAI,\n onUploadImage,\n allowImagePaste = false,\n}: RichEditorProps) {\n const [formulaOpen, setFormulaOpen] = useState(false);\n const [imageOpen, setImageOpen] = useState(false);\n const [isPastingImage, setIsPastingImage] = useState(false);\n const [pasteError, setPasteError] = useState('');\n const lastContentRef = useRef(content);\n /**\n * `editorProps` is captured once, when `useEditor` runs, so a handler reading\n * the props directly would keep serving the first render's values. The editor\n * calls through this ref, which the effect below repoints whenever the paste\n * configuration changes.\n */\n const pasteHandlerRef = useRef<(event: ClipboardEvent) => boolean>(\n () => false\n );\n /** Bumped on unmount so an upload still in flight knows not to insert. */\n const pasteTokenRef = useRef(0);\n\n const editor = useEditor({\n extensions: createRichEditorExtensions(placeholder),\n content: prepareContent(content),\n // External updates do not reach this callback: the sync effect below calls\n // setContent with `emitUpdate: false`.\n onUpdate: ({ editor }) => {\n const html = editor.getHTML();\n lastContentRef.current = html;\n onChange?.({\n json: editor.getJSON(),\n html,\n });\n },\n editorProps: {\n attributes: {\n class:\n 'min-h-[120px] outline-none prose prose-sm max-w-none px-4 py-3 focus:outline-none',\n },\n handlePaste: (_view, event) => pasteHandlerRef.current(event),\n },\n });\n\n /**\n * Estado reativo da toolbar.\n *\n * No Tiptap 3 o `useEditor` deixou de re-renderizar a cada transação, então\n * ler `editor.isActive(...)` direto no corpo do componente devolve o valor\n * congelado do último render: os botões não acendiam ao mover o cursor e a\n * barra de tabela nunca apareceria ao entrar numa célula. `useEditorState`\n * assina as transações e só re-renderiza quando um destes flags muda — bem\n * mais barato que re-renderizar a toolbar inteira a cada tecla digitada.\n */\n const toolbar = useEditorState({\n editor,\n selector: ({ editor }) => ({\n heading1: editor.isActive('heading', { level: 1 }),\n heading2: editor.isActive('heading', { level: 2 }),\n heading3: editor.isActive('heading', { level: 3 }),\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n subscript: editor.isActive('subscript'),\n superscript: editor.isActive('superscript'),\n code: editor.isActive('code'),\n alignLeft: editor.isActive({ textAlign: 'left' }),\n alignCenter: editor.isActive({ textAlign: 'center' }),\n alignRight: editor.isActive({ textAlign: 'right' }),\n alignJustify: editor.isActive({ textAlign: 'justify' }),\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n link: editor.isActive('link'),\n image: editor.isActive('image'),\n table: editor.isActive('table'),\n }),\n });\n\n // Update editor content when prop changes externally (e.g., from loadQuestion)\n useEffect(() => {\n if (editor && content !== undefined && content !== lastContentRef.current) {\n editor.commands.setContent(prepareContent(content), {\n emitUpdate: false,\n });\n lastContentRef.current = content;\n }\n }, [content, editor]);\n\n const insertFormula = (latex: string, display: boolean) => {\n if (!latex || !editor) return;\n editor\n .chain()\n .focus()\n .insertContent({\n type: 'mathInline',\n attrs: { latex, display },\n })\n .run();\n setFormulaOpen(false);\n };\n\n const applyImage = (src: string, alt: string, width?: number) => {\n if (!src || !editor) return;\n editor\n .chain()\n .focus()\n .setImage({ src, alt, ...(width ? { width } : {}) })\n .run();\n };\n\n const insertImage = (src: string, alt: string, width?: number) => {\n applyImage(src, alt, width);\n setImageOpen(false);\n };\n\n /**\n * Uploads the images taken from the clipboard and inserts them in order.\n *\n * The upload has to finish before anything reaches the document: a `blob:`\n * source would survive into the saved HTML and break as soon as the page\n * unloads, and base64 is rejected by the schema.\n * @param files - Images already named and within the size limit\n * @param upload - The consumer's upload callback\n */\n const uploadPastedImages = async (\n files: File[],\n upload: (file: File) => Promise<string>\n ) => {\n const token = pasteTokenRef.current;\n setPasteError('');\n setIsPastingImage(true);\n\n try {\n for (const file of files) {\n const src = await upload(file);\n const width = await resolveInsertWidth(src);\n // The editor may be gone by now — the user can navigate away mid-upload.\n if (token !== pasteTokenRef.current) return;\n applyImage(src, '', width);\n }\n } catch (error) {\n if (token !== pasteTokenRef.current) return;\n setPasteError(\n error instanceof Error ? error.message : GENERIC_PASTE_ERROR\n );\n } finally {\n setIsPastingImage(false);\n }\n };\n\n useEffect(() => {\n pasteHandlerRef.current = createPastedImageHandler({\n enabled: allowImagePaste,\n upload: onUploadImage,\n onImages: uploadPastedImages,\n onOversized: () => setPasteError(OVERSIZED_PASTE_MESSAGE),\n });\n // `uploadPastedImages` is rebuilt on every render and is deliberately left\n // out of the dependencies: it only closes over the editor instance and the\n // state setters, all stable once mounted.\n }, [allowImagePaste, onUploadImage, editor]);\n\n useEffect(() => {\n // Invalidates uploads still in flight, so a late resolution cannot insert\n // into an editor that no longer exists.\n return () => {\n pasteTokenRef.current += 1;\n };\n }, []);\n\n const setLink = () => {\n const url = globalThis.window.prompt('URL do link:');\n if (url === null || !editor) return;\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n };\n\n // `toolbar` só é nulo junto com o editor, mas o TypeScript não sabe disso.\n if (!editor || !toolbar) return null;\n\n // `data-analytica-rich-editor` scopes the image resize handle styles shipped\n // in the library's global stylesheet, so they cannot leak into another Tiptap\n // instance living in the consumer app.\n return (\n <div\n data-analytica-rich-editor\n className=\"border border-border-200 rounded-xl overflow-hidden bg-background-0\"\n >\n {/* Toolbar */}\n <div className=\"flex items-center gap-0.5 border-b border-border-200 bg-background-50 px-2 py-1.5 flex-wrap\">\n {/* Headings */}\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 1 }).run()\n }\n active={toolbar.heading1}\n title=\"Título 1\"\n >\n <TextHOneIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 2 }).run()\n }\n active={toolbar.heading2}\n title=\"Título 2\"\n >\n <TextHTwoIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 3 }).run()\n }\n active={toolbar.heading3}\n title=\"Título 3\"\n >\n <TextHThreeIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Text formatting */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBold().run()}\n active={toolbar.bold}\n title=\"Negrito (Ctrl+B)\"\n >\n <TextBolderIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleItalic().run()}\n active={toolbar.italic}\n title=\"Itálico (Ctrl+I)\"\n >\n <TextItalicIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n active={toolbar.underline}\n title=\"Sublinhado (Ctrl+U)\"\n >\n <TextUnderlineIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleStrike().run()}\n active={toolbar.strike}\n title=\"Tachado\"\n >\n <TextStrikethroughIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleSubscript().run()}\n active={toolbar.subscript}\n title=\"Subscrito\"\n >\n <span className=\"text-xs font-medium\">\n X<sub className=\"text-[8px]\">2</sub>\n </span>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleSuperscript().run()}\n active={toolbar.superscript}\n title=\"Sobrescrito\"\n >\n <span className=\"text-xs font-medium\">\n X<sup className=\"text-[8px]\">2</sup>\n </span>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleCode().run()}\n active={toolbar.code}\n title=\"Código inline\"\n >\n <CodeIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Alignment */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('left').run()}\n active={toolbar.alignLeft}\n title=\"Alinhar à esquerda\"\n >\n <TextAlignLeftIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('center').run()}\n active={toolbar.alignCenter}\n title=\"Centralizar\"\n >\n <TextAlignCenterIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('right').run()}\n active={toolbar.alignRight}\n title=\"Alinhar à direita\"\n >\n <TextAlignRightIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('justify').run()}\n active={toolbar.alignJustify}\n title=\"Justificar\"\n >\n <TextAlignJustifyIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Lists */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n active={toolbar.bulletList}\n title=\"Lista com marcadores\"\n >\n <ListBulletsIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n active={toolbar.orderedList}\n title=\"Lista numerada\"\n >\n <ListNumbersIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n active={toolbar.blockquote}\n title=\"Citação\"\n >\n <QuotesIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setHorizontalRule().run()}\n active={false}\n title=\"Linha horizontal\"\n >\n <MinusIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Link */}\n <ToolbarBtn\n onClick={setLink}\n active={toolbar.link}\n title=\"Inserir link\"\n >\n <LinkIcon size={16} />\n </ToolbarBtn>\n\n {/* Image */}\n <ToolbarBtn\n onClick={() => setImageOpen(true)}\n active={toolbar.image}\n title=\"Inserir imagem\"\n >\n <ImageIcon size={16} />\n </ToolbarBtn>\n\n {/* Table */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().insertTable(NEW_TABLE).run()}\n active={toolbar.table}\n title=\"Inserir tabela\"\n >\n <TableIcon size={16} />\n </ToolbarBtn>\n\n {/* Formula */}\n <Button\n type=\"button\"\n onClick={() => setFormulaOpen(true)}\n title=\"Inserir fórmula LaTeX\"\n size=\"extra-small\"\n variant=\"link\"\n >\n <MathOperationsIcon size={16} />\n LaTeX\n </Button>\n </div>\n\n {/*\n Ações de linha/coluna só existem quando o cursor está dentro de uma\n tabela, então ficam numa barra própria em vez de ocuparem a toolbar\n principal — que já quebra em duas linhas no tablet.\n */}\n {toolbar.table && (\n <div\n data-testid=\"table-toolbar\"\n className=\"flex items-center gap-0.5 border-b border-border-200 bg-background-50 px-2 py-1.5 flex-wrap\"\n >\n <TableActionBtn\n onClick={() => editor.chain().focus().addRowBefore().run()}\n label=\"Linha acima\"\n >\n <RowsPlusTopIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addRowAfter().run()}\n label=\"Linha abaixo\"\n >\n <RowsPlusBottomIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addColumnBefore().run()}\n label=\"Coluna à esquerda\"\n >\n <ColumnsPlusLeftIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n label=\"Coluna à direita\"\n >\n <ColumnsPlusRightIcon size={16} />\n </TableActionBtn>\n\n <Divider />\n\n <TableActionBtn\n onClick={() => editor.chain().focus().toggleHeaderRow().run()}\n label=\"Cabeçalho\"\n >\n <TableIcon size={16} />\n </TableActionBtn>\n\n <Divider />\n\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteRow().run()}\n label=\"Excluir linha\"\n danger\n >\n <RowsIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteColumn().run()}\n label=\"Excluir coluna\"\n danger\n >\n <ColumnsIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteTable().run()}\n label=\"Excluir tabela\"\n danger\n >\n <TrashIcon size={16} />\n </TableActionBtn>\n </div>\n )}\n\n {/* Editor */}\n <EditorContent editor={editor} />\n\n {/* Estado do envio de imagem colada e dica de LaTeX */}\n <div className=\"border-t border-border-200 px-4 py-2 bg-background-50\">\n {isPastingImage && (\n <Text size=\"xs\" color=\"text-text-600\" className=\"block mb-1\">\n Enviando imagem...\n </Text>\n )}\n {pasteError && (\n <Text size=\"xs\" color=\"text-error-600\" className=\"block mb-1\">\n {pasteError}\n </Text>\n )}\n <Text size=\"xs\" color=\"text-text-400\">\n Dica: use{' '}\n <code className=\"bg-background-200 px-1 rounded\">$fórmula$</code> para\n LaTeX inline e{' '}\n <code className=\"bg-background-200 px-1 rounded\">$$fórmula$$</code>{' '}\n para fórmula em bloco. A conversão acontece assim que você fecha os\n cifrões.\n </Text>\n </div>\n\n <FormulaDialog\n open={formulaOpen}\n onClose={() => setFormulaOpen(false)}\n onInsert={insertFormula}\n onGenerateWithAI={onGenerateLatexWithAI}\n />\n\n <ImageDialog\n open={imageOpen}\n onClose={() => setImageOpen(false)}\n onInsert={insertImage}\n onUploadImage={onUploadImage}\n />\n </div>\n );\n}\n","import StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { Color } from '@tiptap/extension-color';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Highlight from '@tiptap/extension-highlight';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Image from '@tiptap/extension-image';\nimport { TableKit } from '@tiptap/extension-table';\nimport { MathNode } from './MathNode';\nimport {\n MIN_IMAGE_HEIGHT,\n MIN_IMAGE_WIDTH,\n parseImageWidth,\n} from './imageSize';\n\n/**\n * Image node with drag-to-resize handles.\n *\n * The stock extension already declares `width`/`height` attributes, but their\n * default parser keeps the raw HTML value. That breaks the resizable node view,\n * which appends `px` to whatever is stored — a legacy `width=\"400px\"` would\n * become `400pxpx`. Parsing to a number up front keeps every source consistent.\n *\n * `height` is deliberately never persisted: the editor stylesheet and\n * HtmlMathRenderer both force `height: auto`, so a stored height exists only to\n * be overridden. Worse, when `max-width` clips a too-wide image while an inline\n * height survives, the node view measures the clipped box and commits a\n * distorted aspect ratio on the next drag.\n */\nconst ResizableImage = Image.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n width: {\n default: null,\n parseHTML: (element: HTMLElement) => parseImageWidth(element),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.width === 'number'\n ? { width: attributes.width }\n : {},\n },\n height: {\n default: null,\n parseHTML: () => null,\n rendered: false,\n },\n };\n },\n\n addNodeView() {\n const parentNodeView = this.parent?.();\n if (!parentNodeView) return null;\n\n return (props) => {\n const nodeView = parentNodeView(props);\n const container = nodeView.dom;\n\n if (container instanceof HTMLElement) {\n // The upstream node view hides the container until `load` fires. An\n // expired storage URL therefore leaves an invisible, unselectable node —\n // worse than the browser's broken-image icon. Reveal it on failure.\n const image = container.querySelector('img');\n image?.addEventListener('error', () => {\n container.style.visibility = '';\n container.style.pointerEvents = '';\n });\n }\n\n return nodeView;\n };\n },\n});\n\n/**\n * Extension list backing the RichEditor.\n *\n * Tiptap validates incoming HTML against the schema these extensions build and\n * silently discards any node it cannot match. Anything the editor must be able\n * to *load* has to be registered here, not only what it can create — omitting\n * Image is what made `<img>` tags disappear from existing content.\n */\nexport function createRichEditorExtensions(placeholder: string) {\n return [\n StarterKit,\n Underline,\n TextStyle,\n Color,\n Highlight.configure({ multicolor: true }),\n Subscript,\n Superscript,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n Link.configure({ openOnClick: false }),\n Placeholder.configure({ placeholder }),\n ResizableImage.configure({\n inline: false,\n allowBase64: false,\n resize: {\n enabled: true,\n // Corner handles only: edge handles span the whole side and read as a\n // border rather than a grip.\n directions: ['top-left', 'top-right', 'bottom-left', 'bottom-right'],\n minWidth: MIN_IMAGE_WIDTH,\n minHeight: MIN_IMAGE_HEIGHT,\n alwaysPreserveAspectRatio: true,\n },\n }),\n // Registering these nodes is what makes a table survive at all: without\n // them the schema has no match for `<table>`, so every cell collapsed into\n // a single run-on paragraph — and the next save persisted that flattened\n // text over the original table. The toolbar commands (insert, add/remove\n // row and column) come from the same kit.\n TableKit.configure({\n // Resizing is off on purpose: dragging a column persists a `colwidth`\n // measured against the editor viewport, and the student's viewport is a\n // different width. Column layout stays with the display stylesheet.\n table: { resizable: false },\n }),\n MathNode,\n ];\n}\n","/**\n * Clipboard handling for images pasted straight into the RichEditor.\n *\n * A screenshot on the clipboard arrives as a `File` on the paste event, but the\n * editor schema rejects base64 sources, so the file has to be uploaded before\n * it can be inserted. These helpers isolate the clipboard reading from the\n * upload flow in `RichEditorCore`, which keeps them testable without a real\n * ProseMirror view.\n */\n\nimport { MAX_IMAGE_SIZE } from './imageSize';\n\n/** Base name given to a clipboard image that arrives without a filename. */\nconst PASTED_IMAGE_BASENAME = 'imagem-colada';\n\n/**\n * Extension per MIME type accepted by the storage backend. Keyed by the types a\n * browser actually puts on the clipboard when copying an image.\n */\nconst EXTENSION_BY_MIME: Record<string, string> = {\n 'image/png': 'png',\n 'image/jpeg': 'jpg',\n 'image/gif': 'gif',\n 'image/webp': 'webp',\n 'image/bmp': 'bmp',\n 'image/svg+xml': 'svg',\n};\n\n/** Extension used when the clipboard reports an image type we do not map. */\nconst FALLBACK_EXTENSION = 'png';\n\n/**\n * Reads the image files carried by a paste event.\n * Anything that is not an image is left alone so the default paste behaviour\n * still handles it.\n * @param clipboardData - The `clipboardData` of the paste event\n * @returns The image files found, in clipboard order\n */\nexport const extractPastedImageFiles = (\n clipboardData: DataTransfer | null | undefined\n): File[] => {\n if (!clipboardData?.files) return [];\n\n return Array.from(clipboardData.files).filter((file) =>\n file.type.startsWith('image/')\n );\n};\n\n/**\n * Guarantees the file has a name before it reaches the upload.\n * Some browsers hand over a nameless blob for a screenshot, and the pre-signed\n * URL request sends `file.name` to the backend — an empty name would be\n * rejected there.\n * @param file - The image file taken from the clipboard\n * @returns The original file when it is already named, a renamed copy otherwise\n */\nexport const namePastedImage = (file: File): File => {\n if (file.name) return file;\n\n const extension = EXTENSION_BY_MIME[file.type] ?? FALLBACK_EXTENSION;\n return new File([file], `${PASTED_IMAGE_BASENAME}.${extension}`, {\n type: file.type,\n });\n};\n\nconst isOversized = (file: File) => file.size > MAX_IMAGE_SIZE;\n\n/**\n * Whether the clipboard markup should win over the image file it came with.\n *\n * Copying a range from Excel or Google Sheets puts both an HTML table and a\n * picture of it on the clipboard; taking the picture would silently turn a\n * pasteable table into a figure. Markup that carries its own `<img>` is the\n * opposite case — copying a picture from Word sends `<img src=\"file:///...\">`,\n * which would paste as a broken image, so there the file is the good source.\n * @param clipboardData - The `clipboardData` of the paste event\n * @returns True when the default paste handling should keep the markup\n */\nconst prefersMarkup = (clipboardData: DataTransfer) => {\n const html = clipboardData.getData('text/html');\n return html !== '' && !/<img\\b/i.test(html);\n};\n\ninterface PastedImageHandlerOptions {\n /** Whether the consumer opted into pasting images. */\n readonly enabled: boolean;\n /** Upload callback. Without one there is nowhere to put the file. */\n readonly upload?: (file: File) => Promise<string>;\n /** Receives the named images to upload, once the clipboard is accepted. */\n readonly onImages: (\n files: File[],\n upload: (file: File) => Promise<string>\n ) => void;\n /** Called instead of `onImages` when any image is over the size limit. */\n readonly onOversized: () => void;\n}\n\n/**\n * Builds the handler Tiptap calls on every paste.\n *\n * Returning false leaves the paste to the default handling, so text, HTML and\n * anything else keep behaving exactly as before — only a clipboard carrying\n * image files is taken over.\n * @param options - Upload wiring and the callbacks used to report the outcome\n * @returns A handler that reports whether it consumed the paste\n */\nexport const createPastedImageHandler =\n ({ enabled, upload, onImages, onOversized }: PastedImageHandlerOptions) =>\n (event: ClipboardEvent): boolean => {\n if (!enabled || !upload) return false;\n\n const clipboard = event.clipboardData;\n if (!clipboard) return false;\n\n const files = extractPastedImageFiles(clipboard);\n if (files.length === 0 || prefersMarkup(clipboard)) return false;\n\n // From here on the paste belongs to us: the default handler would drop the\n // file anyway, since the editor schema rejects base64 image sources.\n event.preventDefault();\n\n if (files.some(isOversized)) {\n onOversized();\n return true;\n }\n\n onImages(files.map(namePastedImage), upload);\n return true;\n };\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/RichEditorCore-NEIZKFKE.js","../src/components/RichEditor/RichEditorCore.tsx","../src/components/RichEditor/components/extensions.ts","../src/components/RichEditor/components/pastedImage.ts"],"names":["editor"],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/RichEditorCore-NEIZKFKE.js","sourcesContent":[null,"import { EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport { createRichEditorExtensions } from './components/extensions';\nimport {\n normalizeLineBreaksInHtml,\n processLatexInHtml,\n} from './components/utils';\nimport 'katex/dist/katex.min.css';\nimport { TextBolderIcon } from '@phosphor-icons/react/dist/csr/TextB';\nimport { TextItalicIcon } from '@phosphor-icons/react/dist/csr/TextItalic';\nimport { TextUnderlineIcon } from '@phosphor-icons/react/dist/csr/TextUnderline';\nimport { TextStrikethroughIcon } from '@phosphor-icons/react/dist/csr/TextStrikethrough';\nimport { TextAlignLeftIcon } from '@phosphor-icons/react/dist/csr/TextAlignLeft';\nimport { TextAlignCenterIcon } from '@phosphor-icons/react/dist/csr/TextAlignCenter';\nimport { TextAlignRightIcon } from '@phosphor-icons/react/dist/csr/TextAlignRight';\nimport { TextAlignJustifyIcon } from '@phosphor-icons/react/dist/csr/TextAlignJustify';\nimport { LinkIcon } from '@phosphor-icons/react/dist/csr/Link';\nimport { ListBulletsIcon } from '@phosphor-icons/react/dist/csr/ListBullets';\nimport { ListNumbersIcon } from '@phosphor-icons/react/dist/csr/ListNumbers';\nimport { QuotesIcon } from '@phosphor-icons/react/dist/csr/Quotes';\nimport { MinusIcon } from '@phosphor-icons/react/dist/csr/Minus';\nimport { CodeIcon } from '@phosphor-icons/react/dist/csr/Code';\nimport { TextHOneIcon } from '@phosphor-icons/react/dist/csr/TextHOne';\nimport { TextHTwoIcon } from '@phosphor-icons/react/dist/csr/TextHTwo';\nimport { TextHThreeIcon } from '@phosphor-icons/react/dist/csr/TextHThree';\nimport { MathOperationsIcon } from '@phosphor-icons/react/dist/csr/MathOperations';\nimport { ImageIcon } from '@phosphor-icons/react/dist/csr/Image';\nimport { TableIcon } from '@phosphor-icons/react/dist/csr/Table';\nimport { RowsPlusTopIcon } from '@phosphor-icons/react/dist/csr/RowsPlusTop';\nimport { RowsPlusBottomIcon } from '@phosphor-icons/react/dist/csr/RowsPlusBottom';\nimport { ColumnsPlusLeftIcon } from '@phosphor-icons/react/dist/csr/ColumnsPlusLeft';\nimport { ColumnsPlusRightIcon } from '@phosphor-icons/react/dist/csr/ColumnsPlusRight';\nimport { RowsIcon } from '@phosphor-icons/react/dist/csr/Rows';\nimport { ColumnsIcon } from '@phosphor-icons/react/dist/csr/Columns';\nimport { TrashIcon } from '@phosphor-icons/react/dist/csr/Trash';\nimport { useState, useRef, useEffect, ReactNode } from 'react';\nimport { FormulaDialog } from './components/FormulaDialog';\nimport { ImageDialog } from './components/ImageDialog';\nimport { createPastedImageHandler } from './components/pastedImage';\nimport { resolveInsertWidth } from './components/imageSize';\nimport Button from '../Button/Button';\nimport Text from '../Text/Text';\n\ninterface ToolbarBtnProps {\n onClick: () => void;\n active?: boolean;\n title: string;\n children: ReactNode;\n}\n\nconst ToolbarBtn = ({ onClick, active, title, children }: ToolbarBtnProps) => (\n <Button\n type=\"button\"\n onClick={onClick}\n title={title}\n size=\"small\"\n className={`bg-transparent border-transparent h-7 w-7 p-0 flex items-center justify-center rounded hover:bg-background-100 ${\n active ? 'bg-background-200 text-primary-700' : 'text-text-700'\n }`}\n >\n {children}\n </Button>\n);\n\nconst Divider = () => <div className=\"w-px h-5 bg-border-200 mx-0.5\" />;\n\ninterface TableActionBtnProps {\n onClick: () => void;\n label: string;\n danger?: boolean;\n children: ReactNode;\n}\n\n/**\n * Ação da barra de tabela. Leva rótulo escrito, e não só ícone: \"linha acima\"\n * e \"coluna à esquerda\" são indistinguíveis em 16px para quem não usa o editor\n * com frequência, e esta barra só aparece de vez em quando — há espaço de sobra.\n */\nconst TableActionBtn = ({\n onClick,\n label,\n danger,\n children,\n}: TableActionBtnProps) => (\n <Button\n type=\"button\"\n onClick={onClick}\n title={label}\n size=\"small\"\n className={`bg-transparent border-transparent h-7 px-2 flex items-center gap-1 rounded text-xs whitespace-nowrap hover:bg-background-100 ${\n danger ? 'text-error-600' : 'text-text-700'\n }`}\n >\n {children}\n {label}\n </Button>\n);\n\n/** Tabela padrão de quem está montando um enunciado: cabeçalho + 2 linhas. */\nconst NEW_TABLE = { rows: 3, cols: 3, withHeaderRow: true };\n\n/**\n * Prepares stored content for the TipTap parser. Line breaks are restored first\n * so that LaTeX spans are injected into already-structured markup.\n */\nconst prepareContent = (content?: string) =>\n processLatexInHtml(normalizeLineBreaksInHtml(content || ''));\n\n/** Shown when a pasted image is bigger than the storage backend accepts. */\nconst OVERSIZED_PASTE_MESSAGE = 'A imagem deve ter no máximo 5MB.';\n\n/** Shown when the upload rejects with something that is not an `Error`. */\nconst GENERIC_PASTE_ERROR = 'Erro ao enviar a imagem.';\n\ninterface RichEditorProps {\n readonly content?: string;\n readonly onChange?: (data: { json: object; html: string }) => void;\n readonly placeholder?: string;\n /**\n * Optional callback to generate LaTeX using AI\n * If provided, the AI generation feature will be enabled in the formula dialog\n * @param description - Natural language description of the formula\n * @returns Promise resolving to the LaTeX string\n */\n readonly onGenerateLatexWithAI?: (description: string) => Promise<string>;\n /**\n * Optional callback to upload an image file and get back its public URL.\n * If provided, the file upload tab is enabled in the image dialog; otherwise\n * images can still be inserted by URL.\n * @param file - The image file selected by the user\n * @returns Promise resolving to the public URL of the uploaded image\n */\n readonly onUploadImage?: (file: File) => Promise<string>;\n /**\n * Enables pasting an image straight from the clipboard (Ctrl+V), uploading it\n * through `onUploadImage` and inserting the resulting URL. Off by default and\n * ignored without `onUploadImage`, since there would be nowhere to put the\n * file — the editor schema rejects base64 sources.\n */\n readonly allowImagePaste?: boolean;\n}\n\nexport function RichEditor({\n content,\n onChange,\n placeholder = 'Digite aqui...',\n onGenerateLatexWithAI,\n onUploadImage,\n allowImagePaste = false,\n}: RichEditorProps) {\n const [formulaOpen, setFormulaOpen] = useState(false);\n const [imageOpen, setImageOpen] = useState(false);\n const [isPastingImage, setIsPastingImage] = useState(false);\n const [pasteError, setPasteError] = useState('');\n const lastContentRef = useRef(content);\n /**\n * `editorProps` is captured once, when `useEditor` runs, so a handler reading\n * the props directly would keep serving the first render's values. The editor\n * calls through this ref, which the effect below repoints whenever the paste\n * configuration changes.\n */\n const pasteHandlerRef = useRef<(event: ClipboardEvent) => boolean>(\n () => false\n );\n /** Bumped on unmount so an upload still in flight knows not to insert. */\n const pasteTokenRef = useRef(0);\n\n const editor = useEditor({\n extensions: createRichEditorExtensions(placeholder),\n content: prepareContent(content),\n // External updates do not reach this callback: the sync effect below calls\n // setContent with `emitUpdate: false`.\n onUpdate: ({ editor }) => {\n const html = editor.getHTML();\n lastContentRef.current = html;\n onChange?.({\n json: editor.getJSON(),\n html,\n });\n },\n editorProps: {\n attributes: {\n class:\n 'min-h-[120px] outline-none prose prose-sm max-w-none px-4 py-3 focus:outline-none',\n },\n handlePaste: (_view, event) => pasteHandlerRef.current(event),\n },\n });\n\n /**\n * Estado reativo da toolbar.\n *\n * No Tiptap 3 o `useEditor` deixou de re-renderizar a cada transação, então\n * ler `editor.isActive(...)` direto no corpo do componente devolve o valor\n * congelado do último render: os botões não acendiam ao mover o cursor e a\n * barra de tabela nunca apareceria ao entrar numa célula. `useEditorState`\n * assina as transações e só re-renderiza quando um destes flags muda — bem\n * mais barato que re-renderizar a toolbar inteira a cada tecla digitada.\n */\n const toolbar = useEditorState({\n editor,\n selector: ({ editor }) => ({\n heading1: editor.isActive('heading', { level: 1 }),\n heading2: editor.isActive('heading', { level: 2 }),\n heading3: editor.isActive('heading', { level: 3 }),\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n subscript: editor.isActive('subscript'),\n superscript: editor.isActive('superscript'),\n code: editor.isActive('code'),\n alignLeft: editor.isActive({ textAlign: 'left' }),\n alignCenter: editor.isActive({ textAlign: 'center' }),\n alignRight: editor.isActive({ textAlign: 'right' }),\n alignJustify: editor.isActive({ textAlign: 'justify' }),\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n link: editor.isActive('link'),\n image: editor.isActive('image'),\n table: editor.isActive('table'),\n }),\n });\n\n // Update editor content when prop changes externally (e.g., from loadQuestion)\n useEffect(() => {\n if (editor && content !== undefined && content !== lastContentRef.current) {\n editor.commands.setContent(prepareContent(content), {\n emitUpdate: false,\n });\n lastContentRef.current = content;\n }\n }, [content, editor]);\n\n const insertFormula = (latex: string, display: boolean) => {\n if (!latex || !editor) return;\n editor\n .chain()\n .focus()\n .insertContent({\n type: 'mathInline',\n attrs: { latex, display },\n })\n .run();\n setFormulaOpen(false);\n };\n\n const applyImage = (src: string, alt: string, width?: number) => {\n if (!src || !editor) return;\n editor\n .chain()\n .focus()\n .setImage({ src, alt, ...(width ? { width } : {}) })\n .run();\n };\n\n const insertImage = (src: string, alt: string, width?: number) => {\n applyImage(src, alt, width);\n setImageOpen(false);\n };\n\n /**\n * Uploads the images taken from the clipboard and inserts them in order.\n *\n * The upload has to finish before anything reaches the document: a `blob:`\n * source would survive into the saved HTML and break as soon as the page\n * unloads, and base64 is rejected by the schema.\n * @param files - Images already named and within the size limit\n * @param upload - The consumer's upload callback\n */\n const uploadPastedImages = async (\n files: File[],\n upload: (file: File) => Promise<string>\n ) => {\n const token = pasteTokenRef.current;\n setPasteError('');\n setIsPastingImage(true);\n\n try {\n for (const file of files) {\n const src = await upload(file);\n const width = await resolveInsertWidth(src);\n // The editor may be gone by now — the user can navigate away mid-upload.\n if (token !== pasteTokenRef.current) return;\n applyImage(src, '', width);\n }\n } catch (error) {\n if (token !== pasteTokenRef.current) return;\n setPasteError(\n error instanceof Error ? error.message : GENERIC_PASTE_ERROR\n );\n } finally {\n setIsPastingImage(false);\n }\n };\n\n useEffect(() => {\n pasteHandlerRef.current = createPastedImageHandler({\n enabled: allowImagePaste,\n upload: onUploadImage,\n onImages: uploadPastedImages,\n onOversized: () => setPasteError(OVERSIZED_PASTE_MESSAGE),\n });\n // `uploadPastedImages` is rebuilt on every render and is deliberately left\n // out of the dependencies: it only closes over the editor instance and the\n // state setters, all stable once mounted.\n }, [allowImagePaste, onUploadImage, editor]);\n\n useEffect(() => {\n // Invalidates uploads still in flight, so a late resolution cannot insert\n // into an editor that no longer exists.\n return () => {\n pasteTokenRef.current += 1;\n };\n }, []);\n\n const setLink = () => {\n const url = globalThis.window.prompt('URL do link:');\n if (url === null || !editor) return;\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n };\n\n // `toolbar` só é nulo junto com o editor, mas o TypeScript não sabe disso.\n if (!editor || !toolbar) return null;\n\n // `data-analytica-rich-editor` scopes the image resize handle styles shipped\n // in the library's global stylesheet, so they cannot leak into another Tiptap\n // instance living in the consumer app.\n return (\n <div\n data-analytica-rich-editor\n className=\"border border-border-200 rounded-xl overflow-hidden bg-background-0\"\n >\n {/* Toolbar */}\n <div className=\"flex items-center gap-0.5 border-b border-border-200 bg-background-50 px-2 py-1.5 flex-wrap\">\n {/* Headings */}\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 1 }).run()\n }\n active={toolbar.heading1}\n title=\"Título 1\"\n >\n <TextHOneIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 2 }).run()\n }\n active={toolbar.heading2}\n title=\"Título 2\"\n >\n <TextHTwoIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() =>\n editor.chain().focus().toggleHeading({ level: 3 }).run()\n }\n active={toolbar.heading3}\n title=\"Título 3\"\n >\n <TextHThreeIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Text formatting */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBold().run()}\n active={toolbar.bold}\n title=\"Negrito (Ctrl+B)\"\n >\n <TextBolderIcon size={16} weight=\"bold\" />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleItalic().run()}\n active={toolbar.italic}\n title=\"Itálico (Ctrl+I)\"\n >\n <TextItalicIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n active={toolbar.underline}\n title=\"Sublinhado (Ctrl+U)\"\n >\n <TextUnderlineIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleStrike().run()}\n active={toolbar.strike}\n title=\"Tachado\"\n >\n <TextStrikethroughIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleSubscript().run()}\n active={toolbar.subscript}\n title=\"Subscrito\"\n >\n <span className=\"text-xs font-medium\">\n X<sub className=\"text-[8px]\">2</sub>\n </span>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleSuperscript().run()}\n active={toolbar.superscript}\n title=\"Sobrescrito\"\n >\n <span className=\"text-xs font-medium\">\n X<sup className=\"text-[8px]\">2</sup>\n </span>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleCode().run()}\n active={toolbar.code}\n title=\"Código inline\"\n >\n <CodeIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Alignment */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('left').run()}\n active={toolbar.alignLeft}\n title=\"Alinhar à esquerda\"\n >\n <TextAlignLeftIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('center').run()}\n active={toolbar.alignCenter}\n title=\"Centralizar\"\n >\n <TextAlignCenterIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('right').run()}\n active={toolbar.alignRight}\n title=\"Alinhar à direita\"\n >\n <TextAlignRightIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('justify').run()}\n active={toolbar.alignJustify}\n title=\"Justificar\"\n >\n <TextAlignJustifyIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Lists */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n active={toolbar.bulletList}\n title=\"Lista com marcadores\"\n >\n <ListBulletsIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n active={toolbar.orderedList}\n title=\"Lista numerada\"\n >\n <ListNumbersIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n active={toolbar.blockquote}\n title=\"Citação\"\n >\n <QuotesIcon size={16} />\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setHorizontalRule().run()}\n active={false}\n title=\"Linha horizontal\"\n >\n <MinusIcon size={16} />\n </ToolbarBtn>\n\n <Divider />\n\n {/* Link */}\n <ToolbarBtn\n onClick={setLink}\n active={toolbar.link}\n title=\"Inserir link\"\n >\n <LinkIcon size={16} />\n </ToolbarBtn>\n\n {/* Image */}\n <ToolbarBtn\n onClick={() => setImageOpen(true)}\n active={toolbar.image}\n title=\"Inserir imagem\"\n >\n <ImageIcon size={16} />\n </ToolbarBtn>\n\n {/* Table */}\n <ToolbarBtn\n onClick={() => editor.chain().focus().insertTable(NEW_TABLE).run()}\n active={toolbar.table}\n title=\"Inserir tabela\"\n >\n <TableIcon size={16} />\n </ToolbarBtn>\n\n {/* Formula */}\n <Button\n type=\"button\"\n onClick={() => setFormulaOpen(true)}\n title=\"Inserir fórmula LaTeX\"\n size=\"extra-small\"\n variant=\"link\"\n >\n <MathOperationsIcon size={16} />\n LaTeX\n </Button>\n </div>\n\n {/*\n Ações de linha/coluna só existem quando o cursor está dentro de uma\n tabela, então ficam numa barra própria em vez de ocuparem a toolbar\n principal — que já quebra em duas linhas no tablet.\n */}\n {toolbar.table && (\n <div\n data-testid=\"table-toolbar\"\n className=\"flex items-center gap-0.5 border-b border-border-200 bg-background-50 px-2 py-1.5 flex-wrap\"\n >\n <TableActionBtn\n onClick={() => editor.chain().focus().addRowBefore().run()}\n label=\"Linha acima\"\n >\n <RowsPlusTopIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addRowAfter().run()}\n label=\"Linha abaixo\"\n >\n <RowsPlusBottomIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addColumnBefore().run()}\n label=\"Coluna à esquerda\"\n >\n <ColumnsPlusLeftIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n label=\"Coluna à direita\"\n >\n <ColumnsPlusRightIcon size={16} />\n </TableActionBtn>\n\n <Divider />\n\n <TableActionBtn\n onClick={() => editor.chain().focus().toggleHeaderRow().run()}\n label=\"Cabeçalho\"\n >\n <TableIcon size={16} />\n </TableActionBtn>\n\n <Divider />\n\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteRow().run()}\n label=\"Excluir linha\"\n danger\n >\n <RowsIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteColumn().run()}\n label=\"Excluir coluna\"\n danger\n >\n <ColumnsIcon size={16} />\n </TableActionBtn>\n <TableActionBtn\n onClick={() => editor.chain().focus().deleteTable().run()}\n label=\"Excluir tabela\"\n danger\n >\n <TrashIcon size={16} />\n </TableActionBtn>\n </div>\n )}\n\n {/* Editor */}\n <EditorContent editor={editor} />\n\n {/* Estado do envio de imagem colada e dica de LaTeX */}\n <div className=\"border-t border-border-200 px-4 py-2 bg-background-50\">\n {isPastingImage && (\n <Text size=\"xs\" color=\"text-text-600\" className=\"block mb-1\">\n Enviando imagem...\n </Text>\n )}\n {pasteError && (\n <Text size=\"xs\" color=\"text-error-600\" className=\"block mb-1\">\n {pasteError}\n </Text>\n )}\n <Text size=\"xs\" color=\"text-text-400\">\n Dica: use{' '}\n <code className=\"bg-background-200 px-1 rounded\">$fórmula$</code> para\n LaTeX inline e{' '}\n <code className=\"bg-background-200 px-1 rounded\">$$fórmula$$</code>{' '}\n para fórmula em bloco. A conversão acontece assim que você fecha os\n cifrões.\n </Text>\n </div>\n\n <FormulaDialog\n open={formulaOpen}\n onClose={() => setFormulaOpen(false)}\n onInsert={insertFormula}\n onGenerateWithAI={onGenerateLatexWithAI}\n />\n\n <ImageDialog\n open={imageOpen}\n onClose={() => setImageOpen(false)}\n onInsert={insertImage}\n onUploadImage={onUploadImage}\n />\n </div>\n );\n}\n","import StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { Color } from '@tiptap/extension-color';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Highlight from '@tiptap/extension-highlight';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Image from '@tiptap/extension-image';\nimport { TableKit } from '@tiptap/extension-table';\nimport { MathNode } from './MathNode';\nimport {\n MIN_IMAGE_HEIGHT,\n MIN_IMAGE_WIDTH,\n parseImageWidth,\n} from './imageSize';\n\n/**\n * Image node with drag-to-resize handles.\n *\n * The stock extension already declares `width`/`height` attributes, but their\n * default parser keeps the raw HTML value. That breaks the resizable node view,\n * which appends `px` to whatever is stored — a legacy `width=\"400px\"` would\n * become `400pxpx`. Parsing to a number up front keeps every source consistent.\n *\n * `height` is deliberately never persisted: the editor stylesheet and\n * HtmlMathRenderer both force `height: auto`, so a stored height exists only to\n * be overridden. Worse, when `max-width` clips a too-wide image while an inline\n * height survives, the node view measures the clipped box and commits a\n * distorted aspect ratio on the next drag.\n */\nconst ResizableImage = Image.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n width: {\n default: null,\n parseHTML: (element: HTMLElement) => parseImageWidth(element),\n renderHTML: (attributes: Record<string, unknown>) =>\n typeof attributes.width === 'number'\n ? { width: attributes.width }\n : {},\n },\n height: {\n default: null,\n parseHTML: () => null,\n rendered: false,\n },\n };\n },\n\n addNodeView() {\n const parentNodeView = this.parent?.();\n if (!parentNodeView) return null;\n\n return (props) => {\n const nodeView = parentNodeView(props);\n const container = nodeView.dom;\n\n if (container instanceof HTMLElement) {\n // The upstream node view hides the container until `load` fires. An\n // expired storage URL therefore leaves an invisible, unselectable node —\n // worse than the browser's broken-image icon. Reveal it on failure.\n const image = container.querySelector('img');\n image?.addEventListener('error', () => {\n container.style.visibility = '';\n container.style.pointerEvents = '';\n });\n }\n\n return nodeView;\n };\n },\n});\n\n/**\n * Extension list backing the RichEditor.\n *\n * Tiptap validates incoming HTML against the schema these extensions build and\n * silently discards any node it cannot match. Anything the editor must be able\n * to *load* has to be registered here, not only what it can create — omitting\n * Image is what made `<img>` tags disappear from existing content.\n */\nexport function createRichEditorExtensions(placeholder: string) {\n return [\n StarterKit,\n Underline,\n TextStyle,\n Color,\n Highlight.configure({ multicolor: true }),\n Subscript,\n Superscript,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n Link.configure({ openOnClick: false }),\n Placeholder.configure({ placeholder }),\n ResizableImage.configure({\n inline: false,\n allowBase64: false,\n resize: {\n enabled: true,\n // Corner handles only: edge handles span the whole side and read as a\n // border rather than a grip.\n directions: ['top-left', 'top-right', 'bottom-left', 'bottom-right'],\n minWidth: MIN_IMAGE_WIDTH,\n minHeight: MIN_IMAGE_HEIGHT,\n alwaysPreserveAspectRatio: true,\n },\n }),\n // Registering these nodes is what makes a table survive at all: without\n // them the schema has no match for `<table>`, so every cell collapsed into\n // a single run-on paragraph — and the next save persisted that flattened\n // text over the original table. The toolbar commands (insert, add/remove\n // row and column) come from the same kit.\n TableKit.configure({\n // Resizing is off on purpose: dragging a column persists a `colwidth`\n // measured against the editor viewport, and the student's viewport is a\n // different width. Column layout stays with the display stylesheet.\n table: { resizable: false },\n }),\n MathNode,\n ];\n}\n","/**\n * Clipboard handling for images pasted straight into the RichEditor.\n *\n * A screenshot on the clipboard arrives as a `File` on the paste event, but the\n * editor schema rejects base64 sources, so the file has to be uploaded before\n * it can be inserted. These helpers isolate the clipboard reading from the\n * upload flow in `RichEditorCore`, which keeps them testable without a real\n * ProseMirror view.\n */\n\nimport { MAX_IMAGE_SIZE } from './imageSize';\n\n/** Base name given to a clipboard image that arrives without a filename. */\nconst PASTED_IMAGE_BASENAME = 'imagem-colada';\n\n/**\n * Extension per MIME type accepted by the storage backend. Keyed by the types a\n * browser actually puts on the clipboard when copying an image.\n */\nconst EXTENSION_BY_MIME: Record<string, string> = {\n 'image/png': 'png',\n 'image/jpeg': 'jpg',\n 'image/gif': 'gif',\n 'image/webp': 'webp',\n 'image/bmp': 'bmp',\n 'image/svg+xml': 'svg',\n};\n\n/** Extension used when the clipboard reports an image type we do not map. */\nconst FALLBACK_EXTENSION = 'png';\n\n/**\n * Reads the image files carried by a paste event.\n * Anything that is not an image is left alone so the default paste behaviour\n * still handles it.\n * @param clipboardData - The `clipboardData` of the paste event\n * @returns The image files found, in clipboard order\n */\nexport const extractPastedImageFiles = (\n clipboardData: DataTransfer | null | undefined\n): File[] => {\n if (!clipboardData?.files) return [];\n\n return Array.from(clipboardData.files).filter((file) =>\n file.type.startsWith('image/')\n );\n};\n\n/**\n * Guarantees the file has a name before it reaches the upload.\n * Some browsers hand over a nameless blob for a screenshot, and the pre-signed\n * URL request sends `file.name` to the backend — an empty name would be\n * rejected there.\n * @param file - The image file taken from the clipboard\n * @returns The original file when it is already named, a renamed copy otherwise\n */\nexport const namePastedImage = (file: File): File => {\n if (file.name) return file;\n\n const extension = EXTENSION_BY_MIME[file.type] ?? FALLBACK_EXTENSION;\n return new File([file], `${PASTED_IMAGE_BASENAME}.${extension}`, {\n type: file.type,\n });\n};\n\nconst isOversized = (file: File) => file.size > MAX_IMAGE_SIZE;\n\n/**\n * Whether the clipboard markup should win over the image file it came with.\n *\n * Copying a range from Excel or Google Sheets puts both an HTML table and a\n * picture of it on the clipboard; taking the picture would silently turn a\n * pasteable table into a figure. Markup that carries its own `<img>` is the\n * opposite case — copying a picture from Word sends `<img src=\"file:///...\">`,\n * which would paste as a broken image, so there the file is the good source.\n * @param clipboardData - The `clipboardData` of the paste event\n * @returns True when the default paste handling should keep the markup\n */\nconst prefersMarkup = (clipboardData: DataTransfer) => {\n const html = clipboardData.getData('text/html');\n return html !== '' && !/<img\\b/i.test(html);\n};\n\ninterface PastedImageHandlerOptions {\n /** Whether the consumer opted into pasting images. */\n readonly enabled: boolean;\n /** Upload callback. Without one there is nowhere to put the file. */\n readonly upload?: (file: File) => Promise<string>;\n /** Receives the named images to upload, once the clipboard is accepted. */\n readonly onImages: (\n files: File[],\n upload: (file: File) => Promise<string>\n ) => void;\n /** Called instead of `onImages` when any image is over the size limit. */\n readonly onOversized: () => void;\n}\n\n/**\n * Builds the handler Tiptap calls on every paste.\n *\n * Returning false leaves the paste to the default handling, so text, HTML and\n * anything else keep behaving exactly as before — only a clipboard carrying\n * image files is taken over.\n * @param options - Upload wiring and the callbacks used to report the outcome\n * @returns A handler that reports whether it consumed the paste\n */\nexport const createPastedImageHandler =\n ({ enabled, upload, onImages, onOversized }: PastedImageHandlerOptions) =>\n (event: ClipboardEvent): boolean => {\n if (!enabled || !upload) return false;\n\n const clipboard = event.clipboardData;\n if (!clipboard) return false;\n\n const files = extractPastedImageFiles(clipboard);\n if (files.length === 0 || prefersMarkup(clipboard)) return false;\n\n // From here on the paste belongs to us: the default handler would drop the\n // file anyway, since the editor schema rejects base64 image sources.\n event.preventDefault();\n\n if (files.some(isOversized)) {\n onOversized();\n return true;\n }\n\n onImages(files.map(namePastedImage), upload);\n return true;\n };\n"]}
|
|
@@ -37,7 +37,7 @@ import "./chunk-53ICLDGS.mjs";
|
|
|
37
37
|
import "./chunk-WKILJIST.mjs";
|
|
38
38
|
import "./chunk-FJ533SXL.mjs";
|
|
39
39
|
import "./chunk-RVSZBIDS.mjs";
|
|
40
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-MOSP7FR5.mjs";
|
|
41
41
|
import "./chunk-RB5U4DHU.mjs";
|
|
42
42
|
|
|
43
43
|
// src/components/RichEditor/RichEditorCore.tsx
|
|
@@ -709,4 +709,4 @@ function RichEditor({
|
|
|
709
709
|
export {
|
|
710
710
|
RichEditor
|
|
711
711
|
};
|
|
712
|
-
//# sourceMappingURL=RichEditorCore-
|
|
712
|
+
//# sourceMappingURL=RichEditorCore-TLAFZ5XG.mjs.map
|
|
@@ -6,7 +6,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
6
6
|
import "../chunk-WKILJIST.mjs";
|
|
7
7
|
import "../chunk-FJ533SXL.mjs";
|
|
8
8
|
import "../chunk-RVSZBIDS.mjs";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
10
10
|
import "../chunk-RB5U4DHU.mjs";
|
|
11
11
|
export {
|
|
12
12
|
ScoreCircle_default as default
|
package/dist/Search/index.js
CHANGED
package/dist/Search/index.mjs
CHANGED
|
@@ -17,7 +17,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
17
17
|
import "../chunk-WKILJIST.mjs";
|
|
18
18
|
import "../chunk-FJ533SXL.mjs";
|
|
19
19
|
import "../chunk-RVSZBIDS.mjs";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
21
21
|
import "../chunk-RB5U4DHU.mjs";
|
|
22
22
|
export {
|
|
23
23
|
Search_default as default
|
|
@@ -10,7 +10,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
10
10
|
import "../chunk-WKILJIST.mjs";
|
|
11
11
|
import "../chunk-FJ533SXL.mjs";
|
|
12
12
|
import "../chunk-RVSZBIDS.mjs";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
14
14
|
import "../chunk-RB5U4DHU.mjs";
|
|
15
15
|
export {
|
|
16
16
|
SearchSelect,
|
package/dist/Select/index.js
CHANGED
package/dist/Select/index.mjs
CHANGED
|
@@ -12,7 +12,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
12
12
|
import "../chunk-WKILJIST.mjs";
|
|
13
13
|
import "../chunk-FJ533SXL.mjs";
|
|
14
14
|
import "../chunk-RVSZBIDS.mjs";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
16
16
|
import "../chunk-RB5U4DHU.mjs";
|
|
17
17
|
export {
|
|
18
18
|
SelectContent,
|
|
@@ -5,7 +5,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
5
5
|
import "../chunk-WKILJIST.mjs";
|
|
6
6
|
import "../chunk-FJ533SXL.mjs";
|
|
7
7
|
import "../chunk-RVSZBIDS.mjs";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
9
9
|
import "../chunk-RB5U4DHU.mjs";
|
|
10
10
|
export {
|
|
11
11
|
SelectionButton_default as default
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk6MK23BTKjs = require('../chunk-6MK23BTK.js');
|
|
4
4
|
require('../chunk-WE4BA4BL.js');
|
|
5
5
|
require('../chunk-RN2GCADE.js');
|
|
6
6
|
require('../chunk-LPVZR4VS.js');
|
|
@@ -23,7 +23,7 @@ require('../chunk-OWK5I7XK.js');
|
|
|
23
23
|
require('../chunk-RZDAIAVY.js');
|
|
24
24
|
require('../chunk-4XNRWVLZ.js');
|
|
25
25
|
require('../chunk-LDLEZQ3O.js');
|
|
26
|
-
require('../chunk-
|
|
26
|
+
require('../chunk-GQUTHDV2.js');
|
|
27
27
|
require('../chunk-CGW6WT6Y.js');
|
|
28
28
|
require('../chunk-PLHS3ZYJ.js');
|
|
29
29
|
require('../chunk-63A2I2CO.js');
|
|
@@ -36,9 +36,9 @@ require('../chunk-OQGSPWQB.js');
|
|
|
36
36
|
require('../chunk-BFPGVYWZ.js');
|
|
37
37
|
require('../chunk-MWJWPCBK.js');
|
|
38
38
|
require('../chunk-BTNLQ42V.js');
|
|
39
|
-
require('../chunk-
|
|
40
|
-
require('../chunk-
|
|
41
|
-
require('../chunk-
|
|
39
|
+
require('../chunk-3VG5MEMY.js');
|
|
40
|
+
require('../chunk-BJHYT75K.js');
|
|
41
|
+
require('../chunk-JPQI2RIV.js');
|
|
42
42
|
require('../chunk-ANQV2CQF.js');
|
|
43
43
|
require('../chunk-OITBOOAR.js');
|
|
44
44
|
require('../chunk-FTGRYIZ5.js');
|
|
@@ -62,16 +62,16 @@ require('../chunk-RX4NMGD4.js');
|
|
|
62
62
|
require('../chunk-2LUIX33X.js');
|
|
63
63
|
require('../chunk-E73Z225T.js');
|
|
64
64
|
require('../chunk-OVBL4SRY.js');
|
|
65
|
-
require('../chunk-
|
|
65
|
+
require('../chunk-JHN35HPH.js');
|
|
66
66
|
require('../chunk-G6FDXLIB.js');
|
|
67
67
|
require('../chunk-TBD2B4VV.js');
|
|
68
68
|
require('../chunk-PUSVQ5Y2.js');
|
|
69
69
|
require('../chunk-5RQFYOXA.js');
|
|
70
70
|
require('../chunk-757U222P.js');
|
|
71
71
|
require('../chunk-VRVQJ2XI.js');
|
|
72
|
-
require('../chunk-
|
|
73
|
-
require('../chunk-
|
|
74
|
-
require('../chunk-
|
|
72
|
+
require('../chunk-S2S7TK3L.js');
|
|
73
|
+
require('../chunk-QF3UKRIJ.js');
|
|
74
|
+
require('../chunk-XQAYZBLL.js');
|
|
75
75
|
require('../chunk-IPAIL2FJ.js');
|
|
76
76
|
require('../chunk-ERYPJBIP.js');
|
|
77
77
|
require('../chunk-ZP66NHQG.js');
|
|
@@ -109,7 +109,7 @@ require('../chunk-EDYAMS5T.js');
|
|
|
109
109
|
require('../chunk-PQH6A3JH.js');
|
|
110
110
|
require('../chunk-NGI3QFNE.js');
|
|
111
111
|
require('../chunk-W3ZQ5XVC.js');
|
|
112
|
-
require('../chunk-
|
|
112
|
+
require('../chunk-YFIB3YNQ.js');
|
|
113
113
|
require('../chunk-TZA4XQPO.js');
|
|
114
114
|
require('../chunk-RGJQ6FBN.js');
|
|
115
115
|
require('../chunk-AWOZ5IUF.js');
|
|
@@ -151,12 +151,12 @@ require('../chunk-75S5O4SL.js');
|
|
|
151
151
|
require('../chunk-AJC7YAEK.js');
|
|
152
152
|
require('../chunk-E2QOITY4.js');
|
|
153
153
|
require('../chunk-QKHUMQV4.js');
|
|
154
|
-
require('../chunk-
|
|
154
|
+
require('../chunk-VF6QXUX3.js');
|
|
155
155
|
require('../chunk-HMIMGXGB.js');
|
|
156
156
|
require('../chunk-4IASFFQ2.js');
|
|
157
157
|
require('../chunk-VDLACBCF.js');
|
|
158
|
-
require('../chunk-
|
|
159
|
-
require('../chunk-
|
|
158
|
+
require('../chunk-NLPBW3SW.js');
|
|
159
|
+
require('../chunk-PJOBOBNJ.js');
|
|
160
160
|
require('../chunk-ZW6L2ZQA.js');
|
|
161
161
|
require('../chunk-HA7IHFOE.js');
|
|
162
162
|
require('../chunk-HOVTCEHK.js');
|
|
@@ -179,16 +179,16 @@ require('../chunk-GCWS5HG5.js');
|
|
|
179
179
|
require('../chunk-O55GO4MM.js');
|
|
180
180
|
require('../chunk-C44WQ6PT.js');
|
|
181
181
|
require('../chunk-N2RLQEC5.js');
|
|
182
|
-
require('../chunk-
|
|
182
|
+
require('../chunk-Y7ZBWTD7.js');
|
|
183
183
|
require('../chunk-AL6GXN2M.js');
|
|
184
|
-
require('../chunk-
|
|
184
|
+
require('../chunk-RQ65U5G2.js');
|
|
185
185
|
require('../chunk-Q3KAPJHL.js');
|
|
186
186
|
require('../chunk-7W6XZZKK.js');
|
|
187
187
|
require('../chunk-HYCL2IYZ.js');
|
|
188
188
|
require('../chunk-2WW23BFO.js');
|
|
189
189
|
require('../chunk-YCOW5GXG.js');
|
|
190
|
-
require('../chunk-
|
|
191
|
-
require('../chunk-
|
|
190
|
+
require('../chunk-IMDS5NQL.js');
|
|
191
|
+
require('../chunk-BBFV3NDF.js');
|
|
192
192
|
require('../chunk-PAUX6JU6.js');
|
|
193
193
|
require('../chunk-4XUEJUIS.js');
|
|
194
194
|
require('../chunk-COMNJBRH.js');
|
|
@@ -262,9 +262,9 @@ require('../chunk-TN3AYOMV.js');
|
|
|
262
262
|
require('../chunk-FPOKJGC6.js');
|
|
263
263
|
require('../chunk-5LIGAN3C.js');
|
|
264
264
|
require('../chunk-6WDBJAVC.js');
|
|
265
|
-
require('../chunk-
|
|
265
|
+
require('../chunk-726PIA5M.js');
|
|
266
266
|
require('../chunk-YQ3JVMVB.js');
|
|
267
267
|
|
|
268
268
|
|
|
269
|
-
exports.default =
|
|
269
|
+
exports.default = _chunk6MK23BTKjs.SendActivityModal_default;
|
|
270
270
|
//# sourceMappingURL=SendActivityModal.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SendActivityModal_default
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-DLHV7CZN.mjs";
|
|
4
4
|
import "../chunk-RRID37Y3.mjs";
|
|
5
5
|
import "../chunk-A4IPM7UN.mjs";
|
|
6
6
|
import "../chunk-MVSTDYCK.mjs";
|
|
@@ -23,7 +23,7 @@ import "../chunk-AMYAKRCG.mjs";
|
|
|
23
23
|
import "../chunk-JGBX7KPP.mjs";
|
|
24
24
|
import "../chunk-IOOUFKTI.mjs";
|
|
25
25
|
import "../chunk-SZ4UPEXQ.mjs";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-GVGDUCVF.mjs";
|
|
27
27
|
import "../chunk-JLZKEHDF.mjs";
|
|
28
28
|
import "../chunk-OMM4LQDJ.mjs";
|
|
29
29
|
import "../chunk-N2V5VMYF.mjs";
|
|
@@ -36,9 +36,9 @@ import "../chunk-QV5WSKSF.mjs";
|
|
|
36
36
|
import "../chunk-K26BULUY.mjs";
|
|
37
37
|
import "../chunk-OPLL4I62.mjs";
|
|
38
38
|
import "../chunk-7LT7CSWS.mjs";
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
41
|
-
import "../chunk-
|
|
39
|
+
import "../chunk-5NIU4XJY.mjs";
|
|
40
|
+
import "../chunk-WY7V5UJN.mjs";
|
|
41
|
+
import "../chunk-RVGLLMWG.mjs";
|
|
42
42
|
import "../chunk-LG2VSR7Y.mjs";
|
|
43
43
|
import "../chunk-UAT7LJVY.mjs";
|
|
44
44
|
import "../chunk-QMI5GUNH.mjs";
|
|
@@ -62,16 +62,16 @@ import "../chunk-RL26IDPE.mjs";
|
|
|
62
62
|
import "../chunk-WKIDESGP.mjs";
|
|
63
63
|
import "../chunk-RHQWRNOI.mjs";
|
|
64
64
|
import "../chunk-DZMWZNQK.mjs";
|
|
65
|
-
import "../chunk-
|
|
65
|
+
import "../chunk-CMYBNZ74.mjs";
|
|
66
66
|
import "../chunk-CERPYLMY.mjs";
|
|
67
67
|
import "../chunk-IQEDRSDD.mjs";
|
|
68
68
|
import "../chunk-WAPPT3UV.mjs";
|
|
69
69
|
import "../chunk-Z4OTBXP3.mjs";
|
|
70
70
|
import "../chunk-JMMNZIDR.mjs";
|
|
71
71
|
import "../chunk-7CIEFLUE.mjs";
|
|
72
|
-
import "../chunk-
|
|
73
|
-
import "../chunk-
|
|
74
|
-
import "../chunk-
|
|
72
|
+
import "../chunk-YYHS2TM6.mjs";
|
|
73
|
+
import "../chunk-RAHXO5YU.mjs";
|
|
74
|
+
import "../chunk-YWGJAB63.mjs";
|
|
75
75
|
import "../chunk-HL7UCODK.mjs";
|
|
76
76
|
import "../chunk-GRGWBD7V.mjs";
|
|
77
77
|
import "../chunk-YRCR4Y7Q.mjs";
|
|
@@ -109,7 +109,7 @@ import "../chunk-WJQCWDGQ.mjs";
|
|
|
109
109
|
import "../chunk-4D3QCMQO.mjs";
|
|
110
110
|
import "../chunk-QLYFZSVZ.mjs";
|
|
111
111
|
import "../chunk-NCWGCMGJ.mjs";
|
|
112
|
-
import "../chunk-
|
|
112
|
+
import "../chunk-PORNR2NU.mjs";
|
|
113
113
|
import "../chunk-MHRJKJBN.mjs";
|
|
114
114
|
import "../chunk-7J5Y7KZC.mjs";
|
|
115
115
|
import "../chunk-YQK6QCA7.mjs";
|
|
@@ -151,12 +151,12 @@ import "../chunk-JEHWNNJI.mjs";
|
|
|
151
151
|
import "../chunk-6TUOCZ7Y.mjs";
|
|
152
152
|
import "../chunk-TVQITCHK.mjs";
|
|
153
153
|
import "../chunk-6KIDNQFP.mjs";
|
|
154
|
-
import "../chunk-
|
|
154
|
+
import "../chunk-O3JP6ZMQ.mjs";
|
|
155
155
|
import "../chunk-LXP6LRHO.mjs";
|
|
156
156
|
import "../chunk-GZGHWAVG.mjs";
|
|
157
157
|
import "../chunk-VQTRDBGR.mjs";
|
|
158
|
-
import "../chunk-
|
|
159
|
-
import "../chunk-
|
|
158
|
+
import "../chunk-7VKFZHWP.mjs";
|
|
159
|
+
import "../chunk-LMDAF6LA.mjs";
|
|
160
160
|
import "../chunk-CKTHUTMH.mjs";
|
|
161
161
|
import "../chunk-YPQFSNET.mjs";
|
|
162
162
|
import "../chunk-4QZWLI7Q.mjs";
|
|
@@ -179,16 +179,16 @@ import "../chunk-CLUO2RXF.mjs";
|
|
|
179
179
|
import "../chunk-4HKNGGCT.mjs";
|
|
180
180
|
import "../chunk-G3RX4ZC5.mjs";
|
|
181
181
|
import "../chunk-YUL3MXIB.mjs";
|
|
182
|
-
import "../chunk-
|
|
182
|
+
import "../chunk-7KALNPIG.mjs";
|
|
183
183
|
import "../chunk-MCYODANA.mjs";
|
|
184
|
-
import "../chunk-
|
|
184
|
+
import "../chunk-DMYETMZG.mjs";
|
|
185
185
|
import "../chunk-22FRIL3I.mjs";
|
|
186
186
|
import "../chunk-ILCBSWZF.mjs";
|
|
187
187
|
import "../chunk-OAP6DJKU.mjs";
|
|
188
188
|
import "../chunk-L2YGLO5B.mjs";
|
|
189
189
|
import "../chunk-3NWG3D24.mjs";
|
|
190
|
-
import "../chunk-
|
|
191
|
-
import "../chunk-
|
|
190
|
+
import "../chunk-CWUNF7U6.mjs";
|
|
191
|
+
import "../chunk-64WGFT5E.mjs";
|
|
192
192
|
import "../chunk-5GYKI7WV.mjs";
|
|
193
193
|
import "../chunk-K3PNHIA6.mjs";
|
|
194
194
|
import "../chunk-YVX5YDST.mjs";
|
|
@@ -262,7 +262,7 @@ import "../chunk-53ICLDGS.mjs";
|
|
|
262
262
|
import "../chunk-WKILJIST.mjs";
|
|
263
263
|
import "../chunk-FJ533SXL.mjs";
|
|
264
264
|
import "../chunk-RVSZBIDS.mjs";
|
|
265
|
-
import "../chunk-
|
|
265
|
+
import "../chunk-MOSP7FR5.mjs";
|
|
266
266
|
import "../chunk-RB5U4DHU.mjs";
|
|
267
267
|
export {
|
|
268
268
|
SendActivityModal_default as default
|