analytica-frontend-lib 1.2.70 → 1.2.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/ActivitiesHistory/index.js +14 -3
  2. package/dist/ActivitiesHistory/index.js.map +1 -1
  3. package/dist/ActivitiesHistory/index.mjs +14 -3
  4. package/dist/ActivitiesHistory/index.mjs.map +1 -1
  5. package/dist/ActivityDetails/index.d.ts +4 -11
  6. package/dist/ActivityDetails/index.d.ts.map +1 -1
  7. package/dist/ActivityDetails/index.js +176 -69
  8. package/dist/ActivityDetails/index.js.map +1 -1
  9. package/dist/ActivityDetails/index.mjs +143 -36
  10. package/dist/ActivityDetails/index.mjs.map +1 -1
  11. package/dist/ActivityFilters/index.js +5 -5
  12. package/dist/ActivityFilters/index.js.map +1 -1
  13. package/dist/ActivityFilters/index.mjs +5 -5
  14. package/dist/ActivityFilters/index.mjs.map +1 -1
  15. package/dist/CorrectActivityModal/index.d.ts.map +1 -1
  16. package/dist/CorrectActivityModal/index.js +1 -2
  17. package/dist/CorrectActivityModal/index.js.map +1 -1
  18. package/dist/CorrectActivityModal/index.mjs +1 -2
  19. package/dist/CorrectActivityModal/index.mjs.map +1 -1
  20. package/dist/RecommendedLessonsHistory/index.js +14 -3
  21. package/dist/RecommendedLessonsHistory/index.js.map +1 -1
  22. package/dist/RecommendedLessonsHistory/index.mjs +14 -3
  23. package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
  24. package/dist/TableProvider/index.d.ts +10 -1
  25. package/dist/TableProvider/index.d.ts.map +1 -1
  26. package/dist/TableProvider/index.js +14 -3
  27. package/dist/TableProvider/index.js.map +1 -1
  28. package/dist/TableProvider/index.mjs +14 -3
  29. package/dist/TableProvider/index.mjs.map +1 -1
  30. package/dist/hooks/useActivitiesHistory/index.d.ts +14 -14
  31. package/dist/hooks/useActivitiesHistory.d.ts +14 -14
  32. package/dist/hooks/useActivityDetails.d.ts +59 -0
  33. package/dist/hooks/useActivityDetails.d.ts.map +1 -0
  34. package/dist/hooks/useActivityModels/index.d.ts +6 -6
  35. package/dist/hooks/useActivityModels.d.ts +6 -6
  36. package/dist/index.d.ts +3 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +537 -421
  39. package/dist/index.js.map +1 -1
  40. package/dist/index.mjs +390 -276
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/types/activityDetails.d.ts +29 -0
  43. package/dist/types/activityDetails.d.ts.map +1 -1
  44. package/dist/types/activityFilters.d.ts +1 -1
  45. package/dist/types/activityFilters.d.ts.map +1 -1
  46. package/dist/types/questions.d.ts +6 -7
  47. package/dist/types/questions.d.ts.map +1 -1
  48. package/dist/utils/activityDetailsUtils.d.ts +4 -4
  49. package/dist/utils/activityDetailsUtils.d.ts.map +1 -1
  50. package/dist/utils/index.js +13 -10
  51. package/dist/utils/index.js.map +1 -1
  52. package/dist/utils/index.mjs +13 -10
  53. package/dist/utils/index.mjs.map +1 -1
  54. package/dist/utils/questionFiltersConverter.d.ts.map +1 -1
  55. package/dist/utils/studentActivityCorrection/types.d.ts +5 -5
  56. package/dist/utils/studentActivityCorrection/types.d.ts.map +1 -1
  57. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -38,7 +38,7 @@ function arraysEqual(a, b, comparator) {
38
38
  function areFiltersEqual(filters1, filters2) {
39
39
  if (filters1 === filters2) return true;
40
40
  if (!filters1 || !filters2) return false;
41
- return arraysEqual(filters1.types, filters2.types) && arraysEqual(filters1.bankIds, filters2.bankIds) && arraysEqual(filters1.yearIds, filters2.yearIds) && arraysEqual(filters1.knowledgeIds, filters2.knowledgeIds) && arraysEqual(filters1.topicIds, filters2.topicIds) && arraysEqual(filters1.subtopicIds, filters2.subtopicIds) && arraysEqual(filters1.contentIds, filters2.contentIds);
41
+ return arraysEqual(filters1.types, filters2.types) && arraysEqual(filters1.bankIds, filters2.bankIds) && arraysEqual(filters1.yearIds, filters2.yearIds) && arraysEqual(filters1.subjectIds, filters2.subjectIds) && arraysEqual(filters1.topicIds, filters2.topicIds) && arraysEqual(filters1.subtopicIds, filters2.subtopicIds) && arraysEqual(filters1.contentIds, filters2.contentIds);
42
42
  }
43
43
 
44
44
  // src/components/Quiz/useQuizStore.ts
@@ -667,12 +667,19 @@ function mapQuestionTypeToEnumRequired(type, fallback = "ALTERNATIVA" /* ALTERNA
667
667
  }
668
668
 
669
669
  // src/types/activityDetails.ts
670
+ import { z } from "zod";
670
671
  var STUDENT_ACTIVITY_STATUS = {
671
672
  CONCLUIDO: "CONCLUIDO",
672
673
  AGUARDANDO_CORRECAO: "AGUARDANDO_CORRECAO",
673
674
  AGUARDANDO_RESPOSTA: "AGUARDANDO_RESPOSTA",
674
675
  NAO_ENTREGUE: "NAO_ENTREGUE"
675
676
  };
677
+ var studentActivityStatusSchema = z.enum([
678
+ STUDENT_ACTIVITY_STATUS.CONCLUIDO,
679
+ STUDENT_ACTIVITY_STATUS.AGUARDANDO_CORRECAO,
680
+ STUDENT_ACTIVITY_STATUS.AGUARDANDO_RESPOSTA,
681
+ STUDENT_ACTIVITY_STATUS.NAO_ENTREGUE
682
+ ]);
676
683
  var ACTIVITY_AVAILABILITY = {
677
684
  DISPONIVEL: "DISPONIVEL",
678
685
  NAO_INICIADA: "NAO_INICIADA",
@@ -701,19 +708,15 @@ var getStatusBadgeConfig = (status) => {
701
708
  label: "N\xE3o Entregue",
702
709
  bgColor: "bg-red-50",
703
710
  textColor: "text-red-800"
704
- },
705
- default: {
706
- label: "Desconhecido",
707
- bgColor: "bg-gray-50",
708
- textColor: "text-gray-800"
709
711
  }
710
712
  };
711
- return configs[status] ?? configs.default;
713
+ return configs[status];
712
714
  };
713
715
  var formatTimeSpent = (seconds) => {
714
- const hours = Math.floor(seconds / 3600);
715
- const minutes = Math.floor(seconds % 3600 / 60);
716
- const secs = seconds % 60;
716
+ const totalSeconds = Math.floor(Math.abs(seconds));
717
+ const hours = Math.floor(totalSeconds / 3600);
718
+ const minutes = Math.floor(totalSeconds % 3600 / 60);
719
+ const secs = totalSeconds % 60;
717
720
  return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
718
721
  };
719
722
  var formatQuestionNumbers = (numbers) => {
@@ -11991,7 +11994,6 @@ var CorrectActivityModal = ({
11991
11994
  }
11992
11995
  await onQuestionCorrectionSubmit(data.studentId, {
11993
11996
  questionId: questionData.question.id,
11994
- questionNumber,
11995
11997
  isCorrect: correction.isCorrect,
11996
11998
  teacherFeedback: correction.teacherFeedback
11997
11999
  });
@@ -12070,7 +12072,7 @@ var CorrectActivityModal = ({
12070
12072
  renderQuestionDissertative({
12071
12073
  result
12072
12074
  }),
12073
- !isViewOnly && /* @__PURE__ */ jsx62("div", { className: "space-y-4 border-t border-border-100 pt-4 mt-4", children: renderEssayCorrectionFields(questionData) })
12075
+ onQuestionCorrectionSubmit && /* @__PURE__ */ jsx62("div", { className: "space-y-4 border-t border-border-100 pt-4 mt-4", children: renderEssayCorrectionFields(questionData) })
12074
12076
  ] });
12075
12077
  break;
12076
12078
  case "PREENCHER" /* PREENCHER */:
@@ -14453,13 +14455,12 @@ import { Notebook } from "phosphor-react";
14453
14455
  // src/utils/questionFiltersConverter.ts
14454
14456
  var convertActivityFiltersToQuestionsFilter = (filters) => {
14455
14457
  return {
14456
- types: filters.types.length > 0 ? filters.types : void 0,
14457
- bankIds: filters.bankIds.length > 0 ? filters.bankIds : void 0,
14458
- yearIds: filters.yearIds.length > 0 ? filters.yearIds : void 0,
14459
- knowledgeIds: filters.knowledgeIds.length > 0 ? filters.knowledgeIds : void 0,
14460
- topicIds: filters.topicIds.length > 0 ? filters.topicIds : void 0,
14461
- subtopicIds: filters.subtopicIds.length > 0 ? filters.subtopicIds : void 0,
14462
- contentIds: filters.contentIds.length > 0 ? filters.contentIds : void 0
14458
+ questionType: filters.types,
14459
+ questionBankYearId: filters.yearIds.map((yearId) => yearId.split("-")[0]),
14460
+ subjectId: filters.subjectIds,
14461
+ topicId: filters.topicIds,
14462
+ subtopicId: filters.subtopicIds,
14463
+ contentId: filters.contentIds
14463
14464
  };
14464
14465
  };
