analytica-frontend-lib 1.2.81 → 1.2.83

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 (51) hide show
  1. package/dist/ActivitiesHistory/index.js +34 -43
  2. package/dist/ActivitiesHistory/index.js.map +1 -1
  3. package/dist/ActivitiesHistory/index.mjs +34 -43
  4. package/dist/ActivitiesHistory/index.mjs.map +1 -1
  5. package/dist/ActivityDetails/index.js +30 -38
  6. package/dist/ActivityDetails/index.js.map +1 -1
  7. package/dist/ActivityDetails/index.mjs +30 -38
  8. package/dist/ActivityDetails/index.mjs.map +1 -1
  9. package/dist/ActivityFilters/index.js +30 -38
  10. package/dist/ActivityFilters/index.js.map +1 -1
  11. package/dist/ActivityFilters/index.mjs +30 -38
  12. package/dist/ActivityFilters/index.mjs.map +1 -1
  13. package/dist/AlertManager/index.js +30 -38
  14. package/dist/AlertManager/index.js.map +1 -1
  15. package/dist/AlertManager/index.mjs +30 -38
  16. package/dist/AlertManager/index.mjs.map +1 -1
  17. package/dist/RecommendedLessonsHistory/index.js +34 -43
  18. package/dist/RecommendedLessonsHistory/index.js.map +1 -1
  19. package/dist/RecommendedLessonsHistory/index.mjs +34 -43
  20. package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
  21. package/dist/SendActivityModal/SendActivityModal.js +30 -38
  22. package/dist/SendActivityModal/SendActivityModal.js.map +1 -1
  23. package/dist/SendActivityModal/SendActivityModal.mjs +30 -38
  24. package/dist/SendActivityModal/SendActivityModal.mjs.map +1 -1
  25. package/dist/SendActivityModal/index.js +30 -38
  26. package/dist/SendActivityModal/index.js.map +1 -1
  27. package/dist/SendActivityModal/index.mjs +30 -38
  28. package/dist/SendActivityModal/index.mjs.map +1 -1
  29. package/dist/TableProvider/index.js +30 -38
  30. package/dist/TableProvider/index.js.map +1 -1
  31. package/dist/TableProvider/index.mjs +30 -38
  32. package/dist/TableProvider/index.mjs.map +1 -1
  33. package/dist/hooks/useRecommendedLessonsPage/index.d.ts +218 -0
  34. package/dist/hooks/useRecommendedLessonsPage/index.d.ts.map +1 -0
  35. package/dist/hooks/useRecommendedLessonsPage/index.js +247 -0
  36. package/dist/hooks/useRecommendedLessonsPage/index.js.map +1 -0
  37. package/dist/hooks/useRecommendedLessonsPage/index.mjs +221 -0
  38. package/dist/hooks/useRecommendedLessonsPage/index.mjs.map +1 -0
  39. package/dist/hooks/useRecommendedLessonsPage.d.ts +218 -0
  40. package/dist/hooks/useRecommendedLessonsPage.d.ts.map +1 -0
  41. package/dist/hooks/useSendActivity/index.js +1 -1
  42. package/dist/hooks/useSendActivity/index.js.map +1 -1
  43. package/dist/hooks/useSendActivity/index.mjs +1 -1
  44. package/dist/hooks/useSendActivity/index.mjs.map +1 -1
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +344 -133
  48. package/dist/index.js.map +1 -1
  49. package/dist/index.mjs +333 -124
  50. package/dist/index.mjs.map +1 -1
  51. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -2007,9 +2007,9 @@ var CheckboxGroup = ({
2007
2007
  showSingleItem = false
2008
2008
  }) => {
2009
2009
  const [openAccordion, setOpenAccordion] = useState3("");
2010
- const autoSelectionAppliedRef = useRef3(false);
2011
2010
  const onCategoriesChangeRef = useRef3(onCategoriesChange);
2012
2011
  const previousCategoriesRef = useRef3(categories);
2012
+ const appliedAutoSelectionRef = useRef3("");
2013
2013
  useEffect2(() => {
2014
2014
  onCategoriesChangeRef.current = onCategoriesChange;
2015
2015
  }, [onCategoriesChange]);
@@ -2030,9 +2030,6 @@ var CheckboxGroup = ({
2030
2030
  }, [categories]);
2031
2031
  useEffect2(() => {
2032
2032
  const categoriesChanged = categories !== previousCategoriesRef.current;
2033
- if (!categoriesChanged && autoSelectionAppliedRef.current) {
2034
- return;
2035
- }
2036
2033
  previousCategoriesRef.current = categories;
2037
2034
  const hasAutoSelectionChanges = categoriesWithAutoSelection.some(
2038
2035
  (cat, index) => {
@@ -2040,11 +2037,18 @@ var CheckboxGroup = ({
2040
2037
  return !areSelectedIdsEqual(cat.selectedIds, originalCat.selectedIds);
2041
2038
  }
2042
2039
  );
2043
- if (hasAutoSelectionChanges) {
2044
- autoSelectionAppliedRef.current = true;
2040
+ if (!hasAutoSelectionChanges) {
2041
+ if (categoriesChanged) {
2042
+ appliedAutoSelectionRef.current = "";
2043
+ }
2044
+ return;
2045
+ }
2046
+ const autoSelectionSignature = JSON.stringify(
2047
+ categoriesWithAutoSelection.map((c) => c.selectedIds)
2048
+ );
2049
+ if (appliedAutoSelectionRef.current !== autoSelectionSignature) {
2050
+ appliedAutoSelectionRef.current = autoSelectionSignature;
2045
2051
  onCategoriesChangeRef.current(categoriesWithAutoSelection);
2046
- } else if (categoriesChanged) {
2047
- autoSelectionAppliedRef.current = false;
2048
2052
  }
2049
2053
  }, [categoriesWithAutoSelection, categories]);
2050
2054
  const isCheckBoxIsSelected = (categoryKey, itemId) => {
@@ -2301,36 +2305,24 @@ var CheckboxGroup = ({
2301
2305
  };
2302
2306
  const renderCheckboxItem = (item, categoryKey) => {
2303
2307
  const uniqueId = `${categoryKey}-${item.id}`;
2304
- return /* @__PURE__ */ jsxs9(
2305
- "div",
2306
- {
2307
- className: "flex items-center gap-3 px-2",
2308
- role: "presentation",
2309
- onClick: (e) => e.stopPropagation(),
2310
- onMouseDown: (e) => e.stopPropagation(),
2311
- onMouseUp: (e) => e.stopPropagation(),
2312
- onKeyDown: (e) => e.stopPropagation(),
2313
- children: [
2314
- /* @__PURE__ */ jsx14(
2315
- CheckBox_default,
2316
- {
2317
- id: uniqueId,
2318
- checked: isCheckBoxIsSelected(categoryKey, item.id),
2319
- onChange: () => toggleItem(categoryKey, item.id)
2320
- }
2321
- ),
2322
- /* @__PURE__ */ jsx14(
2323
- "label",
2324
- {
2325
- htmlFor: uniqueId,
2326
- className: "text-sm text-text-950 cursor-pointer select-none",
2327
- children: item.name
2328
- }
2329
- )
2330
- ]
2331
- },
2332
- item.id
2333
- );
2308
+ return /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3 px-2", children: [
2309
+ /* @__PURE__ */ jsx14(
2310
+ CheckBox_default,
2311
+ {
2312
+ id: uniqueId,
2313
+ checked: isCheckBoxIsSelected(categoryKey, item.id),
2314
+ onChange: () => toggleItem(categoryKey, item.id)
2315
+ }
2316
+ ),
2317
+ /* @__PURE__ */ jsx14(
2318
+ "label",
2319
+ {
2320
+ htmlFor: uniqueId,
2321
+ className: "text-sm text-text-950 cursor-pointer select-none",
2322
+ children: item.name
2323
+ }
2324
+ )
2325
+ ] }, item.id);
2334
2326
  };
2335
2327
  const renderFormattedGroup = (formattedGroup, idx, categoryKey) => /* @__PURE__ */ jsxs9(
2336
2328
  "div",
@@ -25696,9 +25688,8 @@ var GoalPageTab = /* @__PURE__ */ ((GoalPageTab2) => {
25696
25688
  GoalPageTab2["MODELS"] = "models";
25697
25689
  return GoalPageTab2;
25698
25690
  })(GoalPageTab || {});
25699
- var isNonEmptyArray = (param) => Array.isArray(param) && param.length > 0;
25700
25691
  var extractFilterValue = (param) => {
25701
- if (!isNonEmptyArray(param)) return {};
25692
+ if (!Array.isArray(param) || param.length === 0) return {};
25702
25693
  return param.length === 1 ? { single: param[0] } : { multiple: param };
25703
25694
  };
25704
25695
  var buildFiltersFromParams = (params) => {
@@ -25709,7 +25700,7 @@ var buildFiltersFromParams = (params) => {
25709
25700
  if (params.search) {
25710
25701
  filters.search = params.search;
25711
25702
  }
25712
- if (isNonEmptyArray(params.status)) {
25703
+ if (Array.isArray(params.status) && params.status.length > 0) {
25713
25704
  filters.status = params.status[0];
25714
25705
  }
25715
25706
  const schoolFilter = extractFilterValue(params.school);
@@ -25718,10 +25709,10 @@ var buildFiltersFromParams = (params) => {
25718
25709
  const classFilter = extractFilterValue(params.class);
25719
25710
  if (classFilter.single) filters.classId = classFilter.single;
25720
25711
  if (classFilter.multiple) filters.classIds = classFilter.multiple;
25721
- if (isNonEmptyArray(params.students)) {
25712
+ if (Array.isArray(params.students) && params.students.length > 0) {
25722
25713
  filters.studentIds = params.students;
25723
25714
  }
25724
- if (isNonEmptyArray(params.subject)) {
25715
+ if (Array.isArray(params.subject) && params.subject.length > 0) {
25725
25716
  filters.subjectId = params.subject[0];
25726
25717
  }
25727
25718
  if (params.startDate && typeof params.startDate === "string") {
@@ -26981,8 +26972,225 @@ var RecommendedLessonDetails = ({
26981
26972
  };
26982
26973
  var RecommendedLessonDetails_default = RecommendedLessonDetails;
26983
26974
 
26975
+ // src/hooks/useRecommendedLessonsPage.ts
26976
+ import { useCallback as useCallback29, useRef as useRef31, useMemo as useMemo29, useState as useState48 } from "react";
26977
+ var buildQueryParams2 = (filters) => {
26978
+ if (!filters) return {};
26979
+ const params = {};
26980
+ for (const key in filters) {
26981
+ const value = filters[key];
26982
+ if (value !== void 0 && value !== null) {
26983
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
26984
+ params[key] = value;
26985
+ }
26986
+ }
26987
+ }
26988
+ return params;
26989
+ };
26990
+ var getSchoolOptions2 = (userData) => {
26991
+ if (!userData?.userInstitutions) return [];
26992
+ const schoolMap = /* @__PURE__ */ new Map();
26993
+ userData.userInstitutions.forEach((inst) => {
26994
+ if (inst.school?.id && inst.school?.name) {
26995
+ schoolMap.set(inst.school.id, inst.school.name);
26996
+ }
26997
+ });
26998
+ return Array.from(schoolMap.entries()).map(([id, name]) => ({ id, name }));
26999
+ };
27000
+ var getClassOptions2 = (userData) => {
27001
+ if (!userData?.userInstitutions) return [];
27002
+ const classMap = /* @__PURE__ */ new Map();
27003
+ userData.userInstitutions.forEach((inst) => {
27004
+ if (inst.class?.id && inst.class?.name) {
27005
+ classMap.set(inst.class.id, inst.class.name);
27006
+ }
27007
+ });
27008
+ return Array.from(classMap.entries()).map(([id, name]) => ({ id, name }));
27009
+ };
27010
+ var getSubjectOptions3 = (userData) => {
27011
+ if (!userData?.subTeacherTopicClasses) return [];
27012
+ const subjectMap = /* @__PURE__ */ new Map();
27013
+ userData.subTeacherTopicClasses.forEach((stc) => {
27014
+ if (stc.subject?.id && stc.subject?.name) {
27015
+ subjectMap.set(stc.subject.id, stc.subject.name);
27016
+ }
27017
+ });
27018
+ return Array.from(subjectMap.entries()).map(([id, name]) => ({ id, name }));
27019
+ };
27020
+ var createUseRecommendedLessonsPage = (config) => {
27021
+ const {
27022
+ api,
27023
+ navigate,
27024
+ userData,
27025
+ paths,
27026
+ endpoints,
27027
+ texts,
27028
+ emptyStateImage,
27029
+ noSearchImage,
27030
+ mapSubjectNameToEnum: mapSubjectNameToEnum2
27031
+ } = config;
27032
+ return () => {
27033
+ const goalsMapRef = useRef31(/* @__PURE__ */ new Map());
27034
+ const [sendModalOpen, setSendModalOpen] = useState48(false);
27035
+ const [selectedModel, setSelectedModel] = useState48(null);
27036
+ const [sendModalLoading, setSendModalLoading] = useState48(false);
27037
+ const [sendModalCategories, setSendModalCategories] = useState48([]);
27038
+ const userFilterData = useMemo29(
27039
+ () => ({
27040
+ schools: getSchoolOptions2(userData),
27041
+ classes: getClassOptions2(userData),
27042
+ subjects: getSubjectOptions3(userData)
27043
+ }),
27044
+ [userData]
27045
+ );
27046
+ const subjectsMap = useMemo29(() => {
27047
+ const map = /* @__PURE__ */ new Map();
27048
+ const subjects = getSubjectOptions3(userData);
27049
+ subjects.forEach((s) => map.set(s.id, s.name));
27050
+ return map;
27051
+ }, [userData]);
27052
+ const fetchGoalsHistory = useCallback29(
27053
+ async (filters) => {
27054
+ const params = buildQueryParams2(filters);
27055
+ const response = await api.get(
27056
+ endpoints.goalsHistory,
27057
+ { params }
27058
+ );
27059
+ const goals = response.data.data.goals;
27060
+ goals.forEach((goal) => {
27061
+ goalsMapRef.current.set(goal.goal.id, goal);
27062
+ });
27063
+ return response.data;
27064
+ },
27065
+ [api, endpoints.goalsHistory]
27066
+ );
27067
+ const fetchGoalModels = useCallback29(
27068
+ async (filters) => {
27069
+ const params = buildQueryParams2({
27070
+ ...filters,
27071
+ type: "MODELO" /* MODELO */
27072
+ });
27073
+ const response = await api.get(
27074
+ endpoints.goalDrafts,
27075
+ { params }
27076
+ );
27077
+ return response.data;
27078
+ },
27079
+ [api, endpoints.goalDrafts]
27080
+ );
27081
+ const deleteGoalModel = useCallback29(
27082
+ async (id) => {
27083
+ await api.delete(`${endpoints.goalDrafts}/${id}`);
27084
+ },
27085
+ [api, endpoints.goalDrafts]
27086
+ );
27087
+ const handleCreateLesson = useCallback29(() => {
27088
+ navigate(paths.createLesson);
27089
+ }, []);
27090
+ const handleCreateModel = useCallback29(() => {
27091
+ navigate(paths.createModel);
27092
+ }, []);
27093
+ const handleRowClick = useCallback29((row) => {
27094
+ const originalData = goalsMapRef.current.get(row.id);
27095
+ navigate(`${paths.lessonDetails}/${row.id}`, {
27096
+ state: { goalData: originalData }
27097
+ });
27098
+ }, []);
27099
+ const handleEditGoal = useCallback29((id) => {
27100
+ navigate(`${paths.editLesson}/${id}/editar`);
27101
+ }, []);
27102
+ const handleEditModel = useCallback29((model) => {
27103
+ navigate(`${paths.editModel}${model.id}`);
27104
+ }, []);
27105
+ const handleSendLesson = useCallback29(
27106
+ (model) => {
27107
+ setSelectedModel(model);
27108
+ const classes = getClassOptions2(userData);
27109
+ const categories = [];
27110
+ if (classes.length > 0) {
27111
+ categories.push({
27112
+ key: "students",
27113
+ label: "Turmas",
27114
+ selectedIds: [],
27115
+ itens: classes.map((cls) => ({
27116
+ id: cls.id,
27117
+ name: cls.name,
27118
+ studentId: cls.id,
27119
+ userInstitutionId: cls.id
27120
+ }))
27121
+ });
27122
+ }
27123
+ setSendModalCategories(categories);
27124
+ setSendModalOpen(true);
27125
+ },
27126
+ [userData]
27127
+ );
27128
+ const handleSendLessonSubmit = useCallback29(
27129
+ async (formData) => {
27130
+ if (!selectedModel) return;
27131
+ setSendModalLoading(true);
27132
+ try {
27133
+ await api.post(endpoints.submitGoal, {
27134
+ draftId: selectedModel.id,
27135
+ students: formData.students,
27136
+ startDate: `${formData.startDate}T${formData.startTime}:00`,
27137
+ finalDate: `${formData.finalDate}T${formData.finalTime}:00`
27138
+ });
27139
+ setSendModalOpen(false);
27140
+ setSelectedModel(null);
27141
+ } finally {
27142
+ setSendModalLoading(false);
27143
+ }
27144
+ },
27145
+ [api, endpoints.submitGoal, selectedModel]
27146
+ );
27147
+ const handleSendModalClose = useCallback29(() => {
27148
+ setSendModalOpen(false);
27149
+ setSelectedModel(null);
27150
+ }, []);
27151
+ const handleCategoriesChange = useCallback29(
27152
+ (categories) => {
27153
+ setSendModalCategories(categories);
27154
+ },
27155
+ []
27156
+ );
27157
+ return {
27158
+ historyProps: {
27159
+ fetchGoalsHistory,
27160
+ fetchGoalModels,
27161
+ deleteGoalModel,
27162
+ onCreateLesson: handleCreateLesson,
27163
+ onCreateModel: handleCreateModel,
27164
+ onRowClick: handleRowClick,
27165
+ onEditGoal: handleEditGoal,
27166
+ onEditModel: handleEditModel,
27167
+ onSendLesson: handleSendLesson,
27168
+ emptyStateImage,
27169
+ noSearchImage,
27170
+ mapSubjectNameToEnum: mapSubjectNameToEnum2,
27171
+ userFilterData,
27172
+ subjectsMap,
27173
+ title: texts.title,
27174
+ createButtonText: texts.createButtonText,
27175
+ searchPlaceholder: texts.searchPlaceholder
27176
+ },
27177
+ modalProps: {
27178
+ isOpen: sendModalOpen,
27179
+ onClose: handleSendModalClose,
27180
+ onSubmit: handleSendLessonSubmit,
27181
+ categories: sendModalCategories,
27182
+ onCategoriesChange: handleCategoriesChange,
27183
+ isLoading: sendModalLoading,
27184
+ modalTitle: selectedModel?.title
27185
+ },
27186
+ navigate
27187
+ };
27188
+ };
27189
+ };
27190
+ var createRecommendedLessonsPageHook = createUseRecommendedLessonsPage;
27191
+
26984
27192
  // src/hooks/useRecommendedLessonDetails.ts
26985
- import { useState as useState48, useCallback as useCallback29, useEffect as useEffect49 } from "react";
27193
+ import { useState as useState49, useCallback as useCallback30, useEffect as useEffect49 } from "react";
26986
27194
  import { z as z7 } from "zod";
26987
27195
  var goalLessonSubjectSchema = z7.object({
26988
27196
  id: z7.string(),
@@ -27085,12 +27293,12 @@ var handleLessonDetailsFetchError = (error) => {
27085
27293
  };
27086
27294
  var createUseRecommendedLessonDetails = (apiClient) => {
27087
27295
  return (lessonId) => {
27088
- const [state, setState] = useState48({
27296
+ const [state, setState] = useState49({
27089
27297
  data: null,
27090
27298
  loading: true,
27091
27299
  error: null
27092
27300
  });
27093
- const fetchLessonDetails = useCallback29(async () => {
27301
+ const fetchLessonDetails = useCallback30(async () => {
27094
27302
  if (!lessonId) {
27095
27303
  setState({
27096
27304
  data: null,
@@ -27148,10 +27356,10 @@ var createUseRecommendedLessonDetails = (apiClient) => {
27148
27356
  var createRecommendedLessonDetailsHook = createUseRecommendedLessonDetails;
27149
27357
 
27150
27358
  // src/components/ActivitiesHistory/ActivitiesHistory.tsx
27151
- import { useState as useState51 } from "react";
27359
+ import { useState as useState52 } from "react";
27152
27360
 
27153
27361
  // src/components/ActivitiesHistory/tabs/HistoryTab.tsx
27154
- import { useCallback as useCallback31, useMemo as useMemo29, useRef as useRef31 } from "react";
27362
+ import { useCallback as useCallback32, useMemo as useMemo30, useRef as useRef32 } from "react";
27155
27363
  import { Plus as Plus5 } from "phosphor-react";
27156
27364
 
27157
27365
  // src/components/ActivitiesHistory/config/historyTableColumns.tsx
@@ -27165,7 +27373,6 @@ var renderTruncatedText = (value) => {
27165
27373
  };
27166
27374
 
27167
27375
  // src/components/ActivitiesHistory/utils/filterBuilders.ts
27168
- var isNonEmptyArray2 = (param) => Array.isArray(param) && param.length > 0;
27169
27376
  var isValidApiStatus = (value) => Object.values(GenericApiStatus).includes(value);
27170
27377
  var buildHistoryFiltersFromParams = (params) => {
27171
27378
  const filters = {
@@ -27175,13 +27382,13 @@ var buildHistoryFiltersFromParams = (params) => {
27175
27382
  if (params.search) {
27176
27383
  filters.search = params.search;
27177
27384
  }
27178
- if (isNonEmptyArray2(params.status) && isValidApiStatus(params.status[0])) {
27385
+ if (Array.isArray(params.status) && params.status.length > 0 && isValidApiStatus(params.status[0])) {
27179
27386
  filters.status = params.status[0];
27180
27387
  }
27181
- if (isNonEmptyArray2(params.school)) {
27388
+ if (Array.isArray(params.school) && params.school.length > 0) {
27182
27389
  filters.schoolId = params.school[0];
27183
27390
  }
27184
- if (isNonEmptyArray2(params.subject)) {
27391
+ if (Array.isArray(params.subject) && params.subject.length > 0) {
27185
27392
  filters.subjectId = params.subject[0];
27186
27393
  }
27187
27394
  return filters;
@@ -27194,21 +27401,21 @@ var buildModelsFiltersFromParams = (params) => {
27194
27401
  if (params.search) {
27195
27402
  filters.search = params.search;
27196
27403
  }
27197
- if (isNonEmptyArray2(params.subject)) {
27404
+ if (Array.isArray(params.subject) && params.subject.length > 0) {
27198
27405
  filters.subjectId = params.subject[0];
27199
27406
  }
27200
27407
  return filters;
27201
27408
  };
27202
27409
 
27203
27410
  // src/components/ActivitiesHistory/utils/filterOptions.ts
27204
- var getSchoolOptions2 = (data) => {
27411
+ var getSchoolOptions3 = (data) => {
27205
27412
  if (!data?.schools) return [];
27206
27413
  return data.schools.map((school) => ({
27207
27414
  id: school.id,
27208
27415
  name: school.name
27209
27416
  }));
27210
27417
  };
27211
- var getSubjectOptions3 = (data) => {
27418
+ var getSubjectOptions4 = (data) => {
27212
27419
  if (!data?.subjects) return [];
27213
27420
  return data.subjects.map((subject) => ({
27214
27421
  id: subject.id,
@@ -27344,7 +27551,7 @@ var createHistoryFiltersConfig = (userData) => [
27344
27551
  key: "school",
27345
27552
  label: "Escola",
27346
27553
  selectedIds: [],
27347
- itens: getSchoolOptions2(userData)
27554
+ itens: getSchoolOptions3(userData)
27348
27555
  }
27349
27556
  ]
27350
27557
  },
@@ -27356,14 +27563,14 @@ var createHistoryFiltersConfig = (userData) => [
27356
27563
  key: "subject",
27357
27564
  label: "Mat\xE9ria",
27358
27565
  selectedIds: [],
27359
- itens: getSubjectOptions3(userData)
27566
+ itens: getSubjectOptions4(userData)
27360
27567
  }
27361
27568
  ]
27362
27569
  }
27363
27570
  ];
27364
27571
 
27365
27572
  // src/hooks/useActivitiesHistory.ts
27366
- import { useState as useState49, useCallback as useCallback30 } from "react";
27573
+ import { useState as useState50, useCallback as useCallback31 } from "react";
27367
27574
  import { z as z8 } from "zod";
27368
27575
  import dayjs5 from "dayjs";
27369
27576
  var activityHistoryResponseSchema = z8.object({
@@ -27422,13 +27629,13 @@ var handleActivityFetchError = createFetchErrorHandler(
27422
27629
  );
27423
27630
  var createUseActivitiesHistory = (fetchActivitiesHistory) => {
27424
27631
  return () => {
27425
- const [state, setState] = useState49({
27632
+ const [state, setState] = useState50({
27426
27633
  activities: [],
27427
27634
  loading: false,
27428
27635
  error: null,
27429
27636
  pagination: DEFAULT_ACTIVITIES_PAGINATION
27430
27637
  });
27431
- const fetchActivities = useCallback30(
27638
+ const fetchActivities = useCallback31(
27432
27639
  async (filters) => {
27433
27640
  setState((prev) => ({ ...prev, loading: true, error: null }));
27434
27641
  try {
@@ -27473,9 +27680,9 @@ var HistoryTab = ({
27473
27680
  mapSubjectNameToEnum: mapSubjectNameToEnum2,
27474
27681
  userFilterData
27475
27682
  }) => {
27476
- const fetchActivitiesHistoryRef = useRef31(fetchActivitiesHistory);
27683
+ const fetchActivitiesHistoryRef = useRef32(fetchActivitiesHistory);
27477
27684
  fetchActivitiesHistoryRef.current = fetchActivitiesHistory;
27478
- const useActivitiesHistory = useMemo29(
27685
+ const useActivitiesHistory = useMemo30(
27479
27686
  () => createUseActivitiesHistory(
27480
27687
  (filters) => fetchActivitiesHistoryRef.current(filters)
27481
27688
  ),
@@ -27488,15 +27695,15 @@ var HistoryTab = ({
27488
27695
  pagination,
27489
27696
  fetchActivities
27490
27697
  } = useActivitiesHistory();
27491
- const historyFilterConfigs = useMemo29(
27698
+ const historyFilterConfigs = useMemo30(
27492
27699
  () => createHistoryFiltersConfig(userFilterData),
27493
27700
  [userFilterData]
27494
27701
  );
27495
- const historyTableColumns = useMemo29(
27702
+ const historyTableColumns = useMemo30(
27496
27703
  () => createHistoryTableColumns(mapSubjectNameToEnum2),
27497
27704
  [mapSubjectNameToEnum2]
27498
27705
  );
27499
- const handleParamsChange = useCallback31(
27706
+ const handleParamsChange = useCallback32(
27500
27707
  (params) => {
27501
27708
  const filters = buildHistoryFiltersFromParams(params);
27502
27709
  fetchActivities(filters);
@@ -27588,14 +27795,14 @@ var createModelsFiltersConfig = (userData) => [
27588
27795
  key: "subject",
27589
27796
  label: "Mat\xE9ria",
27590
27797
  selectedIds: [],
27591
- itens: getSubjectOptions3(userData)
27798
+ itens: getSubjectOptions4(userData)
27592
27799
  }
27593
27800
  ]
27594
27801
  }
27595
27802
  ];
27596
27803
 
27597
27804
  // src/hooks/useActivityModels.ts
27598
- import { useState as useState50, useCallback as useCallback32 } from "react";
27805
+ import { useState as useState51, useCallback as useCallback33 } from "react";
27599
27806
  import { z as z9 } from "zod";
27600
27807
  import dayjs6 from "dayjs";
27601
27808
  var activityDraftFiltersSchema = z9.object({
@@ -27645,13 +27852,13 @@ var handleModelFetchError = createFetchErrorHandler(
27645
27852
  );
27646
27853
  var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
27647
27854
  return () => {
27648
- const [state, setState] = useState50({
27855
+ const [state, setState] = useState51({
27649
27856
  models: [],
27650
27857
  loading: false,
27651
27858
  error: null,
27652
27859
  pagination: DEFAULT_MODELS_PAGINATION
27653
27860
  });
27654
- const fetchModels = useCallback32(
27861
+ const fetchModels = useCallback33(
27655
27862
  async (filters, subjectsMap) => {
27656
27863
  setState((prev) => ({ ...prev, loading: true, error: null }));
27657
27864
  try {
@@ -27686,7 +27893,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
27686
27893
  },
27687
27894
  [fetchActivityModels]
27688
27895
  );
27689
- const deleteModel = useCallback32(
27896
+ const deleteModel = useCallback33(
27690
27897
  async (id) => {
27691
27898
  try {
27692
27899
  await deleteActivityModel(id);
@@ -27789,7 +27996,7 @@ var ActivitiesHistory = ({
27789
27996
  userFilterData,
27790
27997
  subjectsMap
27791
27998
  }) => {
27792
- const [activeTab, setActiveTab] = useState51("history" /* HISTORY */);
27999
+ const [activeTab, setActiveTab] = useState52("history" /* HISTORY */);
27793
28000
  return /* @__PURE__ */ jsxs97(
27794
28001
  "div",
27795
28002
  {
@@ -28028,7 +28235,7 @@ var buildUserFilterData = (userData) => ({
28028
28235
  });
28029
28236
 
28030
28237
  // src/hooks/useChat.ts
28031
- import { useState as useState52, useEffect as useEffect50, useCallback as useCallback33, useRef as useRef32 } from "react";
28238
+ import { useState as useState53, useEffect as useEffect50, useCallback as useCallback34, useRef as useRef33 } from "react";
28032
28239
  var WS_STATES = {
28033
28240
  CONNECTING: 0,
28034
28241
  OPEN: 1,
@@ -28047,25 +28254,25 @@ function useChat({
28047
28254
  reconnectInterval = 3e3,
28048
28255
  maxReconnectAttempts = 5
28049
28256
  }) {
28050
- const [isConnected, setIsConnected] = useState52(false);
28051
- const [messages, setMessages] = useState52([]);
28052
- const [participants, setParticipants] = useState52([]);
28053
- const [error, setError] = useState52(null);
28054
- const wsRef = useRef32(null);
28055
- const reconnectAttemptsRef = useRef32(0);
28056
- const reconnectTimeoutRef = useRef32(
28257
+ const [isConnected, setIsConnected] = useState53(false);
28258
+ const [messages, setMessages] = useState53([]);
28259
+ const [participants, setParticipants] = useState53([]);
28260
+ const [error, setError] = useState53(null);
28261
+ const wsRef = useRef33(null);
28262
+ const reconnectAttemptsRef = useRef33(0);
28263
+ const reconnectTimeoutRef = useRef33(
28057
28264
  null
28058
28265
  );
28059
- const isManualDisconnectRef = useRef32(false);
28060
- const isConnectingRef = useRef32(false);
28061
- const connectRef = useRef32(() => {
28266
+ const isManualDisconnectRef = useRef33(false);
28267
+ const isConnectingRef = useRef33(false);
28268
+ const connectRef = useRef33(() => {
28062
28269
  });
28063
- const sendWsMessage = useCallback33((message) => {
28270
+ const sendWsMessage = useCallback34((message) => {
28064
28271
  if (wsRef.current?.readyState === WS_STATES.OPEN) {
28065
28272
  wsRef.current.send(JSON.stringify(message));
28066
28273
  }
28067
28274
  }, []);
28068
- const sendMessage = useCallback33(
28275
+ const sendMessage = useCallback34(
28069
28276
  (content) => {
28070
28277
  const trimmedContent = content.trim();
28071
28278
  if (!trimmedContent) return;
@@ -28076,12 +28283,12 @@ function useChat({
28076
28283
  },
28077
28284
  [sendWsMessage]
28078
28285
  );
28079
- const leave = useCallback33(() => {
28286
+ const leave = useCallback34(() => {
28080
28287
  isManualDisconnectRef.current = true;
28081
28288
  sendWsMessage({ type: "leave" });
28082
28289
  wsRef.current?.close(1e3, "User left");
28083
28290
  }, [sendWsMessage]);
28084
- const handleMessage = useCallback33(
28291
+ const handleMessage = useCallback34(
28085
28292
  (event) => {
28086
28293
  try {
28087
28294
  const data = JSON.parse(event.data);
@@ -28149,7 +28356,7 @@ function useChat({
28149
28356
  },
28150
28357
  [onError]
28151
28358
  );
28152
- const connect = useCallback33(() => {
28359
+ const connect = useCallback34(() => {
28153
28360
  if (isConnectingRef.current) {
28154
28361
  return;
28155
28362
  }
@@ -28203,7 +28410,7 @@ function useChat({
28203
28410
  maxReconnectAttempts
28204
28411
  ]);
28205
28412
  connectRef.current = connect;
28206
- const reconnect = useCallback33(() => {
28413
+ const reconnect = useCallback34(() => {
28207
28414
  isManualDisconnectRef.current = false;
28208
28415
  reconnectAttemptsRef.current = 0;
28209
28416
  connectRef.current();
@@ -28252,15 +28459,15 @@ function createUseChat(baseWsUrl) {
28252
28459
  }
28253
28460
 
28254
28461
  // src/hooks/useChatRooms.ts
28255
- import { useState as useState53, useCallback as useCallback34 } from "react";
28462
+ import { useState as useState54, useCallback as useCallback35 } from "react";
28256
28463
  function useChatRooms({
28257
28464
  apiClient
28258
28465
  }) {
28259
- const [rooms, setRooms] = useState53([]);
28260
- const [availableUsers, setAvailableUsers] = useState53([]);
28261
- const [loading, setLoading] = useState53(false);
28262
- const [error, setError] = useState53(null);
28263
- const fetchRooms = useCallback34(async () => {
28466
+ const [rooms, setRooms] = useState54([]);
28467
+ const [availableUsers, setAvailableUsers] = useState54([]);
28468
+ const [loading, setLoading] = useState54(false);
28469
+ const [error, setError] = useState54(null);
28470
+ const fetchRooms = useCallback35(async () => {
28264
28471
  setLoading(true);
28265
28472
  setError(null);
28266
28473
  try {
@@ -28276,7 +28483,7 @@ function useChatRooms({
28276
28483
  setLoading(false);
28277
28484
  }
28278
28485
  }, [apiClient]);
28279
- const fetchAvailableUsers = useCallback34(async () => {
28486
+ const fetchAvailableUsers = useCallback35(async () => {
28280
28487
  setLoading(true);
28281
28488
  setError(null);
28282
28489
  try {
@@ -28292,7 +28499,7 @@ function useChatRooms({
28292
28499
  setLoading(false);
28293
28500
  }
28294
28501
  }, [apiClient]);
28295
- const createRoom = useCallback34(
28502
+ const createRoom = useCallback35(
28296
28503
  async (participantIds) => {
28297
28504
  setLoading(true);
28298
28505
  setError(null);
@@ -28316,7 +28523,7 @@ function useChatRooms({
28316
28523
  },
28317
28524
  [apiClient, fetchRooms]
28318
28525
  );
28319
- const clearError = useCallback34(() => {
28526
+ const clearError = useCallback35(() => {
28320
28527
  setError(null);
28321
28528
  }, []);
28322
28529
  return {
@@ -28350,7 +28557,7 @@ var CHAT_MESSAGE_TYPES = {
28350
28557
  };
28351
28558
 
28352
28559
  // src/components/Chat/Chat.tsx
28353
- import { useState as useState54, useEffect as useEffect51, useCallback as useCallback35, useRef as useRef33 } from "react";
28560
+ import { useState as useState55, useEffect as useEffect51, useCallback as useCallback36, useRef as useRef34 } from "react";
28354
28561
  import {
28355
28562
  PaperPlaneTiltIcon as PaperPlaneTiltIcon2,
28356
28563
  XIcon,
@@ -28503,16 +28710,16 @@ function ChatContent({
28503
28710
  onRoomChange,
28504
28711
  onBackToList
28505
28712
  }) {
28506
- const [view, setView] = useState54("list");
28507
- const [selectedRoom, setSelectedRoom] = useState54(
28713
+ const [view, setView] = useState55("list");
28714
+ const [selectedRoom, setSelectedRoom] = useState55(
28508
28715
  null
28509
28716
  );
28510
- const [selectedUserIds, setSelectedUserIds] = useState54(
28717
+ const [selectedUserIds, setSelectedUserIds] = useState55(
28511
28718
  /* @__PURE__ */ new Set()
28512
28719
  );
28513
- const [messageInput, setMessageInput] = useState54("");
28514
- const [showCreateModal, setShowCreateModal] = useState54(false);
28515
- const hasHandledInitialRoomRef = useRef33(false);
28720
+ const [messageInput, setMessageInput] = useState55("");
28721
+ const [showCreateModal, setShowCreateModal] = useState55(false);
28722
+ const hasHandledInitialRoomRef = useRef34(false);
28516
28723
  const {
28517
28724
  rooms,
28518
28725
  availableUsers,
@@ -28565,7 +28772,7 @@ function ChatContent({
28565
28772
  onBackToList?.();
28566
28773
  }
28567
28774
  }, [initialRoomId, rooms, roomsLoading, onBackToList]);
28568
- const handleSelectRoom = useCallback35(
28775
+ const handleSelectRoom = useCallback36(
28569
28776
  (room) => {
28570
28777
  setSelectedRoom(room);
28571
28778
  setView("room");
@@ -28573,12 +28780,12 @@ function ChatContent({
28573
28780
  },
28574
28781
  [onRoomChange]
28575
28782
  );
28576
- const handleOpenCreateModal = useCallback35(async () => {
28783
+ const handleOpenCreateModal = useCallback36(async () => {
28577
28784
  await fetchAvailableUsers();
28578
28785
  setSelectedUserIds(/* @__PURE__ */ new Set());
28579
28786
  setShowCreateModal(true);
28580
28787
  }, [fetchAvailableUsers]);
28581
- const handleToggleUser = useCallback35((id) => {
28788
+ const handleToggleUser = useCallback36((id) => {
28582
28789
  setSelectedUserIds((prev) => {
28583
28790
  const next = new Set(prev);
28584
28791
  if (next.has(id)) {
@@ -28589,7 +28796,7 @@ function ChatContent({
28589
28796
  return next;
28590
28797
  });
28591
28798
  }, []);
28592
- const handleCreateRoom = useCallback35(async () => {
28799
+ const handleCreateRoom = useCallback36(async () => {
28593
28800
  if (selectedUserIds.size === 0) return;
28594
28801
  const room = await createRoom(Array.from(selectedUserIds));
28595
28802
  if (room) {
@@ -28598,12 +28805,12 @@ function ChatContent({
28598
28805
  onRoomChange?.(room.id);
28599
28806
  }
28600
28807
  }, [selectedUserIds, createRoom, onRoomChange]);
28601
- const handleSendMessage = useCallback35(() => {
28808
+ const handleSendMessage = useCallback36(() => {
28602
28809
  if (!messageInput.trim()) return;
28603
28810
  sendMessage(messageInput);
28604
28811
  setMessageInput("");
28605
28812
  }, [messageInput, sendMessage]);
28606
- const handleBackToList = useCallback35(() => {
28813
+ const handleBackToList = useCallback36(() => {
28607
28814
  setSelectedRoom(null);
28608
28815
  setView("list");
28609
28816
  onBackToList?.();
@@ -28849,7 +29056,7 @@ var CalendarActivityStatus = /* @__PURE__ */ ((CalendarActivityStatus2) => {
28849
29056
  })(CalendarActivityStatus || {});
28850
29057
 
28851
29058
  // src/hooks/useSendActivity.ts
28852
- import { useState as useState55, useCallback as useCallback36, useMemo as useMemo30, useRef as useRef34 } from "react";
29059
+ import { useState as useState56, useCallback as useCallback37, useMemo as useMemo31, useRef as useRef35 } from "react";
28853
29060
  import dayjs7 from "dayjs";
28854
29061
  function transformToCategoryConfig(data) {
28855
29062
  return [
@@ -28879,7 +29086,7 @@ function transformToCategoryConfig(data) {
28879
29086
  selectedIds: []
28880
29087
  },
28881
29088
  {
28882
- key: "alunos",
29089
+ key: "students",
28883
29090
  label: "Aluno",
28884
29091
  dependsOn: ["escola", "serie", "turma"],
28885
29092
  itens: data.students,
@@ -28904,21 +29111,21 @@ function useSendActivity(config) {
28904
29111
  onSuccess,
28905
29112
  onError
28906
29113
  } = config;
28907
- const [isOpen, setIsOpen] = useState55(false);
28908
- const [selectedModel, setSelectedModel] = useState55(
29114
+ const [isOpen, setIsOpen] = useState56(false);
29115
+ const [selectedModel, setSelectedModel] = useState56(
28909
29116
  null
28910
29117
  );
28911
- const [categories, setCategories] = useState55([]);
28912
- const [isLoading, setIsLoading] = useState55(false);
28913
- const [isCategoriesLoading, setIsCategoriesLoading] = useState55(false);
28914
- const categoriesLoadedRef = useRef34(false);
28915
- const initialData = useMemo30(() => {
29118
+ const [categories, setCategories] = useState56([]);
29119
+ const [isLoading, setIsLoading] = useState56(false);
29120
+ const [isCategoriesLoading, setIsCategoriesLoading] = useState56(false);
29121
+ const categoriesLoadedRef = useRef35(false);
29122
+ const initialData = useMemo31(() => {
28916
29123
  if (!selectedModel) return void 0;
28917
29124
  return {
28918
29125
  title: selectedModel.title
28919
29126
  };
28920
29127
  }, [selectedModel]);
28921
- const loadCategories = useCallback36(async () => {
29128
+ const loadCategories = useCallback37(async () => {
28922
29129
  if (categoriesLoadedRef.current) return;
28923
29130
  setIsCategoriesLoading(true);
28924
29131
  try {
@@ -28933,7 +29140,7 @@ function useSendActivity(config) {
28933
29140
  setIsCategoriesLoading(false);
28934
29141
  }
28935
29142
  }, [fetchCategories, onError]);
28936
- const openModal = useCallback36(
29143
+ const openModal = useCallback37(
28937
29144
  (model) => {
28938
29145
  setSelectedModel(model);
28939
29146
  setIsOpen(true);
@@ -28941,17 +29148,17 @@ function useSendActivity(config) {
28941
29148
  },
28942
29149
  [loadCategories]
28943
29150
  );
28944
- const closeModal = useCallback36(() => {
29151
+ const closeModal = useCallback37(() => {
28945
29152
  setIsOpen(false);
28946
29153
  setSelectedModel(null);
28947
29154
  }, []);
28948
- const onCategoriesChange = useCallback36(
29155
+ const onCategoriesChange = useCallback37(
28949
29156
  (updatedCategories) => {
28950
29157
  setCategories(updatedCategories);
28951
29158
  },
28952
29159
  []
28953
29160
  );
28954
- const handleSubmit = useCallback36(
29161
+ const handleSubmit = useCallback37(
28955
29162
  async (data) => {
28956
29163
  if (!selectedModel) return;
28957
29164
  setIsLoading(true);
@@ -29207,6 +29414,7 @@ export {
29207
29414
  createQuestionsListHook,
29208
29415
  createRecommendedLessonDetailsHook,
29209
29416
  createRecommendedLessonsHistoryHook,
29417
+ createRecommendedLessonsPageHook,
29210
29418
  createUseActivitiesHistory,
29211
29419
  createUseActivityFiltersData,
29212
29420
  createUseActivityModels,
@@ -29218,6 +29426,7 @@ export {
29218
29426
  createUseQuestionsList,
29219
29427
  createUseRecommendedLessonDetails,
29220
29428
  createUseRecommendedLessonsHistory,
29429
+ createUseRecommendedLessonsPage,
29221
29430
  createZustandAuthAdapter,
29222
29431
  deriveStudentStatus,
29223
29432
  determineGoalStatus,