14465
14466
 
@@ -14733,7 +14734,7 @@ function convertFiltersToBackendFormat(filters) {
14733
14734
  return {
14734
14735
  questionTypes: filters.types,
14735
14736
  questionBanks: filters.bankIds,
14736
- subjects: filters.knowledgeIds,
14737
+ subjects: filters.subjectIds,
14737
14738
  topics: filters.topicIds,
14738
14739
  subtopics: filters.subtopicIds,
14739
14740
  contents: filters.contentIds
@@ -14746,7 +14747,7 @@ function convertBackendFiltersToActivityFiltersData(backendFilters) {
14746
14747
  return {
14747
14748
  types: (backendFilters.questionTypes || []).filter(isValidQuestionType),
14748
14749
  bankIds: backendFilters.questionBanks || [],
14749
- knowledgeIds: backendFilters.subjects || [],
14750
+ subjectIds: backendFilters.subjects || [],
14750
14751
  topicIds: backendFilters.topics || [],
14751
14752
  subtopicIds: backendFilters.subtopics || [],
14752
14753
  contentIds: backendFilters.contents || [],
@@ -15186,7 +15187,7 @@ var CreateActivity = ({
15186
15187
  if (questions.length === 0 && !hasFirstSaveBeenDone.current) {
15187
15188
  return false;
15188
15189
  }
15189
- if (!appliedFilters || appliedFilters.knowledgeIds.length === 0) {
15190
+ if (!appliedFilters?.subjectIds?.length) {
15190
15191
  return false;
15191
15192
  }
15192
15193
  if (loadingInitialQuestions || isSaving) {
@@ -15195,7 +15196,10 @@ var CreateActivity = ({
15195
15196
  return true;
15196
15197
  }, [questions.length, appliedFilters, loadingInitialQuestions, isSaving]);
15197
15198
  const createDraftPayload = useCallback7(() => {
15198
- const subjectId = appliedFilters.knowledgeIds[0];
15199
+ const subjectId = appliedFilters?.subjectIds?.[0];
15200
+ if (!subjectId) {
15201
+ throw new Error("Subject ID n\xE3o encontrado");
15202
+ }
15199
15203
  const title = generateTitle(activityType, subjectId, knowledgeAreas);
15200
15204
  const filters = convertFiltersToBackendFormat(appliedFilters);
15201
15205
  const questionIds = questions.map((q) => q.id);
@@ -15410,7 +15414,7 @@ var CreateActivity = ({
15410
15414
  if (questions.length === 0 && !hasFirstSaveBeenDone.current) {
15411
15415
  return;
15412
15416
  }
15413
- if (!appliedFilters || appliedFilters.knowledgeIds.length === 0) {
15417
+ if (!appliedFilters) {
15414
15418
  return;
15415
15419
  }
15416
15420
  const questionIds = questions.map((q) => q.id).join(",");
@@ -15468,7 +15472,8 @@ var CreateActivity = ({
15468
15472
  const handleReorder = useCallback7(
15469
15473
  (orderedQuestions) => {
15470
15474
  setQuestions(orderedQuestions);
15471
- if (hasFirstSaveBeenDone.current && appliedFilters && appliedFilters.knowledgeIds.length > 0 && !loadingInitialQuestions && !isSaving) {
15475
+ const hasSubjectIds = Array.isArray(appliedFilters?.subjectIds) && appliedFilters.subjectIds.length > 0;
15476
+ if (hasFirstSaveBeenDone.current && hasSubjectIds && !loadingInitialQuestions && !isSaving) {
15472
15477
  if (saveTimeoutRef.current) {
15473
15478
  clearTimeout(saveTimeoutRef.current);
15474
15479
  }
@@ -15514,7 +15519,7 @@ var CreateActivity = ({
15514
15519
  async (formData) => {
15515
15520
  setIsSendingActivity(true);
15516
15521
  try {
15517
- const subjectId = activity?.subjectId || appliedFilters?.knowledgeIds[0];
15522
+ const subjectId = activity?.subjectId || appliedFilters?.subjectIds?.[0];
15518
15523
  if (!subjectId) {
15519
15524
  throw new Error("Subject ID n\xE3o encontrado");
15520
15525
  }
@@ -16303,8 +16308,8 @@ var ActivityFilters = ({
16303
16308
  if (initialFilters.types && initialFilters.types.length > 0) {
16304
16309
  setSelectedQuestionTypes(initialFilters.types);
16305
16310
  }
16306
- if (initialFilters.knowledgeIds && initialFilters.knowledgeIds.length > 0) {
16307
- setSelectedSubject(initialFilters.knowledgeIds[0]);
16311
+ if (initialFilters.subjectIds && initialFilters.subjectIds.length > 0) {
16312
+ setSelectedSubject(initialFilters.subjectIds[0]);
16308
16313
  }
16309
16314
  hasAppliedBasicInitialFiltersRef.current = true;
16310
16315
  }, [initialFilters]);
@@ -16344,7 +16349,7 @@ var ActivityFilters = ({
16344
16349
  if (!initialFilters) {
16345
16350
  return;
16346
16351
  }
16347
- const subjectIds = initialFilters.knowledgeIds || [];
16352
+ const subjectIds = initialFilters.subjectIds || [];
16348
16353
  const topicIds = initialFilters.topicIds || [];
16349
16354
  const subtopicIds = initialFilters.subtopicIds || [];
16350
16355
  if (subjectIds.length > 0 && !hasRequestedTopicsRef.current) {
@@ -16466,7 +16471,7 @@ var ActivityFilters = ({
16466
16471
  types: selectedQuestionTypes,
16467
16472
  bankIds: bankIds.bankIds || [],
16468
16473
  yearIds: bankIds.yearIds || [],
16469
- knowledgeIds: selectedSubjects,
16474
+ subjectIds: selectedSubjects,
16470
16475
  topicIds: knowledgeIds.topicIds,
16471
16476
  subtopicIds: knowledgeIds.subtopicIds,
16472
16477
  contentIds: knowledgeIds.contentIds
@@ -16608,6 +16613,8 @@ function TableProvider({
16608
16613
  rowKey,
16609
16614
  onParamsChange,
16610
16615
  onRowClick,
16616
+ headerContent,
16617
+ containerClassName,
16611
16618
  children
16612
16619
  }) {
16613
16620
  const [searchQuery, setSearchQuery] = useState29("");
@@ -16752,6 +16759,10 @@ function TableProvider({
16752
16759
  }
16753
16760
  ) })
16754
16761
  ] });
16762
+ const headerSection = (headerContent || controls) && /* @__PURE__ */ jsxs59("div", { className: "flex flex-col md:flex-row items-stretch md:items-center justify-between gap-4", children: [
16763
+ headerContent && /* @__PURE__ */ jsx76("div", { children: headerContent }),
16764
+ controls && /* @__PURE__ */ jsx76("div", { className: "flex-1 md:flex-none", children: controls })
16765
+ ] });
16755
16766
  const table = /* @__PURE__ */ jsx76("div", { className: "w-full overflow-x-auto", children: /* @__PURE__ */ jsxs59(
16756
16767
  Table_default,
16757
16768
  {
@@ -16848,7 +16859,11 @@ function TableProvider({
16848
16859
  ) });
16849
16860
  if (children) {
16850
16861
  return /* @__PURE__ */ jsxs59(Fragment16, { children: [
16851
- children({ controls, table, pagination }),
16862
+ children({
16863
+ controls: headerSection || controls || null,
16864
+ table,
16865
+ pagination
16866
+ }),
16852
16867
  enableFilters && /* @__PURE__ */ jsx76(
16853
16868
  FilterModal,
16854
16869
  {
@@ -16862,8 +16877,9 @@ function TableProvider({
16862
16877
  )
16863
16878
  ] });
16864
16879
  }
16865
- return /* @__PURE__ */ jsxs59("div", { className: "w-full space-y-4", children: [
16866
- controls,
16880
+ const wrapperClassName = containerClassName || "w-full space-y-4";
16881
+ return /* @__PURE__ */ jsxs59("div", { className: wrapperClassName, children: [
16882
+ headerSection,
16867
16883
  table,
16868
16884
  pagination,
16869
16885
  enableFilters && /* @__PURE__ */ jsx76(
@@ -21606,8 +21622,104 @@ var ActivityPreview = ({
21606
21622
  };
21607
21623
 
21608
21624
  // src/components/ActivityDetails/ActivityDetails.tsx
21609
- import { useState as useState40, useMemo as useMemo24, useCallback as useCallback17, useEffect as useEffect40 } from "react";
21625
+ import { useState as useState40, useMemo as useMemo24, useCallback as useCallback18, useEffect as useEffect40 } from "react";
21610
21626
  import { Medal as Medal2, Star as Star2, File as File3, CaretRight as CaretRight9, WarningCircle as WarningCircle7 } from "phosphor-react";
21627
+
21628
+ // src/hooks/useActivityDetails.ts
21629
+ import { useCallback as useCallback17 } from "react";
21630
+ var buildQueryParams = (params) => {
21631
+ const paramsObj = {};
21632
+ if (params?.page) paramsObj.page = params.page;
21633
+ if (params?.limit) paramsObj.limit = params.limit;
21634
+ if (params?.sortBy) paramsObj.sortBy = params.sortBy;
21635
+ if (params?.sortOrder) paramsObj.sortOrder = params.sortOrder;
21636
+ if (params?.status) paramsObj.status = params.status;
21637
+ return paramsObj;
21638
+ };
21639
+ var useActivityDetails = (apiClient) => {
21640
+ const fetchActivityDetails = useCallback17(
21641
+ async (id, params) => {
21642
+ const queryParams = buildQueryParams(params);
21643
+ const [detailsResponse, quizResponse] = await Promise.all([
21644
+ apiClient.get(`/activities/${id}/details`, {
21645
+ params: queryParams
21646
+ }),
21647
+ apiClient.get(`/activities/${id}/quiz`).catch(() => null)
21648
+ ]);
21649
+ return {
21650
+ ...detailsResponse.data.data,
21651
+ activity: quizResponse?.data?.data
21652
+ };
21653
+ },
21654
+ [apiClient]
21655
+ );
21656
+ const fetchStudentCorrection = useCallback17(
21657
+ async (activityId, studentId) => {
21658
+ const response = await apiClient.get(
21659
+ `/questions/activity/${activityId}/user/${studentId}/answers`
21660
+ );
21661
+ return response.data;
21662
+ },
21663
+ [apiClient]
21664
+ );
21665
+ const submitObservation = useCallback17(
21666
+ async (actId, studentId, observation, file) => {
21667
+ let attachmentUrl = null;
21668
+ if (file) {
21669
+ const presignedRes = await apiClient.post(
21670
+ "/user/get-pre-signed-url",
21671
+ {
21672
+ fileName: file.name,
21673
+ fileType: file.type,
21674
+ fileSize: file.size
21675
+ }
21676
+ );
21677
+ const { url, fields } = presignedRes.data.data;
21678
+ const formData = new FormData();
21679
+ for (const [key2, value] of Object.entries(fields)) {
21680
+ formData.append(key2, value);
21681
+ }
21682
+ formData.append("file", file);
21683
+ await fetch(url, {
21684
+ method: "POST",
21685
+ body: formData
21686
+ }).then((response) => {
21687
+ if (!response.ok) {
21688
+ throw new Error("Falha ao fazer upload do arquivo");
21689
+ }
21690
+ });
21691
+ const baseUrl = url.endsWith("/") ? url.slice(0, -1) : url;
21692
+ const key = fields.key.startsWith("/") ? fields.key.slice(1) : fields.key;
21693
+ attachmentUrl = `${baseUrl}/${key}`;
21694
+ }
21695
+ await apiClient.post(
21696
+ `/activities/${actId}/students/${studentId}/feedback/observation`,
21697
+ {
21698
+ observation,
21699
+ attachmentUrl
21700
+ }
21701
+ );
21702
+ },
21703
+ [apiClient]
21704
+ );
21705
+ const submitQuestionCorrection = useCallback17(
21706
+ async (activityId, studentId, payload) => {
21707
+ await apiClient.post(
21708
+ `/activities/${activityId}/students/${studentId}/questions/correction`,
21709
+ payload
21710
+ );
21711
+ },
21712
+ [apiClient]
21713
+ );
21714
+ return {
21715
+ fetchActivityDetails,
21716
+ fetchStudentCorrection,
21717
+ submitObservation,
21718
+ submitQuestionCorrection
21719
+ };
21720
+ };
21721
+
21722
+ // src/components/ActivityDetails/ActivityDetails.tsx
21611
21723
  import { Fragment as Fragment21, jsx as jsx91, jsxs as jsxs71 } from "react/jsx-runtime";
21612
21724
  var createTableColumns = (onCorrectActivity) => [
21613
21725
  {
@@ -21695,10 +21807,7 @@ var createTableColumns = (onCorrectActivity) => [
21695
21807
  ];
21696
21808
  var ActivityDetails = ({
21697
21809
  activityId,
21698
- fetchActivityDetails,
21699
- fetchStudentCorrection,
21700
- submitObservation,
21701
- submitQuestionCorrection,
21810
+ apiClient,
21702
21811
  onBack,
21703
21812
  onViewActivity,
21704
21813
  emptyStateImage,
@@ -21718,6 +21827,12 @@ var ActivityDetails = ({
21718
21827
  const [isModalOpen, setIsModalOpen] = useState40(false);
21719
21828
  const [isViewOnlyModal, setIsViewOnlyModal] = useState40(false);
21720
21829
  const [correctionError, setCorrectionError] = useState40(null);
21830
+ const {
21831
+ fetchActivityDetails,
21832
+ fetchStudentCorrection,
21833
+ submitObservation,
21834
+ submitQuestionCorrection
21835
+ } = useActivityDetails(apiClient);
21721
21836
  useEffect40(() => {
21722
21837
  const loadData = async () => {
21723
21838
  if (!activityId) return;
@@ -21741,7 +21856,7 @@ var ActivityDetails = ({
21741
21856
  };
21742
21857
  loadData();
21743
21858
  }, [activityId, page, limit, sortBy, sortOrder, fetchActivityDetails]);
21744
- const handleCorrectActivity = useCallback17(
21859
+ const handleCorrectActivity = useCallback18(
21745
21860
  async (studentId) => {
21746
21861
  const student = data?.students.find((s) => s.studentId === studentId);
21747
21862
  if (!student || !activityId) return;
@@ -21749,11 +21864,7 @@ var ActivityDetails = ({
21749
21864
  setIsViewOnlyModal(isViewOnly);
21750
21865
  setCorrectionError(null);
21751
21866
  try {
21752
- const apiResponse = await fetchStudentCorrection(
21753
- activityId,
21754
- studentId,
21755
- student.studentName || "Aluno"
21756
- );
21867
+ const apiResponse = await fetchStudentCorrection(activityId, studentId);
21757
21868
  const correction = convertApiResponseToCorrectionData(
21758
21869
  apiResponse,
21759
21870
  studentId,
@@ -21770,23 +21881,24 @@ var ActivityDetails = ({
21770
21881
  },
21771
21882
  [data?.students, activityId, fetchStudentCorrection]
21772
21883
  );
21773
- const handleCloseModal = useCallback17(() => {
21884
+ const handleCloseModal = useCallback18(() => {
21774
21885
  setIsModalOpen(false);
21775
21886
  }, []);
21776
- const handleObservationSubmit = useCallback17(
21887
+ const handleObservationSubmit = useCallback18(
21777
21888
  async (studentId, observation, files) => {
21778
21889
  if (!activityId || !studentId) return;
21779
21890
  try {
21780
- await submitObservation(activityId, studentId, observation, files);
21891
+ const file = files.length > 0 ? files[0] : null;
21892
+ await submitObservation(activityId, studentId, observation, file);
21781
21893
  } catch (err) {
21782
21894
  console.error("Failed to submit observation:", err);
21783
21895
  }
21784
21896
  },
21785
21897
  [activityId, submitObservation]
21786
21898
  );
21787
- const handleQuestionCorrectionSubmit = useCallback17(
21899
+ const handleQuestionCorrectionSubmit = useCallback18(
21788
21900
  async (studentId, payload) => {
21789
- if (!activityId || !studentId || !submitQuestionCorrection) return;
21901
+ if (!activityId || !studentId) return;
21790
21902
  try {
21791
21903
  await submitQuestionCorrection(activityId, studentId, payload);
21792
21904
  } catch (err) {
@@ -22078,10 +22190,10 @@ import {
22078
22190
  import dayjs2 from "dayjs";
22079
22191
 
22080
22192
  // src/components/Support/schema/index.ts
22081
- import { z } from "zod";
22082
- var supportSchema = z.object({
22193
+ import { z as z2 } from "zod";
22194
+ var supportSchema = z2.object({
22083
22195
  // Tipo de problema selecionado
22084
- problemType: z.enum(["tecnico", "acesso", "outros"], {
22196
+ problemType: z2.enum(["tecnico", "acesso", "outros"], {
22085
22197
  // istanbul ignore next - errorMap é testado em runtime pelo zod real
22086
22198
  errorMap: (
22087
22199
  /* istanbul ignore next */
@@ -22091,13 +22203,13 @@ var supportSchema = z.object({
22091
22203
  )
22092
22204
  }),
22093
22205
  // Título do problema
22094
- title: z.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(5, "T\xEDtulo deve ter pelo menos 5 caracteres").max(100, "T\xEDtulo deve ter no m\xE1ximo 100 caracteres").trim(),
22206
+ title: z2.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(5, "T\xEDtulo deve ter pelo menos 5 caracteres").max(100, "T\xEDtulo deve ter no m\xE1ximo 100 caracteres").trim(),
22095
22207
  // Descrição do problema
22096
- description: z.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(10, "Descri\xE7\xE3o deve ter pelo menos 10 caracteres").max(1e3, "Descri\xE7\xE3o deve ter no m\xE1ximo 1000 caracteres").trim()
22208
+ description: z2.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(10, "Descri\xE7\xE3o deve ter pelo menos 10 caracteres").max(1e3, "Descri\xE7\xE3o deve ter no m\xE1ximo 1000 caracteres").trim()
22097
22209
  });
22098
22210
 
22099
22211
  // src/components/Support/components/TicketModal.tsx
22100
- import { useState as useState41, useEffect as useEffect41, useCallback as useCallback18 } from "react";
22212
+ import { useState as useState41, useEffect as useEffect41, useCallback as useCallback19 } from "react";
22101
22213
  import dayjs from "dayjs";
22102
22214
  import "dayjs/locale/pt-br";
22103
22215
 
@@ -22229,7 +22341,7 @@ var TicketModal = ({
22229
22341
  setShowCloseConfirmation(false);
22230
22342
  onClose();
22231
22343
  };
22232
- const fetchAnswers = useCallback18(async () => {
22344
+ const fetchAnswers = useCallback19(async () => {
22233
22345
  if (!ticket.id || ticket.status !== "respondido" /* RESPONDIDO */) return;
22234
22346
  setIsLoadingAnswers(true);
22235
22347
  try {
@@ -23053,7 +23165,7 @@ var Support = ({
23053
23165
  var Support_default = Support;
23054
23166
 
23055
23167
  // src/components/SendActivityModal/SendActivityModal.tsx
23056
- import { useCallback as useCallback19, useEffect as useEffect43, useRef as useRef24 } from "react";
23168
+ import { useCallback as useCallback20, useEffect as useEffect43, useRef as useRef24 } from "react";
23057
23169
  import {
23058
23170
  CaretLeftIcon,
23059
23171
  ArrowRightIcon,
@@ -23065,7 +23177,7 @@ import {
23065
23177
  import { create as create16 } from "zustand";
23066
23178
 
23067
23179
  // src/components/SendActivityModal/validation.ts
23068
- import { z as z2 } from "zod";
23180
+ import { z as z3 } from "zod";
23069
23181
  var ERROR_MESSAGES = {
23070
23182
  SUBTYPE_REQUIRED: "Campo obrigat\xF3rio! Por favor, selecione uma op\xE7\xE3o para continuar.",
23071
23183
  TITLE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
@@ -23074,20 +23186,20 @@ var ERROR_MESSAGES = {
23074
23186
  FINAL_DATE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
23075
23187
  FINAL_DATE_INVALID: "A data final deve ser maior ou igual \xE0 data inicial."
23076
23188
  };
23077
- var activityStepSchema = z2.object({
23078
- subtype: z2.enum(["TAREFA", "TRABALHO", "PROVA"], {
23189
+ var activityStepSchema = z3.object({
23190
+ subtype: z3.enum(["TAREFA", "TRABALHO", "PROVA"], {
23079
23191
  errorMap: () => ({ message: ERROR_MESSAGES.SUBTYPE_REQUIRED })
23080
23192
  }),
23081
- title: z2.string({ required_error: ERROR_MESSAGES.TITLE_REQUIRED }).transform((val) => val.trim()).refine((val) => val.length > 0, {
23193
+ title: z3.string({ required_error: ERROR_MESSAGES.TITLE_REQUIRED }).transform((val) => val.trim()).refine((val) => val.length > 0, {
23082
23194
  message: ERROR_MESSAGES.TITLE_REQUIRED
23083
23195
  }),
23084
- notification: z2.string().optional()
23196
+ notification: z3.string().optional()
23085
23197
  });
23086
- var recipientStepSchema = z2.object({
23087
- students: z2.array(
23088
- z2.object({
23089
- studentId: z2.string(),
23090
- userInstitutionId: z2.string()
23198
+ var recipientStepSchema = z3.object({
23199
+ students: z3.array(
23200
+ z3.object({
23201
+ studentId: z3.string(),
23202
+ userInstitutionId: z3.string()
23091
23203
  }),
23092
23204
  {
23093
23205
  required_error: ERROR_MESSAGES.STUDENTS_REQUIRED,
@@ -23097,18 +23209,18 @@ var recipientStepSchema = z2.object({
23097
23209
  });
23098
23210
  var DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
23099
23211
  var TIME_REGEX = /^\d{2}:\d{2}$/;
23100
- var deadlineStepBaseSchema = z2.object({
23101
- startDate: z2.string({
23212
+ var deadlineStepBaseSchema = z3.object({
23213
+ startDate: z3.string({
23102
23214
  required_error: ERROR_MESSAGES.START_DATE_REQUIRED,
23103
23215
  invalid_type_error: ERROR_MESSAGES.START_DATE_REQUIRED
23104
23216
  }).min(1, ERROR_MESSAGES.START_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.START_DATE_REQUIRED),
23105
- startTime: z2.string().regex(TIME_REGEX).default("00:00"),
23106
- finalDate: z2.string({
23217
+ startTime: z3.string().regex(TIME_REGEX).default("00:00"),
23218
+ finalDate: z3.string({
23107
23219
  required_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED,
23108
23220
  invalid_type_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED
23109
23221
  }).min(1, ERROR_MESSAGES.FINAL_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.FINAL_DATE_REQUIRED),
23110
- finalTime: z2.string().regex(TIME_REGEX).default("23:59"),
23111
- canRetry: z2.boolean().default(false)
23222
+ finalTime: z3.string().regex(TIME_REGEX).default("23:59"),
23223
+ canRetry: z3.boolean().default(false)
23112
23224
  });
23113
23225
  var deadlineStepSchema = deadlineStepBaseSchema.refine(
23114
23226
  (data) => {
@@ -23378,62 +23490,62 @@ var SendActivityModal = ({
23378
23490
  prevInitialDataRef.current = void 0;
23379
23491
  }
23380
23492
  }, [isOpen, reset]);
23381
- const handleCategoriesChange = useCallback19(
23493
+ const handleCategoriesChange = useCallback20(
23382
23494
  (updatedCategories) => {
23383
23495
  setCategories(updatedCategories);
23384
23496
  onCategoriesChange?.(updatedCategories);
23385
23497
  },
23386
23498
  [setCategories, onCategoriesChange]
23387
23499
  );
23388
- const handleActivityTypeSelect = useCallback19(
23500
+ const handleActivityTypeSelect = useCallback20(
23389
23501
  (subtype) => {
23390
23502
  store.setFormData({ subtype });
23391
23503
  },
23392
23504
  [store]
23393
23505
  );
23394
- const handleTitleChange = useCallback19(
23506
+ const handleTitleChange = useCallback20(
23395
23507
  (e) => {
23396
23508
  store.setFormData({ title: e.target.value });
23397
23509
  },
23398
23510
  [store]
23399
23511
  );
23400
- const handleNotificationChange = useCallback19(
23512
+ const handleNotificationChange = useCallback20(
23401
23513
  (e) => {
23402
23514
  store.setFormData({ notification: e.target.value });
23403
23515
  },
23404
23516
  [store]
23405
23517
  );
23406
- const handleStartDateChange = useCallback19(
23518
+ const handleStartDateChange = useCallback20(
23407
23519
  (date) => {
23408
23520
  store.setFormData({ startDate: date });
23409
23521
  },
23410
23522
  [store]
23411
23523
  );
23412
- const handleStartTimeChange = useCallback19(
23524
+ const handleStartTimeChange = useCallback20(
23413
23525
  (time) => {
23414
23526
  store.setFormData({ startTime: time });
23415
23527
  },
23416
23528
  [store]
23417
23529
  );
23418
- const handleFinalDateChange = useCallback19(
23530
+ const handleFinalDateChange = useCallback20(
23419
23531
  (date) => {
23420
23532
  store.setFormData({ finalDate: date });
23421
23533
  },
23422
23534
  [store]
23423
23535
  );
23424
- const handleFinalTimeChange = useCallback19(
23536
+ const handleFinalTimeChange = useCallback20(
23425
23537
  (time) => {
23426
23538
  store.setFormData({ finalTime: time });
23427
23539
  },
23428
23540
  [store]
23429
23541
  );
23430
- const handleRetryChange = useCallback19(
23542
+ const handleRetryChange = useCallback20(
23431
23543
  (value) => {
23432
23544
  store.setFormData({ canRetry: value === "yes" });
23433
23545
  },
23434
23546
  [store]
23435
23547
  );
23436
- const handleSubmit = useCallback19(async () => {
23548
+ const handleSubmit = useCallback20(async () => {
23437
23549
  const isValid = store.validateAllSteps();
23438
23550
  if (!isValid) return;
23439
23551
  try {
@@ -23447,7 +23559,7 @@ var SendActivityModal = ({
23447
23559
  }
23448
23560
  }
23449
23561
  }, [store, onSubmit, onError]);
23450
- const handleCancel = useCallback19(() => {
23562
+ const handleCancel = useCallback20(() => {
23451
23563
  onClose();
23452
23564
  }, [onClose]);
23453
23565
  const renderError = (error) => {
@@ -23685,7 +23797,7 @@ var SendActivityModal = ({
23685
23797
  var SendActivityModal_default = SendActivityModal;
23686
23798
 
23687
23799
  // src/components/RecommendedLessonsHistory/RecommendedLessonsHistory.tsx
23688
- import { useState as useState44, useCallback as useCallback21, useMemo as useMemo25, useRef as useRef25 } from "react";
23800
+ import { useState as useState44, useCallback as useCallback22, useMemo as useMemo25, useRef as useRef25 } from "react";
23689
23801
  import { Plus as Plus3, CaretRight as CaretRight10, Trash as Trash2, PencilSimple as PencilSimple2 } from "phosphor-react";
23690
23802
 
23691
23803
  // src/types/common.ts
@@ -23772,51 +23884,51 @@ var formatDaysToComplete = (daysToComplete) => {
23772
23884
  };
23773
23885
 
23774
23886
  // src/hooks/useRecommendedLessons.ts
23775
- import { useState as useState43, useCallback as useCallback20 } from "react";
23776
- import { z as z3 } from "zod";
23887
+ import { useState as useState43, useCallback as useCallback21 } from "react";
23888
+ import { z as z4 } from "zod";
23777
23889
  import dayjs3 from "dayjs";
23778
- var goalSubjectSchema = z3.object({
23779
- id: z3.string().uuid(),
23780
- name: z3.string()
23890
+ var goalSubjectSchema = z4.object({
23891
+ id: z4.string().uuid(),
23892
+ name: z4.string()
23781
23893
  }).nullable();
23782
- var goalCreatorSchema = z3.object({
23783
- id: z3.string().uuid(),
23784
- name: z3.string()
23894
+ var goalCreatorSchema = z4.object({
23895
+ id: z4.string().uuid(),
23896
+ name: z4.string()
23785
23897
  }).nullable();
23786
- var goalStatsSchema = z3.object({
23787
- totalStudents: z3.number(),
23788
- completedCount: z3.number(),
23789
- completionPercentage: z3.number()
23898
+ var goalStatsSchema = z4.object({
23899
+ totalStudents: z4.number(),
23900
+ completedCount: z4.number(),
23901
+ completionPercentage: z4.number()
23790
23902
  });
23791
- var goalBreakdownSchema = z3.object({
23792
- classId: z3.string().uuid(),
23793
- className: z3.string(),
23794
- schoolId: z3.string(),
23795
- schoolName: z3.string(),
23796
- studentCount: z3.number(),
23797
- completedCount: z3.number()
23903
+ var goalBreakdownSchema = z4.object({
23904
+ classId: z4.string().uuid(),
23905
+ className: z4.string(),
23906
+ schoolId: z4.string(),
23907
+ schoolName: z4.string(),
23908
+ studentCount: z4.number(),
23909
+ completedCount: z4.number()
23798
23910
  });
23799
- var goalDataSchema = z3.object({
23800
- id: z3.string().uuid(),
23801
- title: z3.string(),
23802
- startDate: z3.string().nullable(),
23803
- finalDate: z3.string().nullable(),
23804
- createdAt: z3.string(),
23805
- progress: z3.number(),
23806
- totalLessons: z3.number()
23911
+ var goalDataSchema = z4.object({
23912
+ id: z4.string().uuid(),
23913
+ title: z4.string(),
23914
+ startDate: z4.string().nullable(),
23915
+ finalDate: z4.string().nullable(),
23916
+ createdAt: z4.string(),
23917
+ progress: z4.number(),
23918
+ totalLessons: z4.number()
23807
23919
  });
23808
- var goalHistoryItemSchema = z3.object({
23920
+ var goalHistoryItemSchema = z4.object({
23809
23921
  goal: goalDataSchema,
23810
23922
  subject: goalSubjectSchema,
23811
23923
  creator: goalCreatorSchema,
23812
23924
  stats: goalStatsSchema,
23813
- breakdown: z3.array(goalBreakdownSchema)
23925
+ breakdown: z4.array(goalBreakdownSchema)
23814
23926
  });
23815
- var goalsHistoryApiResponseSchema = z3.object({
23816
- message: z3.string(),
23817
- data: z3.object({
23818
- goals: z3.array(goalHistoryItemSchema),
23819
- total: z3.number()
23927
+ var goalsHistoryApiResponseSchema = z4.object({
23928
+ message: z4.string(),
23929
+ data: z4.object({
23930
+ goals: z4.array(goalHistoryItemSchema),
23931
+ total: z4.number()
23820
23932
  })
23821
23933
  });
23822
23934
  var determineGoalStatus = (finalDate, completionPercentage) => {
@@ -23855,7 +23967,7 @@ var transformGoalToTableItem = (item) => {
23855
23967
  };
23856
23968
  };
23857
23969
  var handleGoalFetchError = (error) => {
23858
- if (error instanceof z3.ZodError) {
23970
+ if (error instanceof z4.ZodError) {
23859
23971
  console.error("Erro ao validar dados de hist\xF3rico de aulas:", error);
23860
23972
  return "Erro ao validar dados de hist\xF3rico de aulas";
23861
23973
  }
@@ -23875,7 +23987,7 @@ var createUseRecommendedLessonsHistory = (fetchGoalsHistory) => {
23875
23987
  totalPages: 0
23876
23988
  }
23877
23989
  });
23878
- const fetchGoals = useCallback20(
23990
+ const fetchGoals = useCallback21(
23879
23991
  async (filters) => {
23880
23992
  setState((prev) => ({ ...prev, loading: true, error: null }));
23881
23993
  try {
@@ -24247,7 +24359,7 @@ var RecommendedLessonsHistory = ({
24247
24359
  () => createTableColumns2(mapSubjectNameToEnum2, onDeleteGoal, onEditGoal),
24248
24360
  [mapSubjectNameToEnum2, onDeleteGoal, onEditGoal]
24249
24361
  );
24250
- const handleParamsChange = useCallback21(
24362
+ const handleParamsChange = useCallback22(
24251
24363
  (params) => {
24252
24364
  const filters = buildFiltersFromParams(params);
24253
24365
  fetchGoals(filters);
@@ -24403,7 +24515,7 @@ var RecommendedLessonsHistory = ({
24403
24515
  };
24404
24516
 
24405
24517
  // src/components/RecommendedLessonDetails/RecommendedLessonDetails.tsx
24406
- import { useMemo as useMemo27, useState as useState45, useCallback as useCallback23 } from "react";
24518
+ import { useMemo as useMemo27, useState as useState45, useCallback as useCallback24 } from "react";
24407
24519
 
24408
24520
  // src/components/RecommendedLessonDetails/components/Breadcrumb.tsx
24409
24521
  import { CaretRightIcon as CaretRightIcon2 } from "@phosphor-icons/react";
@@ -24625,7 +24737,7 @@ var ResultsSection = ({ data, labels }) => {
24625
24737
  };
24626
24738
 
24627
24739
  // src/components/RecommendedLessonDetails/components/StudentsTable.tsx
24628
- import { useCallback as useCallback22 } from "react";
24740
+ import { useCallback as useCallback23 } from "react";
24629
24741
  import { UserIcon } from "@phosphor-icons/react";
24630
24742
  import { jsx as jsx101, jsxs as jsxs80 } from "react/jsx-runtime";
24631
24743
  var StudentsTable = ({
@@ -24635,7 +24747,7 @@ var StudentsTable = ({
24635
24747
  emptyMessage = "Nenhum aluno encontrado"
24636
24748
  }) => {
24637
24749
  const { sortedData, sortColumn, sortDirection, handleSort } = useTableSort(students);
24638
- const canViewPerformance = useCallback22((student) => {
24750
+ const canViewPerformance = useCallback23((student) => {
24639
24751
  return student.status === "CONCLU\xCDDO" /* CONCLUIDO */ || student.status === "N\xC3O FINALIZADO" /* NAO_FINALIZADO */;
24640
24752
  }, []);
24641
24753
  return /* @__PURE__ */ jsx101("div", { className: "bg-background rounded-xl border border-border-50 overflow-hidden", children: /* @__PURE__ */ jsxs80(Table_default, { children: [
@@ -25058,7 +25170,7 @@ var RecommendedLessonDetails = ({
25058
25170
  const [performanceData, setPerformanceData] = useState45(null);
25059
25171
  const [performanceLoading, setPerformanceLoading] = useState45(false);
25060
25172
  const [performanceError, setPerformanceError] = useState45(null);
25061
- const handleViewStudentPerformance = useCallback23(
25173
+ const handleViewStudentPerformance = useCallback24(
25062
25174
  async (studentId) => {
25063
25175
  if (!fetchStudentPerformance || !goalId) return;
25064
25176
  setPerformanceModalOpen(true);
@@ -25079,7 +25191,7 @@ var RecommendedLessonDetails = ({
25079
25191
  },
25080
25192
  [fetchStudentPerformance, goalId]
25081
25193
  );
25082
- const handleClosePerformanceModal = useCallback23(() => {
25194
+ const handleClosePerformanceModal = useCallback24(() => {
25083
25195
  setPerformanceModalOpen(false);
25084
25196
  setPerformanceData(null);
25085
25197
  setPerformanceError(null);
@@ -25169,101 +25281,101 @@ var RecommendedLessonDetails = ({
25169
25281
  var RecommendedLessonDetails_default = RecommendedLessonDetails;
25170
25282
 
25171
25283
  // src/hooks/useRecommendedLessonDetails.ts
25172
- import { useState as useState46, useCallback as useCallback24, useEffect as useEffect44 } from "react";
25173
- import { z as z4 } from "zod";
25174
- var goalLessonSubjectSchema = z4.object({
25175
- id: z4.string(),
25176
- name: z4.string(),
25177
- color: z4.string(),
25178
- icon: z4.string()
25284
+ import { useState as useState46, useCallback as useCallback25, useEffect as useEffect44 } from "react";
25285
+ import { z as z5 } from "zod";
25286
+ var goalLessonSubjectSchema = z5.object({
25287
+ id: z5.string(),
25288
+ name: z5.string(),
25289
+ color: z5.string(),
25290
+ icon: z5.string()
25179
25291
  });
25180
- var lessonContentSchema = z4.object({
25181
- id: z4.string(),
25182
- name: z4.string()
25292
+ var lessonContentSchema = z5.object({
25293
+ id: z5.string(),
25294
+ name: z5.string()
25183
25295
  });
25184
- var goalLessonSchema = z4.object({
25185
- id: z4.string(),
25296
+ var goalLessonSchema = z5.object({
25297
+ id: z5.string(),
25186
25298
  content: lessonContentSchema,
25187
25299
  subtopic: lessonContentSchema,
25188
25300
  topic: lessonContentSchema,
25189
25301
  subject: goalLessonSubjectSchema
25190
25302
  });
25191
- var goalLessonProgressSchema = z4.object({
25192
- id: z4.string(),
25193
- userId: z4.string(),
25194
- lessonId: z4.string(),
25195
- progress: z4.number(),
25303
+ var goalLessonProgressSchema = z5.object({
25304
+ id: z5.string(),
25305
+ userId: z5.string(),
25306
+ lessonId: z5.string(),
25307
+ progress: z5.number(),
25196
25308
  lesson: goalLessonSchema
25197
25309
  });
25198
- var goalLessonGoalItemSchema = z4.object({
25199
- goalId: z4.string(),
25200
- supLessonsProgressId: z4.string(),
25310
+ var goalLessonGoalItemSchema = z5.object({
25311
+ goalId: z5.string(),
25312
+ supLessonsProgressId: z5.string(),
25201
25313
  supLessonsProgress: goalLessonProgressSchema
25202
25314
  });
25203
- var goalMetadataSchema = z4.object({
25204
- id: z4.string(),
25205
- title: z4.string(),
25206
- startDate: z4.string(),
25207
- finalDate: z4.string(),
25208
- progress: z4.number(),
25209
- lessonsGoals: z4.array(goalLessonGoalItemSchema)
25315
+ var goalMetadataSchema = z5.object({
25316
+ id: z5.string(),
25317
+ title: z5.string(),
25318
+ startDate: z5.string(),
25319
+ finalDate: z5.string(),
25320
+ progress: z5.number(),
25321
+ lessonsGoals: z5.array(goalLessonGoalItemSchema)
25210
25322
  });
25211
- var goalApiResponseSchema = z4.object({
25212
- message: z4.string(),
25323
+ var goalApiResponseSchema = z5.object({
25324
+ message: z5.string(),
25213
25325
  data: goalMetadataSchema
25214
25326
  });
25215
- var goalDetailStudentSchema = z4.object({
25216
- userInstitutionId: z4.string(),
25217
- userId: z4.string(),
25218
- name: z4.string(),
25219
- progress: z4.number(),
25220
- completedAt: z4.string().nullable(),
25221
- avgScore: z4.number().nullable(),
25222
- daysToComplete: z4.number().nullable()
25327
+ var goalDetailStudentSchema = z5.object({
25328
+ userInstitutionId: z5.string(),
25329
+ userId: z5.string(),
25330
+ name: z5.string(),
25331
+ progress: z5.number(),
25332
+ completedAt: z5.string().nullable(),
25333
+ avgScore: z5.number().nullable(),
25334
+ daysToComplete: z5.number().nullable()
25223
25335
  });
25224
- var goalDetailAggregatedSchema = z4.object({
25225
- completionPercentage: z4.number(),
25226
- avgScore: z4.number().nullable()
25336
+ var goalDetailAggregatedSchema = z5.object({
25337
+ completionPercentage: z5.number(),
25338
+ avgScore: z5.number().nullable()
25227
25339
  });
25228
- var goalDetailContentPerformanceItemSchema = z4.object({
25229
- contentId: z4.string(),
25230
- contentName: z4.string(),
25231
- rate: z4.number()
25340
+ var goalDetailContentPerformanceItemSchema = z5.object({
25341
+ contentId: z5.string(),
25342
+ contentName: z5.string(),
25343
+ rate: z5.number()
25232
25344
  }).nullable();
25233
- var goalDetailContentPerformanceSchema = z4.object({
25345
+ var goalDetailContentPerformanceSchema = z5.object({
25234
25346
  best: goalDetailContentPerformanceItemSchema,
25235
25347
  worst: goalDetailContentPerformanceItemSchema
25236
25348
  });
25237
- var goalDetailsDataSchema = z4.object({
25238
- students: z4.array(goalDetailStudentSchema),
25349
+ var goalDetailsDataSchema = z5.object({
25350
+ students: z5.array(goalDetailStudentSchema),
25239
25351
  aggregated: goalDetailAggregatedSchema,
25240
25352
  contentPerformance: goalDetailContentPerformanceSchema
25241
25353
  });
25242
- var goalDetailsApiResponseSchema = z4.object({
25243
- message: z4.string(),
25354
+ var goalDetailsApiResponseSchema = z5.object({
25355
+ message: z5.string(),
25244
25356
  data: goalDetailsDataSchema
25245
25357
  });
25246
- var goalBreakdownSchema2 = z4.object({
25247
- classId: z4.string().uuid(),
25248
- className: z4.string(),
25249
- schoolId: z4.string(),
25250
- schoolName: z4.string(),
25251
- studentCount: z4.number(),
25252
- completedCount: z4.number()
25358
+ var goalBreakdownSchema2 = z5.object({
25359
+ classId: z5.string().uuid(),
25360
+ className: z5.string(),
25361
+ schoolId: z5.string(),
25362
+ schoolName: z5.string(),
25363
+ studentCount: z5.number(),
25364
+ completedCount: z5.number()
25253
25365
  });
25254
- var historyGoalItemSchema = z4.object({
25255
- goal: z4.object({ id: z4.string().uuid() }),
25256
- breakdown: z4.array(goalBreakdownSchema2)
25366
+ var historyGoalItemSchema = z5.object({
25367
+ goal: z5.object({ id: z5.string().uuid() }),
25368
+ breakdown: z5.array(goalBreakdownSchema2)
25257
25369
  });
25258
- var historyApiResponseSchema = z4.object({
25259
- message: z4.string(),
25260
- data: z4.object({
25261
- goals: z4.array(historyGoalItemSchema),
25262
- total: z4.number()
25370
+ var historyApiResponseSchema = z5.object({
25371
+ message: z5.string(),
25372
+ data: z5.object({
25373
+ goals: z5.array(historyGoalItemSchema),
25374
+ total: z5.number()
25263
25375
  })
25264
25376
  });
25265
25377
  var handleLessonDetailsFetchError = (error) => {
25266
- if (error instanceof z4.ZodError) {
25378
+ if (error instanceof z5.ZodError) {
25267
25379
  console.error("Erro ao validar dados dos detalhes da aula:", error);
25268
25380
  return "Erro ao validar dados dos detalhes da aula";
25269
25381
  }
@@ -25277,7 +25389,7 @@ var createUseRecommendedLessonDetails = (apiClient) => {
25277
25389
  loading: true,
25278
25390
  error: null
25279
25391
  });
25280
- const fetchLessonDetails = useCallback24(async () => {
25392
+ const fetchLessonDetails = useCallback25(async () => {
25281
25393
  if (!lessonId) {
25282
25394
  setState({
25283
25395
  data: null,
@@ -25338,7 +25450,7 @@ var createRecommendedLessonDetailsHook = createUseRecommendedLessonDetails;
25338
25450
  import { useState as useState50 } from "react";
25339
25451
 
25340
25452
  // src/components/ActivitiesHistory/tabs/HistoryTab.tsx
25341
- import { useCallback as useCallback26, useMemo as useMemo28, useRef as useRef26 } from "react";
25453
+ import { useCallback as useCallback27, useMemo as useMemo28, useRef as useRef26 } from "react";
25342
25454
  import { Plus as Plus4 } from "phosphor-react";
25343
25455
 
25344
25456
  // src/components/ActivitiesHistory/components/ErrorDisplay.tsx
@@ -25580,14 +25692,14 @@ var createHistoryFiltersConfig = (userData) => [
25580
25692
  ];
25581
25693
 
25582
25694
  // src/hooks/useActivitiesHistory.ts
25583
- import { useState as useState47, useCallback as useCallback25 } from "react";
25584
- import { z as z6 } from "zod";
25695
+ import { useState as useState47, useCallback as useCallback26 } from "react";
25696
+ import { z as z7 } from "zod";
25585
25697
  import dayjs4 from "dayjs";
25586
25698
 
25587
25699
  // src/utils/hookErrorHandler.ts
25588
- import { z as z5 } from "zod";
25700
+ import { z as z6 } from "zod";
25589
25701
  var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (error) => {
25590
- if (error instanceof z5.ZodError) {
25702
+ if (error instanceof z6.ZodError) {
25591
25703
  console.error(validationErrorMessage, error);
25592
25704
  return validationErrorMessage;
25593
25705
  }
@@ -25596,33 +25708,33 @@ var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (
25596
25708
  };
25597
25709
 
25598
25710
  // src/hooks/useActivitiesHistory.ts
25599
- var activityHistoryResponseSchema = z6.object({
25600
- id: z6.string().uuid(),
25601
- title: z6.string(),
25602
- startDate: z6.string().nullable(),
25603
- finalDate: z6.string().nullable(),
25604
- status: z6.nativeEnum(GenericApiStatus),
25605
- completionPercentage: z6.number().min(0).max(100).optional().default(0),
25606
- subjectId: z6.string().uuid().optional().nullable(),
25607
- schoolId: z6.string().optional(),
25608
- schoolName: z6.string().optional(),
25609
- year: z6.string().optional(),
25610
- className: z6.string().optional(),
25611
- subjectName: z6.string().optional()
25711
+ var activityHistoryResponseSchema = z7.object({
25712
+ id: z7.string().uuid(),
25713
+ title: z7.string(),
25714
+ startDate: z7.string().nullable(),
25715
+ finalDate: z7.string().nullable(),
25716
+ status: z7.nativeEnum(GenericApiStatus),
25717
+ completionPercentage: z7.number().min(0).max(100).optional().default(0),
25718
+ subjectId: z7.string().uuid().optional().nullable(),
25719
+ schoolId: z7.string().optional(),
25720
+ schoolName: z7.string().optional(),
25721
+ year: z7.string().optional(),
25722
+ className: z7.string().optional(),
25723
+ subjectName: z7.string().optional()
25612
25724
  });
25613
- var activitiesHistoryApiResponseSchema = z6.object({
25614
- message: z6.string(),
25615
- data: z6.object({
25616
- activities: z6.array(z6.unknown()).transform(
25725
+ var activitiesHistoryApiResponseSchema = z7.object({
25726
+ message: z7.string(),
25727
+ data: z7.object({
25728
+ activities: z7.array(z7.unknown()).transform(
25617
25729
  (items) => items.map((item) => activityHistoryResponseSchema.safeParse(item)).filter(
25618
25730
  (result) => result.success
25619
25731
  ).map((result) => result.data)
25620
25732
  ),
25621
- pagination: z6.object({
25622
- total: z6.number(),
25623
- page: z6.number(),
25624
- limit: z6.number(),
25625
- totalPages: z6.number()
25733
+ pagination: z7.object({
25734
+ total: z7.number(),
25735
+ page: z7.number(),
25736
+ limit: z7.number(),
25737
+ totalPages: z7.number()
25626
25738
  })
25627
25739
  })
25628
25740
  });
@@ -25658,7 +25770,7 @@ var createUseActivitiesHistory = (fetchActivitiesHistory) => {
25658
25770
  error: null,
25659
25771
  pagination: DEFAULT_ACTIVITIES_PAGINATION
25660
25772
  });
25661
- const fetchActivities = useCallback25(
25773
+ const fetchActivities = useCallback26(
25662
25774
  async (filters) => {
25663
25775
  setState((prev) => ({ ...prev, loading: true, error: null }));
25664
25776
  try {
@@ -25726,7 +25838,7 @@ var HistoryTab = ({
25726
25838
  () => createHistoryTableColumns(mapSubjectNameToEnum2),
25727
25839
  [mapSubjectNameToEnum2]
25728
25840
  );
25729
- const handleParamsChange = useCallback26(
25841
+ const handleParamsChange = useCallback27(
25730
25842
  (params) => {
25731
25843
  const filters = buildHistoryFiltersFromParams(params);
25732
25844
  fetchActivities(filters);
@@ -25809,7 +25921,7 @@ var HistoryTab = ({
25809
25921
  };
25810
25922
 
25811
25923
  // src/components/ActivitiesHistory/tabs/ModelsTab.tsx
25812
- import { useState as useState49, useCallback as useCallback28, useMemo as useMemo29, useRef as useRef27, useEffect as useEffect45 } from "react";
25924
+ import { useState as useState49, useCallback as useCallback29, useMemo as useMemo29, useRef as useRef27, useEffect as useEffect45 } from "react";
25813
25925
  import { Plus as Plus5 } from "phosphor-react";
25814
25926
 
25815
25927
  // src/components/ActivitiesHistory/config/modelsTableColumns.tsx
@@ -25915,32 +26027,32 @@ var createModelsFiltersConfig = (userData) => [
25915
26027
  ];
25916
26028
 
25917
26029
  // src/hooks/useActivityModels.ts
25918
- import { useState as useState48, useCallback as useCallback27 } from "react";
25919
- import { z as z7 } from "zod";
26030
+ import { useState as useState48, useCallback as useCallback28 } from "react";
26031
+ import { z as z8 } from "zod";
25920
26032
  import dayjs5 from "dayjs";
25921
- var activityDraftFiltersSchema = z7.object({
25922
- questionTypes: z7.array(z7.string()).optional(),
25923
- questionBanks: z7.array(z7.string()).optional(),
25924
- subjects: z7.array(z7.string()).optional(),
25925
- topics: z7.array(z7.string()).optional(),
25926
- subtopics: z7.array(z7.string()).optional(),
25927
- contents: z7.array(z7.string()).optional()
26033
+ var activityDraftFiltersSchema = z8.object({
26034
+ questionTypes: z8.array(z8.string()).optional(),
26035
+ questionBanks: z8.array(z8.string()).optional(),
26036
+ subjects: z8.array(z8.string()).optional(),
26037
+ topics: z8.array(z8.string()).optional(),
26038
+ subtopics: z8.array(z8.string()).optional(),
26039
+ contents: z8.array(z8.string()).optional()
25928
26040
  }).nullable();
25929
- var activityModelResponseSchema = z7.object({
25930
- id: z7.string().uuid(),
25931
- type: z7.nativeEnum(ActivityDraftType),
25932
- title: z7.string().nullable(),
25933
- creatorUserInstitutionId: z7.string().uuid().nullable(),
25934
- subjectId: z7.string().uuid().nullable(),
26041
+ var activityModelResponseSchema = z8.object({
26042
+ id: z8.string().uuid(),
26043
+ type: z8.nativeEnum(ActivityDraftType),
26044
+ title: z8.string().nullable(),
26045
+ creatorUserInstitutionId: z8.string().uuid().nullable(),
26046
+ subjectId: z8.string().uuid().nullable(),
25935
26047
  filters: activityDraftFiltersSchema,
25936
- createdAt: z7.string(),
25937
- updatedAt: z7.string()
26048
+ createdAt: z8.string(),
26049
+ updatedAt: z8.string()
25938
26050
  });
25939
- var activityModelsApiResponseSchema = z7.object({
25940
- message: z7.string(),
25941
- data: z7.object({
25942
- activityDrafts: z7.array(activityModelResponseSchema),
25943
- total: z7.number()
26051
+ var activityModelsApiResponseSchema = z8.object({
26052
+ message: z8.string(),
26053
+ data: z8.object({
26054
+ activityDrafts: z8.array(activityModelResponseSchema),
26055
+ total: z8.number()
25944
26056
  })
25945
26057
  });
25946
26058
  var DEFAULT_MODELS_PAGINATION = {
@@ -25971,7 +26083,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
25971
26083
  error: null,
25972
26084
  pagination: DEFAULT_MODELS_PAGINATION
25973
26085
  });
25974
- const fetchModels = useCallback27(
26086
+ const fetchModels = useCallback28(
25975
26087
  async (filters, subjectsMap) => {
25976
26088
  setState((prev) => ({ ...prev, loading: true, error: null }));
25977
26089
  try {
@@ -26006,7 +26118,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
26006
26118
  },
26007
26119
  [fetchActivityModels]
26008
26120
  );
26009
- const deleteModel = useCallback27(
26121
+ const deleteModel = useCallback28(
26010
26122
  async (id) => {
26011
26123
  try {
26012
26124
  await deleteActivityModel(id);
@@ -26069,7 +26181,7 @@ var ModelsTab = ({
26069
26181
  () => createModelsFiltersConfig(userFilterData),
26070
26182
  [userFilterData]
26071
26183
  );
26072
- const handleDeleteClick = useCallback28((model) => {
26184
+ const handleDeleteClick = useCallback29((model) => {
26073
26185
  setModelToDelete(model);
26074
26186
  setDeleteDialogOpen(true);
26075
26187
  }, []);
@@ -26082,7 +26194,7 @@ var ModelsTab = ({
26082
26194
  ),
26083
26195
  [mapSubjectNameToEnum2, onSendActivity, onEditModel, handleDeleteClick]
26084
26196
  );
26085
- const handleParamsChange = useCallback28(
26197
+ const handleParamsChange = useCallback29(
26086
26198
  (params) => {
26087
26199
  const filters = buildModelsFiltersFromParams(params);
26088
26200
  fetchModels(filters, subjectsMapRef.current);
@@ -26092,7 +26204,7 @@ var ModelsTab = ({
26092
26204
  useEffect45(() => {
26093
26205
  fetchModels({ page: 1, limit: 10 }, subjectsMapRef.current);
26094
26206
  }, [fetchModels]);
26095
- const handleConfirmDelete = useCallback28(async () => {
26207
+ const handleConfirmDelete = useCallback29(async () => {
26096
26208
  if (modelToDelete) {
26097
26209
  const success = await deleteModel(modelToDelete.id);
26098
26210
  if (success) {
@@ -26105,7 +26217,7 @@ var ModelsTab = ({
26105
26217
  setDeleteDialogOpen(false);
26106
26218
  setModelToDelete(null);
26107
26219
  }, [modelToDelete, deleteModel, fetchModels, addToast]);
26108
- const handleCancelDelete = useCallback28(() => {
26220
+ const handleCancelDelete = useCallback29(() => {
26109
26221
  setDeleteDialogOpen(false);
26110
26222
  setModelToDelete(null);
26111
26223
  }, []);
@@ -26462,7 +26574,7 @@ var buildUserFilterData = (userData) => ({
26462
26574
  });
26463
26575
 
26464
26576
  // src/hooks/useChat.ts
26465
- import { useState as useState51, useEffect as useEffect46, useCallback as useCallback29, useRef as useRef28 } from "react";
26577
+ import { useState as useState51, useEffect as useEffect46, useCallback as useCallback30, useRef as useRef28 } from "react";
26466
26578
  var WS_STATES = {
26467
26579
  CONNECTING: 0,
26468
26580
  OPEN: 1,
@@ -26494,12 +26606,12 @@ function useChat({
26494
26606
  const isConnectingRef = useRef28(false);
26495
26607
  const connectRef = useRef28(() => {
26496
26608
  });
26497
- const sendWsMessage = useCallback29((message) => {
26609
+ const sendWsMessage = useCallback30((message) => {
26498
26610
  if (wsRef.current?.readyState === WS_STATES.OPEN) {
26499
26611
  wsRef.current.send(JSON.stringify(message));
26500
26612
  }
26501
26613
  }, []);
26502
- const sendMessage = useCallback29(
26614
+ const sendMessage = useCallback30(
26503
26615
  (content) => {
26504
26616
  const trimmedContent = content.trim();
26505
26617
  if (!trimmedContent) return;
@@ -26510,12 +26622,12 @@ function useChat({
26510
26622
  },
26511
26623
  [sendWsMessage]
26512
26624
  );
26513
- const leave = useCallback29(() => {
26625
+ const leave = useCallback30(() => {
26514
26626
  isManualDisconnectRef.current = true;
26515
26627
  sendWsMessage({ type: "leave" });
26516
26628
  wsRef.current?.close(1e3, "User left");
26517
26629
  }, [sendWsMessage]);
26518
- const handleMessage = useCallback29(
26630
+ const handleMessage = useCallback30(
26519
26631
  (event) => {
26520
26632
  try {
26521
26633
  const data = JSON.parse(event.data);
@@ -26583,7 +26695,7 @@ function useChat({
26583
26695
  },
26584
26696
  [onError]
26585
26697
  );
26586
- const connect = useCallback29(() => {
26698
+ const connect = useCallback30(() => {
26587
26699
  if (isConnectingRef.current) {
26588
26700
  return;
26589
26701
  }
@@ -26636,7 +26748,7 @@ function useChat({
26636
26748
  maxReconnectAttempts
26637
26749
  ]);
26638
26750
  connectRef.current = connect;
26639
- const reconnect = useCallback29(() => {
26751
+ const reconnect = useCallback30(() => {
26640
26752
  isManualDisconnectRef.current = false;
26641
26753
  reconnectAttemptsRef.current = 0;
26642
26754
  connectRef.current();
@@ -26685,7 +26797,7 @@ function createUseChat(baseWsUrl) {
26685
26797
  }
26686
26798
 
26687
26799
  // src/hooks/useChatRooms.ts
26688
- import { useState as useState52, useCallback as useCallback30 } from "react";
26800
+ import { useState as useState52, useCallback as useCallback31 } from "react";
26689
26801
  function useChatRooms({
26690
26802
  apiClient
26691
26803
  }) {
@@ -26693,7 +26805,7 @@ function useChatRooms({
26693
26805
  const [availableUsers, setAvailableUsers] = useState52([]);
26694
26806
  const [loading, setLoading] = useState52(false);
26695
26807
  const [error, setError] = useState52(null);
26696
- const fetchRooms = useCallback30(async () => {
26808
+ const fetchRooms = useCallback31(async () => {
26697
26809
  setLoading(true);
26698
26810
  setError(null);
26699
26811
  try {
@@ -26709,7 +26821,7 @@ function useChatRooms({
26709
26821
  setLoading(false);
26710
26822
  }
26711
26823
  }, [apiClient]);
26712
- const fetchAvailableUsers = useCallback30(async () => {
26824
+ const fetchAvailableUsers = useCallback31(async () => {
26713
26825
  setLoading(true);
26714
26826
  setError(null);
26715
26827
  try {
@@ -26725,7 +26837,7 @@ function useChatRooms({
26725
26837
  setLoading(false);
26726
26838
  }
26727
26839
  }, [apiClient]);
26728
- const createRoom = useCallback30(
26840
+ const createRoom = useCallback31(
26729
26841
  async (participantIds) => {
26730
26842
  setLoading(true);
26731
26843
  setError(null);
@@ -26749,7 +26861,7 @@ function useChatRooms({
26749
26861
  },
26750
26862
  [apiClient, fetchRooms]
26751
26863
  );
26752
- const clearError = useCallback30(() => {
26864
+ const clearError = useCallback31(() => {
26753
26865
  setError(null);
26754
26866
  }, []);
26755
26867
  return {
@@ -26783,7 +26895,7 @@ var CHAT_MESSAGE_TYPES = {
26783
26895
  };
26784
26896
 
26785
26897
  // src/components/Chat/Chat.tsx
26786
- import { useState as useState53, useEffect as useEffect47, useCallback as useCallback31, useRef as useRef29 } from "react";
26898
+ import { useState as useState53, useEffect as useEffect47, useCallback as useCallback32, useRef as useRef29 } from "react";
26787
26899
  import {
26788
26900
  PaperPlaneTiltIcon as PaperPlaneTiltIcon2,
26789
26901
  XIcon,
@@ -26998,7 +27110,7 @@ function ChatContent({
26998
27110
  onBackToList?.();
26999
27111
  }
27000
27112
  }, [initialRoomId, rooms, roomsLoading, onBackToList]);
27001
- const handleSelectRoom = useCallback31(
27113
+ const handleSelectRoom = useCallback32(
27002
27114
  (room) => {
27003
27115
  setSelectedRoom(room);
27004
27116
  setView("room");
@@ -27006,12 +27118,12 @@ function ChatContent({
27006
27118
  },
27007
27119
  [onRoomChange]
27008
27120
  );
27009
- const handleOpenCreateModal = useCallback31(async () => {
27121
+ const handleOpenCreateModal = useCallback32(async () => {
27010
27122
  await fetchAvailableUsers();
27011
27123
  setSelectedUserIds(/* @__PURE__ */ new Set());
27012
27124
  setShowCreateModal(true);
27013
27125
  }, [fetchAvailableUsers]);
27014
- const handleToggleUser = useCallback31((id) => {
27126
+ const handleToggleUser = useCallback32((id) => {
27015
27127
  setSelectedUserIds((prev) => {
27016
27128
  const next = new Set(prev);
27017
27129
  if (next.has(id)) {
@@ -27022,7 +27134,7 @@ function ChatContent({
27022
27134
  return next;
27023
27135
  });
27024
27136
  }, []);
27025
- const handleCreateRoom = useCallback31(async () => {
27137
+ const handleCreateRoom = useCallback32(async () => {
27026
27138
  if (selectedUserIds.size === 0) return;
27027
27139
  const room = await createRoom(Array.from(selectedUserIds));
27028
27140
  if (room) {
@@ -27031,12 +27143,12 @@ function ChatContent({
27031
27143
  onRoomChange?.(room.id);
27032
27144
  }
27033
27145
  }, [selectedUserIds, createRoom, onRoomChange]);
27034
- const handleSendMessage = useCallback31(() => {
27146
+ const handleSendMessage = useCallback32(() => {
27035
27147
  if (!messageInput.trim()) return;
27036
27148
  sendMessage(messageInput);
27037
27149
  setMessageInput("");
27038
27150
  }, [messageInput, sendMessage]);
27039
- const handleBackToList = useCallback31(() => {
27151
+ const handleBackToList = useCallback32(() => {
27040
27152
  setSelectedRoom(null);
27041
27153
  setView("list");
27042
27154
  onBackToList?.();
@@ -27283,7 +27395,7 @@ var CalendarActivityStatus = /* @__PURE__ */ ((CalendarActivityStatus2) => {
27283
27395
  })(CalendarActivityStatus || {});
27284
27396
 
27285
27397
  // src/hooks/useSendActivity.ts
27286
- import { useState as useState54, useCallback as useCallback32, useMemo as useMemo30, useRef as useRef30 } from "react";
27398
+ import { useState as useState54, useCallback as useCallback33, useMemo as useMemo30, useRef as useRef30 } from "react";
27287
27399
  import dayjs6 from "dayjs";
27288
27400
  function transformToCategoryConfig(data) {
27289
27401
  return [
@@ -27352,7 +27464,7 @@ function useSendActivity(config) {
27352
27464
  title: selectedModel.title
27353
27465
  };
27354
27466
  }, [selectedModel]);
27355
- const loadCategories = useCallback32(async () => {
27467
+ const loadCategories = useCallback33(async () => {
27356
27468
  if (categoriesLoadedRef.current) return;
27357
27469
  setIsCategoriesLoading(true);
27358
27470
  try {
@@ -27367,7 +27479,7 @@ function useSendActivity(config) {
27367
27479
  setIsCategoriesLoading(false);
27368
27480
  }
27369
27481
  }, [fetchCategories, onError]);
27370
- const openModal = useCallback32(
27482
+ const openModal = useCallback33(
27371
27483
  (model) => {
27372
27484
  setSelectedModel(model);
27373
27485
  setIsOpen(true);
@@ -27375,17 +27487,17 @@ function useSendActivity(config) {
27375
27487
  },
27376
27488
  [loadCategories]
27377
27489
  );
27378
- const closeModal = useCallback32(() => {
27490
+ const closeModal = useCallback33(() => {
27379
27491
  setIsOpen(false);
27380
27492
  setSelectedModel(null);
27381
27493
  }, []);
27382
- const onCategoriesChange = useCallback32(
27494
+ const onCategoriesChange = useCallback33(
27383
27495
  (updatedCategories) => {
27384
27496
  setCategories(updatedCategories);
27385
27497
  },
27386
27498
  []
27387
27499
  );
27388
- const handleSubmit = useCallback32(
27500
+ const handleSubmit = useCallback33(
27389
27501
  async (data) => {
27390
27502
  if (!selectedModel) return;
27391
27503
  setIsLoading(true);
@@ -27695,6 +27807,7 @@ export {
27695
27807
  mapSubjectEnumToName,
27696
27808
  mapSubjectNameToEnum,
27697
27809
  questionTypeLabels,
27810
+ studentActivityStatusSchema,
27698
27811
  supportSchema,
27699
27812
  syncDropdownState,
27700
27813
  toggleArrayItem,
@@ -27702,6 +27815,7 @@ export {
27702
27815
  transformActivityToTableItem,
27703
27816
  transformGoalToTableItem,
27704
27817
  transformModelToTableItem,
27818
+ useActivityDetails,
27705
27819
  useAlertFormStore,
27706
27820
  useApiConfig,
27707
27821
  useAppContent,