{"version":3,"sources":["types/api.ts","api/index.ts","src-new/constants/arrays.ts","src-new/constants/colors.ts","src-new/constants/files.ts","src-new/constants/lessonTaskMaps.ts","src-new/constants/questionsFilters.ts","store/reducers/academicPerformance.ts","store/normalizers/academicPerformance/normalizeAcademicPerformance.ts","store/reducers/academicYear.ts","store/reducers/activeClasses.ts","store/normalizers/activeClasses/normalizeGridCells.ts","store/normalizers/activeClasses/normalizeStudentGroupStatistic.ts","store/normalizers/adaptation/normalizeAdaptation.ts","store/reducers/adaptation.ts","utils/findAndReplace.ts","store/reducers/alerts.ts","store/reducers/auth.ts","store/reducers/createTask.ts","store/reducers/curatorDashboard.ts","store/normalizers/curatorDashboard/absentStudentList.ts","store/normalizers/curatorDashboard/absentTeacherList.ts","store/normalizers/curatorDashboard/lessons.ts","store/reducers/edu.ts","store/reducers/file.ts","store/reducers/library.ts","store/reducers/mark.ts","store/reducers/medicalCertificate.ts","store/reducers/meta.ts","store/reducers/oauth.ts","store/actions/passwordRecovery.ts","store/reducers/passwordRecovery.ts","store/reducers/revisionQuestion.ts","store/reducers/staffProfile.ts","store/reducers/studentGroups.ts","store/normalizers/studentGroups/normalizeStudentGroups.ts","store/reducers/studentSchedule.ts","store/normalizers/subject/normalizeMethodistCourses.ts","store/normalizers/subject/normalizeTeacherCourses.ts","store/reducers/subject.ts","store/reducers/user.ts","store/store.ts","src-new/ui/charts/app-area-chart/AppAreaChart.tsx","src-new/ui/sceleton/app-skeleton-custom/AppSkeletonCustom.tsx","src-new/ui/schedules/app-day-schedule/schedule-timeline/ScheduleTimeline.tsx","src-new/ui/schedules/app-day-schedule/shedules-card/SchedulesCard.tsx","src-new/ui/schedules/app-day-schedule/shedules-tooltip/ShedulesTooltip.tsx","src-new/ui/schedules/app-day-schedule/AppDaySchedule.tsx","src-new/ui/schedules/app-day-schedule/AppDayScheduleConstants.ts","src-new/ui/buttons/app-button/AppButton.utils.ts","src-new/ui/buttons/app-button/AppButton.tsx","src-new/ui/buttons/app-button-dropdown/AppButtonDropdown.tsx","src-new/ui/checkboxes/app-checkbox/AppCheckbox.tsx","src-new/ui/collapses/app-collapse/AppCollapse.tsx","src-new/ui/containers/app-scroll-paginate-container/AppScrollPaginateContainer.tsx","src-new/ui/file-uploader/app-file-uploader/AppFileUploader.tsx","src-new/ui/inputs/app-input/AppInput.tsx","src-new/ui/modals/app-decline-accept-modal/AppDeclineAcceptModal.tsx","src-new/ui/modals/app-drawer/index.ts","src-new/ui/modals/app-drawer/AppDrawer.tsx","src-new/ui/modals/app-modal/AppModal.tsx","src-new/ui/selects/app-paginate-select/AppPaginateSelect.tsx","src-new/ui/selects/app-select/AppSelect.tsx","src-new/ui/selects/app-tree-select/AppTreeSelect.tsx","src-new/ui/skeleton/app-skeleton/AppSkeleton.tsx","src-new/ui/steps/app-progress-bar/AppProgressBar.tsx","src-new/ui/switch/app-switch/AppSwitch.tsx","src-new/ui/table/app-table/AppTable.tsx","src-new/ui/table/app-table-cell/AppTableCell.tsx","src-new/ui/table/utils.ts","src-new/ui/tabs/app-tabs/AppTabs.tsx","src-new/ui/toggle/app-radio/AppRadio.tsx","src-new/ui/toggle/app-radio-group/AppRadioGroup.tsx","src-new/ui/typography/app-expandable-text/AppExpandableText.tsx","src-new/ui/typography/app-text/AppText.tsx","src-new/ui/calendar/app-calendar/AppCalendar.tsx","src-new/ui/calendar/app-datepicker/AppDatePicker.tsx","src-new/ui/calendar/app-timepicker/AppTimePicker.tsx","src-new/ui/scroll-container/scroll-paginate-container/ScrollPaginateContainer.tsx","types/materials.ts","src-new/utils/array/chunkArray.ts","src-new/utils/files/downloadTxtFileFromUrlByLink.ts","src-new/utils/general/deleteEmptyParams.ts","src-new/utils/general/getUid.ts","src-new/utils/general/isEmpty.ts","src-new/utils/group-actions/filters.ts","src-new/utils/lesson-task/getQuestionsInfoStatistic.ts","src-new/utils/lesson-task/replaceAssignmentValue.ts","src-new/utils/local-storage/getItemFromLocalStorage.ts","src-new/utils/local-storage/setItemToLocalStorage.ts","src-new/utils/new-subjects/getDataFromLocalStorage.ts","src-new/utils/new-subjects/getNearestLessonId.ts","src-new/utils/new-subjects/lessonTabsQueryParams.ts","src-new/utils/new-subjects/getTaskData.ts","src-new/utils/query/parseQuery.ts","src-new/utils/reporting/additionalDaysTable.ts","src-new/utils/reporting/calendarTableActions.ts","src-new/utils/reporting/holidayTable.ts","src-new/utils/reporting/periodTable.ts","src-new/utils/reporting/settings.ts","src-new/utils/safety-html/getSafetyHtml.ts","src-new/utils/url/parseQueryParamsToObject/parseQueryParamsToObject.config.ts","src-new/utils/url/parseQueryParamsToObject/index.ts","src-new/utils/url/parseQueryParamsToObject/parseQueryParamsToObject.ts","api/services/codifier.ts","store/actions/codifier.ts","containers/PageLoader/PageLoader.tsx","store/actions/lessonTask.ts","api/services/newSubjects/index.ts","store/actions/newSubjects.ts","hooks/useCheckPackageVersion.ts","hooks/useCourseGroupQuery.ts","hooks/useFormLoading.tsx","hooks/useGetCourseQuery.tsx","hooks/usePreventUnload.ts","hooks/useThrottle.tsx","assets/icons/arrow.svg","assets/icons/blue-loader.svg","assets/icons/calendar.svg","assets/icons/calendar-small.svg","assets/icons/chat.svg","assets/icons/checked.svg","assets/icons/close.svg","assets/icons/draft-check.svg","assets/icons/filter-icon.svg","assets/icons/green-stat.svg","assets/icons/history-icon.svg","assets/icons/linux-icon.svg","assets/icons/loader.svg","assets/icons/logo.svg","assets/icons/mac-icon.svg","assets/icons/minus-red-circle.svg","assets/icons/news-icon.svg","assets/icons/news-with-new-icon.svg","assets/icons/pen.svg","assets/icons/plus.svg","assets/icons/proctoring.svg","assets/icons/red-arrow.svg","assets/icons/red-stat.svg","assets/icons/replace-icon.svg","assets/icons/reporting-icon.svg","assets/icons/small-arrow.svg","assets/icons/small-arrow-left.svg","assets/icons/small-arrow-right.svg","assets/icons/sort-arrows.svg","assets/icons/stroke-arrow-right.svg","assets/icons/tick.svg","assets/icons/time-small.svg","assets/icons/trash-basket.svg","assets/icons/unchecked.svg","assets/icons/windows-icon.svg","assets/images/auth-background.png","assets/images/check-circle.svg","assets/images/empty-book-preview.png","assets/images/empty-calendar-day.png","assets/images/empty-dashboard.png","assets/images/empty-homework-teacher.png","assets/images/empty-homework.png","assets/images/empty-library.png","assets/images/empty-marks.png","assets/images/empty-news.png","assets/images/empty-online-lesson.png","assets/images/empty-questions-list.png","assets/images/empty-schedule.png","assets/images/empty-students-list.png","assets/images/empty-subject.png","assets/images/empty-video.png","assets/images/logo-text.svg","assets/images/logo-text-2.svg","assets/images/overdue-homework.png","assets/images/unselected-themes.png","assets/images/record-bg.png","components/QuestionPopUp/QuestionPopUp.types.ts","api/services/courseGroups/getCourseGroupExplelledStudents.ts","store/actions/courseGroup.ts","api/services/courseGroups/getStudentCourseGroups.ts","api/services/courseGroups/getGroupStatistics.ts","store/actions/material.ts","src-new/hooks/useDownloadTxtFile.ts","src-new/hooks/useQueryPopupsParams/index.ts","src-new/hooks/useQueryPopupsParams/useQueryPopupsParams.ts","src-new/hooks/lesson-task/useGetQuestionInfo.ts","src-new/hooks/lesson-task/useGetQuestionModalControls.ts","src-new/hooks/lesson-task/useQuestionsDrop.ts","src-new/hooks/lesson-task/useQuestionsMove.ts","src-new/hooks/new-subjects/create-question-popup/useCreateQuestionPopup.ts","src-new/hooks/new-subjects/lesson-popup/useLessonsPopup.ts","src-new/hooks/new-subjects/lesson-popup/useLessonsPopupState.ts","src-new/hooks/new-subjects/search-questions-popup/useSearchQuestionsPopup.ts","src-new/hooks/new-subjects/student-tasks-view-popup/useStudentTasksViewPopup.ts","src-new/hooks/new-subjects/task-popup/useTaskPopup.ts","src-new/hooks/new-subjects/use-get-lesson-homeworks/useGetLessonHomeworks.ts","src-new/hooks/new-subjects/use-get-subjects-tree/useGetSubjectsTree.ts","src-new/hooks/new-subjects/use-get-popup-lesson-data/useGetPopupLessonData.ts","src-new/hooks/new-subjects/use-get-subjects-tree-data/useGetSubjectsTreeData.ts","src-new/hooks/new-subjects/use-subjects-redirect/useSubjectsRedirect.ts","api/services/library/index.ts","store/actions/library.ts","fsd/entities/statistics-monitoring/model/requestServices.ts","fsd/entities/statistics-monitoring/model/statisticsMonitoringApi.ts","fsd/entities/statistics-monitoring/model/statisticsMonitoringActions.ts","types/assignmentProgress.ts","store/actions/proctoring.ts","store/actions/homework.ts","store/actions/questionBank.ts","api/services/assignment/deleteAssignment.ts","api/services/assignment/fetchAssignments.ts","api/services/assignment/getAssignmentsByLesson.ts","api/services/assignment/patchAssignment.ts","api/services/assignment/postAssignment.ts","api/services/assignment/getAssignmentProgressInterval.ts","store/actions/assignment.ts","api/services/assignment/getAssignmentTypes.ts","types/homework.ts","api/services/questionCreate.ts","src-new/utils/date-n-time/formatDate.ts","src-new/utils/date-n-time/getDateComponents.ts","src-new/utils/date-n-time/getSelectedDate.ts","src-new/utils/date-n-time/payloadTimeFormatter.ts","src-new/utils/date-n-time/timeСonversion.ts","api/services/assignment/postEvaluate.ts","store/actions/answerAttempt.ts","fsd/shared/utils/api/apiInterceptor.ts","fsd/shared/utils/api/apiRequests.ts","fsd/shared/constants/sentryApiLists.ts","fsd/shared/utils/api/apiResponder.ts","fsd/shared/utils/api/createInstance.ts","fsd/shared/utils/color/transformHexColor.ts","fsd/shared/utils/date/getDaysInMonth.ts","fsd/shared/utils/date/getFormattedMonth.ts","fsd/shared/utils/decorators/debounceCaller.ts","fsd/shared/utils/toast/showErrorToast.ts","fsd/shared/utils/url/getQueryStringParams.ts","fsd/shared/utils/user/getUserName.ts","src-new/components/lesson-task/drag-n-drop/dragging-containers/CommonDragLayer.tsx","src-new/components/lesson-task/drag-n-drop/dragging-containers/QuestionsBlockContainerDrag.tsx","src-new/components/lesson-task/drag-n-drop/dragging-containers/SingleQuestionContainerDrag.tsx","src-new/components/lesson-task/drag-n-drop/dropArea.tsx","src-new/components/lesson-task/preview-containers/QuestionsBlockContainer.tsx","src-new/components/lesson-task/preview-containers/SingleQuestionContainer.tsx","src-new/components/lesson-task/question-info-modal/QuestionInfoModal.tsx","src-new/components/lesson-task/question-search-container/question-search-bar/multiple-selector/MultipleSelector.tsx","src-new/components/lesson-task/question-search-container/question-search-bar/tree-selector/TreeSelector.utils.tsx","src-new/components/lesson-task/question-search-container/question-search-bar/tree-selector/TreeSelector.tsx","src-new/components/lesson-task/question-search-container/question-search-bar/QuestionSearchBar.tsx","src-new/components/lesson-task/question-search-container/question-search-result/search-result/SearchResult.constants.ts","src-new/components/lesson-task/question-search-container/question-search-result/search-result/SearchResult.tsx","src-new/components/lesson-task/question-search-container/question-search-result/QuestionSearchResult.tsx","src-new/components/lesson-task/questions-list-bar/bar-item-entities/BarItemDescription.tsx","src-new/components/lesson-task/questions-list-bar/bar-item-entities/BarItemIcon.tsx","src-new/components/lesson-task/questions-list-bar/QuestionsListBar.tsx","src-new/components/lesson-task/task-config-container/tasks-questions-list/TasksQuestionsList.tsx","src-new/components/lesson-task/task-config-container/TaskConfigContainer.tsx","utils/sortLessons.ts","store/actions/courseLessons.ts","store/actions/course.ts","src-new/components/hard-modal/HardModal/index.ts","src-new/components/hard-modal/HardModal/HardModal.tsx","src-new/components/new-subjects/popups/create-question-popup/CreateQuestionPopup.tsx","src-new/components/new-subjects/popups/create-question-popup/index.ts","src-new/components/new-subjects/popups/lesson-popup/MaterialsTab/MaterialsTab.tsx","src-new/components/new-subjects/popups/lesson-popup/OnlineLessonTab/OnlineLessonTab.tsx","src-new/components/new-subjects/popups/lesson-popup/OnlineLessonTab/utils.ts","src-new/components/new-subjects/popups/lesson-popup/ProgressTab/ProgressTab.tsx","src-new/components/new-subjects/popups/lesson-popup/StudentTaskTab/StudentTaskTab.tsx","src-new/components/new-subjects/popups/lesson-popup/TeacherTaskTab/TeacherTaskTab.tsx","src-new/components/new-subjects/popups/lesson-popup/index.ts","src-new/components/new-subjects/popups/lesson-popup/LessonPopup.tsx","src-new/components/new-subjects/popups/search-questions-popup/index.ts","src-new/components/new-subjects/popups/search-questions-popup/SearchQuestionsPopup.tsx","src-new/components/new-subjects/popups/student-tasks-view-popup/StudentTasksViewPopup.tsx","src-new/components/new-subjects/popups/student-tasks-view-popup/index.ts","src-new/components/new-subjects/popups/task-popup/index.ts","src-new/components/new-subjects/popups/task-popup/TaskPopup.tsx","src-new/components/layouts/Modals/Modals.config.ts","api/services/questionBank.ts","api/services/studentTasks.ts","store/actions/studentTasks.ts","api/services/marks/changeAssignmentMark.ts","api/services/marks/deleteTeacherMarks.ts","store/actions/marks.ts","api/services/marks/createTeacherMarks.ts","api/services/marks/changeTeacherMarks.ts","api/services/marks/getTransferredMarks.ts","utils/date.ts","types/user.ts","fsd/entities/materials/model/materialsApi.ts","fsd/entities/materials/model/materialsActions.ts","fsd/entities/materials/model/normalizers/questions/insertWordsQuestionNormalizer.ts","fsd/entities/materials/model/normalizers/questions/trueFasleQuestionNormalizer.ts","fsd/entities/materials/model/normalizers/questions/questionNormalizer.ts","fsd/entities/materials/model/normalizers/questions/testQuestionNormalizer.ts","fsd/entities/materials/model/normalizers/questions/textQuestionNormalizer.ts","fsd/entities/materials/model/materialsReducer.ts","fsd/entities/materials/model/normalizers/meta/normalizeMaterialsMeta.ts","fsd/entities/materials/ui/EmptyTrainerCard/EmptyTrainerCard.tsx","fsd/entities/materials/ui/Exercise/MultiplyAnswerExercise/MultiplyAnswerExercise.tsx","fsd/entities/materials/ui/Exercise/InsertWordsExercise/InsertWordsExercise.config.ts","fsd/entities/materials/ui/Exercise/InsertWordsExercise/InsertWordsExercise.utils.ts","fsd/entities/materials/ui/Exercise/InsertWordsExercise/InsertWordsExercise.tsx","fsd/entities/materials/ui/Exercise/OpenAnswerExercise/OpenAnswerExercise.tsx","fsd/entities/materials/ui/Exercise/SingleAnswerExercise/SingleAnswerExercise.tsx","fsd/entities/materials/ui/Exercise/Exercise.tsx","fsd/entities/materials/utils/checkAnswerData.ts","fsd/entities/materials/utils/compareSearchBlocksAndCreateRequestParams.ts","fsd/entities/materials/utils/getInsertWordsPreviewHtml.ts","store/actions/calendarPlan.ts","api/services/meetingFiles.ts","store/actions/meetingFiles.ts","src-new/components/lms-elements/Tooltip/Tooltip.types.ts","api/services/attendance/getLessonAbsence.tsx","store/actions/attendance.ts","store/actions/educationalPlan.ts","api/services/course/blockCourse.ts","api/services/course/deleteCourse.ts","api/services/course/getCanFillCourseList.ts","api/services/course/getCourseDetails.ts","api/services/course/getCourses.ts","api/services/course/patchCourse.ts","api/services/course/patchThemesOrdering.ts","api/services/course/postCourse.ts","api/services/course/publishCourse.ts","components/Task/utils.ts","containers/ActiveClasses/ActiveClasses.constants.ts","api/services/courseGroups/getCourseGroupDetails.ts","api/services/courseGroups/getCourseGroups.ts","api/services/courseGroups/getCourseGroupsByAcademicYear.ts","api/services/courseGroups/getCourseGroupsByCourse.ts","api/services/courseGroups/getCourseGroupsBySubjectAndYear.ts","api/services/courseGroups/getCourseGroupStudents.ts","api/services/courseGroups/getPeriods.ts","api/services/courseGroups/getTopics.ts","api/services/courseGroups/patchCourseGroups.ts","src-new/components/lms-elements/PerformanceTable/types/shared.types.ts","App/constants.ts","utils/createUrlQuery.ts","api/services/news/news/changeNewsElementsOrdering.ts","api/services/news/newsElement/createNewsElements.ts","api/services/news/newsElement/deleteNewsElements.ts","api/services/news/newsFile/createNewsFile.ts","api/services/news/newsFile/deleteNewsFile.ts","store/actions/news.ts","api/services/news/news/getUnreadNewsStatus.ts","api/services/news/news/createNews.ts","api/services/news/news/getNewsById.ts","api/services/news/newsElement/updateNewsElements.ts","api/services/news/news/getNews.ts","api/services/news/news/updateNews.ts","api/services/news/news/deleteNews.ts","utils/cookies.ts","utils/token.ts","constants/apiMethods.ts","pages/CodifierPage/utils.ts","components/DropdownWithActions/DropdownWithActions.types.ts","components/DropdownWithActions/DropdownWithActions.tsx","components/ThemeTooltip/ThemeTooltip.tsx","components/CodifierDropdownGrade/CodifierDropdownGrade.tsx","components/CodifierDropdownSection/CodifierDropdownSection.tsx","components/SubjectName/SubjectName.tsx","components/ThemeCodifier/ThemeCodifier.tsx","components/Codifier/ReplaceWindow/ReplaceWindow.tsx","components/Codifier/Codifier.tsx","components/Codifier/utils.ts","store/actions/questionCreate.ts","api/services/dashboardStudentSchedule/index.ts","store/actions/studentSchedule.ts","api/services/file.ts","store/actions/groupActions.ts","api/services/meeting/getMeetingFiles.ts","api/services/meeting/getMeetingTemplateFiles.ts","store/actions/meeting.ts","api/services/meeting/getMeetingRecordings.ts","api/services/meeting/patchMeetingRecording.ts","api/services/meeting/createMeetingFile.ts","api/services/meeting/deleteMeetingFile.ts","api/services/meeting/changeMeetingFile.ts","api/services/homework/deleteStudentTask.ts","api/services/homework/fetchAssignedAndOnCheckHomeworks.ts","api/services/homework/fetchHomeworks.ts","api/services/homework/getAssignedHomeworks.ts","api/services/homework/getAssignmentProgressPreview.ts","api/services/homework/getHomeworkPreviewBeetweenDates.ts","api/services/homework/getHomeworksBetweenDates.ts","api/services/homework/getProgressesStatistics.ts","api/services/homework/getStudentsTasks.ts","api/services/homework/getStudentsTasksPreview.ts","api/services/homework/putStudentTask.ts","utils/questions.ts","store/reducers/error.ts","types/schedule.ts","api/services/lesson/getMissedLesson.ts","store/actions/lessonSchedule.ts","api/services/lesson/patchMissedLesson.ts","store/actions/courseThemes.ts","api/services/proctoring/changeEventRoom.ts","api/services/proctoring/createEventRoom.ts","api/services/proctoring/deleteEventRoom.ts","api/services/proctoring/getEventRoomDetails.ts","api/services/proctoring/getEventRooms.ts","api/services/proctoring/getEvents.ts","api/services/proctoring/getProctors.ts","api/services/lessonTask.ts","types/events.ts","store/actions/user.ts","api/services/user.ts","api/services/calendarPlan/createCalendarPlan.ts","api/services/calendarPlan/createCalendarPlanPeriod.ts","api/services/calendarPlan/createSchoolHolidays.ts","api/services/calendarPlan/deleteCalendarPlan.ts","api/services/calendarPlan/deleteCalendarPlanPeriod.ts","api/services/calendarPlan/deleteSchoolHolidays.ts","api/services/calendarPlan/getAllCalendarPlans.ts","api/services/calendarPlan/getCalendarPlan.ts","api/services/calendarPlan/patchCalendarPlan.ts","api/services/calendarPlan/patchCalendarPlanPeriod.ts","api/services/calendarPlan/patchSchoolHolidays.ts","store/actions/notifications.ts","api/services/notifications.ts","store/actions/auth.ts","api/services/materials.ts","fsd/shared/ui-kit/BooleanStatusIndicator/BooleanStatusIndicator.tsx","fsd/shared/ui-kit/CardWrapper/CardWrapper.tsx","fsd/shared/ui-kit/charts/GoogleChartWrapper/GoogleChartWrapper.config.ts","fsd/shared/ui-kit/charts/GoogleChartWrapper/GoogleChartWrapper.tsx","fsd/shared/ui-kit/ChartsLegendItem/ChartsLegendItem.tsx","fsd/shared/ui-kit/CollapseWithButton/CollapseWithButton.tsx","fsd/shared/ui-kit/EmptyData/EmptyData.tsx","fsd/shared/ui-kit/FractionContent/FractionContent.tsx","fsd/shared/ui-kit/KinescopeVideo/KinescopeVideo.utils.ts","fsd/shared/ui-kit/KinescopeVideo/KinescopeVideo.tsx","fsd/shared/ui-kit/MultipleSelector/MultipleSelector.tsx","fsd/shared/ui-kit/ProgressBar/ProgressBar.tsx","fsd/shared/ui-kit/TableBorderless/TableBorderless.config.ts","fsd/shared/ui-kit/TableBorderless/TableBorderless.tsx","fsd/shared/ui-kit/TextButton/TextButton.tsx","fsd/shared/ui-kit/UserAvatar/UserAvatar.tsx","fsd/shared/ui-kit/UserInfo/UserInfo.tsx","fsd/shared/ui-kit/UserListItem/UserListItem.tsx","src-new/components/layouts/Modals/Modals.utils.ts","types/file.ts","api/services/lesson/getLessonDetails.ts","api/services/lesson/getLessons.ts","api/services/lesson/handleLesson.ts","src-new/utils/message/setMessage.ts","src-new/constants/authUrl.ts","api/services/educationalPlan/deleteEducationalPlan.ts","api/services/educationalPlan/deleteEducationalPlanItem.ts","api/services/educationalPlan/editEducationalPlanItem.ts","api/services/educationalPlan/getAllEducationalPlans.ts","api/services/educationalPlan/getEducationalPlan.ts","api/services/educationalPlan/patchEducationalPlan.ts","api/services/educationalPlan/postEducationalPlan.ts","api/services/notes.ts","store/actions/notes.ts","hooks/useQuery.ts","store/reducers/lessonTask.ts","api/services/lessonSchedule/getLessonSchedule.ts","api/services/lessonSchedule/getMeetingJoinRedirect.ts","api/services/lessonSchedule/handleLessonSchedule.ts","store/normalizers/answerAttempt/normalizeAnswerAttempt.ts","store/reducers/answerAttempts.ts","store/reducers/questionBank.ts","components/QuestionLocationDropdown/utils.ts","store/normalizers/educationalPlan/getNormalizedResponseData.ts","store/actions/alerts.ts","api/services/alerts.ts","api/services/attendance/changeAttendanceMark.tsx","api/services/attendance/changeStudentPresence.tsx","api/services/attendance/createAttendanceMark.tsx","api/services/attendance/deleteAttendanceMark.tsx","api/services/attendance/getLessonAttendance.ts","fsd/shared/assets/icons/camera.svg","fsd/shared/assets/icons/crown-icon.svg","fsd/shared/assets/icons/cup-icon.svg","fsd/shared/assets/icons/like-icon.svg","fsd/shared/assets/icons/monitor-play.svg","fsd/shared/assets/icons/star-icon.svg","fsd/shared/assets/icons/trash.svg","fsd/shared/assets/icons/wreath-icon.svg","fsd/shared/assets/images/big-og-logo.svg","fsd/shared/assets/images/content-loader.svg","fsd/shared/assets/images/empty-data.png","fsd/shared/assets/images/sleeping-owl.png","fsd/shared/assets/images/two-people-looking-for.png","store/actions/staffProfile.ts","constants/cypress/codifier-page.ts","components/AttendanceMark/AttendanceMark.tsx","constants/errors.ts","types/educationalPlan.ts","api/services/schedule/getScheduleByDateRange.ts","api/services/schedule/getUserScheduleByDateRange.ts","store/actions/schedule.ts","store/actions/revisionQuestion.ts","api/services/meta.ts","store/normalizers/meta/index.ts","store/actions/meta.ts","api/services/certificate/medicalCerificate.ts","store/actions/medicalCertificate.ts","store/reducers/studentTasks.ts","store/actions/adaptation.ts","api/services/adaptation.ts","src-new/components/lesson-task/LessonTaskPage.types.ts","pages/QuestionCreationPage/utils.ts","api/services/token/tokenManagement.ts","utils/materials/checkIsExerciseFull.ts","utils/materials/createDefaultMaterial.ts","utils/materials/filterMaterials.ts","utils/materials/getExerciseQuestions.ts","utils/materials/getFiles.ts","utils/materials/getFilesForPatch.ts","utils/materials/getMaterialsDataForPost.ts","utils/materials/getMaterialsFilesPost.ts","utils/materials/getMaterialsFilesPostArray.ts","utils/materials/getMinIdForFields.ts","utils/materials/getTempFiles.ts","utils/materials/getTypeOfMaterials.ts","utils/materials/materialFormValidation.ts","utils/materials/normalizeMaterialsData.ts","pages/QuestionBankPage/types.ts","constants/cypress/question-bank-page.ts","hooks/useOuterClickField.ts","api/services/subject.ts","store/actions/subject.ts","api/services/assignment/getAssignmentMarks.ts","pages/AcademicPerformance/utils.ts","store/reducers/meetingFiles.ts","api/services/student.ts","fsd/entities/online-lessons/ui/OnlineLessonTag/OnlineLessonTag.config.ts","fsd/entities/online-lessons/ui/OnlineLessonTag/OnlineLessonTag.tsx","fsd/features/online-lessons/EnterToOnlineLesson/ui/MeetingEnterButton/MeetingEnterButton.tsx","fsd/entities/online-lessons/ui/NotificationCard/NotificationCard.tsx","fsd/entities/online-lessons/ui/NotificationTimeIndicator/NotificationTimeIndicator.tsx","api/services/periodMark/getPeriodMark.ts","api/services/periodMark/getPeriodMarkFinal.ts","api/services/periodMark/patchPeriodMark.ts","store/actions/periodMark.ts","api/services/answerAttempt.ts","api/services/courseThemes.ts","src-new/components/lms-elements/Mark/Mark.tsx","pages/LessonCard/utils.ts","utils/studentsTasks.ts","utils/answerAttempt.ts","utils/searchBlocks.ts","api/services/homework/postStudentTask.ts","store/actions/question.ts","api/services/question/getQuestionsForReview.ts","api/services/question/getQuestionsOnRevision.ts","api/services/monitoring.ts","store/actions/monitoring.ts","utils/insertItemIntoArray.ts","store/actions/student.ts","api/services/groupActions/actionDetails.ts","api/services/groupActions/createActionProgress.ts","api/services/groupActions/getActionCreate.ts","api/services/groupActions/getActionProgress.ts","api/services/groupActions/getActionStudents.ts","store/normalizers/groupActions/detailsData.ts","store/normalizers/groupActions/listActions.ts","store/normalizers/groupActions/tableData.ts","hooks/useFormError.tsx","api/services/attendance/getAttendanceMarks.ts","api/services/educationalPlan/getEducationalParallels.ts","containers/ActiveClasses/utils.ts","store/normalizers/educationalPlan/getNormalizedItemsMap.ts","api/services/revisionQuestion/createRevisionQuestion.ts","api/services/revisionQuestion/deleteRevisionQuestion.ts","api/services/revisionQuestion/updateRevisionQuestion.ts","utils/url.ts","hooks/useWindowResize.tsx","src-new/components/students-schedule/lesson-type-tag/LessonTypeTag.tsx","src-new/components/new-subjects/cols-tabs/lessons-col-tabs/LessonsColTabs.types.ts","src-new/components/new-subjects/cols-tabs/lessons-col-tabs/LessonsColTabs.tsx","src-new/components/new-subjects/cols-tabs/themes-col-tabs/ThemesColTabs.tsx","src-new/components/new-subjects/entities/empty-list/EmptyList.tsx","src-new/components/new-subjects/entities/files-container/FilesContainer.tsx","src-new/components/new-subjects/entities/new-course-card/lesson-info/LessonInfo.tsx","src-new/components/new-subjects/entities/new-course-card/NewSubjectsCard.tsx","src-new/components/new-subjects/entities/subjects-elements-skeleton/SubjectsElementsSkeleton.tsx","src-new/components/new-subjects/entities/warning-sign/WarningSign.tsx","src-new/components/new-subjects/modals/add-lesson-modal/AddLessonModal.tsx","src-new/components/new-subjects/modals/edit-lesson-modal/EditLessonModal.constants.ts","src-new/components/new-subjects/modals/edit-lesson-modal/EditLessonModal.tsx","src-new/components/new-subjects/modals/library-modal/LibraryModal.tsx","src-new/components/new-subjects/modals/teachers-info-modal/TeachersInfoModal.config.ts","src-new/components/new-subjects/modals/teachers-info-modal/TeachersInfoModal.tsx","src-new/components/new-subjects/progress/progress-bar/ProgressBar.tsx","src-new/components/new-subjects/progress/progress-bar-advanced/ProgressBarAdvanced.tsx","src-new/components/new-subjects/progress/progress-chart/ProgressChart.tsx","src-new/components/new-subjects/subjects-table-content/course-col-content/CourseColContent.tsx","src-new/components/new-subjects/subjects-table-content/lessons-col-content/LessonsColContent.tsx","src-new/components/new-subjects/subjects-table-content/topics-col-content/TopicsColContent.tsx","src-new/components/new-subjects/subjects-table-content/SubjectsTableContent.tsx","api/services/educationalPlan/createEducationalPlanItem.ts","store/reducers/newSubjects.ts","store/normalizers/educationalPlan/getNormalizedCalendarPlan.ts","store/normalizers/educationalPlan/getNormalizedEducationalPlan.ts","common/constants.ts","fsd/features/AddKinescopeVideo/AddKinescopeVideo.config.ts","utils/convertAttandanceStatus.ts","store/reducers/loader.ts","components/AttendanceMark/AttendanceMarkForm/AttendanceMarkForm.utils.ts","components/AttendanceMark/AttendanceMarkForm/AttendanceMarkForm.tsx","hooks/useLoader.tsx","store/reducers/homework.ts","pages/QuestionSearchPage/utils.ts","utils/getParallelsTitle.ts","store/normalizers/proctoring/normalizeEventRooms.ts","store/reducers/proctoring.ts","store/normalizers/proctoring/normalizeEventRoomsRange.ts","store/normalizers/proctoring/getProcotors.ts","store/normalizers/proctoring/getCourses.ts","store/normalizers/proctoring/getStudentEvents.ts","store/reducers/materials.ts","store/reducers/assignment.ts","store/normalizers/codifier/getCodifierMaps.ts","store/normalizers/codifier/getSubjectsMaps.ts","store/reducers/codifier.ts","fsd/features/AddKinescopeVideo/AddKinescopeVideo.utils.ts","fsd/features/AddKinescopeVideo/AddKinescopeVideo.tsx","hooks/useOuterClick.tsx","containers/StudentTask/RateButton/RateButton.tsx","containers/StudentTask/AnswerWrapper/AnswerWrapper.tsx","containers/StudentTask/utils.tsx","containers/StudentTask/AttemptDropdown/AttemptDropdown.utils.tsx","containers/StudentTask/AttemptDropdown/AttemptDropdown.tsx","containers/StudentTask/DraftComponent/DraftComponent.tsx","containers/StudentTask/DraftTime/DraftTime.tsx","containers/StudentTask/StudentTask.tsx","fsd/shared/hooks/use-remaining-time/useRemainingTime.utils.ts","fsd/shared/hooks/use-remaining-time/useRemainingTime.ts","fsd/shared/hooks/useLogout/useLogout.ts","store/actions/academicYear.ts","api/services/academicYear.ts","src-new/utils/date-n-time/getCurrentTime.ts","store/actions/error.ts","hooks/useErrorProcess.tsx","api/services/studentGroups/getStudentGroups.ts","api/services/staffProfile/staffProfile.ts","src-new/components/lesson-task/utils/getEmptyQuestion.ts","src-new/components/lesson-task/utils/getGroupedTasks.ts","src-new/components/lesson-task/utils/getInitialFilters.tsx","src-new/components/lesson-task/utils/getMappedQuestions.ts","src-new/components/lesson-task/utils/getQuestionDetails.ts","src-new/components/lesson-task/utils/isFiltersUpdated.ts","src-new/components/lesson-task/utils/getUpdatedQuestions.ts","src-new/components/lesson-task/utils/normalizeQuestionsOrder.ts","src-new/components/lesson-task/utils/stateManipulations.ts","src-new/components/lesson-task/utils/transferItem.ts","components/HomeworkTable/AssignedHomeWorkLine/AssignedHomeworkLine.tsx","components/HomeworkTable/HomeworkLine/HomeworkLine.tsx","components/HomeworkTable/HomeworkTable.tsx","components/HomeworkTable/utils.ts","fsd/entities/assignment/model/assignment-api.ts","fsd/entities/assignment/model/assignment-actions.ts","fsd/entities/assignment/model/assignment-reducer.ts","fsd/entities/online-lessons/model/onlineLessonsApi.ts","fsd/entities/online-lessons/model/onlineLessonsReducer.ts","store/actions/adaptationProgress.ts","api/services/adaptationProgress.ts","store/actions/edu.ts","api/services/edu.ts","store/actions/studentGroups.ts","components/StatusCard/StatusCard.tsx","components/HomeworkStatus/HomeworkStatus.tsx","utils/getMaxFileSizeBytes.ts","store/reducers/formError.ts","utils/presence.ts","store/actions/academicPerformance.ts","store/actions/file.ts","store/actions/activeClasses.ts","api/services/schoolPartner.ts","api/services/studentGroups/getStudentsGroupStatistics.ts","api/services/studentGroups/getStudentsGroupStatisticsTariffs.ts","api/services/studentGroups/getStudentGroupStatisticsParallels.ts","api/services/curatorDashboard.ts","store/actions/curatorDashboard.ts","store/actions/oauth.ts","api/services/oauth.ts","src-new/components/lms-elements/Tooltip/Tooltip.tsx","src-new/components/lms-elements/Tooltip/Toolptip.utils.ts","store/actions/createTask.ts","components/Task/TaskView/TaskView.tsx","components/Task/TaskDatePicker/TaskDatePicker.tsx","components/Task/TaskTimePicker/TaskTimePicker.tsx","components/Task/Task.tsx","containers/TaskBlock/TaskBlock.tsx","fsd/entities/navigation/utils/getNavigationMenuPages.ts","fsd/entities/navigation/utils/getNavigationOptionsButtons.ts","components/QuestionLocationDropdown/QuestionLocationDropdown.tsx","components/QuestionLocationDropdown/useQuestionLocationRows.tsx","src-new/containers/MaterialsPool/ExpandedMaterial/ExpandedMaterialExerciseContent/ExpandedMaterialExerciseContent.tsx","src-new/containers/MaterialsPool/ExpandedMaterial/ExpandedMaterialContent.tsx","fsd/entities/statistics-monitoring/model/statisticsMonitoringReduser.ts","fsd/entities/statistics-monitoring/utils/getCriteriaOptionsList.tsx","fsd/entities/profile/models/profile-api.ts","fsd/entities/profile/models/profile-actions.ts","fsd/entities/profile/models/profile-reducer.ts","hooks/useGetHomeworkFilters.tsx","hooks/useGetScrollPosition.tsx","types/assignment.ts","fsd/widgets/kinescope-video/KinescopeVideoCard/KinescopeVideoCard.tsx","fsd/entities/statistics-monitoring/ui/ComparativeMonthsSelector/ComparativeMonthsSelector.tsx","fsd/entities/statistics-monitoring/ui/CriteriaChart/CriteriaChart.config.ts","fsd/entities/statistics-monitoring/ui/CriteriaChart/CriteriaChart.constants.ts","fsd/entities/statistics-monitoring/ui/CriteriaChart/CriteriaChart.utils.ts","fsd/entities/statistics-monitoring/ui/CriteriaChart/CriteriaChart.tsx","fsd/entities/statistics-monitoring/ui/CriteriaCollapse/CriteriaCollapse.tsx","fsd/entities/statistics-monitoring/ui/CriteriaTableContent/CriteriaTableContent.tsx","fsd/entities/statistics-monitoring/ui/QuestionsCreatedContent/QuestionsCreatedContent.utils.ts","fsd/entities/statistics-monitoring/ui/QuestionsCreatedContent/QuestionsCreatedContent.tsx","fsd/entities/statistics-monitoring/ui/SummaryCriteriaChart/ChartTooltip.tsx","fsd/entities/statistics-monitoring/ui/SummaryCriteriaChart/SummaryCriteriaChart.tsx","fsd/entities/statistics-monitoring/ui/SummaryCriteriaChart/SummaryCriteriaChart.utils.ts","fsd/entities/statistics-monitoring/ui/TeacherWorkingSettings/TeacherWorkingSettings.tsx","fsd/entities/profile/utils/getFieldsError.ts","utils/convertError.ts","fsd/entities/profile/utils/getUpdatingErrors.ts","constants/date.ts","store/reducers/course.ts","store/reducers/groupActions.ts","src-new/utils/text/getNoun.ts","hooks/useGetThemeQuery.ts","utils/file.ts","hooks/useRole.tsx","utils/schedule.ts","store/reducers/educationalPlan.ts","components/Loader/Loader.tsx","components/GroupAvatars/GroupAvatars.tsx","assets/images/user-avatar.png","hooks/useGetShedulePeriod.tsx","utils/materials/checkIsMaterialChanged.ts","utils/materials/getMaterialsDataForPostNews.ts","utils/materials/getMaterialsFilesDeleteArray.ts","utils/homeworkStatus.ts","store/reducers/adaptationProgress.ts","store/reducers/calendarPlan.ts","store/reducers/news.ts","store/reducers/periodMark.ts","store/reducers/question.ts","store/normalizers/attendance/normalizeLessonAttendanceData.ts","store/reducers/attendance.ts","store/reducers/courseGroup.ts","store/normalizers/courseGroup/getCourseGroupMap.ts","store/reducers/courseLessons.ts","store/normalizers/lesson/normalizeCourseLesson.ts","store/normalizers/schedule/normalizeScheduleEvents.tsx","store/reducers/schedule.ts","containers/AssigningHomeworkForm/AssigningHomeworkForm.tsx","components/Codifier/index.ts","pages/StudentTasks/StudentTasks.utils.ts","fsd/shared/models/statisticsMonitoring.ts","utils/homework.ts","store/reducers/courseThemes.ts","store/reducers/meeting.ts","store/reducers/monitoring.ts","store/reducers/notes.ts","store/reducers/questionCreate.ts","store/reducers/student.ts","src-new/components/lms-elements/TestTask/Question/Expanded/CheckboxField/CheckboxField.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/DetailedAnswerFields/DetailedAnswerFields.tsx","src-new/components/lms-elements/CustomEditor/types/shared.types.ts","src-new/components/lms-elements/CustomEditor/components/ActionBlock/ActionBlockComponent/ActionBlockComponent.tsx","src-new/components/lms-elements/CustomEditor/components/ActionBlock/ActionBlock.renderer.ts","src-new/components/lms-elements/CustomEditor/components/OptionButton/OptionButton.tsx","src-new/components/lms-elements/CustomEditor/utils/addEntity.ts","src-new/components/lms-elements/CustomEditor/utils/addNewBlockAt.ts","src-new/components/lms-elements/CustomEditor/components/CodeBlockWrapper/CodeBlockWrapper.tsx","src-new/components/lms-elements/CustomEditor/utils/handlePastedText.ts","src-new/components/lms-elements/CustomEditor/utils/isPhraseSelected.ts","src-new/components/lms-elements/CustomEditor/utils/removeEntityFromSelection.ts","src-new/components/lms-elements/CustomEditor/components/ActionBlock/ActionBlockOption/ActionBlockOption.tsx","src-new/components/lms-elements/CustomEditor/components/BlockOption/BlockOption.tsx","src-new/components/lms-elements/CustomEditor/components/InlineOption/InlineOption.tsx","src-new/components/lms-elements/CustomEditor/hooks/useHandleCopyCut.tsx","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordDecorator/InsertWordDecorator.tsx","src-new/components/lms-elements/CustomEditor/components/InsertWord/AddInsertionPopUp/AddInsertionPopUp.tsx","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordPopUp/InsertWordOption/InsertWordOption.tsx","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordPopUp/InsertWordPopUp.tsx","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordPopUp/constants.ts","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordProvider/InsertWordProvider.types.ts","src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordProvider/InsertWordProvider.tsx","src-new/components/lms-elements/CustomEditor/utils/isRectAInRectB.ts","src-new/components/lms-elements/CustomEditor/utils/createRectRelativeToScroll.ts","src-new/components/lms-elements/CustomEditor/components/Latex/LatexDecorator/LatexDecorator.tsx","src-new/components/lms-elements/CustomEditor/components/OptionPopUpWrapper/OptionPopUpWrapper.tsx","src-new/components/lms-elements/CustomEditor/components/Latex/LatexPopUp/utils.ts","src-new/components/lms-elements/CustomEditor/components/Latex/LatexPopUp/LatexPopUp.tsx","src-new/components/lms-elements/CustomEditor/components/Latex/LatexOption/LatexOption.tsx","src-new/components/lms-elements/CustomEditor/utils/removeLatexEntity.ts","src-new/components/lms-elements/CustomEditor/components/Link/LinkDecorator/LinkWrapper/LinkWrapper.tsx","src-new/components/lms-elements/CustomEditor/components/Link/LinkDecorator/LinkDecorator.tsx","src-new/components/lms-elements/CustomEditor/components/Link/LinkPopUp/LinkPopUp.tsx","src-new/components/lms-elements/CustomEditor/components/Link/LinkOption/LinkOption.tsx","src-new/components/lms-elements/CustomEditor/components/OptionsGroupWrapper/OptionsGroupWrapper.tsx","src-new/components/lms-elements/CustomEditor/components/CustomEditor/CustomEditor.constants.tsx","src-new/components/lms-elements/CustomEditor/components/CustomEditor/CustomEditor.tsx","src-new/components/lms-elements/CustomEditor/components/CustomEditor/getBlockRenderer.ts","src-new/components/lms-elements/TestTask/Question/Expanded/EditorField/EditorField.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/MultipleAnswerFields/AddOptionButton/AddOptionButton.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/TextInputField/TextInputField.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/MultipleAnswerFields/MultipleAnswerFields.types.ts","src-new/components/lms-elements/TestTask/Question/Expanded/MultipleAnswerFields/MultipleAnswerFields.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/OpenAnswerFields/OpenAnswerFields.types.ts","src-new/components/lms-elements/TestTask/Question/Expanded/OpenAnswerFields/OpenAnswerFields.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/TextareaFieldWrapper/TextareaFieldWrapper.tsx","src-new/components/lms-elements/TestTask/Question/Expanded/utils.ts","src-new/components/lms-elements/TestTask/Question/Expanded/ExpandedQuestion.tsx","pages/QuestionCreationPage/QuestionsList/QuestionsList.tsx","pages/QuestionCreationPage/Questions/Questions.tsx","fsd/shared/ui/loaders/ContentLoader/ContentLoader.tsx","fsd/shared/ui/skeleton/app-skeleton-card/AppSkeletonCard.tsx","fsd/widgets/materials/MethodistTrainerCard/MethodistTrainerCard.tsx","fsd/features/materials/checkTrainingQuestion/ui/CheckTrainingQuestionButton/CheckTrainingQuestionButton.tsx","fsd/features/materials/checkTrainingQuestion/ui/CheckTrainingQuestionButton/CheckTrainingQuestionButton.utils.ts","fsd/features/materials/getNextTrainingQuestion/ui/NextTrainingQuestionButton/NextTrainingQuestionButton.tsx","fsd/widgets/materials/StudentContent/StudentTrainerStatistic/StudentTrainerStatistic.utils.ts","fsd/widgets/materials/StudentContent/StudentTrainerStatistic/StudentTrainerStatistic.tsx","fsd/widgets/materials/StudentContent/StudentContent.tsx","fsd/shared/models/materials/question.ts","fsd/widgets/materials/TeacherTrainingList/ExerciseInfoModal/ExerciseInfoModal.tsx","fsd/widgets/materials/TeacherTrainingList/ExerciseInfoModal/ExerciseInfoModal.utils.ts","fsd/widgets/materials/TeacherTrainingList/TeacherTrainingItem/TeacherTrainingItem.tsx","fsd/widgets/materials/TeacherTrainingList/TeacherTrainingList.tsx","fsd/pages/Lesson/TrainerTab/TrainerTab.tsx","fsd/features/onboarding/config/index.ts","fsd/features/onboarding/config/app.tsx","fsd/features/onboarding/config/home.tsx","fsd/features/onboarding/config/news.tsx","fsd/features/onboarding/config/library.tsx","fsd/features/onboarding/config/performance.tsx","fsd/features/onboarding/config/subjects.tsx","fsd/features/onboarding/config/schedule.tsx","fsd/features/onboarding/config/homeworks.tsx","fsd/features/onboarding/utils/getOnboardingPage.ts","fsd/features/onboarding/hooks/onboardingProvider.tsx","fsd/features/onboarding/hooks/useOnboarding.tsx","containers/CodifierSelector/context/CodifierContext.ts","containers/CodifierSelector/TopicElement/TopicElement.tsx","containers/CodifierSelector/BlockElement/BlockElement.tsx","containers/CodifierSelector/SectionElement/SectionElement.tsx","containers/CodifierSelector/ParallelElement/ParallelElement.tsx","containers/CodifierSelector/SubjectElement/SubjectElement.tsx","containers/CodifierSelector/utils.ts","containers/CodifierSelector/CodifierSelector.tsx","src-new/components/lms-elements/File/File.tsx","components/AddFiles/AddFiles.tsx","containers/OnlineLessonTab/FilesContainer/FilesContainer.tsx","containers/OnlineLessonTab/OnlineLessonTab.tsx","containers/OnlineLessonTab/utils.ts","components/AttendanceGarnitureStatus/AttendanceGarnitureStatus.tsx","containers/AttendanceLine/AttendanceLine.tsx","containers/AttendanceTab/AttendanceTab.tsx","types/notifications.ts","store/normalizers/notifications/normalizeNotification.ts","store/normalizers/notifications/normalizeArchiveNotifications.ts","store/reducers/notifications.ts","store/normalizers/notifications/normalizeNewNotifications.ts","containers/QuestionPool/utils.ts","containers/QuestionPool/QuestionPool.tsx","components/PropertyMenu/PropertyMenu.constants.ts","components/PropertyMenu/PropertyMenu.tsx","fsd/entities/navigation/model/navigationReducer.ts","pages/QuestionCreationPage/useEditorsToHtml.tsx","pages/QuestionCreationPage/useSubmit.tsx","components/Input/Input.tsx","components/StudentTab/StudentTab.tsx","src-new/components/library-page/utils/getPdfViewerUrl.ts","components/Timer/Timer.tsx","containers/AssignedHomeworkTable/AssignedHomeworkTable.tsx","fsd/app/notification/AppSocketNotifications/AppSocketNotifications.config.ts","fsd/app/notification/AppSocketNotifications/AppSocketNotifications.tsx","fsd/app/notification/AppSocketNotifications/AppSocketNotifications.utils.ts","fsd/widgets/online-lesson-notifications/OnlineLessonNotifications/NotificationItem/NotificationItem.tsx","fsd/features/online-lessons/NotificationTimer/hooks/useNotificationTimer.tsx","fsd/widgets/online-lesson-notifications/OnlineLessonNotifications/OnlineLessonNotifications.tsx","components/Alert/Alert.tsx","containers/ErrorModal/ErrorModal.tsx","fsd/shared/hooks/use-og-chat-widget/useOGChatWidget.ts","containers/WithChatwoot/WithChatwoot.utils.ts","containers/WithChatwoot/WithChatwoot.tsx","fsd/widgets/navigation/NavigationMenu/NavigationMenu.tsx","fsd/entities/navigation/hooks/useShowSidebar.ts","pages/Login/Login.tsx","pages/PasswordRecovery/PasswordRecovery.tsx","src-new/components/auth/NotAllowedModal/NotAllowedModal.tsx","src-new/components/auth/NotAllowedModal/index.ts","src-new/components/auth/ReAuthModal/ReAuthModal.tsx","src-new/components/auth/ReAuthModal/index.ts","src-new/components/auth/HttpInterceptor/index.ts","src-new/components/auth/HttpInterceptor/HttpInterceptor.tsx","src-new/components/layouts/Modals/index.ts","src-new/components/layouts/Modals/Modals.tsx","src-new/containers/AlertModal/AlertModal.tsx","components/PrivateRoute/PrivateRoute.tsx","i18n.ts","App/App.tsx","reportWebVitals.ts","index.tsx"],"names":["FetchStatus","api","createInstance","host","apiSso","ssoHost","apiMonitoring","monitoringHost","apiCommon","commonHost","HttpClient","setClient","OnBoardingHttpClient","ApiInterceptor","authStateResponder","callback","on403Logout","showErrorReportBtn","ApiResponder","interceptors","request","use","config","token","getAccessToken","isNoNeedToken","NO_TOKEN_SSO_PATHS","some","item","url","includes","headers","concat","withCredentials","error","Promise","reject","catch","err","_err$response","JSON","stringify","response","data","authSsoStateResponder","_error$response","_originalRequest$url","originalRequest","responseStatus","status","ssoRefreshUrl","postApiSsoRequest","link","body","post","then","res","_err$response2","getApiSsoRequest","get","_err$response3","getApiRequest","_err$response4","patchApiRequest","patch","_err$response5","postApiRequest","_err$response6","deleteApiRequest","params","delete","_err$response7","universalApiRequest","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","_err$response8","abrupt","sent","stop","_x","apply","arguments","EMPTY_ARRAY_10","_toConsumableArray","Array","EMPTY_ARRAY_4","EMPTY_ARRAY_3","EMPTY_ARRAY_2","EMPTY_ARRAY_1","E_COLORS","MAX_FILE_SIZE_MB","EXECUTION_TIMES_MAPPING","_EXECUTION_TIMES_MAPP","_defineProperty","ExecutionTimes","AT_HOME","IN_CLASS","ASSIGNMENT_LEVELS_MAPPING","_ASSIGNMENT_LEVELS_MA","AssignmentLevels","ADMINISTRATIVE","TEACHER","VERIFICATION_TYPE_MAPPING","_VERIFICATION_TYPE_MA","VerificationTypes","AUTO","MANUAL","TEST_LESSON_ID","E_QUESTION_TYPE","E_SKILLS_FILTERS","E_COMPLEXITY_OPTIONS","E_ANSWERS_TYPE","E_QUESTIONS_DIFFICULTY","E_QUESTION_TYPE_INFO","initialState","fetchStatus","INITIAL","academicPerformanceSlice","createSlice","name","reducers","reset","extraReducers","builder","addCase","getLessonScheduleAndAttendanceData","pending","state","FETCHING","fulfilled","payload","lessonIds","lessonSchedule","lessonAttendance","studentIds","eventRooms","FETCHED","lessons","students","reduce","lessonId","schedule","filter","_ref2","lesson","sort","a","b","moment","datetimeStart","diff","eventRoom","id","attendance","_ref3","verifySchedule","online","find","type","test","self","parent","selectedSchedule","date","format","studentMarks","map","studentId","studentAttendence","_ref4","student","isAbsentWithReason","AttendanceStatus","ABSENT_WITH_REASON","isAbsentDueIllness","ABSENT_DUE_ILLNESS","isAbsent","ABSENT","normalizeAcademicPerformance","rejected","ERROR","academicPerformanceReducer","actions","reducer","fetchAcademicYearStatus","academicYear","academicYearSlice","getAcademicYearAction","academicYearReducer","partnerStatistics","studentsStatistics","studentsStatisticsTariff","studentGroupStatisticsTariffs","gridCells","studentGroupStatistic","getActiveClassesStatus","activeClassesSlice","getActiveClassesAction","studentGroupStatistics","grid","Map","group","_classLetterAndNumber","title","classLetterAndNumberRegExp","exec","has","_grid$get","_studentsStatisticsTa","_studentsStatisticsTa2","newCells","_objectSpread","tariff","dateCreate","set","_studentsStatisticsTa3","_studentsStatisticsTa4","from","_ref5","_slicedToArray","sortGroupTitles","_ref6","sortGroupParallels","normalizeGridCells","studentGroupStatisticsParallels","parallels","classLetters","studentGroup","_groupNumberRegExp$ex","_cellGroup$title","_letterRegExp$exec","_cellGroup$title2","cellGroup","parallel","groupNumberRegExp","_parallels$get$classC","_parallels$get","_parallels$get$studen","_parallels$get2","newClassCount","classCount","newStudentCount","studentCount","Number","studentsCount","classLetter","letterRegExp","_classLetters$get$cla","_classLetters$get","_classLetters$get$stu","_classLetters$get2","classes","sortParallels","_ref7","sortClassLetters","studentGroupStatisticCells","activeClassesReducer","normalizeAdaptation","adaptationItems","label","adaptation","checked","done","adaptationCheckboxes","getAdaptationStatus","changeAdaptationStatus","adaptationReducer","getAdaptationAction","changeAdaptationAction","array","findFunction","index","replaceItem","curIndex","getStatus","postStatus","patchStatus","alertsList","alertsReducer","getAlertsListAction","setAlertReadAction","alert","logoutFetchStatus","authSlice","resetAuthErrors","setIsLoggedInAction","reAuthEmail","undefined","isLoggedIn","getUserInfoAction","email","fetchLogin","setAccessToken","access","setRefreshToken","refresh","fetchLogout","authBlackList","createTransform","newState","whitelist","authReducer","createTaskReducer","formValues","description","isTemplate","attemptQuantity","questions","addFormValuesStore","values","resetFormValuesStore","getCuratorDashboardStatus","absentStudents","absentTeachers","curatorDashboardSlice","getCuratorDashboardAction","curatorDashboard","usersId","usersInMeeting","user","courseGroup","flat","getAbsentStudentList","teachers","curator","teacher","lessonScheduleId","getAbsentTeacherList","usersInMeetingId","groupName","length","lessonName","courseName","firstName","lastName","photoUrl","hasWebcam","studentsInLesson","getLessons","curatorDashboardReducer","getParallelsStatus","eduReducer","getParallelsAction","fileset","files","fetchStatusDelete","fileReducer","deleteFileAction","_state$fileset","_state$fileset2","getCourseListStatus","getAuthorsStatus","deleteStatus","postBookStatus","patchBookStatus","postFileStatus","patchFileStatus","deleteFileStatus","setUrlStatus","booksList","bookListPaginate","selectedBook","bookTypesList","bookCoursesList","libraryTree","bookAuthorsList","bookAuthorsListPaginate","createdAuthor","editedAuthor","libraryReducer","LibService","_state$bookTypesList","push","_state$booksList","pagination","currentPage","results","slice","_ref8","message","_ref9","_ref10","_ref11","book","findIndex","courseId","typeId","bookTypes","booksQuantity","_ref12","_ref13","course","replace","_ref14","_ref15","_ref16","_state$bookAuthorsLis","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","transferredMarksStatus","transferredMarks","markReducer","createAssignmentAdditionalMarkAction","changeAssignmentAdditionalMarkAction","deleteAssignmentAdditionalMarkAction","getTransferredMarksAction","updateCertificateStatus","getCertificateStatus","postCertificateStatus","approvedCertificates","notApprovedCertificates","medicalCertificateReducer","getMedicalCertificatesAction","approved","notApproved","certificate","isApproved","createMedicalCertificateAction","updateMedicalCertificateAction","errors","entities","catalog","metaReducer","loadMetaAction","loadMetaCatalogAction","_state$catalog","_payload$catalogData","_state$catalog2","_state$catalog2$api","_payload$catalogData2","meta","arg","catalogData","_state$catalog3","list","_state$catalog4","_payload$catalogData3","_state$catalog5","_state$catalog5$api","_payload$catalogData4","loadMoreMetaCatalogAction","_state$catalog6","_payload$catalogData5","_state$catalog7","_state$catalog7$api","_payload$catalogData6","FETCHING_MORE","_state$catalog8","_state$catalog9","_state$catalog9$api","_state$catalog9$api$p","_state$catalog10","_payload$catalogData7","_state$catalog11","_state$catalog11$api","_payload$catalogData8","oauthStatus","oauthReducer","oauthAction","changePasswordAction","createAsyncThunk","ssoPasswordResetConfirm","password","newPassword","resetPasswordAction","_callee2","_context2","ssoPasswordResetValidate","_x2","_callee3","_context3","ssoPasswordReset","_x3","resetPasswordStatus","resetPasswordError","changePasswordStatus","changePasswordError","passwordRecoverySlice","setPasswordRecoveryEmail","action","passwordRecoveryEmail","resetPasswordRecoveryStatuses","resetPasswordRecoveryErrors","parse","_passwordRecoverySlic","passwordRecoveryReducer","revisionQuestion","revisionQuestionReducer","createRevisionQuestionAction","updateRevisionQuestionAction","deleteRevisionQuestionAction","updateProfileStatus","getProfilesStatus","getProfileByIdStatus","profile","usersProfiles","staffProfileReducer","getStaffProfilesAction","profiles","userRole","updateStaffProfileAction","getStaffProfileByIdAction","getStudentGroupsStatus","studentGroupsMap","studentGroupReducer","getStudentGroupsAction","result","getChartStatus","filterTree","wasReset","selectedDay","lessonSchedules","filters","chartData","lessonsInformation","studentScheduleReducer","ScheduleService","normalizeMethodistCourses","courseGroups","courseData","courseTitle","isBlockEdit","groups","groupTitle","normalizeTeacherCourses","_course$topicsQuantit","_course$lessonsQuanti","canEdit","canFill","topicsQuantity","lessonsQuantity","studentsQuantity","quantity","studentGroups","_group$progressesQuan","assignmentQuantity","progressesQuantity","nextAssignmentDeadline","nextProgressDeadline","courseAssignmentId","methodistSubjectStatus","subjectDetailsStatus","methodistSubjectsData","subjectsData","subjectsSlice","getCourseGroupDetailsAction","subject","courses","getSubjectDetailsAction","subjectDetails","getTeacherSubjects","_objectWithoutProperties","_excluded","teacherCourses","getMethodistSubjects","ordering","courseGroupsCount","getPrincipalSubjects","_excluded2","getCoursesBySubject","subjectId","isTeacher","subjectReducer","info","userReducer","changeAcademicYearAction","updatedInfo","combineReducers","assignemnt","newMaterials","newNavigation","onlineLessons","newAssignment","meetingFiles","alerts","staffProfile","homework","auth","lessonTask","file","materials","studentSchedule","newSubject","loader","passwordRecovery","periodMark","medicalCertificate","monitoring","courseTheme","courseLesson","note","formError","activeClasses","studentTasks","codifier","createTask","searchBlock","academicPerformance","answerAttempts","edu","notifications","adaptationProgress","questionsReviewRevision","meeting","educationalPlan","oauth","proctoring","news","library","calendarPlan","groupActions","statisticsMonitoring","persistConfig","key","storage","transforms","persistedReducer","persistReducer","store","configureStore","devTools","process","enhancers","middleware","getDefaultMiddleware","serializableCheck","persistor","persistStore","useAppDispatch","useDispatch","useAppSelector","useSelector","AppAreaChart","props","options","_props$type","_props$width","width","_props$height","height","onChartSelect","onChartReady","chartEvents","eventName","chartWrapper","google","chart","getChart","visualization","events","addListener","_jsx","Chart","chartType","AppSkeletonCustom","isFetching","zIndex","_useState","useState","_useState2","isShow","setIsShow","useEffect","className","style","ScheduleTimeline","intervalList","intervalHeight","intervalListLastIndex","_Fragment","children","timeItem","_jsxs","AppText","text","start","fontStyle","end","ScheduleCard","_props","card","onCardClick","CardContent","selectedCardId","onClick","event","stopPropagation","handleClick","SchedulesTooltip","arrowPosition","arrowBottom","TooltipContent","onClose","arrowStyle","useMemo","bottom","top","handleTooltipClose","handleTooltipClick","CloseBlue","AppDaySchedule","cardsList","ChartTooltipContent","handleTooltipOpen","handleChartSelected","needChart","_props$needCurrentTim","needCurrentTimeLine","_props$isLoading","isLoading","selectedCard","setSelectedCard","_useState3","_useState4","tooltipConfig","setTooltipConfig","_useState5","_useState6","chartTooltipConfig","setChartTooltipConfig","_useState7","_useState8","isChartTooltipVisible","setIsChartTooltipVisible","cardsContainer","useRef","tooltipContainer","chartTooltipContainer","normalizeCardsList","getTimeFromDate","datetimeEnd","SCHEDULE_CONFIG","PIXELS_PER_MINUTE","pixelsPerMinute","INTERVAL_DURATION","intervalDuration","CARD_WIDTH","cardWidth","CARD_OFFSET","cardsOffset","TOOLTIP_OFFSET","INTERVALS_COUNT","intervalsCount","SCHEDULE_PADDING_TOP","CHART_WIDTH","currentTime","getCurrentTime","gettingCurrentTime","setInterval","clearInterval","timeIntervals","starts","getMomentFromString","minTimeInList","getMinTime","minDefaultTime","defaultStartTime","getDifferentInMinutes","getTimeline","intervalStartTime","lastIntervalEnd","overtimeLessonsEnds","lastOvertimeLessonTime","getMaxTime","isTimeInInterval","lastIntervalListIndex","addMinutesToTime","getCardsRows","rows","emptyCard","longLessons","forEach","interval","intervalIndex","lessonInterval","isIntervalContainsLessonFully","isIntervalContainsInterval","isIntervalContainsLessonPartially","lessonDuration","lessonStartOffset","countOfOverlays","Math","ceil","i","intervalIndexList","cardInterval","long","longCardIndex","spliceIndex","cardIndex","splice","getCurrentTimeTopOffset","cardsRowMaxLength","max","Object","chartOptions","countList","legend","hAxis","textPosition","gridlines","color","minValue","maxValue","baselineColor","vAxis","chartArea","backgroundColor","stroke","strokeWidth","colors","areaOpacity","orientation","tooltip","ignoreBounds","isHtml","trigger","pointSize","pointsVisible","crosshair","getCardTopOffset","timeStart","offset","getCardsMaxCountInRow","current","clientWidth","getOffsetMultiplier","MULTIPLIER","hasOnceChanged","capacity","counter","round","getCardLeftOffset","cardsMaxCountInRow","ref","position","visibility","left","SchedulesCard","coordinate","handleCardClick","_cardsContainer$curre","_cardsContainer$curre2","_tooltipContainer$cur","_tooltipContainer$cur2","newCoordinate","cardLeft","cardHeight","cardTop","scrollContainer","parentElement","tooltipElement","firstElementChild","childNodes","tooltipElementWidth","scrollLeft","offsetLeft","offsetWidth","offsetHeight","chartWidth","rightOffset","needReplaceVertically","clientHeight","canPlacedRight","getCoordinates","transform","appAreaChartData","arr","role","p","html","startIndex","endIndex","slicedChartData","getChartData","hoverClass","maxCount","dataTable","getDataTable","getSelection","row","_chartData$find","YValue","getValue","XValue","_cardsContainer$curre3","_cardsContainer$curre4","_chartTooltipContaine","_chartTooltipContaine2","YOffset","XOffset","getButtonLoaderColor","CnAppCalendar","cn","AppButton","history","useHistory","_props$mainColor","mainColor","size","disabled","leftElem","rightElem","onButtonClick","theme","getButtonColor","colorPrimary","colorBorder","colorBgContainerDisabled","colorText","getAppButtonTheme","ConfigProvider","Button","prefixCls","isNoText","ErrorsCaptureWrapperUi","componentName","MethodCatchOn","PathCatchOn","location","pathname","LoaderIcon","isDisabled","AppButtonDropdown","buttonText","_params$size","_params$type","_params$disabled","_params$trigger","_params$menuPlacement","menuPlacement","DropdownContainer","onDropdownSelect","menuProps","items","e","Dropdown","menu","placement","dropdownRender","React","cloneElement","Space","SmallArrowIcon","AppCheckbox","check","setCheck","isChecked","isPartiallyChecked","onCheckbox","rest","Checkbox","indeterminate","onChange","target","Panel","Collapse","AppCollapse","_props$collapsible","collapsible","_props$expandIconPosi","expandIconPosition","defaultActiveKey","ghost","expandIcon","isActive","LittleArrow","header","content","AppScrollPaginateContainer","listInnerRef","currPage","setCurrPage","customClassName","maxPage","needReset","onScrollHandle","_props$maxHeight","maxHeight","onScroll","_listInnerRef$current","scrollTop","scrollHeight","AppFileUploader","_props$maxFileSize","maxFileSize","formats","handleFileUpload","fileInput","dispatch","maxFileSizeInBytes","getMaxFileSizeBytes","AppFontIcon","icon","accept","_e$target","_e$target$files","extra","needHideButtons","isFrontend","value","CnAppInput","inputTheme","colorError","AppInput","isSmall","onInputNumberChange","inputValue","Input","Password","getInput","CnAppDeclineAcceptModal","AppDeclineAcceptModal","setShow","onAcceptClick","onDeclineClick","acceptButtonTitle","declineButtonTitle","isNegative","isShowButtons","Modal","onCancel","open","footer","closeIcon","CloseIcon","AppDrawer","Drawer","AppModal","_props$footer","isModalOpen","setIsModalOpen","CnAppPaginateSelect","AppPaginateSelect","searchWord","setSearchWord","placeholder","mode","handleSelect","handleSearch","handleScroll","handleVisibleChange","Select","labelInValue","showSearch","filterOption","loading","notFoundContent","onSearch","onSelect","onPopupScroll","isLastPage","onDropdownVisibleChange","CnAppSelect","AppSelect","isBoldText","handleMultipleSelect","getPopupContainer","val","suffixIcon","Option","AppTreeSelect","defaultSelectedOptions","openedOptionsList","setOpenedOptionsList","selectedList","setSelectedList","defaultValuesIds","option","split","defaultValues","_selectedOption$child","_option$split","_option$split2","optionId","childId","selectedOption","selectedChild","sortedOptions","filteredOptions","unshift","maxTagCount","defaultValue","input","_String$toLowerCase","String","toLowerCase","tagRender","closable","getText","_selectedList$find","_selectedOption$child2","selectedItem","Tag","onMouseDown","preventDefault","marginRight","onDeselect","prevState","menuItemSelectedIcon","_item$children","handleDropdownClick","ArrowClick","child","handledItem","childToDelete","newArr","handleOptionSelect","setMessage","handleEmptyOptionSelect","join","CnAppSkeleton","AppSkeleton","_props$gap","gap","_props$count","count","_props$radius","radius","fill","styleItem","borderRadiusSM","Skeleton","active","AppProgressBar","_props$stepIconSize","stepIconSize","controlHeight","colorTextDescription","colorTextLabel","Steps","CnAppSwitch","AppSwitch","_props$withIcons","withIcons","Switch","checkedChildren","UncheckedIcon","unCheckedChildren","CheckedIcon","CnAppTable","AppTable","getActiveCellElementData","returnData","cellData","rowIndex","cell","cellIndex","AppTableCell","getActiveElementData","CnAppTableCell","subtitle","cellWidth","isFill","fillColor","isBoldTitle","noCanEmpty","isHover","isDeleteRow","isAddRow","isInput","customElem","setText","isCanHovered","isCanClick","isInputNumber","isEmptyDate","toString","defaultCellTitle","isEmptyInput","cellStyle","minWidth","maxWidth","background","returnActiveData","clickType","inputText","cellType","returnClickType","onCellClick","onRemoveClick","onEndEdit","getDefaultElem","isError","bordered","onBlur","currentTarget","isBold","TrashBasketIcon","_title$toString","PlusIcon","getElem","updateTableCellTitle","table","newTitle","_table$row","oldCell","newCell","changeCell","AppTabs","tabsList","activeTabKey","onTabClick","_props$tabPosition","tabPosition","activeKey","setActiveKey","handleTabClick","Tabs","CnAppRadio","AppRadio","Radio","CnAppRadioGroup","AppRadioGroup","selectedValue","Group","Paragraph","Typography","AppExpandableText","textStyle","expandText","ellipsis","maxRowsCount","expanded","setExpanded","classNameString","ellipsisConfig","expandable","symbol","showMore","textArray","getFormattedText","str","setExpandedText","Text","dayjs","locale","extend","updateLocale","months","monthRu","AppCalendar","buttonTitle","disabledDate","initialDate","onDateSelect","onButtonAction","calendarValue","setCalendarValue","disableButton","colorTextBase","Calendar","fullscreen","headerRender","monthOptions","clone","localeData","month","monthsShort","year","dropdownMatchSelectWidth","newYear","now","newMonth","view","ButtonViewEnum","CnAppDatepicker","AppDatePicker","ru","DatePicker","CalendarIcon","AppTimePicker","TimePicker","ScrollPaginateContainer","_listInnerRef$current2","_listInnerRef$current3","_listInnerRef$current4","_listInnerRef$current5","onEndReached","_props$onEndReachedTh","onEndReachedThreshold","horizontal","_props$paddingBottom","paddingBottom","isReached","setIsReached","flexDirection","_childrenNode$item$cl","_childrenNode$item","childrenNode","floor","ContentMaterialTypeEnum","QuestionSelectAction","downloadTxtFileFromUrlByLink","_url$split$reverse$","_url$split","_url$split$reverse","fileName","blob","axios","responseType","reverse","Blob","document","createElement","href","window","URL","createObjectURL","download","appendChild","click","removeChild","deleteEmptyParams","keys","getUid","c","r","random","isExist","isCheckZeroInNumber","isEmpty","isEmptyList","normalizeFiltersForSetAction","_item$option","_item$option2","field","condition","normalizeParamsForActions","otherParams","normalizeFilters","_item$option3","normalizeParams","getAnswersCountText","getNoun","getSkillsCountText","getCorrectAnswersCountText","getRightTaskTitle","numTask","replaceAssignmentValue","obj","newObj","entries","_value$singleQuestion","_value$searchBlocksLi","singleQuestionsList","assignment","searchBlocksList","getItemFromLocalStorage","_localStorage$getItem","localStorage","getItem","setItemToLocalStorage","setItem","LOCAL_STORAGE_NAME","getLastViewedLessonByCourse","dataString","setViewedLesson","newItem","getAllLastViewedLessons","getNearestLessonId","_lessons$find$id","_lessons$find","onlineLesson","testLesson","selfpreparationLesson","getCurrentDateByMoscow","sortedLessons","abs","getTabLink","tabId","getTabId","tabName","isStudent","getAssignedTasks","blockTasks","task","isPosted","getAllTasks","tasks","progresses","tasksWithoutAssignment","taskId","_homework$assignedTyp","_homework$deadlineTyp","taskTitle","taskType","isForMethodist","assignedDate","deadlineForComplete","assignedType","EAssignedTypes","DATE_TIME","deadlineType","EDeadlineTypes","assignedDelay","deadlineDelay","timeToComplete","allStudents","tasksWithAssignment","taskWithAllStudents","getHomeworkTableInitValues","assignmentProgress","repeatTaskForm","expelledStudents","allTasks","selectAll","studentTasksChecked","blocked","overdued","isAfter","repeatBlocked","studentValues","checkTask","currentProgress","bestProgress","progress","Infinity","blockCheckboxByExpelling","isBlocked","AssignmentProgressStatus","COMPLETED","ON_CHECK","addTaskToValues","newValues","removeTaskFromValues","taskInValues","studentTasksList","studentTask","getAssignmentTask","lessonAssignment","deferredAssignments","_assignedType","_deadlineType","deferredAssigned","assigned","getAssignmentProgressData","lessonHomeworks","assignments","_homework$teacherMark","_homework$title","marks","_mark$author","author","teacherMark","_mark$author2","deferred","_homework$title2","DEFERRED_ASSIGNMENT","errorsList","getTasksDate","dates","conferenceData","EDateTimeTypesList","TIME","startTimeDelay","NONE","timeEnd","endTimeDelay","getSubmitData","eventRoomId","createdDeferredAssignments","updatedDeferredAssignments","deletedDeferredAssignmentsIds","deletedAssignmentIds","selectedAssignments","getSelectedAssignments","unselectedAssignments","selected","deletedAssignmentProgress","getDeletedProgresses","deletedDeferredAssignment","selectedTask","_getAssignmentData","getAssignmentData","isTaskPosted","isSelectedAllStudents","selectedStudents","selectedDeferredAssignments","lastDeferredAssignment","selectedAssignmentProgress","lastAssignmentProgress","isCreate","isUpdateAssignment","isUpdateDeferredAssignment","isDeleteProgress","isSelectedAllUnchecked","isSelectedAllChecked","getCreatedDeferredAssignment","assignmentProgressStudents","newSelectedStudents","selectedDeferredAssignmentsStudents","progressStudents","oldDeferredAssignmentsStudents","isDeferredAssignmentChanged","x","isNeedUpdate","isNeedDelete","isLast","_assignment$students2","listHasChanged","_assignment$students","newList","selectedDeferredAssignment","progressesToDelete","sortByFullName","first","second","_selectedTask$teacher2","deleted","_selectedTask$assigne","_selectedTask$deadlin","_selectedTask$teacher","payloadTimeFormatter","_values$selectAll$fin","_values$students$filt","_values$students$filt2","acc","curr","blockedSelectedStudents","assignmentProgressList","Boolean","checkedTasksIds","uniqCheckedTasksIds","Set","_assignmentProgress$m","studentsDuplicates","ids","indexOf","duplicatedProgressesToDelete","_progresses$reduce","_ref26","parseQueryString","queryString","queryObj","queryStrSplitted","substring","idx","queryParamEntries","decodeURIComponent","decodeURI","isBetween","lastItem","plug","getDateWithDateOfWeek","formatDate","formatDayjsToTableDate","weekday","weekdaysRu","day","formatToAdditionalDays","holidays","additionalWorkingDays","listDatesToDayJs","_list$map","getPeriodsRangeDates","periodsTable","periods","_item$","_item$$title","_item$2","_item$2$title","startDayjs","formatTableDateToDayjs","endDayjs","getPeriodsDates","periodsRanges","periodsDaysList","period","daysByPeriods","isSame","addNewAdditionalDay","isWeekend","newHolidays","newAdditional","removeAdditionalDay","isSameDates","element","findAndRemoveItem","getUpdateAdditionalDaysParams","periodTable","_periodTable$length","_periodTable$periodTa","_periodTable$periodTa2","_periodTable$periodTa3","_periodTable$periodTa4","_periodTable$periodTa5","_periodTable$periodTa6","periodTableLastRowIndex","yearDaysCount","yearWeeksCount","periodsRangesDates","listDayjsToParamsDate","_list$map2","formatDayjsToParamsDate","allHolidays","holidaysSet","getAdditionalDaysTable","additionalDates","periodType","_Array","countPeriods","getColumnCount","holidayDatesList","headerRow","_holidayDatesList$ind","number","num","convertNumber","getTitle","range","newLastItem","getCalendarDataFromTable","borderDate","disableDatesType","currentDate","_currentCell$title","currentRow","isStartDate","currentCell","getDaysJsArray","startDayJS","isDayjs","endDayJS","currentDayJS","isBefore","add","getCountOfDaysAndWeek","daysArray","eduWeek","arrayLength","dayCount","isSaturday","isSunday","weekCount","changeTableDateAndDuration","activeCell","activeTableName","dateString","formatJSToTableDate","toDate","newTable","_counts$dayCount","_counts","_counts$weekCount","_counts2","startDate","endDate","counts","isRev","plusNumber","_table$row$title","cellDate","_table$row$title2","_table$row2","changeTableNumberOfDaysAndWeeksBetween","compareDates","higher","dayjsDate","disabledDateHigher","disabledDateLower","disabledRangeAndSameDates","sameDates","inRange","holidayHeaderRow","holidayFooterRow","isEmptyWeeksCount","_table$slice","slicedTable","_item$find","isEmptyHolidayName","_table$slice2","every","getHolidayRow","dateStart","dateEnd","delRowFromHolidayTable","addNewRowToHolidayTable","holidaysLength","getUpdateHolidayParams","_deleteEmptyParams","formatDateStart","getTableDateToParamsDate","formatDateEnd","filteredParams","getCreateHolidayParams","planId","_deleteEmptyParams2","getHolidayTable","schoolHolidays","minMax","periodHeaderRow","getUpdatePeriodParams","daysCount","weeksCount","updateStartEndDateAndCountOfDayWeeksPeriodTable","_ref$concat","lastRow","_item$1$title$toStrin","_item$2$title$toStrin","_item$3","_item$3$title","datesList","_getTotalCountOfDaysA","dayjsDates","daysCountList","weeksCountList","_dayjs$min","_dayjs$max","minDate","min","maxDate","previousValue","currentValue","getTotalCountOfDaysAndWeek","_Number","_item$4","_Number2","_item$5","newLastRow","updateCountOfDayWeeksPeriodTable","holidayTable","_periodTable$slice","_holidayTable$slice","slicedPeriodTable","slicedHolidayTable","slicedHolidayTableLength","holidayPeriodsDates","arrayDayJsToTable","_slicedHolidayTable$i","_slicedHolidayTable$i2","_slicedHolidayTable$i3","_slicedHolidayTable$i4","_slicedHolidayTable$i5","_slicedHolidayTable$i6","startHolidayTable","endHolidayTable","holidayPeriodsParamsDates","additionalWorkingDaysParamsDate","holidayPeriodsParamsDatesLength","_item$6","_item$7","_item$8","_item$8$title","_item$9","_item$9$title","newDaysCount","newWeekCount","startPeriodTable","endPeriodTable","periodDayJs","j","additionalWorkingDaysParamsDateLength","k","newPeriodDayJs","_getCountOfDaysAndWee","getPeriodTable","_periods$length","_periods$","_periods","periodList","getRowCount","periodsLength","yearDateStart","yearDateEnd","periodTitle","getPeriodTitle","getPeriodRow","footerRow","getPeriodFooterRow","formatAcademicYears","years","formatYears","getSafetyHtml","DOMPurify","sanitize","ADD_ATTR","paramsConfig","modals","parseQueryParamsToObject","search","paramsType","paramArr","param","_param$replace$split","_param$replace$split2","postCodifierParallel","grade","deleteCodifierParallel","parallelId","postCodifierSection","deleteCodifierSection","sectionId","postCodifierBlock","section","deleteCodifierBlock","blockId","postCodifierTopic","block","order","deleteCodifierTopic","topicId","_err$response9","postCodifierSkill","metasubject","_err$response11","deleteCodifierSkill","skillId","_err$response12","postCodifierMetasubject","_err$response13","deleteCodifierMetasubject","metasubjectId","_err$response14","patchCodifierParallel","_err$response15","patchCodifierSection","_err$response16","patchCodifierBlock","_err$response17","patchCodifierTopic","_err$response18","patchCodifierMetasubject","_err$response19","patchCodifierSkill","_err$response20","getCodifierSubjects","patchSectionOrdering","patchBlockOrdering","patchThemeOrdering","fetchCodifierDataAction","postCodifierParallelAction","deleteCodifierParallelAction","postCodifierSectionAction","_callee4","_context4","newSection","newOrdering","all","deleteCodifierSectionAction","_callee5","filteredOrdering","_context5","el","_x4","postCodifierBlockAction","_callee6","_context6","newBlock","_x5","deleteCodifierBlockAction","_callee7","_context7","_x6","postCodifierTopicAction","_callee8","_context8","newTopic","_x7","deleteCodifierTopicAction","_callee9","_context9","_x8","fetchCodifierSkillsDataAction","_callee10","_context10","_err$response10","postCodifierSkillAction","_callee11","_context11","_x9","deleteCodifierSkillAction","_callee12","_context12","_x10","postCodifierMetasubjectAction","_callee13","_context13","_x11","deleteCodifierMetasubjectAction","_callee14","_context14","_x12","patchCodifierParallelAction","_callee15","_context15","_x13","patchCodifierSectionAction","_callee16","parallelOrdering","oldParallel","newOrderingInCurrentSection","_context16","_x14","patchCodifierBlockAction","_callee17","sectionOrdering","oldSection","_context17","_x15","patchCodifierTopicAction","_callee18","oldBlock","newPlaceOrdering","_context18","_x16","patchCodifierMetasubjectAction","_callee19","_context19","_x17","patchCodifierSkillAction","_callee20","_context20","_x18","getCodifierSubjectsAction","getSubjectsInCodifierAction","getCodifierSubjectDataAction","getCodifierDataByTopicsAction","topics","getCodifierDataByTopics","CnPageLoader","PageLoader","memo","_ref$showLoading","showLoading","setTimeoutId","setTimeout","clearTimeout","Loader","getQuestionDetailsAction","questionId","getQuestionDetails","getLessonDataAction","getLessonDetails","getTaskDataAction","getTaskData","updateLessonTaskAction","taskData","assignedQuestions","assignedTasksListInitial","updateLessonTask","mappedInitialList","mappedHandlingQuestionsList","updatedQuestions","createdQuestions","deletedQuestionsIds","updatedAssignment","deletedAssignment","createdAssignment","getMappedQuestions","normalizeQuestionsOrder","getUpdatedQuestions","old","sameItemInNew","questionNumber","sameItemInUpdate","updateLessonTaskQuestion","t0","deleteLessonTaskQuestion","t1","createLessonTaskQuestion","t2","createLessonTaskAction","createLessonTask","getAssignedTasksAction","singleQuestionsIds","singleQuery","allSingleQuestionsList","question","_question$filters$id","createUrlQuery","include_ids","getQuestionsByQuery","getGroupedTasks","getQuestionsBySearchAction","questionNum","selectedBlock","skills_or","skills_and","answers_type","difficulty","questionsList","excludedQuestions","_selectedBlock$block","_selectedBlock$block$","_selectedBlock$block$2","excludeIds","skillsOr","skillsAnd","answersType","getSubjectsDataAction","getSubjectsData","getSubjectDataByIdAction","getSubjectDataById","setOpenedQuestionIdAction","createAction","setQuestionsStateAction","setSelectedBlockAction","deleteBlockAction","deleteTaskQuestionAction","questionsNum","createEmptyTaskQuestionAction","addCreatedQuestionAction","getLessonsStatistic","getCourseTree","_ref$role","getTopicsBySelectedCourse","_ref2$role","getLessonsBySelectedTopic","topic","_ref3$role","getTeacherProfile","getStudentsList","_params$currentPage","_params$limit","limit","setLearningMaterialViewed","getStudentsProgressList","getCourseGroupsLessons","_params$lessonType","lessonType","_params$currentPage2","_params$limit2","resetTeacherInfoAction","setSelectedCourseAction","setSelectedTopicIdAction","setSelectedLessonIdAction","getLessonsStatisticAction","NewSubjectService","getStudentsTreeByURLAction","_courseTree$common","_topicTree$find","selectedCourse","courseTree","lessonData","courseIdByLessonData","commonCoursesList","commonCourse","choiceCourse","additionalCourse","_commonCoursesList$fi","courseByCourseId","topicTree","lessonTree","common","choice","additional","isCurious","TARIFF_CURIOUS_TITLE","courseGroupTitle","recalculation","_item$lessons","selectedTopicId","getTeachersTreeByURLAction","_courseTree$find","_courseData$recalcula","_topicTree$find2","_item$lessons2","getStudentsCourseTreeAction","_courseTree$common2","_courseTree$choice","_courseTree$additiona","firstCourse","_courseTree$common$","getTeachersCourseTreeAction","getTreeByFirstItemsAction","selectedTopic","getTreeByKnownItemsAction","getStudentsTreeByTimeItemsAction","_yield$NewSubjectServ","currentTopic","getTeachersTreeByTimeItemsAction","_yield$NewSubjectServ2","getLessonsBySelectedCourseAndTopicTreeAction","lessonsTree","getTeacherProfileAction","setLearningMaterialViewedAction","getStudentsListAction","getStudentsProgressListAction","getCourseGroupsLessonsAction","handleLessonScheduleAction","_params$lessonSchedul","_lessonSchedules$crea","_lessonSchedules$crea2","isListExist","update","create","handleLessonSchedule","useCheckPackageVersion","handleWindowFocus","fetch","json","version","reload","console","addEventListener","removeEventListener","useCourseGroupQuery","useLocation","courseGroupId","URLSearchParams","groupId","isNaN","useFormLoading","statuses","useGetCourseQuery","query","useQuery","usePreventUnload","handler","eventListenerRef","returnValue","defaultPrevented","eventListener","_eventListenerRef$cur","call","useThrottle","delay","isThrottled","setIsThrottled","timeoutId","throttledCallback","useCallback","_path","_extends","assign","bind","source","prototype","hasOwnProperty","this","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgArrow","svgRef","titleId","viewBox","xmlns","d","strokeLinecap","ForwardRef","_rect","_path2","_path3","_path4","_path5","SvgCalendar","y","rx","SvgCalendarSmall","strokeLinejoin","SvgChecked","SvgClose","SvgGreenStat","fillRule","clipRule","SvgHistoryIcon","_path6","_path7","_path8","SvgLoader","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_path18","_path19","_path20","_path21","SvgLogo","SvgPen","SvgPlus","strokeMiterlimit","SvgRedArrow","SvgRedStat","SvgReplaceIcon","SvgSmallArrow","SvgSmallArrowLeft","SvgSmallArrowRight","SvgStrokeArrowRight","SvgTimeSmall","cx","cy","SvgTrashBasket","SvgUnchecked","SvgLogoText2","x1","y1","x2","y2","gradientUnits","stopColor","AnswersTypeEnum","PopUpType","getCourseGroupExpelledStudents","getCourseGroupDetails","getPeriodsAction","getPeriods","getCourseGroupExpelledStudentsAction","getTopicsAction","getTopics","getCourseGroupsByAcademicYearAction","getCourseGroupsByAcademicYear","getCourseGroupsBySubjectAndYearAction","getCourseGroupsBySubjectAndYear","getCourseGroupDetailsWithStudentsAction","getCourseGroupStudents","getCourseGroupsAction","_args8","getCourseGroups","getCourseGroupStudentsAction","getCourseGroupsByCourseAction","getCourseGroupsByCourse","patchCourseGroupsAction","patchCourseGroups","getAllEducationalPlanWithCourseGroupsAction","getAllEducationalPlans","getEducationalPlanWithCourseGroupsAction","getEducationalPlan","getPeriodTopicsAction","t3","t4","resetCourseGroupDataAction","getPeriodTopicsWithStudentAction","periodTopics","getGroupStatisticsAction","createMaterialAction","postMaterial","_value$tempFiles","tempFiles","materialIndex","material","materialId","patchFile","patchMaterialsOrdering","deleteMaterialAction","materialIds","filesForDelete","deleteMaterial","patchMaterialAction","patchMaterial","filesForPatch","_value$tempFiles2","postMaterialWithOrderingAction","_value$tempFiles3","replacedIds","patchMaterialWithOrderingAction","arrayPromises","_value$tempFiles4","postMaterialFileAction","createFile","FileTypes","COMMON","deleteMaterialFileAction","fetchDeleteFiles","clearMaterialsFilesAction","resetPostMaterialFileStatusAction","resetLastCheckedAnswerAction","resetMaterialsStatusesAction","extensionRegExp","createTempMaterials","materialsFiles","restParams","fileMap","materialFiles","uploadedFile","filesForTempFileset","materialFile","_extensionRegExp$exec","fileExtension","fileUrl","isAvailableToStudents","shouldUseOnConference","_fileMap$index","checkExerciseAnswerAction","checkExerciseAnswer","answerData","answers","isCorrect","getExercisesCorrectAnswersAction","getExercisesCorrectAnswers","blockEditMaterialsAction","handleLesson","getMaterialsCreationPageData","exerciseQuestionsIds","getExerciseQuestions","getQuestions","getMaterialsTabData","getMaterialsDataAction","materialType","isMaterialCreationPage","getMaterials","getMaterialFile","addNewQuestionForExerciseMaterialAction","useDownloadTxtFile","_ref$current","downloadTxt","_event$target","txtElems","querySelectorAll","elem","_ref$current2","useQueryPopupsParams","updateModalListInUrl","updatedModalList","isReplaceHistory","searchParams","openPopup","modal","locationSearch","parsedQueries","newModalList","formattedModalList","closeLastPopup","modalList","indexToOpen","findLastIndex","replaceLastPopup","isCurrentPopup","_parsedQueries$modals","modalTypesList","useGetQuestionInfo","questionDetails","skills","totalAnswersCount","answerOptions","true_false","correctAnswersCount","answer","correct","questionTitle","insert_words","getInsertWordsPreviewHtml","authorFullName","patronymic","trim","difficultyText","correctAnswersInfo","statistic","answersInfo","topicsInfo","skillsInfo","skill","correctAnswersList","_answerOptions","_answerOptions2","acceptFile","acceptText","percentOfScore","getAllAnswers","rawAnswer","convertFromRaw","getPlainText","essayAnswerFormat","essay","getEssayAnswerFormat","useGetQuestionModalControls","leftBlock","rightBlock","_props$openedQuestion","openedQuestionId","questionsIdsToPaginate","_leftBlock$searchBloc","_leftBlock$searchBloc2","_leftBlock$searchBloc3","_rightBlock$searchBlo","_rightBlock$searchBlo2","_rightBlock$searchBlo3","listFromLeftBlock","questionsContentList","questionContent","_item$questionContent","listFromRightBlock","_item$questionContent2","hasIncludeButton","_rightBlock$searchBlo4","_leftBlock$searchBloc4","_rightBlockSelected$f","_leftBlockSelected$fi","rightBlockSelected","leftBlockSelected","hasExcludeButton","_rightBlock$searchBlo5","_leftBlock$searchBloc5","_rightBlockSelected$f2","_leftBlockSelected$fi2","excludeQuestionsIds","hasAddButton","_leftBlock$searchBloc6","hasRemoveButton","_rightBlock$singleQue","canPaginateRight","canPaginateLeft","useQuestionsDrop","activeQuestionNumber","handleDropBlock","areaName","transferData","fromObject","toObject","_transferQuestionsBlo","transferQuestionsBlock","filteredObject","updatedObject","right","handleDropSingle","_transferSingleQuesti","transferSingleQuestion","handleDropSingleBlock","_transferSingleQuesti2","transferSingleQuestionFromBlock","useQuestionsMove","setState","getUpdatedData","_list$searchBlocksLis","_item$filters$exclude","_item$filters","filteredIds","onBlockQuestionMove","updatedData","onAddSingleQuestion","leftBlockSingleSelected","leftQuestionSelected","_leftBlock$singleQues","filteredBlocksList","_leftBlockSingleSelec","rightBlockSingleQuestionsList","leftBlockSingleQuestionsList","onRemoveSingleQuestion","rightQuestionSelected","_rightQuestionSelecte","_rightQuestionSelecte2","_rightBlock$singleQue2","leftData","isFiltersUpdated","_rightQuestionSelecte3","useCreateQuestionPopup","Popup","getQuery","_params$purpose","purpose","isTrainer","HARD_MODAL_ENUMS","isCurrent","CREATE_QUESTION","openCreateQuestionPopup","closeLastCreateQuestionPopup","replaceLastCreateQuestionPopup","useLessonsPopup","_params$tab","tab","openLessonPopup","closeLastLessonPopup","replaceLastLessonPopup","LESSON","useLessonsPopupState","popups","useGetPopupsState","popup","useSearchQuestionsPopup","taskTypeId","openSearchQuestionsPopup","closeLastSearchQuestionsPopup","replaceLastSearchQuestionsPopup","SEARCH_QUESTIONS","useStudentTasksViewPopup","TASKS_VIEW","openStudentTasksViewPopup","closeLastStudentTasksViewPopup","replaceLastStudentTasksViewPopup","useTaskPopup","TASK","openTaskPopup","closeLastTaskPopup","replaceLastTaskPopup","useGetLessonHomeworks","lessonInfo","assignmentProgresses","_useRole","useRole","homeworkTitle","_progress$filter","_progress$filter2","homeworksCount","completedHomeworksCount","unissuedHomeworksCount","getTitleForStudent","completed","getTitleForTeacher","useGetSubjectsTree","getCoursesTree","getRestTree","modalIsOpen","dataFromStorage","getStudentsRestTree","getTeachersRestTree","getTreeByUrl","getStudentsTreeByUrl","getTeachersTreeByUrl","useGetPopupLessonData","_props$isNeedFetch","isNeedFetch","courseInfo","setCourseInfo","topicInfo","setTopicInfo","setLessonInfo","isInfoGets","setIsInfoGets","_useAppSelector","topicsTree","_lessonsTree$find$tit","_lessonsTree$find","_lessonsTree$find$tit2","_lessonsTree$find2","useGetSubjectsTreeData","teachersList","setTeachersList","studentsList","studentsListPaginate","getCourseTreeStatus","getTeachersList","courseParam","_choiceCourses$find","_additionalCourses$fi","commonCourses","choiceCourses","additionalCourses","_item$studentGroup","_item$studentGroup$co","_course$teachers","point","noCourses","useSubjectsRedirect","modalType","urlProps","isFromOldSubjects","isMethodist","isOnlyTeacher","LessonPopup","TaskPopup","StudentTasksViewPopup","CreateQuestionPopup","SearchQuestionsPopup","handleLessonOpen","taskIdPart","handleTaskOpen","assignmentPart","handleSearchQuestionsOpen","prevPurpose","handleCreateQuestionOpen","openTasksViewPopup","handleTasksViewOpen","getBooksList","_params","typeQuery","getBookById","createCourseType","editCourseType","deleteCourseType","getLibraryTree","createBook","editBook","getAuthorsList","_params2","fullname","createAuthor","editAuthor","deleteAuthor","createBookFile","FormData","append","Accept","editBookFile","deleteBookFile","resetLibraryAction","resetLibraryStatusesAction","getLibraryTreeAction","getBookCoursesListAction","getCourses","getBookTypesListAction","createBookAction","authorsIdList","createBookPayload","courseTypePayload","_params$callback","authorsCreationHelper","authors","creationParams","courseType","editBookAction","_params$courseType","_params$courseTypeIds","editBookPayload","editParams","courseTypeCreationHelper","courseTypeIds","fileId","deleteBookAction","courseTypeBooks","getBooksListAction","getBookByIdAction","createAuthorAction","editAuthorAction","deleteAuthorAction","getAuthorsListAction","createBookFileAction","editBookFileAction","deleteBookFileAction","authorsList","authorsToCreate","createdAuthors","authorInfo","courseTypeToCreate","courseTypeToEdit","postMonitoringRequest","getMonitoringStaffList","roles","subjects","getMonitoringSubjectsList","getCriteriaGroupsList","getUrlParamsString","getTeacherMonitoringData","getCriteriaSetting","getSummaryTableData","getTeachersCriteriaStatistic","getTeachesInfo","getTeachesWorkDays","getQuestionsCreatedProgress","getSummaryChartData","getQuestionsCreatedDiagramData","getTeachersQuestionsCreatedDiagram","getMonitoringStaffListAction","_props$currentPage","_props$limit","getMonitoringSubjectsListAction","_props$currentPage2","_props$limit2","getTeacherMonitoringDataAction","getCriteriaGroupsListAction","getCriteriaSettingAction","getSummaryTableDataAction","_props$currentPage3","_props$limit3","defaultProps","getTeachersCriteriaStatisticAction","getTeachesInfoAction","getTeachesWorkDaysAction","updateTeachesWorkDaysAction","workDays","questionsCreated","getQuestionsCreatedProgressAction","getSummaryChartDataAction","getQuestionsCreatedTableDataAction","_props$currentPage4","_props$limit4","getQuestionsCreatedDiagramDataAction","getTeachersQuestionsCreatedDiagramAction","getEventsByDateAction","getEvents","getStudentEventsAction","getProctorsAction","getProctors","getEventRoomsByLessonAndTypeAction","event_type","getEventRooms","getEventRoomsByDates","eventType","datetime_start_before","datetime_start_after","getEventRoomDetailsAction","getEventRoomDetails","room","createEventRoomAction","createEventRoom","changeEventRoomAction","changeEventRoom","getStudentsEventRoomsByLessonAndTypeAction","rejoinRoomAction","leaveId","EventActions","LEAVE","newId","JOIN","joinRoomAction","deleteEventRoomAction","deleteEventRoom","fetchHomework","isMandatory","fetchHomeworks","getAssignedAndOnCheckHomeworkAction","fetchAssignedAndOnCheckHomeworks","getCompletedHomeworkAction","getAssignmentProgressPreview","postStudentHomeworksAction","postStudentTask","postDeferredAssignmentAction","created","updated","_params$isGetter","isGetter","createdRes","updatedRes","deletedRes","resultArray","postDeferredAssignment","deleteStudentTasks","v","putStudentHomeworksAction","putStudentTask","deleteStudentHomeworksAction","getProgressesStatisticsAction","userId","getProgressesStatistics","getHomeworksBetweenDatesAction","getAssignedHomeworks","filterType","statusFilters","isFilterCourseGroup","getHomeworksBetweenDates","responses","getHomeworkPreviewBetweenDatesAction","getHomeworkPreviewBeetweenDates","getStudentsTasksAction","getStudentsTasks","getAssignmentProgressPreviewAction","setIsMandatoryAction","getQuestionsAction","postQuestionAction","postQuestion","fileIds","patchQuestionFile","refreshStatusesQuestions","getQuestionDetailedAction","getQuestionDetailed","setMaterialIdToEdit","patchQuestionAction","putResult","patchPayload","patchResult","putQuestion","isFromMaterials","patchQuestion","oldId","deleteQuestionAction","deleteQuestion","getHistoryQuestionAction","getHistoryQuestion","getAssignmentProgressQuestionsAction","postQuestionFileAction","postQuestionFile","Error","partialUpdateQuestionAction","_params$revisions","QuestionStatus","OnRevision","revisions","revision","deleteRevisionQuestion","partialUpdateQuestion","deleteAssignment","fetchAssignments","isArray","getAssignmentsByLesson","patchAssignment","postAssignment","getAssignmentProgressInterval","lesson_schedule","fetchAssignment","postNewAssignmentAction","assignmentParams","searchBlocksValues","assignmentSearchBlocks","newSearchBlocks","postedSearchBlocks","normalizeNewSearchBlocks","flatMap","rightSearchBlock","_filters$complexity","_filters$types","_filters$complexity2","_filters$complexity3","_filters$complexity4","isEmptyQuestionBlock","excludesIds","complexity","DifficultyEnum","easy","medium","hard","_filters$types2","_filters$types3","_filters$types4","_filters$types5","_filters$types6","types","skillsSelect","prevNum","createAssignmentSearchBlocks","getAssignmentsByLessonAction","deleteAssignmentAction","getAssignmentMarksAction","getAssignmentMarks","getAssignmentProgressTeachersListAction","getAssignmentProgressTeachersList","getAssignmentStudentMarksAction","getAssignmentStudentMarks","getAssignmentProgressIntervalAction","assignmentId","updateAssignmentNewAction","isUpdate","currentSearchBlocks","updatedSearchBlocks","deleteSearchBlocks","patchedSearchBlocks","deletedSearchBlocks","_filters$complexity5","_filters$types7","_filters$complexity6","_filters$complexity7","_filters$complexity8","_filters$types8","_filters$types9","_filters$types10","_filters$types11","_filters$types12","blockParams","patchAssignmentSearchBlock","deleteAssignmentSearchBlocksArray","course_group","getAssignmentTypesAction","HomeworkEnum","FilterTypes","HomeworkStatus","getQuestionSearch","_values$location","_values$skills","_values$skills2","_values$complexity","_values$complexity2","_values$types","_values$types2","skillLocation","optionsType","Published","all_user_questions","getQuestionSearchByQueryFilters","filtersQuery","exclude_ids","_res$data","fetchAssignmentSearchBlocks","postSearchQuestions","blocks","searchBlocksForDelete","utc","newDate","Date","getDate","getMonth","getFullYear","getTableDateToTime","utcOffset","hour","minute","getDateWithTime","getHours","getMinutes","getDateComponents","_moment","_moment2","_moment3","_moment4","dateWithoutTime","time","dateWithMonth","getCapitalizeMonth","hours","word","toUpperCase","getSelectedDate","minutes","subtract","endOf","millisecond","TIME_FORMAT","getTimeByMoscow","getDateByMoscow","timesList","startTime","getTimeUntilDateInMinutes","direction","endTime","resInMin","days","daysText","hoursText","minutesText","intervalInMinutes","isSameOrAfter","intervalExt","intervalIn","lessonIntervalInMinutes","isSameOrBefore","timeline","lastIntervalIndex","postEvaluate","patchAnswerAttemptAction","_filteredAnswers$answ","answersData","filteredAnswers","deleteEmptyAnswers","essayQuestions","isEssay","answerId","_ref4$files","patchAnswerAttempt","newAnswerAttemptParams","getStudentTaskById","getAnswerAttemptByProgressAction","getAnswerAttemptAction","getAnswerAttemptInfo","getAnswerAttemptsByProgress","updateAttemptDraft","_","draftData","getState","postAnswerAttempt","postEvaluateAction","fetchStudentHomeworksAction","createQuestionFileAction","onUploadProgress","_item$files","_item$file","_item$data","_item$data2","_item$data2$text","_item$data3","_item$data4","_item$data4$file","_item$data5","_item$data6","_item$data6$selectedO","_item$data7","_item$data7$selectedO","_item$data8","isAnswerFilesListEmpty","isAnswerFileListEmpty","isEssayAnswerTextDataEmpty","isEssayAnswerFileDataEmpty","isTextAnswerDataEmpty","insertWordsAnswerDataEmpty","selectedOptions","_word$selectedWord","selectedWord","createAttemptAction","UntraceableApiList","resolveRequest","resolve","accessToken","Authorization","isTokenUpdating","isAwaitReAuth","logout","_yield$ssoRefreshToke","sleep","ssoRefreshToken","finally","ErrorsCaptureWrapperApi","showAlertReportBtn","baseURL","transformHexColor","hex","lightAmount","saturationFactor","parseInt","startsWith","g","padStart","getDaysInMonth","daysInMonth","getInMonthText","debounceCaller","fn","timeout","timeoutMs","args","showErrorToast","_step","allErrors","_iterator","_createForOfIteratorHelper","s","n","f","duration","getQueryStringParams","_param$split","_param$split2","getMaskedString","mask","withDot","getUserName","withDots","surname","maskArray","fullName","CommonDragLayer","_useDragLayer","useDragLayer","monitor","itemType","getItemType","currentOffset","getSourceClientOffset","initialOffset","getInitialSourceClientOffset","isDragging","mainProps","display","QuestionsBlockContainerMemo","SingleQuestionContainerMemo","renderItem","QuestionsBlockContainerDrag","dragData","_useDrag","useDrag","collect","_useDrag2","dragBlock","preview","getEmptyImage","captureDraggingState","QuestionsBlockContainer","SingleQuestionContainerDrag","canDrag","_props$isIndependent","isIndependent","dragSingle","SingleQuestionContainer","DropArea","_questions$singleQues","_questions$searchBloc","_questions$singleQues2","_questions$searchBloc2","handleDropItem","handleBlockSettingsClick","_props$canDragQuestio","canDragQuestions","_useDrop","useDrop","drop","isActiveBorder","_value$id","side","searchNum","isActiveBlock","handleSettingsClick","src","emptySubject","_props$isActiveBlock","questionsCount","questionsListSliced","blocksTitle","opacity","light_grey_color_2","_item$questionContent3","_item$questionContent4","_item$questionContent5","isExcluded","containerRef","_props$isActiveBorder","questionContextPreview","dangerouslySetInnerHTML","__html","QuestionInfoModal","canAdd","canRemove","canExclude","canInclude","handleModalButtonClick","handleQuestionsPaginate","_useAppSelector$quest","getStatusQuestion","_useGetQuestionInfo","isOpen","setIsOpen","handleModalButtonClickLocal","afterClose","resetOpenedQuestionState","_this","firm_blue_color","valid","dark_grey_color_1","MultipleSelector","_props$placeholder","_props$valueType","valueType","setSelectedOptions","getNormalizedOptions","normalizeOptions","normalizeDefaultValue","_selectedOptions$map","selectedCount","listTypeText","countTypeText","showArrow","allowClear","getTreeSelectorTagBreadcrumbs","breadcrumbs","treeData","keyList","depths","firstDepth","key1","key2","secondDepth","key3","thirdDepth","MIN_HEIGHT","TreeSelector","_wrapContainer$curren3","additionalContent","expandOnTreeTitles","_props$isResponsivePo","isResponsivePosition","handleTreeSelect","initialValues","setInitialValues","wrapContainerHeight","setWrapContainerHeight","wrapContainer","handleTreeSelectInitial","_wrapContainer$curren","_wrapContainer$curren2","TreeSelect","multiple","maxTagTextLength","treeExpandAction","dropdownStyle","minHeight","treeLine","treeCheckable","listHeight","popupClassName","questionsComplicityNormalize","skillsUnionTypesNormalize","QuestionSearchBar","isShowEssayOption","filtersData","handleSearchButtonClick","handleCreateNewQuestion","handleDeleteBlock","codifierSkillsData","_useAppSelector2","subjectsTree","searchTreeStatus","questionTypeListNormalize","selectedSubjectId","setSelectedSubjectId","setTopics","setSkills","skillsUnionType","setSkillsUnionType","_useState9","_useState10","setDescription","_useState11","_useState12","complicity","setComplicity","_useState13","_useState14","setTypes","topicsTreeNormalize","_data$parallels","_parallel$sections","sections","checkable","isLeaf","_section$blocks","_block$topics","skillsTreeNormalize","_subject$parallels","_parallel$metasubject","metasubjects","_metasubject$skills","isSearchButtonDisabled","subjectsTreeNormalize","selectedSubject","setInitialFilters","initialFilters","getInitialFilters","tree","topicsValues","skillsValues","skillsUnionTypeValue","textValue","complicityValues","answersTypeValue","onMultipleSelect","onTreeSelect","resetAllFilters","AppTextareaInput","desc","selectedTopics","selectedComplicity","selectedTypes","selectedSkills","searchFilters","TYPE","SKILL","COMPLEXITY","coral_color","QuestionSearchBarMemo","initAssignedQuestion","SearchResult","selectedQuestions","searchQuestions","setRightBlock","setLeftBlock","selectedQuestionsCount","singleCount","blockCount","_item$questionsConten","_existingExcludedIds$","blockQuestionsIds","existingExcludedIds","excludedCount","_searchBlocksList$sin","_useGetQuestionModalC","_useQuestionsDrop","_useQuestionsMove","handleQuestionsDrop","droppedData","handleClickBlocksSetting","_rightBlock$singleQue3","nextQuestionId","mint_color","QuestionSearchResult","selectedQuestionsList","searchResults","handleQuestionClick","_ref$isLoading","handleSearchingCancel","handleSearchingSave","handleChangeQuestionList","QuestionsListBar","questionList","activeNumber","handleChangeList","BarItemDescription","isEmptyQuestion","isNoType","searchBlocksCount","isLastEmptyQuestion","handleDeleteQuestion","dark_grey_color_2","Trash","BarItemIcon","numClass","numText","white_color","light_grey_color_1","_props$orientation","_props$activeNumber","handleAddEmptyQuestion","questionsListNormalized","initial","TasksQuestionsList","allQuestionsCount","TaskConfigContainer","isTaskTemplate","typeOptionsNormalize","selectedType","_props$isSaveButtonDi","isSaveButtonDisabled","_props$isSaveButtonLo","isSaveButtonLoading","isTemplateSwitcherDisabled","handleTaskName","handleTaskDescription","handleTypeSelect","handleTemplateSwitcher","handleSaveTask","handleCancel","isFirstTime","setIsFirstTime","maxLength","sortLessons","firstLesson","nextLesson","getLessonsAction","_args","getLessonsAndHomeworksAction","resultLessons","t5","t6","getLessonSchedule","homeworksMap","getStudentsTasksPreview","homeworks","createLessonAction","newLesson","isTest","lessonParams","changedLesson","schedulesParams","createdLessonSchedules","_updatedLessonSchedules","deletedLessonSchedules","handleLessonScheduleParams","updatedLessonSchedules","deleteLessonSchedule","createLessonSchedules","updateLessonSchedules","deleteLessonAction","changeLessonTopicAction","getCoursesAction","subject_id","getCanFillCourseList","getCanFillCourseListAction","publishCourseAction","publishCourse","createCourseAction","postCourse","changeCourseAction","patchCourse","deleteCourseAction","deleteCourse","getCourseDetailsAction","getCourseDetails","getCourseWithThemesAction","getThemes","getCourseBySubjectAction","blockCourseAction","blockCourse","getAllCoursesForParallel","course_type","calendar_plan","calendarPlanId","HardModal","layer","customWrapperStyle","handleCloseModal","layerRightAbsolute","childrenWithProps","Children","isValidElement","contentWrapperStyle","cnQuestionCreationPage","ARRAY_MUTATORS","arrayMutators","SUBSCRIPTIONS_STAB","_URLSearchParams$get$","_URLSearchParams$get","_detailedQuestion$aut3","_detailedQuestion$rev","isSearchPage","isFillTrainer","isEditPage","_useGetPopupLessonDat","breadcrumbsHeader","_courseInfo$title","_topicInfo$title","_lessonInfo$title","ReturnButton","StrokeArrowRightIcon","handleFormValuesChange","debounce","setFormValuesState","isInitValueEdit","materialIdToEdit","postStatusQuestion","questionCreateId","fetchStatusDetailedQuestion","detailedQuestion","fileLink","questionCreated","codifierData","fetchStatusSkills","getSubjectsStatus","isMethodistRole","userRoles","UserRoles","METHODIST","isPrincipalRole","PRINCIPAL","isSupport","SUPPORT","isCreatingForMaterials","needFetchSkills","showForm","initFormValue","getInitFormValue","Status","isQuestionCreated","setIsQuestionCreated","canDrop","setCanDrop","stateGettingInitValue","setStateGettingInitValue","topicsLocation","setTopicsLocation","setSelectedTopics","formValuesState","flagRefresh","setFlagRefresh","_useState15","_useState16","flagDelete","setFlagDelete","_useState17","_useState18","questionType","setQuestionType","_useState19","_useState20","setSelectedSkills","_useState21","_useState22","initValueEdit","setInitValueEdit","_useState23","_useState24","changedSubject","setChangedSubject","editOrCreate","getPathParts","isTextEditor","_detailedQuestion$aut","_detailedQuestion$aut2","isDisabledButton","validateQuestion","useLoader","_useSubmit","useSubmit","idPath","handleSubmitForm","getMarkup","render","handleSelectLesson","handleSelectSkills","handleHistoryClick","handleDeleteClick","handleCancelClick","resetQuestionCreated","handleQuestionDelete","fieldsProps","fields","handleSelectSubject","resetQuestionBankState","_detailedQuestion$top","formValue","getInitFormValues","l","skillsLocation","_formValuesState$ques","_markups$","markups","newQuestion","getQuestionText","getQuestionContent","EditorState","insertationToTemplate","questionHTML","saveCreateQuestionsStore","resetFetchStatuses","resetPostQuestion","_info$firstName","_info$lastName","_info$patronymic","getQuestionTypeForBackend","mainRole","getContainer","autoFocus","QuestionPool","setIsQuestionType","autoCheckOnly","Form","onSubmit","mutators","subscription","validateOnBlur","handleSubmit","FormSpy","PropertyMenu","onClickCancel","isForMaterials","handleClickDelete","toggleChecked","toggle","isDisabledCancelButton","onSelectSubject","initSelectedSubject","onHistoryClick","Questions","onDelete","CnMaterialsTab","MaterialsTab","getStatusLessons","exrciseAnswers","exercisesWithCorrectAnswers","getStatusExercisesCorrectAnswers","fetchAllDataStatus","tempMaterials","lastCheckedAnswer","questionTarget","allExercisesIds","typeOfContent","filteredMaterials","filterMaterials","resolvedQuestions","checkIsExerciseFull","materialsNormalized","normalizeMaterialsData","handleCheckAnswer","questionData","checkData","getAutoCheckAnswerData","_questionTarget$curre","scrollIntoView","behavior","allExList","answerPromise","materialsPromise","_answerPromise","abort","resetTempMaterials","_questionTarget$curre2","exercisesList","exercisesIds","exercises","FieldArray","materialContent","_materials$","_materials","contentBlocks","allExercisesIndexes","availableExercisesIds","allBlocksCount","blockIntervals","unAvailableBlocksCount","newArray","newArrayIndex","_material$exerciseDat","_material$videoData","exerciseData","materialSubBlockIndex","ExpandedMaterialContent","isEditorOnText","isStudentView","areDragging","videoUrl","videoData","onCheckAnswer","normalizeMaterialContent","_fields$value$index","_fields$value$index$v","Fragment","_fields$value$index2","_fields$value$index2$","CnOnlineLessonTab","OnlineLessonTab","_currentEventRoom$dat","_currentEventRoom$dat2","isOvered","isStarted","fetchMeetingStatus","fetchMeetingFilesStatus","getEventRoomsStatus","changeEventRoomStatus","currentEventRoom","isJoined","getMeetingRecordingsAction","selectedMeeting","handleVideoCheckboxChange","postMeetingRecordingAction","isPublished","_meetingFiles$map","_file$title","_file$title2","_file$title3","_file$title4","useOnMeeting","getFiles","records","recordings","handleJoinClick","EventTypes","TEST","handleRecordClick","patchMissedLessonAction","recordViewed","handleRejoinClick","_eventRooms$find","_el$students","handleRoomClick","needHideButton","checkIsBeetween","decreaseDate","amount","unit","_createElement","RoomCard","onJoinClick","onRejoinClick","defaultChecked","rel","emptyRecordPreview","alt","FilesContainer","ProgressTab","isTablet","useWindowResize","studentsProgressList","getStudentsProgressListStatus","exercisesProgress","trainingsProgress","userAvatar","ProgressBarAdvanced","ProgressChart","CnStudentTaskTab","StudentTaskTab","_studentTasks$","_info$id","activeTaskId","fetchStatusQuestions","lastAttempt","attemptsQuantity","createAttemptStatus","fetchAnswerAttemptsStatus","attempts","selectedTab","setSelectedTab","calculatedTimeToComplete","setCalculatedTimeToComplete","tabs","createTabs","showConfirmBlock","setShowConfirmBlock","isTimeLeft","setIsTimeLeft","hasAttempts","isAssigned","deadline","hardDeadline","hasStartTimeLimitedTask","isTimeExpired","showTimer","handleTabSelect","handleTimeIsLeft","handleMarksClick","_studentTasks$0$cours","_studentTasks$0$subje","_studentTasks$0$cours2","getQueryAcademicPerfomanceParams","resetStudentTaskStatus","resetStudentTask","resetAnswerAttemptsStatus","secondsBeforeDeadline","secondsTimeToComplete","getMinutesNoun","isTimerStarts","confirmBlockText","minutesCalculatedTimeToComplete","timeToCloseText","isTaskInProgress","showLabel","StatusCard","isSelected","onAcademicPerfomance","showStatusLabel","Timer","timeToFinish","onTimeIsLeft","StudentTask","assignmentProgressId","createNewAttempt","CnTasksTab","TeacherTaskTab","conferenceId","showRepeatTaskForm","onStudentCellClick","isPrincipal","setIsDeferredAssignmentChanged","getLessonAssignmentStatus","fetchHomeworkStatus","fetchDeferredAssignmentStatus","fetchDeferredAssignmentChangeStatus","changeAssignmentMarksStatus","createLessonTaskStatus","updateLessonTaskStatus","courseGroupsMap","courseGroupExpelledStudents","fetchGroupsExpelledStudentsStatus","fetchGroupDetailsStatus","assigningHomeworkForm","taskForm","gettingPeriodsDataStatus","isDeferredAssignmentUpdated","canDeleteFileTemplate","isSaving","selectedCourseGroup","_selectedCourseGroup$","_courseGroupExpelledS","resetAssignmentState","resetLessonHomeworksState","showAssigningForm","setShowAssigningForm","setRepeatTaskForm","handleEditTaskClick","handleRepeatTaskClick","assignmentTasks","deferredAssignmentTasks","homeworkStatus","getHomeworksStatusFromAssignmentProgress","newTasks","setNewTasks","setFormValues","getAllAssignmentPeriodsAction","allTask","handleTaskSelect","newTask","alreadyAdded","handleAssigningFormChange","pristine","currentValues","handleTeacherSelected","handleDateSelected","lessonStartDate","_getTasksDate","handleFormButtonClick","_getSubmitData","isSomeCreated","isSomeUpdated","isSomeDeleted","setDisabled","_assigningHomeworkFor","_assigningHomeworkFor2","filteredTasks","hasEmptyDates","hasInvalidDates","isValidInterval","hasNewCheckedTasks","isFirstAssignment","hasTasksWithNoStudents","_formValues$selectAll","_formValues$students","_formValues$students2","isTaskSelectedAll","isTaskHasStudents","isTaskBlocked","hasAssignedHomeworks","dataFetched","handleStudentCellClick","handleStudentTaskClick","handleAssignmentDelete","isContentFetching","isTableShow","isTaskBlockShow","isAssignedHomeworkTableShow","AssignedHomeworkTable","onEditTaskButtonClick","onRepeatTaskButtonClick","onHomeworkClick","withoutGroup","TaskBlock","blockTitle","onAssignmentDelete","hasConference","disabledSelect","onTeacherSelect","repeatTask","withoutBorder","AssigningHomeworkForm","_lessonsTree$currentL","_lessonsTree$currentL2","setTabName","isHaveAdditional","setIsHaveAdditional","isHaveTrainer","setIsHaveTrainer","_useWindowResize","isMobile","isTeacherMethodist","metaRoles","_state$newMaterials","getLessonsTreeStatus","getTreeByURLStatus","handleStudentAvatarClick","getQuerySearchParams","currentLessonIndex","selectedLessonSchedule","LessonTypes","ONLINE","_useMemo","checkOverdue","addMinutes","TIME_AFTER_END_OF_LESSON","isSelfPreparation","_lessonsTree$currentL3","SELFPREPARATION","_lessonsTree$currentL4","_lessonsTree$currentL5","_lessonsTree$currentL6","_lessonsTree$currentL7","_lessonsTree$currentL8","additionalMaterials","trainer","TrainerTab","subjectPageType","teacherLessons","TeacherOnlineLessonTab","studentLessons","AttendanceTab","onStudentAvatarClick","currentTabId","isCurrentTabExist","resetMeetingFilesState","resetNewSubjectsState","_lessonsTree$currentL9","_lessonsTree$currentL10","_lessonsTree$currentL11","_lessonSchedules$","isTestNotPassed","checkIsAfter","toISOString","onLessonPaginate","newIndex","itemToAdd","getTrainingProgress","checkTrainer","getMaterialsMetaAction","newValue","centered","_searchResults$active","_searchResults$active2","_urlProps$num","handleClosePopup","setLastVersionState","setQuestionsList","setActiveQuestionNumber","assignmentTypes","getTypesStatus","isSearchQuestionsIsAllowed","assignedTasksList","getAssignedTasksListStatus","getQuestionsBySearchStatus","isSearchContainerLoading","filteredSearchBlock","showFiltersData","_assignedTasksList$ac","_assignedTasksList$ac2","assignmentType","isListEmpty","reformattedList","_task$searchBlocksLis","_task$searchBlocksLis2","_task$searchBlocksLis3","_task$singleQuestions","summaryQuestion","getEmptyQuestion","blocksCount","blocksQuestionsCount","_block$questionsConte","_block$filters","_block$filters$exclud","_block$questionsConte2","excludeCount","total","lastQuestionNumber","newNum","resetToLastVersionState","cnStudentTasks","useWindowWidth","currentTab","setCurrentTab","deletedMarks","setDeletedMarks","canDelete","setCanDelete","studentData","taskFetchStatus","taskDeletingStatus","studentTasksStatus","markPatchStatus","markDeleteStatus","markPostStatus","studentName","isAdaptation","studentPhoto","_studentTasks$find","handleStudentClick","_lesson$course","handleMarkDelete","markId","attemptMarkNumber","handleMarkAdd","addMarksOptions","handleMarkChange","changeMarksOptions","teacherMarks","score","comment","assignmentMarks","changeAssignmentMarksAction","valueCanChange","handleErrorModalCancelButtonClick","clearError","handleErrorModalActionButtonClick","_tabs$find$id","_tabs$find","deleteStudentTaskAction","handleTaskCheck","answerAttempt","selectedMark","changeValues","getChangeAttemptMarkParams","changeAssignmentMarkAction","_studentTasks$0$cours3","getStudentTasksAction","_tabs$find2","_tabs$find2$marks","_tabs$find$marks$leng","_tabs$find3","_tabs$find3$marks","deleteAssignmentAdditionalMarkWithCheckAction","attempt","_answerAttempts$find","allMarks","numberOfMarks","handleCancelButtonClick","handleActionButtonClick","resetStudentTaskData","resetProctoringState","StudentTab","onTabChange","onStudentClick","onMarkDelete","onMarkChange","onMarkAdd","isOnline","onTaskCheck","_lessonDetails$Number","selectedTypeId","setSelectedTypeId","setIsTaskTemplate","setTitle","lessonDetails","isTasksContainerLoading","setSearchQuestionsIsAllowed","_taskData$description","_task$searchBlocksLis4","_task$singleQuestions2","_block$questionsConte3","resetQuestionsState","saveIntoLastVersion","taskDataParams","URL_SEARCH_ENUM","MODALS","mappedPopups","_mappedPopups","put","progressEvent","_params$onUploadProgr","percentCompleted","loaded","getStudentTasks","fetchStudentHomeworksByLesson","fetchStudentHomeworkById","deleteStudentTask","fetchStudentData","getStudentTaskPreview","is_mandatory","changeAssignmentMark","deleteTeacherMarks","markIds","createTeacherMarks","_mark$comment","deleteAnswerAttempts","lastAttemptDeleting","needHideErrorIcon","customDescription","descriptions","isLastAttemptDeliting","disableCancelButton","actionButtonClick","cancelButtonClick","_params$courses","getTransferredMarks","capitalizeWord","wordIndex","plusDaysToCurrentDate","getTime","DAY_IN_SECONDS","minusDaysToCurrentDate","convertDateToHtmlDateString","getDateString","getDayOfMonth","getTwoCharsDate","getDateWithAbbreviatedMonth","getNumberMinutesBeforeDate","rightTime","fromNow","getWeekdayNumber","getStartOfMonth","startOf","getEndOfMonth","getStartOfWeek","getEndOfWeek","getTimeBeforeDate","toNow","getTimeAfterDate","getWeekdayNames","getDatepickerSelectTitle","resultDate","resultTime","getDateWithoutYear","isDateTomorrow","endOfToday","endOfTomorrow","getEarliestDate","closestDate","getNumberHoursBeforeDate","checkIsSameDates","granularity","secondDate","checkCanEditLesson","startLesson","numberOfMinutes","checkIsDayBefore","secondMoment","_ref3$minutes","checkTimezone","correctTime","_correctTime$split$ma","_correctTime$split$ma2","correctHours","correctMinutes","tz","currentHours","currentMinutes","getDiffBetweenDates","unitOfTime","normalizeTimeToMonitoring","getMaterialsMeta","getTrainingQuestions","postCreateTraining","getQuestionData","getTrainingCount","postTrainingSearchBlocks","getTrainingProgressAction","getTrainingQuestionsAction","isLoadingMore","getTrainingCountAction","getTrainingSearchBlocksQuestionsAction","initSearchBlocks","singleQuestions","searchBlocks","excludesAndSingleIds","initExcludesIds","_filters$excludeIds","single","convertQueryFiltersToPageFilters","numSearch","INSERT_WORD_REPLACE","INSERT_WORD_REGEX","normalizeInsertWordQuestion","questionParts","lastIndex","getQuestion","questionPartExec","getQuestionParts","questionPart","RegExp","accum","part","parts","TRUE_FALSE_ANSWER_OPTIONS","normalizeAnswerData","randomAnswerOrder","uuid","normalizeTestAnswerData","normalizeExerciseQuestion","questionValue","normalizeCorrectAnswerData","correctAnswer","correctness","normalizeTrueFalseCorrectAnswerData","_data$selectedOptions","answerItem","normalizeTestCorrectAnswerData","incomplete","gapIndex","normalizeInsertWordCorrectAnswerData","normalizeTextCorrectAnswerData","materialsSlice","setEditTraining","_state$training","_state$training2","_state$training2$trai","_state$training3","newFilters","newNumSearch","newSingleQuestions","newRightSearchBlocks","rightSearchBlocks","newLeftSearchBlocks","leftSearchBlocks","training","trainingSearchBlocksData","oldNumSearch","oldFilters","trainerSearches","oldSingleQuestions","oldRightSearchBlocks","oldLeftSearchBlocks","initTrainerData","resetTrainerData","resetExercise","exercise","convertRoles","normalizeMaterialsMeta","_state$training4","isCheck","isQuestionLoading","isCheckQuestionLoading","statistics","normalizedQuestion","multiply","normalizeQuestion","normalizeCorrectAnswerToQuestion","_state$training5","_state$training6","isMore","_state$training7","_state$training7$ques","_payload$results","_state$training9","_state$training$quest","_state$training8","_state$training8$ques","newQuestions","_state$training10","_state$training11","trainingCountInfo","_state$training12","_state$training13","_state$training14","_state$training15","_materialsSlice$actio","materialsReducer","CmdEmptyTrainerCard","EmptyTrainerCard","isNoAccess","image","TwoPeopleLookingForPng","SleepingOwlPng","CnSingleAnswerExercise","MultiplyAnswerExercise","localAnswerValue","exerciseInfo","setLocalAnswerValue","NEW_LINE_DELIMITER","getInsertWordInputStatus","_item$selectedWord","_item$correctness","CnInsertWordsExercise","InsertWordsExercise","_answerOptions$part","_localAnswerValue$ind","answerValue","onChangeValue","CnOpenAnswerExercise","OpenAnswerExercise","SingleAnswerExercise","CnExercise","Exercise","changeLocalAnswer","setLocalAnswer","insertWords","checkAnswerData","answerArray","ans","_ans$value","getUpdateSearchBlocksRequestParams","excludesQuestions","_searchBlocks$map","convertPageFiltersToQueryFilters","getCreateSearchBlocksRequestParams","_searchBlocks$map2","_singleQuestions$map","getSearchBlocksRequestParams","_rightSearchBlocks$fi","_initOnlySearchBlocks","_initOnlySearchBlocks2","initOnlySearchBlocks","initSingleQuestions","createdSearchBlocks","rightSearchBlocksIds","deletedSearchBlocksIds","updatedSearchBlocksIds","initSingleQuestionsIds","createSingleQuestions","deleteQuestionIds","_item$filters2","excludesSingleQuestionsIds","createData","updateData","deleteData","parsedContent","entityMap","htmlAccumulator","entity","createCalendarPlanAction","createCalendarPlan","createCalendarPlanPeriodAction","createCalendarPlanPeriod","createSchoolHolidaysAction","createSchoolHolidays","deleteCalendarPlanAction","deleteCalendarPlan","getCalendarPlanListAction","deleteSchoolHolidaysAction","deleteCalendarPlanPeriod","deleteSchoolHolidays","getCalendarPlanAction","getCalendarPlan","getCalendarPlanList","patchCalendarPlanAction","patchCalendarPlan","patchCalendarPlanPeriodAction","patchCalendarPlanPeriod","patchSchoolHolidaysAction","patchSchoolHolidays","getCourseMeetingFiles","getCourseGroupMeetingFiles","createCourseMeetingFile","createCourseGroupMeetingFile","updateCourseMeetingFile","updateCourseGroupMeetingFile","deleteCourseMeetingFile","deleteCourseGroupMeetingFile","getCourseMeetingFilesAction","getCourseGroupMeetingFilesAction","createMeetingFileAction","isCourseGroup","userInfo","uploadedBy","updateMeetingFileAction","courseGroupMeetingFiles","updatedFile","deleteMeetingFileAction","TooltipViewEnum","PointerPosition","Position","getLessonAbsence","_params$status","date_start","date_end","getLessonAttendanceDataAction","getLessonAttendance","patchStudentPresenceAction","changeStudentPresence","createAttendanceMarkAction","createAttendanceMark","changeAttendanceMarkAction","changeAttendanceMark","deleteAttendanceMarkAction","attendanceLesson","deleteAttendanceMark","getAttendanceMarksAction","getAttendanceMarks","getMarksAction","studentsIds","attendMark","assignMark","attendanceLessons","getAttendanceMarksByDate","mark_date_before","mark_date_after","getAssignmentMarksByDate","getMarksAndStats","quarter","getStudentMarksAction","lessonAbsence","getAttendanceStudentMarks","getStudentMarksAndStatuses","getEducationalPlanAction","getEducationalParallels","postEducationalPlanAction","educationalPlanItems","newItems","postEducationalPlan","createEducationalPlanItem","getNormalizedItemsMap","patchEducationalPlanAction","idsWillDelete","_params$educationalPl","newItemsOrder","patchItems","deleteEducationalPlanItem","_item$id2","_item$id","editEducationalPlanItem","patchEducationalPlan","deleteEducationalPlanAction","deleteEducationalPlan","getAllCalendarPlansAction","getEducationalParallelsAction","getEducationPLanWithParallelsAndCalendar","getAllEducationalPlanAction","subjectAlterTitle","aboutTeacher","lessonCount","courseVideo","methodists","hasMediaFiles","hasOtherData","jsonParams","mediaRes","otherDataRes","formData","patchThemesOrdering","methodist","getTaskDateInitialValues","onlyDatesOptions","dateStartList","dateEndList","getTimeZoneOffsetHours","getTimezoneOffset","dateValidator","calendarStartType","calendarDurationType","isStartNow","timeStartDJS","timeEndDJS","datetimeStartDJS","datetimeEndDJS","dateStartValid","dateEndValid","periodData","timezone","assignmentPeriod","blockedDates","intervalStart","intervalEnd","currDate","past","isDateBlocked","disabledHours","startHour","endHour","isStartSame","isEndSame","disabledMinutes","startMinute","endMinute","getTimeDisableValue","alphabet","PeriodTypes","DragScrollStateEnum","SubjectType","reCaptchaKey","REACT_APP_RECAPTCHA_KEY","DEFAULT_TABLE_PAGE","DEFAULT_TABLE_PAGE_SIZE","LIST_PAGINATE_LIMIT","GROUP_ACTIONS_PAGE_TAB_NAME","studyPeriods","eduWeeks","pairs","queries","_ref2$","changeNewsElementsOrdering","createNewsElements","deleteNewsElements","elementsIds","createNewsFile","newsElement","deleteNewsFile","getUnreadNewsStatusAction","createAddedFilesToElements","elements","fileParams","createNewsAction","getNewsByIdAction","getNewsById","updateNewsAction","newsId","deletedNewsElements","newElementsData","changedElementsData","deletedFiles","newElements","createFilesParams","_yield$Promise$all","_yield$Promise$all2","createdElements","findNewMaterialIndex","getNewsByDatesAction","date_before","date_after","getNews","updateNewsLikesAction","like","deleteNewsAction","deleteNews","getCookie","Cookies","setCookie","removeCookie","remove","getRefreshToken","_tokenData","_tokenData2","tokenData","jwtDecode","expires","exp","secure","domain","cookiesDomain","sameSite","path","_tokenData3","_tokenData4","removeAllTokens","sentryDsn","isLocalHost","dsn","projectDomain","currentEnvironment","socketHost","noQuestionInTheme","questionsQuantity","questionsQuantityUnpublished","noQuestionInBlock","noQuestions","noQuestionInSection","_section$topics","noQuestionInParallel","noSkillInArea","areas","_areas$skills","noSkillInParallel","noSkills","area","DropdownActionsFormValuesFields","CnDropdownActionsForm","codifierRegexp","DropdownWithActions","onChangeAdd","_ref$textButtonAdd","textButtonAdd","_ref$initialValue","initialValue","_ref$allCodifierValue","allCodifierValues","_ref$options","_ref$isNeedTextField","isNeedTextField","_ref$needTextarea","needTextarea","needCodifierValue","_ref$noSkills","needDisableOrder","validate","validateCodifierExists","validateCodifierStructure","match","handleFormSubmit","FieldForm","isOnlyNumbers","needDeleteIcon","validators","disable","TextareaField","isField","FieldDropdown","needBlueIcon","codifierValue","cnThemeTooltip","ThemeTooltip","handleCreateQuestion","_ref$isTheme","isTheme","_ref$canEdit","handleEditClick","handleCopyClick","handleReplaceClick","canCopy","_ref$skillsTooltip","skillsTooltip","_ref$isChild","isChild","_ref$canDelete","_ref$canReplace","canReplace","Plus","Pencil","CopyIcon","ReplaceIcon","Basket","cnCodifierDropdownGrade","CodifierDropdownGrade","numberGrade","onCreateClick","onEditClick","_ref$sectionsCount","sectionsCount","onDeleteClick","_ref$nextSection","nextSection","_ref$disabled","_ref$isEditable","isEditable","_ref$isOpenedInit","isOpenedInit","_ref$isHighlighted","isHighlighted","_ref$skillsCodifier","skillsCodifier","_ref$canHover","canHover","handleCanHover","_ref$needHideBlue","needHideBlue","isButtonsVisible","setIsButtonsVisible","isOpened","setIsOpened","isCreated","setIsCreated","isEdited","setIsEdited","isEditedForm","setIsEditedForm","isAdded","setIsAdded","gradesAvailable","getGradesOptions","tooltipRef","hideTooltip","useOuterClickField","grades","CodifierEventType","PARALLEL","handleHoverButtons","handleHeaderClick","handleCreateButtonClick","handleEditButtonClick","handleEditFormClick","handleAddFormClick","handleEditFormSubmit","correctPlaceholder","highlighted","onMouseEnter","onMouseLeave","codifierPageData","getGradeContainer","arrow_is_opened","Folders","opened","Dots","createSection","editParallel","cnCodifierDropdownSection","CodifierDropdownSection","_ref$themeNext","themeNext","themeLessonNext","onReplaceClick","parentId","correctThemeTitle","SECTION","getSectionContainerHeader","getBlockContainerHeader","createTheme","createBlock","isSection","editBlock","editSection","CnSubjectName","SubjectName","handleCreateClick","isClickMore","setMounted","isHovered","setIsHovered","isClickShow","setIsClickShow","toggleShow","SUBJECT","toggleHover","showDots","handleClickAdd","getSubjectNameTitle","GetMore","CnThemeCodifier","ThemeCodifier","isThemeSubject","numQuestions","numQuestionsUnpublished","isSelectedInit","_ref$isCheckedInit","isCheckedInit","themeNumber","_ref$id","handleSelectThemeLesson","handleSelectCheckbox","_ref$onClickAdd","onClickAdd","_ref$isClickMore","_ref$hasCheckbox","hasCheckbox","_ref$skillsTheme","skillsTheme","_ref$numSkill","numSkill","_ref$setSelectedMetaA","setSelectedMetaArea","_ref$selectedMetaArea","selectedMetaArea","gradeId","metaAreaId","_ref$subjectIndex","subjectIndex","_ref$parallelIndex","parallelIndex","_ref$metaAreaIndex","metaAreaIndex","_ref$setSelectedSkill","setSelectedSkill","themeIndex","_ref$needOrder","needOrder","blockIndex","_ref$needDisableOrder","setIsSelected","setIsChecked","showOptions","setShowOptions","clickMore","oneSelectedArea","handleChangeCheckbox","handleAddSkill","onClickOpenInit","canSelect","titleText","skillsLabel","i18next","t","unpublishedQuestions","handleTextClick","skillCreateFormRef","inactive","getThemeContainer","getThemeContainerIcon","editSkill","editLesson","TOPIC","cnReplaceWindow","ReplaceWindow","onCloseClick","handleClose","selectedParallel","setSelectedParallel","selectedSection","setSelectedSection","setSelectedBlock","replaceLabels","buttonLabel","BLOCK","handleElementSelect","handleApproveReplace","_codifierData$find","_codifierData$find$pa","_codifierData$find$pa2","_codifierData$find$pa3","_codifierData$find$pa4","_codifierData$find$pa5","_codifierData$find$pa6","_codifierData$find$pa7","_oldOrdering$findInde","_codifierData$find2","_codifierData$find2$p","_codifierData$find2$p2","_codifierData$find2$p3","_codifierData$find2$p4","_codifierData$find2$p5","_codifierData$find2$p6","_codifierData$find2$p7","_codifierData$find3","_codifierData$find3$p","_codifierData$find3$p2","_codifierData$find3$p3","_codifierData$find3$p4","_codifierData$find3$p5","_codifierData$find3$p6","_codifierData$find3$p7","oldOrdering","_el$parallels","_el$parallels2","orderInCurrenSection","_el$parallels3","_codifierData$find4","_codifierData$find4$p","_codifierData$find4$p2","_codifierData$find4$p3","_codifierData$find4$p4","_codifierData$find4$p5","_codifierData$find5","_codifierData$find5$p","_codifierData$find5$p2","_codifierData$find5$p3","_codifierData$find5$p4","_codifierData$find5$p5","_codifierData$find6","_codifierData$find6$p","_codifierData$find6$p2","_codifierData$find6$p3","_codifierData$find6$p4","_codifierData$find6$p5","_el$parallels4","oldSectionOrdering","_el$parallels5","_el$parallels6","_codifierData$find7","_codifierData$find7$p","_codifierData$find7$p2","_codifierData$find7$p3","_codifierData$find8","_codifierData$find8$p","_codifierData$find8$p2","_codifierData$find8$p3","_codifierData$find9","_codifierData$find9$p","_codifierData$find9$p2","_codifierData$find9$p3","_el$parallels7","targetParallelOrder","_el$parallels8","currentParallelOrder","_el$parallels9","_subjects$find","_subjects$find2","_subjects$find2$paral","_subjects$find2$paral2","DeleteIcon","_parallel$sections2","sectionIndex","_section$blocks2","_section$blocks3","_section$blocks4","_section$blocks5","_block$topics$length","cnCodifier","Codifier","_ref$subjects","_ref$skills","onParallelSelect","onParallelPatch","onObjectlDelete","onSectionCreate","onSectionPatch","onBlockCreate","onBlockPatch","onTopicCreate","onTopicPatch","handleSelectTopicCheckbox","_ref$hasTopicCheckbox","hasTopicCheckbox","_ref$topicLocations","topicLocations","handleSelectSkillCheckbox","_ref$skillLocations","skillLocations","canEditSubject","onSkillCreate","onSkillPatch","isHighlight","initSelectedLocation","selectedSkill","setCanHover","selectedLocation","setSelectedLocation","replaceOpened","setReplaceOpened","replaceParams","setReplaceParams","onCloseReplaceClick","handleParallelSelect","selectedGrade","handleParallelPatch","handleDelete","handleReplace","handleSectionCreate","handleSectionPatch","handleBlockCreate","handleBlockPatch","handleTopicCreate","_values$createTheme","_values$createThemeLe","_values$createTheme2","createThemeLesson","handleTopicPatch","handleTopicSelectCheckbox","getLessonLocation","handleSkillSelectCheckbox","getSkillLocation","handleSelectAnything","handleSkillCreate","handleSkillPatch","_subject$parallels2","_parallel$metasubject2","_parallel$metasubject3","_parallel$metasubject4","_areas$skills2","_areas$skills3","_areas$skills4","METASUBJECT","indexSkill","_areas$skills5","_subject$parallels3","_subject$parallels4","_parallel$sections3","_parallel$sections4","blockEl","_blockEl$topics$lengt","_blockEl$topics","_blockEl$topics2","_blockEl$topics3","_blockEl$topics4","_blockEl$topics5","childrenOrder","topicIndex","subjectsTitles","gradesList","idSubject","themes","idSection","lessonThemes","idTheme","createInitValues","subjectTitle","gradeIndex","blockOrder","topicOrder","subjectOrder","parallelOrder","metaArea","metaAreaOrder","skillOrder","indexSub","indexPar","indexMeta","_meta$skills","sectionOrder","indexSec","indexBlock","indexLes","getCodifierSelectorInitValues","codifierMap","_element$blocks3","_element$sections5","_element$parallels3","_codifierMap$topicsMa","_element$blocks","_codifierMap$topicsMa2","_element$sections","_element$blocks2","_element$sections2","topicsMap","_element$sections3","_element$sections4","blocksMap","_element$parallels","_element$parallels2","sectionsMap","_element$subjects","_element$subjects2","parallelsMap","getSubject","_codifier$find$id","_codifier$find","_block$topics3","fetchAssignmentSearchBlocksAction","formValuesAccumulator","singleQuestionsAccumulator","separatedFilters","leftSearchBlock","questionIds","searchBlocksWithSingleQuestion","_searchBlock$filters","_searchBlock$filters$","restFilters","_singleQuestionsAccum","_formValuesAccumulato","newSearchBlock","postSearchQuestionAction","questionDetailAction","questionBlockAction","saveStateSearchPageStore","addEmptyFormValuesStore","addEmptyQuestionsStore","resetSearchBlocksStore","getDaySchedule","getDayScheduleChart","clearScheduleListAction","clearLessonInfoAction","getFilterTreeAction","setFiltersAction","setSelectedDayAction","getDayScheduleAction","rooms","isEventRoom","getDayScheduleChartAction","getLessonInformationAction","otherStudents","getEventRoomInformationAction","idFile","_params$type2","getActionStudentsAction","newParams","getActionStudents","getActionsListAction","getActionProgress","getMoreActionsListAction","actionDetailsAction","postActionDetails","getActionCreateAction","getActionCreate","createActionProgressAction","createActionProgress","getMeetingFiles","getMeetingTemplateFiles","postMeetingRecording","getMeetingFilesAction","createMeetingFile","deleteMeetingFile","changeMeetingFileAction","changeMeetingFile","DEADLINE_FOR_COMPLETE","DEADLINE_FOR_CHECK","ASSIGNED","deadline_for_complete_after","deadline_for_complete_before","deadline_for_check_after","deadline_for_check_before","assigned_date_after","assigned_date_before","my_course_groups","lesson_ids","student_ids","getStudentQuestionsData","timestamp","isActual","answerOptionsQuantity","correctAnswerOptionsQuantity","randomOrder","restData","getInitValuesQuestionType","normalizeQuestionData","studentAnswers","isDraft","_studentAnswers$data","_studentAnswers$data2","markup","_getAnswerData","_selectedOptions","_selectedOptions$filt","_selectedOptions2","_selectedOptions2$fil","_data$data","_data$data2","_selectedOptions3","_selectedOptions4","_selectedOptions5","_selectedOptions6","_selectedOptions6$fil","correctAnswers","getAnswerData","isFileAvailable","isTextAvailable","getQuestionType","getHeaderForForm","errorSlice","ready","_action$payload$extra","isBlockLesson","createCertificate","isCourseDeleting","restExtraParams","isOlBlocked","clear","getCurrentTimeAction","timezoneError","isTimezoneError","setError","_errorSlice$actions","errorReducer","AssemblyTypes","getMissedLesson","getLessonScheduleAction","missed","patchMissedLesson","getMissedLessonAction","getMeetingJoinRedirectAction","assembly","getMeetingJoinRedirect","event_room","nonPaymentError","getMeetingWithCheckAction","isAppUsed","isMacOrApp","datetimeStartUsedApp","wrongClientError","getThemesAction","publishThemeAction","themeId","publishTheme","createThemeAction","postTheme","newTheme","changeThemeAction","patchTheme","updatedTheme","orderingWithoutUpdatetedTheme","deleteThemeAction","deleteTheme","roomData","_roomData","maxStudents","leaders","roomId","PROCTOR","changePasswordRequestData","changePassword","yearId","changeAcademicYear","getUnreadNotificationsCountAction","getUnreadMessagesCountAction","getNotificationsPageAction","getFirstArchiveNotificationsPageAction","getNextArchiveNotificationsPageAction","thunkApi","nextArchiveNotificationsPageLink","ssoLogin","ssoLogout","fileSet","patchFilesMaterials","BooleanStatusIndicator","isPositive","CardWrapper","_props$additionalCls","additionalCls","shape","baseChartOptions","focusTarget","light_grey_color_3","fontSize","GoogleChartWrapper","_props$isNoData","isNoData","_props$emptyDataText","emptyDataText","mergedChartOptions","ChartsLegendItem","CollapseWithButton","_props$showHeaderArro","showHeaderArrow","setOpened","renderContent","TextButton","panelProps","EmptyData","_props$text","imageContent","emptyDataImage","FractionContent","currentAmount","maxAmount","_props$withPercent","withPercent","addEmbed","separator","KinescopeVideo","_props$allowFullScree","allowFullScreen","_props$allowAutoplay","allowAutoplay","_props$videoWidth","videoWidth","_props$videoHeight","videoHeight","ESupportedLinkTypes","kinescope","ELinkSeparatingLine","allow","frameBorder","onScrollEnd","_params$placeholder","_params$maxTagCount","_params$maxLabelLengt","maxLabelLength","withSelectedAll","_params$needSortOptio","needSortOptionsBySelected","_params$withCheckboxe","withCheckboxes","isOptionsLoading","searchText","setSearchText","isDropdownOpened","setIsDropdownOpened","hasSelectedAllOptions","hasSearchResults","needUpdateList","currentOptions","selectedValuesIds","selectedAllOption","opt","onDropdownChanged","onSearchLocal","maxTagPlaceholder","onClear","_val","isAllJustSelected","isAllJustUnselected","filteredList","hasSelectedAll","isCheckedAllList","virtual","enterButton","onKeyDown","ProgressBar","Progress","tableConfigProviderTheme","colorBgBase","colorBgContainer","colorBorderSecondary","colorBgTextActive","colorBgTextHover","colorTextHeading","TableBorderless","columns","_props$align","align","_props$isNeedNumberin","isNeedNumbering","renderColumns","dataIndex","renderData","dataSource","rowClassName","wrapperClassName","_props$textStyle","_props$color","_props$disabled","UserAvatar","imageUrl","initials","_props$size","_props$borderless","borderless","onAvatarClick","border","UserInfo","_props$isShort","isShort","_props$withLogo","withLogo","onUserClick","nameInitials","UserListItem","rawPopups","setRawPopups","mountedPopups","setMountedPopups","queryParam","queryList","currentPopups","getUrl","messageStyle","justifyContent","_props$maxCount","success","warning","ssoDomainUrl","ssoLoginUrl","ssoLogoutAllUrl","ssoLogoutUrl","ssoVerifyUrl","ssoResetPasswordUrl","ssoResetPasswordConfirmUrl","ssoResetPasswordValidateUrl","getNotes","postNote","isCurator","deleteNote","patchNote","getNotesAction","createNoteAction","changeNoteAction","deleteNoteAction","assignedTaskListLastVersions","needChangeCreateToEdit","newTaskData","lessonTaskSlice","resetToLastVersion","setLastVersion","setNewTaskData","deleteTask","_payload$saveIntoLast","addTask","currentState","filtersObj","addSingleQuestion","_state$searchResults","_state$assignedTasksL","_state$selectedBlock","targetBlock","_state$searchResults2","_state$assignedTasksL2","_state$searchResults3","_state$searchResults4","_state$searchResults5","_state$searchResults6","deleteQuestionsBlock","blockPosition","_state$searchResults7","_state$assignedTasksL3","addQuestionsBlock","_state$searchResults8","_state$searchResults9","_ref27","_ref28","newTree","_ref29","lessonTaskReducer","_lessonTaskSlice$acti","normalizeAnswerAttempt","_answer$files","postAnswerAttemptStatus","patchAnswerAttemptStatus","createQuestionFileStatus","postEvaluateStatus","patchDraftStatus","questionFiles","answerAttemptsSlice","resetAnswerAttemptsState","resetAnswerAttemptsData","deleteQuestionFile","_state$questionFiles$","saveDraft","_state$draftData","attemptId","_file","_state$questionFiles$2","_state$questionFiles$3","_ref3$files","draftAttempId","draftTime","_getAttemptQuantityIn","getAttemptQuantityInfo","_state$data","_getAttemptQuantityIn2","lastAttemptData","dateUpdate","_state$questionFiles$4","answerAttemptsReducer","fetchHistoryStatus","patchStatusQuestion","partialUpdateStatusQuestion","deleteStatusQuestion","postStatusQuestionFile","patchStatusQuestionFile","historyQuestion","studentQuestions","editedQuestionsList","questionsSlice","resetStatusDetailedQuestion","resetStatusPartialUpdateQuestion","questionsReducer","getLocationString","returnString","getEnding","buf","getLocationSkillString","findRowsCount","locationString","symbols","bufLen","convertEvaluationTypeToSelection","EvaluationType","DIFFERENTIATED","BINARY","convertSelectionToEvaluationType","selection","getNormalizedResponseData","educationPlan","mainBasicCourses","mainAdditionalCourses","selectiveBasicCourses","selectiveAdditionalCourses","EduCourseType","inWeek","weekLessonsCount","inYear","fact","lessonsInWeek","weekOnlineLessonsCount","lessonsInYear","lecturesInWeek","weekFlowLecturesCount","lecturesInYear","evaluationType","takeIntoAccount","NON_SUBJECT","GIA_PREPARATION","ELECTIVE","minWeekHours","minHours","freeWeekHours","freeHours","isRead","setAlertRead","attendanceId","_params$lessonIds$joi","_params$lessonIds","_params$studentIds","SvgCamera","SvgCrownIcon","SvgCupIcon","SvgLikeIcon","SvgMonitorPlay","SvgStarIcon","SvgTrash","SvgWreathIcon","SvgBigOgLogo","SvgContentLoader","getStaffProfiles","staffProfileId","updateStaffProfile","getStaffProfileById","getCodifierPage","selectedSubjectIndex","selectedGradeIndex","selectedSectionIndex","selectedBlockIndex","selectedThemeIndex","CnAttendanceMark","AttendanceMark","teacherId","submitCreateMark","submitChangeMark","onDeleteMark","_ref$isNeedAddMark","isNeedAddMark","_ref$isNeedChangeMark","isNeedChangeMark","canCreateCommentOnly","onceMark","withoutComment","needHideWeight","isAbsolutionPosition","_ref$statusCard","statusCard","isAddMarksFormShow","setIsAddMarksFormShow","isChangeMarksFormShow","setIsChangeMarksFormShow","formPosition","setformPosition","changeIsAddMarksFormShowCallback","_plusIcon$getBounding","getBoundingClientRect","changeformRef","createformRef","innerWidth","changeIsChangeMarksFormShowCallback","_penIcon$getBoundingC","handleSubmitIsAddMarksForm","handleSubmitIsChangeMarksForm","changedMarks","isDeleted","filteredMarks","noMarks","_changeformRef$curren","_createformRef$curren","changeMarkInitList","addMarkInitList","_mark$authorLastName","_mark$authorFirstName","_mark$authorPatronymi","Mark","authorLastName","authorFirstName","authorPatronymic","needTrimComment","Pen","PlusCircle","show","absolution","AttendanceMarkForm","isChangeForm","closeModal","ApprovingMedicalCertificate","getScheduleByDateRange","getUserScheduleByDateRange","fetchSchedule","formatedDate","scheduleData","getScheduleByDateRangeAction","getUserScheduleAction","createRevisionQuestion","updateRevisionQuestion","loadMetaCatalogRequest","normalizeCatalog","normalizeMetaOptionsList","normalizedObj","parseSettingsList","localList","sorting","settings","searchValue","requestConfig","normalizedRes","page","getMedicalCertificates","createMedicalCertificate","expirationDate","isImage","updateMedicalCertificate","certificateId","taskPreview","taskPreviewStatus","studentTasksSlice","_task$marks$map","_task$marks","changedMark","newMark","_task$teacherMark$map","_task$teacherMark","studentTasksReducer","getAdaptation","changeParams","changeParam","restChangeParams","changeAdaptation","getCurrentContent","convertToRaw","getDifficultyForBackend","getAnswerOptionText","getAnswerOption","getQuestionAnswersData","rightAnswer","questionAnswersData","getEntityDataByType","gaps","wordOptions","answersHTML","truthfulness","getPostQuestionData","editorState","questionHtml","convertToHtml","EntityTypes","INSERT_WORD","maximumScore","NotPublished","_question$topics","form","getDifficulty","q","createDefaultQuestion","createWithContent","_question$answerOptio","createDefaultMaterial","isEditor","textData","createEmpty","documentData","headerData","imageData","audioData","tableData","editorBuffer","audio","video","photo","HeaderSize","LARGE","widths","heights","minHeights","isFull","sortedMaterials","currentMaterial","nextMaterial","sortMaterials","needAddMaterials","File","getFilesForPatch","createdFiles","getMaterialsDataForPost","_material$audioData$f","_material$imageData$d","_material$imageData","_material$tableData$t","urls","songName","ContentState","createFromText","getMaterialsFilesPost","getMaterialsFilesPostArray","getMinIdForFields","maxId","getTempFiles","tempMaterialFile","typesOfMaterials","_typesOfMaterials","CodifierElementIconEnum","getTypeOfMaterials","materialFormValidation","_value$imageData","_value$tableData","_value$tableData$tabl","_value$tableData$tabl2","materialFieldValidation","_files$filter","_files$find","_files$find$files$","_files$find2","_files$find2$files$","correctEmbedUrl","embedVideo","_files$find3","imageFiles","_content3$data","_content3$data$map","_content3$data$map2","_content3$data2","contentIds","initialIds","imageFile","fileIndex","currentFile","_files$find4","_files$find4$files","contentData","filesData","getFileTitle","_contentData$data","_contentData$data2","contentDataIndex","_content4$table","_content4$table$table","_getStudentQuestionsD","studentQuestionsData","checkIsKinescopeUrlValid","StatusDropdownLabels","questionsBankPageData","getQuestionPage","getDropdownContainer","getDropdownSubjectContainer","selectedDropdownSubjectIndex","getParallelContainer","selectedParallelIndex","getSectionContainer","getBlockContainer","getTopicContainer","selectedTopicIndex","isNeed","handleClickOutside","contains","getSubjects","getSubjectDetails","methodistId","normalizeCourseGroups","normalizeStudentProfile","school","of","normalizeStudents","_students$map","_el$school","isExpulDatesNotEqual","expulsionDate","enrollDate","enrolmentDate","dismissDate","normalizeSubjects","teach","checkMarkIsBetween","markDate","checkIsNearestPeriod","normalizeYear","getCourseStructure","returnArray","quarters","coun","attendanceMarks","attendanceResponseData","currentQuarter","stats","quarterForMark","attendanceMark","weight","filteredAssignmentMarks","convertDate","assignmentMark","getMultipleSchoolsInputValue","selectedValues","_values","valueWithoutIndex","getQuarterMarks","average","avgScore","notCertified","testApproved","passed","getQuarterStudentMarks","getQuarterFinalMarks","finalScore","finalNotCertified","finalPassed","getQuarterStudentFinalMarks","getMeetingFilesStatus","createMeetingFileStatus","updateMeetingFileStatus","deleteMeetingFileStatus","courseMeetingFiles","courseGroupMeetingPaginate","courseMeetingPaginate","meetingFilesSlice","meetingFilesReducer","createStudentProfile","getStudentsStatistics","getStudentsStatisticsTariff","ETagLabel","ETagMainColor","ETagBackColor","ETagIcons","OnlineLessonTag","_props$isIconView","isIconView","MeetingEnterButton","isEnterButtonLoading","setIsEnterButtonLoading","useToaster","onlineLessonsProvider","getOnlineLessonLink","NotificationCard","_props$isCollapsed","isCollapsed","_props$isMeetingStart","isMeetingStarted","handleCollapseBtnClick","tags","users","canHide","tag","main_dark_icons","NotificationTimeIndicator","isMeetingFinished","timerLabel","getPeriodMark","getPeriodStudentMark","getPeriodMarkFinal","patchPeriodMark","patchPeriodMarkAction","getPeriodMarkAction","finalMark","needFinalMark","periodMarks","periodMarkType","needRewrite","getPeriodStudentMarkAction","_params$periods","allPeriods","themeData","CnMark","_ref$approved","_ref$hoverable","hoverable","isPeriodMark","withDetailedTooltip","showComment","isTestPassed","withAttendanceTooltip","attendenceData","commentLabel","filesLabel","_ref$needTrimComment","_ref$maxCommentLength","maxCommentLength","isNotSelected","onMarkClick","markStatus","showTooltip","tooltipView","detailed","na","tooltipMetaData","markType","toFixed","isMark","isComment","isChangableGrade","weightValue","weightClassName","tooltipClassName","hovered","setHovered","tooltipState","setTooltipState","weightState","setWeightState","handleDocumentScroll","handleMarkMouseEnter","_mark$getBoundingClie","handleMarkMouseLeave","commentText","trimString","handleMarkClick","Comment","Latex","onTouchStart","Tooltip","metaData","attandanceData","withPointer","with","ClockIcon","isAccept","paramsArray","_task$subject","marksToPreview","_mark$author3","_mark$author4","_data$find","_mark$author5","_mark$author6","_mark$author7","_el$mark","minDeadline","isMinDeadlineLeft","completeDate","isPassed","extraInfo","isEmptyAttempts","attemp","_attempts$0$attemptsQ","_attempts$","lastAttemptNumber","queryFilters","_queryFilters$skillsA","_queryFilters$topics","_queryFilters$difficu","_queryFilters$answers","difficultyItem","answerTypeItem","pageFilters","_pageFilters$location","_pageFilters$complexi","_pageFilters$complexi2","_pageFilters$types","_pageFilters$types2","_pageFilters$skills","_pageFilters$skills2","getQuestionsForReviewAction","getQuestionsForReview","getQuestionsOnRevisionAction","getMonitoringInfo","getMonitoringInfoAction","getNextMonitoringInfoAction","nextUrl","insertItemIntoArray","itemIndex","getStudentDataAction","postStudentProfileData","getUpdatedActionList","targetId","_list$findIndex","currentListItemIndex","getUpdatedDetailsItem","oldItems","isSavedData","_payload$data$sorting","_payload$data","_oldItems$payload$id","newData","savedData","normalizeActionsList","_data$sorting","normalizeTableData","otherItem","useFormError","formName","setErrors","setFormError","_letterRegExp$exec2","_groupNumberRegExp$ex2","firstClassLetter","secondClassLetter","firstClassNumber","secondClassNumber","sortNumber","_groupNumberRegExp$ex3","_groupNumberRegExp$ex4","tutorName","curators","curatorsNames","_curator$patronymic","sum","vacanciesCount","sudentGroupSum","tariffs","yearLessonsCount","yearOnlineLessonsCount","yearFlowLecturesCount","getPathBook","getStudentTasksParts","_url$match","setIsTablet","handleWindowResize","targetWidth","isSizeReached","setIsSizeReached","ETags","LessonTypeTag","ELessonTabTitle","LessonsColTabs","setSelected","handledType","LessonsColTabsMemo","ThemesColTabs","hasBooks","paginate","isStudentListLoading","handleTeacherClick","handleLibraryClick","handleStudentsListPaginate","isStudents","personsListNormalized","_item$lastName$","_item$lastName","_item$firstName$","_item$firstName","onTeacherClick","TeachersBlock","_paginate$maxPage","AppLoader","EmptyList","emptyLessonsPreview","meetingFile","meetingFileId","extension","needFetchFiles","isCanUpload","isShowContent","handleUploadFile","onFileCheckbox","fieldName","navigator","clipboard","writeText","onCopyFileUrl","onDeleteFile","LessonInfo","startDay","endDay","CalendarSmallIcon","TimeSmallIcon","noLessonSchedules","isTestLesson","Task","NewSubjectsCard","additionalTitle","metrics","_params$isSelected","_params$backgroundSty","backgroundStyle","_params$borderStyle","borderStyle","_params$brightnessSty","brightnessStyle","_params$hasHoverTrigg","hasHoverTrigger","MobileContent","handleEditLessonClick","styleClassConstructor","NewSubjectsCardMemo","SubjectsElementsSkeleton","_props$isInverseBackg","isInverseBackground","Content","WarningSign","textColor","AddLessonModal","selectedLessonId","setSelectedLessonId","orderNumber","lessonsList","onModalClose","onAddLesson","handlePaginate","isFirstFetching","isPaginationFetching","getErrorMessage","_errorData$extra$fiel","onLessonSelect","isShowCloseIcon","wrapClassName","getElementById","isLessonSelected","hasDates","emptyOlineLessonSchedule","emptySelfpreparationLessonSchedule","EditLessonModal","_onlineLessonSchedule","_onlineLessonSchedule2","_selfpreparationLesso","_selfpreparationLesso2","onSaveLesson","onlineLessonSchedule","selfpreparationLessonSchedule","setOnlineLesson","setSelfpreparationLesson","lessonTitle","setLessonTitle","dateError","checkIsBefore","schedulesList","datepickerTheme","components","controlPaddingHorizontalSM","paddingSM","paddingXS","paddingXXS","marginXXS","controlHeightSM","showCount","scheduleItem","onSwitchChanged","dateType","AppDatepicker","showTime","minuteStep","visibleFormat","returnFormat","onDateChanged","_onlineLesson$datetim","_selfpreparationLesso3","_selfpreparationLesso4","isTitlesEqual","isOnlineLessonEqual","isSelpreparationLessonsEqual","schedules","_onlineLesson$id","isLessonScheduleDeleted","lessonHandling","_lessonHandling$id","lessonToSave","LibraryModal","handleLibraryPaginate","handleLibraryClose","isModalShow","getTitlesString","_files$","getPdfViewerUrl","emptyPreview","getInfoFields","TeachersInfoModal","teacherInfo","_teacherInfo$user","img","externalId","getInfoContent","isSolid","isViewed","getPopoverContent","attemptsCount","completedDate","popoverTitle","AppPopover","points","allCorrectAnswersCount","allAnswersCount","maxPointAnswersCount","lastTenPoints","maxPointsVal","noData","commonColor","percent","statisticColor","chartDataNormalize","lowVal","middleVal","highVal","isStacked","series","lineDashStyle","lineWidth","visibleInLegend","seriesType","enableInteractivity","CoursesColContent","isDesktop","isCourseListLoading","handleCourseSelected","courseList","isCommonExist","isChoiceExist","isAdditionalExist","_course$studentGroup","_course$studentGroup2","_course$studentGroup3","isCourseSelected","needInsertContent","choiceCoursesList","additionalCoursesList","getStudentCourseList","getTeachersCourseList","CoursesColContentMemo","LessonsColContent","_selectedCourse$recal","lessonTarget","lessonTypeFilter","setLessonTypeFilter","isPastLessonsVisible","setIsPastLessonsVisible","isLessonListLoading","handleLessonSelect","handleAddLessonClick","isLessonsListEmpty","isWarningVisible","reserveLessonsCount","_lessonsTree$filter","getLessonTypeFilterList","onlineLessonsCount","testLessonsCount","selfPreparationCount","needAttentionCount","_item$metrics","_item$progress","targetLessonId","_lessonsTree$","viewedLesson","getLessonOrderById","getBorderByLessonType","_lesson$metrics","_lesson$progress","handlePastLessonFilterSet","handleLessonTypeSelected","LessonsColContentMemo","TopicsColContent","_topicsTree$","topicTarget","isTopicListLoading","courseTeachers","handleTopicSelect","getTopicsTreeStatus","getStudentsListStatus","isTopicListEmpty","hasPersonsList","targetTopicId","isTopicSelected","TopicsColContentMemo","SubjectsTableContent","_useGetSubjectsTreeDa","handleTeacherSelect","selectedTeacher","getTeacherInfoStatus","setMaterialViewedStatus","getCourseGroupsLessonsStatus","handleLessonScheduleStatus","lessonsStatistic","courseGroupLessonsList","courseGroupLessonsListPaginate","handleLessonScheduleError","NewSubjectsSlice","resetLessonHandlersErrors","_ref30","_ref31","_state$studentsList","_ref32","_ref33","_ref34","_ref35","_state$courseGroupLes","_ref36","_ref37","_ref38","NewSubjectsReducer","getNormalizedCalendarPlan","getNormalizedEducationPlan","EMPTY_VALIDATORS","supportedLinkTypes","convertAttendanceStatus","StatusLabelEnum","wasAbsent","isLate","wasInClass","seriousReason","illness","loaderSlice","_loaderSlice$actions","loaderReducer","getIsValidCommentSize","_mark$comment$length","isBadMark","isValidCommentSize","isValidComments","CnAttendanceMarkForm","withoutSubmitType","newMarks","setNewMarks","canSubmit","setCanSubmit","isCanSubmit","oldMark","validateCanSubmitIsChange","makeHandlerMarkDelete","makeHandlerMarkClick","eventHandler","_prevState$id","markField","makeHandlerFormSubmit","submitHandler","formApi","modified","getCommentField","isNewMark","_newMarks$index","_initialValue$index","isInvalidCommentSize","isNeedComment","Field","_ref2$input","needComment","_event$currentTarget$","_event$currentTarget","as","_fields$value$index$a","_ref6$input","renderMark","_fields$length","onCreateMarkPress","added","isCancel","fetchCompletedHWStatus","scheduleHomeworksStatus","themeHomeworks","scheduleHomeworks","_scheduleHomeworks","scheduleHomeworkPreview","_scheduleHomeworkPrev","completedHomeworks","progressesStatistics","fetchStatisticsStatus","fetchAssignmentProgressPreviewStatus","homeworkPreview","homeworkSlice","resetHomeworkState","newAssignmentProgress","_newAssignmentProgres","homeworkReducer","locationValidators","complexityValidators","typeValidators","getAnswers","updateFormValues","codifierTree","skillsTree","_block$filters$locati","_block$filters2","_block$filters2$skill","getParallelsTitle","_first$titleShort","_second$titleShort","titleShort","_parallel$titleShort3","_parallel$titleShort","_parallel$titleShort2","getClassTitle","parall","_parallel$titleShort6","_parallel$titleShort4","_parallel$titleShort5","normalizeEventRooms","_getDateComponents$ti","dayOfWeek","proctor","_proctor$patronymic","allPlace","occupiedPlace","isRejoined","st","isLocked","dayTitle","getEventsStatus","getProctorsStatus","createEventRoomStatus","deleteEventRoomStatus","getEventRoomsRangeStatus","studentEvents","proctorsFromRooms","coursesFromRooms","eventRoomsMap","proctors","proctoringSlice","deletedRoomId","eventRoomDetails","newEventRoom","aDate","bDate","leader","getProcotors","proctoringReducer","getStatusMaterials","postStatusMaterials","getStatusFiles","patchStatusMaterials","patchStatusMaterialOrdering","patchStatusMaterialWithOrdering","deleteStatusMaterials","postStatusMaterialFile","deleteStatusMaterialFile","lastCreatedFile","checkAnswerStatus","materialsData","resetMaterials","addExerciseMaterialQuestion","exerciseMaterialId","changeTempMaterial","_action$payload","updatedTempMaterials","addFilesForDelete","createdFile","resetFilesForDelete","tempMaterialsData","fromEditPage","fileData","tempFilesIndex","exerciseAnswerData","_payload$","_payload$2","resetFilesForDeleteAction","getTemplateAssignmentStatus","getAssignmentMarksStatus","getAssignmentsProgressIntervalStatus","templateAssignments","assignmentsProgressInterval","getIdByPost","verificationType","executionTime","assignmentLevel","assignmentSlice","resetIdByPost","resetIdByPostAction","assignmentReducer","getCodifierMaps","_subject$parallels$ma","subjectIds","subjectsMap","isFetched","_parallel$sections$ma","_section$blocks$map","_block$topics$map","getSubjectsInCodifier","getCodifierSubjectDataStatus","postDataStatus","postCodifierBlockStatus","isMethodistFlag","patchDataStatus","subjectsIds","codifierSlice","codifierDataWithSortedParallel","_getCodifierMaps","_section$id","_section$title","_subject$parallels5","_subject$parallels6","_block$id","_block$title","_subject$parallels7","_subject$parallels8","_parallel$sections5","_payload$$ordering","_block$topics2","newTopicId","questionsQuantityRevision","_subject$parallels9","_parallel$sections6","_subject$parallels10","_subject$parallels11","_subject$parallels12","_subject$parallels13","_subject$parallels14","_subject$parallels15","_subject$parallels16","_state$codifierData$f","_state$codifierData$f2","_state$codifierData$f3","_state$codifierData$f4","_state$codifierData$f5","selectedSectionBlock","_subject$parallels17","_parallel$sections7","_parallel$sections8","_section$id2","_parallel$sections$fi","_parallel$sections9","_parallel$sections9$f","_subject$parallels18","_parallel$sections10","_parallel$sections10$","_parallel$sections10$2","_parallel$sections10$3","_parallel$sections11","_section$blocks6","_block$id2","_section$blocks$find$","_section$blocks7","_section$blocks7$find","_block$topics4","_subject$parallels19","_parallel$sections12","_parallel$sections12$","_parallel$sections12$2","_parallel$sections12$3","_parallel$sections12$4","_parallel$sections13","topicToTransfer","_ref39","_ref40","_section$blocks8","_section$blocks9","_block$topics5","_ref41","_block$topics$filter","_block$topics6","_ref42","_meta$arg$id","_ref43","_meta$arg$title","_ref44","_meta$arg$order","_topicToTransfer$ques","_topicToTransfer$ques2","_topicToTransfer$ques3","_newBlocksTopicList","_payload$3","newBlocksTopicList","_ref45","_ref46","_subject$parallels20","_ref47","_ref48","_subject$parallels21","_parallel$metasubject5","_metasubject$skills2","_ref49","_ref50","_getSubjectsMaps","maps","_ref51","_ref52","_ref53","_ref54","_subject$parallels22","_getCodifierMaps2","_ref55","_ref56","_subject$parallels23","_getCodifierMaps3","_payload$4","_ref57","resetCodifierState","codifierReducer","validateVideo","_values$videoData","AddKinescopeVideo","videoProps","setVideoUrl","setIsError","useField","MonitorPlayIcon","variant","useOuterClick","clickOutOfElement","_element$current","handleOutsideClick","CnRateButton","RateButton","onAddMark","isAddMarkFormOpen","setIsAddMarkFormOpen","handleRateButtonClick","handleAddMarkFormClose","handleAddMark","CnAnswer","AnswerWrapper","_input$value$file$len","_input$value$file","needHideFileAddButton","needValidation","needHideFileDeleteButton","isOnCheck","needQuestionLink","onUploadFile","onChangeFilesProgress","uploadProgressesInput","uploadProgresses","setUploadProgresses","handleFileDelete","_questionFiles$input$","_questionFiles$input$2","handleUploadProgress","newProgresses","handleQuestionLinkClick","handleFileOversize","errorMessage","Answer","questionClassName","optionsClassName","needHideFileSendButton","withEditor","needHideFileEditButton","onQuestionLinkClick","onFileOversize","needHideCopyToClipboardButton","getStudentAnswers","getAnswerAttempts","selectedAttempt","_selectedAttempt$answ","_filter$map","_question$file","_questionFiles$questi","getBestAttempt","attemptsData","questionsValidation","checkIsHardDeadlineLeft","isTaskFinished","showHardDeadlineLeftToast","CnMarkClassName","getAttemptLabel","getAttemptDropdownOptions","getAttemptByLabel","attemptsIdsByLabelsAccumulator","getAttemptsIdsByLabels","CnAttemptDropdown","AttemptDropdown","onSelectedAttemptChange","attemptDropdownOptions","DropdownCustom","IDropdownType","optionWithId","DraftComponent","isHardDeadlineLeft","useFormState","answerAttemptsData","patchData","filteredQuestions","_questionFiles$el$id","_questionFiles$el$id$","_questionFiles$el$id2","_questionFiles$el$id3","saveDraftRef","draftInterval","DraftTime","updateDraftStatus","shouldShowLastAttempt","setShouldShowLastAttempt","setIsHardDeadlineLeft","isJustFileUploaded","setIsJustFileUploaded","_useAppSelector3","_useAppSelector4","isDeferredAssignmentTimeExpired","unlisten","listen","currTime","getCurrentTimeByMoscow","setShowAttempt","setSelectedAttempt","showAttempt","_answerAttemptsData$f","draft","needResetShowAttemptState","selectedQuestion","canFetchQuestion","questionsOrder","normalizedQuestions","_attempt$answers","foundQuestion","getInitValues","attemptNumber","getAttemptNumber","markComment","attemptData","getComment","questionQuantity","timeIsUp","overdue","isComplete","showDropdown","canReupload","onReapload","setOnReapload","actionButtonText","needAttemptUpdate","needAttemptUpdateRef","isLeft","handleReuploadFiles","isAcceptCreation","handlerPatch","allFilesUploaded","setAllFilesUploaded","overdueHomework","invalid","_values$questions","_item$answer","_item$answer2","customClasses","calcRefreshTime","lastRefreshDate","secondsLeft","minutesLeft","seconds","getRefreshDateValue","save","sessionStorage","useRemainingTime","_params$save","setTime","timerRef","refreshDate","setTimer","setRefreshDateValue","useLogout","isLogoutLoading","setLogoutLoading","_window","_window$$chatwoot","Sentry","$chatwoot","origin","getCurrentDay","getCorrectDateFromDayjs","useErrorProcess","getStudentGroups","_params$subjects","user_role","assignedQuestionsList","questionNumbersList","_loop","_i","_questionNumbersList","currentNumItems","delegateYield","_data$id","topicsIds","_item$parallels","getCurrentTreeBranch","_tree$parallels","getTopicsValues","skillsList","getSkillsValues","getAnswerTypesValues","transformExecutionTime","_props$map","transformVerificationType","_props$map2","currentAssignment","_currentAssignment$ve","_currentAssignment$ex","_currentAssignment$we","level","_first$excludeIds","_second$excludeIds","_first$answersType","_second$answersType","_first$difficulty","_second$difficulty","_first$topics","_second$topics","_first$skillsAnd","_second$skillsAnd","_first$skillsOr","_second$skillsOr","considerExcludedIds","isFiltersEqual","_first$answersType2","_second$answersType2","_first$difficulty2","_second$difficulty2","_first$topics2","_second$topics2","_first$skillsAnd2","_second$skillsAnd2","_first$skillsOr2","_second$skillsOr2","oldList","_newList$filter","oldItem","isUpdatedNumber","normalizedList","newVal","_currentState$positio","_currentState$positio2","_currentState$positio3","_currentState$positio4","_currentState$positio5","_currentState$positio6","_currentState$positio7","_currentState$positio8","_toObject$singleQuest","_fromObject$singleQue","_fromObject$singleQue2","_toObject$searchBlock","isAlreadyExist","isFromSearchBlock","_toObject$singleQuest2","_toObject$singleQuest3","_toObject$searchBlock2","_fromObject$searchBlo","_toObject$searchBlock3","deletedBlockIndex","CnAssignedHomeworkLine","AssignedHomeworkLine","_student$lateDuration","showCompletedTasks","showAssignedTasks","showOnCheckTasks","showDeferredAssignedTasks","_ref$withAttendance","withAttendance","_ref$editAttendance","editAttendance","openedMarksLists","setOpenedMarksLists","handleExpandIconClick","getLatestMark","highestMark","currentMark","presenceSelectHandler","normalizedValues","normalizePresenceValues","lateTime","lateDuration","selectHandler","DropdownLabel","needHideIcon","isListOpened","_studentTask$marks","isDeferredAssigned","isCompletedWithoutMarks","withMarks","hasDeferredAssignedErrors","_studentTask$teacher$","_studentTask$teacher","_studentTask$teacher$2","_studentTask$teacher2","_studentTask$teacher$3","_studentTask$teacher3","_studentTask$errorsLi","teacherName","errorList","getTaskInfo","isCompleted","HwProcess","Passed","dark_grey_color_3","Expand","isVisible","CnHomeworkLine","HomeworkLine","needDisableCheckboxes","makeHandlerCheckboxChange","taskIndex","oldValue","LATE","fieldsValue","_fieldsValue$index","_ref3$input","handleCheckboxChange","CnHomeworkTable","HomeworkTable","hasSelectAllRow","formProps","_ref$isEditForm","isEditForm","_ref$showCompletedTas","_ref$showAssignedTask","_ref$showOnCheckTasks","_ref$showDeferredAssi","isTaskSelected","assignedHomeworks","studentHomeworks","assignedTasks","assignedTask","makeHandlerStudentCellClick","handleHomeworkClick","colSpan","GroupAvatars","avatars","setCheckboxes","Avatar","isOnAdaptation","resetCheckbox","AssignmentProvider","getAssignmentPeriodsAction","periodsData","assignmentPeriods","onlineLessonSlice","collapsedNotificationsList","setMeetingNotificationsList","meetingNotificationsList","deleteNotificationFromListByUrl","_state$meetingNotific","setCollapsedNotificationsList","_onlineLessonSlice$ac","onlineLessonsReducer","getAdaptationProgressAction","CnInfoStatus","_ref$passed","_ref$isSelected","_ref$deadline","_ref$assignedDate","_ref$showStatusLabel","needMainTitle","showOverdued","statusLabel","timePassed","overdueTime","beforeDeadlineTime","handleCreateMarkSubmit","handleChangeMarkSubmit","statusCardRef","over","notMain","IconElement","DeferredHomeworkIcon","CnHomeworkStatus","autoIssue","autoIssueSetUp","autoIssuetotalTasks","autoIssuetasks","givenHometaskTitle","passOffTasks","toCheckTasks","titleInfo","sizeInMB","formErrorSlice","formErrorReducer","normalizeStatus","PRESENT","lateMinutes","getMeetingStatistics","_studentGroups$find","studentsExtended","teachersExtended","clientId","redirectUri","scope","csrfmiddlewaretoken","CnTooltip","_ref$view","_ref$pointerPosition","pointerPosition","CENTER","_ref$pointerSide","pointerSide","_ref$filesLabel","_ref$withPointer","_ref$isError","listData","showMeta","semester","getMeta","handleMouseDown","isList","isCameraDisabled","CamDisabled","Cam","cameraDescription","isMicDisabled","MicDisabled","Mic","micDescription","isUserDisabled","UserCircleDisabled","UserCircle","userDescription","isValid","markEvaluationType","CnClassTaskView","TaskView","_ref$isTemplate","_ref$isPosted","_ref$canRepeatTask","canRepeatTask","_ref$isForMethodist","onTitleClick","_ref$withCheckbox","withCheckbox","TaskNoMark","TaskTemplate","template","normal","TaskDatePicker","_dayjs","disabledTime","handleDateChange","minute10","newMinute","valueOf","customFormat","dayValue","showNow","timeFormat","TaskTimePicker","nullTimeText","_props$valuePrefix","valuePrefix","setOpen","handleTimeChange","formattedTime","onlyMinutes","onOpenChange","renderExtraFooter","CnTask","_assignmentPeriods$fi","isProctor","isShowDeleteModal","setIsShowDeleteModal","setCalendarStartType","calendarEndType","setCalendarEndType","setCalendarDurationType","handleMouseLeave","handleMouseEnter","handleDateTimeChanged","handleTitleClick","onCloseDeleteModal","handleDeleteSubmit","handleFormError","handleFormChange","durationType","taskBlockRef","_e$currentTarget","dropdownOptions","querySelector","_taskBlockRef$current","_useMemo2","momentDateTimeStart","momentDateTimeEnd","_useMemo3","_useMemo4","formattedDayAndMonth","formattedDatetimeStart","formattedDatetimeEnd","teachersListNormalized","change","disableValues","_options$timeToComple","_options$timeToComple2","_values$timeToComplet","CnTaskBlock","tasksStab","_ref$tasks","_ref$blockTitle","tasksProgressInterval","stateValues","setStateValues","courseIdFromUrl","_lessonDetails$Number2","_useRole2","onClickCreate","handleTaskTitleClick","scrollTo","firstRender","_task$type","Title","inscription","onClickMove","isTask","getNavigationMenuPages","hasNewNews","hasMeta","isTutor","isLibrarian","showGroupActions","home","pathMatchType","newSubjects","hasBadge","downloadAnyDeskButton","smartBoardButton","getNavigationOptionsButtons","cnQuestionLocationDropdown","QuestionLocationDropdown","_input$value","_ref$isSkill","isSkill","handleSelectSkill","_ref$selectedSkills","_ref$validators","onMultiSelect","flagReset","setFlagReset","_ref$searchPage","searchPage","disableValidation","showAllSubjects","setLocation","locationSkill","setLocationSkill","dropdownPlaceholder","newLocation","handleSelectLessonCheckbox","currentLocation","lessonLocation","currentLocationSkill","newLocationSkill","setSymbols","PX_FOR_SYMBOL","setWidth","useQuestionLocationRows","fieldValidators","codifierSelectorInitValues","resetInput","isTextArea","isLocationDropdown","CodifierSelector","onTopicCheckboxSelect","initValues","showSelectSubject","cnExercise","functionStab","ExpandedMaterialExerciseContent","_ref$onDelete","onCreateQuestion","onSelectQuestion","onChangeQuestion","onEditQuestion","handleCheckExercise","ExpandedExerciseMaterial","onSelectQuestiuon","cnTable","cnText","cnPreview","editorFieldName","htmlFieldName","isLastQuestion","handleUploadImage","handleDeleteImage","isPreview","ExpandedAudioMaterial","audioUrl","showForStudents","ExpandedVideoMaterial","KinescopeVideoCard","ExpandedTextMaterial","studentViewClassName","ExpandedImageMaterial","onUploadImage","onDeleteImage","ExpandedDocumentMaterialStudent","ExpandedDocumentMaterialTeacher","ExpandedHeaderMaterial","ExpandedTableMaterial","cellClassName","getStaffProfilesStatus","getSubjectsListStatus","getCriteriaGroupsListStatus","getTeacherProgressStatus","getChartDataStatus","getTeachesWorkDaysStatus","selectedTeacherWorkDays","questionsCreatedDiagramData","staffProfiles","subjectsList","selectedTeacherId","criteriaGroups","teacherMonitoringData","criteriaSettings","criteriaSettingsErrors","summaryTableData","summaryChartData","questionsCreatedTableData","summaryCriteriaList","getTeacherMonitoringDataStatus","selectedTeacherInfo","selectedTeacherProgress","selectedTeacherQuestionsCreatedInfo","selectedTeacherQuestionsCreatedInfoError","teacherQuestionsCreatedDiagram","statisticsMonitoringSlice","setSelectedTeacher","_meta$arg","isFirstLoading","_state$staffProfiles$","_state$staffProfiles","_meta$arg2","_state$subjectsList$r","_state$subjectsList","_payload$results2","_JSON$parse","_JSON$parse$extra","_JSON$parse$extra$fie","_JSON$parse$extra$fie2","_error$message","_state$selectedTeache","_meta$arg$questionsCo","_meta$arg3","_meta$arg3$questionsC","_state$selectedTeache2","_state$selectedTeache3","parsedErrors","restWorkDays","_excluded3","restQuestionsCreated","_excluded4","isSavingLoading","_JSON$parse2","_JSON$parse2$extra","_error$message2","_payload$diagram","_payload$diagram2","_payload$diagram2$dat","_payload$diagram2$dat2","diagram","_meta$arg4","statisticsMonitoringReducer","getCriteriaOptionsList","withSummary","criteriaDefaultOption","mainList","criteria","ProfileProvider","postStudentCard","changeMail","changePhone","inviteParent","getStudentCardAction","updateStudentCardAction","updateStudentEmailAction","updateStudentPhoneAction","postParentInviteAction","isCanEdit","profileReducer","changePasswordErrors","errorData","getFieldsError","isStudentCardLoading","_payload$parents","parents","isEmailUpdating","isPhoneUpdating","isInviteSending","HomeworkDisplay","useGetHomeworkFilters","displayQuery","OVERDUE","TOMORROW","ARCHIVE","AVAILABLE_FOR_EXECUTION","ALL","CHECKED","PENDING_CHECK","filterCourses","filterTypes","useGetScrollPosition","scroll","setScroll","_element$current2","isScrollEnd","_element$current3","_element$current4","_element$current5","_element$current6","_element$current7","_element$current8","scrollWidth","isScrollStart","_element$current9","_element$current10","ComparativeMonthsSelector","selectedDate","onMonthSelected","defaultDates","AppMultipleMonthpicker","onMonthSelectedLocal","deprecatedValue","ESegmentTitle","getMaxQuestionsCount","maxTargetVal","maxCurrentVal","maxVal","getOptions","selectedSegmentList","daysCountInMonth","segmentToDelete","graySegment","needShowOnlyLines","needShowSplitSegment","showAllHorizontalTicks","seriesList","_data$find$color","seriesOpt","segmentOpt","lineOpt","verticalPoints","horizontalPoints","ticks","getData","colsArr","filteredData","_target$list$find$val","_target$list$find","_current$list$find$va","_current$list$find","rowsArr","areaValue","lineValue","chartPoints","tooltipContent","getTooltipContent","getDuplicatedSegments","listString","dayNum","tooltipContentDate","tooltipData","CriteriaChart","sortedChartData","lineDiagram","diagramProgress","stepDiagram","diagramMin","lineItem","_stepItem$points","_stepItem$points$redu","_lineItem$points$redu","stepItem","getSortedData","legendList","setLegendList","_second$target$count","_second$target","_first$target$count","_first$target","_props$showAllHorizon","duplicatedSegments","renderOptions","isInvalidData","columnsToCheck","legendKey","CriteriaCollapse","criteriaList","needCloseAll","onOpenCollapseItem","openedCriteria","setOpenedCriteria","renderItems","_criteriaList$item","newKey","_criteriaList$key","CriteriaTableContent","summaryList","childrenOnTop","onRowClick","Table","emptyText","summary","Summary","fixed","Row","Cell","onRow","record","sticky","offsetScroll","criteriaData","selectedMonth","dataStartValue","getChartOptions","currMaxValue","getMaxDaysInMonths","tooltipContentTitle","QuestionsCreatedContent","_questionsCreatedDiag","_questionsCreatedDiag2","monthList","_criteriaData$table","showFullAxis","maxDaysCount","currentEasy","minEasy","currentHard","minHard","currentMedium","minMedium","allCurrentItem","allMinItem","formattedMonth","tableColumns","getParsedCriteriaData","ChartTooltip","radarList","_radarList$find$color","_radarList$find","SummaryCriteriaChart","getRadarList","_getRadarChartData","_chartData$","_chartData$$points","criterias","radarData","criteriaNum","_target$value$current","_target$value$max","_target$value$current2","ticksStep","ticksCount","trunc","getRadarChartData","RadarChart","outerRadius","PolarGrid","gridType","PolarAngleAxis","dataKey","axisLineType","PolarRadiusAxis","angle","tick","dominantBaseline","dx","tickCount","Radar","fillOpacity","TeacherWorkingSettings","_props$defaultValue","_props$maxValue","_props$minValue","defaultReasonValue","defaultCustomReason","onApply","selectedReason","setSelectedReason","setValue","customReason","setCustomReason","reasonsOptions","EReasonsTitles","isButtonDisabled","AppNumberInput","addonBefore","addonAfter","parser","precision","changeReason","_errorData$extra","errorText","convertError","extraFields","isArrayOfStrings","getUpdatingErrors","validationErr","MILLISECONDS_IN_HOUR","MINUTES_IN_DAY","publishStatus","getStudCourses","getAllCoursesStatus","getCoursesHoursWeekStatus","allCoursesParallelsData","allCoursesCalendarData","courseHoursWeekWithField","canFillCourse","getCourseDetailStatus","courseDetail","courseSlice","resetCourseCalendarParallelState","resetGetAllCoursesStatus","resetGetCoursesHoursWeekStatus","stateCourse","endToEndGeneralLessonOrdering","resetCourseState","courseReducer","actionsHistory","actionsPlanned","actionsDetails","createActionModal","groupActionsSlice","setActionsQuery","clearDetails","clearModalData","changeCurrentModalData","currentModalData","clearTableError","actionStudents","tableDataError","changeNextStepModalData","nextStepModalData","tableDataStatus","tablePagination","errorFields","newHistoryData","actionsHistoryStatus","actionsHistoryError","newPlannedData","actionsPlannedStatus","actionsPlannedError","normalizedPayloadResult","historyListData","actionsHistoryPagination","plannedListData","actionsPlannedPagination","actionsHistoryMoreStatus","actionsPlannedMoreStatus","_state$actionsHistory","_state$actionsHistory2","_state$actionsPlanned","_state$actionsPlanned2","newDetailsData","actionsDetailsStatus","actionsDetailsError","_state$actionsDetails","cancel","updateType","createActionModalStatus","createActionModalError","_state$createActionMo","controls","actionType","method","_state$createActionMo2","_errorText","avgScoreFilters","widgetList","groupActionsReducer","_groupActionsSlice$ac","one","two","five","getNumbersNoun","getNumberEnding","lastNam","useGetThemeQuery","initValue","setThemeId","ext","_info$userRoles","_info$userRoles2","_info$userRoles3","_info$userRoles4","_info$userRoles5","_info$userRoles6","_info$userRoles7","_info$userRoles8","_info$userRoles9","_info$userRoles10","_info$userRoles11","_info$userRoles12","_info$userRoles13","_info$userRoles14","tariffTitle","STUDENT","CURATOR","TUTOR","isNewsEditor","NEWS_EDITOR","LIBRARIAN","isStaff","normalizeHomeworkItem","_homework$assignedDat","_homework$courseGroup","_homework$course","_homework$lesson$id","_homework$lesson","_homework$subject$id","_homework$subject","_homework$description","getHomeworksObject","teacherTasks","combineHomeworks","getLinkToLesson","isAssembly","lessonTab","getLabelByScheduleType","PARENT_MEETING","getAllEducationalPlansStatus","getEducationalPlanStatus","postEducationalPlanStatus","patchEducationalPlanStatus","deleteEducationalPlanStatus","getEducationalParallelsStatus","getAllCalendarPlansStatus","educationalPlansData","educationalPlans","calendarPlansData","educationalPlanSlice","resetEducationalPlanState","educationalPlanReducer","deleteEducationPlan","CnLoader","PreloaderArrows","PreloaderLogo","CnGroupAvatars","avatar","useGetSchedulePeriod","periodTime","periodLabel","checkIsMaterialChanged","initialMaterial","getMaterialsDataForPostNews","_ref$markup","getMaterialsDataForNewsElement","getMaterialsFilesDeleteArray","oldMaterial","newMaterial","oldFiltered","newFiltered","_autoIssuetasks$","totalTasks","autoIssueTime","getAdaptationProgressStatus","adaptationProgressStudents","adaptationProgressSlice","setAdaptationItemProgress","adaptationSkills","_adaptationProgress$a","adaptationProgressReducer","calendarPlanStatus","calendarPlanListStatus","createCalendarPlanStatus","createCalendarPlanPeriodStatus","createSchoolHolidaysStatus","deleteCalendarPlanStatus","patchCalendarPlanPeriodStatus","patchCalendarPlanStatus","patchSchoolHolidaysStatus","calendarPlanSlice","editCalendarPlan","isEditCalendarPlan","resetCreatedPlanId","createdPlanId","resetCalendarPlan","_state$calendarPlanLi","calendarPlanList","resetCalendarPlanState","calendarPlanReducer","allDataFetchStatus","getNewsStatus","updateNewsLikesStatus","createNewsStatus","updateNewsStatus","getNewsByIdStatus","deleteNewsStatus","seletedNews","hasUnreadNews","newsSlice","unreadNewsExists","likesCount","resetNewsState","newsReducer","getPeriodMarkStatus","patchPeriodMarkStatus","getPeriodMarkFinalStatus","quarterMarks","periodsCache","courseGroupCache","periodMarkFinal","quarterStudentMarks","periodMarkSlice","resetPeriodMarkState","periodMarkReducer","questionsFetchStatus","questionsForReviewData","questionsOnRevisionData","questionsReviewRevisionSlice","questionsReviewRevisionReducer","resetQuestionReviewState","getInfo","typeOfInfo","getInfoDescription","isTurnedOn","isRecognizedFace","getMarksStatus","getAttendMarksStatus","dataMap","attendanceSlice","attendanceMap","studentInfo","cameraDuration","presenceDuration","studentImage","studentFirstName","studentLastName","presenceInfo","cameraInfo","faceInfo","normalizeAttendanceData","markData","attendanceReducer","resetAttendanceState","fetchGroupsStatus","fetchPeriodTopicsStatus","fetchCourseGroupStudentStatus","fetchPeriodStatus","getGroupsWithEduPlanStatus","getPeriodTopicsWithStudentStatus","getGroupStatistics","groupStatistics","allLessonsCount","allOlLessonsCount","allSpLessonsCount","passedLessonsCount","passedOlLessonsCount","passedSpLessonsCount","reserveLessonsAvailable","reserveLessonsCurrent","eduPlan","patchParams","courseGroupSlice","_courseGroup$endToEnd","endToEndLessonOrdering","_courseGroup$endToEnd2","_courseGroup$endToEnd3","studentsData","groupsMap","_payload$students","resetCourseGroupState","courseGroupReducer","postStatusLessons","patchStatusLessons","deleteStatusLessons","publishStatusLesson","lessonSlice","resetCourseLessonState","resetStatuses","_updatedLessonSchedul","_state$lessons$find","_lesson$order","_state$lessons$find2","_payload$lessons","_payload$lessonSchedu","lessonItems","_ref2$datetimeStart","_ref2$datetimeEnd","canEditEndData","normalizeCourseLesson","courseLessonReducer","normalizeScheduleEvents","_data$lessonSchedule","_data$assemblySchedul","assemblySchedule","_data$eventRoomSchedu","eventRoomSchedule","normalizeLessonSchedule","EditFile","customTitle","normalizeAssemblies","User","parentName","normalizeScheduleDayEvents","_data$lessonSchedule2","_data$assemblySchedul2","_data$eventRoomSchedu2","missedLessons","sheduleDateRange","userSchedule","missedLesson","getMissedLessonStatus","getMeetingUserStatus","patchMissedLessonStatus","userScheduleStatus","getMeetingJoinRedirectStatus","scheduleSlice","resetScheduleState","scheduleReducer","validateCheckboxes","taskCheckboxes","entry","tools","_initialValues$studen","currentCheckbox","changeValue","attemptMark","homeworkItems","hwProgress","hwProgressIndex","_item$courseGroup","_hwProgress$courseGro","currentItem","assignmentCount","getStatusThemes","postStatusThemes","patchStatusThemes","deleteStatusThemes","publishStatusTheme","themeSlice","resetCourseThemesState","_newTheme$isPublished","_newTheme$isPublished2","courseThemeReducer","meetingSlice","meetingData","resetMeetingState","meetingReducer","getMonitoringInfoStatus","getNextMonitoringInfoStatus","nextMonitoringInfo","monitoringInfo","monitoringSlice","_state$monitoringInfo","_state$monitoringInfo2","resetMonitoringState","monitoringReducer","notes","noteSlice","resetNotesState","noteReducer","postSearchBlock","patchSearchBlock","getDetailQuestion","questionBlockStatus","fetchAssignmentSearchBlocksStatus","questionDetail","searchQuestionBlock","searchQuestionBlocksArray","questionBlock","stateUpdated","questionsSearchBlockSlice","deleteFormValuesStore","updateFormValuesAction","setUpdateFlag","resetUpdateFlag","filterArray","_state$questions$filt","oldQuestions","pop","_state$createdQuestio","oldCreatedQuestions","newCreatedValue","_questionsSearchBlock","questionsSearchBlockReducer","getStudentDataStatus","studentSlice","resetStudentDataState","studentReducer","CheckboxField","composeValidators","onFocus","DetailedCn","DetailedAnswerFields","_ref$checkboxesValida","checkboxesValidators","needHideSmartBoardToggle","answerOption","getObjectPropertyByString","checkboxError","setCheckboxError","InlineStyles","CommonBlocks","ListTypes","ActionBlockTypes","ActionBlockComponentCn","ActionBlockComponent","blockProps","ActionIcon","INFO_BLOCK","Info","WARNING_BLOCK","WarningTriangle","THEOREM_BLOCK","Theorem","QUOTE_BLOCK","Quote","DEFINITION_BLOCK","Definition","CODE_BLOCK","EditorBlock","getActionBlockRenderer","component","CnOptionButton","OptionButton","_ref$active","addEntity","entityType","mutability","entityData","_ref$selectAfterCreat","selectAfterCreate","_ref$insertSpaceAfter","insertSpaceAfter","currentEntity","getSelectionEntity","entityRange","getEntityRange","isBackward","getIsBackward","merge","anchorOffset","focusOffset","entityKey","createEntity","getLastCreatedEntityKey","contentState","Modifier","replaceText","getCurrentInlineStyle","newEditorState","getAnchorOffset","acceptSelection","insertText","addNewBlockAt","pivotBlockKey","newBlockType","initialData","initialText","blockMap","getBlockMap","blocksBefore","toSeq","takeUntil","blocksAfter","skipUntil","newBlockKey","genKey","ContentBlock","depth","newBlockMap","toOrderedMap","newContent","selectionBefore","selectionAfter","anchorKey","focusKey","CnCodeBlockComponent","CodeBlockWrapper","handlePastedText","savePastedStyles","getSelectedBlock","blockType","CODE","shouldUseText","getType","contentBlock","htmlToDraft","mergeEntityData","replaceWithFragment","List","PHRASE_REGEX","NOT_AVAILABLE_CHAR_REGEX","isPhraseSelected","plainText","startOffset","getStartOffset","endOffset","getEndOffset","removeEntityFromSelection","applyEntity","ActionBlockOptionCn","ActionBlockOption","getAnchorKey","TheoremSmall","CodeIcon","CnBlockOption","BlockOption","Icon","ORDERED_LIST_ITEM","OrderedListIcon","UNORDERED_LIST_ITEM","UnorderedListIcon","RichUtils","toggleBlockType","CnInlineOption","InlineOption","toggleInlineStyle","getSelectionInlineStyle","BOLD","BoldTextIcon","ITALIC","ItalicTextIcon","STRIKETHROUGH","StrikethroughTextIcon","UNDERLINE","UnderlinedTextIcon","useHandleCopyCut","insertWordDecorator","strategy","findEntityRanges","character","getEntity","decoratedText","handleCopyCut","onCopy","onCut","AddInsertionPopUp","forwardRef","InsertWordOption","onEnter","onSave","startValue","spellCheck","InsertWordPopUp","setOptions","setInPopup","onOptionEnter","setActiveIndex","onOptionSave","_option","_index","onOptionDelete","setPosition","handlePopUpStyles","passive","onPopupClick","activeIndex","activeInputRef","focus","onOptionFocus","PopupType","InsertWordProvider","editorRect","popupPosition","setPopupPosition","CREATE","popupType","setPopupType","currentInsertationOptions","setCurrentInsertationOptions","selectedText","setSelectedText","inPopup","discardChanges","handlePopupPosition","_window$getSelection","_window$getSelection$","winSelection","rangeCount","selectionRect","getRangeAt","getSelectionText","selectionRectRelativeToScroll","rect","pageXOffset","documentElement","pageYOffset","createRectRelativeToScroll","container","handleResize","selectedEntity","UPDATE","createWordInsertEntity","Entity","mergeData","ReactDOM","createPortal","latexDecorator","LATEX","OptionPopUpWrapperCn","OptionPopUpWrapper","setIsShown","onSaveClick","onCancelClick","onOutsideClick","_ref$isUseOuterClickR","isUseOuterClickRequired","_ref$isSaveDisabled","isSaveDisabled","handleSaveClick","LATEX_REGEX","LatexPopUpCn","LatexPopUp","latex","setLatex","onInputChange","handleSaveBtnClick","LatexOptionCn","LatexOption","isPopUpShown","setIsPopUpShown","togglePopup","insertLatex","setEntity","selectionState","getHasFocus","focusPopupInput","handleSave","removeRange","removeLatexEntity","selectionWithOffset","handlePopupOutsideClick","FormulasIcon","LinkWrapperCn","linkDecorator","LINK","popUpStyles","setPopUpStyles","handleLinkMouseEnter","_link$getBoundingClie","handleLinkMouseLeave","openLink","linkTab","OpenLinkIcon","LinkPopUpCn","LinkPopUp","setUrl","isBlank","setIsBlank","isURL","isUrlCorrect","setIsUrlCorrect","onUrlChange","newUrl","onTextChange","withError","LinkOptionCn","LinkOption","addLink","LinkIcon","hidden","OptionsGroupWrapper","customBlockRenderMap","wrapper","customRenderMap","blockRenderMap","CnCustomEditor","CustomEditor","setEditorState","_ref$toolbarHidden","toolbarHidden","_ref$insertWords","insertWordContainerRef","_ref$savePastedStyles","_ref$disableActionBlo","disableActionBlocks","needLimitHeight","setEditorRect","decorators","handleRect","onTextPaste","handleEditorStateChange","blockKey","currentBlockMap","currentBlock","changedBlock","newMap","UNSTYLED","characterList","getCharacterList","getDepth","textParts","newBlockState","textLine","newBlockStateMap","nreBlockContent","TabPress","getFocusOffset","Editor","editorClassName","toolbarClassName","onEditorStateChange","toolbar","customDecorators","customBlockRenderFunc","toolbarCustomButtons","EditorField","useForm","updateFormState","AddOptionButton","TextInputFieldCn","TextInputField","touched","useTouched","itemTypes","MultipleCn","BtnGroupCn","ARRAY_ELEM_CALL_REGEXP","MultipleAnswerFields","onOptionCopy","moveFieldsHandler","_useDropdownDots","useDropdownDots","handleDropdownDotsMouseEnter","handleDropdownDotsMouseLeave","handlerId","getHandlerId","hover","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","_useDrop2","drag","_useRefForDrag","useRefForDrag","handleContainerBlur","handleContainerFocus","hideToolbarOnBlur","DropdownDots","NoteBlanks","truthfulnessArr","OpenCn","OpenAnswerFields","TextareaFieldWrapperCn","TextareaFieldWrapper","chooseAddOptionButtonText","QuestionCn","SQUARE_BRACKETS_REGEXP","Question","_ref$detailedCheckbox","detailedCheckboxesValidators","_ref$multipleCheckbox","multipleCheckboxesValidators","_ref$isBlocked","QuestionField","questionsFields","useFieldArray","answerOptionsFields","moveMultipleFieldsHandler","swap","_name$match","_name$match$pop","handleDeleteCard","Toggle","handleToggleChange","RadioField","customClassNames","createNewAnswerOption","QuestionsList","ExpandedQuestion","_state$values","_state$values$questio","CnContentLoader","ContentLoader","ContentLoaderSvg","BigOgLogoSvg","CnAppSkeletonCard","AppSkeletonCard","borderRadius","margin","skeletonButtonStyle","CnMethodistTrainerCard","MethodistTrainerCard","_state$newMaterials$t","isSearchBlocksLoading","_state$newMaterials2","_state$newMaterials2$","trainerId","isTrainingLoading","setIsTrainingLoading","isQuestionsNotExist","isButtonLoading","onEditTraining","editOrCreateTrainerPath","log","isFullWidth","CheckTrainingQuestionButton","_question$answerData","_store$newMaterials","_store$newMaterials$t","isCanSendInsertWordsAnswer","expectedAnswerLength","filteredAnswer","checkInsertWordAnswerSend","isDisableCheckButton","NextTrainingQuestionButton","isDisableNextButton","resp","_resp$error","E_STATISTIC_COLORS","incorrect","unknown","grey_2","CnStudentTrainerStatistic","StudentTrainerStatistic","completedCount","correctCount","incorrectCount","lastTenProgressColors","_progress$map","formatProgressStatus","getLastTenProgress","CnStudentContent","StudentContent","isShowSkeleton","isEmptyData","EQuestionStatus","LOADER_LIST","CnExerciseInfoModal","ExerciseInfoModal","setQuestionData","metaInfoList","setMetaInfoList","isShowLoader","isShowStatus","answersTypeText","getQuestionMeta","metaInfoItems","CnTeacherTrainingItem","TeacherTrainingItem","CnTeacherTrainingList","TeacherTrainingList","isShowModal","setIsShowModal","selectedQuestionId","setSelectedQuestionId","itemsList","loadQuestionList","onExerciseClick","CnTrainerTab","isOld","ONBOARDING_STEPS","isStartStep","showNextAfterClick","parentForVisibilityChecking","getOnboardingKey","router","OnboardingContext","createContext","hasViewedSteps","newStepsCount","hasActiveStep","startAutoTour","getPageSteps","startPageTour","stopActiveTour","OnboardingProvider","_history$location$pat","_history$location","isReAuth","onboarding","EXOnboarding","setNewStepsCount","setHasViewedSteps","setIsFetching","activeStep","setActiveStep","_EXOnboarding$current","searchTimeout","$Onboarding","initialStepsList","project","_EXOnboarding$current5","removeListeners","eventEmitter","on","_EXOnboarding$current6","off","_EXOnboarding$current4","_EXOnboarding$current2","pageKey","getStepsOnPage","_history$location2","_EXOnboarding$current3","startTour","useOnboarding","isMobileMenuOpened","canStartAutoOnboarding","Provider","useOnboardingContext","context","useContext","CodifierContext","useCodifierContext","TopicElement","topicData","_useCodifierContext","onElementClick","selectedElement","handleSubjectClick","questionsInfo","revisionQuestions","questionUnpublished","BlockElement","blockData","_useCodifierContext$s","SectionElement","sectionData","ParallelElement","parallelData","SubjectElement","_selectedElement$para2","isOpenedProp","_ref$isShowHeader","isShowHeader","subjectData","_selectedElement$para","_selectedElement$subj","_selectedElement$subj2","getElementsIds","elementId","getSelectedElements","currentElements","onElementSelect","setCodifierContext","codifierContext","isSubjectUpdates","setIsSubjectUpdates","CnFile","deleteFile","needHideDeleteButton","needHideSendButton","needHideEditButton","editFile","copyFile","NoteBlankTemplate","NoteBlank","Send","CnAddFiles","AddFiles","_ref$files","_ref$className","canUpload","onUpload","handleAddClick","hasAttr","needfetchFiles","handleFilesCheckboxChange","checkbox","handleDeleteFile","student_view","_file$uploadedBy","_file$uploadedBy2","_file$uploadedBy3","CnAttendanceGarnitureStatus","AttendanceGarnitureStatus","showDescriptions","CnAttendanceLine","AttendanceLine","changeMark","createMark","dropDownStatus","handleDeleteMark","needHideAbsentReasonOptions","CnAttendanceTab","studentsAttendanceMap","studentsAttendance","deleteMark","handleAvatarClick","studetnId","NotificationType","notificationConvertersByType","_notificationConverte","ASSIGNMENTPROGRESS_OVERDUE","_data$count","timeCreate","tasksCount","StyledNumberColor","red","ASSIGNMENTPROGRESS_CHECK","_data$count2","green","ASSIGNMENTPROGRESS_DEADLINE","ASSIGNMENTPROGRESS_ASSIGNMENT","ASSIGNMENTPROGRESS_COMPLETED","normalizeNotification","notification","_notificationConverte2","_data$courseGroup","notificationMessageProps","normalizeViewedNotifications","baseNormalizedNotifications","_notification$data$co","normalizedNotification","unreadNotificationsCount","unreadMessagesCount","getUnreadNotificationsCountStatus","getUnreadMessagesCountStatus","newNotifications","getNotificationsPageStatus","viewedNotifications","getArchiveNotificationsPageStatus","notificationsSlice","clearNotifications","makeViewedOn","NotificationViewType","normalizeNewNotifications","notificationsReducer","typeQuestions","cnQuestionPool","Refs","handleElementClick","CodifierElement","FUNC_STAB","_ref2$setIsQuestionTy","_ref2$isDisabled","_ref2$autoCheckOnly","_ref2$revisions","filteredQuestionTypes","handleSelectQuestionType","ACCEPT_FILE_TYPES","INPUT_ACCEPT_FILE_TYPES","CnPropertyMenu","FILE_INPUT_PLACEHOLDER","_detailedQuestion$sub","_ref$isEditPage","_ref$handleClickDelet","_ref$toggleChecked","showButton","historyVisible","setHistoryVisible","subjectDropdownOptions","setSelectedSubject","setInputValue","_detailedQuestion$top2","uploadProgress","setUploadProgress","handleInfoMouseEnter","_info$getBoundingClie","handleInfoMouseLeave","datetime","HistoryIcon","isNeedSearch","Loading","copy","navigationSlice","setIsMobileMenuOpened","navigationReducer","HiddenQuestionMarkup","replaceAll","answerHTML","redirectPath","_useEditorsToHTML","hiddenNode","setHiddenNode","_document$querySelect","hiddenDiv","_document$querySelect2","questionEditors","questionEditor","answerEditors","isTXT","editorStates","questionMarkup","answersMarkup","innerHTML","useEditorsToHTML","CnInput","CnStudentTab","encodedUrl","btoa","CnTimer","_ref$timeToFinish","initialTime","timer","timeIsLeft","strokeDashoffset","PI","strokeDasharray","isEnd","CnAssignedHomeworkTable","disabledButton","setShowCompletedTasks","setShowAssignedTasks","setShowOnCheckTasks","setShowDeferredAssignedTasks","ENotificationEvents","AppSocketNotifications","_state$user","notificationSocket","setNotificationSocket","reconnectAttempts","setReconnectAttempts","showToast","showDuration","connectSocket","connected","socket","io","transports","reconnection","TOAST_NOTIFICATION","toastConfig","MODALS_NOTIFICATION","meetings_modals","DISCONNECTED","reconnectSocket","CONNECT_ERROR","addSocketEventHandlers","connect","disconnectSocket","disconnect","NotificationItem","handleMeetingFinished","handleCollapseNotification","isNotificationCollapsed","setIsNotificationCollapsed","isCollapsedByClickOnce","setIsCollapsedByClickOnce","_useNotificationTimer","meetingTimeOffset","setMeetingTimeOffset","setIsMeetingStarted","setIsMeetingFinished","lessonStartTime","lessonEndTime","updateTimer","timeBeforeStart","timeAfterStart","roundedTimeBeforeStart","roundedTimeAfterStart","totalSeconds","formatTime","useNotificationTimer","OnlineLessonNotifications","hasOnlineLessons","showNotificationWindow","hasOverlay","hasNotificationWithNoHideOption","hasUncollapsedNotification","meetingNotification","isNotificationItemCollapsed","CnAlert","CnButton","Alert","errorInfo","errorDescriptions","errorExtra","actionText","cancelText","actionCallback","cancelCallback","withCloseButton","closeCallback","showExtra","_ref$showCancelButton","showCancelButton","isLastAttempt","modalWarning","Warning","withoutCancelButton","CnModal","ErrorModal","_useAppSelector$disab","setShowExtra","goBack","handleModalClose","handleShowExtra","CHAT_URI","gteUserLink","_userInfo$userRoles","user_id","getLink","WithChatwoot","userInfofetchStatus","logoutStatus","_userInfo$lastName","_userInfo$firstName","setUser","avatar_url","custom_attributes","userLink","username","isChatLoad","setChatLoad","onChangeHasUnread","icoFavicon","svgFavicon","ico","svg","script","onload","onerror","_window$ChatWidget","chatWidgetContainer","cont","ChatWidget","startWidget","chatType","isHide","iconPlacement","_window2","_window2$ChatWidget","updateWidgetConfig","useOGChatWidget","NavigationMenu","isShowSideBar","useShowSidebar","navbarItems","footerButtons","SidebarMenu","currentPath","onItemClick","onLogoClick","Login","useLayoutEffect","PasswordRecovery","CnReAuthModal","NotAllowedModal","_useLogout","onCloseModal","back","marginTop","ReAuthModal","onLogin","onLogout","isShowReAuthModal","setIsShowReAuthModal","setPassword","isUpdating","setIsUpdating","isShowError","setShowError","unSuccessLoginCount","setUnSuccessLoginCount","authParams","actionData","_actionData$payload","requestStatus","newCount","HttpInterceptor","onReLoginStart","isShowNotAllowedModal","setIsShowNotAllowedModal","reAuthResolve","setReAuthResolve","onRefreshError","collectCallback","Modals","_useGetPopupsState","currentComponentList","setCurrentComponentList","mountedList","_component$urlProps","_component$urlProps2","_component$urlProps3","AlertModal","maskClosable","confirmLoading","PrivateRoute","isExact","Route","exact","init","i18nFormat","lng","debug","resources","translation","task_0","task_1","task_2","teacher_0","teacher_1","teacher_2","lesson_0","lesson_1","lesson_2","lessons_0","lessons_1","lessons_2","subject_0","subject_1","subject_2","calendarLesson_0","calendarLesson_1","calendarLesson_2","scheduleLesson_0","scheduleLesson_1","scheduleLesson_2","lessonWithoutCount_0","lessonWithoutCount_1","lessonWithoutCount_2","meeting_0","meeting_1","meeting_2","hours_0","hours_1","hours_2","hoursWithoutCount_0","hoursWithoutCount_1","hoursWithoutCount_2","minutesWithoutCount_0","minutesWithoutCount_1","minutesWithoutCount_2","questions_0","questions_1","questions_2","unpublished_0","unpublished_1","unpublished_2","skill_0","skill_1","skill_2","group_0","group_1","group_2","student_0","student_1","student_2","topic_0","topic_1","topic_2","selectedTypes_0","selectedTypes_1","selectedTypes_2","correctAnswers_0","correctAnswers_1","correctAnswers_2","variableAnswers_0","variableAnswers_1","variableAnswers_2","search_0","search_1","search_2","selectedQuestions_0","selectedQuestions_1","selectedQuestions_2","attempt_0","attempt_1","attempt_2","correctAnswer_0","correctAnswer_1","correctAnswer_2","question_0","question_1","question_2","parallel_0","parallel_1","parallel_2","class_0","class_1","class_2","assignedTask_0","assignedTask_1","assignedTask_2","studyWeeks_0","studyWeeks_1","studyWeeks_2","studyDays_0","studyDays_1","studyDays_2","rooms_0","rooms_1","rooms_2","load","zones","links","setDefault","CnApp","StudentsSchedulePage","lazy","QuestionBankPage","QuestionCreationPage","QuestionSearchPage","TrainingQuestionSearchPage","SchedulePage","NewSubjectsPage","Settings","StudentTasks","SubjectCoursePage","Subjects","HomeworkPage","LessonCard","MaterialsCreationPage","Person","AcademicPerformance","CodifierPage","Proctoring","ProctoringRoom","Course","CourseChangingPage","CourseCreationPage","CourseEditor","Courses","StudentsPage","EventRoomCreationPage","ReportingPage","SingleNewsPage","DownloadAnyDeskPage","Dashboard","AuthenticationPage","OnlineLessonsPage","StatisticsMonitoring","LibraryPage","EditLibraryPage","NewsPage","NewsCreationPage","PDFViewer","GroupActionsPage","App","intervalId","setReAuth","getAlerts","clearAlertInterval","_parseQueryString","observer","customEventEmitter","Instance","removeListen","DndProvider","backend","HTML5Backend","AppSizeProvider","Router","REACT_APP_IS_DEV","ErrorBoundary","Suspense","fallback","isAdditional","isFromCodifier","isSelectQuestion","GoogleReCaptchaProvider","language","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","integrations","maskAllText","maskAllInputs","blockAllMedia","environment","StrictMode","PersistGate"],"mappings":"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","file":"static/js/main.e883b768.chunk.js","sourcesContent":["export enum FetchStatus {\n FETCHING = 'FETCHING',\n FETCHING_MORE = 'FETCHING_MORE',\n FETCHED = 'FETCHED',\n ERROR = 'ERROR',\n INITIAL = 'INITIAL',\n}\n","import { commonHost, host, monitoringHost, ssoHost } from 'constants/apiMethods';\n\nimport { HttpClient } from '@frontend-modules/form-generator';\nimport { OnBoardingHttpClient } from '@frontend-modules/og-onboarding';\nimport { ApiInterceptor, ApiResponder, createInstance } from '@fsd-shared/utils';\nimport { AxiosError, AxiosRequestConfig } from 'axios';\nimport { NO_TOKEN_SSO_PATHS, ssoRefreshUrl } from 'src-new/constants/authUrl';\n\nimport { getAccessToken } from 'utils/token';\n\nexport const api = createInstance(host);\nexport const apiSso = createInstance(ssoHost);\nexport const apiMonitoring = createInstance(monitoringHost);\nexport const apiCommon = createInstance(commonHost);\n\n// @ts-ignore\nHttpClient.setClient(api);\n// @ts-ignore\nHttpClient.setClient(apiCommon, 'file-manager');\nOnBoardingHttpClient.setClient(apiCommon);\n\nApiInterceptor(api);\nApiInterceptor(apiMonitoring);\nApiInterceptor(apiCommon);\n\nexport const authStateResponder = (callback: Function, on403Logout: Function, showErrorReportBtn?: boolean): void => {\n ApiResponder(api, callback, on403Logout, showErrorReportBtn);\n ApiResponder(apiMonitoring, callback, on403Logout, showErrorReportBtn);\n ApiResponder(apiCommon, callback, on403Logout, showErrorReportBtn);\n};\n\napiSso.interceptors.request.use(\n (config: AxiosRequestConfig) => {\n const token = getAccessToken();\n const isNoNeedToken = NO_TOKEN_SSO_PATHS.some((item) => (config.url ? item?.includes(config.url) : false));\n if (token && !isNoNeedToken) {\n (config.headers as Record)['Authorization'] = `Bearer ${token}`;\n }\n config.withCredentials = true;\n\n return config;\n },\n (error) => {\n Promise.reject(error).catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n },\n);\n\nexport const authSsoStateResponder = (callback?: () => void): void => {\n apiSso.interceptors.response.use(\n (response) => {\n return response;\n },\n (error: AxiosError) => {\n const originalRequest = error.config as AxiosRequestConfig & { _retry: boolean };\n const responseStatus = error?.response?.status;\n\n if ((responseStatus === 401 || responseStatus === 400) && originalRequest.url?.includes(ssoRefreshUrl)) {\n callback?.();\n }\n\n return Promise.reject(error).catch((error: AxiosError) => {\n throw error;\n });\n },\n );\n};\nexport const postApiSsoRequest = (\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise =>\n apiSso\n .post(link, body, config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\nexport const getApiSsoRequest = (link: string, body?: BodyType): Promise =>\n apiSso\n .get(link, body)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const getApiRequest = (link: string, body?: BodyType): Promise =>\n api\n .get(link, body)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const patchApiRequest = (\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise =>\n api\n .patch(link, body, config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const postApiRequest = (\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise =>\n api\n .post(link, body, config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const deleteApiRequest = (link: string, params?: BodyType): Promise =>\n api\n .delete(link, params)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\n/**\n *\n * @param config\n */\nexport const universalApiRequest = async (config: AxiosRequestConfig): Promise => {\n return await api\n .request(config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","export const EMPTY_ARRAY_10 = [...Array(10)];\nexport const EMPTY_ARRAY_4 = [...Array(4)];\nexport const EMPTY_ARRAY_3 = [...Array(3)];\nexport const EMPTY_ARRAY_2 = [...Array(2)];\nexport const EMPTY_ARRAY_1 = [...Array(1)];\n","export enum E_COLORS {\n dark_grey_color_2 = '#2c2d2e',\n firm_blue_color = '#0088e9',\n dark_grey_color_1 = '#68788D',\n dark_grey_color_3 = '#585c6d',\n coral_color = '#ea5959',\n mint_color = '#2F929A',\n white_color = '#fff',\n light_grey_color_1 = '#c0c2c9',\n light_grey_color_2 = '#919399',\n light_grey_color_3 = '#EDEEF2',\n grey_2 = '#EDEEF2',\n main_dark_icons = '#585c6f',\n}\n","export const MAX_FILE_SIZE_MB = 100;\nexport const maxFileSizeInBytes = MAX_FILE_SIZE_MB * 1024 * 1024;\n","import {\n AssignmentLevels,\n ExecutionTimes,\n VerificationTypes,\n} from 'src-new/components/lesson-task/LessonTaskPage.types';\n\nexport const EXECUTION_TIMES_MAPPING = {\n [ExecutionTimes.AT_HOME]: 'дома',\n [ExecutionTimes.IN_CLASS]: 'на уроке',\n};\n\nexport const ASSIGNMENT_LEVELS_MAPPING = {\n [AssignmentLevels.ADMINISTRATIVE]: 'административное задание',\n [AssignmentLevels.TEACHER]: 'учительское задание',\n};\n\nexport const VERIFICATION_TYPE_MAPPING = {\n [VerificationTypes.AUTO]: 'автоматическая проверка',\n [VerificationTypes.MANUAL]: 'ручная проверка',\n};\nexport const TEST_LESSON_ID = 5;\n","export enum E_QUESTION_TYPE {\n true_false = 'Вопрос - верно или нет',\n text = 'Вопрос - тестовый, с текстовым ответом',\n test = 'Вопрос - тестовый',\n essay = 'Вопрос - открытый вопрос - эссе',\n insert_words = 'Вопрос - вставить слова',\n}\n\nexport enum E_SKILLS_FILTERS {\n skills_and = 'Все',\n skills_or = 'Любой из нижеперечисленных',\n}\nexport enum E_COMPLEXITY_OPTIONS {\n easy = 'Низкая',\n medium = 'Средняя',\n hard = 'Высокая',\n}\nexport enum E_ANSWERS_TYPE {\n test = 'test',\n text = 'text',\n essay = 'essay',\n true_false = 'true_false',\n insert_words = 'insert_words',\n}\n\nexport enum E_QUESTIONS_DIFFICULTY {\n easy = 'Низкая сложность',\n medium = 'Средняя сложность',\n hard = 'Высокая сложность',\n}\nexport enum E_QUESTION_TYPE_INFO {\n true_false = 'Вопрос - верно или нет, автопроверка',\n text = 'Вопрос - тестовый, с текстовым ответом, автопроверка',\n test = 'Вопрос - тестовый, автопроверка',\n essay = 'Открытый вопрос - эссе, ручная проверка',\n insert_words = 'Вопрос - вставить слова, автопроверка',\n}\n//case 'multiple':\n// return 'Вопрос - тестовый, автопроверка';\n// case 'detailed':\n// return 'Открытый вопрос - эссе, ручная проверка';\n// case 'binary':\n// case 'open':\n// case 'insert-words':\n// return\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { getLessonScheduleAndAttendanceData } from 'store/actions/academicPerformance';\nimport { normalizeAcademicPerformance } from 'store/normalizers/academicPerformance';\nimport { FetchStatus } from 'types/api';\n\nexport type LessonScheduleAndAttandenceData = {\n [lessonId: number]: {\n id: number;\n date: string;\n studentMarks: {\n studentId: number;\n isAbsent: boolean;\n isAbsentWithReason: boolean;\n isAbsentDueIllness: boolean;\n }[];\n };\n};\n\ninterface AcademicPerformanceState {\n fetchStatus: FetchStatus;\n data: LessonScheduleAndAttandenceData;\n error: unknown;\n}\n\nconst initialState: AcademicPerformanceState = {\n fetchStatus: FetchStatus.INITIAL,\n data: {},\n error: null,\n};\n\nconst academicPerformanceSlice = createSlice>({\n name: 'academicPerformance',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getLessonScheduleAndAttendanceData.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n })\n .addCase(getLessonScheduleAndAttendanceData.fulfilled, (state, { payload }) => {\n const { lessonIds, lessonSchedule, lessonAttendance, studentIds, eventRooms } = payload;\n\n state.fetchStatus = FetchStatus.FETCHED;\n state.data = normalizeAcademicPerformance({\n lessonAttendance,\n lessonSchedule,\n lessons: lessonIds,\n students: studentIds,\n eventRooms,\n });\n })\n .addCase(getLessonScheduleAndAttendanceData.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nconst resetAcademicPerformanceState = academicPerformanceSlice.actions.reset as ActionCreatorWithoutPayload;\nexport { resetAcademicPerformanceState };\nexport const academicPerformanceReducer = academicPerformanceSlice.reducer;\n","import { AttendanceResponseData } from 'api/services/attendance';\nimport { LessonScheduleResponse } from 'api/services/lessonSchedule';\nimport { EventRoom } from 'api/services/proctoring';\nimport moment from 'moment';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { LessonScheduleAndAttandenceData } from 'store/reducers/academicPerformance';\n\ntype Params = {\n lessons: number[];\n students: number[];\n lessonSchedule: LessonScheduleResponse[];\n lessonAttendance: AttendanceResponseData[];\n eventRooms: EventRoom[];\n};\n\nexport const normalizeAcademicPerformance = ({\n lessons,\n students,\n lessonSchedule,\n lessonAttendance,\n eventRooms,\n}: Params): LessonScheduleAndAttandenceData => {\n return lessons.reduce((data, lessonId) => {\n const schedule = lessonSchedule\n .filter(({ lesson }) => lesson === lessonId)\n .sort((a, b) => moment(a.datetimeStart).diff(b.datetimeStart));\n\n const eventRoom = eventRooms\n .filter((eventRoom) => eventRoom.lesson.id === lessonId)\n .sort((a, b) => moment(a.datetimeStart).diff(b.datetimeStart));\n const attendance = lessonAttendance.filter(({ lesson }) => lesson === lessonId);\n\n // Необходимо брать schedule по приоритету (онлайн, контрольная, самоподготовка и тд)\n const selectedSchedule = (): LessonScheduleResponse | EventRoom => {\n const online = schedule.find((item) => item.type === 'online_lesson');\n const test = schedule.find((item) => item.type === 'test_lesson');\n const self = schedule.find((item) => item.type === 'selfpreparation_lesson');\n const parent = schedule.find((item) => item.type === 'parent_meeting');\n\n if (online) {\n return online;\n }\n if (test) {\n return test;\n }\n if (self) {\n return self;\n }\n if (parent) {\n return parent;\n }\n return schedule[0];\n };\n let verifySchedule: LessonScheduleResponse | EventRoom = selectedSchedule();\n\n if (!verifySchedule && eventRoom[0]) verifySchedule = eventRoom[0];\n if (!verifySchedule) return data;\n\n data[lessonId] = {\n id: lessonId,\n date: verifySchedule.datetimeStart\n ? moment(verifySchedule.datetimeStart).format('DD.MM')\n : 'не задана дата',\n studentMarks: students.map((studentId) => {\n const studentAttendence = attendance.find(({ student }) => student.id === studentId);\n\n return {\n studentId,\n isAbsentWithReason: studentAttendence?.status === AttendanceStatus.ABSENT_WITH_REASON,\n isAbsentDueIllness: studentAttendence?.status === AttendanceStatus.ABSENT_DUE_ILLNESS,\n isAbsent: studentAttendence?.status === AttendanceStatus.ABSENT,\n };\n }),\n };\n\n return data;\n }, {} as LessonScheduleAndAttandenceData);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { AcademicYear } from 'api/services/academicYear';\nimport { getAcademicYearAction } from 'store/actions/academicYear';\nimport { FetchStatus } from 'types/api';\n\ninterface AcademicYearState {\n fetchAcademicYearStatus: FetchStatus;\n academicYear: AcademicYear[];\n error: unknown;\n}\n\nconst initialState = {\n fetchAcademicYearStatus: FetchStatus.INITIAL,\n academicYear: [],\n error: null,\n};\n\nconst academicYearSlice = createSlice>({\n name: 'academic-year',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getAcademicYearAction.pending, (state) => {\n state.fetchAcademicYearStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAcademicYearAction.fulfilled, (state, { payload }) => {\n state.fetchAcademicYearStatus = FetchStatus.FETCHED;\n state.academicYear = payload;\n state.error = null;\n })\n .addCase(getAcademicYearAction.rejected, (state, { error }) => {\n state.fetchAcademicYearStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetAcademicYearState = academicYearSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const academicYearReducer = academicYearSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { SchoolPartner } from 'api/services/schoolPartner';\nimport { StudentsStatistics, StudentsStatisticsTariff } from 'api/services/student';\nimport { StudentGroupStatistics } from 'api/services/studentGroups/getStudentsGroupStatistics';\nimport { StudentGroupStatisticsTariff } from 'api/services/studentGroups/getStudentsGroupStatisticsTariffs';\nimport { getActiveClassesAction } from 'store/actions/activeClasses';\nimport { normalizeGridCells } from 'store/normalizers/activeClasses/normalizeGridCells';\nimport { studentGroupStatisticCells } from 'store/normalizers/activeClasses/normalizeStudentGroupStatistic';\nimport { FetchStatus } from 'types/api';\nimport { StudentGroupStatistic } from 'types/reporting';\n\nexport interface ActiveClassesState {\n partnerStatistics: SchoolPartner[];\n studentsStatistics: StudentsStatistics | null;\n studentsStatisticsTariff: StudentsStatisticsTariff[];\n studentGroupStatisticsTariffs: StudentGroupStatisticsTariff[];\n getActiveClassesStatus: FetchStatus;\n gridCells: (StudentGroupStatistics & { tariff: string })[][];\n studentGroupStatistic: StudentGroupStatistic | null;\n error: unknown;\n}\n\nconst initialState: ActiveClassesState = {\n partnerStatistics: [],\n studentsStatistics: null,\n studentsStatisticsTariff: [],\n studentGroupStatisticsTariffs: [],\n gridCells: [],\n studentGroupStatistic: null,\n getActiveClassesStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst activeClassesSlice = createSlice>({\n name: 'activeClasses',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getActiveClassesAction.pending, (state) => {\n state.getActiveClassesStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getActiveClassesAction.fulfilled, (state, { payload }) => {\n state.getActiveClassesStatus = FetchStatus.FETCHED;\n state.partnerStatistics = payload[0];\n state.studentsStatistics = payload[1];\n state.studentsStatisticsTariff = payload[2];\n state.studentGroupStatisticsTariffs = payload[4];\n state.gridCells = normalizeGridCells({\n studentGroupStatistics: payload[3],\n studentsStatisticsTariff: payload[2],\n });\n state.studentGroupStatistic = studentGroupStatisticCells({\n studentGroupStatistics: payload[3],\n studentGroupStatisticsParallels: payload[5],\n });\n state.error = null;\n });\n builder.addCase(getActiveClassesAction.rejected, (state, { error }) => {\n state.getActiveClassesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetActiveClassesState = activeClassesSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const activeClassesReducer = activeClassesSlice.reducer;\n","import { StudentsStatisticsTariff } from 'api/services/student';\nimport { StudentGroupStatistics } from 'api/services/studentGroups/getStudentsGroupStatistics';\nimport { classLetterAndNumberRegExp } from 'containers/ActiveClasses/ActiveClasses.constants';\nimport { sortGroupParallels, sortGroupTitles } from 'containers/ActiveClasses/utils';\nimport moment from 'moment';\n\ninterface GridCellsParams {\n studentsStatisticsTariff: StudentsStatisticsTariff[];\n studentGroupStatistics: StudentGroupStatistics[];\n}\n\nexport const normalizeGridCells = ({\n studentGroupStatistics,\n studentsStatisticsTariff,\n}: GridCellsParams): (StudentGroupStatistics & { tariff: string })[][] => {\n const grid = new Map();\n studentGroupStatistics.map((group) => {\n const title = (classLetterAndNumberRegExp.exec(group.title) ?? [''])[0];\n if (grid.has(title)) {\n const newCells = (grid.get(title) ?? []).concat({\n ...group,\n tariff: studentsStatisticsTariff.find(({ id }) => id === group.tariff)?.title ?? '-',\n dateCreate: moment(group.dateCreate).format('DD.MM.YYYY'),\n } as StudentGroupStatistics & { tariff: string });\n grid.set(title, newCells);\n } else {\n grid.set(title, [\n {\n ...group,\n tariff: studentsStatisticsTariff.find(({ id }) => id === group.tariff)?.title ?? '-',\n dateCreate: moment(group.dateCreate).format('DD.MM.YYYY'),\n } as StudentGroupStatistics & { tariff: string },\n ]);\n }\n });\n return Array.from(grid, ([title, group]) => ({ title, group }))\n .sort(sortGroupTitles)\n .map(({ group }) => {\n return group.sort(sortGroupParallels);\n });\n};\n","import { Parallel } from 'api/services/studentGroups/getStudentGroupStatisticsParallels';\nimport { StudentGroupStatistics } from 'api/services/studentGroups/getStudentsGroupStatistics';\nimport { groupNumberRegExp, letterRegExp } from 'containers/ActiveClasses/ActiveClasses.constants';\nimport { sortClassLetters, sortParallels } from 'containers/ActiveClasses/utils';\nimport { StudentGroupStatistic } from 'types/reporting';\n\ninterface StudentGroupStatisticParams {\n studentGroupStatisticsParallels: Parallel[];\n studentGroupStatistics: StudentGroupStatistics[];\n}\n\nexport const studentGroupStatisticCells = ({\n studentGroupStatisticsParallels,\n studentGroupStatistics,\n}: StudentGroupStatisticParams): StudentGroupStatistic => {\n const parallels = new Map();\n const classLetters = new Map();\n studentGroupStatisticsParallels.map(({ studentGroup }) => {\n studentGroup.map((group) => {\n const cellGroup = studentGroupStatistics.find(({ id }) => id === group.id);\n const parallel = (groupNumberRegExp.exec(cellGroup?.title ?? '') ?? [''])[0];\n if (parallels.has(parallel)) {\n const newClassCount = (parallels.get(parallel)?.classCount ?? 0) + 1;\n const newStudentCount = (parallels.get(parallel)?.studentCount ?? 0) + Number(group.studentsCount);\n parallels.set(parallel, { classCount: newClassCount, studentCount: newStudentCount });\n } else {\n parallels.set(parallel, { classCount: 1, studentCount: Number(group.studentsCount) });\n }\n const classLetter = (letterRegExp.exec(cellGroup?.title ?? '') ?? [''])[0];\n\n if (classLetters.has(classLetter)) {\n const newClassCount = (classLetters.get(classLetter)?.classCount ?? 0) + 1;\n const newStudentCount =\n (classLetters.get(classLetter)?.studentCount ?? 0) + Number(group.studentsCount);\n classLetters.set(classLetter, { classCount: newClassCount, studentCount: newStudentCount });\n } else {\n classLetters.set(classLetter, { classCount: 1, studentCount: Number(group.studentsCount) });\n }\n });\n });\n return {\n parallels: Array.from(parallels, ([parallel, classes]) => ({ parallel, classes })).sort(sortParallels),\n classLetters: Array.from(classLetters, ([classLetter, classes]) => ({ classLetter, classes })).sort(\n sortClassLetters,\n ),\n };\n};\n","import { AdaptationItem } from 'api/services/adaptation';\nimport { CheckboxItem } from 'types/checkbox';\n\nexport const normalizeAdaptation = (adaptationItems: AdaptationItem[]): CheckboxItem[] =>\n adaptationItems.map((adaptationItems) => {\n return {\n id: adaptationItems.id,\n label: adaptationItems.adaptation,\n checked: adaptationItems.done,\n };\n });\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { changeAdaptationAction, getAdaptationAction } from 'store/actions/adaptation';\nimport { normalizeAdaptation } from 'store/normalizers/adaptation/normalizeAdaptation';\nimport { FetchStatus } from 'types/api';\nimport { CheckboxItem } from 'types/checkbox';\n\nimport { findAndReplace } from 'utils/findAndReplace';\n\nexport interface AdaptationState {\n adaptationCheckboxes: CheckboxItem[];\n getAdaptationStatus: FetchStatus;\n changeAdaptationStatus: FetchStatus;\n error: unknown;\n}\n\nexport const initialState: AdaptationState = {\n adaptationCheckboxes: [],\n getAdaptationStatus: FetchStatus.INITIAL,\n changeAdaptationStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst adaptationSlice = createSlice>({\n name: 'adaptation',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getAdaptationAction.pending, (state) => {\n state.getAdaptationStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAdaptationAction.fulfilled, (state, { payload }) => {\n state.adaptationCheckboxes = normalizeAdaptation(payload);\n state.getAdaptationStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getAdaptationAction.rejected, (state, { error }) => {\n state.getAdaptationStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(changeAdaptationAction.pending, (state) => {\n state.changeAdaptationStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(changeAdaptationAction.fulfilled, (state, { payload }) => {\n state.adaptationCheckboxes = findAndReplace(\n state.adaptationCheckboxes,\n ({ id }, index) => id === payload[index].id,\n normalizeAdaptation(payload),\n );\n state.changeAdaptationStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(changeAdaptationAction.rejected, (state, { error }) => {\n state.changeAdaptationStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const adaptationReducer = adaptationSlice.reducer;\n","export const findAndReplace = (\n array: ArrayItem[],\n findFunction: (item: ArrayItem, index: number) => boolean,\n replaceItems: ArrayItem[],\n): ArrayItem[] => {\n return replaceItems.reduce(\n (prev, replaceItem, curIndex) => prev.map((item) => (findFunction(item, curIndex) ? replaceItem : item)),\n array,\n );\n};\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { TAlert } from 'api/services/alerts';\nimport { getAlertsListAction, setAlertReadAction } from 'store/actions/alerts';\nimport { FetchStatus } from 'types/api';\n\nexport interface AlertsState {\n getStatus: FetchStatus;\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n alertsList: TAlert[];\n error: unknown;\n}\nexport const initialState: AlertsState = {\n getStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n alertsList: [] as TAlert[],\n error: null,\n};\n\nconst alertsSlice = createSlice>({\n name: 'alerts',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder.addCase(getAlertsListAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAlertsListAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.alertsList = payload;\n state.error = null;\n });\n builder.addCase(getAlertsListAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(setAlertReadAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(setAlertReadAction.fulfilled, (state, { payload }) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.alertsList = state.alertsList.filter((alert) => alert.id !== payload.id);\n state.error = null;\n });\n builder.addCase(setAlertReadAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const alertsReducer = alertsSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { createTransform } from 'redux-persist';\nimport { fetchLogin, fetchLogout, setIsLoggedInAction } from 'store/actions/auth';\nimport { getUserInfoAction } from 'store/actions/user';\nimport { FetchStatus } from 'types/api';\n\nimport { setAccessToken, setRefreshToken } from 'utils/token';\n\nexport interface Answer {\n response: string;\n}\n\nexport interface AuthState {\n isLoggedIn?: boolean;\n fetchStatus: FetchStatus;\n reAuthEmail?: string;\n error: unknown;\n logoutFetchStatus: FetchStatus;\n}\n\nconst initialState: AuthState = {\n fetchStatus: FetchStatus.INITIAL,\n error: null,\n logoutFetchStatus: FetchStatus.INITIAL,\n};\n\nconst authSlice = createSlice>({\n name: 'auth',\n initialState,\n reducers: {\n resetAuthErrors(state) {\n state.error = null;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(setIsLoggedInAction, (state, { payload }) => {\n if (!payload) {\n state.reAuthEmail = undefined;\n }\n state.fetchStatus = FetchStatus.FETCHED;\n state.isLoggedIn = payload;\n });\n // сохраняем емейл для переавторизации при login as\n builder.addCase(getUserInfoAction.fulfilled, (state, { payload }) => {\n state.reAuthEmail = payload.email;\n });\n builder.addCase(fetchLogin.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.isLoggedIn = true;\n setAccessToken(payload?.access || '');\n setRefreshToken(payload?.refresh || '');\n state.logoutFetchStatus = FetchStatus.INITIAL;\n state.error = null;\n });\n builder.addCase(fetchLogin.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(fetchLogout.fulfilled, (state) => {\n state.fetchStatus = FetchStatus.INITIAL;\n state.isLoggedIn = false;\n state.fetchStatus = FetchStatus.INITIAL;\n state.reAuthEmail = undefined;\n state.error = null;\n state.logoutFetchStatus = FetchStatus.FETCHED;\n })\n .addCase(fetchLogout.pending, (state) => {\n state.logoutFetchStatus = FetchStatus.FETCHING;\n })\n .addCase(fetchLogout.rejected, (state) => {\n state.logoutFetchStatus = FetchStatus.ERROR;\n });\n },\n});\nexport const { resetAuthErrors } = authSlice.actions;\n\nexport const authBlackList = createTransform(\n null,\n (state: AuthState) => {\n const newState = state ?? {};\n\n if ('fetchStatus' in newState) {\n newState.fetchStatus = FetchStatus.INITIAL;\n }\n if ('logoutFetchStatus' in newState) {\n newState.logoutFetchStatus = FetchStatus.INITIAL;\n }\n\n return newState;\n },\n { whitelist: ['auth'] },\n);\nexport const authReducer = authSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { ITaskCreateFormValue } from 'pages/SubjectCourse/SubjectCourse';\nimport { addFormValuesStore, resetFormValuesStore } from 'store/actions/createTask';\n\nexport interface ICreateTaskState {\n formValues: ITaskCreateFormValue;\n questions: string[]; //TODO Next Page\n}\n\nexport const initialState: ICreateTaskState = {\n formValues: {\n title: '',\n description: '',\n isTemplate: true,\n type: '',\n attemptQuantity: 0,\n },\n questions: [],\n};\n\nconst createTaskSlice = createSlice>({\n name: 'createTask',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(addFormValuesStore, (state, { payload }) => {\n state.formValues = payload.values;\n });\n builder.addCase(resetFormValuesStore, (state, { payload }) => {\n state.formValues = payload.values;\n });\n },\n});\n\nexport const createTaskReducer = createTaskSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { getCuratorDashboardAction } from 'store/actions/curatorDashboard';\nimport { getAbsentStudentList } from 'store/normalizers/curatorDashboard/absentStudentList';\nimport { getAbsentTeacherList } from 'store/normalizers/curatorDashboard/absentTeacherList';\nimport { getLessons } from 'store/normalizers/curatorDashboard/lessons';\nimport { FetchStatus } from 'types/api';\nimport { CuratorLesson } from 'types/lesson';\nimport { AbsentStudent } from 'types/students';\nimport { Teacher } from 'types/teacher';\ninterface CuratorDashboardState {\n getCuratorDashboardStatus: FetchStatus;\n absentStudents: AbsentStudent[];\n absentTeachers: (Teacher & { lessonScheduleId: number })[];\n lessons: CuratorLesson[];\n error: unknown;\n}\n\nconst initialState: CuratorDashboardState = {\n getCuratorDashboardStatus: FetchStatus.INITIAL,\n absentStudents: [],\n absentTeachers: [],\n lessons: [],\n error: null,\n};\n\nconst curatorDashboardSlice = createSlice({\n name: 'curatorDashboard',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(getCuratorDashboardAction.pending, (state) => {\n state.getCuratorDashboardStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCuratorDashboardAction.fulfilled, (state, { payload }) => {\n state.getCuratorDashboardStatus = FetchStatus.FETCHED;\n state.absentStudents = getAbsentStudentList(payload);\n state.absentTeachers = getAbsentTeacherList(payload);\n state.lessons = getLessons(payload);\n state.error = null;\n });\n builder.addCase(getCuratorDashboardAction.rejected, (state, { error }) => {\n state.getCuratorDashboardStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const curatorDashboardReducer = curatorDashboardSlice.reducer;\n","import { CuratorDashboard } from 'api/services/curatorDashboard';\nimport { AbsentStudent } from 'types/students';\n\nexport const getAbsentStudentList = (curatorDashboard: CuratorDashboard[]): AbsentStudent[] => {\n const students = curatorDashboard.map((item) => {\n const usersId = item.usersInMeeting.map((user) => user.id);\n return item.courseGroup.students.filter((student) => !usersId.includes(student.id));\n });\n return students.flat();\n};\n","import { CuratorDashboard } from 'api/services/curatorDashboard';\nimport { Teacher } from 'types/teacher';\n\nexport const getAbsentTeacherList = (\n curatorDashboard: CuratorDashboard[],\n): (Teacher & { lessonScheduleId: number })[] => {\n const teachers = curatorDashboard.map((curator) => {\n const usersId = curator.usersInMeeting.map((user) => user.id);\n return curator.courseGroup.teachers\n .filter((teacher) => !usersId.includes(teacher.id))\n .map((teacher) => ({\n ...teacher,\n lessonScheduleId: curator.id,\n }));\n });\n return teachers.flat();\n};\n","import { CuratorDashboard } from 'api/services/curatorDashboard';\nimport { CuratorLesson } from 'types/lesson';\n\nexport const getLessons = (curatorDashboard: CuratorDashboard[]): CuratorLesson[] => {\n const lessons = curatorDashboard.map((curator) => {\n const { lesson, courseGroup, usersInMeeting } = curator;\n const usersInMeetingId = usersInMeeting.map((user) => user.id);\n return {\n id: curator.lesson.id,\n lessonScheduleId: curator.id,\n groupName: courseGroup.title,\n studentsCount: courseGroup.students.length,\n lessonName: lesson.title,\n courseName: courseGroup.title,\n students: courseGroup.students\n .map((student) => {\n const { id, firstName, lastName, photoUrl } = student;\n return { id, firstName, lastName, photoUrl };\n })\n .filter((student) => {\n const user = usersInMeeting.find((user) => user.id === student.id);\n return user && !user.hasWebcam;\n }),\n studentsInLesson: courseGroup.students.filter((student) => usersInMeetingId.includes(student.id)).length,\n };\n });\n return lessons;\n};\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { getParallelsAction } from 'store/actions/edu';\nimport { FetchStatus } from 'types/api';\nimport { Parallel } from 'types/parallel';\n\nexport interface EduState {\n parallels: Parallel[];\n getParallelsStatus: FetchStatus;\n error: unknown;\n}\n\nexport const initialState: EduState = {\n parallels: [],\n getParallelsStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst eduSlice = createSlice>({\n name: 'edu',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getParallelsAction.pending, (state) => {\n state.getParallelsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getParallelsAction.fulfilled, (state, { payload }) => {\n state.getParallelsStatus = FetchStatus.FETCHED;\n state.error = null;\n state.parallels = payload;\n })\n .addCase(getParallelsAction.rejected, (state, { error }) => {\n state.getParallelsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const eduReducer = eduSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { deleteFileAction } from 'store/actions/file';\nimport { FetchStatus } from 'types/api';\nimport { IFile } from 'types/file';\n\nexport interface IFileset {\n id: number;\n conference?: number;\n lesson: number;\n files: (IFile & { isTemplate?: boolean; fileName: string })[];\n}\n\nexport interface FileState {\n fetchStatusDelete: FetchStatus;\n fileset: IFileset;\n error: unknown;\n}\n\nconst initialState: FileState = {\n fileset: {\n id: -1,\n lesson: -1,\n files: [],\n },\n fetchStatusDelete: FetchStatus.INITIAL,\n error: null,\n};\n\nconst fileSlice = createSlice>({\n name: 'file',\n initialState,\n reducers: {\n // standard reducer logic, with auto-generated action types per reducer\n },\n extraReducers: (builder) => {\n builder\n .addCase(deleteFileAction.pending, (state) => {\n state.fetchStatusDelete = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(deleteFileAction.fulfilled, (state, { payload }) => {\n state.fetchStatusDelete = FetchStatus.FETCHED;\n if (state.fileset?.files) {\n state.fileset.files = state.fileset?.files.filter(({ id }) => id !== payload.id);\n }\n })\n .addCase(deleteFileAction.rejected, (state, { error }) => {\n state.fetchStatusDelete = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const fileReducer = fileSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport * as LibService from 'store/actions/library';\nimport { FetchStatus } from 'types/api';\nimport { TBook, TBookAuthors, TBookCourse, TBookType, TLibraryTree, TPaginate } from 'types/libraryTypes';\n\nexport interface LibraryState {\n getStatus: FetchStatus;\n getCourseListStatus: FetchStatus;\n getAuthorsStatus: FetchStatus;\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n postBookStatus: FetchStatus;\n patchBookStatus: FetchStatus;\n deleteStatus: FetchStatus;\n postFileStatus: FetchStatus;\n patchFileStatus: FetchStatus;\n deleteFileStatus: FetchStatus;\n setUrlStatus: FetchStatus;\n booksList: TBook[];\n bookListPaginate: TPaginate;\n selectedBook: TBook;\n bookTypesList: TBookType[];\n libraryTree: TLibraryTree[];\n bookCoursesList: TBookCourse[];\n bookAuthorsList: TBookAuthors[];\n bookAuthorsListPaginate: TPaginate;\n createdAuthor: TBookAuthors;\n editedAuthor: TBookAuthors;\n error: unknown;\n}\nexport const initialState: LibraryState = {\n getStatus: FetchStatus.INITIAL,\n getCourseListStatus: FetchStatus.INITIAL,\n getAuthorsStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n deleteStatus: FetchStatus.INITIAL,\n postBookStatus: FetchStatus.INITIAL,\n patchBookStatus: FetchStatus.INITIAL,\n postFileStatus: FetchStatus.INITIAL,\n patchFileStatus: FetchStatus.INITIAL,\n deleteFileStatus: FetchStatus.INITIAL,\n setUrlStatus: FetchStatus.INITIAL,\n booksList: [],\n bookListPaginate: {} as TPaginate,\n selectedBook: {} as TBook,\n bookTypesList: [],\n bookCoursesList: [],\n libraryTree: [],\n bookAuthorsList: [],\n bookAuthorsListPaginate: {} as TPaginate,\n createdAuthor: {} as TBookAuthors,\n editedAuthor: {} as TBookAuthors,\n error: null,\n};\n\nconst librarySlice = createSlice>({\n name: 'library',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder.addCase(LibService.resetLibraryAction, (state) => {\n state.selectedBook = {} as TBook;\n state.booksList = [];\n state.libraryTree = [];\n });\n builder.addCase(LibService.resetLibraryStatusesAction, (state) => {\n state.getStatus = FetchStatus.INITIAL;\n state.getCourseListStatus = FetchStatus.INITIAL;\n state.getAuthorsStatus = FetchStatus.INITIAL;\n state.postStatus = FetchStatus.INITIAL;\n state.patchStatus = FetchStatus.INITIAL;\n state.deleteStatus = FetchStatus.INITIAL;\n state.postBookStatus = FetchStatus.INITIAL;\n state.patchBookStatus = FetchStatus.INITIAL;\n state.setUrlStatus = FetchStatus.INITIAL;\n state.selectedBook = {} as TBook;\n });\n\n builder.addCase(LibService.getLibraryTreeAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.libraryTree = [];\n state.error = null;\n });\n builder.addCase(LibService.getLibraryTreeAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.libraryTree = payload;\n state.error = null;\n });\n builder.addCase(LibService.getLibraryTreeAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.getBookTypesListAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.bookTypesList = [];\n state.error = null;\n });\n builder.addCase(LibService.getBookTypesListAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.bookTypesList.push(...payload);\n state.error = null;\n });\n builder.addCase(LibService.getBookTypesListAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.getBooksListAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.getBooksListAction.fulfilled, (state, { payload }) => {\n if (!payload.pagination.currentPage || payload.pagination.currentPage === 1) {\n state.booksList = payload.results.slice();\n } else {\n state.booksList.push(...payload.results.slice());\n }\n state.bookListPaginate = payload.pagination;\n state.error = null;\n state.getStatus = FetchStatus.FETCHED;\n });\n builder.addCase(LibService.getBooksListAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.getBookByIdAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.getBookByIdAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.selectedBook = { ...payload };\n state.error = null;\n });\n builder.addCase(LibService.getBookByIdAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error.message;\n });\n\n builder.addCase(LibService.createBookAction.pending, (state) => {\n state.postBookStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.createBookAction.fulfilled, (state, payload) => {\n state.postBookStatus = FetchStatus.FETCHED;\n state.selectedBook = payload.payload;\n state.error = null;\n });\n builder.addCase(LibService.createBookAction.rejected, (state, { error }) => {\n state.postBookStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.editBookAction.pending, (state) => {\n state.patchBookStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.editBookAction.fulfilled, (state) => {\n state.patchBookStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(LibService.editBookAction.rejected, (state, { error }) => {\n state.patchBookStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.deleteBookAction.pending, (state) => {\n state.deleteStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.deleteBookAction.fulfilled, (state, { payload }) => {\n state.deleteStatus = FetchStatus.FETCHED;\n state.booksList = state.booksList.filter((book) => book.id !== payload.id);\n const id = state.libraryTree.findIndex((item) => item.id === payload.courseId);\n if (id) {\n const typeId = state.libraryTree[id].bookTypes.findIndex((type) => type.id === payload.typeId);\n state.libraryTree[id].bookTypes[typeId].booksQuantity -= 1;\n }\n });\n builder.addCase(LibService.deleteBookAction.rejected, (state, { error }) => {\n state.deleteStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.getBookCoursesListAction.pending, (state) => {\n state.getCourseListStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n\n builder.addCase(LibService.getBookCoursesListAction.fulfilled, (state, { payload }) => {\n state.getCourseListStatus = FetchStatus.FETCHED;\n state.bookCoursesList = payload.map((course) => {\n return {\n id: course.id,\n title: `${course.title} (${course.parallels[0].title})`,\n };\n });\n state.bookCoursesList = state.bookCoursesList.sort((a, b) =>\n a.title.replace(/^(?:«|\")/, '') > b.title.replace(/^(?:«|\")/, '') ? 1 : -1,\n );\n state.error = null;\n });\n builder.addCase(LibService.getBookCoursesListAction.rejected, (state, { error }) => {\n state.getCourseListStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.getAuthorsListAction.rejected, (state, { error }) => {\n state.getAuthorsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(LibService.getAuthorsListAction.fulfilled, (state, { payload }) => {\n state.getAuthorsStatus = FetchStatus.FETCHED;\n if (payload.pagination.currentPage === 1) {\n state.bookAuthorsList = payload.results;\n } else {\n state.bookAuthorsList.push(...payload.results);\n }\n state.bookAuthorsListPaginate = payload.pagination;\n });\n builder.addCase(LibService.getAuthorsListAction.pending, (state) => {\n state.getAuthorsStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.createAuthorAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(LibService.createAuthorAction.fulfilled, (state, { payload }) => {\n state.createdAuthor = payload[0];\n state.postStatus = FetchStatus.FETCHED;\n });\n builder.addCase(LibService.createAuthorAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.editAuthorAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(LibService.editAuthorAction.fulfilled, (state, { payload }) => {\n state.editedAuthor = payload[0];\n state.patchStatus = FetchStatus.FETCHED;\n });\n builder.addCase(LibService.editAuthorAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.deleteAuthorAction.rejected, (state, { error }) => {\n state.deleteStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(LibService.deleteAuthorAction.fulfilled, (state, { payload }) => {\n state.deleteStatus = FetchStatus.FETCHED;\n state.bookAuthorsList = payload.results.slice();\n });\n builder.addCase(LibService.deleteAuthorAction.pending, (state) => {\n state.deleteStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n\n builder.addCase(LibService.createBookFileAction.pending, (state) => {\n state.postFileStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.createBookFileAction.fulfilled, (state) => {\n state.postFileStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(LibService.createBookFileAction.rejected, (state, { error }) => {\n state.postFileStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.editBookFileAction.pending, (state) => {\n state.patchFileStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.editBookFileAction.fulfilled, (state) => {\n state.patchFileStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(LibService.editBookFileAction.rejected, (state, { error }) => {\n state.patchFileStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(LibService.deleteBookFileAction.pending, (state) => {\n state.deleteFileStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(LibService.deleteBookFileAction.fulfilled, (state) => {\n state.deleteFileStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(LibService.deleteBookFileAction.rejected, (state, { error }) => {\n state.deleteFileStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const libraryReducer = librarySlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { TransferredMarks } from 'api/services/marks/getTransferredMarks';\nimport {\n changeAssignmentAdditionalMarkAction,\n createAssignmentAdditionalMarkAction,\n deleteAssignmentAdditionalMarkAction,\n getTransferredMarksAction,\n} from 'store/actions/marks';\nimport { FetchStatus } from 'types/api';\n\nexport interface MarkState {\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n deleteStatus: FetchStatus;\n transferredMarksStatus: FetchStatus;\n transferredMarks: TransferredMarks[];\n error: unknown;\n}\n\nexport const initialState: MarkState = {\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n deleteStatus: FetchStatus.INITIAL,\n transferredMarksStatus: FetchStatus.INITIAL,\n transferredMarks: [],\n error: null,\n};\n\nconst markSlice = createSlice>({\n name: 'mark',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(createAssignmentAdditionalMarkAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createAssignmentAdditionalMarkAction.fulfilled, (state) => {\n state.postStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(createAssignmentAdditionalMarkAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(changeAssignmentAdditionalMarkAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(changeAssignmentAdditionalMarkAction.fulfilled, (state) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(changeAssignmentAdditionalMarkAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(deleteAssignmentAdditionalMarkAction.pending, (state) => {\n state.deleteStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(deleteAssignmentAdditionalMarkAction.fulfilled, (state) => {\n state.deleteStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(deleteAssignmentAdditionalMarkAction.rejected, (state, { error }) => {\n state.deleteStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getTransferredMarksAction.pending, (state) => {\n state.transferredMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getTransferredMarksAction.fulfilled, (state, { payload }) => {\n state.transferredMarksStatus = FetchStatus.FETCHED;\n state.transferredMarks = state.transferredMarks.concat(payload);\n state.error = null;\n })\n .addCase(getTransferredMarksAction.rejected, (state, { error }) => {\n state.transferredMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const markReducer = markSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n createMedicalCertificateAction,\n getMedicalCertificatesAction,\n updateMedicalCertificateAction,\n} from 'store/actions/medicalCertificate';\nimport { FetchStatus } from 'types/api';\nimport { MedicalCertificates } from 'types/certificates';\n\ninterface MedicalCertificateState {\n updateCertificateStatus: FetchStatus;\n getCertificateStatus: FetchStatus;\n postCertificateStatus: FetchStatus;\n approvedCertificates: MedicalCertificates[];\n notApprovedCertificates: MedicalCertificates[];\n error: unknown;\n}\n\nconst initialState: MedicalCertificateState = {\n updateCertificateStatus: FetchStatus.INITIAL,\n getCertificateStatus: FetchStatus.INITIAL,\n postCertificateStatus: FetchStatus.INITIAL,\n approvedCertificates: [],\n notApprovedCertificates: [],\n error: null,\n};\n\nconst medicalCertificateSlice = createSlice({\n name: 'medicalCertificate',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(getMedicalCertificatesAction.pending, (state) => {\n state.getCertificateStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getMedicalCertificatesAction.fulfilled, (state, { payload }) => {\n const approved: MedicalCertificates[] = [];\n const notApproved: MedicalCertificates[] = [];\n payload.map((certificate) => {\n if (certificate.isApproved === true) approved.push(certificate);\n if (certificate.isApproved === null) notApproved.push(certificate);\n });\n\n state.getCertificateStatus = FetchStatus.FETCHED;\n state.approvedCertificates = approved;\n state.notApprovedCertificates = notApproved;\n state.error = null;\n });\n builder.addCase(getMedicalCertificatesAction.rejected, (state, { error }) => {\n state.getCertificateStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createMedicalCertificateAction.pending, (state) => {\n state.updateCertificateStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createMedicalCertificateAction.fulfilled, (state, { payload }) => {\n state.updateCertificateStatus = FetchStatus.FETCHED;\n state.approvedCertificates = state.approvedCertificates.concat(payload);\n state.notApprovedCertificates = state.notApprovedCertificates.filter(\n (certificate) => certificate.id !== payload.id,\n );\n state.error = null;\n });\n builder.addCase(createMedicalCertificateAction.rejected, (state, { error }) => {\n state.updateCertificateStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(updateMedicalCertificateAction.pending, (state) => {\n state.postCertificateStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(updateMedicalCertificateAction.fulfilled, (state, { payload }) => {\n state.postCertificateStatus = FetchStatus.FETCHED;\n if (payload?.isApproved === true) {\n state.approvedCertificates = state.approvedCertificates.concat(payload);\n state.notApprovedCertificates = state.notApprovedCertificates.filter(\n (certificate) => certificate.id !== payload.id,\n );\n }\n if (payload?.isApproved === null) {\n state.notApprovedCertificates = state.notApprovedCertificates.concat(payload);\n state.approvedCertificates = state.approvedCertificates.filter(\n (certificate) => certificate.id !== payload.id,\n );\n }\n if (payload?.isApproved === false) {\n state.notApprovedCertificates = state.notApprovedCertificates.filter(\n (certificate) => certificate.id !== payload.id,\n );\n }\n state.error = null;\n });\n builder.addCase(updateMedicalCertificateAction.rejected, (state, { error }) => {\n state.postCertificateStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const medicalCertificateReducer = medicalCertificateSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { loadMetaAction, loadMetaCatalogAction, loadMoreMetaCatalogAction } from 'store/actions/meta';\nimport { FetchStatus } from 'types/api';\nimport { ICatalog, IEntitiesConfig } from 'types/meta';\n\nexport interface IMetaState {\n fetchStatus: FetchStatus;\n entities?: {\n actions?: IEntitiesConfig;\n };\n catalog: {\n api: ICatalog;\n };\n errors: unknown;\n}\nexport const initialState: IMetaState = {\n fetchStatus: FetchStatus.INITIAL,\n errors: [],\n entities: {},\n catalog: {\n api: {},\n },\n};\n\nconst metaSlice = createSlice>({\n name: 'meta',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(loadMetaAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.errors = [];\n });\n builder.addCase(loadMetaAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.entities = payload;\n state.errors = [];\n });\n builder.addCase(loadMetaAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.errors = error;\n });\n builder.addCase(loadMetaCatalogAction.pending, (state, { meta }) => {\n const payload = meta?.arg;\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload?.catalogData?.url]: {\n ...state?.catalog?.api?.[payload?.catalogData?.url],\n fetchStatus: FetchStatus.FETCHING,\n },\n },\n };\n });\n builder.addCase(loadMetaCatalogAction.fulfilled, (state, { payload }) => {\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload.url]: {\n list: payload.list,\n pagination: payload.pagination,\n fetchStatus: FetchStatus.FETCHED,\n },\n },\n };\n });\n builder.addCase(loadMetaCatalogAction.rejected, (state, { meta }) => {\n const payload = meta.arg;\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload?.catalogData?.url]: {\n ...state?.catalog?.api?.[payload?.catalogData?.url],\n fetchStatus: FetchStatus.ERROR,\n },\n },\n };\n });\n\n builder.addCase(loadMoreMetaCatalogAction.pending, (state, { meta }) => {\n const payload = meta?.arg;\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload?.catalogData?.url]: {\n ...state?.catalog?.api?.[payload?.catalogData?.url],\n fetchStatus: FetchStatus.FETCHING_MORE,\n },\n },\n };\n });\n builder.addCase(loadMoreMetaCatalogAction.fulfilled, (state, { payload }) => {\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload.url]: {\n list: [...(state?.catalog?.api?.[payload.url]?.list || []), ...payload.list],\n pagination: payload.pagination,\n fetchStatus: FetchStatus.FETCHED,\n },\n },\n };\n });\n builder.addCase(loadMoreMetaCatalogAction.rejected, (state, { meta }) => {\n const payload = meta.arg;\n state.catalog = {\n ...state.catalog,\n api: {\n ...state?.catalog?.api,\n [payload?.catalogData?.url]: {\n ...state?.catalog?.api?.[payload?.catalogData?.url],\n fetchStatus: FetchStatus.ERROR,\n },\n },\n };\n });\n },\n});\n\nexport const metaReducer = metaSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { oauthAction } from 'store/actions/oauth';\nimport { FetchStatus } from 'types/api';\n\nexport interface OAuthState {\n oauthStatus: FetchStatus;\n error: unknown;\n}\n\nconst initialState: OAuthState = {\n oauthStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst oauthSlice = createSlice>({\n name: 'oauth',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(oauthAction.pending, (state) => {\n state.oauthStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(oauthAction.fulfilled, (state) => {\n state.oauthStatus = FetchStatus.FETCHED;\n })\n .addCase(oauthAction.rejected, (state, { error }) => {\n state.oauthStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const oauthReducer = oauthSlice.reducer;\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { ssoPasswordReset, ssoPasswordResetConfirm, ssoPasswordResetValidate } from 'api/services/token';\n\nexport const changePasswordAction = createAsyncThunk(\n 'passwordRecovery/changePassword',\n async (params: { token: string; newPassword: string }) => {\n return await ssoPasswordResetConfirm({\n token: params.token,\n password: params.newPassword,\n });\n },\n);\n\nexport const validateResetToken = createAsyncThunk('passwordRecovery/validateToken', async (token: string) => {\n return await ssoPasswordResetValidate(token);\n});\n\nexport const resetPasswordAction = createAsyncThunk(\n 'registration/postResetPassword',\n async (params: { email: string; realm: string }) => {\n return await ssoPasswordReset(params);\n },\n);\n","import { createSlice } from '@reduxjs/toolkit';\nimport { changePasswordAction, resetPasswordAction } from 'store/actions/passwordRecovery';\nimport { FetchStatus } from 'types/api';\n\nexport interface IPasswordRecoveryState {\n resetPasswordStatus: FetchStatus;\n resetPasswordError: null;\n changePasswordStatus: FetchStatus;\n changePasswordError: null;\n passwordRecoveryEmail?: string;\n}\n\nconst initialState: IPasswordRecoveryState = {\n resetPasswordStatus: FetchStatus.INITIAL,\n resetPasswordError: null,\n changePasswordStatus: FetchStatus.INITIAL,\n changePasswordError: null,\n};\n\nconst passwordRecoverySlice = createSlice({\n name: 'passwordRecovery',\n initialState,\n reducers: {\n setPasswordRecoveryEmail(state, action) {\n state.passwordRecoveryEmail = action.payload;\n },\n resetPasswordRecoveryStatuses(state) {\n state.resetPasswordStatus = FetchStatus.INITIAL;\n state.changePasswordStatus = FetchStatus.INITIAL;\n },\n resetPasswordRecoveryErrors(state) {\n state.resetPasswordError = null;\n state.resetPasswordError = null;\n },\n },\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {\n builder.addCase(changePasswordAction.pending, (state) => {\n state.changePasswordStatus = FetchStatus.FETCHING;\n state.changePasswordError = null;\n });\n builder.addCase(changePasswordAction.fulfilled, (state, { payload }) => {\n state.changePasswordStatus = FetchStatus.FETCHED;\n state.changePasswordError = null;\n });\n builder.addCase(changePasswordAction.rejected, (state, { error }) => {\n state.changePasswordStatus = FetchStatus.ERROR;\n // @ts-ignore\n state.changePasswordError = JSON.parse(error?.message);\n });\n builder.addCase(resetPasswordAction.pending, (state) => {\n state.resetPasswordStatus = FetchStatus.FETCHING;\n state.resetPasswordError = null;\n });\n builder.addCase(resetPasswordAction.fulfilled, (state) => {\n state.resetPasswordStatus = FetchStatus.FETCHED;\n state.resetPasswordError = null;\n });\n builder.addCase(resetPasswordAction.rejected, (state, { error }) => {\n state.resetPasswordStatus = FetchStatus.ERROR;\n // @ts-ignore\n state.resetPasswordError = JSON.parse(error?.message);\n });\n },\n});\n\nconst {\n setPasswordRecoveryEmail,\n resetPasswordRecoveryStatuses,\n resetPasswordRecoveryErrors,\n} = passwordRecoverySlice.actions;\nexport { resetPasswordRecoveryErrors, resetPasswordRecoveryStatuses, setPasswordRecoveryEmail };\nexport const passwordRecoveryReducer = passwordRecoverySlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { ResponseRevisionQuestion } from 'api/services/revisionQuestion';\nimport {\n createRevisionQuestionAction,\n deleteRevisionQuestionAction,\n updateRevisionQuestionAction,\n} from 'store/actions/revisionQuestion';\nimport { FetchStatus } from 'types/api';\n\nexport interface RevisionQuestionState {\n fetchStatus: FetchStatus;\n revisionQuestion: ResponseRevisionQuestion;\n error: unknown;\n}\n\nexport const initialState: RevisionQuestionState = {\n fetchStatus: FetchStatus.INITIAL,\n revisionQuestion: {} as ResponseRevisionQuestion,\n error: undefined,\n};\n\nconst revisionQuestionSlice = createSlice>({\n name: 'revisionQuestion',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(createRevisionQuestionAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createRevisionQuestionAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.revisionQuestion = payload;\n state.error = null;\n })\n .addCase(createRevisionQuestionAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(updateRevisionQuestionAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(updateRevisionQuestionAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.revisionQuestion = payload;\n state.error = null;\n })\n .addCase(updateRevisionQuestionAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(deleteRevisionQuestionAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(deleteRevisionQuestionAction.fulfilled, (state) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(deleteRevisionQuestionAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const revisionQuestionReducer = revisionQuestionSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n getStaffProfileByIdAction,\n getStaffProfilesAction,\n updateStaffProfileAction,\n} from 'store/actions/staffProfile';\nimport { FetchStatus } from 'types/api';\nimport { StaffProfile } from 'types/staffProfile';\nimport { UserRoles } from 'types/user';\n\ninterface StaffProfileState {\n updateProfileStatus: FetchStatus;\n getProfilesStatus: FetchStatus;\n getProfileByIdStatus: FetchStatus;\n profile: StaffProfile | null;\n usersProfiles: Record;\n error: unknown;\n}\n\nconst initialState: StaffProfileState = {\n updateProfileStatus: FetchStatus.INITIAL,\n getProfilesStatus: FetchStatus.INITIAL,\n getProfileByIdStatus: FetchStatus.INITIAL,\n profile: null,\n usersProfiles: {} as Record,\n error: null,\n};\n\nconst staffProfileSlice = createSlice({\n name: 'staffProfile',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(getStaffProfilesAction.pending, (state) => {\n state.getProfilesStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getStaffProfilesAction.fulfilled, (state, { payload }) => {\n state.getProfilesStatus = FetchStatus.FETCHED;\n state.profile = payload.profiles;\n state.error = null;\n\n if (!payload.userRole) return;\n state.usersProfiles[payload.userRole] = (payload.profiles as unknown) as StaffProfile[];\n });\n builder.addCase(getStaffProfilesAction.rejected, (state, { error }) => {\n state.getProfilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(updateStaffProfileAction.pending, (state) => {\n state.updateProfileStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(updateStaffProfileAction.fulfilled, (state, { payload }) => {\n state.updateProfileStatus = FetchStatus.FETCHED;\n state.profile = payload;\n state.error = null;\n });\n builder.addCase(updateStaffProfileAction.rejected, (state, { error }) => {\n state.updateProfileStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getStaffProfileByIdAction.pending, (state) => {\n state.getProfileByIdStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getStaffProfileByIdAction.fulfilled, (state, { payload }) => {\n state.getProfileByIdStatus = FetchStatus.FETCHED;\n state.profile = payload;\n state.error = null;\n });\n builder.addCase(getStaffProfileByIdAction.rejected, (state, { error }) => {\n state.getProfileByIdStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const staffProfileReducer = staffProfileSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { StudentGroupResponse } from 'api/services/studentGroups';\nimport { getStudentGroupsAction } from 'store/actions/studentGroups';\nimport { normalizeStudentGroup } from 'store/normalizers/studentGroups/normalizeStudentGroups';\nimport { FetchStatus } from 'types/api';\n\nexport type StudentGroupMap = {\n [groupId: number]: StudentGroupResponse;\n};\n\ninterface StudentGroupsState {\n getStudentGroupsStatus: FetchStatus;\n studentGroupsMap: StudentGroupMap;\n error: unknown;\n}\n\nconst initialState: StudentGroupsState = {\n getStudentGroupsStatus: FetchStatus.INITIAL,\n studentGroupsMap: {} as StudentGroupMap,\n error: null,\n};\n\nconst studentGroupsSlice = createSlice>({\n name: 'studentGroup',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(getStudentGroupsAction.pending, (state) => {\n state.getStudentGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getStudentGroupsAction.fulfilled, (state, { payload }) => {\n state.getStudentGroupsStatus = FetchStatus.FETCHED;\n state.studentGroupsMap = normalizeStudentGroup(payload);\n })\n .addCase(getStudentGroupsAction.rejected, (state, { error }) => {\n state.getStudentGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const studentGroupReducer = studentGroupsSlice.reducer;\n","import { StudentGroupResponse } from 'api/services/studentGroups';\nimport { StudentGroupMap } from 'store/reducers/studentGroups';\n\nexport const normalizeStudentGroup = (groups: StudentGroupResponse[]): StudentGroupMap => {\n return groups.reduce((result, group) => {\n result[group.id] = group;\n\n return result;\n }, {} as StudentGroupMap);\n};\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport * as ScheduleService from 'store/actions/studentSchedule';\nimport { FetchStatus } from 'types/api';\nimport {\n TChartInfo,\n TEventRooms,\n TLessonInformationNormalizes,\n TLessonSchedules,\n TParallel,\n} from 'types/studentScheduleTypes';\n\nexport interface StudentsScheduleState {\n getStatus: FetchStatus;\n getChartStatus: FetchStatus;\n postStatus: FetchStatus;\n filterTree: TParallel[];\n wasReset: boolean;\n selectedDay: string;\n lessonSchedules: TLessonSchedules[];\n eventRooms: TEventRooms[];\n chartData: TChartInfo[];\n filters: number[];\n lessonsInformation: TLessonInformationNormalizes;\n error: unknown;\n}\nexport const initialState: StudentsScheduleState = {\n getStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n getChartStatus: FetchStatus.INITIAL,\n filterTree: [],\n wasReset: false,\n selectedDay: '', // as 'YYYY-MM-DD'\n lessonSchedules: [],\n eventRooms: [],\n filters: [],\n chartData: [],\n lessonsInformation: {} as TLessonInformationNormalizes,\n error: null,\n};\n\nconst StudentScheduleSlice = createSlice>({\n name: 'studentSchedule',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder.addCase(ScheduleService.clearScheduleListAction, (state) => {\n state.lessonSchedules = [];\n state.eventRooms = [];\n state.chartData = [];\n state.wasReset = true;\n });\n builder.addCase(ScheduleService.clearLessonInfoAction, (state) => {\n state.lessonsInformation = {} as TLessonInformationNormalizes;\n });\n builder.addCase(ScheduleService.setFiltersAction, (state, { payload }) => {\n state.filters = payload;\n });\n builder.addCase(ScheduleService.setSelectedDayAction, (state, { payload }) => {\n state.selectedDay = payload;\n });\n builder.addCase(ScheduleService.getFilterTreeAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(ScheduleService.getFilterTreeAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.filterTree = payload;\n state.error = null;\n });\n builder.addCase(ScheduleService.getFilterTreeAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(ScheduleService.getDayScheduleAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n state.wasReset = false;\n });\n builder.addCase(ScheduleService.getDayScheduleAction.fulfilled, (state, { payload }) => {\n state.postStatus = FetchStatus.FETCHED;\n state.lessonSchedules = payload;\n state.error = null;\n state.wasReset = false;\n });\n builder.addCase(ScheduleService.getDayScheduleAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n state.wasReset = false;\n });\n builder.addCase(ScheduleService.getLessonInformationAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(ScheduleService.getLessonInformationAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.lessonsInformation = payload;\n state.error = null;\n });\n builder.addCase(ScheduleService.getLessonInformationAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(ScheduleService.getEventRoomInformationAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(ScheduleService.getEventRoomInformationAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.lessonsInformation = payload;\n state.error = null;\n });\n builder.addCase(ScheduleService.getEventRoomInformationAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(ScheduleService.getDayScheduleChartAction.pending, (state) => {\n state.getChartStatus = FetchStatus.FETCHING;\n state.chartData = [];\n state.error = null;\n });\n builder.addCase(ScheduleService.getDayScheduleChartAction.fulfilled, (state, { payload }) => {\n state.getChartStatus = FetchStatus.FETCHED;\n state.chartData = payload;\n state.error = null;\n });\n builder.addCase(ScheduleService.getDayScheduleChartAction.rejected, (state, { error }) => {\n state.getChartStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const studentScheduleReducer = StudentScheduleSlice.reducer;\n","import { ResponseCourseType } from 'api/services/course';\nimport { CourseGroup } from 'types/courseGroup';\nimport { SubjectCourse } from 'types/subject';\n\nexport const normalizeMethodistCourses = (\n courseGroups: CourseGroup[],\n courseData: ResponseCourseType[],\n): SubjectCourse[] => {\n return courseData.map((course) => {\n const { id: courseId, title: courseTitle, parallels, isBlockEdit } = course;\n\n return {\n courseTitle,\n courseId,\n parallels,\n isBlockEdit,\n groups: courseGroups\n .filter((group) => group.course.id === courseId)\n .map((group) => ({\n ...group,\n groupTitle: group.title,\n })),\n };\n });\n};\n","import { ResponseCourse } from 'api/services/course';\nimport { CourseGroup } from 'types/courseGroup';\nimport { TeacherCourse } from 'types/subject';\n\nexport const normalizeTeacherCourses = (courseGroups: CourseGroup[], courseData: ResponseCourse[]): TeacherCourse[] => {\n return courseData.map((course) => {\n const groups = courseGroups.filter((group) => group.course.id === course.id);\n return {\n id: course.id,\n title: course.title,\n canEdit: true, // is teacher;\n canFill: false, // is teacher;\n topicsQuantity: course.topicsQuantity ?? 0,\n lessonsQuantity: course.lessonsQuantity ?? 0,\n studentsQuantity: groups.reduce((quantity, { studentsQuantity }) => quantity + studentsQuantity, 0),\n studentGroups: groups.map((group) => {\n return {\n id: group.id,\n groupTitle: group.title,\n studentsQuantity: group.studentsQuantity,\n assignmentQuantity: group.progressesQuantity ?? 0,\n nextAssignmentDeadline: group.nextProgressDeadline,\n teacher: group.teachers[0],\n courseAssignmentId: group.id,\n lessonsQuantity: group.lessonsQuantity,\n };\n }),\n };\n });\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { Subject } from 'api/services/subject';\nimport { getCourseGroupDetailsAction } from 'store/actions/courseGroup';\nimport {\n getCoursesBySubject,\n getMethodistSubjects,\n getPrincipalSubjects,\n getSubjectDetailsAction,\n getTeacherSubjects,\n} from 'store/actions/subject';\nimport { normalizeMethodistCourses } from 'store/normalizers/subject';\nimport { normalizeTeacherCourses } from 'store/normalizers/subject/normalizeTeacherCourses';\nimport { FetchStatus } from 'types/api';\nimport { MethodistSubjectData, SubjectCourse, TeacherCourse } from 'types/subject';\n\ntype SubjectsMap = {\n [subjectId: number]: {\n id: number;\n title: string;\n shortName?: string;\n studentsCount?: number;\n courseGroupsCount?: number;\n courseQuantity?: number;\n courses: SubjectCourse[];\n teacherCourses: TeacherCourse[];\n status: FetchStatus;\n ordering: number;\n };\n};\n\ninterface SubjectsState {\n fetchStatus: FetchStatus;\n subjectDetailsStatus: FetchStatus;\n methodistSubjectStatus: FetchStatus;\n methodistSubjectsData: MethodistSubjectData[];\n subjectsData: SubjectsMap;\n subjectDetails?: Subject;\n error?: unknown;\n}\n\nconst initialState: SubjectsState = {\n fetchStatus: FetchStatus.INITIAL,\n methodistSubjectStatus: FetchStatus.INITIAL,\n subjectDetailsStatus: FetchStatus.INITIAL,\n methodistSubjectsData: [],\n subjectsData: {},\n error: null,\n};\n\nexport const subjectsSlice = createSlice>({\n name: 'subjects',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder.addCase(getCourseGroupDetailsAction.fulfilled, (state, { payload }) => {\n const courseId = payload.course.id;\n const title = payload.title;\n state.methodistSubjectsData = state.methodistSubjectsData.map((subject) => {\n if (subject.courses.some((course) => course.courseId === courseId)) {\n return {\n ...subject,\n courses: subject.courses.map((course) => {\n if (course.courseId === courseId) {\n return {\n ...course,\n groups: course.groups.map((group) => {\n if (group.id === payload.id) {\n return {\n ...payload,\n groupTitle: title,\n };\n }\n\n return group;\n }),\n };\n }\n\n return course;\n }),\n };\n }\n\n return subject;\n });\n });\n builder\n .addCase(getSubjectDetailsAction.pending, (state) => {\n state.subjectDetailsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getSubjectDetailsAction.fulfilled, (state, { payload }) => {\n state.subjectDetailsStatus = FetchStatus.FETCHED;\n state.subjectDetails = payload;\n state.error = null;\n })\n .addCase(getSubjectDetailsAction.rejected, (state, { error }) => {\n state.subjectDetailsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getTeacherSubjects.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.subjectsData = payload.reduce((data, { id, ...subject }) => {\n data[id] = {\n ...subject,\n id,\n courses: [],\n teacherCourses: [],\n status: FetchStatus.INITIAL,\n };\n\n return data;\n }, {} as SubjectsMap);\n })\n .addCase(getMethodistSubjects.fulfilled, (state, { payload }) => {\n state.methodistSubjectStatus = FetchStatus.FETCHED;\n state.subjectsData =\n payload && payload.length\n ? payload.reduce((data, { id, title, ordering }) => {\n data[id] = {\n id,\n title,\n ordering,\n courseGroupsCount: 0,\n studentsCount: 0,\n courses: [],\n teacherCourses: [],\n status: FetchStatus.INITIAL,\n };\n\n return data;\n }, {} as SubjectsMap)\n : [];\n })\n .addCase(getPrincipalSubjects.fulfilled, (state, { payload }) => {\n state.methodistSubjectStatus = FetchStatus.FETCHED;\n state.subjectsData = payload.reduce((data, { id, ...subject }) => {\n data[id] = {\n ...subject,\n id,\n courses: [],\n teacherCourses: [],\n status: FetchStatus.INITIAL,\n };\n\n return data;\n }, {} as SubjectsMap);\n })\n .addCase(getCoursesBySubject.fulfilled, (state, { payload }) => {\n const { subjectId, courses: courseData, courseGroups, isTeacher } = payload;\n\n state.subjectsData[subjectId] = {\n ...state.subjectsData[subjectId],\n courses: isTeacher ? [] : normalizeMethodistCourses(courseGroups, courseData),\n teacherCourses: isTeacher ? normalizeTeacherCourses(courseGroups, courseData) : [],\n status: FetchStatus.FETCHED,\n };\n });\n },\n});\n\nexport const resetSubjectState = subjectsSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const subjectReducer = subjectsSlice.reducer;\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { UserInfo } from 'api/services/user';\nimport { fetchLogout } from 'store/actions/auth';\nimport { changeAcademicYearAction, changePasswordAction, getUserInfoAction } from 'store/actions/user';\nimport { FetchStatus } from 'types/api';\n\ninterface UserStore {\n fetchStatus: FetchStatus;\n changePasswordStatus: FetchStatus;\n info?: UserInfo;\n error: unknown;\n}\n\nconst initialState: UserStore = {\n fetchStatus: FetchStatus.INITIAL,\n changePasswordStatus: FetchStatus.INITIAL,\n info: undefined,\n error: null,\n};\n\nconst userSlice = createSlice>({\n name: 'user',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchLogout.fulfilled, (state) => {\n state.info = undefined;\n state.error = null;\n state.fetchStatus = FetchStatus.INITIAL;\n });\n // Fetching user info\n builder.addCase(getUserInfoAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getUserInfoAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.info = payload;\n state.error = null;\n });\n builder.addCase(getUserInfoAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.info = undefined;\n state.error = error;\n });\n builder.addCase(changePasswordAction.pending, (state) => {\n state.changePasswordStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(changePasswordAction.fulfilled, (state) => {\n state.changePasswordStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(changePasswordAction.rejected, (state, { error }) => {\n state.changePasswordStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(changeAcademicYearAction.pending, (state) => {\n state.error = null;\n });\n builder.addCase(changeAcademicYearAction.fulfilled, (state, { payload }) => {\n if (state.info) {\n const updatedInfo: UserInfo = {\n ...state.info,\n academicYear: payload.academicYear,\n };\n state.info = { ...updatedInfo };\n }\n\n state.error = null;\n });\n builder.addCase(changeAcademicYearAction.rejected, (state, { error }) => {\n state.error = error;\n });\n },\n});\n\nexport const userReducer = userSlice.reducer;\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport { assignmentReducer as newAssignment } from '@fsd-entities/assignment/model';\nimport { materialsReducer as newMaterials } from '@fsd-entities/materials';\nimport { navigationReducer as newNavigation } from '@fsd-entities/navigation/model';\nimport { onlineLessonsReducer as onlineLessons } from '@fsd-entities/online-lessons';\nimport { profileReducer as profile } from '@fsd-entities/profile/models';\nimport { statisticsMonitoringReducer as statisticsMonitoring } from '@fsd-entities/statistics-monitoring';\nimport {\n AnyAction,\n CombinedState,\n combineReducers,\n configureStore,\n getDefaultMiddleware,\n ThunkDispatch,\n} from '@reduxjs/toolkit';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage'; // defaults to localStorage for web\nimport { academicPerformanceReducer as academicPerformance } from 'store/reducers/academicPerformance';\nimport { academicYearReducer as academicYear } from 'store/reducers/academicYear';\nimport { activeClassesReducer as activeClasses } from 'store/reducers/activeClasses';\nimport { adaptationReducer as adaptation } from 'store/reducers/adaptation';\nimport { adaptationProgressReducer as adaptationProgress } from 'store/reducers/adaptationProgress';\nimport { alertsReducer as alerts } from 'store/reducers/alerts';\nimport { answerAttemptsReducer as answerAttempts } from 'store/reducers/answerAttempts';\nimport { assignmentReducer as assignemnt } from 'store/reducers/assignment';\nimport { attendanceReducer as attendance } from 'store/reducers/attendance';\nimport { authBlackList, authReducer as auth } from 'store/reducers/auth';\nimport { calendarPlanReducer as calendarPlan } from 'store/reducers/calendarPlan';\nimport { codifierReducer as codifier } from 'store/reducers/codifier';\nimport { courseReducer as course } from 'store/reducers/course';\nimport { courseGroupReducer as courseGroup } from 'store/reducers/courseGroup';\nimport { courseLessonReducer as courseLesson } from 'store/reducers/courseLessons';\nimport { courseThemeReducer as courseTheme } from 'store/reducers/courseThemes';\nimport { createTaskReducer as createTask } from 'store/reducers/createTask';\nimport { curatorDashboardReducer as curatorDashboard } from 'store/reducers/curatorDashboard';\nimport { eduReducer as edu } from 'store/reducers/edu';\nimport { educationalPlanReducer as educationalPlan } from 'store/reducers/educationalPlan';\nimport { errorReducer as error } from 'store/reducers/error';\nimport { fileReducer as file } from 'store/reducers/file';\nimport { formErrorReducer as formError } from 'store/reducers/formError';\nimport { groupActionsReducer as groupActions } from 'store/reducers/groupActions';\nimport { homeworkReducer as homework } from 'store/reducers/homework';\nimport { lessonTaskReducer as lessonTask } from 'store/reducers/lessonTask';\nimport { libraryReducer as library } from 'store/reducers/library';\nimport { loaderReducer as loader } from 'store/reducers/loader';\nimport { markReducer as mark } from 'store/reducers/mark';\nimport { materialsReducer as materials } from 'store/reducers/materials';\nimport { medicalCertificateReducer as medicalCertificate } from 'store/reducers/medicalCertificate';\nimport { meetingReducer as meeting } from 'store/reducers/meeting';\nimport { meetingFilesReducer as meetingFiles } from 'store/reducers/meetingFiles';\nimport { metaReducer as meta } from 'store/reducers/meta';\nimport { monitoringReducer as monitoring } from 'store/reducers/monitoring';\nimport { newsReducer as news } from 'store/reducers/news';\nimport { NewSubjectsReducer as newSubject } from 'store/reducers/newSubjects';\nimport { noteReducer as note } from 'store/reducers/notes';\nimport { notificationsReducer as notifications } from 'store/reducers/notifications';\nimport { oauthReducer as oauth } from 'store/reducers/oauth';\nimport { passwordRecoveryReducer as passwordRecovery } from 'store/reducers/passwordRecovery';\nimport { periodMarkReducer as periodMark } from 'store/reducers/periodMark';\nimport { proctoringReducer as proctoring } from 'store/reducers/proctoring';\nimport { questionsReviewRevisionReducer as questionsReviewRevision } from 'store/reducers/question';\nimport { questionsReducer as questions } from 'store/reducers/questionBank';\nimport { questionsSearchBlockReducer as searchBlock } from 'store/reducers/questionCreate';\nimport { revisionQuestionReducer as revisionQuestion } from 'store/reducers/revisionQuestion';\nimport { scheduleReducer as schedule } from 'store/reducers/schedule';\nimport { staffProfileReducer as staffProfile } from 'store/reducers/staffProfile';\nimport { studentReducer as student } from 'store/reducers/student';\nimport { studentGroupReducer as studentGroup } from 'store/reducers/studentGroups';\nimport { studentScheduleReducer as studentSchedule } from 'store/reducers/studentSchedule';\nimport { studentTasksReducer as studentTasks } from 'store/reducers/studentTasks';\nimport { subjectReducer as subject } from 'store/reducers/subject';\nimport { userReducer as user } from 'store/reducers/user';\n\nexport const reducer = combineReducers({\n assignemnt,\n newMaterials,\n newNavigation,\n onlineLessons,\n newAssignment,\n meetingFiles,\n alerts,\n attendance,\n profile,\n staffProfile,\n schedule,\n homework,\n subject,\n auth,\n lessonTask,\n file,\n mark,\n materials,\n studentSchedule,\n newSubject,\n loader,\n user,\n meta,\n passwordRecovery,\n course,\n periodMark,\n medicalCertificate,\n academicYear,\n questions,\n monitoring,\n courseTheme,\n courseLesson,\n note,\n formError,\n activeClasses,\n studentTasks,\n codifier,\n createTask,\n searchBlock,\n academicPerformance,\n answerAttempts,\n student,\n edu,\n courseGroup,\n notifications,\n adaptation,\n adaptationProgress,\n questionsReviewRevision,\n meeting,\n educationalPlan,\n revisionQuestion,\n studentGroup,\n curatorDashboard,\n oauth,\n proctoring,\n news,\n library,\n calendarPlan,\n groupActions,\n error,\n statisticsMonitoring,\n});\n\nconst persistConfig = {\n key: 'root',\n storage,\n transforms: [authBlackList],\n whitelist: ['auth'],\n};\n\nconst persistedReducer = persistReducer(persistConfig, reducer);\nexport const store = configureStore({\n reducer: persistedReducer,\n devTools: process.env.NODE_ENV !== 'production',\n enhancers: [],\n middleware: getDefaultMiddleware({\n serializableCheck: false,\n }),\n});\nexport const persistor = persistStore(store);\n\nexport type State = ReturnType;\nexport type Action = typeof store.dispatch;\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = (): ThunkDispatch, null, AnyAction> => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","import React from 'react';\nimport { Chart, GoogleChartWrapper, ReactGoogleChartProps } from 'react-google-charts';\nimport { GoogleChartWrapperChartType } from 'react-google-charts/dist/types';\n\ntype TAppAreaChart = Omit & {\n type?: GoogleChartWrapperChartType;\n onChartSelect?: (chartWrapper: GoogleChartWrapper) => void;\n onChartReady?: () => void;\n};\n\nexport const AppAreaChart = (props: TAppAreaChart): JSX.Element => {\n const { data, options, type = 'AreaChart', width = '100%', height = '100%', onChartSelect, onChartReady } = props;\n const chartEvents = [];\n\n if (onChartSelect) {\n chartEvents.push({\n eventName: 'ready',\n //@ts-ignore\n callback: ({ chartWrapper, google }) => {\n const chart = chartWrapper.getChart();\n onChartReady?.();\n\n google.visualization.events.addListener(chart, 'select', () => onChartSelect(chartWrapper));\n },\n });\n }\n return (\n \n );\n};\n","import React, { useEffect, useState } from 'react';\n\nimport './style.scss';\n\nexport const AppSkeletonCustom: React.FC<{ isFetching: boolean; zIndex?: number }> = ({ isFetching, zIndex }) => {\n const [isShow, setIsShow] = useState(false);\n\n useEffect(() => {\n setIsShow(isFetching);\n }, [isFetching]);\n\n return isShow ?
: null;\n};\n","import React from 'react';\nimport { AppText } from 'src-new/ui';\nimport { TInterval } from 'src-new/utils/date-n-time/timeСonversion';\n\ntype TScheduleTimelineProps = {\n intervalList: TInterval[];\n intervalHeight: number;\n};\nconst ScheduleTimeline: React.FC = ({ intervalList, intervalHeight }) => {\n const intervalListLastIndex = intervalList.length - 1;\n return (\n <>\n {intervalList.map((timeItem, index) => {\n return (\n
\n \n \n
\n {intervalListLastIndex === index && (\n \n \n
\n )}\n \n );\n })}\n \n );\n};\nexport default ScheduleTimeline;\n","import React from 'react';\nimport { TScheduleCardBase, TScheduleCardProps } from 'src-new/ui/schedules/app-day-schedule/AppDaySchedule.types';\n\nimport './style.scss';\n\nconst ScheduleCard = (\n props: TScheduleCardProps,\n): JSX.Element => {\n const { card, style, onCardClick, CardContent, selectedCardId } = { ...props };\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (onCardClick) {\n void onCardClick();\n }\n };\n\n return (\n handleClick(event)}\n >\n
\n \n
\n \n );\n};\n\nexport default ScheduleCard;\n","import React, { useMemo } from 'react';\nimport { CloseBlue } from '@lms-elements/icons';\nimport { TScheduleTooltipProps } from 'src-new/ui/schedules/app-day-schedule/AppDaySchedule.types';\n\nimport './style.scss';\n\nconst SchedulesTooltip = (props: TScheduleTooltipProps): JSX.Element => {\n const { style, arrowPosition, arrowBottom, TooltipContent, onClose } = { ...props };\n\n const arrowStyle = useMemo(() => {\n if (arrowBottom) {\n return {\n bottom: `${arrowBottom}px`,\n };\n } else {\n return {\n top: '70px',\n };\n }\n }, [arrowBottom]);\n const handleTooltipClose = (\n event: React.MouseEvent | React.MouseEvent,\n ) => {\n event.stopPropagation();\n onClose();\n };\n const handleTooltipClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n return (\n
\n
handleTooltipClose(event)} />\n
handleTooltipClick(event)}>\n
\n handleTooltipClose(event)}\n />\n
\n \n
\n
\n
\n );\n};\n\nexport default SchedulesTooltip;\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { GoogleChartWrapper } from 'react-google-charts';\nimport { Moment } from 'moment';\nimport { AppAreaChart, AppSkeletonCustom, AppText } from 'src-new/ui';\nimport {\n addMinutesToTime,\n getCurrentTime,\n getDifferentInMinutes,\n getMaxTime,\n getMinTime,\n getMomentFromString,\n getTimeFromDate,\n getTimeline,\n isIntervalContainsInterval,\n isTimeInInterval,\n} from 'src-new/utils/date-n-time';\nimport { TInterval } from 'src-new/utils/date-n-time/timeСonversion';\n\nimport ScheduleTimeline from './schedule-timeline/ScheduleTimeline';\nimport SchedulesCard from './shedules-card/SchedulesCard';\nimport SchedulesTooltip from './shedules-tooltip/ShedulesTooltip';\nimport { TAppDayScheduleProps, TCardsRow, TScheduleCardBase, TTooltipConfig } from './AppDaySchedule.types';\nimport * as SCHEDULE_CONST from './AppDayScheduleConstants';\nimport { EAppDaySchedule } from './AppDayScheduleConstants';\n\nimport './style.scss';\n\nconst AppDaySchedule = (\n props: TAppDayScheduleProps,\n): JSX.Element => {\n const {\n cardsList,\n config,\n CardContent,\n TooltipContent,\n ChartTooltipContent,\n handleTooltipOpen,\n handleTooltipClose,\n handleChartSelected,\n chartData,\n needChart,\n needCurrentTimeLine = true,\n isLoading = false,\n } = { ...props };\n const [selectedCard, setSelectedCard] = useState(undefined);\n const [tooltipConfig, setTooltipConfig] = useState({} as TTooltipConfig);\n\n const [chartTooltipConfig, setChartTooltipConfig] = useState({} as TTooltipConfig);\n const [isChartTooltipVisible, setIsChartTooltipVisible] = useState(false);\n\n const cardsContainer = useRef(null);\n const tooltipContainer = useRef(null);\n const chartTooltipContainer = useRef(null);\n\n const normalizeCardsList = useMemo(() => {\n return cardsList.map((item) => {\n return {\n ...item,\n datetimeStart: getTimeFromDate(item.datetimeStart),\n datetimeEnd: getTimeFromDate(item.datetimeEnd),\n };\n });\n }, [cardsList]);\n const SCHEDULE_CONFIG: { [key in keyof typeof EAppDaySchedule | 'INTERVALS_COUNT']: number } = useMemo(() => {\n return {\n PIXELS_PER_MINUTE: config?.pixelsPerMinute || SCHEDULE_CONST.PIXELS_PER_MINUTE,\n INTERVAL_DURATION: config?.intervalDuration || SCHEDULE_CONST.INTERVAL_DURATION,\n CARD_WIDTH: config?.cardWidth || SCHEDULE_CONST.CARD_WIDTH,\n CARD_OFFSET: config?.cardsOffset || SCHEDULE_CONST.CARD_OFFSET,\n TOOLTIP_OFFSET: SCHEDULE_CONST.TOOLTIP_OFFSET,\n INTERVALS_COUNT: config.intervalsCount,\n SCHEDULE_PADDING_TOP: SCHEDULE_CONST.SCHEDULE_PADDING_TOP,\n CHART_WIDTH: SCHEDULE_CONST.CHART_WIDTH,\n };\n }, [config]);\n\n let currentTime = getCurrentTime();\n\n useEffect(() => {\n const gettingCurrentTime = setInterval(() => (currentTime = getCurrentTime()), 60 * 1000);\n\n return () => {\n clearInterval(gettingCurrentTime);\n };\n }, []);\n\n const timeIntervals = useMemo(() => {\n const starts = normalizeCardsList.map((item) => getMomentFromString(item.datetimeStart));\n const minTimeInList = normalizeCardsList.length ? getMinTime(starts) : '09:00';\n const minDefaultTime = '09:00';\n const isMinTimeInListEarly = getDifferentInMinutes(minDefaultTime, minTimeInList);\n const defaultStartTime = isMinTimeInListEarly < 0 ? minTimeInList : minDefaultTime;\n\n const intervalList = getTimeline(\n config.intervalStartTime || defaultStartTime,\n SCHEDULE_CONFIG.INTERVAL_DURATION,\n SCHEDULE_CONFIG.INTERVALS_COUNT,\n );\n\n const lastIntervalEnd = intervalList[intervalList.length - 1].end;\n //@ts-ignore\n const overtimeLessonsEnds: Moment[] = normalizeCardsList\n .map((item) => {\n if (getDifferentInMinutes(lastIntervalEnd, item.datetimeEnd) > 0) {\n return getMomentFromString(item.datetimeEnd);\n }\n })\n .filter((item) => !!item);\n if (overtimeLessonsEnds.length) {\n const lastOvertimeLessonTime = getMaxTime(overtimeLessonsEnds);\n\n while (!isTimeInInterval(intervalList[intervalList.length - 1], lastOvertimeLessonTime)) {\n const lastIntervalListIndex = intervalList.length - 1;\n\n intervalList.push({\n start: intervalList[lastIntervalListIndex].end,\n end: addMinutesToTime(SCHEDULE_CONFIG.INTERVAL_DURATION, intervalList[lastIntervalListIndex].end),\n });\n }\n }\n\n return intervalList;\n }, [normalizeCardsList]);\n const getCardsRows = useMemo((): TCardsRow => {\n const rows: TCardsRow = {};\n const emptyCard = {} as TScheduleCard;\n const longLessons: { intervalIndexList: number[]; cardInterval: { start: string; end: string } }[] = [];\n\n timeIntervals.forEach((interval, intervalIndex) => {\n //@ts-ignore\n rows[intervalIndex] = normalizeCardsList\n .map((item) => {\n const lessonInterval = {\n start: item.datetimeStart,\n end: item.datetimeEnd,\n };\n const isIntervalContainsLessonFully = isIntervalContainsInterval(interval, lessonInterval);\n const isIntervalContainsLessonPartially = isTimeInInterval(interval, item.datetimeStart);\n\n if (isIntervalContainsLessonFully) {\n return item;\n } else if (isIntervalContainsLessonPartially) {\n const lessonDuration = getDifferentInMinutes(item.datetimeStart, item.datetimeEnd);\n const lessonStartOffset = getDifferentInMinutes(\n item.datetimeStart,\n timeIntervals[intervalIndex].start,\n );\n //если карточка охватывает более одного временного интервала, заносим ее в список длинных карточек\n const countOfOverlays = Math.ceil(\n (lessonDuration + lessonStartOffset) / SCHEDULE_CONFIG.INTERVAL_DURATION,\n );\n if (countOfOverlays > 1) {\n const list = [];\n for (let i = 1; i < countOfOverlays; i++) {\n list.push(+intervalIndex + i);\n }\n longLessons.push({\n intervalIndexList: list,\n cardInterval: {\n start: item.datetimeStart,\n end: item.datetimeEnd,\n },\n });\n }\n return item;\n }\n })\n .filter((item) => item);\n });\n\n //добавляем пустые карточки на места пересечения с длинными уроками, чтобы добиться корректного смещения на доске\n longLessons.forEach((long) => {\n const longCardIndex = rows[long.intervalIndexList[0] - 1].findIndex(\n (card) => long.cardInterval.start === card.datetimeStart && long.cardInterval.end === card.datetimeEnd,\n );\n\n long.intervalIndexList.forEach((intervalIndex) => {\n const spliceIndex = rows[intervalIndex].findIndex(\n (card, cardIndex) =>\n isTimeInInterval(long.cardInterval, card.datetimeStart) && cardIndex === longCardIndex,\n );\n\n if (spliceIndex >= 0) {\n rows[intervalIndex].splice(spliceIndex, 0, emptyCard);\n }\n });\n });\n return rows;\n }, [timeIntervals]);\n const getCurrentTimeTopOffset = useMemo((): number | null => {\n const interval = timeIntervals.find((interval) => isTimeInInterval(interval, currentTime));\n const top =\n getDifferentInMinutes(timeIntervals[0].start, currentTime) * SCHEDULE_CONFIG.PIXELS_PER_MINUTE +\n SCHEDULE_CONFIG.SCHEDULE_PADDING_TOP;\n\n return interval ? top : null;\n }, [currentTime, timeIntervals]);\n const cardsRowMaxLength = useMemo(() => Math.max(...Object.values(getCardsRows).map((list) => list.length)), [\n getCardsRows,\n ]);\n const chartOptions = useMemo(() => {\n const countList = chartData?.map((item, index) => (index ? (item[1] as number) : 0));\n const maxCount = countList ? Math.max(...countList) : 0;\n\n return {\n legend: 'none',\n hAxis: {\n textPosition: 'none',\n gridlines: {\n color: 'transparent',\n },\n minValue: 0,\n maxValue: maxCount * 1.3,\n baselineColor: 'transparent',\n },\n vAxis: {\n textPosition: 'none',\n gridlines: {\n color: 'transparent',\n },\n },\n chartArea: {\n width: '100%',\n height: '100%',\n backgroundColor: {\n stroke: 'transparent',\n strokeWidth: 0,\n },\n },\n backgroundColor: 'transparent',\n colors: ['#8F4AB0', '#8F4AB0'],\n areaOpacity: 0.2,\n orientation: 'vertical',\n tooltip: {\n ignoreBounds: true,\n isHtml: true,\n trigger: 'focus',\n },\n pointSize: 4,\n pointsVisible: false,\n crosshair: {\n trigger: 'both',\n orientation: 'horizontal',\n color: '#8F4AB0',\n },\n };\n }, [chartData]);\n\n const getCardTopOffset = (timeStart: string, intervalIndex: number) => {\n const offset = getDifferentInMinutes(timeIntervals[intervalIndex].start, timeStart);\n return offset > 0 ? offset * SCHEDULE_CONFIG.PIXELS_PER_MINUTE : 0;\n };\n const getCardsMaxCountInRow = (cardWidth: number) => {\n if (cardsContainer.current) {\n const { clientWidth } = cardsContainer.current;\n const maxWidth = clientWidth * 0.8;\n\n return maxWidth / cardWidth;\n }\n return 768 / cardWidth;\n };\n const getOffsetMultiplier = useMemo(() => {\n const MAX_MULTIPLIER = 0.5,\n MIN_MULTIPLIER = 0.1;\n let MULTIPLIER = MAX_MULTIPLIER;\n let hasOnceChanged = false;\n\n for (let i = MULTIPLIER; i >= MIN_MULTIPLIER; i -= 0.1) {\n const capacity = getCardsMaxCountInRow(SCHEDULE_CONFIG.CARD_WIDTH * i);\n const counter = Math.round(i * 100) / 100;\n\n if (cardsRowMaxLength <= capacity && !hasOnceChanged) {\n MULTIPLIER = counter;\n hasOnceChanged = true;\n } else if (!hasOnceChanged && counter === MIN_MULTIPLIER) {\n MULTIPLIER = MIN_MULTIPLIER;\n }\n }\n return MULTIPLIER;\n }, [cardsRowMaxLength]);\n\n const getCardLeftOffset = (index: number) => {\n const cardsMaxCountInRow = getCardsMaxCountInRow(SCHEDULE_CONFIG.CARD_WIDTH + SCHEDULE_CONFIG.CARD_OFFSET);\n\n if (cardsRowMaxLength > cardsMaxCountInRow) {\n return SCHEDULE_CONFIG.CARD_WIDTH * getOffsetMultiplier * index;\n }\n return (SCHEDULE_CONFIG.CARD_WIDTH + SCHEDULE_CONFIG.CARD_OFFSET) * index;\n };\n\n const getCoordinates = (cardIndex: number, intervalIndex: number, card: TScheduleCard): TTooltipConfig => {\n const newCoordinate = {} as TTooltipConfig;\n const cardLeft = getCardLeftOffset(cardIndex);\n const cardHeight =\n getDifferentInMinutes(card.datetimeStart, card.datetimeEnd) * SCHEDULE_CONFIG.PIXELS_PER_MINUTE;\n const cardTop =\n getCardTopOffset(card.datetimeStart, intervalIndex) +\n intervalIndex * SCHEDULE_CONFIG.INTERVAL_DURATION * SCHEDULE_CONFIG.PIXELS_PER_MINUTE;\n const scrollContainer = cardsContainer.current?.parentElement?.parentElement;\n const tooltipElement = tooltipContainer.current?.firstElementChild?.childNodes[1] as HTMLElement;\n const tooltipElementWidth = tooltipElement.clientWidth;\n\n if (scrollContainer) {\n const { scrollLeft, offsetLeft, offsetWidth, offsetHeight } = scrollContainer;\n const chartWidth = SCHEDULE_CONFIG.CHART_WIDTH;\n const rightOffset =\n offsetWidth +\n scrollLeft -\n cardLeft -\n offsetLeft -\n SCHEDULE_CONFIG.CARD_WIDTH -\n SCHEDULE_CONFIG.TOOLTIP_OFFSET;\n\n const needReplaceVertically = offsetHeight - cardTop < tooltipElement.clientHeight;\n const canPlacedRight = scrollLeft\n ? rightOffset + chartWidth > tooltipElementWidth\n : offsetWidth - cardLeft - SCHEDULE_CONFIG.CARD_WIDTH + chartWidth > tooltipElementWidth;\n\n if (needReplaceVertically) {\n newCoordinate.bottom = -offsetHeight;\n newCoordinate.arrowBottom = offsetHeight - cardTop - cardHeight;\n } else {\n newCoordinate.top = cardTop + SCHEDULE_CONFIG.CARD_OFFSET;\n }\n if (canPlacedRight) {\n newCoordinate.left = scrollLeft\n ? cardLeft - scrollLeft + SCHEDULE_CONFIG.CARD_WIDTH + SCHEDULE_CONFIG.TOOLTIP_OFFSET + 10\n : cardLeft + SCHEDULE_CONFIG.CARD_WIDTH + SCHEDULE_CONFIG.TOOLTIP_OFFSET + 10;\n newCoordinate.arrowPosition = 'left';\n } else {\n newCoordinate.left = scrollLeft\n ? cardLeft - scrollLeft - tooltipElementWidth - offsetLeft + SCHEDULE_CONFIG.TOOLTIP_OFFSET\n : cardLeft - tooltipElementWidth - offsetLeft + SCHEDULE_CONFIG.TOOLTIP_OFFSET;\n newCoordinate.arrowPosition = 'right';\n }\n }\n\n return newCoordinate;\n };\n const getChartData = (interval: TInterval): (string | number)[][] => {\n // @ts-ignore\n const arr: (string | number)[][] = [['Y', 'X', { type: 'string', role: 'tooltip', p: { html: true } }]];\n\n if (chartData) {\n const startIndex = chartData?.findIndex((item) => item[0] === interval.start);\n const endIndex = chartData?.findIndex((item) => item[0] === interval.end);\n const slicedChartData = chartData?.slice(\n startIndex,\n chartData.length - 1 === endIndex ? endIndex : endIndex + 1,\n );\n\n if (startIndex >= 0 && endIndex >= 0) {\n slicedChartData.forEach((item) => {\n arr.push([item[0], item[1], `
${item[1]}
`]);\n });\n }\n }\n if (arr.length === 1) {\n arr.push(['', '']);\n }\n return arr;\n };\n\n const closeTooltip = () => {\n setSelectedCard(undefined);\n\n if (handleTooltipClose) {\n handleTooltipClose();\n }\n };\n const closeChartTooltip = () => {\n setChartTooltipConfig({} as TTooltipConfig);\n setIsChartTooltipVisible(false);\n };\n\n const handleCardClick = (card: TScheduleCard, coordinate: TTooltipConfig) => {\n if (card.id === selectedCard?.id) {\n setSelectedCard(undefined);\n setTooltipConfig({} as TTooltipConfig);\n if (handleTooltipClose) {\n handleTooltipClose();\n }\n } else {\n setSelectedCard(card);\n setTooltipConfig(coordinate);\n if (handleTooltipOpen) {\n void handleTooltipOpen(card);\n }\n }\n };\n const onChartSelect = (chartWrapper: GoogleChartWrapper, intervalIndex: number) => {\n const countList = chartData?.map((item, index) => (index ? (item[1] as number) : 0));\n const maxCount = countList ? Math.max(...countList) : 0;\n const chart = chartWrapper.getChart();\n const dataTable = chartWrapper.getDataTable();\n\n if (chart.getSelection() && chart.getSelection()[0] && chart.getSelection()[0].row) {\n const YValue = dataTable?.getValue(chart.getSelection()[0].row, 0);\n const XValue = chartData?.find((item) => item[0] === YValue)?.[1];\n\n if (YValue && XValue) {\n const YOffset =\n getCardTopOffset(`${YValue}`, intervalIndex) +\n intervalIndex * SCHEDULE_CONFIG.INTERVAL_DURATION * SCHEDULE_CONFIG.PIXELS_PER_MINUTE -\n 60;\n //TODO: придумать, как считать отступ слева, чтобы подсказка была около точки\n const XOffset = (+XValue * 100) / (maxCount * 1.3) - 30;\n\n const scrollContainer = cardsContainer.current?.parentElement?.parentElement;\n const tooltipElement = chartTooltipContainer.current?.firstElementChild?.childNodes[1] as HTMLElement;\n\n if (scrollContainer) {\n const { offsetHeight } = scrollContainer;\n\n const needReplaceVertically = offsetHeight - YOffset < tooltipElement.clientHeight;\n\n if (needReplaceVertically) {\n setChartTooltipConfig({\n left: XOffset,\n bottom: -offsetHeight,\n arrowPosition: 'right',\n //TODO: придумать, как считать отступ снизу для стрелки, чтобы она была напротив точки\n arrowBottom: offsetHeight - YOffset - 106 + 15,\n });\n } else {\n setChartTooltipConfig({\n left: XOffset,\n top: YOffset,\n arrowPosition: 'right',\n });\n }\n }\n\n handleChartSelected?.(`${YValue}`);\n setIsChartTooltipVisible(true);\n }\n }\n };\n\n return (\n <>\n
\n
\n {!!cardsList.length && getCurrentTimeTopOffset && needCurrentTimeLine && (\n
\n
\n \n
\n
\n )}\n {!!TooltipContent && (\n \n TooltipContent}\n style={{\n left: `${tooltipConfig.left}px`,\n top: tooltipConfig.top ? `${tooltipConfig.top}px` : 'unset',\n bottom: tooltipConfig.bottom ? `${tooltipConfig.bottom}px` : 'unset',\n }}\n arrowPosition={tooltipConfig.arrowPosition}\n arrowBottom={tooltipConfig.arrowBottom}\n />\n
\n )}\n
\n \n
\n
\n
\n {timeIntervals.map((timeItem, intervalIndex) => {\n return (\n \n {getCardsRows[intervalIndex].map((card, index) => {\n if (card?.datetimeStart) {\n return (\n \n handleCardClick(\n card,\n getCoordinates(index, intervalIndex, card),\n )\n }\n />\n );\n }\n })}\n
\n );\n })}\n
\n \n
\n
\n
\n {!!cardsList.length && getCurrentTimeTopOffset && needCurrentTimeLine && (\n
\n
\n \n
\n
\n )}\n
\n \n
\n
\n {!!ChartTooltipContent && (\n \n \n
\n )}\n
\n \n
\n {needChart && (\n
\n \n {!!chartData?.length && (\n
\n {timeIntervals.map((item, index) => {\n const appAreaChartData = getChartData(item);\n const hoverClass =\n appAreaChartData.length === 2 && !appAreaChartData[1][0]\n ? 'unknown-data'\n : '';\n\n return (\n
\n \n onChartSelect(chartWrapper, index)\n }\n />\n
\n );\n })}\n
\n )}\n
\n )}\n
\n
\n \n \n );\n};\n\nexport default AppDaySchedule;\n","export const PIXELS_PER_MINUTE = 3;\nexport const INTERVAL_DURATION = 50;\nexport const CARD_WIDTH = 150;\nexport const CARD_OFFSET = 4;\nexport const TOOLTIP_OFFSET = 20;\nexport const SCHEDULE_PADDING_TOP = 24;\nexport const CHART_WIDTH = 200;\n\nexport enum EAppDaySchedule {\n PIXELS_PER_MINUTE,\n INTERVAL_DURATION,\n CARD_WIDTH,\n CARD_OFFSET,\n TOOLTIP_OFFSET,\n SCHEDULE_PADDING_TOP,\n CHART_WIDTH,\n}\n","import { ThemeConfig } from 'antd/lib/config-provider/context';\n\nimport { appButtonColorType, appButtonType } from './AppButton.types';\nconst getButtonColor = (color: appButtonColorType): string => {\n switch (color) {\n case 'red':\n return '#EA5959';\n case 'grey':\n return '#C0C2C9';\n default:\n return '#0088E9';\n }\n};\n\nexport const getButtonLoaderColor = (color: appButtonColorType, type: appButtonType): string => {\n return type == 'primary' ? 'white' : color;\n};\nexport const getAppButtonTheme = (\n type: appButtonType,\n mainColor: appButtonColorType,\n disabled?: boolean,\n): ThemeConfig => {\n const color = getButtonColor(disabled ? 'grey' : mainColor);\n const colorPrimary = color;\n const colorBorder = color;\n const colorText = type == 'primary' ? '#FFFFFF' : color;\n const colorBgContainerDisabled = type == 'primary' ? color : 'transparent';\n return {\n token: {\n colorPrimary: colorPrimary,\n colorBorder: colorBorder,\n colorBgContainerDisabled: colorBgContainerDisabled,\n colorText: colorText,\n },\n };\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ConfigProvider } from 'antd';\n\nimport { TAppButtonProps } from './AppButton.types';\nconst CnAppCalendar = cn('app-button');\nimport { useHistory } from 'react-router-dom';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport { LoaderIcon } from 'assets';\nimport { AppText } from 'src-new/ui';\n\nimport { getAppButtonTheme, getButtonLoaderColor } from './AppButton.utils';\n\nimport './AppButton.scss';\n\nconst AppButton = (props: TAppButtonProps): JSX.Element => {\n const history = useHistory();\n const {\n type = 'primary',\n mainColor = 'blue',\n isLoading,\n size,\n text,\n disabled,\n leftElem,\n rightElem,\n onButtonClick,\n } = props;\n\n const theme = getAppButtonTheme(type, mainColor, disabled);\n const onClick = () => {\n try {\n onButtonClick();\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms AppButton',\n MethodCatchOn: 'onButtonClick()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n return (\n \n \n {isLoading && (\n
\n \n
\n )}\n
\n {leftElem &&
{leftElem}
}\n {text && }\n {rightElem &&
{rightElem}
}\n
\n \n
\n );\n};\n\nexport default AppButton;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport type { MenuProps } from 'antd';\nimport { Button, Dropdown, Space } from 'antd';\nimport { SmallArrowIcon } from 'assets';\nimport { AppText } from 'src-new/ui';\n\nimport { TAppButtonDropdownProps } from './AppButtonDropdown.types';\n\nimport './style.scss';\n\nexport const AppButtonDropdown: React.FC = (params: TAppButtonDropdownProps) => {\n const {\n buttonText,\n options,\n size = 'large',\n type = 'default',\n disabled = false,\n trigger = ['click'],\n menuPlacement = 'bottomLeft',\n DropdownContainer,\n onDropdownSelect,\n } = params;\n\n const history = useHistory();\n\n const handleMenuClick: MenuProps['onClick'] = (e) => {\n try {\n onDropdownSelect(+e.key);\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms AppButtonDropdown',\n MethodCatchOn: 'onDropdownSelect()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n\n const menuProps = {\n items: options,\n onClick: handleMenuClick,\n };\n\n return (\n \n DropdownContainer ? (\n DropdownContainer(React.cloneElement(menu as React.ReactElement))\n ) : (\n
\n
\n {React.cloneElement(menu as React.ReactElement)}\n
\n
\n )\n }\n >\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport { Checkbox } from 'antd';\nimport type { CheckboxChangeEvent } from 'antd/es/checkbox';\n\nimport { TAppCheckboxProps } from './AppCheckbox.types';\n\nimport './style.scss';\n\nconst AppCheckbox: React.FC = (props: TAppCheckboxProps) => {\n const [check, setCheck] = useState(false);\n const { text, isChecked, isPartiallyChecked, isDisabled, onCheckbox, ...rest } = { ...props };\n const history = useHistory();\n\n useEffect(() => {\n if (isChecked !== undefined) {\n setCheck(isChecked);\n }\n }, [isChecked]);\n\n const onChange = (e: CheckboxChangeEvent) => {\n e.stopPropagation();\n setCheck(e.target.checked);\n try {\n void onCheckbox(e.target.checked);\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms AppCheckbox',\n MethodCatchOn: 'onCheckbox()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n\n return (\n \n {text}\n \n );\n};\n\nexport default AppCheckbox;\n","import React from 'react';\nimport { LittleArrow } from '@lms-elements/icons';\nimport { Collapse } from 'antd';\n\nconst { Panel } = Collapse;\n\nimport { AppCollapseTypes } from './AppCollapseTypes';\n\nimport './style.scss';\n\nconst AppCollapse = (props: AppCollapseTypes): JSX.Element => {\n const { collapsible = 'header', expandIconPosition = 'start', list, defaultActiveKey } = props;\n\n return (\n }\n defaultActiveKey={defaultActiveKey}\n expandIconPosition={expandIconPosition}\n >\n {list.map((item) => {\n return (\n \n {item.content}\n \n );\n })}\n \n );\n};\n\nexport default AppCollapse;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { TAppScrollPaginateContainerProps } from './AppScrollPaginateContainer.types';\n\nimport './style.scss';\n\nexport const AppScrollPaginateContainer = (props: TAppScrollPaginateContainerProps): JSX.Element => {\n const listInnerRef = useRef(null);\n const [currPage, setCurrPage] = useState(2); // первая страница и так всегда запрошена к моменту скролла\n\n const { customClassName, children, maxPage, needReset, onScrollHandle, maxHeight = '100%' } = { ...props };\n\n useEffect(() => {\n if (needReset) {\n setCurrPage(2);\n }\n }, [needReset]);\n\n const onScroll = () => {\n if (listInnerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = listInnerRef.current;\n const isLastPage = maxPage === 1 || currPage > maxPage;\n\n if (scrollTop + clientHeight >= scrollHeight && !isLastPage) {\n setCurrPage(currPage + 1);\n onScrollHandle(currPage);\n }\n }\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppFontIcon } from '@frontend-modules/ui-kit';\nimport { MAX_FILE_SIZE_MB } from 'src-new/constants';\nimport { error } from 'store/reducers/error';\n\nimport { getMaxFileSizeBytes } from 'utils/getMaxFileSizeBytes';\n\nimport { TAppFileUploader } from './AppFileUploader.types';\n\nimport './style.scss';\nexport const AppFileUploader: React.FC = (props: TAppFileUploader) => {\n const { maxFileSize = MAX_FILE_SIZE_MB, isLoading = false, formats, handleFileUpload } = props;\n\n const fileInput = useRef(null);\n\n const dispatch = useDispatch();\n\n const maxFileSizeInBytes = getMaxFileSizeBytes(maxFileSize);\n\n const onAddFile = (e: React.ChangeEvent) => {\n const file = e.target?.files?.[0];\n\n if (file) {\n const isFileSizeCorrect = file.size < maxFileSizeInBytes;\n if (isFileSizeCorrect) {\n handleFileUpload(file);\n } else {\n dispatch(\n error({\n message: `${file.name} слишком большой! Размер файла не должен превышать ${maxFileSize}МБ`,\n extra: {\n needHideButtons: true,\n isFrontend: false,\n },\n }),\n );\n }\n e.target.value = '';\n }\n };\n\n return (\n \n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { ConfigProvider, Input } from 'antd';\n\nimport { IAppInput } from './AppInput.types';\n\nimport './style.scss';\nconst CnAppInput = cn('app-input');\n\nconst inputTheme = {\n token: {\n colorPrimary: '#0088E9',\n colorError: '#ea5959',\n colorBorder: '#EDEEF2',\n },\n};\n\nexport const AppInput = (props: IAppInput): JSX.Element => {\n const { type, isSmall, onChange } = props;\n\n const onInputNumberChange = (e: React.ChangeEvent) => {\n const { value: inputValue } = e.target;\n\n const reg = /^-?\\d*(\\.\\d*)?$/;\n if (reg.test(inputValue) || inputValue === '' || inputValue === '-') {\n onChange?.(e);\n }\n };\n const getInput = () => {\n switch (type) {\n case 'password':\n return ;\n case 'inputNumber':\n return ;\n default:\n return ;\n }\n };\n\n return (\n
\n {getInput()}\n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Modal } from 'antd';\nimport { CloseIcon } from 'assets';\nimport { AppButton, AppText } from 'src-new/ui';\n\nimport { IAppModalProps } from './AppDeclineAcceptModal.types';\n\nimport './AppDeclineAcceptModal.scss';\n\nconst CnAppDeclineAcceptModal = cn('app-decline-accept-modal');\n\nconst AppDeclineAcceptModal: React.FC = (props) => {\n const {\n isShow,\n setShow,\n title,\n text,\n onAcceptClick,\n onDeclineClick,\n acceptButtonTitle,\n declineButtonTitle,\n isNegative,\n } = props;\n const isShowButtons = acceptButtonTitle && declineButtonTitle;\n\n const onCancel = () => {\n setShow?.(false);\n };\n\n return (\n }\n width={420}\n >\n {title && (\n
\n \n
\n )}\n {text && (\n
\n \n
\n )}\n {isShowButtons && (\n
\n {acceptButtonTitle && (\n onAcceptClick?.()}\n />\n )}\n {declineButtonTitle && (\n onDeclineClick?.()}\n />\n )}\n
\n )}\n \n );\n};\n\nexport default AppDeclineAcceptModal;\n","import AppDrawer from './AppDrawer';\n\nexport default AppDrawer;\n","import React, { FC } from 'react';\nimport { Drawer } from 'antd';\n\nimport { IAppDrawerProps } from './AppDrawer.types';\n\n/**\n * @description - компонент модалка \"сбоку\"\n * @param props\n * @constructor\n */\nconst AppDrawer: FC = (props) => {\n return ;\n};\n\nexport default AppDrawer;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Modal } from 'antd';\n\nimport { IAppModalProps } from './AppModal.types';\n\nconst AppModal: FC = (props) => {\n const { isShow, title, children, footer = null, ...rest } = props;\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n useEffect(() => {\n setIsModalOpen(isShow);\n }, [isShow]);\n\n const setShow = (state: boolean) => {\n setIsModalOpen(state);\n };\n const onCancel = () => {\n setShow?.(false);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport default AppModal;\n","import React, { useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Select } from 'antd';\n\nimport { TAppPaginateSelect } from './AppPaginateSelect.types';\n\nimport './style.scss';\n\nconst CnAppPaginateSelect = cn('app-paginate-select');\n\nexport const AppPaginateSelect: React.FC = (props: TAppPaginateSelect) => {\n const [searchWord, setSearchWord] = useState('');\n\n const {\n customClassName,\n options,\n placeholder,\n mode,\n maxPage,\n currPage,\n isFetching,\n handleSelect,\n handleSearch,\n handleScroll,\n handleVisibleChange,\n ...rest\n } = { ...props };\n\n useEffect(() => handleSearch(searchWord), [searchWord]);\n\n const onScroll = (event: React.UIEventHandler) => {\n const isLastPage = maxPage === 1 || currPage === maxPage;\n //@ts-ignore\n const target = event.target as HTMLDivElement;\n if (!isLastPage && target.scrollTop + target.offsetHeight === target.scrollHeight) {\n handleScroll();\n }\n };\n\n return (\n options}\n loading={isFetching}\n notFoundContent={'Ничего не найдено'}\n onSearch={setSearchWord}\n onSelect={() => setSearchWord('')}\n //@ts-ignore\n onPopupScroll={(event) => onScroll(event)}\n onDropdownVisibleChange={handleVisibleChange}\n prefixCls={CnAppPaginateSelect()}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { ConfigProvider, Select } from 'antd';\n\nimport { TAppSelect } from './AppSelect.types';\n\nconst CnAppSelect = cn('app-select');\n\nimport { cn } from '@bem-react/classname';\nimport { ThemeConfig } from 'antd/lib/config-provider/context';\nimport { SmallArrowIcon } from 'assets';\n\nimport './AppSelect.scss';\n\nconst theme: ThemeConfig = {\n token: {\n colorPrimary: '#0088E9',\n colorError: '#EA5959',\n colorBorder: '#EEF4FB',\n },\n};\n\nexport const AppSelect: React.FC = (props: TAppSelect) => {\n const { customClassName, options, placeholder, isBoldText, mode, handleSelect, handleMultipleSelect, ...rest } = {\n ...props,\n };\n\n const onChange = (val: any) => {\n if (handleSelect) {\n handleSelect(val);\n } else {\n handleMultipleSelect?.(val);\n }\n };\n\n return (\n \n trigger?.parentElement}\n prefixCls={CnAppSelect()}\n className={`${customClassName} ${CnAppSelect({ isBoldText })}`}\n mode={mode}\n placeholder={placeholder}\n onChange={onChange}\n options={options}\n labelInValue\n size={'large'}\n suffixIcon={}\n notFoundContent={'Ничего не найдено'}\n {...rest}\n />\n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { Checkbox, Select, Tag } from 'antd';\nconst { Option } = Select;\nimport { ArrowClick } from '@lms-elements/icons';\nimport { AppText } from 'src-new/ui';\nimport { setMessage } from 'src-new/utils/message';\n\nimport { TAppTreeSelect, TNormalizedList, TOptions } from './AppTreeSelect.types';\n\nimport './style.scss';\n\ntype TTagRenderProps = {\n value: string;\n onClose: (event?: React.MouseEvent) => void;\n closable: boolean;\n};\n//TODO: переписать компонент более удобно для переиспользования\n\n/*\n * Если нет необходимости в том, чтобы можно было выбрать только одну подопцию из многих,\n * то лучше использовать оригинальный компонент TreeSelect из antd\n *\n * Выбранные опции записываются в selectedList в формате \"{optionId}-{optionChildId}\"\n * в таком же формате ожидаются и дефолтные значения для селектора: defaultSelectedOptions\n * */\n\nexport const AppTreeSelect: React.FC = (props: TAppTreeSelect) => {\n const { customClassName, options, placeholder, mode, defaultSelectedOptions, handleSelect, ...rest } = { ...props };\n const [openedOptionsList, setOpenedOptionsList] = useState([]);\n const [selectedList, setSelectedList] = useState([]);\n\n useEffect(() => {\n const defaultValuesIds = defaultSelectedOptions?.map((option) => option.split('-')[0]) || [];\n\n setOpenedOptionsList([...defaultValuesIds]);\n }, [defaultSelectedOptions]);\n useEffect(() => handleSelect(selectedList), [selectedList]);\n\n const defaultValues = useMemo(() => {\n if (defaultSelectedOptions?.length && options.length) {\n setSelectedList(defaultSelectedOptions);\n return defaultSelectedOptions.map((option) => {\n const [optionId, childId] = option.split('-');\n const selectedOption = options.find((item) => item.value === optionId) as TOptions;\n const selectedChild = selectedOption?.children?.find(\n (item) => item.value === childId,\n ) as TNormalizedList;\n\n return {\n value: optionId,\n label: `${selectedOption?.label} / ${selectedChild?.label}`,\n children: selectedOption.children,\n };\n });\n } else {\n return [];\n }\n }, [defaultSelectedOptions, options]);\n\n const sortedOptions = useMemo(() => {\n if (defaultValues.length && options.length) {\n const defaultValuesIds: string[] = defaultValues.map((item) => item.value);\n const filteredOptions = options.filter((item) => !defaultValuesIds.includes(item.value as string));\n filteredOptions.unshift(...defaultValues);\n return filteredOptions;\n }\n return options;\n }, [options, defaultValues]);\n\n const TagRender = (props: TTagRenderProps) => {\n const { closable, onClose, value } = props;\n\n const getText = useMemo(() => {\n const selectedItem = selectedList?.find((item) => item.includes(value))?.split('-');\n const selectedOption = options.find((item) => item.value === selectedItem?.[0]) as TOptions;\n const selectedChild = selectedOption?.children?.find(\n (item) => item.value === selectedItem?.[1],\n ) as TNormalizedList;\n\n return `${selectedOption?.label} / ${selectedChild?.label}`;\n }, [selectedList, value]);\n\n const onPreventMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n \n {getText}\n \n );\n };\n\n const handleDropdownClick = (event: React.MouseEvent, option: TNormalizedList) => {\n event.stopPropagation();\n event.preventDefault();\n\n if (openedOptionsList.includes(option.value)) {\n setOpenedOptionsList((prevState) => prevState.filter((item) => item !== option.value));\n } else {\n setOpenedOptionsList([...openedOptionsList, option.value]);\n }\n };\n const handleOptionSelect = (\n option: TNormalizedList,\n child: TNormalizedList,\n event: React.MouseEvent,\n ) => {\n event.preventDefault();\n\n const handledItem = `${option.value}-${child.value}`;\n\n if (selectedList.includes(handledItem)) {\n setSelectedList((prevState) => prevState.filter((item) => item !== handledItem));\n } else {\n const childToDelete = selectedList.findIndex((item) => item.includes(option.value));\n\n if (childToDelete < 0) {\n setSelectedList([...selectedList, handledItem]);\n } else {\n const newArr = [...selectedList];\n newArr.splice(childToDelete, 1, handledItem);\n setSelectedList(newArr);\n event.stopPropagation();\n }\n }\n };\n const handleEmptyOptionSelect = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setMessage({ status: 'info', text: 'Невозможно установить связь курс-тип' });\n };\n\n const handleClearField = (val: string) => {\n setSelectedList((prevState) => prevState.filter((item) => !item.includes(val)));\n setOpenedOptionsList((prevState) => prevState.filter((item) => item !== val));\n };\n\n return (\n (String(option?.label).toLowerCase() ?? '').includes(input.toLowerCase())}\n tagRender={TagRender}\n onDeselect={handleClearField}\n menuItemSelectedIcon={false}\n {...rest}\n >\n {/*@ts-ignore*/}\n {sortedOptions.map((item: TOptions, index) => (\n \n handleDropdownClick(event, item)}\n >\n {item.label}\n
\n \n
\n \n
\n {item.children?.length ? (\n item.children.map((child) => (\n handleOptionSelect(item, child, event)}\n >\n \n {child.label}\n \n
\n ))\n ) : (\n handleEmptyOptionSelect(event)}\n >\n \n \n )}\n \n \n ))}\n \n );\n};\n","import React from 'react';\nimport { ConfigProvider, Skeleton } from 'antd';\n\nconst CnAppSkeleton = cn('app-skeleton');\n\nimport { cn } from '@bem-react/classname';\n\nimport { IAppSkeleton } from './AppSkeleton.types';\n\nimport './AppSkeleton.scss';\n\nexport const AppSkeleton: React.FC = (props) => {\n const { gap = 20, count = 1, className, width = '100%', radius = 4, height = 22 } = props;\n const list = Array(count).fill({});\n\n const style = {\n gap: gap,\n width: width,\n };\n\n const styleItem = {\n height: height,\n };\n const theme = {\n token: {\n borderRadiusSM: radius,\n },\n };\n\n return (\n
\n {list.map((item, index) => (\n
\n \n \n \n
\n ))}\n
\n );\n};\n","import React from 'react';\nimport { ConfigProvider, Steps } from 'antd';\n\nimport { TAppProgressBarProps } from './AppProgressBarTypes';\n\nconst AppProgressBar = (props: TAppProgressBarProps): JSX.Element => {\n const { stepIconSize = 40, ...rest } = props;\n const theme = {\n token: {\n controlHeight: stepIconSize,\n colorTextDescription: 'inherit',\n colorTextLabel: 'inherit',\n },\n };\n return (\n \n \n \n );\n};\n\nexport default AppProgressBar;\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Switch } from 'antd';\nimport { CheckedIcon, UncheckedIcon } from 'assets';\n\nimport { IAppSwitch } from './AppSwitch.types';\n\nimport './AppSwitch.scss';\n\nconst CnAppSwitch = cn('app-switch');\n\nexport const AppSwitch = (props: IAppSwitch): JSX.Element => {\n const { withIcons = false, ...rest } = props;\n return (\n : undefined}\n unCheckedChildren={withIcons ? : undefined}\n />\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppTableCell, IAppTableCellElementData } from 'src-new/ui';\n\nimport { IAppTable } from './AppTable.types';\n\nimport './AppTable.scss';\n\nconst CnAppTable = cn('app-table');\n\nexport const AppTable: React.FC = (props) => {\n const { items, getActiveCellElementData } = props;\n\n const returnData = (cellData: IAppTableCellElementData) => {\n getActiveCellElementData?.(cellData);\n };\n\n return (\n
\n {items?.map((row, rowIndex) => (\n
\n {row?.map((cell, cellIndex) => (\n \n ))}\n
\n ))}\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { PlusIcon, TrashBasketIcon } from 'assets';\nimport { AppInput } from 'src-new/ui';\n\nimport { IAppTableCell } from './AppTableCell.types';\n\nimport './AppTableCell.scss';\n\nconst CnAppTableCell = cn('app-table-cell');\n\nexport const AppTableCell: React.FC = (props) => {\n const {\n id,\n type,\n title,\n subtitle,\n rowIndex,\n cellIndex,\n isActive,\n getActiveElementData,\n cellWidth,\n isFill,\n fillColor,\n isBoldTitle,\n noCanEmpty,\n isHover,\n isDeleteRow,\n isAddRow,\n isInput,\n customElem,\n } = props;\n const [text, setText] = useState('');\n const color = isFill ? (fillColor ? fillColor : '#F9FAFD') : '';\n const isCanHovered = isHover || isDeleteRow || isAddRow;\n const isCanClick = isActive || isDeleteRow || isAddRow;\n const isDate = type == 'date';\n const isInputNumber = type == 'inputNumber';\n const isEmptyDate = isDate && !title?.toString().length;\n const defaultCellTitle = isEmptyDate ? 'Добавить' : title;\n const isEmptyInput = (noCanEmpty && text == '') || text == undefined;\n\n const cellStyle = {\n minWidth: cellWidth,\n maxWidth: cellWidth,\n background: color,\n };\n\n const returnClickType = () => {\n switch (true) {\n case isAddRow:\n return 'addRow';\n default:\n return undefined;\n }\n };\n const returnActiveData = (clickType?: string, inputText?: string) => {\n const cellType = clickType ?? returnClickType();\n\n if (rowIndex !== undefined && cellIndex !== undefined) {\n const returnData = {\n row: rowIndex,\n cell: cellIndex,\n id: id,\n type: cellType ?? type,\n inputText: inputText ?? text,\n title: title,\n };\n getActiveElementData?.(returnData);\n }\n };\n\n const onCellClick = () => {\n if (isCanClick) {\n returnActiveData();\n }\n };\n\n const onRemoveClick = () => {\n if (isCanClick) {\n setText('');\n returnActiveData('deleteRow');\n }\n };\n\n const onEndEdit = () => {\n returnActiveData('inputText');\n };\n const onChange = (val: string) => {\n setText(val);\n returnActiveData('inputText', val);\n };\n\n const getAddRow = () => {\n return (\n
\n
\n {title}\n
\n
\n \n
\n
\n );\n };\n\n const getDefaultElem = () => {\n return (\n <>\n \n {isInput ? (\n onChange(e.currentTarget.value)}\n />\n ) : (\n <>\n {defaultCellTitle && (\n
\n {defaultCellTitle}\n
\n )}\n {subtitle &&
{subtitle}
}\n \n )}\n \n {isDeleteRow && (\n
\n \n
\n )}\n \n );\n };\n\n const getElem = () => {\n switch (true) {\n case !!customElem:\n return customElem;\n case isAddRow:\n return getAddRow();\n default:\n return getDefaultElem();\n }\n };\n\n useEffect(() => {\n setText(title?.toString() ?? '');\n }, [title]);\n\n return (\n \n {getElem()}\n \n );\n};\n","import { IAppTableItems } from './app-table/AppTable.types';\nimport { IAppTableCell } from './app-table-cell';\n\nconst changeCell = (table: IAppTableItems, newCell: IAppTableCell, row: number, cell: number) => {\n return [\n ...table.slice(0, row),\n [...table[row].slice(0, cell), newCell, ...table[row].slice(cell + 1)],\n ...table.slice(row + 1),\n ];\n};\nconst updateTableCellTitle = (\n table: IAppTableItems,\n row: number,\n cell: number,\n newTitle: string | number,\n): IAppTableItems => {\n const oldCell = table?.[row]?.[cell];\n\n if (oldCell) {\n const newCell = { ...oldCell, title: newTitle };\n return changeCell(table, newCell, row, cell);\n }\n\n return table;\n};\n\nexport { updateTableCellTitle };\n","import React, { useEffect, useState } from 'react';\nimport { Tabs } from 'antd';\n\nimport { TAppTabs } from './AppTabs.types';\n\nimport './style.scss';\nexport const AppTabs: React.FC = (props) => {\n const { tabsList, activeTabKey, onTabClick, tabPosition = 'top', ...rest } = props;\n const [activeKey, setActiveKey] = useState(activeTabKey);\n\n useEffect(() => {\n setActiveKey(activeTabKey);\n }, [activeTabKey]);\n\n const handleTabClick = (key: string) => {\n setActiveKey(key);\n onTabClick(key);\n };\n return (\n handleTabClick(key)}\n tabPosition={tabPosition}\n items={tabsList}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { ConfigProvider, Radio } from 'antd';\nimport { ThemeConfig } from 'antd/lib/config-provider/context';\nimport { AppText } from 'src-new/ui';\n\nimport { IAppRadio } from './AppRadio.types';\nconst CnAppRadio = cn('app-radio');\n\nimport './AppRadio.scss';\n\nconst theme: ThemeConfig = {\n token: {\n colorPrimary: '0088E9',\n },\n};\nconst AppRadio: React.FC = (props) => {\n const { item } = props;\n const { label, value } = item || {};\n\n return (\n \n \n \n \n \n );\n};\n\nexport default AppRadio;\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Radio } from 'antd';\nimport { AppRadio } from 'src-new/ui';\n\nimport { IAppRadio } from './AppRadioGroup.types';\n\nconst CnAppRadioGroup = cn('app-radio-group');\n\nconst AppRadioGroup: React.FC = (props) => {\n const { items, selectedValue, onChange } = props;\n\n return (\n \n {items.map((item, index) => (\n \n ))}\n \n );\n};\n\nexport default AppRadioGroup;\n","import React, { useMemo, useState } from 'react';\nimport { Typography } from 'antd';\n\nimport { TAppExpandableText } from './AppExpandableText.types';\n\nconst { Paragraph } = Typography;\nimport './style.scss';\n\nconst AppExpandableText = (props: TAppExpandableText): JSX.Element => {\n const { textStyle, fontStyle, expandText, text, ellipsis, maxRowsCount, ...rest } = { ...props };\n const [expanded, setExpanded] = useState(true);\n\n const classNameString = `app-expandable-text__content ${(textStyle || 'default').toString()} ${(\n fontStyle || 'default'\n ).toString()}`;\n\n const ellipsisConfig = useMemo(() => {\n return expanded\n ? {\n rows: maxRowsCount ? maxRowsCount : 2,\n expandable: true,\n symbol: expandText ? expandText : 'развернуть',\n }\n : false;\n }, [expanded]);\n\n const showMore = useMemo(() => {\n const textArray = text.split('\\n');\n\n return textArray.length > 1 || (textArray.length === 1 && textArray?.[0].length > 40);\n }, [text]);\n\n const setExpandedText = (event: React.MouseEvent) => {\n event.stopPropagation();\n setExpanded(!expanded);\n };\n const getFormattedText = (text: string) => {\n const length = text.split('\\n').length;\n return text.split('\\n').map((str, i) => (\n <>\n {str}\n {length !== i + 1 &&
}\n \n ));\n };\n return (\n
\n \n {expanded ? getFormattedText(text)[0] : getFormattedText(text)}\n \n {ellipsis === undefined && showMore && (\n setExpandedText(event)}\n >\n {expandText ? expandText : `показать ${expanded ? 'больше' : 'меньше'}`}\n \n )}\n
\n );\n};\n\nexport default AppExpandableText;\n","import React from 'react';\nimport { Typography } from 'antd';\n\nimport { TAppText } from './AppTextTypes';\n\nimport './style.scss';\n\nconst { Text: Text } = Typography;\n\nconst AppText = (props: TAppText): JSX.Element => {\n const { textStyle, fontStyle, text } = props;\n const classNameString = `app-text ${(textStyle || 'default').toString()} ${(fontStyle || 'default').toString()}`;\n\n return (\n \n {text}\n \n );\n};\n\nexport default AppText;\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { Calendar, ConfigProvider, Select } from 'antd';\nimport { ThemeConfig } from 'antd/lib/config-provider/context';\nimport locale from 'antd/lib/date-picker/locale/ru_RU';\nimport { monthRu } from 'App/constants';\nimport dayjs, { Dayjs } from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport { AppSelect } from 'src-new/ui';\n\nimport 'dayjs/plugin/localeData';\nimport 'dayjs/locale/ru';\n\nimport { IAppCalendar } from './AppCalendar.types';\n\nimport './AppCalendar.scss';\n\ndayjs.locale('ru');\ndayjs.extend(updateLocale);\ndayjs.updateLocale('ru', {\n months: monthRu,\n});\n\nconst CnAppCalendar = cn('app-calendar');\n\nexport const AppCalendar: React.FC = (props) => {\n const { buttonTitle, style, disabledDate, defaultValue, initialDate, onDateSelect, onButtonAction } = props;\n const [calendarValue, setCalendarValue] = useState();\n const history = useHistory();\n\n const onButtonClick = () => {\n if (calendarValue) {\n try {\n onButtonAction?.(calendarValue);\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'AppCalendar',\n MethodCatchOn: 'onButtonAction()',\n PathCatchOn: history.location.pathname,\n });\n }\n }\n };\n\n const onSelect = (date: Dayjs) => {\n setCalendarValue(date);\n\n try {\n onDateSelect?.(date);\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms AppCalendar',\n MethodCatchOn: 'onDateSelect()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n\n const disableButton = !calendarValue || disabledDate?.(calendarValue);\n\n const theme: ThemeConfig = {\n token: {\n colorPrimary: '#0088E9',\n colorTextBase: '#252232',\n },\n };\n\n return (\n
\n
\n \n {\n const start = 0;\n const end = 12;\n const monthOptions = [];\n\n let current = value.clone();\n const localeData = value.localeData();\n const months = [];\n for (let i = 0; i < 12; i++) {\n current = current.month(i);\n months.push(localeData.monthsShort(current));\n }\n\n for (let i = start; i < end; i++) {\n monthOptions.push(\n \n {months[i]}\n ,\n );\n }\n\n const year = value.year();\n const month = value.month();\n const options = [];\n for (let i = year - 10; i < year + 10; i += 1) {\n options.push(\n \n {i}\n ,\n );\n }\n return (\n
\n {\n const now = value.clone().year(Number(newYear));\n onChange(now);\n }}\n >\n {options}\n \n {\n const now = value.clone().month(Number(newMonth));\n onChange(now);\n }}\n >\n {monthOptions}\n \n
\n );\n }}\n />\n
\n
\n {buttonTitle && (\n
\n \n
\n )}\n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { ConfigProvider, DatePicker, DatePickerProps } from 'antd';\nimport ru from 'antd/locale/ru_RU';\nimport dayjs from 'dayjs';\n\nimport 'dayjs/locale/ru';\ndayjs.locale('ru');\nimport { CalendarIcon } from 'assets';\n\nimport './AppDatePicker.scss';\n\nconst CnAppDatepicker = cn('app-datepicker');\n\nexport const AppDatePicker: React.FC = (props) => {\n return (\n \n {/* @ts-ignore конфликт с версией @types/react не стал обновлять до 18 версии от греха подальше*/}\n } {...props} />\n \n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { ConfigProvider, DatePickerProps, TimePicker } from 'antd';\nimport ru from 'antd/locale/ru_RU';\nimport dayjs from 'dayjs';\n\nimport 'dayjs/locale/ru';\ndayjs.locale('ru');\nimport { CalendarIcon } from 'assets';\n\nimport './style.scss';\n\nconst CnAppDatepicker = cn('app-datepicker');\n\nexport const AppTimePicker: React.FC = (props) => {\n return (\n \n {/* @ts-ignore конфликт с версией @types/react не стал обновлять до 18 версии от греха подальше*/}\n } {...props} />\n \n );\n};\n","import React, { CSSProperties, useEffect, useRef, useState } from 'react';\n\nimport { IScrollPaginateContainerProps } from './ScrollPaginateContainer.types';\n\nimport './ScrollPaginateContainer.styles.scss';\n\nexport const ScrollPaginateContainer: React.FC = (props) => {\n const {\n className,\n children,\n onEndReached,\n onEndReachedThreshold = 0.5,\n horizontal,\n height,\n paddingBottom = 20,\n } = props;\n\n const listInnerRef = useRef(null);\n const [isReached, setIsReached] = useState(false);\n\n const style: CSSProperties = {\n flexDirection: horizontal ? 'row' : 'column',\n height: height,\n };\n\n /**\n * @description следим за появлением конца списка в зависимости от onEndReachedThreshold\n * что бы вернуть функцию, что список закончился\n */\n const onScroll = () => {\n if (listInnerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = listInnerRef.current;\n if (Math.floor(scrollTop + clientHeight) >= Math.floor(scrollHeight) * onEndReachedThreshold) {\n if (!isReached) {\n onEndReached?.();\n }\n setIsReached(true);\n } else {\n setIsReached(false);\n }\n }\n };\n\n /**\n * @description следим за изменением размеров контейнера и размеров самого списка контента,\n * чтобы инициировать функцию onEndReached если контент меньше контейнера\n */\n useEffect(() => {\n if (listInnerRef.current) {\n const { children: childrenNode } = listInnerRef.current;\n const { scrollHeight } = listInnerRef.current;\n const childrenHeight = childrenNode.item(0)?.clientHeight ?? 0;\n if (childrenHeight < scrollHeight) {\n onEndReached?.();\n }\n }\n }, [listInnerRef?.current?.scrollHeight, listInnerRef?.current?.children?.item(0)?.clientHeight]);\n\n return (\n \n
\n {children}\n
\n
\n
\n );\n};\n","import { CodifierElementIconEnum } from '@lms-elements/atomic';\nimport { Header } from '@lms-elements/materials-header';\nimport { ImageData } from '@lms-elements/materials-image';\nimport { IMaterialAudio } from '@lms-elements/materials-media/build/@types/packages/MaterialsMedia/src/Audio/Expanded/ExpandedAudioMaterial.types';\nimport { TableData } from '@lms-elements/materials-table';\nimport { IQuestionForStudent } from '@lms-elements/test-task';\nimport { QueryParams } from 'api/services/questionCreate';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\nimport { EditorState } from 'draft-js';\nimport { IFile } from 'types/file';\n\nexport interface MaterialType {\n title: string;\n description: string;\n type: ContentMaterialTypeEnum;\n icon: CodifierElementIconEnum;\n}\n\nexport enum ContentMaterialTypeEnum {\n text = 'text',\n table = 'table',\n header = 'header',\n video = 'video',\n kinescope = 'kinescope',\n audio = 'audio',\n document = 'document',\n photo = 'photo',\n exercise = 'exercise',\n}\n\nexport interface IMaterialDocument {\n id?: number;\n name: string;\n url: string;\n}\n\nexport interface IMaterialImage {\n data: ImageData[];\n description: string;\n}\n\nexport interface IMaterialTable {\n table: TableData;\n title: string;\n}\n\nexport interface ExerciseData extends IQuestionForStudent {\n isFull?: boolean;\n questionId?: number;\n isActual: boolean;\n}\n\nexport interface IMaterial {\n id: number;\n type: ContentMaterialTypeEnum;\n textData: string | EditorState;\n documentData: (File | string | IMaterialDocument)[];\n headerData: Header;\n imageData: IMaterialImage;\n audioData: IMaterialAudio;\n videoData: {\n url: string;\n file?: File;\n };\n files: IFile[];\n html: string;\n url: string | undefined;\n tableData: IMaterialTable;\n exerciseData: ExerciseData;\n isDeleted: boolean;\n}\n\nexport enum QuestionSelectAction {\n exerciseCreate = 'exerciseCreate',\n exerciseEdit = 'exerciseEdit',\n}\n","//Нарезает массив на несколько массивов по переданному количеству элементов\nexport const chunkArray = (array: Array, chunk: number): Array[] => {\n const newArray = [];\n for (let i = 0; i < array.length; i += chunk) {\n newArray.push(array.slice(i, i + chunk));\n }\n return newArray;\n};\n","import axios from 'axios';\n\nconst downloadTxtFileFromUrlByLink = async (url: string): Promise => {\n const response = await axios.get(url, { responseType: 'blob' });\n const fileName = url?.split('/')?.reverse()?.[0] ?? 'file';\n const blob = new Blob([response.data], { type: 'text/plain' });\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nexport { downloadTxtFileFromUrlByLink };\n","/**\n * @description удаляет пустые свойства объекта\n * @param {any} params\n * @return {Type | undefined}\n * @protected\n */\nfunction deleteEmptyParams(params: Type): Type | undefined {\n for (const key in params) {\n if (params[key] === undefined) {\n delete params[key];\n } else {\n if (typeof params[key] == 'object') {\n if (Object.keys(params[key]).length == 0) {\n delete params[key];\n }\n }\n }\n }\n return params;\n}\n\nexport { deleteEmptyParams };\n","const getUid = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nexport default getUid;\n","/**\n * @description проверяет переменную на пустоту\n * @param value\n * @param isCheckZeroInNumber - если true будет проверять число на 0 значение\n */\nconst isEmpty = (value: string | number | undefined | null | object, isCheckZeroInNumber?: boolean): boolean => {\n const isZero = isCheckZeroInNumber ? value === 0 : false;\n return value === null || value === undefined || value === '' || isZero;\n};\n\n/**\n * @description проверяет переменную на НЕ пустоту ))\n * @param value\n * @param isCheckZeroInNumber\n */\nconst isExist = (value: string | number | undefined | null | object, isCheckZeroInNumber?: boolean): boolean => {\n return !isEmpty(value, isCheckZeroInNumber);\n};\n\n/**\n * @description проверяет список на пустоту\n * @param value\n */\nconst isEmptyList = (value?: Array): boolean => {\n return value === undefined || value === null || value?.length <= 0;\n};\n\n/**\n * @description проверяет список на существование\n * @param value\n */\nconst isListExist = (value?: Array): boolean => {\n return !isEmptyList(value);\n};\n\nexport { isEmpty, isEmptyList, isExist, isListExist };\n","import { deleteEmptyParams } from '@frontend-modules/frontend-utils';\nimport { IGroupActionFilters } from 'src-new/components/group-actions';\nimport {\n IActionsParamsFilter,\n TActionsFilterCondition,\n TActionsFilterField,\n TActionsFilterOption,\n} from 'types/groupActions';\nimport { IFilterSelect } from 'types/meta';\n\nexport const normalizeFiltersForSetAction = (filters: IFilterSelect[]): IActionsParamsFilter[] => {\n return filters?.map((item) => {\n return {\n field: item.field as TActionsFilterField,\n value: item.option?.value || item?.value,\n label: item.option?.children || item?.value,\n option: item.type as TActionsFilterOption,\n condition: item?.condition as TActionsFilterCondition,\n };\n });\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const normalizeParamsForActions = (params: IGroupActionFilters) => {\n const { filters, pagination, ...otherParams } = params;\n\n const normalizeFilters = filters?.map((item) => {\n return {\n field: item.field as TActionsFilterField,\n value: item.option?.value || item?.value,\n option: item.type as TActionsFilterOption,\n condition: item?.condition as TActionsFilterCondition,\n };\n });\n\n const normalizeParams = { filters: normalizeFilters, ...pagination, ...otherParams };\n return deleteEmptyParams(normalizeParams);\n};\n","import { getNoun } from '@frontend-modules/frontend-utils';\n\nexport const getAnswersCountText = (count: number): string => {\n return `${count} ${getNoun(count, 'вариант', 'варианта', 'вариантов')} ответа`;\n};\nexport const getSkillsCountText = (count: number): string => {\n return `${count} ${getNoun(count, 'навык', 'навыка', 'навыков')}:`;\n};\nexport const getCorrectAnswersCountText = (count: number): string => {\n return `Вопрос с ${count} ${getNoun(count, 'правильным', 'правильными', 'правильными')} ${getNoun(\n count,\n 'ответом',\n 'ответами',\n 'ответами',\n )}`;\n};\nexport const getRightTaskTitle = (numTask: number): string => {\n if (numTask === 1) {\n return 'в первый вопрос';\n }\n if (numTask === 2) {\n return 'во второй вопрос';\n }\n if (numTask === 3) {\n return 'в третий вопрос';\n }\n if (numTask === 4) {\n return 'в четвертый вопрос';\n }\n if (numTask === 5) {\n return 'в пятый вопрос';\n }\n if (numTask === 6) {\n return 'в шестой вопрос';\n }\n if (numTask === 7) {\n return 'в седьмой вопрос';\n }\n if (numTask === 8) {\n return 'в восьмой вопрос';\n }\n if (numTask === 9) {\n return 'в девятый вопрос';\n }\n if (numTask === 10) {\n return 'в десятый вопрос';\n }\n if (numTask === 11) {\n return 'в одиннадцатый вопрос';\n }\n if (numTask === 12) {\n //стоит ли для такого либу подключать?\n return 'в двенадцатый вопрос';\n }\n if (numTask === 13) {\n return 'в тринадцатый вопрос';\n }\n if (numTask === 14) {\n return 'в четырнадцатый вопрос';\n }\n if (numTask === 15) {\n return 'в пятнадцатый вопрос';\n }\n if (numTask === 16) {\n return 'в шестнадцатый вопрос';\n }\n if (numTask === 17) {\n return 'в семнадцатый вопрос';\n }\n if (numTask === 18) {\n return 'в восемнадцатый вопрос';\n }\n if (numTask === 19) {\n return 'в девятнадцатый вопрос';\n }\n return `в вопрос №${numTask}`;\n};\n","import { TAssignedQuestions, TSearchBlock, TSearchResults, TSingleQuestion } from 'types/lessonTask';\n\nexport const replaceAssignmentValue = (\n obj: TAssignedQuestions | TSearchResults | undefined,\n newAssignment: number,\n type: 'assignedQuestions' | 'searchResults',\n): TAssignedQuestions | TSearchResults | undefined => {\n if (obj) {\n if (type === 'assignedQuestions') {\n const newObj = {} as TAssignedQuestions;\n Object.entries(obj).forEach(([key, value]) => {\n newObj[+key] = {\n singleQuestionsList: value?.singleQuestionsList?.map((item: TSingleQuestion) => ({\n ...item,\n assignment: newAssignment,\n })),\n searchBlocksList: value?.searchBlocksList?.map((item: TSearchBlock) => ({\n ...item,\n assignment: newAssignment,\n })),\n };\n });\n return newObj;\n } else if (type === 'searchResults') {\n const newObj = {} as TSearchResults;\n Object.entries(obj).forEach(([key, value]) => {\n newObj[+key] = value?.map((item: TSearchBlock) => ({ ...item, assignment: newAssignment }));\n });\n return newObj;\n }\n }\n\n return obj;\n};\n","export const getItemFromLocalStorage = (name: string): string => {\n return localStorage.getItem(name) ?? '';\n};\n","export const setItemToLocalStorage = (name: string, data: string): void => {\n localStorage.setItem(name, data);\n};\n","import { getItemFromLocalStorage, setItemToLocalStorage } from 'src-new/utils';\nimport { TLocalStorageItem } from 'types/newSubjectsTypes';\n\nconst LOCAL_STORAGE_NAME = 'lastViewedLessons';\n\nexport const getLastViewedLessonByCourse = (courseId: number): TLocalStorageItem | undefined => {\n const dataString = getItemFromLocalStorage(LOCAL_STORAGE_NAME);\n const data = dataString ? JSON.parse(dataString) : [];\n\n return data.find((item: TLocalStorageItem) => item.course.id === courseId);\n};\n\nexport const getAllLastViewedLessons = (): TLocalStorageItem[] => {\n const dataString = getItemFromLocalStorage(LOCAL_STORAGE_NAME);\n\n return dataString ? JSON.parse(dataString) : [];\n};\nexport const setViewedLesson = (newItem: TLocalStorageItem): void => {\n let newState: TLocalStorageItem[] = [];\n const prevState = getAllLastViewedLessons();\n\n if (prevState.length) {\n newState = prevState.filter((item: TLocalStorageItem) => item.course.id !== newItem.course.id);\n }\n newState.push(newItem);\n\n setItemToLocalStorage(LOCAL_STORAGE_NAME, JSON.stringify(newState));\n};\n","import moment from 'moment';\nimport { TLessonSchedules, TSubjectLesson } from 'src-new/components/new-subjects';\nimport { getCurrentDateByMoscow } from 'src-new/utils/date-n-time';\n\nexport const getNearestLessonId = (lessons: TSubjectLesson[]): number => {\n // @ts-ignore\n const lessonSchedules: TLessonSchedules[] = lessons\n .map((item) => {\n const onlineLesson = item.lessonSchedules.find((item) => item.type === 'online_lesson');\n const testLesson = item.lessonSchedules.find((item) => item.type === 'test_lesson');\n const selfpreparationLesson = item.lessonSchedules.find((item) => item.type === 'selfpreparation_lesson');\n\n return onlineLesson ?? testLesson ?? selfpreparationLesson;\n })\n .filter((item) => !!item);\n\n const currentTime = getCurrentDateByMoscow();\n const sortedLessons = lessonSchedules.sort((a, b) => {\n const difPrev = Math.abs(moment(a.datetimeStart).diff(moment(currentTime)));\n const difNext = Math.abs(moment(b.datetimeStart).diff(moment(currentTime)));\n\n return difPrev - difNext;\n });\n\n return lessons.find((item) => item.lessonSchedules.includes(sortedLessons[0]))?.id ?? 0;\n};\n","import { TTab } from 'src-new/components/new-subjects/popups/lesson-popup/LessonPopup.types';\nimport { parseQueryParamsToObject } from 'src-new/utils';\n\nexport const getTabLink = (tabId: number): TTab => {\n switch (tabId) {\n case 0:\n return 'materials';\n case 1:\n return 'academic_performance';\n case 2:\n return 'online_lesson';\n case 3:\n return 'tasks';\n case 4:\n return 'attendance';\n case 5:\n return 'progress';\n case 6:\n return 'additional_materials';\n case 7:\n return 'trainer';\n default:\n return 'materials';\n }\n};\nexport const getTabId = (tabName: string, isStudent?: boolean): number => {\n const lowercaseName = tabName?.toLowerCase();\n switch (lowercaseName) {\n case 'materials':\n return 0;\n case 'academic_performance':\n return isStudent ? -1 : 1;\n case 'online_lesson':\n return 2;\n case 'tasks':\n return 3;\n case 'attendance':\n return 4;\n case 'progress':\n return 5;\n case 'additional_materials':\n return 6;\n case 'trainer':\n return 7;\n default:\n return -1;\n }\n};\nexport const getTabFromUrl = (): TTab => {\n const locationSearch = location.search;\n const parsedQueries = parseQueryParamsToObject(locationSearch, 'modals')?.modals?.[0];\n\n //@ts-ignore\n return parsedQueries?.tab;\n};\n","import { isEmptyList } from '@frontend-modules/frontend-utils';\nimport moment from 'moment';\nimport { payloadTimeFormatter } from 'src-new/utils';\nimport { IAssignmentItem } from 'types/assignment';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport {\n AssignmentProgress,\n EAssignedTypes,\n EDeadlineTypes,\n IHomeworkItem,\n Task,\n TCreateDeferredAssignmentAction,\n TPostDeferredAssignmentResponse,\n TUpdateDeferredAssignmentAction,\n} from 'types/homework';\nimport { MarkData } from 'types/mark';\nimport { Student } from 'types/students';\n\nimport { ITaskDate } from 'components/Task/Task';\nimport { EDateTimeTypesList } from 'components/Task/utils';\n\ninterface HomeworkTableFormValues {\n selectAll: {\n taskId: number;\n checked: boolean;\n disabled: boolean;\n }[];\n students: {\n studentId: number;\n tasks: {\n taskId: number;\n checked: boolean;\n blocked?: boolean;\n overdued?: boolean;\n repeatBlocked?: boolean;\n }[];\n }[];\n}\n\nexport const getAssignedTasks = (blockTasks: Task[]): Task[] => {\n const tasks = blockTasks.filter((task) => task.isPosted);\n\n return tasks;\n};\n\nexport const getAllTasks = (tasks: Task[], progresses?: AssignmentProgress[]): Task[] => {\n const tasksWithoutAssignment = (progresses ?? [])\n .filter(({ taskId }) => !tasks.some((task) => task.id === taskId))\n .reduce((result, homework) => {\n if (result.length === 0 || !result.some((task) => task.id === homework.taskId)) {\n result.push({\n id: homework.taskId,\n title: homework.taskTitle,\n type: homework.taskType,\n isTemplate: false,\n isForMethodist: false,\n isPosted: true,\n assignedDate: homework.assignedDate,\n deadlineForComplete: homework.deadlineForComplete,\n assignedType: homework?.assignedType ?? EAssignedTypes.DATE_TIME,\n deadlineType: homework?.deadlineType ?? EDeadlineTypes.DATE_TIME,\n assignedDelay: homework?.assignedDelay,\n deadlineDelay: homework?.deadlineDelay,\n timeToComplete: homework?.timeToComplete,\n allStudents: homework?.allStudents,\n });\n }\n\n return result;\n }, [] as Task[]);\n\n const tasksWithAssignment = tasks.map((task) => {\n const taskWithAllStudents = progresses?.find(({ taskId, allStudents }) => taskId === task.id && allStudents);\n return taskWithAllStudents\n ? {\n ...task,\n allStudents: taskWithAllStudents.allStudents,\n }\n : task;\n });\n\n return [...tasksWithAssignment, ...tasksWithoutAssignment];\n};\n\nexport const getHomeworkTableInitValues = (\n students: Student[],\n tasks: Task[],\n assignmentProgress?: AssignmentProgress[],\n repeatTaskForm?: boolean,\n expelledStudents?: Student[],\n): HomeworkTableFormValues => {\n const allTasks = getAllTasks(tasks, assignmentProgress);\n\n const selectAll = allTasks.map((task) => ({\n taskId: task.id,\n checked: !!task.allStudents,\n disabled: !!repeatTaskForm,\n }));\n\n const studentTasksChecked = assignmentProgress?.reduce((result, homework) => {\n if (result[homework.studentId]) {\n result[homework.studentId].tasks.push(homework.taskId);\n } else {\n result[homework.studentId] = {\n tasks: [homework.taskId],\n };\n }\n return result;\n }, {} as { [studentId: number]: { tasks: number[] } });\n\n const studentTasks = allTasks.map((task) => ({\n taskId: task.id,\n checked: false,\n blocked: false,\n overdued: moment().isAfter(task.deadlineForComplete),\n repeatBlocked: false,\n }));\n\n const studentValues = students.map((student) => {\n const tasks = studentTasks.map((task) => {\n if (studentTasksChecked && studentTasksChecked[student.id]) {\n const checkTask = studentTasksChecked[student.id].tasks.includes(task.taskId);\n\n const currentProgress = assignmentProgress?.reduce(\n (bestProgress, progress) => {\n return progress.studentId === student.id &&\n progress.taskId === task.taskId &&\n progress.id > bestProgress.id\n ? progress\n : bestProgress;\n },\n { id: -Infinity } as AssignmentProgress,\n );\n\n const isExpelledStudent = expelledStudents?.some(({ id }) => id === student.id);\n const blockCheckboxByExpelling = isExpelledStudent && (!checkTask || repeatTaskForm);\n\n const isBlocked =\n currentProgress?.status === AssignmentProgressStatus.COMPLETED ||\n currentProgress?.status === AssignmentProgressStatus.ON_CHECK;\n\n return {\n ...task,\n checked: checkTask && !repeatTaskForm,\n blocked: repeatTaskForm ? false : isBlocked || blockCheckboxByExpelling,\n repeatBlocked: (checkTask && repeatTaskForm && !isBlocked) || blockCheckboxByExpelling,\n };\n } else {\n return {\n ...task,\n repeatBlocked: repeatTaskForm && false,\n };\n }\n });\n return {\n studentId: student.id,\n tasks: [...tasks],\n };\n });\n\n return {\n students: studentValues,\n selectAll,\n };\n};\n\nexport const addTaskToValues = (\n values: HomeworkTableFormValues,\n task: Task,\n assignmentProgress: AssignmentProgress[],\n repeatTaskForm: boolean,\n): HomeworkTableFormValues => {\n const newValues = JSON.parse(JSON.stringify(values)) as HomeworkTableFormValues;\n\n const studentTasksChecked = assignmentProgress?.reduce((result, homework) => {\n if (result[homework.studentId]) {\n result[homework.studentId].tasks.push(homework.taskId);\n } else {\n result[homework.studentId] = {\n tasks: [homework.taskId],\n };\n }\n\n return result;\n }, {} as { [studentId: number]: { tasks: number[] } });\n\n newValues.selectAll.push({ taskId: task.id, checked: false, disabled: repeatTaskForm });\n\n newValues.students = newValues.students.map((student) => {\n if (studentTasksChecked && studentTasksChecked[student.studentId]) {\n const checkTask = studentTasksChecked[student.studentId].tasks.includes(task.id);\n\n const currentProgress = assignmentProgress?.reduce(\n (bestProgress, progress) => {\n return progress.studentId === student.studentId &&\n progress.taskId === task.id &&\n progress.id > bestProgress.id\n ? progress\n : bestProgress;\n },\n { id: -Infinity } as AssignmentProgress,\n );\n\n const isBlocked =\n currentProgress?.status === AssignmentProgressStatus.COMPLETED ||\n currentProgress?.status === AssignmentProgressStatus.ON_CHECK;\n\n student.tasks.push({\n taskId: task.id,\n checked: checkTask && !repeatTaskForm,\n blocked: repeatTaskForm ? false : isBlocked,\n repeatBlocked: checkTask && repeatTaskForm && !isBlocked,\n });\n } else {\n student.tasks.push({\n taskId: task.id,\n checked: false,\n blocked: false,\n repeatBlocked: repeatTaskForm && false,\n });\n }\n\n return student;\n });\n\n return newValues;\n};\n\nexport const removeTaskFromValues = (values: HomeworkTableFormValues, taskId: number): HomeworkTableFormValues => {\n const newValues = { ...values };\n\n newValues.selectAll = newValues.selectAll.filter((taskInValues) => taskInValues.taskId !== taskId);\n newValues.students = newValues.students.map((student) => {\n const studentTasksList = [...student.tasks].filter((studentTask) => studentTask.taskId !== taskId);\n\n return {\n ...student,\n tasks: studentTasksList,\n };\n });\n\n return newValues;\n};\n\nexport const getAssignmentTask = (\n lessonAssignment: IAssignmentItem[],\n isForMethodist = false,\n assignmentProgress?: Omit[],\n deferredAssignments?: TPostDeferredAssignmentResponse[],\n): Task[] => {\n const tasks = lessonAssignment?.reduce((result, assignment) => {\n const deferredAssigned = deferredAssignments?.find((homework) => {\n return homework.assignment === assignment.id;\n });\n const assigned = assignmentProgress?.find((homework) => {\n return homework.assignment.id === assignment.id;\n });\n\n const data = deferredAssigned ?? assigned;\n\n result.push({\n isPosted: data !== undefined,\n id: assignment.id,\n title: assignment.title,\n type: assignment.type,\n isTemplate: assignment.isTemplate,\n isForMethodist: isForMethodist,\n assignedDate: data?.assignedDate,\n deadlineForComplete: data?.deadlineForComplete,\n assignedDelay: (data as TPostDeferredAssignmentResponse)?.assignedDelay,\n deadlineDelay: (data as TPostDeferredAssignmentResponse)?.deadlineDelay,\n timeToComplete: (data as TPostDeferredAssignmentResponse)?.timeToComplete,\n assignedType: (data as TPostDeferredAssignmentResponse)?.assignedType ?? EAssignedTypes.DATE_TIME,\n deadlineType: (data as TPostDeferredAssignmentResponse)?.deadlineType ?? EDeadlineTypes.DATE_TIME,\n });\n\n return result;\n }, [] as Task[]);\n return tasks || [];\n};\n\nexport interface TasksDates {\n [taskId: number]: ITaskDate;\n}\nexport interface HomeworksStatus {\n id: number;\n status: 'auto' | 'notAuto' | 'homework' | 'notHomework';\n autoIssue: boolean;\n autoIssueTime: string;\n autoIssuetasks: number;\n autoIssueSetUp: boolean;\n givenHometaskTitle: string;\n autoIssuetotalTasks: number;\n passOffTasks: number;\n toCheckTasks: number;\n}\n\nexport const getAssignmentProgressData = (\n lessonHomeworks: Omit[],\n deferredAssignments?: (Task & TPostDeferredAssignmentResponse)[],\n): AssignmentProgress[] => {\n const assignments = lessonHomeworks.map((homework) => {\n const taskId = homework.assignment.id;\n\n const marks: MarkData[] = [];\n if (homework.marks) {\n marks.push(\n ...homework.marks.map((mark) => ({\n ...mark,\n author: mark?.author?.id,\n assignedType: EAssignedTypes.DATE_TIME,\n deadlineType: EDeadlineTypes.DATE_TIME,\n })),\n );\n }\n\n if (homework.teacherMark?.length) {\n marks.push(\n ...homework.teacherMark.map((mark) => ({\n ...mark,\n author: mark.author?.id,\n assignedType: EAssignedTypes.DATE_TIME,\n deadlineType: EDeadlineTypes.DATE_TIME,\n })),\n );\n }\n\n return {\n taskId,\n marks,\n taskTitle: homework.title ?? 'ДЗ',\n taskType: homework.type,\n id: Number(homework.id),\n status: homework.status,\n studentId: homework.student.id,\n assignedDate: homework.assignedDate,\n deadlineForComplete: homework.deadlineForComplete,\n assignedType: EAssignedTypes.DATE_TIME,\n deadlineType: EDeadlineTypes.DATE_TIME,\n timeToComplete: homework.timeToComplete,\n teacher: homework.teacher,\n };\n });\n const deferred = deferredAssignments\n ? deferredAssignments?.map((homework) => {\n const taskId = homework.assignment;\n\n const marks: MarkData[] = [];\n\n return homework.students.map((student) => {\n return {\n taskId,\n marks,\n taskTitle: homework.title ?? 'ДЗ',\n taskType: homework.type,\n id: Number(homework.id),\n status: AssignmentProgressStatus.DEFERRED_ASSIGNMENT,\n studentId: student,\n assignedDate: homework.assignedDate,\n deadlineForComplete: homework.deadlineForComplete,\n assignedType: homework.assignedType,\n deadlineType: homework.deadlineType,\n timeToComplete: homework.timeToComplete,\n teacher: homework?.teacher,\n errorsList: homework.errorsList,\n allStudents: homework.allStudents,\n };\n });\n })\n : [];\n return [...assignments, ...deferred.flat()];\n};\n\ninterface ConferenceDates {\n datetimeStart: string;\n}\n\nexport const getTasksDate = (\n dates: ITaskDate,\n conferenceData?: ConferenceDates,\n): {\n assignedDate?: string;\n assignedDelay?: number;\n deadlineForComplete?: string;\n deadlineDelay?: number;\n timeToComplete?: number;\n assignedType: EAssignedTypes;\n deadlineType: EDeadlineTypes;\n} => {\n const conferenceStart = moment(conferenceData?.datetimeStart);\n\n let assignedDate, assignedDelay, deadlineForComplete, deadlineDelay, assignedType, deadlineType;\n switch (dates.assignedType) {\n case EDateTimeTypesList.DATE_TIME:\n assignedDate = dates.timeStart;\n assignedDelay = undefined;\n assignedType = EAssignedTypes.DATE_TIME;\n break;\n case EDateTimeTypesList.TIME:\n assignedDate = undefined;\n assignedDelay = dates.startTimeDelay;\n assignedType = EAssignedTypes.TIME;\n break;\n case EDateTimeTypesList.NONE:\n assignedDate = moment().format();\n assignedDelay = undefined;\n assignedType = EAssignedTypes.NONE;\n break;\n default:\n assignedDate = undefined;\n assignedDelay = undefined;\n assignedType = EAssignedTypes.NONE;\n break;\n }\n\n switch (dates.deadlineType) {\n case EDateTimeTypesList.DATE_TIME:\n deadlineForComplete = dates?.timeEnd;\n deadlineDelay = undefined;\n deadlineType = EDeadlineTypes.DATE_TIME;\n break;\n case EDateTimeTypesList.TIME:\n default:\n deadlineForComplete = undefined;\n deadlineDelay = dates?.endTimeDelay;\n deadlineType = EDeadlineTypes.TIME;\n break;\n }\n\n return {\n assignedDate,\n assignedDelay,\n deadlineForComplete,\n deadlineDelay,\n timeToComplete: dates.timeToComplete,\n assignedType,\n deadlineType,\n };\n};\n\ninterface AssignmentSubmitData {\n createdDeferredAssignments: TCreateDeferredAssignmentAction[];\n updatedDeferredAssignments: TUpdateDeferredAssignmentAction[];\n deletedDeferredAssignmentsIds: number[];\n deletedAssignmentIds: { id: number }[];\n}\n\ninterface GetSubmitDataParams {\n values: HomeworkTableFormValues;\n tasks: Task[];\n assignmentProgress?: Omit[];\n courseGroup?: number;\n repeatTaskForm?: boolean;\n eventRoomId?: number;\n deferredAssignments: TPostDeferredAssignmentResponse[];\n}\n\nexport const getSubmitData = (params: GetSubmitDataParams): AssignmentSubmitData => {\n const { values, tasks, assignmentProgress, courseGroup, repeatTaskForm, deferredAssignments, eventRoomId } = params;\n\n const createdDeferredAssignments: TCreateDeferredAssignmentAction[] = [];\n const updatedDeferredAssignments: TUpdateDeferredAssignmentAction[] = [];\n const deletedDeferredAssignmentsIds: number[] = [];\n const deletedAssignmentIds: { id: number }[] = [];\n\n // Список выбранных заданий к выдаче\n const selectedAssignments = getSelectedAssignments({ values, tasks });\n const unselectedAssignments = tasks.filter(({ id }) => !selectedAssignments.some((selected) => selected.id === id));\n\n if (selectedAssignments?.length && unselectedAssignments?.length) {\n const deletedAssignmentProgress = getDeletedProgresses(\n assignmentProgress?.filter(({ assignment }) =>\n unselectedAssignments.some(({ id }) => id === assignment.id),\n ),\n );\n\n const deletedDeferredAssignment = deferredAssignments?.filter(({ assignment }) => {\n return unselectedAssignments.some(({ id }) => id === assignment);\n });\n\n if (deletedAssignmentProgress) {\n deletedAssignmentIds?.push(\n ...deletedAssignmentProgress?.map((item) => {\n return {\n id: +item.id,\n };\n }),\n );\n }\n if (deletedDeferredAssignment) {\n deletedDeferredAssignmentsIds?.push(...deletedDeferredAssignment?.map((item) => item.id));\n }\n }\n if (selectedAssignments?.length) {\n selectedAssignments.forEach((selectedTask) => {\n const {\n isTaskPosted,\n isSelectedAllStudents,\n selectedStudents,\n selectedDeferredAssignments,\n lastDeferredAssignment,\n selectedAssignmentProgress,\n lastAssignmentProgress,\n deletedAssignmentProgress,\n } = getAssignmentData({ values, selectedTask, deferredAssignments, assignmentProgress });\n\n // Выбраны ученики и задание создается впервые -> создается новая выдача\n const isCreate = (!isTaskPosted || repeatTaskForm) && !isEmptyList(selectedStudents);\n // Задание создается не впервые и оно не является отложенной выдачей\n const isUpdateAssignment = !isCreate && !lastDeferredAssignment && !!selectedAssignmentProgress;\n // Задание создается не впервые и оно является отложенной выдачей\n const isUpdateDeferredAssignment = !isCreate && !!lastDeferredAssignment;\n // Есть удаленные прогрессы\n const isDeleteProgress = !isEmptyList(deletedAssignmentProgress);\n //Убрали галочку \"Выдать всем\"\n const isSelectedAllUnchecked = !isSelectedAllStudents && !!selectedTask.allStudents;\n const isSelectedAllChecked = isSelectedAllStudents && !selectedTask.allStudents;\n\n if (isCreate) {\n const data = getCreatedDeferredAssignment({\n selectedTask,\n isSelectedAllStudents,\n selectedStudents,\n courseGroup,\n eventRoomId,\n });\n if (data) {\n createdDeferredAssignments.push(data);\n }\n }\n if (isUpdateAssignment) {\n // Если задание уже создавалось, но не как отложенная выдача,\n // и изменился список студентов, то\n // создаем новую выдачу по последнему прогрессу, старые выдачи не трогаем\n const assignmentProgressStudents = selectedAssignmentProgress?.map(({ student }) => student.id);\n const newSelectedStudents = selectedStudents\n ? selectedStudents?.filter((item) => !assignmentProgressStudents?.includes(item))\n : [];\n\n if (!isEmptyList(newSelectedStudents)) {\n const data = getCreatedDeferredAssignment({\n selectedTask,\n lastAssignmentProgress,\n isSelectedAllStudents,\n selectedStudents: newSelectedStudents,\n courseGroup,\n eventRoomId,\n });\n if (data) {\n createdDeferredAssignments.push(data);\n }\n }\n }\n if (isUpdateDeferredAssignment) {\n //Список студентов ТОЛЬКО для отложенных выдач\n let selectedDeferredAssignmentsStudents = selectedStudents.filter((item) => {\n const progressStudents = selectedAssignmentProgress?.map(({ student }) => student.id);\n return !progressStudents?.includes(item);\n });\n const oldDeferredAssignmentsStudents = selectedDeferredAssignments\n .map(({ students }) => students)\n .flat();\n\n const isDeferredAssignmentChanged =\n oldDeferredAssignmentsStudents\n .filter((x) => !selectedDeferredAssignmentsStudents.includes(x))\n .concat(\n selectedDeferredAssignmentsStudents.filter(\n (x) => !oldDeferredAssignmentsStudents.includes(x),\n ),\n ).length || isSelectedAllChecked;\n\n // Если список студентов не пуст и изменен, то\n // редактируем выдачи, иначе просто удаляем\n const isNeedUpdate =\n (!isEmptyList(selectedDeferredAssignmentsStudents) || isSelectedAllStudents) &&\n isDeferredAssignmentChanged;\n // Если список студентов пуст, то удаляем все выдачи по заданию\n const isNeedDelete = isEmptyList(selectedDeferredAssignmentsStudents);\n\n if (isNeedUpdate) {\n if (!isSelectedAllStudents) {\n // Перебираем все выдачи\n // Если выдача не последняя, то обновляем/удаляем ее в зависимости от обновленного списка студентов\n // Последнюю выдачу просто редактируем по оставшемуся списку студентов\n selectedDeferredAssignments.forEach((assignment) => {\n const isLast = assignment.id === lastDeferredAssignment?.id;\n\n if (!isLast) {\n const newList = assignment.students.filter((item) =>\n selectedDeferredAssignmentsStudents.includes(item),\n );\n const listHasChanged =\n !isEmptyList(assignment?.students) &&\n !isEmptyList(newList) &&\n newList.join() !== assignment?.students?.join();\n isEmptyList(newList)\n ? deletedDeferredAssignmentsIds.push(assignment.id)\n : listHasChanged\n ? updatedDeferredAssignments.push({\n // @ts-ignore\n id: assignment.id,\n allStudents: false,\n students: newList,\n })\n : undefined;\n selectedDeferredAssignmentsStudents = selectedDeferredAssignmentsStudents.filter(\n (item) => !newList.includes(item),\n );\n } else if (isLast) {\n const listHasChanged =\n !isEmptyList(assignment?.students) &&\n !isEmptyList(selectedDeferredAssignmentsStudents) &&\n selectedDeferredAssignmentsStudents.join() !== assignment?.students?.join();\n\n isEmptyList(selectedDeferredAssignmentsStudents)\n ? deletedDeferredAssignmentsIds.push(assignment.id)\n : listHasChanged\n ? updatedDeferredAssignments.push({\n // @ts-ignore\n id: lastDeferredAssignment.id,\n allStudents: isSelectedAllStudents,\n students: !isSelectedAllStudents\n ? selectedDeferredAssignmentsStudents\n : undefined,\n })\n : undefined;\n }\n });\n } else {\n //Если выбрано \"Выдать всем\", просто обновляем последнюю выдачу\n updatedDeferredAssignments.push({\n // @ts-ignore\n id: lastDeferredAssignment.id,\n allStudents: isSelectedAllStudents,\n students: !isSelectedAllStudents ? selectedStudents : undefined,\n });\n }\n } else if (isNeedDelete) {\n deletedDeferredAssignmentsIds?.push(...selectedDeferredAssignments?.map((item) => item.id));\n }\n }\n if (isDeleteProgress && !repeatTaskForm) {\n deletedAssignmentIds.push(...deletedAssignmentProgress);\n }\n if (isSelectedAllUnchecked) {\n const selectedDeferredAssignment = selectedDeferredAssignments.find(\n ({ assignment }) => assignment === selectedTask.id,\n );\n\n if (selectedDeferredAssignment) {\n updatedDeferredAssignments.push({\n // @ts-ignore\n id: selectedDeferredAssignment.id,\n allStudents: false,\n students: selectedDeferredAssignment.students,\n });\n }\n }\n });\n } else {\n deletedDeferredAssignmentsIds?.push(...deferredAssignments?.map((item) => item.id));\n\n const progressesToDelete = getDeletedProgresses(assignmentProgress);\n\n if (progressesToDelete) {\n deletedAssignmentIds?.push(...progressesToDelete);\n }\n }\n return {\n createdDeferredAssignments,\n updatedDeferredAssignments,\n deletedDeferredAssignmentsIds,\n deletedAssignmentIds,\n };\n};\n\nexport const sortByFullName = (\n first: { firstName: string; lastName: string },\n second: { firstName: string; lastName: string },\n): number => (`${first.lastName} ${first.firstName}` > `${second.lastName} ${second.firstName}` ? 1 : -1);\n\n// Ниже 4 вспомогательные функции к getSubmitData\nconst getCreatedDeferredAssignment = (params: {\n selectedTask: Task;\n isSelectedAllStudents: boolean;\n selectedStudents: number[];\n lastAssignmentProgress?: Omit;\n courseGroup?: number;\n eventRoomId?: number;\n deleted?: { id: number }[];\n}): TCreateDeferredAssignmentAction | undefined => {\n const {\n selectedTask,\n isSelectedAllStudents,\n selectedStudents,\n courseGroup,\n eventRoomId,\n deleted,\n lastAssignmentProgress,\n } = params;\n if (courseGroup) {\n const assignedDate = selectedTask?.assignedDate ?? lastAssignmentProgress?.assignedDate ?? undefined;\n const deadlineForComplete =\n selectedTask?.deadlineForComplete ?? lastAssignmentProgress?.deadlineForComplete ?? undefined;\n\n return {\n assignment: selectedTask.id,\n allStudents: isSelectedAllStudents,\n students: !isSelectedAllStudents ? selectedStudents : undefined,\n deadlineForComplete: deadlineForComplete ? payloadTimeFormatter(deadlineForComplete) : undefined,\n assignedDate: assignedDate ? payloadTimeFormatter(assignedDate) : undefined,\n courseGroup: courseGroup,\n teacher: selectedTask?.teacher ?? undefined,\n assignedDelay: selectedTask?.assignedDelay,\n deadlineDelay: selectedTask?.deadlineDelay,\n timeToComplete: selectedTask?.timeToComplete,\n assignedType:\n (selectedTask?.assignedDate || selectedTask?.assignedDelay !== undefined) && selectedTask?.assignedType\n ? selectedTask?.assignedType\n : EAssignedTypes.DATE_TIME,\n deadlineType:\n (selectedTask?.deadlineForComplete || selectedTask?.deadlineDelay) && selectedTask?.deadlineType\n ? selectedTask?.deadlineType\n : EDeadlineTypes.DATE_TIME,\n deletedAssignmentIds: deleted,\n };\n } else if (eventRoomId) {\n return {\n assignment: selectedTask.id,\n allStudents: isSelectedAllStudents,\n students: !isSelectedAllStudents ? selectedStudents : undefined,\n teacher: selectedTask?.teacher ?? undefined,\n assignedType: EAssignedTypes.DATE_TIME,\n deadlineType: EDeadlineTypes.DATE_TIME,\n eventRoom: eventRoomId,\n deletedAssignmentIds: deleted,\n };\n }\n return undefined;\n};\nconst getAssignmentData = (params: {\n values: HomeworkTableFormValues;\n selectedTask: Task;\n deferredAssignments: TPostDeferredAssignmentResponse[];\n assignmentProgress: Omit[] | undefined;\n}): {\n isTaskPosted: boolean;\n isSelectedAllStudents: boolean;\n selectedDeferredAssignments: TPostDeferredAssignmentResponse[];\n lastDeferredAssignment: TPostDeferredAssignmentResponse | undefined;\n selectedStudents: number[];\n selectedAssignmentProgress: Omit[] | undefined;\n lastAssignmentProgress: Omit | undefined;\n deletedAssignmentProgress: { id: number }[];\n} => {\n const { values, selectedTask, deferredAssignments, assignmentProgress } = params;\n\n const isSelectedAllStudents = !!values.selectAll.find(({ taskId }) => taskId === selectedTask.id)?.checked;\n const isTaskPosted = !!selectedTask.isPosted;\n\n // cписок отложенных выдач на выбранное задание\n const selectedDeferredAssignments = deferredAssignments\n .filter((item) => item.assignment === selectedTask.id)\n .sort((a, b) => a.id - b.id);\n // последняя отложенная выдача\n const lastDeferredAssignment = !isEmptyList(selectedDeferredAssignments)\n ? selectedDeferredAssignments.reduce((acc, curr) => (acc.id > curr.id ? acc : curr))\n : undefined;\n\n //список всех студентов, для которых выбрано задание\n const selectedStudents: number[] = values.students\n .filter((item) => {\n const task = item.tasks.find(({ taskId }) => taskId === selectedTask.id);\n return task?.checked && !task.blocked;\n })\n ?.map(({ studentId }) => studentId);\n const blockedSelectedStudents = values.students\n .filter((item) => {\n const task = item.tasks.find(({ taskId }) => taskId === selectedTask.id);\n return task?.checked && task.blocked;\n })\n ?.map(({ studentId }) => studentId);\n\n const assignmentProgressList = assignmentProgress?.filter(({ assignment }) => assignment.id == selectedTask.id);\n\n const deletedAssignmentProgress = assignmentProgressList\n ? assignmentProgressList\n .map(({ student, id, status }) => {\n if (\n !selectedStudents.includes(student.id) &&\n !blockedSelectedStudents.includes(student.id) &&\n status !== AssignmentProgressStatus.COMPLETED &&\n status !== AssignmentProgressStatus.ON_CHECK\n ) {\n return { id: +id };\n }\n })\n .filter(Boolean)\n : [];\n const selectedAssignmentProgress = assignmentProgressList?.filter(({ id }) => {\n // Выбираем только те прогрессы, которые не пойдут под удаление\n // @ts-ignore\n const ids = deletedAssignmentProgress.map(({ id }) => id);\n return !ids.includes(id);\n });\n\n // последний созданный прогресс\n const lastAssignmentProgress = !isEmptyList(selectedAssignmentProgress)\n ? selectedAssignmentProgress?.reduce((acc, curr) => (acc.id > curr.id ? acc : curr))\n : undefined;\n\n return {\n isTaskPosted,\n isSelectedAllStudents,\n selectedDeferredAssignments,\n lastDeferredAssignment,\n selectedStudents,\n selectedAssignmentProgress,\n lastAssignmentProgress,\n // @ts-ignore\n deletedAssignmentProgress,\n };\n};\nconst getSelectedAssignments = (params: { values: HomeworkTableFormValues; tasks: Task[] }): Task[] => {\n const { values, tasks } = params;\n //выбранные к выдаче задания (по галочкам у учеников)\n const checkedTasksIds = values.students\n .map(({ tasks }) =>\n tasks.map((item) => {\n if (item.checked) {\n return item.taskId;\n }\n }),\n )\n .flat()\n .filter(Boolean);\n // удаляем повторяющиеся значения из checkedTasksIds\n const uniqCheckedTasksIds = Array.from(new Set(checkedTasksIds));\n // Список выбранных заданий к выдаче\n return tasks.filter((item) => uniqCheckedTasksIds.includes(item.id));\n};\n\nconst getDeletedProgresses = (assignmentProgress: Omit[] | undefined) => {\n // При удалении прогрессов для каждого конкретного студента удаляем по одному (последнему) прогрессу\n // Ищем студентов, у которых несколько прогрессов\n const studentsDuplicates = assignmentProgress\n ?.map((item) => item.student.id)\n ?.filter((id, index, ids) => {\n return ids.indexOf(id) !== index;\n });\n // Для каждого студента находим прогресс, созданный последним - он пойдет под удаление\n const duplicatedProgressesToDelete = studentsDuplicates\n ?.map((studentId) => {\n const progresses = assignmentProgress?.filter(({ student }) => student.id === studentId);\n return !isEmptyList(progresses)\n ? progresses?.reduce((acc, curr) => (acc.id > curr.id ? acc : curr))?.id\n : undefined;\n })\n .filter(Boolean);\n\n // Собираем прогрессы под удаление:\n // если нет учеников, у которых несколько прогрессов - удаляем все\n // если такие ученики есть, то удаляем для каждого из них последний прогресс, и прогрессы остальных студентов\n const progressesToDelete =\n !isEmptyList(duplicatedProgressesToDelete) && !isEmptyList(studentsDuplicates)\n ? assignmentProgress\n ?.filter(({ id, student }) => {\n return (\n !studentsDuplicates?.includes(student.id) ||\n (studentsDuplicates?.includes(student.id) && duplicatedProgressesToDelete?.includes(id))\n );\n })\n .map((item) => {\n return {\n id: +item.id,\n };\n })\n : assignmentProgress?.map((item) => {\n return {\n id: +item.id,\n };\n });\n\n return progressesToDelete;\n};\n","export const parseQueryString = (queryString: string): Record => {\n const queryObj: any = {};\n if (!queryString) return queryObj;\n\n const queryStr = queryString.substring(1);\n const queryStrSplitted = queryStr.split('&');\n\n for (let idx = 0; idx < queryStrSplitted.length; idx++) {\n const queryParamEntries = queryStrSplitted[idx].split('=');\n queryObj[queryParamEntries[0]] = decodeURIComponent(decodeURI(queryParamEntries[1]));\n }\n\n return queryObj;\n};\n","import { weekdaysRu } from 'App/constants';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport { IAdditionalDaysItem } from 'src-new/components/reporting';\nimport { IAppTableItems } from 'src-new/ui';\nimport { formatDayjsToParamsDate, formatDayjsToTableDate, formatTableDateToDayjs } from 'src-new/utils';\nimport { IUpdateCalendarPlan, periodsType } from 'types/calendarPlan';\n\nimport 'dayjs/locale/ru';\n\ndayjs.extend(isBetween);\ndayjs.extend(updateLocale);\n\ninterface IPeriodsDateRange {\n start: Dayjs;\n end: Dayjs;\n}\n\ninterface IAdditionalDayRemoveParams {\n period: number;\n day: Dayjs;\n}\n\ninterface IAdditionalDaysDayJs {\n holidays: Array;\n additionalWorkingDays: Array;\n}\n\nconst lastItem: IAdditionalDaysItem = {\n title: 'Доп. учебные дни',\n plug: 'Нет дней',\n dates: [],\n};\n\n/**\n * @description количество столбцов в зависимости от учебного периода\n * @param {periodsType} periodType\n */\nconst getColumnCount = (periodType?: periodsType): number => {\n switch (periodType) {\n case 'year':\n return 1;\n case 'trimester':\n return 3;\n case 'quarter':\n return 4;\n default:\n return 2;\n }\n};\n\nconst convertNumber = (num: number) => {\n switch (num) {\n case 1:\n return `I`;\n case 2:\n return `II`;\n case 3:\n return `III`;\n default:\n return `IV`;\n }\n};\n\n/**\n * @description заголовок в зависимости от типа учебного периода\n * @param {number} index\n * @param {periodsType} periodType\n */\nconst getTitle = (index: number, periodType?: periodsType) => {\n const number = convertNumber(index + 1);\n switch (periodType) {\n case 'year':\n return `${number} год`;\n case 'trimester':\n return `${number} триместр`;\n case 'quarter':\n return `${number} четверть`;\n default:\n return `${number} семестр`;\n }\n};\n\n/**\n * @description приводим дату к виду отображения\n * @param {Dayjs} date\n * @return string\n */\nconst getDateWithDateOfWeek = (date: Dayjs): string => {\n const formatDate = formatDayjsToTableDate(date);\n const weekday = weekdaysRu[date.day()];\n return `${formatDate} - ${weekday}`;\n};\n\n/**\n * @description форматируем списки доп учебных и не учебных дней к формату Dayjs\n * @param {Array} holidays\n * @param {Array} additionalWorkingDays\n * @return {IAdditionalDaysDayJs}\n */\nconst formatToAdditionalDays = (\n holidays?: Array,\n additionalWorkingDays?: Array,\n): IAdditionalDaysDayJs => {\n const listDatesToDayJs = (list?: Array) => {\n return list?.map((item) => dayjs(item)) ?? [];\n };\n return { holidays: listDatesToDayJs(holidays), additionalWorkingDays: listDatesToDayJs(additionalWorkingDays) };\n};\n\n/**\n * @description формируем периоды для не учебных дней если они существуют\n * @param {IAppTableItems} periodsTable\n */\nconst getPeriodsRangeDates = (periodsTable?: IAppTableItems): Array | undefined => {\n const periods = periodsTable?.slice(1, -1);\n return periods?.map((item) => {\n const start = item?.[1]?.title?.toString();\n const end = item?.[2]?.title?.toString();\n const startDayjs = start ? formatTableDateToDayjs(start) : undefined;\n const endDayjs = end ? formatTableDateToDayjs(end) : undefined;\n if (startDayjs && endDayjs) {\n return { start: startDayjs, end: endDayjs };\n }\n return undefined;\n });\n};\n\n/**\n * @description получаем не учебные даты которые попадают созданные периоды\n * @param {IPeriodsDateRange} periodsRanges\n * @param {Array} additionalWorkingDays\n * @return {Array>}\n */\nconst getPeriodsDates = (\n periodsRanges?: Array,\n additionalWorkingDays?: Array,\n): Array> => {\n const periodsDaysList = periodsRanges?.map((period) => {\n const { start, end } = period ?? {};\n const daysByPeriods = additionalWorkingDays?.filter((day) => {\n if (start && end) {\n const date = dayjs(day);\n return date.isBetween(start, end, 'day') || date.isSame(start, 'day') || date.isSame(end, 'day');\n }\n return false;\n });\n return daysByPeriods ?? [];\n });\n return periodsDaysList ?? [];\n};\n\n/**\n * @description добавляем доп день в список\n * @param {Dayjs} day\n * @param {IAdditionalDaysDayJs} dates\n * @param {isWeekend} isWeekend\n * @return {IAdditionalDaysDayJs}\n */\nconst addNewAdditionalDay = (day: Dayjs, dates: IAdditionalDaysDayJs, isWeekend?: boolean): IAdditionalDaysDayJs => {\n const { holidays, additionalWorkingDays } = dates;\n let newHolidays = holidays;\n let newAdditional = additionalWorkingDays;\n if (isWeekend) {\n newHolidays = [...holidays, day];\n } else {\n newAdditional = [...additionalWorkingDays, day];\n }\n return { holidays: newHolidays, additionalWorkingDays: newAdditional };\n};\n\n/**\n * @description находим и удаляем доп день из списка\n * @param {Dayjs} day\n * @param {IAdditionalDaysDayJs} dates\n * @param {isWeekend} isWeekend\n * @return {IAdditionalDaysDayJs}\n */\nconst removeAdditionalDay = (day: Dayjs, dates: IAdditionalDaysDayJs, isWeekend?: boolean): IAdditionalDaysDayJs => {\n const { holidays, additionalWorkingDays } = dates;\n let newHolidays = holidays;\n let newAdditional = additionalWorkingDays;\n const isSameDates = (element: Dayjs) => {\n return day.isSame(element, 'day');\n };\n const findAndRemoveItem = (list: Array) => {\n const index = list.findIndex(isSameDates);\n return index == -1 ? list : [...list.slice(0, index), ...list.slice(index + 1)];\n };\n\n if (isWeekend) {\n newHolidays = findAndRemoveItem(newHolidays);\n } else {\n newAdditional = findAndRemoveItem(newAdditional);\n }\n return { holidays: newHolidays, additionalWorkingDays: newAdditional };\n};\n\n/**\n * @description формируем данные для обновления данных на бэк\n * @param {IAdditionalDaysDayJs} dates\n * @param {IAppTableItems} periodTable\n * @return {IUpdateCalendarPlan}\n */\nconst getUpdateAdditionalDaysParams = (\n dates: IAdditionalDaysDayJs,\n periodTable?: IAppTableItems,\n): IUpdateCalendarPlan | undefined => {\n const { holidays, additionalWorkingDays } = dates;\n const periodTableLastRowIndex = (periodTable?.length ?? 0) - 1;\n const yearDaysCount = periodTable?.[periodTableLastRowIndex]?.[3]?.title ?? 0;\n const yearWeeksCount = periodTable?.[periodTableLastRowIndex]?.[4]?.title ?? 0;\n const periodsRangesDates = getPeriodsRangeDates(periodTable);\n const holidayList = ([] as Array).concat(...getPeriodsDates(periodsRangesDates, holidays));\n const listDayjsToParamsDate = (list?: Array) => {\n return list?.map((item) => formatDayjsToParamsDate(item)) ?? [];\n };\n const allHolidays = listDayjsToParamsDate(holidayList);\n const holidaysSet = new Set(allHolidays);\n\n return {\n holidays: Array.from(holidaysSet),\n additionalWorkingDays: listDayjsToParamsDate(additionalWorkingDays),\n yearDaysCount: Number(yearDaysCount),\n yearWeeksCount: Number(yearWeeksCount),\n };\n};\n\n/**\n * @description формируем данные для доп учебных и не учебных дней\n * @param {IAdditionalDaysDayJs} additionalDates\n * @param {IAppTableItems} periodsTable\n * @param {periodsType} periodType\n * @return {Array}\n */\nconst getAdditionalDaysTable = (\n additionalDates: IAdditionalDaysDayJs,\n periodsTable?: IAppTableItems,\n periodType?: periodsType,\n): Array => {\n const { holidays, additionalWorkingDays } = additionalDates;\n const countPeriods = getColumnCount(periodType);\n const periodsRangesDates = getPeriodsRangeDates(periodsTable);\n const holidayDatesList = getPeriodsDates(periodsRangesDates, holidays);\n const headerRow = Array(countPeriods)\n ?.fill({})\n .map((item, index) => {\n const title = getTitle(index, periodType);\n const dates = holidayDatesList?.[index] ?? [];\n const range = periodsRangesDates?.[index];\n return { title, dates, range };\n });\n const newLastItem = { ...lastItem, dates: additionalWorkingDays ?? [] };\n return [...headerRow, newLastItem];\n};\n\nexport {\n addNewAdditionalDay,\n formatToAdditionalDays,\n getAdditionalDaysTable,\n getDateWithDateOfWeek,\n getUpdateAdditionalDaysParams,\n removeAdditionalDay,\n};\n\nexport type { IAdditionalDayRemoveParams, IAdditionalDaysDayJs, IPeriodsDateRange };\n","import dayjs, { Dayjs } from 'dayjs';\nimport { IAppTableCellElementData, IAppTableItems, updateTableCellTitle } from 'src-new/ui';\nimport { formatJSToTableDate, formatTableDateToDayjs } from 'src-new/utils';\nimport { eduWeeksType } from 'types/calendarPlan';\n\nimport { IAdditionalDaysDayJs, IPeriodsDateRange } from './additionalDaysTable';\n\ntype calendarOwnerTypes = 'periodTable' | 'holidayTable' | 'additionalDays' | undefined;\ntype disableDatesTypes = 'low' | 'high' | 'rangeAndSame' | undefined;\n\ninterface ICalendarDataFromTable {\n currentDate: Dayjs;\n borderDate?: string;\n disableDatesType?: disableDatesTypes;\n}\n\n/**\n * @description получаем данные для открытия календаря в зависимости от таблицы\n * @param {IAppTableCellElementData} cellData\n * @param {IAppTableItems} table\n * @return ICalendarDataFromTable\n */\nconst getCalendarDataFromTable = (\n cellData: IAppTableCellElementData,\n table?: IAppTableItems,\n): ICalendarDataFromTable => {\n const { cell, row, title, type } = cellData;\n const currentDate = title ? formatTableDateToDayjs(title.toString()) : dayjs();\n let borderDate;\n let disableDatesType: disableDatesTypes;\n if (type == 'date' && cell != undefined) {\n const currentRow = table?.[row];\n const isStartDate = cell == 1;\n const currentCell = isStartDate ? currentRow?.[cell + 1] : currentRow?.[cell - 1];\n disableDatesType = isStartDate ? 'low' : 'high';\n borderDate = currentCell?.title?.toString();\n }\n return { currentDate, borderDate, disableDatesType };\n};\n\nconst getDaysJsArray = (start: string | Dayjs, end: string | Dayjs): Array => {\n const startDayJS = dayjs.isDayjs(start) ? start : formatTableDateToDayjs(start);\n const endDayJS = dayjs.isDayjs(end) ? end : formatTableDateToDayjs(end);\n let currentDayJS = startDayJS;\n const array = [currentDayJS];\n while (startDayJS.isBefore(endDayJS) && !currentDayJS.isSame(endDayJS, 'day')) {\n currentDayJS = currentDayJS.add(1, 'day');\n array.push(currentDayJS);\n }\n return array;\n};\n\nconst getCountOfDaysAndWeek = (\n daysArray: Array,\n eduWeek?: eduWeeksType,\n): { dayCount: number; weekCount: number } => {\n const arrayLength = daysArray.length;\n let dayCount = 0;\n for (let i = 0; i < arrayLength; i++) {\n const isSaturday = daysArray[i].day() == 6;\n const isSunday = daysArray[i].day() == 0;\n switch (eduWeek) {\n case 6:\n if (!isSunday) dayCount++;\n break;\n default:\n if (!(isSaturday || isSunday)) dayCount++;\n break;\n }\n }\n const weekCount = Math.ceil(dayCount / (eduWeek ?? 7));\n return { dayCount, weekCount };\n};\n\n/**\n * @description считаем количество дней и недель между 2 датами\n * @param {Dayjs} date\n * @param {IAppTableItems} table\n * @param {number} cell\n * @param {number} row\n * @param {eduWeeksType} eduWeek\n * @return IAppTableItems\n */\nconst changeTableNumberOfDaysAndWeeksBetween = (\n date: Dayjs,\n cell: number,\n row: number,\n table: IAppTableItems,\n eduWeek?: eduWeeksType,\n): IAppTableItems => {\n let startDate;\n let endDate;\n const isRev = cell == 2;\n const plusNumber = isRev ? 1 : 2;\n\n if (isRev) {\n endDate = date;\n const cellDate = table[row][cell - 1]?.title ?? undefined;\n startDate = cellDate ? formatTableDateToDayjs(cellDate.toString()) : undefined;\n } else {\n startDate = date;\n const cellDate = table[row][cell + 1]?.title ?? undefined;\n endDate = cellDate ? formatTableDateToDayjs(cellDate.toString()) : undefined;\n }\n let counts;\n\n if (startDate && endDate) {\n const daysArray = getDaysJsArray(startDate, endDate);\n counts = getCountOfDaysAndWeek(daysArray, eduWeek);\n }\n\n const newTable = updateTableCellTitle(table, row, cell + plusNumber, counts?.dayCount ?? 0);\n return updateTableCellTitle(newTable, row, cell + plusNumber + 1, counts?.weekCount ?? 0);\n};\n\n/**\n * @description изменяем значения дат и их разность в таблице\n * @param {Dayjs} date\n * @param {IAppTableItems} table\n * @param {IAppTableCellElementData} activeCell\n * @param {calendarOwnerTypes} activeTableName\n * @param {eduWeeksType} eduWeek\n * @return IAppTableItems\n */\nconst changeTableDateAndDuration = (\n date: Dayjs,\n table: IAppTableItems,\n activeCell?: IAppTableCellElementData,\n activeTableName?: calendarOwnerTypes,\n eduWeek?: eduWeeksType,\n): IAppTableItems => {\n const { row, cell } = activeCell || {};\n if (row !== undefined && cell !== undefined) {\n const dateString = formatJSToTableDate(date.toDate());\n let newTable = updateTableCellTitle(table, row, cell, dateString);\n if (activeTableName == 'periodTable') {\n newTable = changeTableNumberOfDaysAndWeeksBetween(date, cell, row, newTable, eduWeek);\n }\n return newTable;\n }\n return table;\n};\n\n/**\n * @description сравниваем даты\n * @param {Dayjs} date\n * @param {string} borderDate\n * @param {boolean} higher\n * @return boolean\n */\nconst compareDates = (date: Dayjs, borderDate?: string, higher?: boolean): boolean => {\n const dayjsDate = borderDate ? formatTableDateToDayjs(borderDate) : undefined;\n if (dayjsDate) {\n if (higher) {\n return dayjsDate.isAfter(date, 'day');\n } else {\n return dayjsDate.isBefore(date, 'day');\n }\n }\n return false;\n};\n\n/**\n * @description отключаем даты которые больше\n * @param {Dayjs} date\n * @param {string} borderDate\n * @return boolean\n */\nconst disabledDateHigher = (date: Dayjs, borderDate?: string): boolean => {\n return compareDates(date, borderDate, true);\n};\n\n/**\n * @description отключаем даты которые меньше\n * @param {Dayjs} date\n * @param {string} borderDate\n * @return boolean\n */\nconst disabledDateLower = (date: Dayjs, borderDate?: string): boolean => {\n return compareDates(date, borderDate);\n};\n\n/**\n * @description отключаем даты которые входят в список или не попадают в промежуток\n * @param {Dayjs} date\n * @param {IAdditionalDaysDayJs} sameDates\n * @param {IPeriodsDateRange} range\n * @return boolean\n */\nconst disabledRangeAndSameDates = (\n date: Dayjs,\n sameDates: IAdditionalDaysDayJs,\n range?: IPeriodsDateRange,\n): boolean => {\n const { holidays, additionalWorkingDays } = sameDates;\n const days = [...holidays, ...additionalWorkingDays];\n const index = days.findIndex((element) => date.isSame(element, 'day'));\n const isSame = index !== -1;\n let inRange = true;\n if (range) {\n const { end, start } = range;\n inRange = date.isBetween(start, end, 'day', '[]');\n }\n return !(inRange && !isSame);\n};\n\nexport {\n changeTableDateAndDuration,\n disabledDateHigher,\n disabledDateLower,\n disabledRangeAndSameDates,\n getCalendarDataFromTable,\n getCountOfDaysAndWeek,\n getDaysJsArray,\n};\nexport type { calendarOwnerTypes, ICalendarDataFromTable };\n","import { IAppTableItems, IAppTableRow } from 'src-new/ui/table/app-table/AppTable.types';\nimport { deleteEmptyParams, formatJSToTableDate, getTableDateToParamsDate } from 'src-new/utils';\nimport { ICreateSchoolHolidaysParam, ISchoolHoliday, IUpdateSchoolHolidaysParam } from 'types/calendarPlan';\n\nconst HOLIDAY_FIRST_ROW_CELL_WIDTH = 200;\n\nconst holidayHeaderRow: IAppTableRow = [\n { title: 'Каникулы', cellWidth: HOLIDAY_FIRST_ROW_CELL_WIDTH },\n { title: 'Дата начала', subtitle: '(задается вручную)' },\n { title: 'Дата окончания', subtitle: '(задается вручную)' },\n];\n\nconst holidayFooterRow: IAppTableRow = [\n { isAddRow: true, title: 'Добавить период', cellWidth: HOLIDAY_FIRST_ROW_CELL_WIDTH },\n { title: '' },\n];\n\n/**\n * @description проверяем на наличие ненулевых значений кол-ва учебных недель\n * @param {IAppTableItems} table\n * @return boolean\n */\nconst isEmptyWeeksCount = (table?: IAppTableItems): boolean => {\n const slicedTable = table?.slice(1, -1) ?? [];\n if (slicedTable.length == 0) {\n return false;\n }\n return slicedTable.some((item) => {\n const title = item.find((cell) => !!cell.isInput)?.title;\n if (title !== undefined) {\n return title === '' || title === 0;\n }\n });\n};\n\n/**\n * @description проверяем у всех ли строк есть названия\n * @param {IAppTableItems} table\n * @return boolean\n */\nconst isEmptyHolidayName = (table?: IAppTableItems): boolean => {\n const slicedTable = table?.slice(1, -1) ?? [];\n if (slicedTable.length == 0) {\n return false;\n }\n return !slicedTable.every((item) => {\n const { title } = item?.[0] || {};\n return title != undefined && title != '';\n });\n};\n\n/**\n * @description формируем строку для таблицы каникул\n * @param {ISchoolHoliday} item\n * @return IAppTableRow\n */\nconst getHolidayRow = (item?: ISchoolHoliday): IAppTableRow => {\n const { title, dateStart, dateEnd, id } = item || {};\n return [\n {\n title: title,\n id: id,\n isInput: true,\n noCanEmpty: true,\n cellWidth: HOLIDAY_FIRST_ROW_CELL_WIDTH,\n isDeleteRow: true,\n },\n { title: dateStart ? formatJSToTableDate(dateStart) : undefined, isActive: true, type: 'date' },\n { title: dateEnd ? formatJSToTableDate(dateEnd) : undefined, isActive: true, type: 'date' },\n ];\n};\n\n/**\n * @description удаляем строку\n * @param {IAppTableItems} holidays\n * @param {number} row\n * @return IAppTableItems\n */\nconst delRowFromHolidayTable = (holidays: IAppTableItems, row: number): IAppTableItems => {\n return [...holidays.slice(0, row), ...holidays.slice(row + 1)];\n};\n\n/**\n * @description добавляем строку\n * @param {IAppTableItems} holidays\n * @return IAppTableItems\n */\nconst addNewRowToHolidayTable = (holidays: IAppTableItems): IAppTableItems => {\n const holidaysLength = holidays.length;\n return [...holidays.slice(0, holidaysLength - 1), getHolidayRow(), ...holidays.slice(holidaysLength - 1)];\n};\n\n/**\n * @description формируем ОБНОВЛЕННЫЕ данные о каникулах для отправки на бэк\n * @param {IAppTableItems} table\n * @return Array | undefined => {\n const slicedTable = table?.slice(1, -1);\n const params = slicedTable?.map((item) => {\n const { id, title } = item[0];\n const { title: dateStart } = item[1];\n const { title: dateEnd } = item[2];\n if (id && title) {\n const formatDateStart = dateStart ? getTableDateToParamsDate(dateStart?.toString()) : undefined;\n const formatDateEnd = dateEnd ? getTableDateToParamsDate(dateEnd?.toString()) : undefined;\n\n return (\n deleteEmptyParams({\n id: Number(id),\n title: title?.toString(),\n dateStart: formatDateStart,\n dateEnd: formatDateEnd,\n }) ?? ({} as IUpdateSchoolHolidaysParam)\n );\n }\n return {} as IUpdateSchoolHolidaysParam;\n });\n const filteredParams = params?.filter((item) => Object.keys(item).length !== 0);\n return filteredParams?.length == 0 ? undefined : filteredParams;\n};\n\n/**\n * @description формируем СОЗДАННЫЕ данные о каникулах для отправки на бэк\n * @param {number} planId\n * @param {IAppTableItems} table\n * @return Array | undefined => {\n const slicedTable = table?.slice(1, -1);\n const params = slicedTable?.map((item) => {\n const { id, title } = item[0];\n const { title: dateStart } = item[1];\n const { title: dateEnd } = item[2];\n if (title && !id) {\n const formatDateStart = dateStart ? getTableDateToParamsDate(dateStart?.toString()) : undefined;\n const formatDateEnd = dateEnd ? getTableDateToParamsDate(dateEnd?.toString()) : undefined;\n const params = {\n calendarPlan: planId,\n title: title?.toString(),\n dateStart: formatDateStart,\n dateEnd: formatDateEnd,\n };\n return deleteEmptyParams(params) ?? ({} as ICreateSchoolHolidaysParam);\n }\n return {} as ICreateSchoolHolidaysParam;\n });\n const filteredParams = params?.filter((item) => Object.keys(item).length !== 0);\n return filteredParams?.length == 0 ? undefined : filteredParams;\n};\n\n/**\n * @description формируем таблицу с каникулами\n * @param {Array} schoolHolidays\n * @return IAppTableItems\n */\nconst getHolidayTable = (schoolHolidays?: Array): IAppTableItems => {\n const rows = schoolHolidays?.map((item) => getHolidayRow(item));\n if (rows) {\n return [holidayHeaderRow, ...rows, holidayFooterRow];\n }\n return [holidayHeaderRow, holidayFooterRow];\n};\n\nexport {\n addNewRowToHolidayTable,\n delRowFromHolidayTable,\n getCreateHolidayParams,\n getHolidayTable,\n getUpdateHolidayParams,\n isEmptyHolidayName,\n isEmptyWeeksCount,\n};\n","import dayjs, { Dayjs } from 'dayjs';\nimport minMax from 'dayjs/plugin/minMax';\nimport { IAppTableItems, IAppTableRow } from 'src-new/ui/table/app-table/AppTable.types';\nimport {\n deleteEmptyParams,\n formatDayjsToTableDate,\n formatJSToTableDate,\n formatTableDateToDayjs,\n getTableDateToParamsDate,\n IAdditionalDaysDayJs,\n} from 'src-new/utils';\nimport { eduWeeksType, IPeriod, IUpdateCalendarPlanPeriodParams, periodsType } from 'types/calendarPlan';\n\nimport { getCountOfDaysAndWeek, getDaysJsArray } from './calendarTableActions';\ndayjs.extend(minMax);\n\nconst periodHeaderRow: IAppTableRow = [\n { title: 'Отчетный период' },\n { title: 'Даты начала', subtitle: '(задается вручную)' },\n { title: 'Даты окончания', subtitle: '(задается вручную)' },\n { title: 'Количество учебных дней' },\n { title: 'Количество учебных недель', subtitle: '(задается вручную)' },\n];\n\n/**\n * @description формируем последнюю строку для таблицы периодов обучения\n * @param {string} yearDateStart\n * @param {string} yearDateEnd\n * @param {number} yearDaysCount\n * @param {number} yearWeeksCount\n * @return IAppTableRow\n */\nconst getPeriodFooterRow = (\n yearDateStart?: string,\n yearDateEnd?: string,\n yearDaysCount?: number,\n yearWeeksCount?: number,\n): IAppTableRow => {\n return [\n { title: 'Весь учебный год', isFill: true, isBoldTitle: true },\n { title: yearDateStart ? formatJSToTableDate(yearDateStart) : '-', isFill: true, isBoldTitle: true },\n { title: yearDateEnd ? formatJSToTableDate(yearDateEnd) : '-', isFill: true, isBoldTitle: true },\n { title: yearDaysCount ?? '-', isFill: true, isBoldTitle: true },\n { title: yearWeeksCount ?? '-', isFill: true, isBoldTitle: true },\n ];\n};\n\n/**\n * @description получаем количество строку таблицы\n * в зависимости от типа уч периода\n * @param {periodsType} periodType\n * @return number\n */\nconst getRowCount = (periodType?: periodsType): number => {\n switch (periodType) {\n case 'year':\n return 1;\n case 'trimester':\n return 3;\n case 'quarter':\n return 4;\n default:\n return 2;\n }\n};\n\n/**\n * @description получаем заголовок строки\n * в зависимости от типа уч периода\n * @param {number} index\n * @param {periodsType} periodType\n * @param {string} title\n * @return string\n */\nconst getPeriodTitle = (index: number, periodType?: periodsType, title?: string): string => {\n if (title) {\n return title;\n }\n const number = index + 1;\n switch (periodType) {\n case 'year':\n return `${number} год`;\n case 'trimester':\n return `${number} триместр`;\n case 'quarter':\n return `${number} четверть`;\n default:\n return `${number} семестр`;\n }\n};\n\n/**\n * @description формируем строку для таблицы периодов обучения\n * @param {IPeriod} period\n * @param {number} index\n * @param {periodsType} periodType\n * @return IAppTableRow\n */\nconst getPeriodRow = (period: IPeriod, index: number, periodType?: periodsType): IAppTableRow => {\n const { title, dateEnd, dateStart, daysCount, weeksCount, id } = period;\n const periodTitle = getPeriodTitle(index, periodType, title);\n return [\n { title: periodTitle, id: id },\n { isActive: true, title: dateStart ? formatJSToTableDate(dateStart) : undefined, type: 'date' },\n { isActive: true, title: dateEnd ? formatJSToTableDate(dateEnd) : undefined, type: 'date' },\n { title: daysCount ?? '-' },\n { isActive: true, title: weeksCount ?? '-', type: 'inputNumber', isInput: true },\n ];\n};\n\n/**\n * @description формируем ОБНОВЛЕННЫЕ данные о периодах для отправки на бэк\n * @param {IAppTableItems} table\n * @return Array\n */\nconst getUpdatePeriodParams = (table?: IAppTableItems): Array | undefined => {\n const slicedTable = table?.slice(1, -1);\n const params = slicedTable?.map((item) => {\n const { id, title } = item[0];\n const { title: dateStart } = item[1];\n const { title: dateEnd } = item[2];\n const { title: daysCount } = item[3];\n const { title: weeksCount } = item[4];\n if (id) {\n const formatDateStart = dateStart ? getTableDateToParamsDate(dateStart?.toString()) : undefined;\n const formatDateEnd = dateEnd ? getTableDateToParamsDate(dateEnd?.toString()) : undefined;\n return (\n deleteEmptyParams({\n id: Number(id),\n title: title?.toString(),\n dateStart: formatDateStart,\n dateEnd: formatDateEnd,\n daysCount: Number(daysCount),\n weeksCount: Number(weeksCount),\n }) ?? ({} as IUpdateCalendarPlanPeriodParams)\n );\n }\n return {} as IUpdateCalendarPlanPeriodParams;\n });\n const filteredParams = params?.filter((item) => Object.keys(item).length !== 0);\n return filteredParams?.length == 0 ? undefined : filteredParams;\n};\n\nconst getTotalCountOfDaysAndWeek = (\n dayjsDates: Array,\n daysCountList: Array,\n weeksCountList: Array,\n) => {\n const minDate = dayjs.min(dayjsDates)?.format('DD.MM.YYYY');\n const maxDate = dayjs.max(dayjsDates)?.format('DD.MM.YYYY');\n let daysCount = 0;\n let weeksCount = 0;\n if (daysCountList.length > 0) {\n daysCount = daysCountList?.reduce((previousValue, currentValue) => {\n return previousValue + currentValue;\n });\n }\n if (weeksCountList.length > 0) {\n weeksCount = weeksCountList?.reduce((previousValue, currentValue) => {\n return previousValue + currentValue;\n });\n }\n\n return { minDate, maxDate, daysCount, weeksCount };\n};\n\n/**\n * @description ищем начальную и конечную дату\n * и общее количество учебных дней и недель\n * @param {IAppTableItems} table\n * @return IAppTableItems\n */\nconst updateStartEndDateAndCountOfDayWeeksPeriodTable = (table: IAppTableItems): IAppTableItems => {\n if (table?.length) {\n const lastRowIndex = table.length - 1;\n const lastRow = table[lastRowIndex];\n const slicedTable = table?.slice(1, -1) ?? [];\n const dates = slicedTable?.map((item) => [\n item?.[1]?.title?.toString() ?? '',\n item?.[2]?.title?.toString() ?? '',\n ]);\n const datesList = ([] as string[])?.concat(...dates)?.filter((item) => item !== '');\n const dayjsDates = datesList?.map((item) => formatTableDateToDayjs(item));\n const daysCountList = slicedTable?.map((item) => Number(item?.[3]?.title) ?? 0);\n const weeksCountList = slicedTable?.map((item) => Number(item?.[4]?.title) ?? 0);\n\n const { minDate, maxDate, daysCount, weeksCount } = getTotalCountOfDaysAndWeek(\n dayjsDates,\n daysCountList,\n weeksCountList,\n );\n\n const newLastRow = [\n lastRow[0],\n { ...lastRow[1], title: minDate },\n { ...lastRow[2], title: maxDate },\n { ...lastRow[3], title: daysCount },\n { ...lastRow[4], title: weeksCount },\n ];\n return [...table.slice(0, -1), newLastRow];\n }\n return table;\n};\n\n/**\n * @description считаем количество дней и недель\n * @param periodTable\n * @param holidayTable\n * @param additionalDates\n * @param eduWeek\n */\nconst updateCountOfDayWeeksPeriodTable = (\n periodTable: IAppTableItems,\n holidayTable: IAppTableItems,\n additionalDates: IAdditionalDaysDayJs,\n eduWeek?: eduWeeksType,\n): IAppTableItems => {\n const { holidays, additionalWorkingDays } = additionalDates;\n const periodTableLength = periodTable?.length;\n if (periodTableLength) {\n const slicedPeriodTable = periodTable.slice(1, -1) ?? [];\n const slicedHolidayTable = holidayTable.slice(1, -1) ?? [];\n const slicedHolidayTableLength = slicedHolidayTable.length;\n let holidayPeriodsDates = [] as Array;\n\n const arrayDayJsToTable = (array: Array) => {\n return array?.map((item) => formatDayjsToTableDate(item));\n };\n\n const arrayTableToDayJs = (array: Array) => {\n return array?.map((item) => formatTableDateToDayjs(item));\n };\n\n // собираем все выходные дни которые указаны в каникулах\n for (let i = 0; i < slicedHolidayTableLength; i++) {\n const startHolidayTable = slicedHolidayTable?.[i]?.[1]?.title?.toString();\n const endHolidayTable = slicedHolidayTable?.[i]?.[2]?.title?.toString();\n if (startHolidayTable && endHolidayTable) {\n holidayPeriodsDates = [...holidayPeriodsDates, ...getDaysJsArray(startHolidayTable, endHolidayTable)];\n }\n }\n\n //добавляем к каникулам доп не учебные дни и форматим их в строки\n const holidayPeriodsParamsDates = [\n ...arrayDayJsToTable(Array.from(holidayPeriodsDates)),\n ...arrayDayJsToTable(holidays),\n ];\n\n // доп учебные дни\n const additionalWorkingDaysParamsDate = arrayDayJsToTable(additionalWorkingDays);\n\n const holidayPeriodsParamsDatesLength = holidayPeriodsParamsDates?.length;\n\n const table = slicedPeriodTable.map((item) => {\n let newDaysCount = item?.[3]?.title;\n let newWeekCount = item?.[4]?.title;\n const startPeriodTable = item?.[1]?.title?.toString();\n const endPeriodTable = item?.[2]?.title?.toString();\n if (startPeriodTable && endPeriodTable) {\n // превращаем учебный период в Set из строк дат, что бы потом можно было сравнить и удалить лишнее\n const periodDayJs = new Set(arrayDayJsToTable(getDaysJsArray(startPeriodTable, endPeriodTable)));\n\n // удаляем из периода выходные\n for (let j = 0; j < holidayPeriodsParamsDatesLength; j++) {\n periodDayJs.delete(holidayPeriodsParamsDates[j]);\n }\n\n // добавляем доп учебные дни\n const additionalWorkingDaysParamsDateLength = additionalWorkingDaysParamsDate?.length;\n for (let k = 0; k < additionalWorkingDaysParamsDateLength; k++) {\n periodDayJs.add(additionalWorkingDaysParamsDate[k]);\n }\n\n // форматим даты в Dayjs\n const newPeriodDayJs = arrayTableToDayJs(Array.from(periodDayJs));\n\n const { dayCount, weekCount } = getCountOfDaysAndWeek(newPeriodDayJs, eduWeek);\n\n if (newDaysCount !== dayCount) {\n newDaysCount = dayCount;\n newWeekCount = weekCount;\n }\n }\n return [...item.slice(0, 3), { ...item?.[3], title: newDaysCount }, { ...item?.[4], title: newWeekCount }];\n });\n return [...periodTable.slice(0, 1), ...table, ...periodTable.slice(-1)];\n }\n return periodTable;\n};\n\n/**\n * @description формируем таблицу периодов обучения\n * @param {Array} periods\n * @param {periodsType} periodType\n * @param {number} yearDaysCount\n * @param {number} yearWeeksCount\n * @param {boolean} isCreate\n * @return {IAppTableItems}\n */\nconst getPeriodTable = (\n periods?: Array,\n periodType?: periodsType,\n yearDaysCount?: number,\n yearWeeksCount?: number,\n isCreate?: boolean,\n): IAppTableItems => {\n const periodList = periods ?? Array(getRowCount(periodType)).fill({});\n const periodsLength = periods?.length ?? 0;\n const yearDateStart = periods?.[0]?.dateStart;\n const yearDateEnd = periods?.[periodsLength - 1]?.dateEnd;\n const rows = isCreate ? [] : periodList.map((item, index) => getPeriodRow(item, index, periodType));\n const footerRow = getPeriodFooterRow(yearDateStart, yearDateEnd, yearDaysCount, yearWeeksCount);\n return [periodHeaderRow, ...rows, footerRow];\n};\n\nexport {\n getPeriodTable,\n getUpdatePeriodParams,\n updateCountOfDayWeeksPeriodTable,\n updateStartEndDateAndCountOfDayWeeksPeriodTable,\n};\n","import { AcademicYear } from 'api/services/academicYear';\nimport { IAppRadioData } from 'src-new/ui/toggle/app-radio/AppRadio.types';\n\nconst formatAcademicYears = (years: Array): Array => {\n const formatYears = years?.map((item) => {\n return {\n label: item.title,\n value: item.id,\n };\n });\n return formatYears ?? [];\n};\n\nexport { formatAcademicYears };\n","import DOMPurify, { Config } from 'dompurify';\n\nexport const getSafetyHtml = (html: string, options?: Config): string => {\n if (options) {\n return `${DOMPurify.sanitize(html, options)}`;\n }\n return DOMPurify.sanitize(html, { ADD_ATTR: ['target'] });\n};\n","export const paramsConfig = {\n modals: {\n modals: [],\n },\n};\n","import parseQueryParamsToObject from './parseQueryParamsToObject';\nexport default parseQueryParamsToObject;\n","import { paramsConfig } from './parseQueryParamsToObject.config';\nimport { IParseQueryParamsToObject, TParamsTypes } from './parseQueryParamsToObject.types';\n/**\n * @description - из location.search готовит объект с данными, если в URL будет JSON - автоматически распарсит\n * @param search - query строка\n * @param paramsType - параметры которые нужно обработать\n */\nconst parseQueryParamsToObject = (search: string, paramsType: TParamsTypes): IParseQueryParamsToObject => {\n const paramArr = search.split('&') || [];\n const params = paramsConfig[paramsType];\n paramArr?.forEach((param) => {\n const [key, val] = param.replace('?', '').split('=');\n try {\n //@ts-ignore\n params[key] = JSON?.parse(decodeURIComponent(val.replace(/\\+/g, '%20')));\n } catch (e) {\n //@ts-ignore\n params[key] = decodeURIComponent(val);\n }\n });\n return params;\n};\n\nexport default parseQueryParamsToObject;\n","import { api, getApiRequest, patchApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport interface Topic {\n id: number;\n title: string;\n order: number;\n questionsQuantity: number;\n questionsQuantityUnpublished: number;\n questionsQuantityRevision: number;\n}\n\nexport interface Block {\n id: number;\n title: string;\n order: number;\n section?: number | undefined;\n topics?: Topic[];\n}\n\nexport interface Section {\n id: number;\n title: string;\n order: number;\n blocks?: Block[];\n}\n\nexport interface Parallel {\n id: number;\n grade: number;\n sections?: Section[];\n}\n\nexport interface CodifierResponseData {\n id: number;\n title: string;\n parallels?: Parallel[];\n}\n\nexport const fetchCodifierData = (): Promise => {\n return api\n .get>(`/codifier/tree/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PostParallelParams {\n grade: number;\n subject: number;\n}\ninterface PostParallelResponse {\n id: number;\n grade: number;\n subject: number;\n}\n\nexport const postCodifierParallel = (params: PostParallelParams): Promise => {\n return api\n .post>(`/codifier/parallel/create/`, {\n grade: params.grade,\n subject: params.subject,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteCodifierParallel = (parallelId: number): Promise => {\n return api\n .delete>(`/codifier/parallel/delete/${parallelId}/`)\n .then(() => parallelId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PostSectionParams {\n title: string;\n parallel: number;\n}\n\ninterface PostSectionResponse {\n id: number;\n order: number;\n title: string;\n parallel: number;\n}\n\nexport const postCodifierSection = (params: PostSectionParams): Promise => {\n return api\n .post>(`/codifier/section/create/`, {\n title: params.title,\n parallel: params.parallel,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteCodifierSection = (sectionId: number): Promise => {\n return api\n .delete>(`/codifier/section/delete/${sectionId}/`)\n .then(() => sectionId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\ninterface PostBlockParams {\n title: string;\n section: number;\n}\n\ninterface PostBlockResponse {\n id: number;\n title: string;\n section: number;\n order: number;\n}\n\nexport const postCodifierBlock = (params: PostBlockParams): Promise => {\n return api\n .post>(`/codifier/block/create/`, {\n title: params.title,\n section: params.section,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteCodifierBlock = (blockId: number): Promise => {\n return api\n .delete>(`/codifier/block/delete/${blockId}/`)\n .then(() => blockId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\ninterface PostTopicParams {\n title: string;\n block: number;\n order: number;\n}\n\ninterface PostTopicResponse {\n id: number;\n title: string;\n order: number;\n section: number;\n block?: number;\n}\n\nexport const postCodifierTopic = (params: PostTopicParams): Promise => {\n return api\n .post>(`/codifier/topic/create/`, {\n title: params.title,\n block: params.block,\n order: params.order,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteCodifierTopic = (topicId: number): Promise => {\n return api\n .delete>(`/codifier/topic/delete/${topicId}/`)\n .then(() => topicId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface Skill {\n id: number;\n title: string;\n codifier?: string;\n}\n\nexport interface MetaSubjects {\n id: number;\n title: string;\n skills?: Skill[];\n}\n\nexport interface ParallelSkills {\n id: number;\n grade: number;\n metasubjects?: MetaSubjects[];\n}\n\nexport interface CodifierSkillsResponseData {\n id: number;\n title: string;\n parallels?: ParallelSkills[];\n}\n\nexport const fetchCodifierSkillsData = (): Promise => {\n return api\n .get>(`/codifier/tree/skills/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\ninterface PostSkillParams {\n title: string;\n metasubject: number;\n codifier?: string;\n}\n\ninterface PostSkillResponse {\n id: number;\n title: string;\n order: number;\n metasubject: number;\n codifier?: string;\n}\n\nexport const postCodifierSkill = (params: PostSkillParams): Promise => {\n return api\n .post>(`/codifier/skill/create/`, {\n title: params.title,\n metasubject: params.metasubject,\n codifier: params.codifier,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError<{ error: string }>) => {\n throw err?.response?.data.error;\n });\n};\n\nexport const deleteCodifierSkill = (skillId: number): Promise => {\n return api\n .delete>(`/codifier/skill/delete/${skillId}/`)\n .then(() => skillId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\ninterface PostMetasubjectParams {\n title: string;\n parallel: number;\n}\n\ninterface PostMetasubjectResponse {\n id: number;\n title: string;\n order: number;\n parallel: number;\n}\n\nexport const postCodifierMetasubject = (params: PostMetasubjectParams): Promise => {\n return api\n .post>(`/codifier/metasubject/create/`, {\n title: params.title,\n parallel: params.parallel,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteCodifierMetasubject = (metasubjectId: number): Promise => {\n return api\n .delete>(`/codifier/metasubject/delete/${metasubjectId}/`)\n .then(() => metasubjectId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierParallel = (value: { id: number; grade: number }): Promise => {\n return api\n .patch, AxiosResponse>(\n `/codifier/parallel/patial-update/${value.id}/`,\n { grade: value.grade },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierSection = (value: {\n id: number;\n title?: string;\n parallel?: number;\n}): Promise => {\n return api\n .patch, AxiosResponse>(\n `/codifier/section/partial-update/${value.id}/`,\n { title: value.title, parallel: value.parallel },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierBlock = (value: {\n id: number;\n title?: string;\n section?: number;\n}): Promise => {\n return api\n .patch, AxiosResponse>(\n `/codifier/block/partial-update/${value.id}/`,\n { title: value.title, section: value.section },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierTopic = (value: {\n id: number;\n title?: string;\n block: number;\n}): Promise => {\n return api\n .patch<\n Promise<{ id: number; title: string; section: number; block: number }>,\n AxiosResponse\n >(`/codifier/topic/partial-update/${value.id}/`, {\n title: value.title,\n block: value.block,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierMetasubject = (value: { id: number; title: string }): Promise => {\n return api\n .patch, AxiosResponse>(\n `/codifier/metasubject/partial-update/${value.id}/`,\n { title: value.title },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchCodifierSkill = (value: {\n id: number;\n title: string;\n codifier?: string;\n}): Promise => {\n return api\n .patch, AxiosResponse>(\n `/codifier/skill/partial-update/${value.id}/`,\n { title: value.title, codifier: value.codifier },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface CodifierSubject {\n id: number;\n title: string;\n shortName: string;\n}\n\nexport interface Ordering {\n ordering: number[];\n}\n\nexport const getCodifierSubjects = (): Promise => {\n return getApiRequest('/codifier/subject/');\n};\n\nexport const getCodifierSubjectData = (subjectId: number): Promise => {\n return getApiRequest(`/codifier/tree/?subject=${subjectId}`);\n};\n\nexport const getCodifierDataByTopics = (topics: number[]): Promise => {\n return getApiRequest(`/codifier/tree/?topics=${topics.join(',')}`);\n};\n\nexport const patchSectionOrdering = (value: { id: string; ordering: number[] }): Promise => {\n return patchApiRequest(`/codifier/parallel/${value.id}/section-ordering/`, { ordering: value.ordering });\n};\n\nexport const patchBlockOrdering = (value: { id: string; ordering: number[] }): Promise => {\n return patchApiRequest(`/codifier/section/${value.id}/block-ordering/`, { ordering: value.ordering });\n};\n\nexport const patchThemeOrdering = (value: { id: string; ordering: number[] }): Promise => {\n return patchApiRequest(`/codifier/block/${value.id}/topic-ordering/`, { ordering: value.ordering });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n deleteCodifierBlock,\n deleteCodifierMetasubject,\n deleteCodifierParallel,\n deleteCodifierSection,\n deleteCodifierSkill,\n deleteCodifierTopic,\n fetchCodifierData,\n fetchCodifierSkillsData,\n getCodifierDataByTopics,\n getCodifierSubjectData,\n getCodifierSubjects,\n patchBlockOrdering,\n patchCodifierBlock,\n patchCodifierMetasubject,\n patchCodifierParallel,\n patchCodifierSection,\n patchCodifierSkill,\n patchCodifierTopic,\n patchSectionOrdering,\n patchThemeOrdering,\n postCodifierBlock,\n postCodifierMetasubject,\n postCodifierParallel,\n postCodifierSection,\n postCodifierSkill,\n postCodifierTopic,\n} from 'api/services/codifier';\n\nexport const fetchCodifierDataAction = createAsyncThunk('codifier/fetchCodifierData', async () => {\n return await fetchCodifierData();\n});\n\nexport const postCodifierParallelAction = createAsyncThunk(\n 'codifier/addParallel',\n async (params: { grade: number; subject: number }) => {\n return await postCodifierParallel(params);\n },\n);\n\nexport const deleteCodifierParallelAction = createAsyncThunk('codifier/deleteParallel', async (id: number) => {\n return await deleteCodifierParallel(id);\n});\n\nexport const postCodifierSectionAction = createAsyncThunk(\n 'codifier/addSectionWithOrder',\n async (params: { title: string; parallel: number; order: number; ordering?: number[] }) => {\n return await postCodifierSection(params).then((newSection) => {\n const newOrdering = params.ordering\n ? [...params.ordering.slice(0, params.order), newSection.id, ...params.ordering.slice(params.order)]\n : [params.order];\n\n return Promise.all([\n patchSectionOrdering({ id: String(params.parallel), ordering: newOrdering }),\n params.parallel,\n params.title,\n ]);\n });\n },\n);\n\nexport const deleteCodifierSectionAction = createAsyncThunk(\n 'codifier/deleteSection',\n async (params: { id: number; ordering?: number[]; parallelId: number }) => {\n const { id, ordering, parallelId } = params;\n const filteredOrdering = ordering?.filter((el) => el !== id);\n\n return await deleteCodifierSection(id).then(() => {\n if (filteredOrdering) {\n void patchSectionOrdering({ id: String(parallelId), ordering: filteredOrdering });\n return id;\n }\n });\n },\n);\n\nexport const postCodifierBlockAction = createAsyncThunk(\n 'codifier/addBlock',\n async (params: { title: string; section: number; order: number; ordering?: number[]; parallel: number }) => {\n return await postCodifierBlock(params).then((newBlock) => {\n const newOrdering = params.ordering\n ? [...params.ordering.slice(0, params.order), newBlock.id, ...params.ordering.slice(params.order)]\n : [params.order];\n return Promise.all([\n patchBlockOrdering({ id: String(params.section), ordering: newOrdering }),\n params.parallel,\n params.title,\n params.section,\n ]);\n });\n },\n);\n\nexport const deleteCodifierBlockAction = createAsyncThunk(\n 'codifier/deleteBlock',\n async (params: { id: number; ordering?: number[]; sectionId: number }) => {\n const { id, ordering, sectionId } = params;\n const filteredOrdering = ordering?.filter((el) => el !== id);\n\n return await deleteCodifierBlock(id).then(() => {\n if (filteredOrdering) {\n void patchBlockOrdering({ id: String(sectionId), ordering: filteredOrdering });\n return id;\n }\n });\n },\n);\n\nexport const postCodifierTopicAction = createAsyncThunk(\n 'codifier/addCodifierTopic',\n async (params: {\n title: string;\n block: number;\n section: number;\n order: number;\n ordering?: number[];\n parallel: number;\n }) => {\n return await postCodifierTopic(params).then((newTopic) => {\n const newOrdering =\n params.ordering && params.order\n ? [\n ...params.ordering.slice(0, params.order - 1),\n newTopic.id,\n ...params.ordering.slice(params.order - 1),\n ]\n : [params.order];\n\n return Promise.all([patchThemeOrdering({ id: String(params.block), ordering: newOrdering })]);\n });\n },\n);\n\nexport const deleteCodifierTopicAction = createAsyncThunk(\n 'codifier/deleteCodifierTopic',\n async (params: { id: number; ordering?: number[]; blockId: number }) => {\n const { id, ordering, blockId } = params;\n const filteredOrdering = ordering?.filter((el) => el !== id);\n\n return await deleteCodifierTopic(id).then(() => {\n if (filteredOrdering && blockId) {\n void patchThemeOrdering({ id: String(blockId), ordering: filteredOrdering });\n\n return { id, blockId };\n }\n return { id };\n });\n },\n);\n\nexport const fetchCodifierSkillsDataAction = createAsyncThunk('codifier/fetchCodifierSkills', async () => {\n return await fetchCodifierSkillsData();\n});\n\n// Skills\nexport const postCodifierSkillAction = createAsyncThunk(\n 'codifier/addSkill',\n async (params: { title: string; metasubject: number }) => {\n return await postCodifierSkill(params);\n },\n);\n\nexport const deleteCodifierSkillAction = createAsyncThunk('codifier/deleteSkill', async (id: number) => {\n return await deleteCodifierSkill(id);\n});\n\nexport const postCodifierMetasubjectAction = createAsyncThunk(\n 'codifier/addMetasubject',\n async (params: { title: string; parallel: number }) => {\n return await postCodifierMetasubject(params);\n },\n);\n\nexport const deleteCodifierMetasubjectAction = createAsyncThunk('codifier/deleteMetasubject', async (id: number) => {\n return await deleteCodifierMetasubject(id);\n});\n\nexport const patchCodifierParallelAction = createAsyncThunk(\n 'codifier/patchParallel',\n async (value: { id: number; grade: number }) => {\n return await patchCodifierParallel(value);\n },\n);\n\nexport const patchCodifierSectionAction = createAsyncThunk(\n 'codifier/patchSection',\n async (value: {\n id: number;\n order?: number;\n ordering?: number[];\n parallelOrdering?: number[];\n title?: string;\n parallel?: number;\n subject?: number;\n oldParallel?: number;\n }) => {\n const { id, title, parallel, parallelOrdering, oldParallel, order, ordering } = value;\n const filteredOrdering = ordering?.filter((el) => el !== id);\n let newOrderingInCurrentSection: number[] = [];\n\n if (parallelOrdering && order !== undefined) {\n //при перемещении\n newOrderingInCurrentSection = [...parallelOrdering.slice(0, order), id, ...parallelOrdering.slice(order)];\n } else if (filteredOrdering && order) {\n //при редактировании\n if (order === 1) {\n newOrderingInCurrentSection = [id, ...filteredOrdering];\n } else {\n newOrderingInCurrentSection = [\n ...filteredOrdering.slice(0, order - 1),\n id,\n ...filteredOrdering.slice(order),\n ];\n }\n }\n\n return await Promise.all([\n patchCodifierSection(value).then(() => {\n if (filteredOrdering && oldParallel) {\n void patchSectionOrdering({ id: String(oldParallel), ordering: filteredOrdering });\n }\n return patchSectionOrdering({ id: String(parallel), ordering: newOrderingInCurrentSection });\n }),\n String(title),\n ]);\n },\n);\n\nexport const patchCodifierBlockAction = createAsyncThunk(\n 'codifier/patchBlock',\n async (value: {\n id: number;\n title?: string;\n section?: number;\n sectionOrdering?: number[];\n parallel?: number;\n subject?: number;\n oldSection?: number;\n ordering?: number[];\n order?: number;\n }) => {\n const { id, title, section, sectionOrdering, oldSection, order, ordering } = value;\n const filteredOrdering = ordering?.filter((el) => el !== id);\n let newOrderingInCurrentSection: number[] = [];\n\n if (sectionOrdering && order !== undefined) {\n //при перемещении\n newOrderingInCurrentSection = [...sectionOrdering.slice(0, order), id, ...sectionOrdering.slice(order)];\n } else if (filteredOrdering && order) {\n //при редактировании\n if (order === 1) {\n newOrderingInCurrentSection = [id, ...filteredOrdering];\n } else {\n newOrderingInCurrentSection = [\n ...filteredOrdering.slice(0, order - 1),\n id,\n ...filteredOrdering.slice(order),\n ];\n }\n }\n\n return await Promise.all([\n patchCodifierBlock(value).then(() => {\n if (filteredOrdering && oldSection) {\n void patchBlockOrdering({ id: String(oldSection), ordering: filteredOrdering });\n }\n return patchBlockOrdering({ id: String(section), ordering: newOrderingInCurrentSection });\n }),\n String(title),\n ]);\n },\n);\n\nexport const patchCodifierTopicAction = createAsyncThunk(\n 'codifier/patchCodifierTopic',\n async (value: {\n id: number;\n title?: string;\n section?: number;\n block: number;\n subject?: number;\n oldSection?: number;\n oldBlock?: number;\n parallel?: number;\n newPlaceOrdering?: number[];\n ordering?: number[];\n order?: number;\n }) => {\n const { id, title, ordering, order, block, oldBlock, oldSection, newPlaceOrdering } = value;\n\n const filteredOrdering = ordering?.filter((el) => el !== value.id);\n let newOrderingInCurrentSection: number[] = [];\n\n if (newPlaceOrdering && order !== undefined) {\n //при перемещении\n newOrderingInCurrentSection = [\n ...newPlaceOrdering.slice(0, order - 1),\n id,\n ...newPlaceOrdering.slice(order - 1),\n ];\n } else if (!oldBlock && !oldSection && order && filteredOrdering) {\n //при редактировании\n if (order === 1) {\n newOrderingInCurrentSection = [id, ...filteredOrdering];\n } else {\n newOrderingInCurrentSection = [\n ...filteredOrdering.slice(0, order - 1),\n id,\n ...filteredOrdering.slice(order),\n ];\n }\n }\n\n return await Promise.all([\n patchCodifierTopic(value).then(() => {\n if (oldBlock && oldSection && filteredOrdering) {\n void patchThemeOrdering({ id: String(oldBlock), ordering: filteredOrdering });\n }\n return order && block\n ? patchThemeOrdering({ id: String(block), ordering: newOrderingInCurrentSection })\n : null;\n }),\n String(title),\n ]);\n },\n);\n\nexport const patchCodifierMetasubjectAction = createAsyncThunk(\n 'codifier/patchMetasubject',\n async (value: { id: number; title: string }) => {\n return await patchCodifierMetasubject(value);\n },\n);\n\nexport const patchCodifierSkillAction = createAsyncThunk(\n 'codifier/patchSkill',\n async (value: { id: number; title: string }) => {\n return await patchCodifierSkill(value);\n },\n);\n\nexport const getCodifierSubjectsAction = createAsyncThunk('codifier/getSubjects', () => getCodifierSubjects());\n\nexport const getSubjectsInCodifierAction = createAsyncThunk('codifier/getSubjectsInCodifier', () =>\n getCodifierSubjects(),\n);\n\nexport const getCodifierSubjectDataAction = createAsyncThunk('codifier/getSubjectData', (id: number) =>\n getCodifierSubjectData(id),\n);\n\nexport const getCodifierDataByTopicsAction = createAsyncThunk('codifier/getSubjectDataByTopics', (topics: number[]) =>\n getCodifierDataByTopics(topics),\n);\n","import React, { useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { useAppSelector } from 'store/store';\n\nimport { Loader } from 'components/Loader';\n\nimport './PageLoader.scss';\n\nconst CnPageLoader = cn('pageLoader');\n\nexport const PageLoader: React.FC<{ showLoading?: boolean; zIndex?: number }> = React.memo(\n ({ showLoading = true, zIndex }) => {\n const { isLoading } = useAppSelector((store) => store.loader);\n\n const [isShow, setIsShow] = useState(true);\n\n useEffect(() => {\n setIsShow(true);\n\n const setTimeoutId = setTimeout(() => {\n setIsShow(false);\n }, 1000);\n\n return () => {\n clearTimeout(setTimeoutId);\n };\n }, [isLoading, showLoading]);\n\n if ((isShow || isLoading) && showLoading) {\n return (\n
\n \n
\n );\n }\n\n return null;\n },\n);\n","import { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n createLessonTask,\n createLessonTaskQuestion,\n deleteLessonTaskQuestion,\n getAssignedTasks,\n getLessonDetails,\n getQuestionDetails,\n getQuestionsByQuery,\n getSubjectDataById,\n getSubjectsData,\n getTaskData,\n updateLessonTask,\n updateLessonTaskQuestion,\n} from 'api/services/lessonTask';\nimport { Status } from 'pages/QuestionBankPage/types';\nimport { getGroupedTasks, getMappedQuestions, normalizeQuestionsOrder } from 'src-new/components/lesson-task';\nimport { getUpdatedQuestions } from 'src-new/components/lesson-task/utils';\nimport {\n TAssignedQuestions,\n TCreateTaskProps,\n TQetQuestionsBySearchProps,\n TResponseQuestion,\n TSelectedBlock,\n TSetQuestionsStateProps,\n TUpdateTaskProps,\n} from 'types/lessonTask';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nexport const getQuestionDetailsAction = createAsyncThunk(\n 'lessonTask/getQuestionDetails',\n async (questionId: number) => await getQuestionDetails(questionId),\n);\nexport const getLessonDataAction = createAsyncThunk(\n 'lessonTask/getLessonData',\n async (lessonId: number) => await getLessonDetails(lessonId),\n);\nexport const getTaskDataAction = createAsyncThunk('lessonTask/getTaskData', async (id: number) => {\n return await getTaskData(id);\n});\n\nexport const updateLessonTaskAction = createAsyncThunk(\n 'lessonTask/updateLessonTask',\n async (params: TUpdateTaskProps) => {\n const { taskData, assignedQuestions, assignedTasksListInitial } = params;\n\n return await updateLessonTask(taskData).then(async (assignment) => {\n const mappedInitialList = assignedTasksListInitial ? getMappedQuestions(assignedTasksListInitial) : [];\n const mappedHandlingQuestionsList = assignedQuestions\n ? normalizeQuestionsOrder(getMappedQuestions(assignedQuestions))\n : [];\n\n const updatedQuestions = getUpdatedQuestions(mappedHandlingQuestionsList, mappedInitialList);\n const createdQuestions = mappedHandlingQuestionsList.filter(\n ({ id }) => !mappedInitialList.find((item) => item.id === id),\n );\n const deletedQuestionsIds = mappedInitialList\n .map((old) => {\n const sameItemInNew = mappedHandlingQuestionsList.find(\n (item) => item.id === old.id && item.questionNumber === old.questionNumber,\n );\n const sameItemInUpdate = updatedQuestions.find(({ id, questionNumber }) => id === old.id);\n const isDeleted = !sameItemInNew && !sameItemInUpdate;\n\n if (isDeleted) {\n return old.id;\n }\n })\n .filter((id) => !!id);\n\n const updatedAssignment = updatedQuestions.length\n ? //@ts-ignore\n await updateLessonTaskQuestion(updatedQuestions)\n : undefined;\n const deletedAssignment = deletedQuestionsIds.length\n ? //@ts-ignore\n await deleteLessonTaskQuestion(deletedQuestionsIds)\n : undefined;\n const createdAssignment = createdQuestions.length\n ? await createLessonTaskQuestion(createdQuestions)\n : undefined;\n\n return {\n assignment,\n updatedAssignment: isEmptyList(updatedAssignment) ? undefined : updatedAssignment,\n deletedAssignment,\n createdAssignment,\n };\n });\n },\n);\nexport const createLessonTaskAction = createAsyncThunk(\n 'lessonTask/createLessonTask',\n async (params: TCreateTaskProps) => {\n const { taskData, assignedQuestions } = params;\n\n return await createLessonTask(taskData).then(async (assignment) => {\n const mappedHandlingQuestionsList = getMappedQuestions(assignedQuestions);\n\n const createdQuestions = mappedHandlingQuestionsList.map((item) => {\n return { ...item, assignment: assignment.id };\n });\n\n let createdAssignment = undefined;\n try {\n createdAssignment = createdQuestions.length\n ? await createLessonTaskQuestion(normalizeQuestionsOrder(createdQuestions))\n : undefined;\n\n return {\n assignment,\n createdAssignment,\n };\n } catch (e) {\n return {\n assignment,\n err: e,\n };\n }\n });\n },\n);\n\nexport const getAssignedTasksAction = createAsyncThunk('lessonTask/getAssignedTasks', async (id?: number) => {\n //получаем все вопросы в упражнении\n const taskData = await getAssignedTasks(id);\n\n // Получаем контент всех одиночных вопросов в упражнении\n const singleQuestionsIds = taskData.map((question) => question.filters.id ?? 0).filter((item) => !!item);\n const singleQuery = createUrlQuery({ include_ids: singleQuestionsIds });\n const allSingleQuestionsList = singleQuestionsIds.length ? await getQuestionsByQuery(singleQuery) : [];\n\n //Группируем вопросы по заданиям и добавляем сами вопросы\n return await getGroupedTasks(taskData, allSingleQuestionsList);\n});\n\nexport const getQuestionsBySearchAction = createAsyncThunk(\n 'lessonTask/getQuestionsBySearch',\n async (props: TQetQuestionsBySearchProps) => {\n const { data, assignment, questionNum, selectedBlock } = props;\n const { skills_or, skills_and, answers_type, topics, difficulty, text } = data;\n const url = createUrlQuery(data);\n const questionsList = await getQuestionsByQuery(url);\n // @ts-ignore\n const excludedQuestions: number[] = questionsList\n .map((item) => {\n if (selectedBlock?.block?.filters?.excludeIds?.includes(item.id)) {\n return item.id;\n }\n })\n .filter(Boolean);\n\n return {\n assignment,\n questionNum,\n filters: {\n text,\n difficulty,\n topics,\n skillsOr: skills_or,\n skillsAnd: skills_and,\n answersType: answers_type,\n excludeIds: excludedQuestions ?? [],\n },\n questionsList,\n selectedBlock,\n };\n },\n);\n\nexport const getSubjectsDataAction = createAsyncThunk('lessonTask/getSubjectsData', async () => {\n return await getSubjectsData();\n});\nexport const getSubjectDataByIdAction = createAsyncThunk('lessonTask/getSubjectDataById', async (id: number) => {\n return {\n data: await getSubjectDataById(id),\n id: id,\n };\n});\nexport const setOpenedQuestionIdAction = createAction('lessonTask/setOpenedQuestionId', (id: number) => {\n return {\n payload: id,\n };\n});\nexport const setQuestionsStateAction = createAction('lessonTask/setSearchBlock', (item: TSetQuestionsStateProps) => {\n return {\n payload: item,\n };\n});\nexport const setSelectedBlockAction = createAction('lessonTask/setSelectedBlock', (item?: TSelectedBlock) => {\n return {\n payload: item,\n };\n});\nexport const deleteBlockAction = createAction(\n 'lessonTask/deleteBlock',\n (params: { questionNum: number; selectedBlock: TSelectedBlock }) => {\n return {\n payload: params,\n };\n },\n);\nexport const deleteTaskQuestionAction = createAction('lessonTask/deleteTaskQuestion', (questionsNum: number) => {\n return {\n payload: questionsNum,\n };\n});\nexport const createEmptyTaskQuestionAction = createAction(\n 'lessonTask/createEmptyTaskQuestion',\n (params: { questionsNum: number; saveIntoLastVersion?: boolean }) => {\n return {\n payload: params,\n };\n },\n);\nexport const addCreatedQuestionAction = createAction(\n 'lessonTask/addCreatedQuestion',\n (props: { question: TResponseQuestion; questionNum: number; assignment?: number }) => {\n return {\n payload: props,\n };\n },\n);\n","import { getApiRequest, patchApiRequest, postApiRequest } from 'api';\nimport { TSubjectLesson, TSubjectsTopic, TTeacherProfile } from 'src-new/components/new-subjects';\nimport {\n TCourseGroup,\n TGetCourseGroupsLessonsProps,\n TGetCourseGroupsLessonsResponse,\n TGetCourseTreeParams,\n TGetCourseTreePayload,\n TGetLessonsStatisticPayload,\n TGetLessonsTreeParams,\n TGetStudentsListParams,\n TGetStudentsListResponse,\n TGetStudentsProgressListProps,\n TGetStudentsProgressListResponse,\n TGetTopicsTreeParams,\n} from 'types/newSubjectsTypes';\n\nexport const getLessonsStatistic = (courseId: number): Promise => {\n return getApiRequest(`/course-groups/${courseId}/lessons-statistics/`);\n};\n\nexport const getCourseTree = (params?: TGetCourseTreeParams): Promise => {\n const { studentGroup, role = 'student' } = params ?? {};\n const payload = studentGroup ? { studentGroup } : undefined;\n\n return postApiRequest(`/${role}/courses/`, payload);\n};\n\nexport const getTopicsBySelectedCourse = (params: TGetTopicsTreeParams): Promise => {\n const { courseGroup, role = 'student' } = params ?? {};\n const payload = { courseGroup };\n\n return postApiRequest(`/${role}/topics/`, payload);\n};\n\nexport const getLessonsBySelectedTopic = (params: TGetLessonsTreeParams): Promise => {\n const { courseGroup, topic, role = 'student' } = params ?? {};\n const payload = { courseGroup, topic };\n\n return postApiRequest(`/${role}/lessons/`, payload);\n};\n\nexport const getTeacherProfile = (id: number): Promise => {\n return getApiRequest(`/staff-profile/${id}/`);\n};\nexport const getStudentsList = (params: TGetStudentsListParams): Promise => {\n const { courseGroup, currentPage = 1, limit = 10 } = params;\n return postApiRequest('/students/', { courseGroup, currentPage, limit });\n};\nexport const setLearningMaterialViewed = (params: { exercises: number[] }): Promise => {\n return patchApiRequest(`/learning-material/set-viewed/`, params);\n};\nexport const getStudentsProgressList = (\n params: TGetStudentsProgressListProps,\n): Promise => {\n return postApiRequest('/teacher/students-progress/', params);\n};\nexport const getCourseGroupsLessons = (\n params: TGetCourseGroupsLessonsProps,\n): Promise => {\n const { courseGroup, lessonType = 'reserve', currentPage = 1, limit = 10 } = params;\n\n return postApiRequest('/course-groups/lessons/', { courseGroup, lessonType, currentPage, limit });\n};\n","import { isListExist } from '@frontend-modules/frontend-utils';\nimport { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { getLessonDetails } from 'api/services/lesson';\nimport { handleLessonSchedule } from 'api/services/lessonSchedule';\nimport * as NewSubjectService from 'api/services/newSubjects';\nimport { TARIFF_CURIOUS_TITLE } from 'App/constants';\nimport { TTeacherProfile } from 'src-new/components/new-subjects';\nimport { THandleLessonSchedules } from 'types/lessonSchedules';\nimport {\n TCourseGroup,\n TGetCourseGroupsLessonsProps,\n TGetCourseTreeParams,\n TGetCourseTreePayload,\n TGetLessonsTreeParams,\n TGetStudentsListParams,\n TGetStudentsProgressListProps,\n THandleLessonScheduleActionProps,\n TLocalStorageItem,\n TSelectedCourse,\n} from 'types/newSubjectsTypes';\n\nexport const resetTeacherInfoAction = createAction('newSubjects/resetTeacherInfo', () => {\n return { payload: {} as TTeacherProfile };\n});\nexport const setSelectedCourseAction = createAction('newSubjects/setSelectedCourseId', (course: TSelectedCourse) => {\n return { payload: { ...course } };\n});\nexport const setSelectedTopicIdAction = createAction('newSubjects/setSelectedTopicId', (id: number) => {\n return {\n payload: id,\n };\n});\nexport const setSelectedLessonIdAction = createAction('newSubjects/setSelectedLessonId', (id: number) => {\n return {\n payload: id,\n };\n});\n// Статистика уроков\nexport const getLessonsStatisticAction = createAsyncThunk(\n 'newSubjects/getLessonsStatistic',\n async (courseId: number) => {\n return await NewSubjectService.getLessonsStatistic(courseId);\n },\n);\n// Получение иерархии уроков\n/**\n * @description getStudentsTreeByURLAction - получаем все дерево по значениям параметров в юрле\n * Так же устанавливает в сторе выбранные параметры курса, и темы\n */\nexport const getStudentsTreeByURLAction = createAsyncThunk(\n 'newSubjects/getStudentsTreeByURL',\n async (params: TLocalStorageItem) => {\n const { course, topic, lesson } = params;\n let selectedCourse: TSelectedCourse = {} as TSelectedCourse;\n\n const courseTree = (await NewSubjectService.getCourseTree()) as TGetCourseTreePayload;\n\n // Если из информации есть только id урока, значит ссылка на урок КУРСА\n // В этом случае получаем id курса по уроку и пытаемся получить дерево по нему\n const hasOnlyLessonId = !!lesson && !course.id && !topic;\n const lessonData = hasOnlyLessonId ? await getLessonDetails(lesson) : undefined;\n const courseIdByLessonData = lessonData?.course.id;\n\n const commonCoursesList = courseTree.common?.map((item) => item.studentGroup.courseGroups).flat(1);\n const commonCourse = commonCoursesList.find((item) =>\n courseIdByLessonData ? item.course.id === courseIdByLessonData : item.id === course.id,\n );\n const choiceCourse = courseTree?.choice.find((item) =>\n courseIdByLessonData ? item.course.id === courseIdByLessonData : item.id === course.id,\n );\n const additionalCourse = courseTree?.additional.find((item) =>\n courseIdByLessonData ? item.course.id === courseIdByLessonData : item.id === course.id,\n );\n\n if (commonCourse) {\n selectedCourse = {\n id: commonCourse.id,\n courseId: commonCourse.course.id,\n title: commonCourse.course.title,\n type: 'common',\n isCurious: commonCourse.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: commonCourse?.title,\n recalculation: commonCourse.recalculation,\n };\n } else if (choiceCourse) {\n selectedCourse = {\n id: choiceCourse.id,\n courseId: choiceCourse.course.id,\n title: choiceCourse.course.title,\n type: 'choice',\n isCurious: choiceCourse.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: choiceCourse?.title,\n recalculation: choiceCourse.recalculation,\n };\n } else if (additionalCourse) {\n selectedCourse = {\n id: additionalCourse.id,\n courseId: additionalCourse.course.id,\n title: additionalCourse.course.title,\n type: 'additional',\n isCurious: additionalCourse.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: additionalCourse?.title,\n recalculation: additionalCourse.recalculation,\n };\n } else {\n const courseByCourseId =\n commonCoursesList.find((item) => item.course.id === course.courseId) ??\n courseTree?.choice.find((item) => item.course.id === course.courseId) ??\n courseTree?.additional.find((item) => item.course.id === course.courseId);\n\n selectedCourse = courseByCourseId\n ? {\n id: courseByCourseId.id,\n courseId: courseByCourseId.course.id,\n title: courseByCourseId.course.title,\n isCurious: courseByCourseId.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: courseByCourseId?.title,\n recalculation: courseByCourseId?.recalculation,\n }\n : {\n id: course.id,\n };\n }\n\n const topicTree = selectedCourse.id\n ? await NewSubjectService.getTopicsBySelectedCourse({ courseGroup: selectedCourse.id })\n : [];\n\n const topicId = topic || topicTree.find((item) => item?.lessons?.includes(lesson))?.id || 0;\n const lessonTree = topicId\n ? await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: selectedCourse.id,\n topic: topicId,\n })\n : [];\n\n return {\n courseTree,\n topicTree,\n lessonTree,\n selectedCourse: selectedCourse,\n selectedTopicId: topicId,\n };\n },\n);\n/**\n * @description getTeachersTreeByURLAction - получаем все дерево по значениям параметров в юрле\n * Так же устанавливает в сторе выбранные параметры курса, и темы\n */\nexport const getTeachersTreeByURLAction = createAsyncThunk(\n 'newSubjects/getTeachersTreeByURL',\n async (params: TLocalStorageItem) => {\n const { course, topic, lesson } = params;\n const courseTree = (await NewSubjectService.getCourseTree({ role: 'teacher' })) as TCourseGroup[];\n\n const courseData = courseTree\n .map((item) => item.courseGroups)\n .flat(1)\n .find((item) => item.id === course.id);\n const subjectId = courseTree.find(({ id, courseGroups }) =>\n courseGroups.some(({ id }) => courseData?.id === id),\n )?.id;\n const selectedCourse: TSelectedCourse = {\n id: course.id,\n subjectId: subjectId ?? 0,\n courseId: courseData?.course.id,\n title: courseData?.course.title,\n courseGroupTitle: courseData?.title,\n recalculation: courseData?.recalculation ?? null,\n };\n\n const topicTree = selectedCourse.id\n ? await NewSubjectService.getTopicsBySelectedCourse({\n courseGroup: course.id,\n role: 'teacher',\n })\n : [];\n\n const topicId = topic || topicTree.find((item) => item?.lessons?.includes(lesson))?.id || 0;\n\n const lessonTree = await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: course.id,\n topic: topicId,\n role: 'teacher',\n });\n\n return {\n courseTree,\n topicTree,\n lessonTree,\n selectedCourse: selectedCourse,\n selectedTopicId: topicId,\n };\n },\n);\n/**\n * @description getStudentsCourseTreeAction - получает список курсов для учеников\n * Так же устанавливает в сторе первый курс как выбранный\n */\nexport const getStudentsCourseTreeAction = createAsyncThunk(\n 'newSubjects/getStudentsCourseTree',\n async (params?: TGetCourseTreeParams) => {\n let firstCourse: TSelectedCourse = {} as TSelectedCourse;\n\n const courseTree = (await NewSubjectService.getCourseTree(params)) as TGetCourseTreePayload;\n\n if (courseTree?.common?.length) {\n firstCourse = {\n id: courseTree.common[0].studentGroup.courseGroups[0].id,\n courseId: courseTree.common[0].studentGroup.courseGroups[0].course.id,\n title: courseTree.common[0].studentGroup.courseGroups[0].course.title,\n type: 'common',\n isCurious: courseTree.common[0].studentGroup.courseGroups[0].tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: courseTree.common[0]?.studentGroup.courseGroups[0].title,\n recalculation: courseTree.common[0].studentGroup.courseGroups[0].recalculation,\n };\n } else if (courseTree?.choice?.length) {\n firstCourse = {\n id: courseTree.choice[0].id,\n courseId: courseTree.choice[0].course.id,\n title: courseTree.choice[0].course.title,\n type: 'choice',\n isCurious: courseTree.choice[0].tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: courseTree.choice[0].title,\n recalculation: courseTree.choice[0].recalculation,\n };\n } else if (courseTree?.additional?.length) {\n firstCourse = {\n id: courseTree.additional[0].id,\n courseId: courseTree.additional[0].course.id,\n title: courseTree.additional[0].course.title,\n type: 'additional',\n isCurious: courseTree.additional[0].tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: courseTree.additional[0].title,\n recalculation: courseTree.additional[0].recalculation,\n };\n }\n\n return {\n courseTree,\n selectedCourse: firstCourse,\n };\n },\n);\n/**\n * @description getTeachersCourseTreeAction - получает список курсов для учителей\n * Так же устанавливает в сторе первый курс как выбранный\n */\nexport const getTeachersCourseTreeAction = createAsyncThunk(\n 'newSubjects/getTeachersCourseTree',\n async (params?: TGetCourseTreeParams) => {\n const courseTree = (await NewSubjectService.getCourseTree(params)) as TCourseGroup[];\n const firstCourse: TSelectedCourse = {\n id: courseTree?.[0].courseGroups[0].id,\n subjectId: courseTree?.[0].id,\n courseId: courseTree?.[0].courseGroups[0].course.id,\n title: courseTree?.[0].courseGroups[0].course.title,\n courseGroupTitle: courseTree?.[0].courseGroups[0].title,\n recalculation: courseTree?.[0].courseGroups[0].recalculation,\n };\n\n return {\n courseTree,\n selectedCourse: firstCourse,\n };\n },\n);\n/**\n * @description getTreeByFirstItemsAction - по цепочке получает список тем и уроков по первым значениям\n * Так же устанавливает в сторе первую тему из списка как выбранную\n */\nexport const getTreeByFirstItemsAction = createAsyncThunk(\n 'newSubjects/getTreeByFirstItems',\n async (course: TSelectedCourse) => {\n const topicTree = course.id\n ? await NewSubjectService.getTopicsBySelectedCourse({ courseGroup: course.id })\n : [];\n const selectedTopic = topicTree?.[0].id;\n const lessonTree = await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: course.id,\n topic: selectedTopic,\n });\n\n return {\n topicTree,\n lessonTree,\n selectedTopicId: selectedTopic,\n };\n },\n);\n/**\n * @description getTreeByKnownItemsAction - по цепочке получает список тем и список уроков по заданным значениям\n * Так же устанавливает в сторе первую тему из списка как выбранную\n */\nexport const getTreeByKnownItemsAction = createAsyncThunk(\n 'newSubjects/getTreeByKnownItems',\n async (params: TLocalStorageItem) => {\n const { course, topic } = params;\n const topicTree = course.id\n ? await NewSubjectService.getTopicsBySelectedCourse({ courseGroup: course.id })\n : [];\n\n const lessonTree = await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: course.id,\n topic: topic ?? 0,\n });\n\n return {\n topicTree,\n lessonTree,\n selectedTopicId: topic,\n };\n },\n);\n/**\n * @description getStudentsTreeByTimeItemsAction - по цепочке получает список тем и уроков ученика по вычисленным значениям\n * (по ближайшему уроку к текущему времени)\n * Так же устанавливает в сторе полученную тему как выбранную\n */\nexport const getStudentsTreeByTimeItemsAction = createAsyncThunk(\n 'newSubjects/getStudentsTreeByTimeItems',\n async (selectedCourse: TSelectedCourse) => {\n const { currentTopic } = await NewSubjectService.getLessonsStatistic(selectedCourse.id);\n\n const topicTree = selectedCourse.id\n ? await NewSubjectService.getTopicsBySelectedCourse({ courseGroup: selectedCourse.id })\n : [];\n\n const lessonTree = await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: selectedCourse.id,\n topic: currentTopic,\n });\n\n return {\n topicTree,\n lessonTree,\n selectedTopicId: currentTopic,\n };\n },\n);\n/**\n * @description getTeachersTreeByTimeItemsAction - по цепочке получает список тем и уроков учителя по вычисленным значениям\n * (по ближайшему уроку к текущему времени)\n * Так же устанавливает в сторе полученную тему как выбранную\n */\nexport const getTeachersTreeByTimeItemsAction = createAsyncThunk(\n 'newSubjects/getTeachersTreeByTimeItems',\n async (selectedCourse: TSelectedCourse) => {\n const { currentTopic } = await NewSubjectService.getLessonsStatistic(selectedCourse.id);\n\n const topicTree = selectedCourse.id\n ? await NewSubjectService.getTopicsBySelectedCourse({\n courseGroup: selectedCourse.id,\n role: 'teacher',\n })\n : [];\n\n const lessonTree = await NewSubjectService.getLessonsBySelectedTopic({\n courseGroup: selectedCourse.id,\n topic: currentTopic,\n role: 'teacher',\n });\n\n return {\n topicTree,\n lessonTree,\n selectedTopicId: currentTopic,\n };\n },\n);\n/**\n * @description getLessonsBySelectedCourseAndTopicTreeAction - получает список уроков по выбранным значениям курса и темы\n * Так же устанавливает в сторе полученную тему как выбранную\n */\nexport const getLessonsBySelectedCourseAndTopicTreeAction = createAsyncThunk(\n 'newSubjects/getLessonsBySelectedCourseAndTopicTree',\n async (params: TGetLessonsTreeParams) => {\n const lessonsTree = await NewSubjectService.getLessonsBySelectedTopic(params);\n return {\n lessonsTree,\n ...params,\n };\n },\n);\n\nexport const getTeacherProfileAction = createAsyncThunk('newSubjects/getTeacherProfile', async (id: number) => {\n return await NewSubjectService.getTeacherProfile(id);\n});\n\nexport const setLearningMaterialViewedAction = createAsyncThunk(\n 'newSubjects/setLearningMaterialViewed',\n async (params: { exercises: number[] }) => {\n return await NewSubjectService.setLearningMaterialViewed(params);\n },\n);\nexport const getStudentsListAction = createAsyncThunk(\n 'newSubjects/getStudentsList',\n async (params: TGetStudentsListParams) => {\n return await NewSubjectService.getStudentsList(params);\n },\n);\nexport const getStudentsProgressListAction = createAsyncThunk(\n 'newSubjects/getStudentsProgressList',\n async (params: TGetStudentsProgressListProps) => {\n return await NewSubjectService.getStudentsProgressList(params);\n },\n);\nexport const getCourseGroupsLessonsAction = createAsyncThunk(\n 'newSubjects/getCourseGroupsLessons',\n async (params: TGetCourseGroupsLessonsProps) => {\n return await NewSubjectService.getCourseGroupsLessons(params);\n },\n);\nexport const handleLessonScheduleAction = createAsyncThunk(\n 'newSubjects/handleLessonSchedule',\n async (params: THandleLessonScheduleActionProps) => {\n //если редактируется урок курс-группы, то формируем lesson-schedule для запроса на обновление\n if (isListExist(params.lessonSchedules)) {\n const lessonSchedules: THandleLessonSchedules = {};\n params?.lessonSchedules?.forEach((lesson) => {\n // id = 0 - добавился новый lessonSchedule\n // id < 0 - lessonSchedule удален\n // id > 0 - lessonSchedule отредактирован\n lesson.id > 0\n ? (lessonSchedules.update = {\n ...lesson,\n datetimeStart: lesson.datetimeStart ? lesson.datetimeStart : undefined,\n datetimeEnd:\n lesson.datetimeEnd && lesson.type !== 'online_lesson' ? lesson.datetimeEnd : undefined,\n })\n : lesson.id < 0\n ? (lessonSchedules.delete = Math.abs(lesson.id))\n : (lessonSchedules.create = {\n type: lesson.type,\n datetimeStart: lesson.datetimeStart ? lesson.datetimeStart : undefined,\n datetimeEnd:\n lesson.datetimeEnd && lesson.type !== 'online_lesson' ? lesson.datetimeEnd : undefined,\n });\n });\n const isNeedUseUpdateMethod = lessonSchedules.create && lessonSchedules.delete && !lessonSchedules.update;\n //если один LessonSchedule удален, а другой создан, то выполняем запрос на обновление, а не удаление и создание\n if (isNeedUseUpdateMethod && lessonSchedules.delete && lessonSchedules.create) {\n lessonSchedules.update = {\n id: lessonSchedules.delete,\n type: lessonSchedules.create.type,\n datetimeStart: lessonSchedules.create.datetimeStart ?? undefined,\n datetimeEnd: lessonSchedules.create.datetimeEnd ?? undefined,\n };\n lessonSchedules.delete = undefined;\n lessonSchedules.create = undefined;\n }\n return handleLessonSchedule({\n ...params,\n lessonSchedules: lessonSchedules,\n });\n } else {\n return await handleLessonSchedule({\n ...params,\n lessonSchedules: undefined,\n });\n }\n },\n);\n","import { useEffect } from 'react';\n\nexport const useCheckPackageVersion = (): void => {\n useEffect(() => {\n const handleWindowFocus = () => {\n fetch('/version.json')\n .then((res) => res.json())\n .then((data: { version: string }) => {\n if (data?.version === process.env.REACT_APP_VERSION || (!data && !process.env.REACT_APP_VERSION)) {\n return;\n }\n\n (window.location.reload as (force?: boolean) => void)(true);\n })\n .catch(() => console.error('не найден файл!'));\n };\n\n window.addEventListener('focus', handleWindowFocus, true);\n\n return () => {\n window.removeEventListener('focus', handleWindowFocus, true);\n };\n });\n};\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport const useCourseGroupQuery = (): { courseGroupId?: number } => {\n const location = useLocation();\n const groupId = useMemo(() => {\n const group = new URLSearchParams(location.search).get('course_group');\n const groupId = Number(group);\n\n if (!group || isNaN(groupId)) {\n return undefined;\n }\n\n return groupId;\n }, [location]);\n\n return { courseGroupId: groupId };\n};\n","import { FetchStatus } from 'types/api';\n\nexport const useFormLoading = (statuses: Array): { isLoading: boolean } => {\n return { isLoading: statuses.some((status) => status === FetchStatus.FETCHING) };\n};\n","import { useMemo } from 'react';\nimport { useQuery } from 'hooks/useQuery';\n\ninterface CourseParams {\n courseId: number | undefined;\n}\n\nexport const useGetCourseQuery = (): CourseParams => {\n const query = useQuery();\n const courseId = useMemo(() => {\n const course = query.get('courseId');\n const courseId = Number(course);\n\n if (isNaN(courseId)) {\n return undefined;\n }\n\n return courseId;\n }, [query]);\n\n return { courseId };\n};\n","import { useEffect, useRef } from 'react';\n\nexport const usePreventUnload = (handler?: (event: BeforeUnloadEvent) => void): void => {\n const eventListenerRef = useRef<(event: BeforeUnloadEvent) => void>();\n\n useEffect(() => {\n eventListenerRef.current = (event: BeforeUnloadEvent) => {\n const returnValue = handler?.(event);\n\n if (typeof returnValue === 'string') {\n return (event.returnValue = returnValue);\n }\n\n if (event.defaultPrevented) {\n return (event.returnValue = '');\n }\n };\n }, [handler]);\n\n useEffect(() => {\n const eventListener = (event: BeforeUnloadEvent) => eventListenerRef.current?.(event);\n window.addEventListener('beforeunload', eventListener);\n\n return () => {\n window.removeEventListener('beforeunload', eventListener);\n };\n }, []);\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const useThrottle = (\n callback: (...args: ArgsType) => ReturnType,\n delay: number,\n): ((...args: ArgsType) => ReturnType | void) => {\n const [isThrottled, setIsThrottled] = useState(false);\n const [timeoutId, setTimeoutId] = useState(null);\n\n const throttledCallback = useCallback(\n (...args: ArgsType): ReturnType | void => {\n if (isThrottled) {\n return;\n }\n callback(...args);\n setIsThrottled(true);\n setTimeoutId(setTimeout(() => setIsThrottled(false), delay));\n },\n [callback, delay, isThrottled],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [timeoutId]);\n\n return throttledCallback;\n};\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 9,\n viewBox: \"0 0 15 9\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 4.5H2M2 4.5L5.25 1M2 4.5L5.25 8\",\n stroke: \"#2C2D2E\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/arrow.078b2f07.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBlueLoader(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"\\xD0\\x9F\\xD1\\x80\\xD0\\xB5\\xD0\\xBB\\xD0\\xBE\\xD0\\xB0\\xD0\\xB4\\xD0\\xB5\\xD1\\x80\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"\\xD0\\x9F\\xD1\\x80\\xD0\\xB5\\xD0\\xBB\\xD0\\xBE\\xD0\\xB0\\xD0\\xB4\\xD0\\xB5\\xD1\\x80_2\",\n d: \"M22 12C22 13.9778 21.4135 15.9112 20.3147 17.5557C19.2159 19.2002 17.6541 20.4819 15.8268 21.2388C13.9996 21.9957 11.9889 22.1937 10.0491 21.8079C8.10929 21.422 6.32746 20.4696 4.92893 19.0711C3.53041 17.6725 2.578 15.8907 2.19215 13.9509C1.80629 12.0111 2.00433 10.0004 2.7612 8.17317C3.51808 6.3459 4.79981 4.78412 6.4443 3.6853C8.08879 2.58649 10.0222 2 12 2\",\n stroke: \"url(#paint0_angular_7041_36073)\",\n strokeWidth: 4,\n strokeLinecap: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"paint0_angular_7041_36073\",\n cx: 0,\n cy: 0,\n r: 1,\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"translate(12 12) rotate(-77.7352) scale(12.2803)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.0000671814,\n stopColor: \"#0088E9\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.179225,\n stopColor: \"#0088E9\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.209595,\n stopColor: \"#0088E9\",\n stopOpacity: 0\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBlueLoader);\nexport default __webpack_public_path__ + \"static/media/blue-loader.7cb6fbe2.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2, _path3, _path4, _path5;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCalendar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.75,\n y: 9.25,\n width: 18.5,\n height: 16.5,\n rx: 1.25,\n stroke: \"#585C6F\",\n strokeWidth: 1.5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 22.5H21\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 19.5H21\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 16.5H21\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 13H25\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5 6V10.5M21.5 6V10.5\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendar);\nexport default __webpack_public_path__ + \"static/media/calendar.49e19d56.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCalendarSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 5H5C4.72386 5 4.5 5.22386 4.5 5.5V15.5C4.5 15.7761 4.72386 16 5 16H15C15.2761 16 15.5 15.7761 15.5 15.5V5.5C15.5 5.22386 15.2761 5 15 5Z\",\n stroke: \"#585C6F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 4V6\",\n stroke: \"#585C6F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 4V6\",\n stroke: \"#585C6F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 8H15.5\",\n stroke: \"#585C6F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendarSmall);\nexport default __webpack_public_path__ + \"static/media/calendar-small.fe801d73.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgChat(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 10.5322H12.5M7.5 8.03223H12.5M6.74379 13.8375L4.60598 15.6346C4.53006 15.6984 4.43749 15.7392 4.33917 15.7523C4.24084 15.7653 4.14084 15.7499 4.05093 15.7081C3.96102 15.6662 3.88494 15.5995 3.83163 15.5159C3.77832 15.4322 3.75 15.3351 3.75 15.2359V4.89583C3.75 4.7577 3.80487 4.62522 3.90255 4.52755C4.00022 4.42987 4.1327 4.375 4.27083 4.375H15.7292C15.8673 4.375 15.9998 4.42987 16.0975 4.52755C16.1951 4.62522 16.25 4.7577 16.25 4.89583V13.2292C16.25 13.3673 16.1951 13.4998 16.0975 13.5975C15.9998 13.6951 15.8673 13.75 15.7292 13.75H6.98378L6.74379 13.8375Z\",\n stroke: \"#0088E9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChat);\nexport default __webpack_public_path__ + \"static/media/chat.20923089.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgChecked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 8,\n viewBox: \"0 0 8 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.99936 0.859375L1 6.85938M1.00064 0.859375L7 6.85938\",\n stroke: \"#C0C2C9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChecked);\nexport default __webpack_public_path__ + \"static/media/checked.ab1aeaf7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.999023 15.1426L15.1412 1.00044\",\n stroke: \"#0088E9\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 15.1426L15.1421 1.00044\",\n stroke: \"#0088E9\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.1426 15.1426L1.00044 1.00044\",\n stroke: \"#0088E9\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/close.b9186ba4.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgDraftCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.0625 1.4375H3.9375C2.28065 1.4375 0.9375 2.78065 0.9375 4.4375V11.5625C0.9375 13.2194 2.28065 14.5625 3.9375 14.5625H11.0625C12.7194 14.5625 14.0625 13.2194 14.0625 11.5625V8.98438V7.34375V4.4375C14.0625 2.78065 12.7194 1.4375 11.0625 1.4375Z\",\n stroke: \"#2F929A\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.5625 8L6.1875 10.625L12.0938 4.71875\",\n stroke: \"#2F929A\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDraftCheck);\nexport default __webpack_public_path__ + \"static/media/draft-check.c9f6de81.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgFilterIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.837 15.2905L25.3212 7.7022C25.9444 7.07027 25.4968 6 24.6092 6H6.39081C5.50323 6 5.05557 7.07027 5.67883 7.7022L13.163 15.2905C13.3475 15.4777 13.451 15.7299 13.451 15.9927V24.3992C13.451 25.1384 14.2253 25.6221 14.8896 25.2979L16.9876 24.274C17.3311 24.1063 17.549 23.7575 17.549 23.3753V15.9927C17.549 15.7299 17.6525 15.4777 17.837 15.2905Z\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterIcon);\nexport default __webpack_public_path__ + \"static/media/filter-icon.3e790487.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgGreenStat(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 55,\n height: 52,\n viewBox: \"0 0 55 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.13844 18.825C9.13844 18.825 4.59811 12.25 8.7645 8.32222C12.9279 4.39444 19.8945 8.67778 19.8945 8.67778C19.8945 8.67778 21.6111 1 27.5 1C33.3889 1 35.1055 8.67778 35.1055 8.67778C35.1055 8.67778 42.075 4.39444 46.2384 8.32222C50.4048 12.25 45.8645 18.825 45.8645 18.825C45.8645 18.825 54 20.4444 54 26C54 31.5556 45.8645 33.175 45.8645 33.175C45.8645 33.175 50.4048 39.75 46.2384 43.6778C42.075 47.6056 35.1055 43.3222 35.1055 43.3222C35.1055 43.3222 33.3889 51 27.5 51C21.6111 51 19.8945 43.3222 19.8945 43.3222C19.8945 43.3222 12.9279 47.6056 8.7645 43.6778C4.59811 39.75 9.13844 33.175 9.13844 33.175C9.13844 33.175 1 31.5556 1 26C1 20.4444 9.13844 18.825 9.13844 18.825Z\",\n stroke: \"#2F929A\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.5 15.9746V27.0857\",\n stroke: \"#2F929A\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28.9757 31.2326C28.9757 31.9993 28.3161 32.6215 27.5035 32.6215C26.6908 32.6215 26.0312 31.9993 26.0312 31.2326C26.0312 30.466 26.6908 29.8438 27.5035 29.8438C28.3161 29.8438 28.9757 30.466 28.9757 31.2326Z\",\n fill: \"#2F929A\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGreenStat);\nexport default __webpack_public_path__ + \"static/media/green-stat.88bf2232.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _rect;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgHistoryIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.6323 23.9889C11.4546 23.6147 11.0072 23.4555 10.633 23.6332C10.2589 23.8109 10.0996 24.2583 10.2774 24.6325L11.6323 23.9889ZM11.0101 17.7917C11.5351 15.6767 12.79 13.8149 14.5535 12.5347L13.6723 11.3208C11.6228 12.8086 10.1644 14.9723 9.55425 17.4303L11.0101 17.7917ZM14.5535 12.5347C16.317 11.2544 18.4759 10.6379 20.6495 10.7939L20.7569 9.29771C18.2308 9.11648 15.7218 9.83295 13.6723 11.3208L14.5535 12.5347ZM20.6495 10.7939C22.8232 10.9498 24.872 11.8682 26.4347 13.387L27.4801 12.3114C25.664 10.5462 23.283 9.47894 20.7569 9.29771L20.6495 10.7939ZM26.4347 13.387C27.9974 14.9059 28.9736 16.9278 29.1913 19.0961L30.6838 18.9462C30.4308 16.4263 29.2963 14.0766 27.4801 12.3114L26.4347 13.387ZM29.1913 19.0961C29.4091 21.2644 28.8542 23.44 27.6247 25.2392L28.8631 26.0855C30.292 23.9945 30.9369 21.4662 30.6838 18.9462L29.1913 19.0961ZM27.6247 25.2392C26.3951 27.0384 24.5698 28.3457 22.4705 28.9307L22.8732 30.3756C25.3128 29.6958 27.4342 28.1765 28.8631 26.0855L27.6247 25.2392ZM22.4705 28.9307C20.3713 29.5156 18.1329 29.3406 16.1501 28.4366L15.5278 29.8014C17.8322 30.8521 20.4335 31.0555 22.8732 30.3756L22.4705 28.9307ZM16.1501 28.4366C14.1673 27.5325 12.5673 25.9573 11.6323 23.9889L10.2774 24.6325C11.364 26.9201 13.2234 28.7507 15.5278 29.8014L16.1501 28.4366Z\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.303 19.683L13.1238 17.9841C13.5054 17.7543 13.4186 17.1778 12.9863 17.0705L8.46659 15.9486C8.03426 15.8413 7.688 16.3103 7.91782 16.6918L9.61671 19.5126C9.75918 19.7492 10.0664 19.8255 10.303 19.683Z\",\n fill: \"#0088E9\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 16V22H23\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 39,\n height: 39,\n rx: 5.5,\n stroke: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHistoryIcon);\nexport default __webpack_public_path__ + \"static/media/history-icon.12b8b726.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLinuxIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 140,\n viewBox: \"0 0 140 140\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.3\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.091 101.133C106.586 99.1632 107.561 94.8128 104.959 92.6663C107.479 77.8042 100.417 64.7044 91.9988 56.3083C84.9331 49.2637 87.2109 42.4091 87.2109 36.4775C87.2109 26.9993 83.1974 17 71.0387 17C58.0417 17 54.4792 27.5117 54.3517 33.5095C54.0419 47.9167 57.3538 51.662 48.6572 62.1472C38.4254 74.4829 36.9176 86.7877 39.2272 93.3156C38.1476 94.5346 36.6898 95.8861 33.9656 97.0035C26.4398 100.184 31.9566 105.506 29.8747 109.282C29.2824 110.355 29 111.477 29 112.55C29 115.863 31.7151 118.729 36.6488 118.301C43.3044 117.727 49.4453 122.298 53.4178 122.298C56.9256 122.298 59.8047 120.363 61.144 117.7C67.417 116.203 75.1614 116.393 81.4299 117.961C82.5551 121.012 85.6073 123 89.0012 123C96.4313 123 97.8618 114.834 106.385 112.069C109.456 111.075 111 108.187 111 105.497C111 103.774 110.367 102.136 109.091 101.133ZM67.4216 54.9127C65.9683 54.9127 64.7657 53.7732 62.866 52.404C60.4607 50.6727 58.0143 49.6745 58.0417 47.8548C58.0417 46.6049 59.7682 46.2207 62.0004 44.8471C64.3967 43.3763 65.3306 41.8835 67.6903 41.8835C70.1048 41.8835 70.8337 43.0672 74.1137 44.4407C77.339 45.7967 79.5849 46.3267 79.5849 47.8548C79.5849 49.4227 76.2092 50.5446 74.3096 51.6885C71.517 53.358 70.082 54.9127 67.4216 54.9127ZM75.0066 31.8797C79.0246 32.5025 79.4756 39.3483 77.5531 42.7182L75.9359 42.0778C76.7741 39.6796 76.7604 35.7311 73.9542 35.4793C72.173 35.3203 71.025 37.5993 70.779 39.5515C70.082 39.2688 69.3212 39.0657 68.3964 38.9906C68.6789 34.914 71.394 31.3188 75.0066 31.8797ZM59.504 33.3417C62.5836 32.5997 64.4012 36.0712 64.4149 39.6796L63.0027 40.5187C62.8113 39.0038 62.1143 36.557 60.365 37.0782C58.4927 37.6435 58.7979 41.8614 59.8411 42.7271L58.4471 43.4779C56.5338 40.3553 56.5383 34.0572 59.504 33.3417ZM49.869 118.332C40.9264 114.387 37.8879 115.284 36.1796 115.284C32.6399 115.284 31.4828 112.727 32.813 110.306C33.9428 108.253 33.592 106.102 33.3141 104.375C32.8859 101.729 32.8084 100.868 35.4917 99.7286C39.2044 98.2004 40.8536 96.235 42.0836 94.7643C45.5367 90.6258 49.0217 97.136 51.878 102.935C53.7321 106.694 57.3811 108.597 58.5063 112.762C59.5404 116.609 55.2719 120.717 49.869 118.332ZM81.6987 110.055C75.3938 113.027 67.3623 114.392 61.3536 111.375C60.4652 108.889 59.0439 107.281 57.5132 105.665C59.9687 105.037 61.7909 102.069 59.6088 99.0882C57.2809 95.9037 52.5249 93.6822 47.7188 90.0782C43.2224 86.7082 41.8011 78.4005 47.9238 69.1167C44.9399 77.3405 46.6847 84.9195 48.1834 87.0881C48.4932 82.7244 48.8486 75.4369 54.9986 66.7052C58.1009 62.2973 58.1464 56.4762 58.2148 52.8368L61.0392 54.7095C63.1166 56.1979 64.8568 57.8365 67.3532 57.8365C71.0432 57.8365 73.0841 55.7783 75.9268 54.0691C77.0383 53.4066 78.7193 52.7352 80.1316 51.8033C82.5004 62.739 92.3131 75.8918 92.8643 83.3825C95.1467 78.8245 92.2174 67.8623 92.2174 67.8623C96.0532 73.5377 96.3584 78.268 96.527 84.0715C99.2102 85.1359 102.089 87.9096 102.354 91.5622L101.237 91.4385C100.663 87.3796 89.3611 81.4171 88.3452 89.0579C82.9241 89.8573 84.8967 98.1827 83.8033 103.58C83.3022 106.049 82.3729 108.001 81.6987 110.055ZM103.775 109.874C99.2877 111.552 96.2582 115.116 94.1763 117.329C90.1674 121.595 84.8648 119.551 84.2999 115.558C83.7031 111.291 85.9399 108.964 86.9057 104.189C87.7849 99.8302 86.8009 93.1212 88.8691 92.4057C90.213 100.148 98.2809 96.8931 100.121 94.7819C103.114 94.7819 103.365 95.7624 104.035 98.4787C104.454 100.179 105.032 101.61 106.668 103.293C108.572 105.267 107.989 108.297 103.775 109.874ZM67.3304 52.4305C64.3648 52.4305 62.1462 50.5181 60.3422 49.0341C59.4174 48.2788 60.57 46.8832 61.4948 47.6428C63.2578 49.0915 65.0344 50.6241 67.3304 50.6241C70.0957 50.6241 72.5329 48.3318 75.8357 47.0687C76.9609 46.6402 77.6032 48.3274 76.4871 48.7558C73.28 49.9792 70.7061 52.4305 67.3304 52.4305Z\",\n fill: \"#0088E9\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLinuxIcon);\nexport default __webpack_public_path__ + \"static/media/linux-icon.94a83943.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLoader(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 18,\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8848 9.19772C18.8848 4.76032 15.287 1.1626 10.8496 1.1626\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8845 9.19775L18.8845 12.2109\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 10.7046L18.8843 12.8203\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8848 12.8198L16.769 10.7041\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.11523 8.80228C3.11523 13.2397 6.71296 16.8374 11.1504 16.8374\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.11548 8.80225L3.11548 5.78907\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 7.2959L3.11574 5.18016\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.11523 5.18016L5.23098 7.2959\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLoader);\nexport default __webpack_public_path__ + \"static/media/loader.89f7bf4b.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 200,\n height: 34,\n viewBox: \"0 0 200 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.9395 21.0281L28.2416 21.9639L5.37665 9.13842C4.98048 8.91824 4.81068 8.42283 5.09366 8.03752C5.32005 7.6522 5.82942 7.48707 6.2256 7.7623L29.9395 21.0281Z\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.3732 16.9549L17.3751 8.53295L8.1499 3.30366C4.52772 1.32205 0 3.85412 0 7.8724V28.7895C0 32.8079 4.47113 35.2849 8.0367 33.3033L26.0344 23.285L4.24474 11.065C2.77323 10.2394 2.26386 8.36781 3.11281 6.93664C3.96175 5.45043 5.88604 4.95502 7.35755 5.78069L32.1468 19.7071L32.3166 19.597C33.4485 19.0465 33.4485 17.5053 32.3732 16.9549Z\",\n fill: \"#0088E9\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.3746 17.7245H55.6209V30.55H52.791V15.3576H63.3746V17.7245Z\",\n fill: \"#585C6F\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.8454 18.9357V30.4952H74.1854V29.009C73.7326 29.5044 73.1666 29.9447 72.544 30.2199C71.8648 30.4952 71.1858 30.6603 70.3933 30.6603C68.8087 30.6603 67.5635 30.2199 66.6014 29.3942C65.6958 28.5136 65.2431 27.2475 65.2431 25.5411V18.9357H68.0163V25.2108C68.0163 26.2567 68.2427 27.0273 68.7521 27.5228C69.2615 28.0182 69.9406 28.2934 70.8461 28.2934C71.8083 28.2934 72.6006 28.0182 73.2232 27.4126C73.7892 26.8072 74.1287 25.9264 74.1287 24.8255V18.9357H76.8454Z\",\n fill: \"#585C6F\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M92.3506 30.5502V22.8439L88.3322 29.2842H87.1437L83.1819 22.7889V30.4952H80.6351V18.9357H83.5781L87.8229 26.2016L92.2374 18.9357H94.8408V30.4952L92.3506 30.5502Z\",\n fill: \"#585C6F\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.692 18.9357H101.465V23.6695H107.465V18.9357H110.237V30.4952H107.465V25.9264H101.465V30.4952H98.692V18.9357Z\",\n fill: \"#585C6F\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.63 18.9356V30.4951H122.97V29.0089C122.518 29.5593 121.952 29.9446 121.272 30.2199C120.593 30.4951 119.857 30.6051 119.008 30.6051C117.877 30.6051 116.801 30.3849 115.896 29.8895C114.99 29.3941 114.254 28.6785 113.745 27.7979C113.236 26.9171 112.952 25.8713 112.952 24.6603C112.952 23.4493 113.236 22.4584 113.745 21.5228C114.254 20.642 114.99 19.9264 115.896 19.431C116.801 18.9356 117.82 18.7154 119.008 18.7154C119.801 18.7154 120.48 18.8255 121.159 19.1007C121.782 19.376 122.348 19.7613 122.857 20.2567V18.9356H125.63ZM121.895 27.3575C122.574 26.6969 122.913 25.8162 122.913 24.7153C122.913 23.6144 122.574 22.7337 121.895 22.0732C121.216 21.4126 120.367 21.0824 119.348 21.0824C118.329 21.0824 117.48 21.4126 116.801 22.0732C116.123 22.7337 115.783 23.6144 115.783 24.7153C115.783 25.8162 116.123 26.6969 116.801 27.3575C117.48 28.0181 118.329 28.3483 119.348 28.3483C120.367 28.3483 121.216 28.0181 121.895 27.3575Z\",\n fill: \"#585C6F\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.083 25.486C138.479 25.9263 138.705 26.4768 138.705 27.1373C138.705 27.8529 138.479 28.4584 137.969 29.0089C137.46 29.5593 136.781 29.9997 135.932 30.2749C135.083 30.6051 134.064 30.7153 132.989 30.7153C132.083 30.7153 131.178 30.6051 130.272 30.3849C129.367 30.1647 128.575 29.8895 127.895 29.5043L128.688 27.4676C129.254 27.7979 129.933 28.0181 130.669 28.1831C131.405 28.3483 132.14 28.4584 132.875 28.4584C133.838 28.4584 134.518 28.2933 135.083 28.0181C135.593 27.7428 135.875 27.3575 135.875 26.8621C135.875 26.4217 135.649 26.0915 135.253 25.8162C134.857 25.596 134.29 25.4309 133.498 25.4309H131.178V23.6144H133.272C133.951 23.6144 134.518 23.5044 134.913 23.2842C135.31 23.064 135.479 22.7337 135.479 22.2934C135.479 21.853 135.253 21.5228 134.744 21.3026C134.291 21.0824 133.611 20.9172 132.762 20.9172C131.574 20.9172 130.329 21.1924 128.97 21.7429L128.235 19.7613C129.819 19.0457 131.347 18.7154 132.989 18.7154C134.008 18.7154 134.913 18.8255 135.706 19.1007C136.498 19.376 137.121 19.7613 137.574 20.2016C138.026 20.697 138.252 21.2475 138.252 21.853C138.252 22.4034 138.083 22.8988 137.743 23.3392C137.403 23.7796 136.895 24.1098 136.272 24.385C137.064 24.7153 137.687 25.0456 138.083 25.486Z\",\n fill: \"#585C6F\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.912 18.9357V30.4952H150.252V29.009C149.799 29.5044 149.234 29.9447 148.611 30.2199C147.932 30.4952 147.252 30.6603 146.46 30.6603C144.875 30.6603 143.63 30.2199 142.668 29.3942C141.763 28.5136 141.309 27.2475 141.309 25.5411V18.9357H144.083V25.2108C144.083 26.2567 144.309 27.0273 144.819 27.5228C145.328 28.0182 146.007 28.2934 146.913 28.2934C147.875 28.2934 148.667 28.0182 149.29 27.4126C149.856 26.8072 150.195 25.9264 150.195 24.8255V18.9357H152.912Z\",\n fill: \"#585C6F\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M166.777 18.9357V30.4952H164.287V27.0273H161.117L158.683 30.4952H155.684L158.513 26.642C157.664 26.3668 156.985 25.9264 156.533 25.3209C156.08 24.7154 155.854 23.9998 155.854 23.1191C155.854 21.7981 156.362 20.7521 157.325 20.0366C158.287 19.321 159.646 18.9357 161.343 18.9357H166.777ZM158.74 23.2292C158.74 24.5503 159.589 25.1558 161.343 25.1558H164.287V21.2475H161.4C159.589 21.2475 158.74 21.9081 158.74 23.2292Z\",\n fill: \"#585C6F\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M200 18.0559V30.7162H197.566V19.9824H194.793V18.0008L200 18.0559Z\",\n fill: \"#585C6F\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.131 18.0546V30.715H184.15L177.019 22.128V30.715H174.642V18.0546H176.623L183.811 26.6417V18.0546H186.131Z\",\n fill: \"#585C6F\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M190.547 19.761C191.453 19.761 192.188 20.4766 192.188 21.3573C192.188 22.238 191.453 22.9536 190.547 22.9536C189.641 22.9536 188.905 22.238 188.905 21.3573C188.849 20.4766 189.641 19.761 190.547 19.761ZM190.547 18.0546C188.622 18.0546 187.094 19.5408 187.094 21.4124C187.094 23.2839 188.622 24.7701 190.547 24.7701C192.471 24.7701 193.999 23.2839 193.999 21.4124C193.999 19.5408 192.415 18.0546 190.547 18.0546Z\",\n fill: \"#585C6F\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.604 25.9818H187.549V27.7433H193.604V25.9818Z\",\n fill: \"#585C6F\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.646 10.3484C144.023 10.0182 143.515 9.57783 143.175 8.97229C142.835 8.36683 142.666 7.70629 142.666 6.93565C142.666 6.16502 142.835 5.50449 143.175 4.89899C143.515 4.29349 144.023 3.85313 144.646 3.52286C145.269 3.1926 146.005 3.02746 146.797 3.02746C147.589 3.02746 148.325 3.1926 148.948 3.52286C149.571 3.85313 150.079 4.29349 150.42 4.89899C150.759 5.50449 150.928 6.16502 150.928 6.93565C150.928 7.70629 150.759 8.36683 150.42 8.97229C150.079 9.57783 149.571 10.0182 148.948 10.3484C148.325 10.6787 147.589 10.8438 146.797 10.8438C146.005 10.8989 145.269 10.6787 144.646 10.3484ZM148.438 8.6971C148.891 8.25673 149.117 7.70628 149.117 6.9907C149.117 6.27511 148.891 5.72466 148.438 5.28431C147.986 4.84394 147.42 4.62376 146.741 4.62376C146.061 4.62376 145.495 4.84394 145.099 5.28431C144.646 5.72466 144.42 6.27511 144.42 6.9907C144.42 7.70628 144.646 8.25673 145.099 8.6971C145.552 9.13745 146.118 9.35764 146.741 9.35764C147.476 9.35764 147.986 9.13745 148.438 8.6971Z\",\n fill: \"#585C6F\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.797 3.1376H154.608V6.22012H158.57V3.1376H160.381V10.7889H158.57V7.76138H154.608V10.7889H152.797V3.1376Z\",\n fill: \"#585C6F\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.003 3.1376V10.7889H168.193V4.67886H165.25L165.193 6.22011C165.136 7.21092 165.023 8.09165 164.91 8.75218C164.796 9.41271 164.514 9.96314 164.175 10.3485C163.834 10.7338 163.382 10.954 162.76 10.954C162.476 10.954 162.137 10.8989 161.74 10.7889L161.854 9.30266C161.967 9.35769 162.08 9.35769 162.193 9.35769C162.589 9.35769 162.873 9.19252 163.042 8.91732C163.212 8.6421 163.325 8.25678 163.382 7.87147C163.439 7.48615 163.495 6.88065 163.495 6.11002L163.608 3.19264L170.003 3.1376Z\",\n fill: \"#585C6F\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M180.077 3.13885V10.7901H178.322V9.79933C178.04 10.1846 177.643 10.4599 177.191 10.625C176.738 10.7901 176.228 10.9002 175.719 10.9002C174.983 10.9002 174.248 10.7351 173.681 10.4048C173.059 10.0745 172.606 9.63416 172.266 9.02871C171.927 8.42318 171.758 7.76264 171.758 6.99201C171.758 6.22138 171.927 5.50579 172.266 4.95534C172.606 4.34985 173.059 3.90949 173.681 3.57922C174.304 3.24894 174.983 3.08381 175.719 3.08381C176.228 3.08381 176.681 3.1939 177.134 3.35904C177.587 3.52417 177.927 3.7994 178.266 4.12967V3.1939L180.077 3.13885ZM177.587 8.69841C178.04 8.25805 178.266 7.7076 178.266 6.99201C178.266 6.27642 178.04 5.72597 177.587 5.28561C177.134 4.84526 176.568 4.62507 175.889 4.62507C175.21 4.62507 174.643 4.84526 174.248 5.28561C173.794 5.72597 173.568 6.27642 173.568 6.99201C173.568 7.7076 173.794 8.25805 174.248 8.69841C174.7 9.13876 175.266 9.35895 175.889 9.35895C176.625 9.35895 177.191 9.13876 177.587 8.69841Z\",\n fill: \"#585C6F\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M189.982 3.1376V10.7889H188.227V9.79806C187.944 10.1283 187.548 10.4035 187.152 10.5687C186.699 10.7338 186.247 10.8439 185.737 10.8439C184.662 10.8439 183.87 10.5687 183.247 10.0183C182.624 9.46774 182.341 8.58705 182.341 7.48615V3.1376H184.152V7.26597C184.152 7.92651 184.322 8.47696 184.605 8.80723C184.944 9.1375 185.398 9.30266 185.963 9.30266C186.586 9.30266 187.152 9.08248 187.491 8.69714C187.888 8.31183 188.057 7.70633 188.057 6.99075V3.1376H189.982Z\",\n fill: \"#585C6F\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M192.416 3.1376H194.226V6.22012H198.189V3.1376H200V10.7889H198.189V7.76138H194.226V10.7889H192.416V3.1376Z\",\n fill: \"#585C6F\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.132 2.20181C186.757 2.20181 187.264 1.70891 187.264 1.1009C187.264 0.49289 186.757 0 186.132 0C185.507 0 185 0.49289 185 1.1009C185 1.70891 185.507 2.20181 186.132 2.20181Z\",\n fill: \"#585C6F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.99c9b661.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMacIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 140,\n viewBox: \"0 0 140 140\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.3\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115 94.7668C111.463 104.837 100.875 122.668 89.9665 122.862C82.7305 122.999 80.404 118.653 72.133 118.653C63.8665 118.653 61.279 122.73 54.439 122.995C42.865 123.432 25 97.2579 25 74.4318C25 53.4652 39.886 43.0724 52.891 42.8825C59.866 42.7588 66.454 47.4981 70.7065 47.4981C74.977 47.4981 82.978 41.8004 91.3885 42.6352C94.9075 42.7809 104.794 44.0265 111.139 53.1339C94.3045 63.9198 96.928 86.4764 115 94.7668ZM91.501 17C78.784 17.5035 68.407 30.5994 69.856 41.4294C81.61 42.326 92.887 29.3936 91.501 17Z\",\n fill: \"#0088E9\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMacIcon);\nexport default __webpack_public_path__ + \"static/media/mac-icon.a8cd1f4a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMinusRedCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20Z\",\n fill: \"#EA5959\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.82812 9.82812H13.8281\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMinusRedCircle);\nexport default __webpack_public_path__ + \"static/media/minus-red-circle.b0de9724.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgNewsIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 19,\n viewBox: \"0 0 20 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4 1.75C4 0.783502 4.7835 0 5.75 0H17.75C18.7165 0 19.5 0.783502 19.5 1.75V14.75C19.5 16.8211 17.8211 18.5 15.75 18.5H6.75H5.75H2.75C1.23122 18.5 0 17.2688 0 15.75V7.75C0 7.33579 0.335786 7 0.75 7H4V1.75ZM15.75 17H6.75H5.75H5.20015C5.39186 16.625 5.5 16.2001 5.5 15.75V1.75C5.5 1.61193 5.61193 1.5 5.75 1.5H17.75C17.8881 1.5 18 1.61193 18 1.75V14.75C18 15.9926 16.9926 17 15.75 17ZM4 15.75C4 16.4404 3.44036 17 2.75 17C2.05964 17 1.5 16.4404 1.5 15.75V8.5H4V15.75ZM7.5 3.5C7.08579 3.5 6.75 3.83579 6.75 4.25C6.75 4.66421 7.08579 5 7.5 5H16C16.4142 5 16.75 4.66421 16.75 4.25C16.75 3.83579 16.4142 3.5 16 3.5H7.5ZM7.5 6.5C7.08579 6.5 6.75 6.83579 6.75 7.25C6.75 7.66421 7.08579 8 7.5 8H16C16.4142 8 16.75 7.66421 16.75 7.25C16.75 6.83579 16.4142 6.5 16 6.5H7.5ZM6.75 10.25C6.75 9.83579 7.08579 9.5 7.5 9.5H16C16.4142 9.5 16.75 9.83579 16.75 10.25C16.75 10.6642 16.4142 11 16 11H7.5C7.08579 11 6.75 10.6642 6.75 10.25Z\",\n fill: \"#585C6F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewsIcon);\nexport default __webpack_public_path__ + \"static/media/news-icon.a898d526.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _rect, _rect2, _rect3, _rect4, _rect5, _path2, _circle;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgNewsWithNewIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"10 5 8 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.44014 16.2139C8.44014 17.5076 7.56061 17.8594 7.12085 17.8736H17.7177C18.8412 17.8736 19.2072 16.7671 19.2498 16.2139V7.9151C19.2498 6.38302 18.1149 6 17.5475 6H10.2701C8.77209 6 8.42595 7.27673 8.44014 7.9151V16.2139Z\",\n stroke: \"#585C6F\",\n strokeLinejoin: \"round\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 10.3979,\n y: 10.1719,\n width: 7.40504,\n height: 1.19162,\n rx: 0.595808\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 14.9941,\n y: 12.6406,\n width: 2.80881,\n height: 1.19162,\n rx: 0.595808\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 14.9941,\n y: 14.7676,\n width: 2.80881,\n height: 1.19162,\n rx: 0.595808\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 10.3979,\n y: 12.6406,\n width: 3.57485,\n height: 3.3195,\n rx: 1\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 10.3979,\n y: 7.70312,\n width: 7.40504,\n height: 1.19162,\n rx: 0.595808\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.68335 9.86523L6.68335 15.6652C6.68335 16.1991 6.25056 16.6319 5.71668 16.6319C5.18281 16.6319 4.75001 16.1991 4.75001 15.6652L4.75001 11.7986C4.75001 10.7308 5.6156 9.86523 6.68335 9.86523Z\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 19,\n cy: 17,\n r: 3.75,\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewsWithNewIcon);\nexport default __webpack_public_path__ + \"static/media/news-with-new-icon.03822592.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.68934 20.2499H4.5C4.30109 20.2499 4.11032 20.1709 3.96967 20.0302C3.82902 19.8896 3.75 19.6988 3.75 19.4999V15.3105C3.75 15.2121 3.7694 15.1145 3.80709 15.0235C3.84478 14.9325 3.90003 14.8499 3.96967 14.7802L15.2197 3.53022C15.3603 3.38956 15.5511 3.31055 15.75 3.31055C15.9489 3.31055 16.1397 3.38956 16.2803 3.53022L20.4697 7.71956C20.6103 7.86021 20.6893 8.05097 20.6893 8.24989C20.6893 8.4488 20.6103 8.63956 20.4697 8.78022L9.21967 20.0302C9.15003 20.0999 9.06735 20.1551 8.97635 20.1928C8.88536 20.2305 8.78783 20.2499 8.68934 20.2499Z\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.75 6L18 11.25\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.95223 20.2013L3.79785 15.0469\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPen);\nexport default __webpack_public_path__ + \"static/media/pen.7fffb470.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPlus(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.80078 1.25V10.75\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.800781 6H10.8008\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlus);\nexport default __webpack_public_path__ + \"static/media/plus.db489529.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgProctoring(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 18,\n viewBox: \"0 0 20 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5247 8.41016V14.4483C15.5247 15.7195 14.4912 16.7504 13.2168 16.7504H6.78254C5.50813 16.7504 4.47461 15.7195 4.47461 14.4483V8.41016L9.03608 10.8518C9.64221 11.1773 10.3571 11.1773 10.9632 10.8518L15.5247 8.41016Z\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.1751 6.98282L15.5252 8.40128L10.9637 10.8429C10.3576 11.1684 9.6427 11.1684 9.03658 10.8429L4.4751 8.40128L1.82525 6.98282C1.11033 6.60302 1.11033 5.59537 1.82525 5.21556L9.03658 1.35549C9.6427 1.02994 10.3576 1.02994 10.9637 1.35549L18.1751 5.21556C18.89 5.59537 18.89 6.60302 18.1751 6.98282Z\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.7119 6.10742V12.6184\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProctoring);\nexport default __webpack_public_path__ + \"static/media/proctoring.33a0269d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgRedArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 13,\n viewBox: \"0 0 7 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 12L1 6.5L6 1\",\n stroke: \"#EA5959\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRedArrow);\nexport default __webpack_public_path__ + \"static/media/red-arrow.fef37613.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgRedStat(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 55,\n height: 52,\n viewBox: \"0 0 55 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.13844 18.825C9.13844 18.825 4.59811 12.25 8.7645 8.32222C12.9279 4.39444 19.8945 8.67778 19.8945 8.67778C19.8945 8.67778 21.6111 1 27.5 1C33.3889 1 35.1055 8.67778 35.1055 8.67778C35.1055 8.67778 42.075 4.39444 46.2384 8.32222C50.4048 12.25 45.8645 18.825 45.8645 18.825C45.8645 18.825 54 20.4444 54 26C54 31.5556 45.8645 33.175 45.8645 33.175C45.8645 33.175 50.4048 39.75 46.2384 43.6778C42.075 47.6056 35.1055 43.3222 35.1055 43.3222C35.1055 43.3222 33.3889 51 27.5 51C21.6111 51 19.8945 43.3222 19.8945 43.3222C19.8945 43.3222 12.9279 47.6056 8.7645 43.6778C4.59811 39.75 9.13844 33.175 9.13844 33.175C9.13844 33.175 1 31.5556 1 26C1 20.4444 9.13844 18.825 9.13844 18.825Z\",\n stroke: \"#EA5959\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.5 15.9746V27.0857\",\n stroke: \"#EA5959\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28.9757 31.2326C28.9757 31.9993 28.3161 32.6215 27.5035 32.6215C26.6908 32.6215 26.0312 31.9993 26.0312 31.2326C26.0312 30.466 26.6908 29.8438 27.5035 29.8438C28.3161 29.8438 28.9757 30.466 28.9757 31.2326Z\",\n fill: \"#EA5959\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRedStat);\nexport default __webpack_public_path__ + \"static/media/red-stat.a70d12f7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgReplaceIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 5.41992C2.64422 7.33832 1.5 9.96572 1.5 12.8638C1.5 18.7381 6.20101 23.5002 12 23.5002C17.799 23.5002 22.5 18.7381 22.5 12.8638C22.5 9.96572 21.3558 7.33832 19.5 5.41992\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 1L12 14.5M12 1L9 2.96154M12 1L15 2.96154\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReplaceIcon);\nexport default __webpack_public_path__ + \"static/media/replace-icon.9edadaed.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgReportingIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 19,\n viewBox: \"0 0 18 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.7299 9.10109L8.87994 15.9011C7.40994 17.3611 5.01994 17.3611 3.54994 15.9011C2.83994 15.1911 2.44994 14.2511 2.44994 13.2511C2.44994 12.2511 2.83994 11.3111 3.54994 10.6011L11.7099 2.51109L11.7899 2.42109C12.7499 1.46109 14.3299 1.46109 15.2999 2.42109C15.7699 2.88109 16.0299 3.50109 16.0299 4.16109C16.0299 4.82109 15.7699 5.44109 15.3099 5.90109L15.2299 5.97109L15.1899 6.01109L7.23993 13.8611C6.78993 14.3111 6.03994 14.3111 5.58994 13.8611C5.36994 13.6411 5.24994 13.3511 5.24994 13.0511C5.24994 12.7511 5.36994 12.4511 5.58994 12.2411L10.5099 7.38109C10.6499 7.24109 10.7299 7.06109 10.7299 6.86109C10.7299 6.66109 10.6499 6.48109 10.5099 6.34109C10.2299 6.06109 9.76993 6.06109 9.47993 6.34109L4.55994 11.2111L4.49994 11.2811C3.55994 12.3111 3.58994 13.8811 4.58994 14.8611C5.58994 15.8511 7.17993 15.8811 8.21993 14.9411L16.3299 6.98109V6.96109H16.3399C17.0799 6.22109 17.4899 5.23109 17.4899 4.19109C17.4899 3.15109 17.0799 2.15109 16.3299 1.40109C14.7799 -0.138906 12.2599 -0.138906 10.7199 1.40109L2.49994 9.56109L2.41994 9.64109C0.479935 11.6811 0.529935 14.9311 2.52994 16.9211C3.54994 17.9311 4.89994 18.4411 6.24994 18.4411C7.55994 18.4411 8.86994 17.9611 9.86994 17.0111L16.3199 10.6111L16.7699 10.1611C16.9099 10.0211 16.9899 9.83109 16.9899 9.63109C16.9899 9.43109 16.9099 9.24109 16.7699 9.10109C16.4799 8.81109 16.0099 8.81109 15.7199 9.10109H15.7299Z\",\n fill: \"#585C6F\",\n strokeWidth: 0\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReportingIcon);\nexport default __webpack_public_path__ + \"static/media/reporting-icon.d331f200.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSmallArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 6,\n viewBox: \"0 0 8 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.228 1.635C0.085 1.462 0 1.241 0 1C0 0.448 0.448 0 1 0L7 0C7.552 0 8 0.448 8 1C8 1.241 7.915 1.462 7.772 1.635L4.808 5.589C4.626 5.838 4.332 6 4 6C3.668 6 3.374 5.838 3.192 5.589L0.228 1.635Z\",\n fill: \"#252232\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmallArrow);\nexport default __webpack_public_path__ + \"static/media/small-arrow.db610f73.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSmallArrowLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.365 6.228C11.538 6.085 11.759 6 12 6C12.552 6 13 6.448 13 7L13 13C13 13.552 12.552 14 12 14C11.759 14 11.538 13.915 11.365 13.772L7.411 10.808C7.162 10.626 7 10.332 7 10C7 9.668 7.162 9.374 7.411 9.192L11.365 6.228Z\",\n fill: \"#252232\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmallArrowLeft);\nexport default __webpack_public_path__ + \"static/media/small-arrow-left.f8088e76.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSmallArrowRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.635 13.772C8.462 13.915 8.241 14 8 14C7.448 14 7 13.552 7 13L7 7C7 6.448 7.448 6 8 6C8.241 6 8.462 6.085 8.635 6.228L12.589 9.192C12.838 9.374 13 9.668 13 10C13 10.332 12.838 10.626 12.589 10.808L8.635 13.772Z\",\n fill: \"#252232\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmallArrowRight);\nexport default __webpack_public_path__ + \"static/media/small-arrow-right.9567e0b0.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSortArrows(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 16C5.5 16.2761 5.72386 16.5 6 16.5C6.27614 16.5 6.5 16.2761 6.5 16H5.5ZM6.35355 3.64645C6.15829 3.45118 5.84171 3.45118 5.64645 3.64645L2.46447 6.82843C2.2692 7.02369 2.2692 7.34027 2.46447 7.53553C2.65973 7.7308 2.97631 7.7308 3.17157 7.53553L6 4.70711L8.82843 7.53553C9.02369 7.7308 9.34027 7.7308 9.53553 7.53553C9.7308 7.34027 9.7308 7.02369 9.53553 6.82843L6.35355 3.64645ZM6.5 16L6.5 4H5.5L5.5 16H6.5Z\",\n fill: \"#919399\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 4C14.5 3.72386 14.2761 3.5 14 3.5C13.7239 3.5 13.5 3.72386 13.5 4H14.5ZM13.6464 16.3536C13.8417 16.5488 14.1583 16.5488 14.3536 16.3536L17.5355 13.1716C17.7308 12.9763 17.7308 12.6597 17.5355 12.4645C17.3403 12.2692 17.0237 12.2692 16.8284 12.4645L14 15.2929L11.1716 12.4645C10.9763 12.2692 10.6597 12.2692 10.4645 12.4645C10.2692 12.6597 10.2692 12.9763 10.4645 13.1716L13.6464 16.3536ZM13.5 4V16H14.5V4H13.5Z\",\n fill: \"#919399\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSortArrows);\nexport default __webpack_public_path__ + \"static/media/sort-arrows.c1ab9f4e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStrokeArrowRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 1L7 7L1 13\",\n stroke: \"#919399\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStrokeArrowRight);\nexport default __webpack_public_path__ + \"static/media/stroke-arrow-right.2b0fe56f.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTick(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 1H4C2.34315 1 1 2.34315 1 4V18C1 19.6569 2.34315 21 4 21H18C19.6569 21 21 19.6569 21 18V12.5V10V4C21 2.34315 19.6569 1 18 1Z\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 11L9 15L18 6\",\n stroke: \"#585C6F\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTick);\nexport default __webpack_public_path__ + \"static/media/tick.4f2da058.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTimeSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10,\n cy: 10,\n r: 5.5,\n stroke: \"#585C6F\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 7V10L12 12\",\n stroke: \"#585C6F\",\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimeSmall);\nexport default __webpack_public_path__ + \"static/media/time-small.95b292f8.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTrashBasket(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 20,\n viewBox: \"0 0 18 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 3L14 19H4L3 3\",\n stroke: \"#EA5959\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 3H17\",\n stroke: \"#EA5959\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 3V2C7 1.448 7.447 1 8 1H10C10.553 1 11 1.448 11 2V3\",\n stroke: \"#EA5959\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrashBasket);\nexport default __webpack_public_path__ + \"static/media/trash-basket.7949f424.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgUnchecked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 6,\n viewBox: \"0 0 8 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 3.16707L2.84615 5.01322L7 0.859375\",\n stroke: \"#0088E9\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnchecked);\nexport default __webpack_public_path__ + \"static/media/unchecked.bc290813.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgWindowsIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 140,\n viewBox: \"0 0 140 140\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.3\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 24C20 21.7909 21.7909 20 24 20H68V68H20V24Z\",\n fill: \"#0088E9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 72H68V120H24C21.7909 120 20 118.209 20 116V72Z\",\n fill: \"#0088E9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72 20H116C118.209 20 120 21.7909 120 24V68H72V20Z\",\n fill: \"#0088E9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72 72H120V116C120 118.209 118.209 120 116 120H72V72Z\",\n fill: \"#0088E9\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWindowsIcon);\nexport default __webpack_public_path__ + \"static/media/windows-icon.acfb8564.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/auth-background.c4937c99.png\";","var _path, _rect;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCheckCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 60,\n height: 60,\n viewBox: \"0 0 60 60\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 29.7021L27.1918 38L42 23\",\n stroke: \"#0088E9\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 1.5,\n y: 1.5,\n width: 57,\n height: 57,\n rx: 28.5,\n stroke: \"#0088E9\",\n strokeWidth: 3\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckCircle);\nexport default __webpack_public_path__ + \"static/media/check-circle.dadc1e1c.svg\";\nexport { ForwardRef as ReactComponent };","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALMAAAEBCAYAAAAzYZQ5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVBSURBVHgB7dq/jxxnHYDxd+6HbewDbJTIUpoYRIogWQKJAhoSKzRIKO5d+T+wKKEH2oQWIVGBKChCjURCQ4NEkCWaoGBKk8jnSGcb++xbdk5Y2IeVKF3umc+nuNuZbjXPvvvdeWca/7W7Wp0ddx9eW63Gq+vDVwd8tr17MFZvPrdz4pePT0zzn9179y6sHm3+YX14YcCxMt2YNjcvnfvc+v98eGvvwT+EzPG1Dnl/8xubH+49uDqN6eqA4+vsauPg/sbGmK4NOOamabwy3drbXw0I2BgQIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTsTUW4M7+arz19/vj+gcPx/u3Hx0eL9mZ7Wlc+dqpcfmrJ0fJdGuve2UfR/zWe/cXH/BRc9C/ef2LoyS7Mt+8ezB+/Kc7hysx/29nHXNNMuZ5Ff7RO3uHQT9pXo2+/cL24f8zwYv5abz24olRk4z553+991TIc7jzfHj5pZOLj7gsF/Mc8e//+eCpcz/9zs74ytnNQVvu1tyv//bvp46vvHxKyAuRW5mP/uD7uNnw8d2Of905GEsyj1qvr8eu82daa1kv5o/+F/PF57Y+9oLNs/XRkWQprn/4cPzstc+PkkXvAIZvsX+im8Fvo3TMT67SzzLP0+dPL+/zfLgDuH7vNent7HkmnrewLz7/7Lc5/zD8xfe+MGjIL0tv/PmureyFyMc833f+4R/3kjMiT8s9aPT9395+5vl5Np7HjflW3dK3s3dONN//Ih4Bnc0r9M31bbil3oo7an4EtPYj0MP5C/WrIzulBWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGWImQ8xkiJkMMZMhZjLETIaYyRAzGbmYz5/2+Vyq3JX/1gvbg2USMxm5mC8+vyXohUoOmD/45mmz8wIlr/iZ7Wn85JUdQS9M9mrPIc9Bf/fFE4NlmG7t7a9G3M27B+N3790f1z94ON7/6NFYuvmb68rLp8bll06OkkXEzDIYKskQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJkPMZIiZDDGTIWYyxEyGmMkQMxliJmOO+e0Bx9+7G6vVeGfAMTeN1ZvT7u7q7Gp7/y/rwwsDjqXpxpd2tr68ce7cdHvafHRpjNWNAcfOdGPa3Lx0+OrJ07t7D66uxnRt/fLrAz7b3p5H5I2drTfOTdPt+cR/AB1g5E3FeOQYAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/empty-calendar-day.4ae66c67.png\";","export default __webpack_public_path__ + \"static/media/empty-dashboard.1f3406c0.png\";","export default __webpack_public_path__ + \"static/media/empty-homework-teacher.585a5ff9.png\";","export default __webpack_public_path__ + \"static/media/empty-homework.944bdd28.png\";","export default __webpack_public_path__ + \"static/media/empty-library.825eb794.png\";","export default __webpack_public_path__ + \"static/media/empty-marks.4366f78b.png\";","export default __webpack_public_path__ + \"static/media/empty-news.aa24c74c.png\";","export default __webpack_public_path__ + \"static/media/empty-online-lesson.db01455a.png\";","export default __webpack_public_path__ + \"static/media/empty-questions-list.990bebc3.png\";","export default __webpack_public_path__ + \"static/media/empty-schedule.bb12eca7.png\";","export default __webpack_public_path__ + \"static/media/empty-students-list.3bd13c11.png\";","export default __webpack_public_path__ + \"static/media/empty-subject.0100d295.png\";","export default __webpack_public_path__ + \"static/media/empty-video.6781d455.png\";","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLogoText(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 24,\n viewBox: \"0 0 140 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9577 14.8412L19.7691 15.5018L3.76366 6.44852C3.48633 6.2931 3.36748 5.9434 3.56556 5.67142C3.72403 5.39943 4.08059 5.28286 4.35792 5.47714L20.9577 14.8412Z\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.6612 11.966L12.1626 6.02113L5.70493 2.32987C3.1694 0.931084 0 2.71843 0 5.55486V20.3199C0 23.1564 3.12979 24.9048 5.62569 23.5061L18.2241 16.4344L2.97132 7.80847C1.94126 7.22567 1.5847 5.90456 2.17897 4.89432C2.77323 3.84523 4.12023 3.49553 5.15028 4.07836L22.5028 13.9088L22.6216 13.8311C23.414 13.4425 23.414 12.3546 22.6612 11.966Z\",\n fill: \"#0088E9\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.3621 12.5114H38.9345V21.5647H36.9536V10.8406H44.3621V12.5114Z\",\n fill: \"#585C6F\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.7917 13.3664V21.526H51.9297V20.4769C51.6127 20.8266 51.2165 21.1375 50.7807 21.3317C50.3053 21.526 49.8299 21.6426 49.2752 21.6426C48.166 21.6426 47.2944 21.3317 46.6209 20.7489C45.987 20.1272 45.6701 19.2335 45.6701 18.029V13.3664H47.6113V17.7959C47.6113 18.5341 47.7698 19.0781 48.1264 19.4278C48.4829 19.7775 48.9584 19.9718 49.5922 19.9718C50.2657 19.9718 50.8203 19.7775 51.2562 19.3501C51.6523 18.9227 51.89 18.301 51.89 17.5239V13.3664H53.7917Z\",\n fill: \"#585C6F\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.6453 21.5648V16.1251L61.8325 20.6712H61.0005L58.2272 16.0863V21.526H56.4445V13.3664H58.5046L61.4759 18.4953L64.5661 13.3664H66.3885V21.526L64.6453 21.5648Z\",\n fill: \"#585C6F\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0843 13.3664H71.0255V16.7079H75.2252V13.3664H77.1661V21.526H75.2252V18.301H71.0255V21.526H69.0843V13.3664Z\",\n fill: \"#585C6F\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.9409 13.3663V21.5259H86.0792V20.4769C85.7624 20.8654 85.3664 21.1374 84.8905 21.3317C84.4152 21.5259 83.9001 21.6036 83.3057 21.6036C82.5137 21.6036 81.7609 21.4482 81.1272 21.0985C80.493 20.7488 79.9778 20.2437 79.6217 19.622C79.2649 19.0003 79.0666 18.2621 79.0666 17.4073C79.0666 16.5525 79.2649 15.853 79.6217 15.1925C79.9778 14.5708 80.493 14.0657 81.1272 13.716C81.7609 13.3663 82.4737 13.2109 83.3057 13.2109C83.8608 13.2109 84.336 13.2886 84.8113 13.4828C85.2472 13.6772 85.6433 13.9491 86 14.2988V13.3663H87.9409ZM85.3264 19.3112C85.8017 18.8449 86.0393 18.2232 86.0393 17.4461C86.0393 16.669 85.8017 16.0474 85.3264 15.5811C84.8512 15.1148 84.2568 14.8817 83.5433 14.8817C82.8305 14.8817 82.2361 15.1148 81.7609 15.5811C81.2857 16.0474 81.048 16.669 81.048 17.4461C81.048 18.2232 81.2857 18.8449 81.7609 19.3112C82.2361 19.7775 82.8305 20.0106 83.5433 20.0106C84.2568 20.0106 84.8512 19.7775 85.3264 19.3112Z\",\n fill: \"#585C6F\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.6581 17.9901C96.935 18.3009 97.0934 18.6895 97.0934 19.1558C97.0934 19.6609 96.935 20.0883 96.5783 20.4769C96.2222 20.8654 95.7469 21.1762 95.1526 21.3705C94.5582 21.6036 93.8447 21.6814 93.0919 21.6814C92.4583 21.6814 91.8246 21.6036 91.1903 21.4482C90.5567 21.2928 90.0023 21.0985 89.5264 20.8265L90.0815 19.3889C90.4775 19.622 90.9527 19.7775 91.4679 19.894C91.983 20.0106 92.4982 20.0883 93.0127 20.0883C93.6863 20.0883 94.1622 19.9717 94.5582 19.7775C94.9149 19.5831 95.1126 19.3112 95.1126 18.9615C95.1126 18.6506 94.9542 18.4175 94.6767 18.2232C94.3998 18.0678 94.0031 17.9512 93.4487 17.9512H91.8246V16.669H93.2903C93.7655 16.669 94.1622 16.5913 94.4391 16.4359C94.7166 16.2805 94.8351 16.0474 94.8351 15.7365C94.8351 15.4256 94.6767 15.1925 94.3206 15.0371C94.0038 14.8817 93.5279 14.7651 92.9335 14.7651C92.1015 14.7651 91.2303 14.9594 90.2792 15.3479L89.7646 13.9491C90.8735 13.444 91.9431 13.2109 93.0919 13.2109C93.8054 13.2109 94.4391 13.2886 94.9942 13.4828C95.5486 13.6772 95.9845 13.9491 96.3014 14.26C96.6182 14.6097 96.7766 14.9982 96.7766 15.4256C96.7766 15.8142 96.6581 16.1639 96.4199 16.4747C96.1822 16.7856 95.8261 17.0187 95.3902 17.213C95.9446 17.4461 96.3806 17.6792 96.6581 17.9901Z\",\n fill: \"#585C6F\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.039 13.3664V21.526H105.176V20.4769C104.859 20.8266 104.463 21.1375 104.028 21.3317C103.552 21.526 103.076 21.6426 102.522 21.6426C101.412 21.6426 100.541 21.3317 99.8676 20.7489C99.234 20.1272 98.9165 19.2335 98.9165 18.029V13.3664H100.858V17.7959C100.858 18.5341 101.016 19.0781 101.373 19.4278C101.729 19.7775 102.205 19.9718 102.839 19.9718C103.512 19.9718 104.067 19.7775 104.503 19.3501C104.899 18.9227 105.136 18.301 105.136 17.5239V13.3664H107.039Z\",\n fill: \"#585C6F\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.744 13.3664V21.526H115.001V19.0781H112.782L111.078 21.526H108.978L110.959 18.8061C110.365 18.6119 109.89 18.301 109.573 17.8736C109.256 17.4462 109.098 16.9411 109.098 16.3194C109.098 15.3869 109.454 14.6486 110.127 14.1435C110.801 13.6383 111.752 13.3664 112.94 13.3664H116.744ZM111.118 16.3971C111.118 17.3296 111.712 17.757 112.94 17.757H115.001V14.9983H112.98C111.712 14.9983 111.118 15.4645 111.118 16.3971Z\",\n fill: \"#585C6F\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140 12.7453V21.6821H138.296V14.1052H136.355V12.7065L140 12.7453Z\",\n fill: \"#585C6F\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.292 12.7444V21.6812H128.905L123.913 15.6197V21.6812H122.249V12.7444H123.636L128.667 18.8059V12.7444H130.292Z\",\n fill: \"#585C6F\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133.382 13.9489C134.017 13.9489 134.531 14.4541 134.531 15.0758C134.531 15.6974 134.017 16.2025 133.382 16.2025C132.749 16.2025 132.234 15.6974 132.234 15.0758C132.194 14.4541 132.749 13.9489 133.382 13.9489ZM133.382 12.7444C132.035 12.7444 130.966 13.7935 130.966 15.1146C130.966 16.4357 132.035 17.4848 133.382 17.4848C134.73 17.4848 135.799 16.4357 135.799 15.1146C135.799 13.7935 134.69 12.7444 133.382 12.7444Z\",\n fill: \"#585C6F\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.523 18.3401H131.284V19.5835H135.523V18.3401Z\",\n fill: \"#585C6F\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.252 7.30478C100.816 7.07168 100.46 6.76082 100.223 6.33338C99.9843 5.90599 99.8659 5.43973 99.8659 4.89575C99.8659 4.35178 99.9843 3.88552 100.223 3.45811C100.46 3.0307 100.816 2.71986 101.252 2.48672C101.688 2.2536 102.203 2.13703 102.758 2.13703C103.312 2.13703 103.827 2.2536 104.263 2.48672C104.699 2.71986 105.055 3.0307 105.294 3.45811C105.531 3.88552 105.65 4.35178 105.65 4.89575C105.65 5.43973 105.531 5.90599 105.294 6.33338C105.055 6.76082 104.699 7.07168 104.263 7.30478C103.827 7.53789 103.312 7.65448 102.758 7.65448C102.203 7.69332 101.688 7.53789 101.252 7.30478ZM103.907 6.13913C104.223 5.82828 104.382 5.43973 104.382 4.93461C104.382 4.42949 104.223 4.04094 103.907 3.7301C103.59 3.41925 103.194 3.26383 102.719 3.26383C102.243 3.26383 101.847 3.41925 101.569 3.7301C101.252 4.04094 101.094 4.42949 101.094 4.93461C101.094 5.43973 101.252 5.82828 101.569 6.13913C101.887 6.44997 102.283 6.6054 102.719 6.6054C103.233 6.6054 103.59 6.44997 103.907 6.13913Z\",\n fill: \"#585C6F\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.957 2.21477H108.225V4.39067H110.999V2.21477H112.267V7.61567H110.999V5.47862H108.225V7.61567H106.957V2.21477Z\",\n fill: \"#585C6F\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.002 2.21477V7.61567H117.735V3.30272H115.675L115.635 4.39067C115.595 5.09006 115.516 5.71175 115.437 6.17801C115.357 6.64427 115.16 7.0328 114.922 7.30481C114.684 7.57683 114.367 7.73225 113.932 7.73225C113.733 7.73225 113.496 7.69335 113.218 7.61567L113.297 6.56659C113.377 6.60543 113.456 6.60543 113.535 6.60543C113.813 6.60543 114.011 6.48884 114.129 6.29458C114.248 6.10031 114.328 5.82832 114.367 5.55633C114.407 5.28434 114.446 4.85693 114.446 4.31296L114.525 2.25363L119.002 2.21477Z\",\n fill: \"#585C6F\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.054 2.21566V7.61656H124.825V6.91717C124.628 7.18912 124.35 7.38345 124.033 7.49997C123.717 7.61656 123.36 7.69424 123.003 7.69424C122.488 7.69424 121.973 7.57772 121.577 7.34455C121.141 7.11144 120.824 6.80059 120.586 6.37321C120.349 5.94577 120.23 5.47951 120.23 4.93554C120.23 4.39156 120.349 3.88644 120.586 3.49789C120.824 3.07048 121.141 2.75964 121.577 2.52651C122.013 2.29337 122.488 2.17681 123.003 2.17681C123.36 2.17681 123.677 2.25452 123.993 2.37109C124.311 2.48765 124.549 2.68193 124.786 2.91506V2.25452L126.054 2.21566ZM124.311 6.14005C124.628 5.82921 124.786 5.44066 124.786 4.93554C124.786 4.43042 124.628 4.04186 124.311 3.73102C123.993 3.42018 123.597 3.26475 123.122 3.26475C122.647 3.26475 122.25 3.42018 121.973 3.73102C121.656 4.04186 121.498 4.43042 121.498 4.93554C121.498 5.44066 121.656 5.82921 121.973 6.14005C122.29 6.45089 122.686 6.60632 123.122 6.60632C123.637 6.60632 124.033 6.45089 124.311 6.14005Z\",\n fill: \"#585C6F\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.987 2.21477V7.61567H131.759V6.91628C131.561 7.14939 131.284 7.34366 131.006 7.46024C130.689 7.57683 130.373 7.65451 130.016 7.65451C129.263 7.65451 128.709 7.46024 128.273 7.07171C127.837 6.68311 127.638 6.06145 127.638 5.28434V2.21477H128.906V5.12892C128.906 5.59519 129.025 5.98374 129.223 6.21687C129.461 6.45 129.778 6.56659 130.174 6.56659C130.61 6.56659 131.006 6.41116 131.244 6.13916C131.521 5.86717 131.64 5.43976 131.64 4.93464V2.21477H132.987Z\",\n fill: \"#585C6F\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.691 2.21477H135.958V4.39067H138.732V2.21477H140V7.61567H138.732V5.47862H135.958V7.61567H134.691V2.21477Z\",\n fill: \"#585C6F\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.292 1.55422C130.73 1.55422 131.085 1.20629 131.085 0.777108C131.085 0.347923 130.73 0 130.292 0C129.855 0 129.5 0.347923 129.5 0.777108C129.5 1.20629 129.855 1.55422 130.292 1.55422Z\",\n fill: \"#585C6F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoText);\nexport default __webpack_public_path__ + \"static/media/logo-text.59b145b5.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLogoText2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 200,\n height: 40,\n viewBox: \"0 0 200 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.9432 22.9727L29.1884 23.9953L5.5569 9.98069C5.37628 9.85468 5.24942 9.66234 5.2024 9.44317C5.15538 9.22399 5.19175 8.99462 5.30405 8.80216C5.41635 8.6097 5.59605 8.46876 5.80625 8.40828C6.01645 8.34781 6.24119 8.37239 6.43431 8.47698L30.9432 22.9727Z\",\n fill: \"url(#paint0_linear_1263_12079)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.4584 18.5218L17.9576 9.31906L8.4231 3.60496C7.56837 3.10991 6.60303 2.85222 5.62205 2.85722C4.64108 2.86222 3.67828 3.12975 2.82836 3.63349C1.97845 4.13723 1.27072 4.85982 0.774799 5.73016C0.278878 6.6005 0.0118539 7.58861 0 8.59727V31.4537C0.00219453 32.4523 0.259414 33.4329 0.745919 34.2972C1.23242 35.1615 1.93115 35.8793 2.77218 36.3787C3.6132 36.8781 4.56703 37.1416 5.53821 37.1429C6.50939 37.1441 7.46386 36.8831 8.30611 36.3858L26.9071 25.4388L4.38703 12.0859C3.655 11.6426 3.12197 10.9209 2.90307 10.0768C2.68418 9.23276 2.79699 8.33401 3.21715 7.57475C3.42243 7.19342 3.69933 6.85783 4.03179 6.58748C4.36425 6.31712 4.74564 6.11738 5.1538 5.99986C5.56196 5.88234 5.98877 5.84939 6.40942 5.90291C6.83007 5.95643 7.23619 6.09536 7.60418 6.31163L33.2244 21.5292L33.3999 21.4089C33.6606 21.2779 33.8811 21.0756 34.0373 20.8242C34.1935 20.5727 34.2793 20.2819 34.2854 19.9837C34.2914 19.6854 34.2174 19.3912 34.0716 19.1333C33.9257 18.8754 33.7135 18.6638 33.4584 18.5218Z\",\n fill: \"url(#paint1_linear_1263_12079)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.622 19.3621H47.4282V33.3726H44.4377V16.7765H55.622V19.3621Z\",\n fill: \"#100A3A\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.8564 20.685V33.3125H67.0454V31.689C66.5637 32.245 65.9733 32.6953 65.3109 33.0119C64.594 33.3267 63.8205 33.4904 63.0382 33.4929C61.577 33.5551 60.1462 33.0613 59.031 32.1099C58.0741 31.1478 57.5956 29.7648 57.5956 27.9007V20.685H60.5263V27.5399C60.4838 27.9917 60.5306 28.4474 60.664 28.8808C60.7975 29.3142 61.0149 29.7169 61.3038 30.0654C61.5963 30.3497 61.9434 30.571 62.3239 30.7158C62.7044 30.8605 63.1103 30.9257 63.5167 30.9073C63.9786 30.9282 64.4398 30.8536 64.8719 30.6882C65.304 30.5227 65.6977 30.2698 66.0287 29.9452C66.6884 29.1569 67.0299 28.1483 66.9856 27.119V20.685H69.8564Z\",\n fill: \"#100A3A\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.244 33.3726V24.9543L81.9976 31.9896H80.7416L76.555 24.8942V33.3125H73.8636V20.685H76.9736L81.4593 28.6223L86.1243 20.685H88.8755V33.3125L86.244 33.3726Z\",\n fill: \"#100A3A\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M92.9425 20.685H95.8732V25.8563H102.213V20.685H105.143V33.3125H102.213V28.3217H95.8732V33.3125H92.9425V20.685Z\",\n fill: \"#100A3A\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.411 20.685V33.3125H118.6V31.689C118.125 32.2777 117.507 32.7334 116.806 33.0119C116.045 33.3121 115.231 33.4553 114.414 33.4328C113.269 33.4597 112.136 33.1906 111.124 32.6511C110.172 32.1144 109.385 31.3237 108.852 30.3661C108.281 29.3161 107.993 28.1348 108.014 26.9386C108 25.7433 108.288 24.5639 108.852 23.5112C109.385 22.5536 110.172 21.7629 111.124 21.2262C112.134 20.6799 113.268 20.4103 114.414 20.4445C115.192 20.4271 115.966 20.5704 116.687 20.8654C117.356 21.174 117.963 21.6018 118.481 22.1282V20.685H121.411ZM117.464 29.8851C117.829 29.5027 118.113 29.0495 118.298 28.5533C118.483 28.0571 118.566 27.5282 118.541 26.9988C118.566 26.4694 118.483 25.9405 118.298 25.4442C118.113 24.948 117.829 24.4949 117.464 24.1125C116.738 23.4184 115.775 23.0313 114.773 23.0313C113.771 23.0313 112.807 23.4184 112.081 24.1125C111.716 24.4949 111.433 24.948 111.248 25.4442C111.062 25.9405 110.98 26.4694 111.005 26.9988C110.98 27.5282 111.062 28.0571 111.248 28.5533C111.433 29.0495 111.716 29.5027 112.081 29.8851C112.807 30.5792 113.771 30.9663 114.773 30.9663C115.775 30.9663 116.738 30.5792 117.464 29.8851Z\",\n fill: \"#100A3A\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.569 27.8406C135.004 28.3387 135.239 28.9819 135.227 29.6445C135.243 30.4018 134.964 31.1352 134.45 31.689C133.864 32.331 133.122 32.8078 132.297 33.072C131.299 33.4256 130.244 33.5887 129.187 33.553C128.219 33.5516 127.254 33.4305 126.316 33.1923C125.438 32.992 124.592 32.6681 123.804 32.2302L124.641 30.0053C125.294 30.3731 126.001 30.6368 126.734 30.787C127.498 30.9757 128.281 31.0765 129.067 31.0877C129.872 31.1176 130.672 30.9526 131.399 30.6066C131.644 30.4974 131.852 30.3208 132 30.0972C132.148 29.8737 132.23 29.6125 132.237 29.3439C132.233 29.1129 132.17 28.8868 132.055 28.6869C131.94 28.487 131.776 28.3199 131.579 28.2014C131.008 27.9007 130.369 27.7556 129.725 27.7805H127.273V25.7962H129.486C130.085 25.8235 130.681 25.6994 131.22 25.4354C131.413 25.3318 131.571 25.1747 131.678 24.9827C131.784 24.7908 131.832 24.5721 131.818 24.353C131.82 24.113 131.745 23.8787 131.605 23.6841C131.465 23.4895 131.268 23.3447 131.041 23.2707C130.383 22.9736 129.668 22.8298 128.947 22.8497C127.565 22.8795 126.203 23.1861 124.94 23.7517L124.163 21.587C125.731 20.8325 127.448 20.4421 129.187 20.4445C130.16 20.4189 131.131 20.5613 132.057 20.8654C132.796 21.1147 133.47 21.5255 134.031 22.068C134.459 22.5258 134.712 23.1213 134.745 23.7487C134.778 24.3762 134.588 24.9951 134.21 25.4955C133.795 26.0011 133.261 26.3939 132.655 26.638C133.372 26.895 134.025 27.3053 134.569 27.8406Z\",\n fill: \"#100A3A\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.239 20.685V33.3125H147.428V31.689C146.947 32.245 146.356 32.6953 145.694 33.0119C144.977 33.3267 144.203 33.4904 143.421 33.4929C141.96 33.5551 140.529 33.0613 139.414 32.1099C138.457 31.1478 137.978 29.7648 137.978 27.9007V20.685H140.909V27.5399C140.867 27.9917 140.913 28.4474 141.047 28.8808C141.18 29.3142 141.398 29.7169 141.687 30.0654C141.979 30.3497 142.326 30.571 142.707 30.7158C143.087 30.8605 143.493 30.9257 143.899 30.9073C144.361 30.9282 144.823 30.8536 145.255 30.6882C145.687 30.5227 146.08 30.2698 146.411 29.9452C147.071 29.1569 147.413 28.1483 147.368 27.119V20.685H150.239Z\",\n fill: \"#100A3A\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.892 20.685V33.3125H162.261V29.5243H158.911L156.34 33.3125H153.17L156.16 29.1034C155.329 28.8553 154.597 28.3504 154.067 27.6602C153.573 26.9587 153.321 26.114 153.349 25.255C153.321 24.6095 153.448 23.9668 153.719 23.3808C153.989 22.7948 154.396 22.2828 154.904 21.8876C156.15 21.0297 157.642 20.6071 159.151 20.685H164.892ZM156.399 25.3752C156.399 26.8184 157.297 27.4798 159.151 27.4798H162.261V23.2105H159.21C157.297 23.2105 156.399 23.9321 156.399 25.3752Z\",\n fill: \"#100A3A\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M200 19.7229V33.553H197.428V21.8275H194.498V19.6628L200 19.7229Z\",\n fill: \"#100A3A\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M185.347 19.7229V33.553H183.254L175.718 24.1726V33.553H173.206V19.7229H175.299L182.895 29.1034V19.7229H185.347Z\",\n fill: \"#100A3A\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M190.012 21.587C190.355 21.587 190.69 21.6893 190.976 21.8809C191.261 22.0725 191.483 22.3448 191.614 22.6635C191.746 22.9821 191.78 23.3327 191.713 23.671C191.646 24.0092 191.481 24.32 191.238 24.5638C190.996 24.8077 190.687 24.9738 190.35 25.0411C190.014 25.1084 189.665 25.0738 189.348 24.9418C189.031 24.8099 188.76 24.5864 188.57 24.2996C188.379 24.0128 188.277 23.6757 188.277 23.3308C188.273 23.1004 188.314 22.8715 188.4 22.6577C188.485 22.4439 188.613 22.2497 188.775 22.0868C188.937 21.9239 189.13 21.7956 189.342 21.7097C189.555 21.6238 189.783 21.5821 190.012 21.587ZM190.012 19.7229C189.29 19.7229 188.585 19.9381 187.985 20.3411C187.385 20.7441 186.917 21.317 186.641 21.9872C186.365 22.6575 186.293 23.395 186.434 24.1065C186.574 24.818 186.922 25.4716 187.432 25.9846C187.942 26.4976 188.592 26.8469 189.3 26.9884C190.008 27.13 190.741 27.0573 191.408 26.7797C192.075 26.5021 192.645 26.0319 193.045 25.4287C193.446 24.8255 193.66 24.1164 193.66 23.3909C193.657 22.4191 193.272 21.488 192.588 20.8008C191.905 20.1136 190.979 19.7261 190.012 19.7229Z\",\n fill: \"#100A3A\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.242 28.3818H186.842V30.306H193.242V28.3818Z\",\n fill: \"#100A3A\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.507 11.3046C140.854 10.9675 140.313 10.4447 139.952 9.80134C139.586 9.11853 139.4 8.35229 139.414 7.57649C139.4 6.8007 139.586 6.03446 139.952 5.35165C140.313 4.70824 140.854 4.18552 141.507 3.84838C142.213 3.49241 142.991 3.30704 143.78 3.30704C144.569 3.30704 145.347 3.49241 146.053 3.84838C146.706 4.18552 147.247 4.70824 147.608 5.35165C147.974 6.03446 148.16 6.8007 148.146 7.57649C148.16 8.35229 147.974 9.11853 147.608 9.80134C147.247 10.4447 146.706 10.9675 146.053 11.3046C145.352 11.6734 144.571 11.8595 143.78 11.8458C142.986 11.8888 142.197 11.7009 141.507 11.3046ZM145.514 9.50068C145.756 9.2567 145.944 8.96509 146.067 8.64425C146.191 8.32342 146.247 7.98033 146.232 7.63662C146.247 7.29292 146.191 6.94983 146.067 6.62899C145.944 6.30816 145.756 6.01655 145.514 5.77257C145.28 5.53551 145 5.3492 144.692 5.2251C144.383 5.101 144.052 5.04175 143.72 5.051C143.396 5.03611 143.073 5.09304 142.773 5.21773C142.473 5.34242 142.205 5.53184 141.986 5.77257C141.744 6.01655 141.556 6.30816 141.433 6.62899C141.309 6.94983 141.253 7.29292 141.268 7.63662C141.253 7.98033 141.309 8.32342 141.433 8.64425C141.556 8.96509 141.744 9.2567 141.986 9.50068C142.211 9.73231 142.482 9.91563 142.78 10.0396C143.078 10.1636 143.398 10.2258 143.72 10.2223C144.053 10.2371 144.385 10.1804 144.695 10.056C145.004 9.93155 145.283 9.74225 145.514 9.50068Z\",\n fill: \"#808A9E\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.12 3.42746H152.034V6.79479H156.22V3.42746H158.134V11.7857H156.22V8.47846H152.034V11.7857H150.12V3.42746Z\",\n fill: \"#808A9E\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.301 3.42746V11.7857H166.388V5.11113H163.278L163.218 6.79479C163.167 7.72152 163.068 8.64486 162.919 9.56081C162.82 10.2018 162.552 10.8042 162.141 11.3046C161.959 11.5223 161.729 11.6952 161.47 11.8098C161.211 11.9245 160.929 11.9779 160.646 11.966C160.281 11.9554 159.918 11.8947 159.569 11.7857L159.689 10.1621C159.802 10.2111 159.925 10.2317 160.048 10.2223C160.227 10.2315 160.405 10.1916 160.563 10.1068C160.721 10.0221 160.853 9.89569 160.945 9.74121C161.135 9.38655 161.257 8.9989 161.304 8.59872C161.388 7.96085 161.428 7.31793 161.423 6.67453L161.543 3.48759L168.301 3.42746Z\",\n fill: \"#808A9E\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M178.947 3.42746V11.7857H177.093V10.7033C176.793 11.1175 176.377 11.4316 175.897 11.6053C175.401 11.7973 174.874 11.8991 174.342 11.9059C173.59 11.9197 172.847 11.733 172.189 11.3647C171.552 11.026 171.031 10.5022 170.694 9.86147C170.327 9.17866 170.142 8.41242 170.156 7.63662C170.134 6.86001 170.32 6.09182 170.694 5.41178C171.031 4.77108 171.552 4.24724 172.189 3.90851C172.849 3.54719 173.59 3.36094 174.342 3.36733C174.855 3.37468 175.361 3.47659 175.837 3.66798C176.293 3.85639 176.701 4.14388 177.034 4.50982V3.48759L178.947 3.42746ZM176.316 9.50068C176.557 9.2567 176.745 8.96509 176.869 8.64425C176.992 8.32342 177.049 7.98033 177.034 7.63662C177.049 7.29292 176.992 6.94983 176.869 6.62899C176.745 6.30816 176.557 6.01655 176.316 5.77257C176.082 5.53551 175.802 5.3492 175.493 5.2251C175.184 5.101 174.854 5.04175 174.522 5.051C174.198 5.03611 173.874 5.09304 173.574 5.21773C173.275 5.34242 173.006 5.53184 172.787 5.77257C172.546 6.01655 172.358 6.30816 172.234 6.62899C172.11 6.94983 172.054 7.29292 172.069 7.63662C172.054 7.98033 172.11 8.32342 172.234 8.64425C172.358 8.96509 172.546 9.2567 172.787 9.50068C173.013 9.73231 173.283 9.91563 173.581 10.0396C173.879 10.1636 174.199 10.2258 174.522 10.2223C174.855 10.2432 175.189 10.1893 175.499 10.0645C175.81 9.93972 176.089 9.74713 176.316 9.50068Z\",\n fill: \"#808A9E\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M189.414 3.42746V11.7857H187.56V10.7033C187.25 11.0675 186.861 11.3554 186.423 11.5451C185.948 11.7365 185.441 11.8384 184.928 11.8458C183.968 11.9009 183.024 11.5774 182.297 10.9438C181.954 10.5757 181.691 10.1393 181.527 9.66282C181.362 9.18639 181.298 8.68049 181.34 8.1778V3.42746H183.254V7.93728C183.221 8.53657 183.389 9.12956 183.732 9.62094C183.922 9.80456 184.147 9.94726 184.394 10.0403C184.641 10.1334 184.904 10.1748 185.168 10.1621C185.468 10.1739 185.768 10.1209 186.046 10.0068C186.325 9.89277 186.576 9.7202 186.782 9.50068C187.218 8.98255 187.433 8.31287 187.38 7.63662V3.42746H189.414Z\",\n fill: \"#808A9E\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M191.986 3.42746H193.9V6.79479H198.086V3.42746H200V11.7857H198.086V8.47846H193.9V11.7857H191.986V3.42746Z\",\n fill: \"#808A9E\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M185.347 2.40524C186.008 2.40524 186.543 1.86681 186.543 1.20262C186.543 0.53843 186.008 0 185.347 0C184.686 0 184.151 0.53843 184.151 1.20262C184.151 1.86681 184.686 2.40524 185.347 2.40524Z\",\n fill: \"#808A9E\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_1263_12079\",\n x1: -0.0464449,\n y1: 19.9526,\n x2: 34.2779,\n y2: 19.9526,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0189F0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0069E6\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_1263_12079\",\n x1: 0,\n y1: 20.0014,\n x2: 34.2832,\n y2: 20.0014,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#0189F0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0069E6\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoText2);\nexport default __webpack_public_path__ + \"static/media/logo-text-2.44111559.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/overdue-homework.6989446c.png\";","export default __webpack_public_path__ + \"static/media/unselected-themes.80e916bf.png\";","export default __webpack_public_path__ + \"static/media/record-bg.62adfbce.png\";","import { QuestionStatus } from 'api/services/questionBank';\nimport { Answer, DifficultyEnum, Topic } from 'api/services/questionCreate';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\n\nexport interface ITextAnswer {\n text: string;\n}\n\nexport interface Revision {\n id: number;\n comment: string;\n dateCreate: string;\n}\n\nexport enum AnswersTypeEnum {\n test = 'test',\n text = 'text',\n essay = 'essay',\n true_false = 'true_false',\n insert_words = 'insert_words',\n}\n\nexport enum PopUpType {\n revision = 'revision',\n search_question = 'search_question',\n}\n\nexport interface IQuestionPopUpProps {\n id: number;\n text: string;\n type: PopUpType;\n answerOptions: Answer[];\n author?: string;\n authorId?: number;\n authorMainRole?: string;\n userId?: number;\n topics: Topic[];\n skills: Topic[];\n difficulty: DifficultyEnum;\n onAddQuestion?: (value: { id: number; text: string; content?: string; html?: string }) => () => void;\n onRemoveQuestion?: (id: number) => () => void;\n onExcludeQuestion?: (id: number) => () => void;\n onIncludeQuestion?: (id: number) => () => void;\n onClosePopUp?: () => void;\n onPublishClick?: (id: number) => void;\n onRevisionClick?: (values: { question: number; comment: string }) => void;\n html?: string;\n statusType?: QuestionStatus;\n revisions?: Revision[];\n content?: string;\n isCorrect?: boolean;\n answers_type: AnswersTypeEnum;\n canExclude?: boolean;\n canInclude?: boolean;\n canAdd?: boolean;\n canRemove?: boolean;\n isTeacher?: boolean;\n isMethodist?: boolean;\n data?: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n}\n","import { getApiRequest } from 'api';\nimport { CourseGroupExpelledStudents } from 'types/courseGroup';\n\nexport const getCourseGroupExpelledStudents = async ({\n courseGroupId,\n lessonId,\n}: {\n courseGroupId: number;\n lessonId: number;\n}): Promise => {\n return await getApiRequest(`/course-groups/${courseGroupId}/expelled-students/?lesson=${lessonId}`);\n};\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n getCourseGroupDetails,\n getCourseGroups,\n getCourseGroupsByAcademicYear,\n getCourseGroupsByCourse,\n getCourseGroupsBySubjectAndYear,\n getCourseGroupStudents,\n getPeriods,\n getTopics,\n patchCourseGroups,\n} from 'api/services/courseGroups';\nimport { getCourseGroupExpelledStudents } from 'api/services/courseGroups/getCourseGroupExplelledStudents';\nimport { getGroupStatistics } from 'api/services/courseGroups/getGroupStatistics';\nimport { getStudentCourseGroups } from 'api/services/courseGroups/getStudentCourseGroups';\nimport { Topic } from 'api/services/courseGroups/getTopics';\nimport { PatchCourseGroupsParams } from 'api/services/courseGroups/patchCourseGroups';\nimport { getAllEducationalPlans, getEducationalPlan } from 'api/services/educationalPlan';\nimport moment from 'moment';\n\nexport const getCourseGroupDetailsAction = createAsyncThunk(\n 'courseGroup/getCourseGroupDetails',\n async (courseGroupId: number) => {\n return await getCourseGroupDetails(courseGroupId);\n },\n);\n\nexport const getPeriodsAction = createAsyncThunk('courseGroup/getPeriods', async (groupId: string) => {\n return await getPeriods(groupId).then((period) =>\n period.period.sort((a, b) => moment(a.dateStart).diff(b.dateStart)),\n );\n});\n\nexport const getCourseGroupExpelledStudentsAction = createAsyncThunk(\n 'courseGroup/expelledStudents',\n async ({ courseGroupId, lessonId }: { courseGroupId: number; lessonId: number }) => {\n return await getCourseGroupExpelledStudents({ courseGroupId, lessonId });\n },\n);\n\nexport const getTopicsAction = createAsyncThunk(\n 'courseGroup/getTopics',\n async (params: { groupId: number; dateStart: string; dateEnd: string }) => {\n return await getTopics(params);\n },\n);\n\nexport const getCourseGroupsByAcademicYearAction = createAsyncThunk(\n 'courseGroup/getCourseGroupsByAcademicYear',\n async (year: number) => {\n return await getCourseGroupsByAcademicYear(year);\n },\n);\n\nexport const getCourseGroupsBySubjectAndYearAction = createAsyncThunk(\n 'courseGroup/getCourseGroupsBySubjectAndYear',\n async (params: { subject: number; year: number }) => {\n return await getCourseGroupsBySubjectAndYear(params);\n },\n);\n\nexport const getCourseGroupDetailsWithStudentsAction = createAsyncThunk(\n 'courseGroup/getCourseGroupDetailsWithStudents',\n async (courseGroupId: number) => {\n return await Promise.all([getCourseGroupDetails(courseGroupId), getCourseGroupStudents(courseGroupId)]);\n },\n);\n\nexport const getCourseGroupsAction = createAsyncThunk(\n 'courseGroup/getCourseGroups',\n async (params: { course?: number } = {}) => {\n return await getCourseGroups(params);\n },\n);\n\nexport const getCourseGroupStudentsAction = createAsyncThunk(\n 'courseGroup/getCourseGroupStudents',\n async (courseGroupId: number) => {\n return await getCourseGroupStudents(courseGroupId);\n },\n);\n\nexport const getCourseGroupsByCourseAction = createAsyncThunk(\n 'courseGroup/getCourseGroupsByCourse',\n async (courseId: number) => {\n return await getCourseGroupsByCourse(courseId);\n },\n);\n\nexport const patchCourseGroupsAction = createAsyncThunk('courseGroup/update', async (data: PatchCourseGroupsParams) => {\n return await patchCourseGroups(data);\n});\n\nexport const getAllEducationalPlanWithCourseGroupsAction = createAsyncThunk(\n 'courseGroup/getAllEducationalPlanWithCourseGroups',\n async () => {\n return await Promise.all([getCourseGroups(), getAllEducationalPlans()]);\n },\n);\n\nexport const getEducationalPlanWithCourseGroupsAction = createAsyncThunk(\n 'courseGroup/getEducationalPlanWithCourseGroups',\n async (params: { studentId: number; planId: number }) => {\n return await Promise.all([getStudentCourseGroups(String(params.studentId)), getEducationalPlan(params.planId)]);\n },\n);\n\nexport interface PeriodTopics {\n id: number;\n dateStart: string;\n dateEnd: string;\n topics: Topic[];\n}\n\nexport const getPeriodTopicsAction = createAsyncThunk('courseGroup/getPeriodTopics', async (groupId: number) => {\n return getPeriods(String(groupId)).then(async (period) => {\n return await Promise.all(\n period.period\n .sort((a, b) => moment(a.dateStart).diff(b.dateStart))\n .map(async (period) => {\n return {\n id: period.id,\n dateStart: period.dateStart,\n dateEnd: period.dateEnd,\n topics: await getTopics({\n groupId: groupId,\n dateStart: period.dateStart,\n dateEnd: period.dateEnd,\n }),\n courseGroup: groupId,\n };\n }),\n );\n });\n});\nexport const resetCourseGroupDataAction = createAction('courseGroup/resetCourseGroup', () => {\n return { payload: undefined };\n});\nexport const getPeriodTopicsWithStudentAction = createAsyncThunk(\n 'courseGroup/getPeriodTopicsWithStudents',\n async (groupId: number) => {\n const periods = await getPeriods(String(groupId)).then((periods) => {\n return { ...periods, period: periods.period.sort((a, b) => moment(a.dateStart).diff(b.dateStart)) };\n });\n\n return await Promise.all([\n await Promise.all(\n periods.period\n .sort((a, b) => moment(a.dateStart).diff(b.dateStart))\n .map(async (period) => {\n return {\n id: period.id,\n dateStart: period.dateStart,\n dateEnd: period.dateEnd,\n topics: await getTopics({\n groupId: groupId,\n dateStart: period.dateStart,\n dateEnd: period.dateEnd,\n }),\n };\n }),\n ),\n periods.period,\n getCourseGroupStudents(groupId),\n ]).then(([periodTopics, periods, students]) => ({\n periodTopics,\n periods,\n students,\n groupId,\n }));\n },\n);\n\nexport const getGroupStatisticsAction = createAsyncThunk(\n 'courseGroup/getCourseGroupStatistics',\n async (courseGroupId: number) => {\n return await getGroupStatistics(courseGroupId);\n },\n);\n","import { getApiRequest } from 'api';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport const getStudentCourseGroups = (id: string): Promise => {\n return getApiRequest(`/course-groups/student/${id}/course-groups/`);\n};\n","import { getApiRequest } from 'api';\n\nexport interface GroupStatistics {\n allLessonsCount: number;\n allOlLessonsCount: number;\n allSpLessonsCount: number;\n passedLessonsCount: number;\n passedOlLessonsCount: number;\n passedSpLessonsCount: number;\n reserveLessonsAvailable: number;\n reserveLessonsCurrent: number;\n currentTopic: number;\n}\n\nexport const getGroupStatistics = (groupId: number): Promise => {\n return getApiRequest(`/course-groups/${groupId}/lessons-statistics/`);\n};\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { createFile, fetchDeleteFiles, patchFile } from 'api/services/file';\nimport { handleLesson } from 'api/services/lesson';\nimport {\n checkExerciseAnswer,\n deleteMaterial,\n ExerciseAnswer,\n getExercisesCorrectAnswers,\n getMaterialFile,\n getMaterials,\n IMaterialFile,\n IPostMaterial,\n IPostMaterialResponse,\n IUploadMaterialParams,\n LearningMaterialsContent,\n patchMaterial,\n patchMaterialsOrdering,\n postMaterial,\n TMaterialType,\n} from 'api/services/materials';\nimport { getQuestions, ResponseQuestion } from 'api/services/questionBank';\nimport { FileTypes, IFile, IUploadedFile } from 'types/file';\nimport { IMaterial } from 'types/materials';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\nimport { getExerciseQuestions } from 'utils/materials';\n\nexport const createMaterialAction = createAsyncThunk(\n 'materials/createMaterial',\n async (value: { materials: IUploadMaterialParams[]; lessonId: number; tempFiles?: IUploadedFile[] }) => {\n return await Promise.all(value.materials.map((value) => postMaterial(value)))\n .then((data) => {\n if (value.tempFiles?.length) {\n Promise.all(\n value.tempFiles.map((file) => {\n const materialIndex = value.materials.findIndex(\n (material) => material.id === file.materialId,\n );\n\n if (materialIndex >= 0) {\n return patchFile({\n id: file.id,\n materialId: data[materialIndex].id,\n });\n }\n }),\n ).catch((res) => console.error(res));\n }\n\n return data;\n })\n .then((data) =>\n patchMaterialsOrdering(\n value.lessonId,\n data.map((material) => material.id),\n ),\n );\n },\n);\n\nexport const deleteMaterialAction = createAsyncThunk(\n 'materials/deleteMaterials',\n async ({ materialIds, filesForDelete }: { materialIds: number[]; filesForDelete: number[] }) => {\n return await Promise.all(materialIds.map((id, index) => deleteMaterial(id, index === 0 ? filesForDelete : [])));\n },\n);\n\nexport const patchMaterialAction = createAsyncThunk(\n 'materials/patchMaterials',\n async (value: {\n materials: {\n id: number;\n value: IPostMaterial;\n filesForPatch: number[];\n files?: File[];\n filesForDelete?: number[];\n }[];\n tempFiles?: IUploadedFile[];\n }) => {\n return await Promise.all(\n value.materials.map((material) =>\n patchMaterial(\n material.id,\n material.value,\n material.filesForPatch,\n material.files,\n material.filesForDelete,\n ),\n ),\n ).then((data) => {\n if (value.tempFiles?.length) {\n Promise.all(\n value.tempFiles.map((file) => {\n const materialIndex = value.materials.findIndex((material) => material.id === file.materialId);\n if (materialIndex >= 0) {\n return patchFile({\n id: file.id,\n materialId: data[materialIndex].id,\n });\n }\n }),\n ).catch((res) => console.error(res));\n }\n\n return data;\n });\n },\n);\n\nexport const postMaterialWithOrderingAction = createAsyncThunk(\n 'materials/postMaterialsWithOrdering',\n async (value: {\n materials: IUploadMaterialParams[];\n ordering: number[];\n replacedIds: number[];\n lessonId: number;\n tempFiles?: IUploadedFile[];\n }) => {\n return await Promise.all(value.materials.map((value) => postMaterial(value)))\n .then((data) => data.map((value) => value.id))\n .then((ids) => {\n if (value.tempFiles?.length) {\n Promise.all(\n value.tempFiles.map((file) => {\n const materialIndex = value.materials.findIndex(\n (material) => material.id === file.materialId,\n );\n\n if (materialIndex >= 0) {\n return patchFile({\n id: file.id,\n materialId: ids[materialIndex],\n });\n }\n }),\n ).catch((res) => console.error(res));\n }\n\n return ids;\n })\n .then((ids) => {\n const newOrdering = value.ordering.map((id) =>\n value.replacedIds.includes(id) ? ids[value.replacedIds.indexOf(id)] : id,\n );\n\n return patchMaterialsOrdering(value.lessonId, newOrdering);\n });\n },\n);\n\nexport const patchMaterialWithOrderingAction = createAsyncThunk(\n 'materials/patchMaterialsWithOrdering',\n async (value: {\n materials: { id: number; value: IPostMaterial; filesForPatch: number[] }[];\n ordering: number[];\n lessonId: number;\n tempFiles?: IUploadedFile[];\n }) => {\n const arrayPromises: Promise[] = [];\n value.materials.forEach((value) => {\n arrayPromises.push(patchMaterial(value.id, value.value, value.filesForPatch));\n });\n return await Promise.all(arrayPromises)\n .then((data) => {\n if (value.tempFiles?.length) {\n Promise.all(\n value.tempFiles.map((file) => {\n const materialIndex = value.materials.findIndex(\n (material) => material.id === file.materialId,\n );\n if (materialIndex >= 0) {\n return patchFile({\n id: file.id,\n materialId: data[materialIndex].id,\n });\n }\n }),\n ).catch((res) => console.error(res));\n }\n\n return data;\n })\n .then(() => patchMaterialsOrdering(value.lessonId, value.ordering));\n },\n);\n\nexport const postMaterialFileAction = createAsyncThunk('materials/postFile', async (file: File) => {\n return await createFile({\n file,\n type: FileTypes.COMMON,\n });\n});\n\nexport const deleteMaterialFileAction = createAsyncThunk('materials/deleteFile', async (file: number) => {\n return await fetchDeleteFiles(file).then(() => ({ id: file }));\n});\n\nexport const clearMaterialsFilesAction = createAsyncThunk('materials/clearFiles', async (files: number[]) => {\n return await Promise.all(files.map((file) => fetchDeleteFiles(file)));\n});\n\nexport const resetPostMaterialFileStatusAction = createAction('materials/resetPostMaterialFileStatus', () => {\n return {\n payload: null,\n };\n});\nexport const resetLastCheckedAnswerAction = createAction('materials/resetLastCheckedAnswer', () => {\n return {\n payload: null,\n };\n});\n\nexport const resetMaterialsStatusesAction = createAction('materials/resetMaterialsStatuses', () => {\n return {\n payload: null,\n };\n});\n\nexport interface FileForFilset {\n file: IFile;\n material: number;\n}\n\nconst extensionRegExp = /([0-9a-zA-Z]+)$/;\n\nexport const createTempMaterials = createAsyncThunk(\n 'materials/createTempMaterials',\n async (params: {\n initialId: number;\n isEditPage: boolean;\n formValues: IMaterial[];\n lessonId: number;\n subjectId: number;\n exerciseMaterialIndex?: number;\n exerciseMaterialId?: number;\n courseGroupId?: number;\n materials: (IPostMaterial & { isDeleted: boolean })[];\n materialsFiles: {\n materialIndex: number;\n file: File;\n }[];\n }) => {\n const { formValues, materials, materialsFiles, ...restParams } = params;\n\n const files = materialsFiles.map(({ file }) => file);\n\n return await Promise.all(\n files.map((file) =>\n createFile({\n file,\n type: FileTypes.COMMON,\n }),\n ),\n ).then((res) => {\n const fileMap = materialsFiles\n .map((materialFiles, index) => {\n if (res[index]) {\n return {\n ...materialFiles,\n uploadedFile: {\n ...res[index],\n name: materialFiles.file.name,\n },\n };\n }\n })\n .reduce((result, materialFiles) => {\n if (materialFiles && result[materialFiles.materialIndex]) {\n result[materialFiles.materialIndex].push(materialFiles.uploadedFile);\n\n return result;\n }\n\n if (materialFiles) {\n result[materialFiles.materialIndex] = [materialFiles.uploadedFile];\n }\n\n return result;\n }, {} as Record);\n\n const filesForTempFileset: FileForFilset[] = materialsFiles.map((materialFile, index) => {\n const fileExtension = `.${\n extensionRegExp.exec(materialFile.file.name)?.[0] || materialFile.file.type.split('/')[1]\n }`;\n const title = materialFile.file.name.replace(fileExtension, `_${fileExtension}`);\n\n return {\n file: {\n title,\n fileExtension,\n id: res[index].id,\n fileUrl: res[index].file,\n isAvailableToStudents: true,\n shouldUseOnConference: true,\n },\n material: formValues[materialFile.materialIndex].id,\n };\n });\n\n return {\n ...restParams,\n materials: materials.map((material, index) => {\n return {\n ...material,\n id: formValues[index].id,\n files: fileMap[index]?.map((file) => ({\n ...file,\n materialId: formValues[index].id,\n })),\n };\n }),\n filesForTempFileset,\n };\n });\n },\n);\n\nexport const checkExerciseAnswerAction = createAsyncThunk(\n 'materials/checkExerciseAnswer',\n async (params: ExerciseAnswer) => {\n return await checkExerciseAnswer(params).then((answerData) => ({\n materialId: params.material,\n data: answerData,\n answers: params?.data,\n isCorrect: answerData.isCorrect,\n questionId: params.questionId,\n }));\n },\n);\n\nexport const getExercisesCorrectAnswersAction = createAsyncThunk(\n 'materials/getExercisesCorrectAnswers',\n async (lessonId: number) => await getExercisesCorrectAnswers(lessonId),\n);\n\ntype BlockEditMaterialsParams = {\n lessonId: number;\n isBlockEdit: boolean;\n};\n\nexport const blockEditMaterialsAction = createAsyncThunk(\n 'materials/blockEditMaterials',\n ({ lessonId, isBlockEdit }: BlockEditMaterialsParams) => {\n return handleLesson({\n update: {\n id: lessonId,\n isBlockEdit: isBlockEdit,\n },\n });\n },\n);\n\ntype GetMaterialDataActionParams = {\n lessonId: number;\n materialType: TMaterialType;\n isMaterialCreationPage?: boolean;\n};\n\ntype GetMaterialsDataParams = {\n lessonId: number;\n materials: LearningMaterialsContent[];\n files: IMaterialFile[];\n};\n\ntype MaterialsCreationPageData = {\n lessonId: number;\n files: IMaterialFile[];\n questions: ResponseQuestion[];\n materials: LearningMaterialsContent[];\n};\n\nconst getMaterialsCreationPageData = async ({\n lessonId,\n materials,\n files,\n}: GetMaterialsDataParams): Promise => {\n const exerciseQuestionsIds = getExerciseQuestions(materials);\n let questions: ResponseQuestion[] = [];\n if (exerciseQuestionsIds.length) {\n questions = await getQuestions(createUrlQuery({ include_ids: exerciseQuestionsIds }));\n }\n\n return {\n lessonId,\n files,\n questions,\n materials: materials,\n };\n};\n\ntype MaterialsTabData = {\n lessonId: number;\n files: IMaterialFile[];\n materials: LearningMaterialsContent[];\n questions: ResponseQuestion[];\n};\n\nconst getMaterialsTabData = async ({\n lessonId,\n materials,\n files,\n}: GetMaterialsDataParams): Promise => {\n const exerciseQuestionsIds = getExerciseQuestions(materials);\n let questions: ResponseQuestion[] = [];\n if (exerciseQuestionsIds.length) {\n questions = await getQuestions(createUrlQuery({ include_ids: exerciseQuestionsIds }));\n }\n\n return {\n lessonId,\n files,\n materials,\n questions,\n };\n};\n\nexport const getMaterialsDataAction = createAsyncThunk(\n 'materials/getMaterialsData',\n ({ lessonId, materialType, isMaterialCreationPage }: GetMaterialDataActionParams) => {\n return Promise.all([getMaterials(lessonId, materialType), getMaterialFile({ lesson: lessonId })]).then(\n async ([materials, files]) => {\n if (isMaterialCreationPage) {\n return getMaterialsCreationPageData({\n lessonId,\n materials,\n files,\n });\n }\n\n return getMaterialsTabData({\n lessonId,\n materials,\n files,\n });\n },\n );\n },\n);\n\nexport const addNewQuestionForExerciseMaterialAction = createAsyncThunk(\n 'materials/addNewQuestionForExerciseMaterial',\n (questionId: number) => {\n return getQuestions(createUrlQuery({ include_ids: [questionId] }));\n },\n);\n","import { RefObject, useEffect } from 'react';\nimport { downloadTxtFileFromUrlByLink } from 'src-new/utils';\n\nexport const useDownloadTxtFile = (ref: RefObject): void => {\n useEffect(() => {\n if (ref.current) {\n const downloadTxt = (event: Event) => {\n const url = (event?.target as HTMLAnchorElement)?.href;\n if (url) {\n event.preventDefault();\n void downloadTxtFileFromUrlByLink(url);\n }\n };\n\n const txtElems = ref.current?.querySelectorAll('.download_txt_file');\n txtElems?.forEach((elem) => {\n elem.addEventListener('click', downloadTxt);\n });\n\n return () => {\n const txtElems = ref.current?.querySelectorAll('.download_txt_file');\n txtElems?.forEach((elem) => {\n elem.removeEventListener('click', downloadTxt);\n });\n };\n }\n }, [ref.current]);\n};\n","import useQueryPopupsParams from './useQueryPopupsParams';\n\nexport default useQueryPopupsParams;\n","import { useHistory, useLocation } from 'react-router-dom';\nimport { parseQueryParamsToObject } from 'src-new/utils';\ntype TUseQueryPopupsParams = {\n openPopup: (modal: { [key: string]: string | number | boolean }) => void;\n closeLastPopup: () => void;\n replaceLastPopup: (modal: { [key: string]: string | number | boolean }) => void;\n isCurrentPopup: (type: string) => boolean;\n};\ntype TModal = { [key: string]: string | boolean | number };\nconst useQueryPopupsParams = (): TUseQueryPopupsParams => {\n const history = useHistory();\n const MAX_COUNT_MODALS = 4;\n\n /**\n * @description - Обновляет список модальных окон в URL. Автоматически устанавливает ранжирование (layer)\n * @param updatedModalList - Новый список модальных окон.\n * @param isReplaceHistory\n */\n const updateModalListInUrl = (updatedModalList: TModal[], isReplaceHistory?: boolean) => {\n for (let i = 0; i < updatedModalList.length; i++) {\n updatedModalList[i]['layer'] = updatedModalList.length - i;\n }\n const url = new URL(window.location.href);\n url.searchParams.set('modals', JSON.stringify(updatedModalList));\n isReplaceHistory\n ? history.replace({ pathname: history.location.pathname, search: url.search })\n : history.push({ pathname: history.location.pathname, search: url.search });\n };\n\n /**\n * @description - устанавливаем в URL параметр modals\n */\n const openPopup = (modal: TModal) => {\n const locationSearch = history.location.search;\n const parsedQueries = parseQueryParamsToObject(locationSearch, 'modals');\n\n if (parsedQueries.modals) {\n let newModalList: TModal[] = [...parsedQueries?.modals, modal];\n const formattedModalList: Array = [...newModalList];\n for (let i = 0; i < formattedModalList.length - MAX_COUNT_MODALS; i++) {\n formattedModalList[i]['isHide'] = true;\n }\n newModalList = [...formattedModalList];\n updateModalListInUrl(newModalList);\n }\n };\n\n /**\n * @description - закрываем последнюю открытую модалку, очищая ее из URL\n */\n const closeLastPopup = () => {\n const locationSearch = history.location.search;\n const parsedQueries = parseQueryParamsToObject(locationSearch, 'modals');\n const modalList = parsedQueries.modals as TModal[];\n let newModalList: Array = modalList.filter((modal, index) => index !== modalList.length - 1);\n const formattedModalList: Array = [...newModalList];\n\n if (formattedModalList.length > 0) {\n let indexToOpen = formattedModalList.findLastIndex((modal) => modal['isHide']);\n if (indexToOpen === -1) indexToOpen = formattedModalList.length - 1;\n formattedModalList[indexToOpen]['isHide'] = false;\n }\n newModalList = [...formattedModalList];\n updateModalListInUrl(newModalList, true);\n };\n\n /**\n * @description - заменяем последнюю открытую модалку\n */\n const replaceLastPopup = (modal: TModal) => {\n const locationSearch = history.location.search;\n const parsedQueries = parseQueryParamsToObject(locationSearch, 'modals');\n const modalList = parsedQueries.modals as TModal[];\n const newModalList = modalList.filter((modal, index) => index !== modalList.length - 1);\n const formattedModalList = [...newModalList, modal];\n\n updateModalListInUrl(formattedModalList);\n };\n /**\n * @description - проверяем по типу, является ли модалка самой верхней\n */\n const isCurrentPopup = (type: string): boolean => {\n const locationSearch = history.location.search;\n const parsedQueries = parseQueryParamsToObject(locationSearch, 'modals');\n const modalTypesList = parsedQueries.modals?.map(({ type }) => type);\n\n return modalTypesList?.[modalTypesList?.length - 1] === type;\n };\n\n return {\n openPopup,\n closeLastPopup,\n replaceLastPopup,\n isCurrentPopup,\n };\n};\n\nexport default useQueryPopupsParams;\n","import { convertFromRaw, RawDraftContentState } from 'draft-js';\nimport { E_ANSWERS_TYPE, E_QUESTIONS_DIFFICULTY } from 'src-new/constants';\nimport { getAnswersCountText, getCorrectAnswersCountText, getSkillsCountText } from 'src-new/utils';\nimport { TAnswer, TResponseQuestionDetailed, TTextAnswer } from 'types/lessonTask';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\n\nimport { getInsertWordsPreviewHtml } from 'utils/questions';\n\nexport const useGetQuestionInfo = (\n questionDetails: TResponseQuestionDetailed,\n): {\n correctAnswersList: (TAnswer & TTextAnswer)[];\n answersInfo: {\n count: number;\n statistic: string;\n };\n correctAnswersInfo: {\n count: number;\n statistic: string;\n };\n topicsInfo: {\n count: number;\n text: string;\n };\n skillsInfo: {\n count: number;\n text: string;\n statistic: string;\n };\n questionTitle: string;\n authorFullName: string;\n essayAnswerFormat: string;\n difficultyText: string;\n answersType: E_ANSWERS_TYPE;\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n id: number;\n} => {\n const { text, difficulty, answersType, data, author, topics, skills, html, content, id } = questionDetails;\n\n const getAllAnswers = () => {\n switch (answersType) {\n case E_ANSWERS_TYPE.test:\n return (data as TestQuestionData).answerOptions?.map((option, index) => ({\n ...option,\n id: index,\n order: index,\n isCorrect: option.correct,\n acceptFile: false,\n acceptText: false,\n percentOfScore: 100,\n }));\n case E_ANSWERS_TYPE.text:\n return (data as TextQuestionData).answerOptions?.map((option, index) => ({\n ...option,\n content: '{}',\n html: `${option.text}`,\n id: index,\n order: index,\n isCorrect: true,\n acceptFile: false,\n acceptText: false,\n percentOfScore: option.percentOfScore,\n }));\n default:\n return [];\n }\n };\n const getEssayAnswerFormat = () => {\n if (answersType === E_ANSWERS_TYPE.essay && data !== undefined && 'acceptFile' in data) {\n if (data?.acceptFile && !data.acceptText) return 'Файл';\n if (!data?.acceptFile && data?.acceptText) return 'Текстовое поле';\n if (data?.acceptFile && data.acceptText) return 'Файл, текстовое поле';\n }\n return '';\n };\n const getCorrectAnswersList = () => {\n const answers = getAllAnswers();\n\n return answers.map((answer) => {\n const rawAnswer = JSON.parse(answer.content) as TTextAnswer | RawDraftContentState;\n const isEmptyAnswer = answer.content === '{}';\n const text = isEmptyAnswer\n ? ''\n : Object.keys(rawAnswer).length === 1\n ? (rawAnswer as TTextAnswer).text\n : convertFromRaw(rawAnswer as RawDraftContentState).getPlainText();\n return {\n ...answer,\n text,\n };\n });\n };\n\n const totalAnswersCount =\n answersType === E_ANSWERS_TYPE.test\n ? (data as TestQuestionData)?.answerOptions.length\n : answersType === E_ANSWERS_TYPE.text\n ? (data as TextQuestionData).answerOptions.length\n : answersType === E_ANSWERS_TYPE.true_false\n ? 2\n : 0;\n\n const correctAnswersCount =\n answersType === E_ANSWERS_TYPE.test\n ? (data as TestQuestionData)?.answerOptions.filter((answer) => answer?.correct).length\n : answersType === E_ANSWERS_TYPE.true_false\n ? 1\n : 0;\n\n const questionTitle =\n answersType === E_ANSWERS_TYPE.insert_words\n ? getInsertWordsPreviewHtml({ content, html, text: text ?? '' })\n : html || text || '';\n\n const authorFullName = `${author?.lastName} ${author?.firstName} ${author?.patronymic}`.trim();\n const difficultyText = difficulty ? E_QUESTIONS_DIFFICULTY[difficulty] : '';\n const correctAnswersInfo = {\n count: correctAnswersCount,\n statistic: getCorrectAnswersCountText(correctAnswersCount),\n };\n const answersInfo = {\n count: totalAnswersCount,\n statistic: getAnswersCountText(totalAnswersCount),\n };\n const topicsInfo = {\n count: topics?.length,\n text: topics?.map((topic) => topic?.title).join('; '),\n };\n const skillsInfo = {\n count: skills?.length,\n text: skills?.map((skill) => skill?.title).join('; '),\n statistic: getSkillsCountText(skills?.length),\n };\n\n return {\n correctAnswersList: getCorrectAnswersList(),\n essayAnswerFormat: getEssayAnswerFormat(),\n correctAnswersInfo,\n answersInfo,\n topicsInfo,\n skillsInfo,\n questionTitle,\n authorFullName,\n difficultyText,\n answersType,\n data,\n id,\n };\n};\n","import { useMemo } from 'react';\nimport { TAssignedQuestion } from 'types/lessonTask';\n\nexport const useGetQuestionModalControls = (props: {\n leftBlock: TAssignedQuestion;\n rightBlock: TAssignedQuestion;\n openedQuestionId?: number;\n}): {\n questionsIdsToPaginate: number[] | undefined;\n hasAddButton: boolean;\n hasRemoveButton: boolean;\n hasIncludeButton: boolean;\n hasExcludeButton: boolean;\n canPaginateRight: boolean;\n canPaginateLeft: boolean;\n} => {\n const { leftBlock, rightBlock, openedQuestionId = 0 } = props;\n\n const questionsIdsToPaginate = useMemo(() => {\n //@ts-ignore\n const listFromLeftBlock: number[] | undefined =\n leftBlock?.searchBlocksList\n ?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n )\n ?.questionsContentList.map((item) => item?.questionContent?.id)\n .filter(Boolean) ?? undefined;\n //@ts-ignore\n const listFromRightBlock: number[] | undefined =\n rightBlock?.searchBlocksList\n ?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n )\n ?.questionsContentList.map((item) => item?.questionContent?.id)\n .filter(Boolean) ?? undefined;\n\n return listFromLeftBlock ?? listFromRightBlock;\n }, [openedQuestionId]);\n\n const hasIncludeButton = useMemo(() => {\n const rightBlockSelected = rightBlock?.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n );\n const leftBlockSelected = leftBlock?.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n );\n\n const excludeQuestionsIds = rightBlockSelected\n ? rightBlockSelected?.filters.excludeIds ?? []\n : leftBlockSelected?.filters.excludeIds ?? [];\n\n return excludeQuestionsIds.includes(openedQuestionId ?? 0);\n }, [rightBlock, leftBlock, openedQuestionId]);\n const hasExcludeButton = useMemo(() => {\n const rightBlockSelected = rightBlock.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.find(({ questionContent }) => questionContent?.id === openedQuestionId),\n );\n const leftBlockSelected = leftBlock.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.find(({ questionContent }) => questionContent?.id === openedQuestionId),\n );\n\n const excludeQuestionsIds = rightBlockSelected\n ? rightBlockSelected?.filters.excludeIds ?? []\n : leftBlockSelected?.filters.excludeIds ?? [];\n\n return (!!rightBlockSelected || !!leftBlockSelected) && !excludeQuestionsIds.includes(openedQuestionId ?? 0);\n }, [openedQuestionId, rightBlock, leftBlock]);\n\n const hasAddButton = useMemo(\n () =>\n !!leftBlock.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList?.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n ) && !hasIncludeButton,\n [leftBlock, rightBlock, openedQuestionId],\n );\n const hasRemoveButton = useMemo(\n () => rightBlock?.singleQuestionsList?.some(({ questionContent }) => questionContent?.id === openedQuestionId),\n [rightBlock, openedQuestionId],\n );\n const canPaginateRight = useMemo(() => {\n return questionsIdsToPaginate && openedQuestionId\n ? questionsIdsToPaginate?.findIndex((item) => item === openedQuestionId) <\n questionsIdsToPaginate?.length - 1\n : false;\n }, [openedQuestionId]);\n\n const canPaginateLeft = useMemo(() => {\n return questionsIdsToPaginate && openedQuestionId\n ? questionsIdsToPaginate?.findIndex((item) => item === openedQuestionId) !== 0\n : false;\n }, [openedQuestionId]);\n\n return {\n questionsIdsToPaginate,\n hasAddButton,\n hasRemoveButton,\n hasIncludeButton,\n hasExcludeButton,\n canPaginateRight,\n canPaginateLeft,\n };\n};\n","import { useDispatch } from 'react-redux';\nimport {\n TAreaName,\n transferQuestionsBlock,\n transferSingleQuestion,\n transferSingleQuestionFromBlock,\n} from 'src-new/components/lesson-task';\nimport { setQuestionsStateAction, setSelectedBlockAction } from 'store/actions/lessonTask';\nimport { TAssignedQuestion, TSearchBlock, TSingleQuestion } from 'types/lessonTask';\n\nexport const useQuestionsDrop = (props: {\n leftBlock: TAssignedQuestion;\n rightBlock: TAssignedQuestion;\n activeQuestionNumber: number;\n}): {\n handleDropBlock: (areaName: TAreaName, data: TSearchBlock) => void;\n handleDropSingle: (areaName: TAreaName, data: TSingleQuestion) => void;\n handleDropSingleBlock: (data: TSingleQuestion) => void;\n} => {\n const dispatch = useDispatch();\n\n const { leftBlock, rightBlock, activeQuestionNumber } = props;\n\n const handleDropBlock = (areaName: TAreaName, data: TSearchBlock) => {\n const transferData = {\n fromObject: areaName === 'left' ? rightBlock : leftBlock,\n toObject: areaName === 'left' ? leftBlock : rightBlock,\n item: data,\n };\n const { filteredObject, updatedObject } = transferQuestionsBlock(transferData);\n\n if (filteredObject && updatedObject) {\n dispatch(\n setQuestionsStateAction({\n left: areaName === 'left' ? updatedObject : filteredObject,\n right: areaName === 'left' ? filteredObject : updatedObject,\n questionNum: activeQuestionNumber,\n }),\n );\n }\n dispatch(setSelectedBlockAction());\n };\n const handleDropSingle = (areaName: TAreaName, data: TSingleQuestion) => {\n const transferData = {\n fromObject: areaName === 'left' ? rightBlock : leftBlock,\n toObject: areaName === 'left' ? leftBlock : rightBlock,\n item: data,\n };\n const { filteredObject, updatedObject } = transferSingleQuestion(transferData);\n\n if (filteredObject && updatedObject) {\n dispatch(\n setQuestionsStateAction({\n left: areaName === 'left' ? updatedObject : filteredObject,\n right: areaName === 'left' ? filteredObject : updatedObject,\n questionNum: activeQuestionNumber,\n }),\n );\n }\n };\n const handleDropSingleBlock = (data: TSingleQuestion) => {\n const transferData = {\n fromObject: leftBlock,\n toObject: rightBlock,\n item: data,\n };\n const { filteredObject, updatedObject } = transferSingleQuestionFromBlock(transferData);\n\n if (filteredObject && updatedObject) {\n dispatch(\n setQuestionsStateAction({\n left: filteredObject,\n right: updatedObject,\n questionNum: activeQuestionNumber,\n }),\n );\n }\n };\n\n return {\n handleDropBlock,\n handleDropSingle,\n handleDropSingleBlock,\n };\n};\n","import { useDispatch } from 'react-redux';\nimport { isFiltersUpdated } from 'src-new/components/lesson-task';\nimport { setQuestionsStateAction } from 'store/actions/lessonTask';\nimport { TAssignedQuestion, TSearchBlock, TSingleQuestion } from 'types/lessonTask';\n\nexport const useQuestionsMove = (props: {\n leftBlock: TAssignedQuestion;\n rightBlock: TAssignedQuestion;\n activeQuestionNumber: number;\n}): {\n onBlockQuestionMove: (\n id: number,\n type: 'include' | 'exclude',\n rightBlockSelected?: TSearchBlock,\n leftBlockSelected?: TSearchBlock,\n ) => void;\n onAddSingleQuestion: (leftBlockSingleSelected?: TSingleQuestion, leftQuestionSelected?: TSingleQuestion) => void;\n onRemoveSingleQuestion: (rightQuestionSelected?: TSingleQuestion) => void;\n} => {\n const { leftBlock, rightBlock, activeQuestionNumber } = props;\n\n const dispatch = useDispatch();\n\n const setState = (props: { left?: TAssignedQuestion; right?: TAssignedQuestion; questionNum: number }) => {\n dispatch(setQuestionsStateAction(props));\n };\n const getUpdatedData = (list: TAssignedQuestion, block: TSearchBlock, id: number, type: 'include' | 'exclude') => {\n return list.searchBlocksList?.map((item) => {\n if (item.id === block.id) {\n const list = item.filters?.excludeIds ?? [];\n const filteredIds = type === 'include' ? list.filter((item) => item !== id) : [...list, id];\n\n return {\n ...item,\n filters: {\n ...item.filters,\n excludeIds: filteredIds,\n },\n };\n }\n return item;\n });\n };\n const onBlockQuestionMove = (\n id: number,\n type: 'include' | 'exclude',\n rightBlockSelected?: TSearchBlock,\n leftBlockSelected?: TSearchBlock,\n ) => {\n if (rightBlockSelected) {\n const updatedData = getUpdatedData(rightBlock, rightBlockSelected, id, type);\n\n setState({\n right: {\n ...rightBlock,\n searchBlocksList: updatedData,\n },\n questionNum: activeQuestionNumber,\n });\n }\n if (leftBlockSelected) {\n const updatedData = getUpdatedData(leftBlock, leftBlockSelected, id, type);\n\n setState({\n left: {\n ...leftBlock,\n searchBlocksList: updatedData,\n },\n questionNum: activeQuestionNumber,\n });\n }\n };\n const onAddSingleQuestion = (leftBlockSingleSelected?: TSingleQuestion, leftQuestionSelected?: TSingleQuestion) => {\n const filteredBlocksList = leftBlock?.searchBlocksList\n ?.map((block) => {\n if (leftBlockSingleSelected) {\n return {\n ...block,\n questionsContentList: block.questionsContentList.filter(\n ({ questionContent }) =>\n questionContent?.id !== leftBlockSingleSelected?.questionContent?.id,\n ),\n };\n }\n return block;\n })\n .filter(Boolean);\n\n const rightBlockSingleQuestionsList = rightBlock.singleQuestionsList ?? ([] as TSingleQuestion[]);\n const leftBlockSingleQuestionsList = leftBlock.singleQuestionsList ?? ([] as TSingleQuestion[]);\n setState({\n left: {\n ...leftBlock,\n searchBlocksList: filteredBlocksList,\n singleQuestionsList: leftQuestionSelected\n ? [...leftBlockSingleQuestionsList, leftQuestionSelected]\n : leftBlockSingleQuestionsList,\n },\n right: {\n ...rightBlock,\n //@ts-ignore\n singleQuestionsList:\n leftQuestionSelected || leftBlockSingleSelected\n ? [...rightBlockSingleQuestionsList, leftQuestionSelected ?? leftBlockSingleSelected]\n : rightBlockSingleQuestionsList,\n },\n questionNum: activeQuestionNumber,\n });\n };\n const onRemoveSingleQuestion = (rightQuestionSelected?: TSingleQuestion) => {\n const isRightSingleQuestionFromBlock = !!rightQuestionSelected?.filters?.topics?.length;\n const leftData =\n isRightSingleQuestionFromBlock && !!rightQuestionSelected\n ? {\n ...leftBlock,\n searchBlocksList: leftBlock.searchBlocksList.map((block) => {\n if (!isFiltersUpdated(block.filters, rightQuestionSelected?.filters)) {\n return {\n ...block,\n questionsContentList: [rightQuestionSelected, ...block.questionsContentList],\n };\n }\n return block;\n }),\n }\n : undefined;\n\n setState({\n right: {\n ...rightBlock,\n singleQuestionsList: rightBlock.singleQuestionsList?.filter(\n ({ questionContent }) => rightQuestionSelected?.questionContent?.id !== questionContent?.id,\n ),\n },\n left: leftData,\n questionNum: activeQuestionNumber,\n });\n };\n\n return {\n onBlockQuestionMove,\n onAddSingleQuestion,\n onRemoveSingleQuestion,\n };\n};\n","import { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { TCreateQuestionQuery } from 'types/lessonTask';\n\nimport { TCreateQuestionParams, TCreateQuestionPopup } from './useCreateQuestionPopup.types';\n\nconst useCreateQuestionPopup = (): TCreateQuestionPopup => {\n const Popup = useQueryPopupsParams();\n\n const getQuery = (params: TCreateQuestionParams) => {\n const {\n type = 'CREATE_QUESTION',\n purpose = 'create',\n isTrainer,\n assignment,\n lessonId,\n courseGroupId,\n taskId,\n num,\n subjectId,\n } = params;\n\n const query: TCreateQuestionQuery = {\n type: HARD_MODAL_ENUMS[type],\n lessonId,\n subjectId,\n courseGroupId,\n purpose,\n num,\n };\n\n if (taskId) {\n query.taskId = taskId;\n }\n if (isTrainer) {\n query.isTrainer = isTrainer;\n }\n if (assignment) {\n query.assignment = assignment;\n }\n\n return query;\n };\n\n const openCreateQuestionPopup = (params: TCreateQuestionParams) => {\n Popup.openPopup(getQuery(params));\n };\n\n const closeLastCreateQuestionPopup = () => {\n Popup.closeLastPopup();\n };\n\n const replaceLastCreateQuestionPopup = (params: TCreateQuestionParams) => {\n Popup.replaceLastPopup(getQuery(params));\n };\n\n const isCurrent = Popup.isCurrentPopup(HARD_MODAL_ENUMS.CREATE_QUESTION);\n\n return {\n isCurrent,\n openCreateQuestionPopup,\n closeLastCreateQuestionPopup,\n replaceLastCreateQuestionPopup,\n };\n};\n\nexport default useCreateQuestionPopup;\n","import { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { TLessonQuery } from 'types/lessonTask';\n\nimport { TLessonPopup, TLessonPopupParams } from './useLessonsPopup.types';\n\nconst useLessonsPopup = (): TLessonPopup => {\n const Popup = useQueryPopupsParams();\n\n const getQuery = (params: TLessonPopupParams) => {\n const { courseGroupId, courseId, subjectId, lessonId, taskId, tab = 'materials', type = 'LESSON' } = params;\n\n const query: TLessonQuery = {\n type: HARD_MODAL_ENUMS[type],\n tab: tab,\n courseGroupId,\n lessonId,\n };\n if (taskId) {\n query.taskId = taskId;\n }\n if (courseId) {\n query.courseId = courseId;\n }\n if (subjectId) {\n query.subjectId = subjectId;\n }\n\n return query;\n };\n\n const openLessonPopup = (params: TLessonPopupParams) => {\n Popup.openPopup(getQuery(params));\n };\n\n const closeLastLessonPopup = () => {\n Popup.closeLastPopup();\n };\n\n const replaceLastLessonPopup = (params: TLessonPopupParams) => {\n Popup.replaceLastPopup(getQuery(params));\n };\n\n const isCurrent = Popup.isCurrentPopup(HARD_MODAL_ENUMS.LESSON);\n\n return {\n openLessonPopup,\n closeLastLessonPopup,\n replaceLastLessonPopup,\n isCurrent,\n };\n};\n\nexport default useLessonsPopup;\n","import { useMemo } from 'react';\nimport { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useGetPopupsState } from 'src-new/components/layouts/Modals/Modals.utils';\n\nexport const useLessonsPopupState = (): boolean => {\n const { popups } = useGetPopupsState();\n\n const isOpened = useMemo(() => {\n return !!popups.find((popup) => popup?.type === HARD_MODAL_ENUMS.LESSON);\n }, [popups]);\n\n return isOpened;\n};\n","import { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { TSearchQuestionsQuery } from 'types/lessonTask';\n\nimport { TSearchQuestionsParams, TSearchQuestionsPopup } from './useSearchQuestionsPopup.types';\n\nconst useSearchQuestionsPopup = (): TSearchQuestionsPopup => {\n const Popup = useQueryPopupsParams();\n\n const getQuery = (params: TSearchQuestionsParams) => {\n const {\n type = 'SEARCH_QUESTIONS',\n purpose = 'create',\n isTrainer,\n lessonId,\n courseGroupId,\n subjectId,\n assignment,\n num,\n taskTypeId,\n } = params;\n\n const query: TSearchQuestionsQuery = {\n type: HARD_MODAL_ENUMS[type],\n lessonId,\n courseGroupId,\n purpose,\n subjectId,\n taskTypeId,\n };\n\n if (assignment) {\n query.assignment = assignment;\n }\n if (num) {\n query.num = num;\n }\n if (isTrainer) {\n query.isTrainer = isTrainer;\n }\n\n return query;\n };\n\n const openSearchQuestionsPopup = (params: TSearchQuestionsParams) => {\n Popup.openPopup(getQuery(params));\n };\n\n const closeLastSearchQuestionsPopup = () => {\n Popup.closeLastPopup();\n };\n\n const replaceLastSearchQuestionsPopup = (params: TSearchQuestionsParams) => {\n Popup.replaceLastPopup(getQuery(params));\n };\n\n const isCurrent = Popup.isCurrentPopup(HARD_MODAL_ENUMS.SEARCH_QUESTIONS);\n\n return {\n openSearchQuestionsPopup,\n closeLastSearchQuestionsPopup,\n replaceLastSearchQuestionsPopup,\n isCurrent,\n };\n};\n\nexport default useSearchQuestionsPopup;\n","import { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { TStudentTasksViewQuery } from 'types/lessonTask';\n\nimport { TStudentTasksViewPopup, TStudentTasksViewPopupParams } from './useStudentTasksViewPopup.types';\n\nconst useStudentTasksViewPopup = (): TStudentTasksViewPopup => {\n const Popup = useQueryPopupsParams();\n\n const getQuery = (params: TStudentTasksViewPopupParams): TStudentTasksViewQuery => {\n const { courseGroupId, lessonId, taskId, studentId, type = 'TASKS_VIEW', subjectId } = params;\n\n return {\n type: HARD_MODAL_ENUMS[type],\n courseGroupId,\n lessonId,\n taskId,\n studentId,\n subjectId,\n };\n };\n const openStudentTasksViewPopup = (params: TStudentTasksViewPopupParams) => {\n Popup.openPopup(getQuery(params));\n };\n\n const closeLastStudentTasksViewPopup = () => {\n Popup.closeLastPopup();\n };\n\n const replaceLastStudentTasksViewPopup = (params: TStudentTasksViewPopupParams) => {\n Popup.replaceLastPopup(getQuery(params));\n };\n const isCurrent = Popup.isCurrentPopup(HARD_MODAL_ENUMS.TASKS_VIEW);\n return {\n isCurrent,\n openStudentTasksViewPopup,\n closeLastStudentTasksViewPopup,\n replaceLastStudentTasksViewPopup,\n };\n};\n\nexport default useStudentTasksViewPopup;\n","import { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { TTaskQuery } from 'types/lessonTask';\n\nimport { TTaskPopup, TTaskPopupParams } from './useTaskPopup.types';\n\nconst useTaskPopup = (): TTaskPopup => {\n const Popup = useQueryPopupsParams();\n\n const getQuery = (params: TTaskPopupParams) => {\n const { subjectId, courseGroupId, lessonId, taskId, type = 'TASK', purpose = 'create' } = params;\n\n const query: TTaskQuery = {\n type: HARD_MODAL_ENUMS[type],\n purpose,\n courseGroupId,\n lessonId,\n subjectId,\n };\n if (subjectId) {\n query.subjectId = subjectId;\n }\n if (taskId) {\n query.taskId = taskId;\n }\n\n return query;\n };\n\n const openTaskPopup = (params: TTaskPopupParams) => {\n Popup.openPopup(getQuery(params));\n };\n\n const closeLastTaskPopup = () => {\n Popup.closeLastPopup();\n };\n\n const replaceLastTaskPopup = (params: TTaskPopupParams) => {\n Popup.replaceLastPopup(getQuery(params));\n };\n const isCurrent = Popup.isCurrentPopup(HARD_MODAL_ENUMS.TASK);\n return {\n isCurrent,\n openTaskPopup,\n closeLastTaskPopup,\n replaceLastTaskPopup,\n };\n};\n\nexport default useTaskPopup;\n","import { useMemo } from 'react';\nimport { useRole } from 'hooks';\nimport { TAssigmentProgresses, TSubjectLesson, TTeachersAssigmentProgresses } from 'src-new/components/new-subjects';\n\nimport { TUseGetLessonHomeworksResponse } from './useGetLessonHomeworks.types';\n\nexport const useGetLessonHomeworks = (lessonInfo: TSubjectLesson): TUseGetLessonHomeworksResponse => {\n const { assignmentProgresses } = lessonInfo;\n const { isStudent, isTeacher } = useRole();\n\n const getTitleForStudent = (progress: TAssigmentProgresses[]): string => {\n const homeworksCount = progress?.length;\n const completedHomeworksCount = progress?.filter((item) => item.status === 'completed')?.length;\n const unissuedHomeworksCount = progress?.filter((item) => item.status === 'deferred_assignment')?.length;\n\n if (!homeworksCount) {\n return 'Нет заданий';\n } else {\n if (homeworksCount === unissuedHomeworksCount) {\n return 'ДЗ не было выдано';\n } else {\n return `Задано: ${homeworksCount - unissuedHomeworksCount} ДЗ, Сдано: ${completedHomeworksCount} ДЗ`;\n }\n }\n };\n const getTitleForTeacher = (progress: TTeachersAssigmentProgresses): string => {\n const { assigned, completed } = progress;\n\n if (!assigned) {\n return 'Нет заданий';\n } else {\n return `Задано: ${assigned} ДЗ, Сдано: ${completed} ДЗ`;\n }\n };\n\n const homeworkTitle = useMemo(() => {\n if (isStudent) {\n return getTitleForStudent(assignmentProgresses as TAssigmentProgresses[]);\n }\n if (isTeacher) {\n return getTitleForTeacher(assignmentProgresses as TTeachersAssigmentProgresses);\n }\n return '';\n }, [isStudent, isTeacher, assignmentProgresses]);\n\n return {\n homeworkTitle,\n };\n};\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { useRole } from 'hooks';\nimport { getLastViewedLessonByCourse } from 'src-new/utils';\nimport {\n getStudentsCourseTreeAction,\n getStudentsTreeByTimeItemsAction,\n getStudentsTreeByURLAction,\n getTeachersCourseTreeAction,\n getTeachersTreeByTimeItemsAction,\n getTeachersTreeByURLAction,\n getTreeByFirstItemsAction,\n getTreeByKnownItemsAction,\n} from 'store/actions/newSubjects';\nimport { TSelectedCourse } from 'types/newSubjectsTypes';\n\nimport { TUpdateTree, TUseGetSubjectsTreeResponse } from './useGetSubjectsTree.types';\n\n/**\n * @description Хук для получения дерева предметов в зависимости от роли пользователя\n * @return {TUseGetSubjectsTreeResponse}\n */\nexport const useGetSubjectsTree = (): TUseGetSubjectsTreeResponse => {\n const { isStudent, isTeacher } = useRole();\n const dispatch = useDispatch();\n const location = useLocation();\n\n //Получаем дерево курсов для студентов\n const getStudentsCourseTree = () => {\n dispatch(getStudentsCourseTreeAction());\n };\n //Получаем дерево курсов для учителей\n const getTeachersCourseTree = () => {\n dispatch(getTeachersCourseTreeAction({ role: 'teacher' }));\n };\n // Получаем дерево тем и уроков для студентов в зависимости от выбранного курса\n // для курса ЛЗ - либо из local.storage, либо по первым из списка\n // для остальных курсов - по ближайшему уроку\n // (При условии, что courseGroupId выбрана пользователем, а не взята из юрлы)\n const getStudentsRestTree = (selectedCourse: TSelectedCourse) => {\n const { id: courseGroupId, isCurious } = selectedCourse;\n //Открыта ли модалка урока\n const modalIsOpen = location.search.includes('lessonId');\n\n if (courseGroupId && !modalIsOpen) {\n if (isCurious) {\n const dataFromStorage = getLastViewedLessonByCourse(courseGroupId);\n\n if (dataFromStorage) {\n dispatch(getTreeByKnownItemsAction(dataFromStorage));\n } else {\n dispatch(getTreeByFirstItemsAction(selectedCourse));\n }\n } else {\n void dispatch(getStudentsTreeByTimeItemsAction(selectedCourse));\n }\n }\n };\n\n // Получаем дерево тем и уроков для учителей в зависимости от выбранного курса по ближайшему уроку\n const getTeachersRestTree = (selectedCourse: TSelectedCourse) => {\n dispatch(getTeachersTreeByTimeItemsAction(selectedCourse));\n };\n const getStudentsTreeByUrl = (params: TUpdateTree) => {\n dispatch(getStudentsTreeByURLAction(params));\n };\n const getTeachersTreeByUrl = (params: TUpdateTree) => {\n dispatch(getTeachersTreeByURLAction(params));\n };\n\n const getCoursesTree = () => {\n if (isStudent) {\n getStudentsCourseTree();\n return;\n }\n if (isTeacher) {\n getTeachersCourseTree();\n return;\n }\n };\n const getRestTree = (selectedCourse: TSelectedCourse) => {\n if (isStudent) {\n getStudentsRestTree(selectedCourse);\n return;\n }\n if (isTeacher) {\n getTeachersRestTree(selectedCourse);\n return;\n }\n };\n const getTreeByUrl = (params: TUpdateTree) => {\n if (isStudent) {\n getStudentsTreeByUrl(params);\n return;\n }\n if (isTeacher) {\n getTeachersTreeByUrl(params);\n return;\n }\n };\n\n return {\n getCoursesTree,\n getRestTree,\n getTreeByUrl,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { useRole } from 'hooks';\nimport { TInfo } from 'src-new/components/new-subjects/popups/lesson-popup/LessonPopup.types';\nimport { useGetSubjectsTree } from 'src-new/hooks/new-subjects/use-get-subjects-tree';\nimport { isEmptyList } from 'src-new/utils';\nimport { useAppSelector } from 'store/store';\nimport { TSelectedCourse } from 'types/newSubjectsTypes';\n\ntype TUseGetPopupLessonDataProps = {\n lessonId: number;\n courseGroupId: number;\n taskId?: number;\n courseId?: number;\n isNeedFetch?: boolean;\n};\ntype TUseGetPopupLessonDataResponse = {\n courseInfo: TSelectedCourse | undefined;\n topicInfo: TInfo | undefined;\n lessonInfo: TInfo | undefined;\n};\nexport const useGetPopupLessonData = (props: TUseGetPopupLessonDataProps): TUseGetPopupLessonDataResponse => {\n const { lessonId, courseId, courseGroupId, taskId, isNeedFetch = true } = props;\n\n const { isStudent, isTeacher } = useRole();\n const { getTreeByUrl } = useGetSubjectsTree();\n\n const [courseInfo, setCourseInfo] = useState();\n const [topicInfo, setTopicInfo] = useState();\n const [lessonInfo, setLessonInfo] = useState();\n const [isInfoGets, setIsInfoGets] = useState(false);\n\n const { lessonsTree, topicsTree, selectedCourse } = useAppSelector((store) => store.newSubject);\n\n // Первоначально пытаемся получить необходимую информацию из стора\n useEffect(() => {\n if (+courseGroupId === selectedCourse.id || courseId === selectedCourse.courseId) {\n if (courseGroupId && selectedCourse) {\n setCourseInfo(selectedCourse);\n }\n if (lessonId && !isEmptyList(topicsTree)) {\n const topic = topicsTree.find(({ lessons }) => lessons?.includes(+lessonId));\n if (topic) {\n setTopicInfo({\n id: topic.id,\n title: topic.title,\n });\n }\n }\n if (lessonId && !isEmptyList(lessonsTree)) {\n const lesson = {\n id: +lessonId,\n title: lessonsTree.find((item) => item.id === +lessonId)?.title ?? '',\n };\n setLessonInfo(lesson);\n }\n } else if (\n !isEmptyList(topicsTree) &&\n !isEmptyList(lessonsTree) &&\n selectedCourse &&\n lessonId &&\n !courseId &&\n !courseGroupId\n ) {\n //Если курс, тема и урок были получены только исходя из id урока, то просто записываем полученную информацию\n setCourseInfo(selectedCourse);\n const topic = topicsTree.find(({ lessons }) => lessons?.includes(+lessonId));\n if (topic) {\n setTopicInfo({\n id: topic.id,\n title: topic.title,\n });\n }\n const lesson = {\n id: +lessonId,\n title: lessonsTree.find((item) => item.id === +lessonId)?.title ?? '',\n };\n setLessonInfo(lesson);\n }\n setIsInfoGets(true);\n }, [lessonId, courseGroupId, courseId, selectedCourse, topicsTree, lessonsTree]);\n // Если необходимой информации в сторе нет, делаем запросы к апи\n useEffect(() => {\n if (!lessonInfo?.title && isInfoGets && (isStudent || isTeacher) && isNeedFetch) {\n const params = {\n course: {\n id: +courseGroupId,\n courseId: courseId ? +courseId : undefined,\n },\n topic: topicInfo?.id,\n lesson: +lessonId,\n };\n\n getTreeByUrl(params);\n }\n }, [isInfoGets, isStudent, isTeacher, courseGroupId]);\n\n return {\n courseInfo,\n topicInfo,\n lessonInfo,\n };\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useRole } from 'hooks';\nimport { TTeacher } from 'src-new/components/new-subjects';\nimport { getStudentsListAction } from 'store/actions/newSubjects';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { TCourseGroup, TGetCourseTreePayload, TSelectedCourse } from 'types/newSubjectsTypes';\n\nimport { TUseGetSubjectsTreeDataResponse } from './useGetSubjectsTreeData.types';\n\n/**\n * @description Хук для получения доп информации для предметов в зависимости от роли пользователя\n * @return {TUseGetSubjectsTreeDataResponse}\n */\nexport const useGetSubjectsTreeData = (): TUseGetSubjectsTreeDataResponse => {\n const { isStudent, isTeacher } = useRole();\n const [teachersList, setTeachersList] = useState([]);\n\n const dispatch = useDispatch();\n const { courseTree, selectedCourse, studentsList, studentsListPaginate, getCourseTreeStatus } = useAppSelector(\n (store) => store.newSubject,\n );\n\n useEffect(() => {\n if (isStudent) {\n getTeachersList(selectedCourse);\n }\n if (isTeacher) {\n dispatch(getStudentsListAction({ courseGroup: selectedCourse.id }));\n }\n }, [selectedCourse]);\n\n /**\n * @description setTeachersList - достает список учителей по выбранному курсу\n * @param courseParam\n */\n const getTeachersList = (courseParam: TSelectedCourse) => {\n const { id, type } = courseParam;\n if (courseTree) {\n const {\n common: commonCourses,\n choice: choiceCourses,\n additional: additionalCourses,\n } = courseTree as TGetCourseTreePayload;\n let teachers: TTeacher[] = [];\n switch (type) {\n case 'common':\n commonCourses?.forEach((item) => {\n const course = item?.studentGroup?.courseGroups?.find((point) => point.id === id);\n if (course) {\n teachers = course?.teachers ?? [];\n }\n });\n break;\n case 'choice':\n teachers = choiceCourses?.find((item) => item.id === id)?.teachers || [];\n break;\n default:\n case 'additional':\n teachers = additionalCourses?.find((item) => item.id === id)?.teachers || [];\n break;\n }\n setTeachersList(teachers);\n }\n };\n\n const noCourses = useMemo(() => {\n if (isStudent && courseTree) {\n const {\n common: commonCourses,\n choice: choiceCourses,\n additional: additionalCourses,\n } = courseTree as TGetCourseTreePayload;\n return (\n getCourseTreeStatus === FetchStatus.FETCHED &&\n !commonCourses?.length &&\n !choiceCourses?.length &&\n !additionalCourses?.length\n );\n }\n if (isTeacher && courseTree) {\n return getCourseTreeStatus === FetchStatus.FETCHED && !(courseTree as TCourseGroup[])?.length;\n }\n return false;\n }, [isStudent, isTeacher, getCourseTreeStatus, courseTree]);\n\n return {\n studentsList,\n studentsListPaginate,\n teachersList,\n noCourses,\n };\n};\n","import { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useRole } from 'hooks';\nimport { HARD_MODAL_ENUMS } from 'src-new/components/layouts/Modals/Modals.config';\nimport {\n useCreateQuestionPopup,\n useLessonsPopup,\n useSearchQuestionsPopup,\n useStudentTasksViewPopup,\n useTaskPopup,\n} from 'src-new/hooks';\nimport {\n TCreateQuestionQuery,\n TLessonQuery,\n TSearchQuestionsQuery,\n TStudentTasksViewQuery,\n TTaskQuery,\n} from 'types/lessonTask';\n\nimport { TUseSubjectsRedirect } from './useSubjectsRedirect.types';\n\n/**\n * @description хук, который редиректит между старыми и новыми предметами в зависимости от роли и страницы\n * @param {TUseSubjectsRedirect} props\n */\nexport const useSubjectsRedirect = (props: TUseSubjectsRedirect): void => {\n const { modalType, urlProps, isFromOldSubjects } = props;\n const { courseId } = urlProps as TLessonQuery;\n const type = HARD_MODAL_ENUMS[modalType];\n\n const history = useHistory();\n const { isStudent, isTeacher, isMethodist } = useRole();\n const isOnlyTeacher = isTeacher && !isMethodist;\n\n const LessonPopup = useLessonsPopup();\n const TaskPopup = useTaskPopup();\n const StudentTasksViewPopup = useStudentTasksViewPopup();\n const CreateQuestionPopup = useCreateQuestionPopup();\n const SearchQuestionsPopup = useSearchQuestionsPopup();\n\n const handleLessonOpen = () => {\n const { lessonId, courseGroupId, subjectId, courseId, tab } = urlProps as TLessonQuery;\n if (isStudent === false && isTeacher === false && LessonPopup.isCurrent) {\n history.push(\n `/subjects/${subjectId ?? courseId}/${lessonId}/${tab ?? 'materials'}?course_group=${courseGroupId}`,\n );\n } else if (isStudent === false && isTeacher === false) {\n history.push('/');\n }\n };\n const handleTaskOpen = () => {\n const { lessonId, courseGroupId, taskId, purpose, subjectId } = urlProps as TTaskQuery;\n\n if (isTeacher === false && TaskPopup.isCurrent) {\n const taskIdPart = purpose === 'edit' ? `/${taskId}` : '';\n history.push(\n `/subjects/${subjectId}/${lessonId}/tasks/${purpose}${taskIdPart}?course_group=${courseGroupId}`,\n );\n } else if (isTeacher === false) {\n history.push('/');\n }\n };\n const handleSearchQuestionsOpen = () => {\n const { lessonId, courseGroupId, assignment, num, purpose, subjectId } = urlProps as TSearchQuestionsQuery;\n if (isTeacher === false && SearchQuestionsPopup.isCurrent) {\n const assignmentPart =\n purpose === 'edit' ? `edit/search-questions/${num}/${assignment}` : `search-questions/${num}`;\n\n history.push(`/subjects/${subjectId}/${lessonId}/task/${assignmentPart}/?course_group=${courseGroupId}`);\n } else if (isTeacher === false) {\n history.push('/');\n }\n };\n const handleCreateQuestionOpen = () => {\n const { lessonId, courseGroupId, num, purpose, subjectId, assignment } = urlProps as TCreateQuestionQuery;\n if (isTeacher === false && CreateQuestionPopup.isCurrent) {\n const assignmentPart =\n purpose === 'edit'\n ? `edit/search-questions/${num}/${assignment}/create`\n : `search-questions/${num}/create`;\n\n history.push(`/subjects/${subjectId}/${lessonId}/task/${assignmentPart}/?course_group=${courseGroupId}`);\n } else if (isTeacher === false) {\n history.push('/');\n }\n };\n const handleTasksViewOpen = () => {\n const { lessonId, courseGroupId, taskId, studentId, subjectId } = urlProps as TStudentTasksViewQuery;\n\n if (isTeacher === false && isStudent === false && StudentTasksViewPopup.isCurrent) {\n history.push(\n `/subjects/${subjectId}/lessons/${lessonId}/tasks/students/${studentId}/${taskId}?course_group=${courseGroupId}`,\n );\n } else if (isStudent === true) {\n StudentTasksViewPopup.closeLastStudentTasksViewPopup();\n } else if (isTeacher === false && isStudent === false) {\n history.push('/');\n }\n };\n\n // Ниже - методы для перехода из старого функционала в новый\n // (закомментированы редиректы для роли учителя до тех пор, пока старый функционал для учителя не будет скрыт)\n const openLessonPopup = () => {\n const { lessonId, courseGroupId, subjectId, courseId, tab, taskId } = urlProps as TLessonQuery;\n\n if ((isStudent || isOnlyTeacher) && courseId) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n lessonId,\n courseGroupId,\n subjectId,\n courseId,\n tab,\n taskId,\n });\n }\n };\n const openTaskPopup = () => {\n const { lessonId, courseGroupId, taskId, purpose, subjectId } = urlProps as TTaskQuery;\n\n if (isOnlyTeacher) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n lessonId,\n courseGroupId: courseGroupId,\n subjectId,\n tab: 'tasks',\n taskId,\n });\n TaskPopup.openTaskPopup({\n lessonId,\n courseGroupId: courseGroupId,\n subjectId,\n purpose,\n taskId,\n });\n }\n };\n const openSearchQuestionsPopup = () => {\n const {\n lessonId,\n courseGroupId,\n assignment,\n num,\n purpose,\n subjectId,\n taskTypeId,\n } = urlProps as TSearchQuestionsQuery;\n\n if (isOnlyTeacher) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n lessonId,\n courseGroupId: courseGroupId,\n subjectId,\n tab: 'tasks',\n taskId: assignment,\n });\n TaskPopup.openTaskPopup({\n lessonId,\n courseGroupId: courseGroupId,\n subjectId,\n purpose,\n taskId: assignment,\n });\n SearchQuestionsPopup.openSearchQuestionsPopup({\n lessonId,\n courseGroupId: courseGroupId,\n subjectId,\n purpose,\n num,\n taskTypeId,\n });\n }\n };\n const openCreateQuestionPopup = () => {\n const {\n lessonId,\n courseGroupId,\n assignment,\n num,\n purpose,\n prevPurpose,\n subjectId,\n } = urlProps as TCreateQuestionQuery;\n\n if (isOnlyTeacher && lessonId && courseGroupId && assignment && purpose && prevPurpose && subjectId) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n lessonId,\n courseGroupId,\n subjectId,\n tab: 'tasks',\n taskId: assignment,\n });\n TaskPopup.openTaskPopup({\n lessonId,\n courseGroupId,\n subjectId,\n purpose: prevPurpose,\n taskId: assignment,\n });\n CreateQuestionPopup.openCreateQuestionPopup({\n lessonId,\n courseGroupId,\n subjectId,\n purpose,\n assignment,\n num: num ?? 1,\n });\n }\n };\n const openTasksViewPopup = () => {\n const { lessonId, courseGroupId, subjectId, studentId, taskId } = urlProps as TStudentTasksViewQuery;\n\n if (isStudent) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n subjectId,\n courseGroupId: courseGroupId,\n lessonId,\n tab: 'tasks',\n taskId,\n });\n } else if (isOnlyTeacher) {\n history.push('/new-subjects');\n LessonPopup.replaceLastLessonPopup({\n subjectId,\n courseGroupId: courseGroupId,\n lessonId,\n tab: 'tasks',\n taskId,\n });\n StudentTasksViewPopup.openStudentTasksViewPopup({\n subjectId,\n courseGroupId,\n lessonId,\n studentId,\n taskId,\n });\n }\n };\n\n useEffect(() => {\n switch (type) {\n case 'lesson':\n isFromOldSubjects ? openLessonPopup() : handleLessonOpen();\n break;\n case 'task':\n isFromOldSubjects ? openTaskPopup() : handleTaskOpen();\n break;\n case 'search_questions':\n isFromOldSubjects ? openSearchQuestionsPopup() : handleSearchQuestionsOpen();\n break;\n case 'create_question':\n isFromOldSubjects ? openCreateQuestionPopup() : handleCreateQuestionOpen();\n break;\n case 'tasks_view':\n isFromOldSubjects ? openTasksViewPopup() : handleTasksViewOpen();\n break;\n }\n }, [type, isStudent, isTeacher, courseId]);\n};\n","import { deleteApiRequest, getApiRequest, patchApiRequest, postApiRequest } from 'api';\nimport {\n TAuthorMainInfo,\n TAuthorsResponse,\n TBook,\n TBookAuthors,\n TBookFile,\n TBookFileEditPayload,\n TBookFilePayload,\n TBookMainInfo,\n TBookResponse,\n TBookType,\n TCourseType,\n TCreateCourseTypePayload,\n TEditCourseTypePayload,\n TGetAuthorsListPayload,\n TGetBooksListPayload,\n TGetLibraryTreePayload,\n TLibraryTree,\n} from 'types/libraryTypes';\n\nexport const getBooksList = (params: TGetBooksListPayload): Promise => {\n const { type, course, limit, currentPage } = { ...params };\n const typeQuery = type ? `type=${type}&` : '';\n return getApiRequest(\n `/codifier/library/book/?${typeQuery}course=${course}&limit=${(limit as number) || 10}¤tPage=${\n (currentPage as number) || 1\n }`,\n );\n};\n\nexport const getBookById = (id: number): Promise => {\n return getApiRequest(`/codifier/library/book/${id}/`);\n};\n\nexport const getBookTypesList = (): Promise => {\n return getApiRequest(`/codifier/library/book-type/`);\n};\nexport const createCourseType = (params: TCreateCourseTypePayload[]): Promise => {\n return postApiRequest(`/codifier/library/course-type-book/bulk-create/`, params);\n};\nexport const editCourseType = (params: TEditCourseTypePayload[]): Promise => {\n return patchApiRequest(`/codifier/library/course-type-book/bulk-update/`, params);\n};\nexport const deleteCourseType = (ids: number[]): Promise => {\n const params = {\n ids: ids,\n };\n return deleteApiRequest(`/codifier/library/course-type-book/bulk-delete/`, { data: params });\n};\nexport const getLibraryTree = (params: TGetLibraryTreePayload): Promise => {\n return getApiRequest(`/codifier/library/tree/?subject=${params.subject}`);\n};\n\nexport const createBook = (params: TBookMainInfo): Promise => {\n return postApiRequest(`/codifier/library/book/create/`, params);\n};\n\nexport const editBook = (params: { id: number; data: TBookMainInfo }): Promise => {\n return patchApiRequest(`/codifier/library/book/partial-update/${params?.id}/`, params?.data);\n};\n\nexport const deleteBook = (id: number): Promise => {\n return deleteApiRequest(`/codifier/library/book/delete/${id}/`);\n};\n\nexport const getAuthorsList = (params?: TGetAuthorsListPayload): Promise => {\n const { fullname, currentPage, limit } = { ...params };\n\n const url = fullname\n ? `/codifier/library/book-author/?fullname=${fullname}&limit=${(limit as number) || 10}¤tPage=${\n (currentPage as number) || 1\n }`\n : `/codifier/library/book-author/?limit=${(limit as number) || 10}¤tPage=${(currentPage as number) || 1}`;\n\n return getApiRequest(url);\n};\n\nexport const createAuthor = (params: TAuthorMainInfo[]): Promise => {\n return postApiRequest(`/codifier/library/book-author/bulk-create/`, params);\n};\n\nexport const editAuthor = (params: TBookAuthors[]): Promise => {\n return patchApiRequest(`/codifier/library/book-author/bulk-update/`, params);\n};\n\nexport const deleteAuthor = (ids: number[]): Promise => {\n const params = {\n ids: ids,\n };\n return deleteApiRequest(`/codifier/library/book-author/bulk-delete/`, { data: params });\n};\n\nexport const createBookFile = (params: TBookFilePayload): Promise => {\n const data = new FormData();\n data.append('file', params.file);\n data.append('book', `${params.book}`);\n return postApiRequest(`/book-file/create/`, data, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n Accept: 'application/json',\n },\n });\n};\n\nexport const editBookFile = (params: TBookFileEditPayload): Promise => {\n const data = new FormData();\n data.append('file', params.data.file);\n data.append('book', `${params.data.book}`);\n return patchApiRequest(`/book-file/update/${params?.id}/`, data, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n Accept: 'application/json',\n },\n });\n};\n\nexport const deleteBookFile = (id: number): Promise => {\n return deleteApiRequest(`/book-file/delete/${id}/`);\n};\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { getCourses } from 'api/services/course';\nimport * as LibService from 'api/services/library';\nimport {\n TAuthorMainInfo,\n TBook,\n TBookAuthors,\n TBookCreatePayload,\n TBookEditPayload,\n TBookFileEditPayload,\n TBookFilePayload,\n TCreateCourseTypePayload,\n TEditCourseTypePayload,\n TGetAuthorsListPayload,\n TGetBooksListPayload,\n TGetLibraryTreePayload,\n} from 'types/libraryTypes';\n\nexport const resetLibraryAction = createAction('library/resetLibrary', () => {\n return {\n payload: 'null',\n };\n});\nexport const resetLibraryStatusesAction = createAction('library/resetLibraryStatuses', () => {\n return {\n payload: 'null',\n };\n});\n\nexport const getLibraryTreeAction = createAsyncThunk(\n 'library/getLibraryTree',\n async (params: TGetLibraryTreePayload) => {\n return await LibService.getLibraryTree(params);\n },\n);\n\n//КУРС-ТИП\nexport const createCourseTypeAction = createAsyncThunk(\n 'library/createCourseType',\n async (params: TCreateCourseTypePayload[]) => {\n return await LibService.createCourseType(params);\n },\n);\nexport const editCourseTypeAction = createAsyncThunk(\n 'library/editCourseType',\n async (params: TEditCourseTypePayload[]) => {\n return await LibService.editCourseType(params);\n },\n);\n\nexport const getBookCoursesListAction = createAsyncThunk('library/getAllCourses', async () => {\n return await getCourses();\n});\nexport const getBookTypesListAction = createAsyncThunk('library/getBookTypesList', async () => {\n return await LibService.getBookTypesList();\n});\n\n//КРУД ПО КНИГЕ\nexport const createBookAction = createAsyncThunk('library/createBook', async (params: TBookCreatePayload) => {\n const authorsIdList = await authorsCreationHelper(params.authors);\n const createBookPayload = { ...params.creationParams };\n createBookPayload.authors = authorsIdList;\n\n const res = await LibService.createBook(createBookPayload);\n\n const courseTypePayload = params.courseType.map((item) => {\n return {\n course: item.course,\n type: item.type,\n book: res.id,\n };\n });\n try {\n await LibService.createCourseType(courseTypePayload);\n if (params.file) {\n await LibService.createBookFile({\n book: res.id,\n file: params.file,\n });\n }\n } catch (err) {\n void params?.callback?.(res?.id || 0);\n throw err;\n }\n\n return res;\n});\nexport const editBookAction = createAsyncThunk('library/editBook', async (params: TBookEditPayload) => {\n const authorsIdList = params.authors.length ? await authorsCreationHelper(params.authors) : [];\n const editBookPayload = { ...params.editParams };\n editBookPayload.data.authors = authorsIdList;\n\n if (params.courseType?.length) {\n await courseTypeCreationHelper(params.courseType);\n }\n if (params.courseTypeIds?.length) {\n await LibService.deleteCourseType(params.courseTypeIds);\n }\n\n const res = await LibService.editBook(editBookPayload);\n if (params.file && params.fileId) {\n await LibService.editBookFile({\n id: params.fileId,\n data: {\n book: res.id,\n file: params.file,\n },\n });\n }\n if (params.file && !params.fileId) {\n await LibService.createBookFile({\n book: res.id,\n file: params.file,\n });\n }\n if (!params.file && params.fileId) {\n await LibService.deleteBookFile(params.fileId);\n }\n return res;\n});\nexport const deleteBookAction = createAsyncThunk('library/deleteBook', async (book: TBook) => {\n await LibService.deleteBook(book.id);\n return { id: book.id, courseId: book.courseTypeBooks[0].course.id, typeId: book.courseTypeBooks[0].type.id };\n});\nexport const getBooksListAction = createAsyncThunk('library/getBooksList', async (params: TGetBooksListPayload) => {\n return await LibService.getBooksList(params);\n});\nexport const getBookByIdAction = createAsyncThunk('library/getBookById', async (id: number) => {\n return await LibService.getBookById(id);\n});\n\n//КРУД ПО АВТОРАМ\nexport const createAuthorAction = createAsyncThunk('library/createAuthor', async (params: TAuthorMainInfo[]) => {\n return await LibService.createAuthor(params);\n});\nexport const editAuthorAction = createAsyncThunk('library/editAuthor', async (params: TBookAuthors[]) => {\n return await LibService.editAuthor(params);\n});\nexport const deleteAuthorAction = createAsyncThunk('library/deleteAuthor', async (ids: number[]) => {\n await LibService.deleteAuthor(ids);\n\n return await LibService.getAuthorsList();\n});\nexport const getAuthorsListAction = createAsyncThunk('library/getAuthorsList', (params?: TGetAuthorsListPayload) => {\n return LibService.getAuthorsList(params);\n});\n\n//КРУД ПО ФАЙЛАМ\nexport const createBookFileAction = createAsyncThunk('library/createBookFile', async (params: TBookFilePayload) => {\n return await LibService.createBookFile(params);\n});\nexport const editBookFileAction = createAsyncThunk('library/editBookFile', async (params: TBookFileEditPayload) => {\n return await LibService.editBookFile(params);\n});\nexport const deleteBookFileAction = createAsyncThunk('library/deleteBookFile', async (id: number) => {\n return await LibService.deleteBookFile(id);\n});\n\nconst authorsCreationHelper = async (authorsList: string[]): Promise => {\n const authorsToCreate: TAuthorMainInfo[] = [];\n const authorsIdList: number[] = [];\n authorsList.forEach((item) => {\n if (!Number(item)) {\n const authorInfo = item.split(' ');\n const list: string[] = [];\n\n authorInfo.forEach((item) => {\n if (item.includes('.')) {\n const splited = item.replace(/\\.$/gm, '').split('.');\n splited.forEach((item) => list.push(`${item}.`));\n } else {\n list.push(item);\n }\n });\n\n authorsToCreate.push({\n firstName: list[1],\n patronymic: list[2] || '',\n lastName: list[0],\n });\n } else {\n authorsIdList.push(+item);\n }\n });\n if (authorsToCreate.length) {\n const createdAuthors = await LibService.createAuthor(authorsToCreate);\n if (createdAuthors.length) {\n authorsIdList.push(...createdAuthors.map((item) => item.id));\n }\n }\n\n return authorsIdList;\n};\nconst courseTypeCreationHelper = async (list: { id: number; course: number; type: number; book: number }[]) => {\n const courseTypeToCreate: TCreateCourseTypePayload[] = [];\n const courseTypeToEdit: TEditCourseTypePayload[] = [];\n list?.forEach((item) => {\n if (!item?.id) {\n courseTypeToCreate.push({\n course: item.course,\n type: item.type,\n book: item.book,\n });\n } else {\n courseTypeToEdit.push(item);\n }\n });\n if (courseTypeToCreate.length) {\n await LibService.createCourseType(courseTypeToCreate);\n }\n if (courseTypeToEdit.length) {\n await LibService.editCourseType(courseTypeToEdit);\n }\n};\n","import { deleteApiRequest, getApiRequest, patchApiRequest, postApiRequest } from '@fsd-shared/utils';\nimport { apiMonitoring } from 'api';\nimport { AxiosRequestConfig } from 'axios';\n\nexport const getMonitoringRequest = (link: string, body?: BodyType): Promise => {\n return getApiRequest(apiMonitoring, link, body);\n};\nexport const patchMonitoringRequest = (\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise => {\n return patchApiRequest(apiMonitoring, link, body, config);\n};\nexport const postMonitoringRequest = (\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise => {\n return postApiRequest(apiMonitoring, link, body, config);\n};\nexport const deleteMonitoringRequest = (\n link: string,\n params?: BodyType,\n): Promise => {\n return deleteApiRequest(apiMonitoring, link, params);\n};\n","import {\n TCriteriaGroup,\n TCriteriaSetting,\n TGetCriteriaGroupsProps,\n TGetCriteriaSettingProps,\n TGetMonitoringStaffListProps,\n TGetMonitoringSubjectsListProps,\n TGetQuestionsCreatedProgressProps,\n TGetSummaryTableDataProps,\n TGetTeachersCriteriaStatisticProps,\n TGetTeachesWorkDaysProps,\n TMonitoringStaffList,\n TMonitoringSubjectsList,\n TQuestionsCreatedDiagramData,\n TQuestionsCreatedDiagramDataFilters,\n TQuestionsCreatedProgress,\n TQuestionsCreatedTableData,\n TQuestionsCreatedTableDataProps,\n TSummaryChartData,\n TSummaryChartDataFilters,\n TSummaryTableData,\n TTeacherInfo,\n TTeachersCriteriaStatistic,\n TTeachersMonitoringData,\n TTeachersQuestionsCreatedDiagram,\n TTeachersWorkDaysRes,\n} from '@fsd-shared/models/statisticsMonitoring';\nimport { getUrlParamsString } from '@fsd-shared/utils';\nimport { postApiRequest } from 'api';\n\nimport { getMonitoringRequest, postMonitoringRequest } from './requestServices';\n\nexport const getMonitoringStaffList = (props: TGetMonitoringStaffListProps): Promise => {\n const payload = {\n filters: {\n search: props.search,\n roles: props.roles,\n subjects: props.subjects,\n ids: props.ids,\n },\n currentPage: props.currentPage,\n limit: props.limit,\n };\n return postApiRequest('/api/v2/monitoring/staff-users/', payload);\n};\nexport const getMonitoringSubjectsList = (props: TGetMonitoringSubjectsListProps): Promise => {\n const payload = {\n filters: {\n search: props.search,\n },\n currentPage: props.currentPage,\n limit: props.limit,\n };\n return postApiRequest('/api/v2/monitoring/subjects/', payload);\n};\n\nexport const getCriteriaGroupsList = (props?: TGetCriteriaGroupsProps): Promise => {\n const queryString = props ? getUrlParamsString(props) : '';\n return getMonitoringRequest(`/api/v1/criteria/${queryString}`);\n};\n\nexport const getTeacherMonitoringData = (date?: string): Promise => {\n return postMonitoringRequest('/api/v1/progress/', { date });\n};\nexport const getCriteriaSetting = (props: TGetCriteriaSettingProps): Promise => {\n return postMonitoringRequest('/api/v1/criterion-params/', props);\n};\n\nexport const getSummaryTableData = (props: TGetSummaryTableDataProps): Promise => {\n return postMonitoringRequest('api/v1/table/', props);\n};\nexport const getTeachersCriteriaStatistic = (\n props: TGetTeachersCriteriaStatisticProps,\n): Promise => {\n return postMonitoringRequest('api/v1/teacher/', props);\n};\nexport const getTeachesInfo = (id: string): Promise => {\n return postMonitoringRequest('api/v1/teacher/info/', { user: id });\n};\nexport const getTeachesWorkDays = (props: TGetTeachesWorkDaysProps): Promise => {\n return postMonitoringRequest('api/v1/teacher/work-days/', props);\n};\nexport const getQuestionsCreatedProgress = (\n props: TGetQuestionsCreatedProgressProps,\n): Promise => {\n return postMonitoringRequest('api/v1/teacher/questions-created/', props);\n};\nexport const getSummaryChartData = (filters: TSummaryChartDataFilters): Promise => {\n return postMonitoringRequest('api/v1/diagram/', filters);\n};\n//добавление вопросов в банк вопросов\nexport const getQuestionsCreatedTableData = (\n filters: TQuestionsCreatedTableDataProps,\n): Promise => {\n return postMonitoringRequest('api/v1/table/questions-created/', filters);\n};\nexport const getQuestionsCreatedDiagramData = (\n filters: TQuestionsCreatedDiagramDataFilters,\n): Promise => {\n return postMonitoringRequest('api/v1/diagram/questions-created/', filters);\n};\nexport const getTeachersQuestionsCreatedDiagram = (date?: string): Promise => {\n return postMonitoringRequest('api/v1/progress/questions-created/', { date });\n};\n","import {\n TGetCriteriaGroupsProps,\n TGetCriteriaSettingProps,\n TGetMonitoringStaffListProps,\n TGetMonitoringSubjectsListProps,\n TGetQuestionsCreatedProgressProps,\n TGetSummaryTableDataProps,\n TGetTeachersCriteriaStatisticProps,\n TGetTeachesWorkDaysProps,\n TQuestionsCreatedDiagramDataFilters,\n TQuestionsCreatedTableDataProps,\n TSummaryChartDataFilters,\n} from '@fsd-shared/models/statisticsMonitoring';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport {\n getCriteriaGroupsList,\n getCriteriaSetting,\n getMonitoringStaffList,\n getMonitoringSubjectsList,\n getQuestionsCreatedDiagramData,\n getQuestionsCreatedProgress,\n getQuestionsCreatedTableData,\n getSummaryChartData,\n getSummaryTableData,\n getTeacherMonitoringData,\n getTeachersCriteriaStatistic,\n getTeachersQuestionsCreatedDiagram,\n getTeachesInfo,\n getTeachesWorkDays,\n} from './statisticsMonitoringApi';\n\n//список учителей\nexport const getMonitoringStaffListAction = createAsyncThunk(\n 'statisticsMonitoring/getMonitoringStaffList',\n async (props?: TGetMonitoringStaffListProps) => {\n const res = await getMonitoringStaffList({\n ...props,\n roles: ['teacher'],\n currentPage: props?.currentPage ?? 1,\n limit: props?.limit ?? 10,\n });\n return {\n ...res,\n search: props?.search,\n };\n },\n);\n//список предметов\nexport const getMonitoringSubjectsListAction = createAsyncThunk(\n 'statisticsMonitoring/getMonitoringSubjectsList',\n async (props?: TGetMonitoringSubjectsListProps) => {\n const res = await getMonitoringSubjectsList({\n search: props?.search,\n currentPage: props?.currentPage ?? 1,\n limit: props?.limit ?? 10,\n });\n return {\n ...res,\n search: props?.search,\n };\n },\n);\n\nexport const getTeacherMonitoringDataAction = createAsyncThunk(\n 'statisticsMonitoring/getTeacherMonitoringData',\n async (date?: string) => {\n return getTeacherMonitoringData(date);\n },\n);\n//список групп критериев\nexport const getCriteriaGroupsListAction = createAsyncThunk(\n 'statisticsMonitoring/getCriteriaGroupsList',\n async (props?: TGetCriteriaGroupsProps) => {\n return getCriteriaGroupsList(props);\n },\n);\n\n//настройка критериев за месяц\nexport const getCriteriaSettingAction = createAsyncThunk(\n 'statisticsMonitoring/getCriteriaSetting',\n async (props: TGetCriteriaSettingProps) => {\n return await getCriteriaSetting(props);\n },\n);\n//сводная таблица\nexport const getSummaryTableDataAction = createAsyncThunk(\n 'statisticsMonitoring/getSummaryTableData',\n async (props: TGetSummaryTableDataProps) => {\n const defaultProps = {\n ...props,\n currentPage: props.currentPage ?? 1,\n limit: props.limit ?? 10,\n };\n return await getSummaryTableData(defaultProps);\n },\n);\n//информация об учителе из сводной таблицы\nexport const getTeachersCriteriaStatisticAction = createAsyncThunk(\n 'statisticsMonitoring/getTeachersCriteriaStatistic',\n async (props: TGetTeachersCriteriaStatisticProps) => {\n return await getTeachersCriteriaStatistic(props);\n },\n);\nexport const getTeachesInfoAction = createAsyncThunk('statisticsMonitoring/getTeachesInfo', async (id: string) => {\n return await getTeachesInfo(id);\n});\nexport const getTeachesWorkDaysAction = createAsyncThunk(\n 'statisticsMonitoring/getTeachesWorkDays',\n async (props: TGetTeachesWorkDaysProps) => {\n return await getTeachesWorkDays(props);\n },\n);\nexport const updateTeachesWorkDaysAction = createAsyncThunk(\n 'statisticsMonitoring/updateTeachesWorkDays',\n async (props: TGetTeachesWorkDaysProps) => {\n const workDays = await getTeachesWorkDays(props);\n const questionsCreated = await getQuestionsCreatedProgress({ user: props.user, date: props.date });\n return {\n workDays,\n questionsCreated,\n };\n },\n);\nexport const getQuestionsCreatedProgressAction = createAsyncThunk(\n 'statisticsMonitoring/getQuestionsCreatedProgress',\n async (props: TGetQuestionsCreatedProgressProps) => {\n return await getQuestionsCreatedProgress(props);\n },\n);\n//сводный график\nexport const getSummaryChartDataAction = createAsyncThunk(\n 'statisticsMonitoring/getSummaryChartData',\n async (filters: TSummaryChartDataFilters) => {\n return await getSummaryChartData(filters);\n },\n);\n//добавление в банк вопросов\nexport const getQuestionsCreatedTableDataAction = createAsyncThunk(\n 'statisticsMonitoring/getQuestionsCreatedTableData',\n async (props: TQuestionsCreatedTableDataProps) => {\n const defaultProps = {\n ...props,\n currentPage: props.currentPage ?? 1,\n limit: props.limit ?? 10,\n };\n return await getQuestionsCreatedTableData(defaultProps);\n },\n);\nexport const getQuestionsCreatedDiagramDataAction = createAsyncThunk(\n 'statisticsMonitoring/getQuestionsCreatedDiagramData',\n async (filters: TQuestionsCreatedDiagramDataFilters) => {\n return await getQuestionsCreatedDiagramData(filters);\n },\n);\nexport const getTeachersQuestionsCreatedDiagramAction = createAsyncThunk(\n 'statisticsMonitoring/getTeachersQuestionsCreatedDiagram',\n async (date?: string) => {\n return await getTeachersQuestionsCreatedDiagram(date);\n },\n);\n","import { AssignmentType } from './assignment';\n\nexport interface AssignmentProgress {\n id: number;\n status: 'deferredAssignment' | 'onCheck' | 'assigned' | 'completed';\n assignment: number;\n student: number;\n deadlineForComplete: string;\n assignedDate: string;\n teacher: number;\n conference: number;\n isViewed: boolean;\n}\n\nexport interface StudentGroup {\n id: number;\n groupTitle: string;\n studentsQuantity: number;\n assignmentQuantity: number;\n nextLessonTime: string;\n nextAssignmentDeadline: string;\n teacherFirstName: string;\n teacherLastName: string;\n students: {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n }[];\n}\n\nexport enum AssignmentProgressStatus {\n DEFERRED_ASSIGNMENT = 'deferred_assignment',\n ON_CHECK = 'on_check',\n ASSIGNED = 'assigned',\n COMPLETED = 'completed',\n}\nexport enum AssignmentProgressType {\n TEST = 'test',\n INDEPENDENT = 'independent',\n CLASSROOM = 'classroom',\n HOMEWORK = 'homework',\n TRAINING = 'training',\n TEMPLATE = 'template',\n}\n\nexport interface AssignmentProgressPreview {\n id: number;\n status: AssignmentProgressStatus;\n title?: string;\n subject: number;\n course: {\n id: number;\n title: string;\n };\n lesson: number;\n assignment: {\n id: number;\n title: string;\n description: string;\n type: AssignmentType;\n };\n courseGroup: {\n id: number;\n title: string;\n };\n assignedDate?: string;\n completeDate?: string;\n deadlineForComplete?: string;\n deadlineForCheck?: string;\n}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n changeEventRoom,\n createEventRoom,\n CreateRoomData,\n deleteEventRoom,\n getEventRoomDetails,\n getEventRooms,\n getEvents,\n getProctors,\n} from 'api/services/proctoring';\nimport { EventActions, EventTypes } from 'types/events';\n\nexport const getEventsByDateAction = createAsyncThunk('proctoring/getEvents', (date: string) => {\n return getEvents({ date });\n});\n\nexport const getStudentEventsAction = createAsyncThunk('proctoring/getStudentEvents', () => {\n return getEvents({});\n});\n\nexport const getProctorsAction = createAsyncThunk('proctoring/getProctors', () => {\n return getProctors();\n});\n\ntype GetEventRoomsByLessonAndTypeParams = {\n lesson: number;\n event_type: EventTypes;\n student?: number;\n id?: number;\n};\n\nexport const getEventRoomsByLessonAndTypeAction = createAsyncThunk(\n 'proctoring/getEventRoomsByLessonAndType',\n ({ lesson, event_type }: GetEventRoomsByLessonAndTypeParams) => {\n return getEventRooms({ lesson, event_type });\n },\n);\n\ntype GetEventRoomsByDatesParams = {\n datetimeEnd: string;\n datetimeStart: string;\n eventType: EventTypes;\n};\n\ntype rejoinRoomsParams = {\n leaveId: number;\n newId: number;\n studentId?: number;\n lesson: number;\n event_type: EventTypes;\n};\n\ntype joinRoomsParams = {\n newId: number;\n studentId?: number;\n lesson: number;\n event_type: EventTypes;\n};\n\nexport const getEventRoomsByDates = createAsyncThunk(\n 'proctoring/getEventRoomsByDates',\n ({ datetimeEnd, datetimeStart, eventType }: GetEventRoomsByDatesParams) => {\n return getEventRooms({\n datetime_start_before: datetimeEnd,\n datetime_start_after: datetimeStart,\n event_type: eventType,\n });\n },\n);\n\nexport const getEventRoomDetailsAction = createAsyncThunk(\n 'proctoring/getEventRoomDetails',\n (id: number, { dispatch }) => {\n return getEventRoomDetails(id).then((room) => {\n void dispatch(getEventsByDateAction(room.datetimeStart));\n\n return room;\n });\n },\n);\n\nexport const createEventRoomAction = createAsyncThunk('proctoring/createEventRoom', (data: CreateRoomData) => {\n return createEventRoom(data);\n});\n\ntype ChangeRoomActionParams = {\n id: number;\n datetimeStart?: string;\n duration?: number;\n maxStudents?: number;\n leaders?: number[];\n action?: EventActions;\n};\n\nexport const changeEventRoomAction = createAsyncThunk('proctoring/changeEventRoom', (data: ChangeRoomActionParams) => {\n return changeEventRoom(data);\n});\n\nexport const getStudentsEventRoomsByLessonAndTypeAction = createAsyncThunk(\n 'proctoring/getStudentsEventRoomsByLessonAndType',\n ({ lesson, event_type, id }: GetEventRoomsByLessonAndTypeParams) => {\n return Promise.all([getEventRooms({ lesson, event_type }), id]);\n },\n);\n\nexport const rejoinRoomAction = createAsyncThunk('proctoring/rejoinEventRoom', (data: rejoinRoomsParams) => {\n return changeEventRoom({ id: data.leaveId, action: EventActions.LEAVE }).then(() =>\n changeEventRoom({ id: data.newId, action: EventActions.JOIN }).then(() =>\n Promise.all([getEventRooms({ lesson: data.lesson, event_type: data.event_type }), data.studentId]),\n ),\n );\n});\n\nexport const joinRoomAction = createAsyncThunk('proctoring/joinEventRoom', (data: joinRoomsParams) => {\n return changeEventRoom({ id: data.newId, action: EventActions.JOIN }).then(() =>\n Promise.all([getEventRooms({ lesson: data.lesson, event_type: data.event_type }), data.studentId]),\n );\n});\n\nexport const deleteEventRoomAction = createAsyncThunk('proctoring/deleteEventRoom', (id: number) => {\n return deleteEventRoom(id);\n});\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n AssigningStudentTask,\n deleteStudentTasks,\n fetchAssignedAndOnCheckHomeworks,\n fetchHomeworks,\n getAssignedHomeworks,\n getAssignmentProgressPreview,\n getHomeworkPreviewBeetweenDates,\n getHomeworksBetweenDates,\n GetHWPreviewParams,\n getProgressesStatistics,\n getStudentsTasks,\n postStudentTask,\n PutAssignmentProgress,\n putStudentTask,\n} from 'api/services/homework';\nimport { postDeferredAssignment } from 'api/services/homework/postStudentTask';\nimport { payloadTimeFormatter } from 'src-new/utils/date-n-time';\nimport { AssignmentProgressPreview, AssignmentProgressStatus } from 'types/assignmentProgress';\nimport {\n EAssignedTypes,\n EDeadlineTypes,\n FilterTypes,\n HomeworkStatus,\n IHomeworkItem,\n TPostDeferredAssignmentAction,\n TPostDeferredAssignmentResponse,\n} from 'types/homework';\n\nexport const fetchHomework = createAsyncThunk('homework/fetchHomework', async (isMandatory?: boolean) => {\n return await fetchHomeworks(isMandatory);\n});\nexport const getAssignedAndOnCheckHomeworkAction = createAsyncThunk(\n 'homework/getAssignedHomework',\n async (isMandatory?: boolean) => {\n return await fetchAssignedAndOnCheckHomeworks(isMandatory);\n },\n);\nexport const getCompletedHomeworkAction = createAsyncThunk('homework/getCompletedHomework', () => {\n return getAssignmentProgressPreview({ status: AssignmentProgressStatus.COMPLETED });\n});\n\nexport const postStudentHomeworksAction = createAsyncThunk(\n 'homework/postStudentHomework',\n async (tasks: AssigningStudentTask[]) => {\n const payload = tasks.map((task) => {\n const startDate = payloadTimeFormatter(task.assignedDate),\n endDate = payloadTimeFormatter(task.deadlineForComplete);\n\n return task.teacher\n ? {\n ...task,\n assignedDate: startDate,\n deadlineForComplete: endDate,\n }\n : {\n assignment: task.assignment,\n student: task.student,\n deadlineForComplete: endDate,\n assignedDate: startDate,\n courseGroup: task.courseGroup,\n assignedType: EAssignedTypes.DATE_TIME,\n deadlineType: EDeadlineTypes.DATE_TIME,\n timeToComplete: task.timeToComplete,\n };\n });\n return await postStudentTask(payload);\n },\n);\nexport const postDeferredAssignmentAction = createAsyncThunk(\n 'homework/postDeferredAssignment',\n async (params: TPostDeferredAssignmentAction & { isGetter?: boolean }) => {\n const { filters, created, updated, deleted, isGetter = true } = params;\n if (created || updated || deleted) {\n const createdRes = created\n ? await Promise.all(\n created?.map(async (assignment) => {\n const { deletedAssignmentIds, ...rest } = assignment;\n return await postDeferredAssignment({ filters, create: rest }).then(async (res) => {\n if (deletedAssignmentIds) {\n await deleteStudentTasks(deletedAssignmentIds);\n }\n return res;\n });\n }),\n )\n : [];\n const updatedRes = updated\n ? await Promise.all(\n updated?.map(async (assignment) => {\n const { deletedDeferredAssignmentsIds, deletedAssignmentIds, ...rest } = assignment;\n\n return await postDeferredAssignment({\n filters,\n update: rest,\n delete: deletedDeferredAssignmentsIds,\n }).then(async (res) => {\n if (deletedAssignmentIds) {\n await deleteStudentTasks(deletedAssignmentIds);\n }\n return res;\n });\n }),\n )\n : [];\n const deletedRes = deleted ? await postDeferredAssignment({ filters, delete: deleted }) : [];\n\n const resultArray = [...createdRes.flat(), ...updatedRes.flat(), ...deletedRes];\n\n return {\n res: resultArray.reduce((res: TPostDeferredAssignmentResponse[], item) => {\n if (!res.find((v) => v.id === item.id)) {\n res.push(item);\n }\n return res;\n }, []),\n };\n }\n\n return {\n res: await postDeferredAssignment({ filters }),\n isGetter,\n };\n },\n);\n\nexport const putStudentHomeworksAction = createAsyncThunk(\n 'homework/putStudentHomework',\n async (tasks: PutAssignmentProgress[]) => {\n const payload = tasks.map((task) => {\n return {\n ...task,\n assignedDate: payloadTimeFormatter(task.assignedDate),\n deadlineForComplete: payloadTimeFormatter(task.deadlineForComplete),\n };\n });\n return await putStudentTask(payload);\n },\n);\n\nexport const deleteStudentHomeworksAction = createAsyncThunk(\n 'homework/deleteStudentHomework',\n async (tasks: { id: number }[]) => {\n return await deleteStudentTasks(tasks);\n },\n);\n\nexport const getProgressesStatisticsAction = createAsyncThunk(\n 'homework/OnCheckProgressesStatistics',\n async ({ status, userId }: { status: HomeworkStatus; userId?: number }) => {\n return await getProgressesStatistics({ status, userId });\n },\n);\nexport const getAssignedHomeworksAction = createAsyncThunk(\n 'homework/getAssignedHomeworks',\n async (isMandatory?: boolean) => {\n return await getAssignedHomeworks(isMandatory);\n },\n);\nexport const getHomeworksBetweenDatesAction = createAsyncThunk(\n 'homework/getHomeworksBetweenDates',\n async (\n params: {\n filterType: FilterTypes;\n dateStart: string;\n dateEnd: string;\n statusFilters?: AssignmentProgressStatus[];\n isFilterCourseGroup?: boolean;\n isMandatory?: boolean;\n }[],\n ) => {\n return await Promise.all(\n params.map((param) => {\n const { filterType, dateStart, dateEnd, statusFilters, isFilterCourseGroup, isMandatory } = param;\n\n return getHomeworksBetweenDates(\n filterType,\n dateStart,\n dateEnd,\n statusFilters,\n isFilterCourseGroup,\n isMandatory,\n );\n }),\n ).then((responses) => {\n return responses.reduce((result, res, index) => {\n result[params[index].filterType] = res;\n\n return result;\n }, {} as Record);\n });\n },\n);\n\nexport const getHomeworkPreviewBetweenDatesAction = createAsyncThunk(\n 'homework/getHomeworkPreviewBetweenDates',\n async (\n params: {\n filterType: FilterTypes;\n dateStart: string;\n dateEnd: string;\n statusFilters?: AssignmentProgressStatus[];\n isFilterCourseGroup?: boolean;\n isMandatory?: boolean;\n }[],\n ) => {\n return await Promise.all(\n params.map((param) => {\n const { filterType, dateStart, dateEnd, statusFilters, isFilterCourseGroup, isMandatory } = param;\n\n return getHomeworkPreviewBeetweenDates(\n filterType,\n dateStart,\n dateEnd,\n statusFilters,\n isFilterCourseGroup,\n isMandatory,\n );\n }),\n ).then((responses) => {\n return responses.reduce((result, res, index) => {\n result[params[index].filterType] = res;\n\n return result;\n }, {} as Record);\n });\n },\n);\n\nexport const getStudentsTasksAction = createAsyncThunk(\n 'homework/getStudentsTasks',\n async (params: { lessons: number[]; students: number[] }) => {\n const { lessons, students } = params;\n return await getStudentsTasks(lessons, students);\n },\n);\n\nexport const getAssignmentProgressPreviewAction = createAsyncThunk(\n 'homework/fetchPreview',\n (params: GetHWPreviewParams) => {\n return getAssignmentProgressPreview(params);\n },\n);\n\nexport const setIsMandatoryAction = createAsyncThunk('homework/setIsMandatory', (state: boolean) => {\n return state;\n});\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n deleteQuestion,\n getHistoryQuestion,\n getQuestionDetailed,\n getQuestions,\n PartialUpdateQuestion,\n partialUpdateQuestion,\n patchQuestion,\n patchQuestionFile,\n PostQuestion,\n postQuestion,\n PostQuestionFile,\n postQuestionFile,\n putQuestion,\n QuestionStatus,\n} from 'api/services/questionBank';\nimport { deleteRevisionQuestion } from 'api/services/revisionQuestion';\nimport { AxiosError } from 'axios';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nexport const getQuestionsAction = createAsyncThunk('questionBank/getQuestions', async (options: string) => {\n return await getQuestions(options);\n});\n\nexport const postQuestionAction = createAsyncThunk('questionBank/postQuestion', async (value: PostQuestion) => {\n return await postQuestion(value)\n .then((res) => {\n if (value.fileIds && res.id) {\n Promise.all(\n value.fileIds.map((id) => {\n return patchQuestionFile({ id: id, question: res.id });\n }),\n ).catch((res) => console.error(res));\n }\n return res;\n })\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n});\n\nexport const refreshStatusesQuestions = createAction('questionBank/refreshStatusesQuestions', () => {\n return {\n payload: {},\n };\n});\n\nexport const getQuestionDetailedAction = createAsyncThunk('questionBank/getQuestionDetailed', async (id: number) => {\n return await getQuestionDetailed(id);\n});\nexport const setMaterialIdToEdit = createAsyncThunk('questionBank/setMaterialIdToEdit', (value: { id: number }) => {\n return value.id;\n});\nexport const patchQuestionAction = createAsyncThunk(\n 'questionBank/patchQuestion',\n async (value: { id: number; materialId: number; isFromMaterials: boolean; question: PostQuestion }) => {\n const putResult = await putQuestion(value);\n if (value.isFromMaterials) {\n const patchPayload = {\n id: value.materialId,\n payload: {\n question: putResult.id,\n content: putResult.id,\n },\n };\n const patchResult = await patchQuestion(patchPayload);\n\n return {\n oldId: value.id,\n //@ts-ignore\n newId: Number(patchResult.question),\n };\n }\n return putResult;\n },\n);\n\nexport const deleteQuestionAction = createAsyncThunk('questionBank/deleteQuestion', async (id: number) => {\n return await deleteQuestion(id);\n});\n\nexport const getHistoryQuestionAction = createAsyncThunk('questionBank/getHistory', async (id: number) => {\n return await getHistoryQuestion(id);\n});\n\nexport const getAssignmentProgressQuestionsAction = createAsyncThunk(\n 'questionBank/getAssignmentProgressQuestions',\n async (questions: number[]) => {\n if (questions.length) {\n const options = createUrlQuery({ include_ids: questions });\n\n return await getQuestions(options);\n }\n\n return [];\n },\n);\n\nexport const postQuestionFileAction = createAsyncThunk('questionBank/postFile', async (values: PostQuestionFile) => {\n return await postQuestionFile(values).catch(() => {\n throw new Error(`Не удалось загрузить файл ${values.file.name}!`);\n });\n});\n\nexport const partialUpdateQuestionAction = createAsyncThunk(\n 'questionBank/partialUpdateQuestion',\n async (params: {\n id: number;\n values: PartialUpdateQuestion;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n }) => {\n if (params.values.status !== QuestionStatus.OnRevision && !!params.revisions?.length) {\n await Promise.all(params.revisions.map((revision) => deleteRevisionQuestion(revision.id)));\n }\n return await partialUpdateQuestion(params);\n },\n);\n","import { api } from 'api';\nimport { AxiosError } from 'axios';\n\nexport const deleteAssignment = (id: number): Promise<{ id: number }> => {\n return api\n .delete(`/assignment/delete/${id}/`)\n .then(() => ({ id }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError } from 'axios';\nimport { IAssignmentItem } from 'types/assignment';\n\nexport const fetchAssignments = async (id: number): Promise => {\n return await api\n .get(`/assignment/${id}`)\n .then((res) => (Array.isArray(res?.data) ? res?.data : [res?.data]))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { getApiRequest } from 'api';\nimport { IAssignmentItem } from 'types/assignment';\n\ntype RequestParams = {\n lesson: number;\n course_group?: number;\n};\n\nexport const getAssignmentsByLesson = (params: RequestParams): Promise => {\n return getApiRequest(`/assignment/`, { params });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AssignmentResponse } from 'types/assignment';\n\nexport interface PatchAssignmentParams {\n id: number;\n title?: string;\n lesson?: number;\n type?: number;\n description?: string;\n isTemplate?: boolean;\n courseGroup?: number;\n}\n\nexport const patchAssignment = (params: PatchAssignmentParams): Promise => {\n const { id, isTemplate, courseGroup, ...value } = params;\n\n return api\n .patch, AxiosResponse>(`/assignment/partial-update/${id}/`, {\n ...value,\n isTemplate,\n courseGroup: isTemplate ? undefined : courseGroup,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AssignmentResponse } from 'types/assignment';\n\nexport interface PostAssignmentParams {\n title: string;\n lesson: number;\n type: number;\n description?: string;\n isTemplate: boolean;\n courseGroup?: number;\n}\n\nexport const postAssignment = (value: PostAssignmentParams): Promise => {\n const { isTemplate, courseGroup, ...restParams } = value;\n return api\n .post, AxiosResponse>(`/assignment/create/`, {\n ...restParams,\n isTemplate,\n courseGroup: isTemplate ? undefined : courseGroup,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { postApiRequest } from 'api';\n\ninterface GetAssignmentProgressIntervalResponse {\n datetimeStart: null | string;\n datetimeEnd: null | string;\n}\n\ninterface GetAssignmentProgressIntervalBody {\n lesson_schedule: number;\n assignment: number;\n}\n\nexport const getAssignmentProgressInterval = async (\n lessonSchedule: number,\n assignment: number,\n): Promise => {\n return await postApiRequest(\n '/assignment-progress/get-interval/',\n {\n lesson_schedule: lessonSchedule,\n assignment,\n },\n );\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n deleteAssignment,\n fetchAssignments,\n getAssignmentMarks,\n getAssignmentsByLesson,\n getAssignmentTypes,\n patchAssignment,\n PatchAssignmentParams,\n postAssignment,\n PostAssignmentParams,\n} from 'api/services/assignment';\nimport {\n getAssignmentProgressTeachersList,\n getAssignmentStudentMarks,\n} from 'api/services/assignment/getAssignmentMarks';\nimport { getAssignmentProgressInterval } from 'api/services/assignment/getAssignmentProgressInterval';\nimport {\n createAssignmentSearchBlocks,\n deleteAssignmentSearchBlocksArray,\n DifficultyEnum,\n PatchAsignmentSearchBlockParams,\n patchAssignmentSearchBlock,\n SearchBlockGet,\n SearchBlockPost,\n} from 'api/services/questionCreate';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nimport { SearchPageState, SingleQuestions } from './questionCreate';\n\nexport const fetchAssignment = createAsyncThunk('assignment/fetchAssignment', async (id: number) => {\n return await fetchAssignments(id);\n});\n\ntype PostAssignmentActionParams = {\n assignmentParams: PostAssignmentParams;\n searchBlocksValues: SearchPageState[];\n questions: SingleQuestions[];\n};\n\nexport const postNewAssignmentAction = createAsyncThunk(\n 'assignment/postAssignment',\n async ({ assignmentParams, searchBlocksValues, questions }: PostAssignmentActionParams, { dispatch }) => {\n return await postAssignment(assignmentParams)\n .then(async (assignment) => {\n const assignmentSearchBlocks = searchBlocksValues\n .flatMap((block) =>\n block.rightSearchBlock.map((searchBlock) => {\n const { filters, id } = searchBlock;\n const questionsIds = searchBlock.questions.map((item) => item.id);\n const isEmptyQuestionBlock = !questionsIds.some(\n (question) => !block.excludesIds.includes(question),\n );\n\n const difficulty: DifficultyEnum[] = [];\n\n if (filters?.complexity?.length !== 3) {\n if (filters?.complexity?.includes('Низкая')) {\n difficulty.push(DifficultyEnum.easy);\n }\n if (filters?.complexity?.includes('Средняя')) {\n difficulty.push(DifficultyEnum.medium);\n }\n if (filters?.complexity?.includes('Высокая')) {\n difficulty.push(DifficultyEnum.hard);\n }\n }\n\n const answersType: AnswersTypeEnum[] = [];\n if (filters?.types?.length !== 5) {\n if (filters?.types?.includes('Вопрос - верно или нет')) {\n answersType.push(AnswersTypeEnum.true_false);\n }\n if (filters?.types?.includes('Вопрос - тестовый, с текстовым ответом')) {\n answersType.push(AnswersTypeEnum.text);\n }\n if (filters?.types?.includes('Вопрос - тестовый')) {\n answersType.push(AnswersTypeEnum.test);\n }\n if (filters?.types?.includes('Вопрос - открытый вопрос - эссе')) {\n answersType.push(AnswersTypeEnum.essay);\n }\n if (filters?.types?.includes('Вопрос - вставить слова')) {\n answersType.push(AnswersTypeEnum.insert_words);\n }\n }\n\n if (!isEmptyQuestionBlock) {\n return {\n id,\n questionNumber: block.questionNum,\n assignment: assignment.id,\n filters: {\n answersType,\n text: filters?.name ? filters.name : undefined,\n topics: filters?.location ? filters.location.map((item) => item.topicId) : [],\n difficulty: difficulty,\n skillsOr:\n filters?.skillsSelect !== 'Все' && filters?.skills\n ? filters.skills.map((skill) => skill.skillId || 0)\n : [],\n skillsAnd:\n filters?.skillsSelect === 'Все' && filters?.skills\n ? filters.skills.map((skill) => skill.skillId || 0)\n : [],\n excludeIds: block.excludesIds,\n },\n };\n }\n }),\n )\n .filter(Boolean) as SearchBlockPost[];\n\n const newSearchBlocks = assignmentSearchBlocks\n .filter((searchBlock) => searchBlock.id === undefined)\n .concat(\n questions.flatMap((questionNumber) =>\n questionNumber.questions.map((question) => ({\n questionNumber: questionNumber.questionNum,\n assignment: assignment.id,\n filters: {\n text: undefined,\n topics: [],\n difficulty: [],\n answersType: [],\n skillsOr: [],\n skillsAnd: [],\n excludeIds: [],\n id: question.id,\n },\n })),\n ),\n )\n .filter((block) => block.questionNumber);\n\n let postedSearchBlocks: SearchBlockGet[] = [];\n if (newSearchBlocks.length) {\n const normalizeNewSearchBlocks: SearchBlockPost[] = [];\n\n newSearchBlocks\n .sort((a, b) => a.questionNumber - b.questionNumber)\n .forEach((item, index) => {\n if (index) {\n const diff = item.questionNumber - newSearchBlocks[index - 1].questionNumber;\n const prevNum = normalizeNewSearchBlocks[index - 1].questionNumber;\n normalizeNewSearchBlocks.push({\n ...item,\n questionNumber: diff ? prevNum + 1 : prevNum,\n });\n } else if (item.questionNumber !== 1) {\n normalizeNewSearchBlocks.push({\n ...item,\n questionNumber: 1,\n });\n } else {\n normalizeNewSearchBlocks.push({ ...item });\n }\n });\n\n postedSearchBlocks = await createAssignmentSearchBlocks(normalizeNewSearchBlocks);\n }\n\n return {\n assignment,\n postedSearchBlocks,\n };\n })\n .then((result) => {\n void dispatch(\n getAssignmentsByLessonAction({\n courseGroup: assignmentParams.courseGroup,\n lesson: assignmentParams.lesson,\n }),\n );\n\n return result;\n });\n },\n);\n\nexport const deleteAssignmentAction = createAsyncThunk('assignment/delete', async (id: number) => {\n return await deleteAssignment(id);\n});\n\nexport const getAssignmentMarksAction = createAsyncThunk(\n 'assignment/getMarks',\n async (params: { lessonIds: number[]; studentIds: number[] }) => {\n return await getAssignmentMarks(params);\n },\n);\nexport const getAssignmentProgressTeachersListAction = createAsyncThunk(\n 'assignment/getAssignmentProgressTeachersList',\n async (id: number) => {\n return await getAssignmentProgressTeachersList(id);\n },\n);\n\nexport const getAssignmentStudentMarksAction = createAsyncThunk(\n 'assignment/getStudentMarks',\n async (params: { mark_date_before: string; mark_date_after: string; student: number }) => {\n return await getAssignmentStudentMarks(params);\n },\n);\n\nexport const getAssignmentProgressIntervalAction = createAsyncThunk(\n 'assignment/getProgressInterval',\n async ({ lessonSchedule, assignmentId }: { lessonSchedule: number; assignmentId: number }) => {\n return {\n interval: await getAssignmentProgressInterval(lessonSchedule, assignmentId),\n assignmentId,\n };\n },\n);\n\ntype PUpdateAssignmentActionParams = {\n assignmentParams: PatchAssignmentParams;\n searchBlocksValues: SearchPageState[];\n currentSearchBlocks: SearchBlockGet[];\n questions: SingleQuestions[];\n isUpdate: boolean;\n};\n\nexport const updateAssignmentNewAction = createAsyncThunk(\n 'assignment/update',\n async (\n {\n assignmentParams,\n searchBlocksValues,\n questions,\n isUpdate,\n currentSearchBlocks,\n }: PUpdateAssignmentActionParams,\n { dispatch },\n ) => {\n return await patchAssignment(assignmentParams)\n .then(async (assignment) => {\n const assignmentSearchBlocks = searchBlocksValues\n .flatMap((block) => {\n return block.rightSearchBlock.map((searchBlock) => {\n const { filters, id } = searchBlock;\n const questionsIds = searchBlock.questions.map((item) => item.id);\n const isEmptyQuestionBlock = !questionsIds.some(\n (question) => !block.excludesIds.includes(question),\n );\n\n const difficulty: DifficultyEnum[] = [];\n\n if (filters?.complexity?.length !== 3) {\n if (filters?.complexity?.includes('Низкая')) {\n difficulty.push(DifficultyEnum.easy);\n }\n if (filters?.complexity?.includes('Средняя')) {\n difficulty.push(DifficultyEnum.medium);\n }\n if (filters?.complexity?.includes('Высокая')) {\n difficulty.push(DifficultyEnum.hard);\n }\n }\n\n const answersType: AnswersTypeEnum[] = [];\n if (filters?.types?.length !== 5) {\n if (filters?.types?.includes('Вопрос - верно или нет')) {\n answersType.push(AnswersTypeEnum.true_false);\n }\n if (filters?.types?.includes('Вопрос - тестовый, с текстовым ответом')) {\n answersType.push(AnswersTypeEnum.text);\n }\n if (filters?.types?.includes('Вопрос - тестовый')) {\n answersType.push(AnswersTypeEnum.test);\n }\n if (filters?.types?.includes('Вопрос - открытый вопрос - эссе')) {\n answersType.push(AnswersTypeEnum.essay);\n }\n if (filters?.types?.includes('Вопрос - вставить слова')) {\n answersType.push(AnswersTypeEnum.insert_words);\n }\n }\n\n if (!isEmptyQuestionBlock) {\n return {\n id,\n questionNumber: block.questionNum,\n assignment: assignment.id,\n filters: {\n answersType,\n text: filters?.name ? filters.name : undefined,\n topics: filters?.location ? filters.location.map((item) => item.topicId) : [],\n difficulty: difficulty,\n skillsOr:\n filters?.skillsSelect !== 'Все' && filters?.skills\n ? filters.skills.map((skill) => skill.skillId || 0)\n : [],\n skillsAnd:\n filters?.skillsSelect === 'Все' && filters?.skills\n ? filters.skills.map((skill) => skill.skillId || 0)\n : [],\n excludeIds: block.excludesIds,\n },\n };\n }\n });\n })\n .filter(Boolean) as SearchBlockPost[];\n\n const updatedSearchBlocks = assignmentSearchBlocks.filter(\n (searchBlock) => searchBlock.id !== undefined,\n ) as PatchAsignmentSearchBlockParams[];\n\n const newSearchBlocks = assignmentSearchBlocks\n .concat(\n questions.flatMap((questionNumber) =>\n questionNumber.questions.map((question) => ({\n questionNumber: questionNumber.questionNum,\n assignment: assignment.id,\n filters: {\n text: undefined,\n topics: [],\n difficulty: [],\n answersType: [],\n skillsOr: [],\n skillsAnd: [],\n excludeIds: [],\n id: question.id,\n },\n })),\n ),\n )\n .filter((block) => block.questionNumber);\n\n const deleteSearchBlocks = currentSearchBlocks\n .filter((searchBlock) => searchBlock.assignment === assignment.id)\n .map((searchBlock) => searchBlock.id) as number[];\n\n let postedSearchBlocks: SearchBlockGet[] = [];\n\n if (newSearchBlocks.length) {\n const normalizeNewSearchBlocks: SearchBlockPost[] = [];\n\n newSearchBlocks\n .sort((a, b) => a.questionNumber - b.questionNumber)\n .forEach((item, index) => {\n if (index) {\n const diff = item.questionNumber - newSearchBlocks[index - 1].questionNumber;\n const prevNum = normalizeNewSearchBlocks[index - 1].questionNumber;\n normalizeNewSearchBlocks.push({\n ...item,\n questionNumber: diff ? prevNum + 1 : prevNum,\n });\n } else if (item.questionNumber !== 1) {\n normalizeNewSearchBlocks.push({\n ...item,\n questionNumber: 1,\n });\n } else {\n normalizeNewSearchBlocks.push({ ...item });\n }\n });\n\n postedSearchBlocks = await createAssignmentSearchBlocks(normalizeNewSearchBlocks);\n }\n\n let patchedSearchBlocks: SearchBlockGet[] = [];\n if (isUpdate) {\n // dispatch(updateSearchBlocksAction(updatedSearchBlocks));\n patchedSearchBlocks = await Promise.all(\n updatedSearchBlocks.map((blockParams) => patchAssignmentSearchBlock(blockParams)),\n );\n }\n\n let deletedSearchBlocks: number[] = [];\n if (deleteSearchBlocks.length) {\n // dispatch(deleteAssignmentSearchBlocksAction(deleteSearchBlocks));\n deletedSearchBlocks = await deleteAssignmentSearchBlocksArray(\n deleteSearchBlocks.map((id) => ({ id })),\n );\n }\n\n return {\n assignment,\n postedSearchBlocks,\n patchedSearchBlocks,\n deletedSearchBlocks,\n };\n })\n .then((result) => {\n void dispatch(\n getAssignmentsByLessonAction({\n courseGroup: assignmentParams.courseGroup,\n lesson: result.assignment.lesson,\n }),\n );\n\n return result;\n });\n },\n);\n\nexport const getAssignmentsByLessonAction = createAsyncThunk(\n `assignment/getAssignmentsByLesson`,\n async (params: { lesson: number; courseGroup?: number }) => {\n return getAssignmentsByLesson({ lesson: params.lesson, course_group: params.courseGroup });\n },\n);\n\nexport const getAssignmentTypesAction = createAsyncThunk('assignment/getAssignmentTypes', () => {\n return getAssignmentTypes();\n});\n","import { getApiRequest } from 'api';\nimport { AssignmentType } from 'types/assignment';\n\nexport const getAssignmentTypes = (): Promise<(AssignmentType & { weight: number })[]> => {\n return getApiRequest('/assignment/types/');\n};\n","import { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\nimport { AssignmentType } from './assignment';\nimport { AssignmentProgressStatus } from './assignmentProgress';\nimport { MarkData, MarkScore } from './mark';\nimport { Student } from './students';\n\nexport interface Task {\n id: number;\n title: string;\n type?: AssignmentType;\n isTemplate: boolean;\n isForMethodist?: boolean;\n isPosted?: boolean;\n assignedDate?: string;\n assignedDelay?: number;\n deadlineForComplete?: string;\n deadlineDelay?: number;\n timeToComplete?: number;\n assignedType: EAssignedTypes;\n deadlineType: EDeadlineTypes;\n teacher?: number;\n allStudents?: boolean;\n}\n\nexport interface AssignmentProgress {\n id: number;\n studentId: number;\n taskId: number;\n status: AssignmentProgressStatus;\n marks?: MarkData[];\n taskTitle: string;\n taskType?: AssignmentType;\n assignedDate?: string;\n assignedDelay?: number;\n deadlineForComplete?: string;\n deadlineDelay?: number;\n timeToComplete?: number;\n assignedType: EAssignedTypes;\n deadlineType: EDeadlineTypes;\n allStudents?: boolean;\n teacher?: {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n errorsList?: string[];\n}\nexport interface AssignedTasks {\n id: number;\n taskId: number;\n status: AssignmentProgressStatus;\n marks?: MarkData[];\n assignedDate?: string;\n assignedDelay?: number;\n deadlineForComplete?: string;\n deadlineDelay?: number;\n timeToComplete?: number;\n assignedType: EAssignedTypes;\n deadlineType: EDeadlineTypes;\n teacher?: {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n errorsList?: string[];\n}\n\nexport interface AssignedHomeWork {\n studentId: number;\n tasks: (AssignedTasks[] | null)[];\n status?: AttendanceStatus;\n lateDuration?: number;\n attendanceId?: number;\n}\n\ntype AssignmentProgressMark = {\n id: number;\n score: MarkScore;\n weight: number;\n author?: {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n patronymic: string;\n };\n};\n\nexport enum HomeworkEnum {\n independent = 'independent',\n home_laboratory = 'home_laboratory',\n recommended_written_homework = 'recommended_written_homework',\n recommended_homework = 'recommended_homework',\n written_homework = 'written_homework',\n class_laboratory = 'class_laboratory',\n home_test = 'home_test',\n control = 'control',\n}\n\ntype TeacherMark = AssignmentProgressMark & { comment: string };\n\nexport interface IHomeworkItem {\n id: string;\n status: AssignmentProgressStatus;\n title?: string;\n description: string;\n marks: AssignmentProgressMark[] | null;\n assignedDate?: string;\n type: AssignmentType;\n student: Student;\n subject?: {\n id: number;\n title: string;\n };\n lesson?: {\n id: number;\n };\n assignment: {\n id: number;\n description?: string;\n };\n completeDate?: string;\n selectedQuestions: number[];\n courseGroup: {\n id: number;\n title: string;\n };\n course?: {\n id: number;\n title: string;\n };\n teacherMark: TeacherMark[];\n deadlineForComplete?: string;\n deadlineForCheck?: string;\n hardDeadline?: string;\n teacher?: {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n timeToComplete: number;\n}\n\nexport enum FilterTypes {\n DEADLINE_FOR_CHECK = 'DEADLINE_FOR_CHECK',\n DEADLINE_FOR_COMPLETE = 'DEADLINE_FOR_COMPLETE',\n ASSIGNED = 'ASSIGNED',\n}\n\nexport interface ProgressesStatisticsData {\n id: number;\n lesson: {\n id: number;\n title: string;\n topic: {\n id: number;\n title: string;\n order: number;\n };\n };\n assignment: {\n id: number;\n assignmentType: {\n id: number;\n title: string;\n };\n };\n courseGroup: {\n id: number;\n title: string;\n students: Student[];\n };\n course: {\n id: number;\n title: string;\n subject: {\n id: number;\n title: string;\n };\n };\n assignedDate?: string;\n checkedDate?: string;\n checkedProgresses: number;\n onCheckProgresses: number;\n deadlineForCheck?: string;\n deadlineForComplete?: string;\n status: AssignmentProgressStatus;\n type: HomeworkEnum;\n}\n\nexport enum HomeworkStatus {\n ON_CHECK = 'on_check',\n COMPLETED = 'completed',\n}\nexport enum EAssignedTypes {\n DATE_TIME = 'exact_time',\n TIME = 'relative_ol',\n NONE = 'now',\n}\nexport enum EDeadlineTypes {\n DATE_TIME = 'exact_time',\n TIME = 'relative_assigned',\n}\nexport type TCreateDeferredAssignment = {\n assignment: number;\n courseGroup?: number;\n eventRoom?: number;\n allStudents?: boolean;\n students?: number[];\n assignedType: EAssignedTypes;\n assignedDate?: string;\n assignedDelay?: number;\n deadlineType: EDeadlineTypes;\n deadlineForComplete?: string;\n deadlineDelay?: number;\n timeToComplete?: number;\n teacher?: number;\n};\nexport type TUpdateDeferredAssignment = {\n id: number;\n allStudents: boolean;\n students?: number[];\n};\nexport type TFiltersDeferredAssignment = {\n courseGroup?: number;\n lesson?: number;\n eventRoom?: number;\n assignment?: number;\n};\nexport type TPostDeferredAssignment = {\n filters: TFiltersDeferredAssignment;\n create?: TCreateDeferredAssignment;\n update?: TUpdateDeferredAssignment;\n delete?: number[];\n};\nexport type TCreateDeferredAssignmentAction = TCreateDeferredAssignment & { deletedAssignmentIds?: { id: number }[] };\nexport type TUpdateDeferredAssignmentAction = TUpdateDeferredAssignment & {\n deletedDeferredAssignmentsIds?: number[];\n deletedAssignmentIds?: { id: number }[];\n};\n\nexport type TPostDeferredAssignmentAction = {\n filters: TFiltersDeferredAssignment;\n created?: TCreateDeferredAssignmentAction[];\n updated?: TUpdateDeferredAssignmentAction[];\n deleted?: number[];\n};\nexport type TPostDeferredAssignmentResponse = {\n id: number;\n assignment: number;\n courseGroup: number;\n eventRoom: number;\n allStudents: boolean;\n students: number[];\n assignedType: EAssignedTypes;\n assignedDate: string;\n assignedDelay: number;\n deadlineType: EDeadlineTypes;\n deadlineForComplete: string;\n deadlineDelay: number;\n timeToComplete: number;\n teacher: {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n author: {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n canBeAssigned: string;\n errorsList: string[];\n title: string;\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { QuestionSearchBarFieldsValues } from 'containers/QuestionSearchBar';\nimport { optionsType } from 'pages/QuestionSearchPage/utils';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nimport { TrainingSearchBlockFilters } from './materials';\nimport { QuestionStatus } from './questionBank';\n\nexport enum DifficultyEnum {\n easy = 'easy',\n medium = 'medium',\n hard = 'hard',\n}\n\nexport interface QueryParams {\n text?: string;\n topics: number[];\n difficulty?: DifficultyEnum[];\n answersType?: AnswersTypeEnum[];\n skillsOr: number[];\n skillsAnd: number[];\n excludeIds: number[];\n id: number | null;\n}\n\nexport interface GetSearchQuestions {\n id: number;\n text: string;\n difficulty: DifficultyEnum;\n content?: string;\n author: {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n online: boolean;\n lastSeen: string;\n };\n lessons: {\n id: number;\n }[];\n topics: {\n id: number;\n };\n skills: {\n id: number;\n title: string;\n }[];\n isActual?: boolean;\n isDeleted?: boolean;\n answersType: AnswersTypeEnum;\n status: QuestionStatus;\n timestamp: string;\n html?: string;\n multiply: boolean;\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport interface SearchBlockGet {\n id?: number;\n assignment: number;\n questionNumber: number;\n single?: boolean;\n filters: QueryParams;\n quantity: number;\n}\n\nexport interface SearchBlockPost {\n id?: number;\n assignment: number;\n questionNumber: number;\n filters: QueryParams;\n}\n\nexport interface Topic {\n id: number;\n title: string;\n}\n\nexport interface Answer {\n id: number;\n content: string;\n html?: string;\n order: number;\n isCorrect: boolean;\n acceptFile: boolean;\n acceptText: boolean;\n percentOfScore: number;\n}\n\nexport interface QuestionDetail {\n id: number;\n text: string;\n content: string;\n difficulty: DifficultyEnum;\n answersType: AnswersTypeEnum;\n timestamp: string;\n author: {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n };\n topics: Topic[];\n skills: {\n id: number;\n title: string;\n }[];\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n html?: string;\n status: QuestionStatus;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport const getQuestionSearch = (\n values: QuestionSearchBarFieldsValues & { status?: QuestionStatus; all_user_questions?: boolean },\n): Promise => {\n const params = createUrlQuery({\n topics: values.location?.map((block) => block.topicId),\n skills_and: values.skillsSelect === 'Все' ? values.skills?.map((skillLocation) => skillLocation.skillId) : [],\n skills_or: values.skillsSelect === 'Все' ? [] : values.skills?.map((skillLocation) => skillLocation.skillId),\n difficulty:\n !values.complexity?.length || values.complexity?.length === 3\n ? []\n : values.complexity.map((complexity) =>\n complexity.replace('Средняя', 'medium').replace('Низкая', 'easy').replace('Высокая', 'hard'),\n ),\n answers_type:\n values.types?.length === optionsType.length\n ? []\n : values.types?.map((type) =>\n type\n .replace('Вопрос - тестовый, с текстовым ответом', 'text')\n .replace('Вопрос - тестовый', 'test')\n .replace('Вопрос - открытый вопрос - эссе', 'essay')\n .replace('Вопрос - верно или нет', 'true_false')\n .replace('Вопрос - вставить слова', 'insert_words'),\n ),\n text: values.name,\n status: QuestionStatus.Published,\n all_user_questions: values.all_user_questions ? 'true' : undefined,\n });\n\n return api\n .get>(`/codifier/question/${params}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getQuestionSearchByQueryFilters = ({\n topics,\n skillsAnd,\n skillsOr,\n text,\n difficulty,\n answersType,\n id,\n excludeIds,\n status,\n all_user_questions,\n}: Partial): Promise => {\n if (id) {\n return api\n .get(`/codifier/question/${id}/`)\n .then((res) => [res.data])\n .catch((err: AxiosError<{ error: string }>) => {\n throw err?.response?.data.error;\n });\n }\n\n const filtersQuery = createUrlQuery({\n topics,\n text: text,\n difficulty: difficulty,\n answers_type: answersType,\n skills_and: skillsAnd,\n skills_or: skillsOr,\n exclude_ids: excludeIds,\n status: status === undefined ? undefined : status,\n all_user_questions: all_user_questions === undefined ? undefined : String(all_user_questions),\n });\n\n return api\n .get(`/codifier/question/${filtersQuery}`)\n .then((res) => res?.data?.filter((question) => (excludeIds ? !excludeIds.includes(question.id) : true)))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const fetchAssignmentSearchBlocks = (assignmentId: number): Promise =>\n api\n .get(`/codifier/assignment-search-block/?assignment=${assignmentId}`)\n .then((res) => res?.data)\n .catch((error: AxiosError>) => {\n throw JSON.stringify(error.response?.data);\n });\n\nexport const postSearchQuestions = ({\n assignment,\n questionNumber,\n filters,\n}: SearchBlockPost): Promise => {\n return api\n .post, AxiosResponse>(`/codifier/assignment-search-block/create/`, {\n assignment: assignment,\n questionNumber: questionNumber,\n filters: filters,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const createAssignmentSearchBlocks = (blocks: SearchBlockPost[]): Promise => {\n return api\n .post, AxiosResponse>(\n `/codifier/assignment-search-block/bulk-create/`,\n blocks.map(({ assignment, questionNumber, filters }) => ({\n assignment: assignment,\n questionNumber: questionNumber,\n filters: filters,\n })),\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getQuestionDetail = (id: number): Promise => {\n return api\n .get>(`/codifier/question/${id}/overview/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PatchAsignmentSearchBlockParams {\n id: number;\n questionNumber?: number;\n filters?: QueryParams;\n}\n\nexport const patchAssignmentSearchBlock = (params: PatchAsignmentSearchBlockParams): Promise => {\n const { id, questionNumber, filters } = params;\n\n return api\n .patch, AxiosResponse>(\n `/codifier/assignment-search-block/partial-update/${id}/`,\n {\n questionNumber,\n filters,\n },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteAssignmentSearchBlock = (searchBlockId: number): Promise => {\n return api\n .delete, AxiosResponse>(`/codifier/assignment-search-block/delete/${searchBlockId}/`)\n .then(() => searchBlockId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteAssignmentSearchBlocksArray = (searchBlocksForDelete: { id: number }[]): Promise => {\n return api\n .delete(`/codifier/assignment-search-block/bulk-delete/`, {\n data: searchBlocksForDelete,\n })\n .then(() => searchBlocksForDelete.map(({ id }) => id))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\ndayjs.extend(utc);\n\n/**\n * @description переводим дату из DD.MM.YYYY в Dayjs\n * @param {string} date\n */\nconst formatTableDateToDayjs = (date: string): Dayjs => {\n const day = date.slice(0, 2);\n const month = date.slice(3, 5);\n const year = date.slice(6, 10);\n return dayjs(`${month}-${day}-${year}`);\n};\n\n/**\n * @description переводим дату из Dayjs в YYYY-MM-DD\n * @param {Dayjs} date\n */\nconst formatDayjsToParamsDate = (date: Dayjs): string => {\n return dayjs(date).format('YYYY-MM-DD');\n};\n\n/**\n * @description переводим дату из Dayjs в DD.MM.YYYY\n * @param {Dayjs} date\n */\nconst formatDayjsToTableDate = (date: Dayjs): string => {\n return date.format('DD.MM.YYYY');\n};\n\n/**\n * @description переводим дату из js в DD.MM.YYYY\n * @param {Date | string} date\n */\nconst formatJSToTableDate = (date: Date | string): string => {\n const newDate = typeof date == 'string' ? new Date(date) : date;\n const day = `0${newDate.getDate()}`.slice(-2);\n const month = `0${newDate.getMonth() + 1}`.slice(-2);\n const year = newDate.getFullYear();\n return `${day}.${month}.${year}`;\n};\n\n/**\n * @description переводим дату из DD.MM.YYYY в YYYY-MM-DD\n * @param {string} date\n */\nconst getTableDateToParamsDate = (date: string): string => {\n const dayjsDate = formatTableDateToDayjs(date);\n return formatDayjsToParamsDate(dayjsDate);\n};\n\n/**\n * @description переводим дату из js в HH:mm\n * @param {string} date\n */\nconst getTableDateToTime = (date: string): string => {\n const newDate = dayjs(date).utcOffset(3);\n const hour = `0${newDate.hour()}`.slice(-2);\n const minute = `0${newDate.minute()}`.slice(-2);\n return `${hour}:${minute}`;\n};\n\nconst getDateWithTime = (date: Date | string): string => {\n const day = dayjs(date).format('DD.MM.YYYY');\n const newDate = typeof date == 'string' ? new Date(date) : date;\n const hour = `0${newDate.getHours()}`.slice(-2);\n const minute = `0${newDate.getMinutes()}`.slice(-2);\n return `${day} ${hour}:${minute}`;\n};\nconst getDateWithOffsetMs = (offset: number): Date => {\n const date = new Date();\n date.setMilliseconds(date.getSeconds() + offset);\n return date;\n};\nexport {\n formatDayjsToParamsDate,\n formatDayjsToTableDate,\n formatJSToTableDate,\n formatTableDateToDayjs,\n getDateWithOffsetMs,\n getDateWithTime,\n getTableDateToParamsDate,\n getTableDateToTime,\n};\n","import moment from 'moment';\n\nexport interface DateComponents {\n month: number;\n year: number;\n dateWithoutTime?: string;\n time?: string;\n dateWithMonth?: string;\n hours: number;\n date: number;\n weekday: number;\n}\n// From lms-elements\nexport const getDateComponents = (date?: string | Date): DateComponents => {\n return {\n month: date ? moment(date)?.get('month') : moment().get('month'),\n year: date ? moment(date)?.get('year') : moment().get('year'),\n dateWithoutTime: date ? moment(date)?.format('YYYY-MM-DD') || moment().format('YYYY-MM-DD') : undefined,\n time: date ? moment(date)?.format('HH:mm') || moment(date).format('HH:mm') : undefined,\n dateWithMonth: date\n ? moment().isBefore(date) && moment().format('D') !== moment(date).format('D')\n ? getCapitalizeMonth(date)\n : 'сегодня'\n : undefined,\n date: moment(date).get('date'),\n hours: moment(date).hours(),\n weekday: moment(date).weekday(),\n };\n};\nexport const getCapitalizeMonth = (date?: Date | string): string => {\n const result = moment(date).format('D MMMM');\n\n return result\n .split(' ')\n .map((word, index) => {\n if (index === 1) {\n return word[0].toUpperCase() + word.slice(1);\n }\n\n return word;\n })\n .join(' ');\n};\n","import moment from 'moment';\n\nexport const getSelectedDate = (day?: string | Date, time?: string): moment.Moment => {\n const [hours, minutes] = time?.split(':') || [0, 0];\n\n return moment(day, '', 'RU')\n .subtract(1, 'days')\n .endOf('days')\n .add(1, 'minutes')\n .add(hours, 'hours')\n .add(minutes, 'minutes');\n};\n","import moment from 'moment';\n/**\n * @description Утилита для обнуления секунд и миллисекунд (таймзона нужна, чтобы отправлялось московское время, а не серверное)\n * */\nexport const payloadTimeFormatter = (time: string): string => {\n const moscow_offset = 3 * 60;\n\n return moment(time).second(0).millisecond(0).utcOffset(moscow_offset).format();\n};\n","import { getNoun } from '@frontend-modules/frontend-utils';\nimport moment, { Moment } from 'moment';\n\nexport type TInterval = {\n start: string;\n end: string;\n};\nconst TIME_FORMAT = 'HH:mm';\nconst DATE_FORMAT = 'DD.MM';\n\nexport const getTimeByMoscow = (date: string, format = TIME_FORMAT): string => {\n const moscow_offset = 3 * 60;\n\n return moment(date).utcOffset(moscow_offset).format(format);\n};\nexport const getDateByMoscow = (date: string, format = DATE_FORMAT): string => {\n const moscow_offset = 3 * 60;\n\n return moment(date).utcOffset(moscow_offset).format(format);\n};\nexport const getTimeFromDate = (date: string): string => {\n return moment(date).format(TIME_FORMAT);\n};\nexport const getMomentFromString = (time: string): Moment => {\n return moment(time, TIME_FORMAT);\n};\nexport const getMaxTime = (timesList: Moment[]): string => {\n return moment.max(timesList).format(TIME_FORMAT).toString();\n};\nexport const getMinTime = (timesList: Moment[]): string => {\n return moment.min(timesList).format(TIME_FORMAT).toString();\n};\nexport const getDifferentInMinutes = (start: string, end: string): number => {\n const startTime = getMomentFromString(start);\n const endTime = getMomentFromString(end);\n\n return endTime.diff(startTime, 'minutes');\n};\n\n//возвращает сколько времени осталось/прошло относительно заданной даты\nexport const getTimeUntilDateInMinutes = (date: string, direction: 'before' | 'after'): string => {\n let startTime, endTime;\n\n if (direction === 'before') {\n startTime = moment(new Date());\n endTime = moment(date);\n } else {\n startTime = moment(date);\n endTime = moment(new Date());\n }\n const resInMin = endTime.diff(startTime, 'minutes');\n\n const days = Math.floor(resInMin / 60 / 24);\n const hours = Math.floor((resInMin - days * 24 * 60) / 60);\n const minutes = Math.floor(resInMin - days * 24 * 60 - hours * 60);\n const daysText = days ? `${days}д ` : '';\n const hoursText = hours ? `${hours}ч ` : '';\n const minutesText = minutes ? `${minutes}м ` : '';\n\n const resultString = `${daysText}${hoursText}${minutesText}`;\n return resultString.trim();\n};\n\nexport const getTimeInMinutesFormat = (time: string): number => {\n const moment = getMomentFromString(time);\n\n return moment.minutes() + moment.hours() * 60;\n};\nexport const getMinutesInTimeFormat = (minutes: number): string => {\n const timeMinutes = minutes % 60;\n\n return `${(minutes - timeMinutes) / 60}:${timeMinutes ? timeMinutes : '00'}`;\n};\nexport const addMinutesToTime = (offset: number, currentTime: string): string => {\n const time = getMomentFromString(currentTime).add(offset, 'minutes');\n\n return time.format(TIME_FORMAT);\n};\nexport const isTimeInInterval = (interval: TInterval, time: string): boolean => {\n const intervalInMinutes = {\n start: getMomentFromString(interval.start),\n end: getMomentFromString(interval.end),\n };\n const currentTime = getMomentFromString(time);\n\n return currentTime.isSameOrAfter(intervalInMinutes.start) && currentTime.isBefore(intervalInMinutes.end);\n};\nexport const isIntervalContainsInterval = (intervalExt: TInterval, intervalIn: TInterval): boolean => {\n const intervalInMinutes = {\n start: getMomentFromString(intervalExt.start),\n end: getMomentFromString(intervalExt.end),\n };\n const lessonIntervalInMinutes = {\n start: getMomentFromString(intervalIn.start),\n end: getMomentFromString(intervalIn.end),\n };\n\n return (\n lessonIntervalInMinutes.start.isSameOrAfter(intervalInMinutes.start) &&\n lessonIntervalInMinutes.end.isSameOrBefore(intervalInMinutes.end)\n );\n};\n\nexport const getTimeline = (startTime: string, intervalInMinutes: number, count: number): TInterval[] => {\n const timeline: TInterval[] = [];\n for (let i = 1; i <= count; i++) {\n if (!timeline.length) {\n timeline.push({\n start: startTime,\n end: addMinutesToTime(50, startTime),\n });\n } else {\n const lastIntervalIndex = timeline.length - 1;\n\n timeline.push({\n start: timeline[lastIntervalIndex].end,\n end: addMinutesToTime(50, timeline[lastIntervalIndex].end),\n });\n }\n }\n return timeline;\n};\n","import { postApiRequest } from 'api';\n\nexport const postEvaluate = (id: string): Promise<[]> => {\n return postApiRequest(`/assignment-progress/evaluate/${id}/`);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n AnswerAttemptPostResponse,\n getAnswerAttemptInfo,\n getAnswerAttemptsByProgress,\n patchAnswerAttempt,\n postAnswerAttempt,\n} from 'api/services/answerAttempt';\nimport { postEvaluate } from 'api/services/assignment/postEvaluate';\nimport { createFile } from 'api/services/file';\nimport { AnswerAttemptsState } from 'store/reducers/answerAttempts';\nimport {\n AnswerAttemptData,\n EssayAnswerData,\n InsertWordsAnswerData,\n TestAnswerData,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\n\nimport { fetchStudentHomeworksAction, getStudentTaskById } from './studentTasks';\n\nexport interface PatchDraftActionParams {\n tasks: AnswerAttemptData;\n id: string;\n}\n\ntype PatchAnswerAttemptActionParams = {\n answersData: AnswerAttemptData;\n};\nexport const patchAnswerAttemptAction = createAsyncThunk(\n 'homework/patchAnswerAttempt',\n ({ answersData }: PatchAnswerAttemptActionParams, { dispatch }) => {\n const filteredAnswers = deleteEmptyAnswers(answersData);\n\n const essayQuestions = filteredAnswers.answers\n ?.filter(({ isEssay, answerId }) => isEssay && answerId)\n .map(({ answerId, data, files = [] }) => ({\n answerId: answerId as number,\n files: [...(data as EssayAnswerData).file.map(Number), ...files],\n }));\n\n return Promise.all(\n essayQuestions.map(({ answerId, files }) => {\n return patchAnswerAttempt({ answerId, newAnswerAttemptParams: { files } });\n }),\n ).then(() => {\n void dispatch(getStudentTaskById(filteredAnswers.assignmentProgress));\n void dispatch(getAnswerAttemptByProgressAction(filteredAnswers.assignmentProgress));\n });\n },\n);\n\nexport const getAnswerAttemptAction = createAsyncThunk('homework/getAnswerAttempt', async (assignment: number) => {\n return await getAnswerAttemptInfo(assignment);\n});\n\nexport const getAnswerAttemptByProgressAction = createAsyncThunk(\n 'homework/getAnswerAttemptByProgress',\n async (assignmentProgress: number) => {\n return await getAnswerAttemptsByProgress(assignmentProgress);\n },\n);\n\ninterface EvaluateParams {\n id: number;\n lessonId: number;\n}\n\ntype Config = {\n state: { answerAttempts: AnswerAttemptsState };\n};\n\nexport const updateAttemptDraft = createAsyncThunk(\n 'answerAttempt/updateDraft',\n (_, { getState }) => {\n const { draftData } = getState().answerAttempts;\n const filteredAnswers = draftData ? deleteEmptyAnswers(draftData) : draftData;\n\n if (filteredAnswers?.assignmentProgress && filteredAnswers?.answers) {\n return postAnswerAttempt({\n assignmentProgress: filteredAnswers.assignmentProgress,\n answers: filteredAnswers.answers,\n });\n }\n },\n);\n\nexport const postEvaluateAction = createAsyncThunk(\n 'answersAttempts/postEvaluate',\n async ({ id, lessonId }: EvaluateParams, { dispatch }) => {\n return dispatch(updateAttemptDraft())\n .then(async () => {\n await postEvaluate(String(id));\n })\n .then(() => {\n void dispatch(fetchStudentHomeworksAction({ lessonId: lessonId }));\n void dispatch(getStudentTaskById(id));\n });\n },\n);\n\nexport const createQuestionFileAction = createAsyncThunk(\n 'answersAttempts/createQuestionFile',\n ({ file, questionId, index, onUploadProgress }: CreateFileParams) => {\n return createFile({ file, onUploadProgress })\n .then((file) => {\n setTimeout(() => {\n onUploadProgress?.(101);\n }, 500);\n\n return {\n questionId,\n file,\n index,\n };\n })\n .catch(() => {\n onUploadProgress?.(-1);\n\n throw new Error(`Не удалось загрузить файл ${file.name}!`);\n });\n },\n);\n\ntype CreateFileParams = {\n questionId: number;\n file: File;\n index: number;\n onUploadProgress?: (percent: number) => void;\n};\n\nconst deleteEmptyAnswers = (\n answersData: AnswerAttemptData | (AnswerAttemptData & { id?: number | undefined }),\n): AnswerAttemptData | (AnswerAttemptData & { id?: number | undefined }) => {\n const filteredAnswers = answersData.answers\n .map((item) => {\n const isAnswerFilesListEmpty = item?.files ? !item?.files?.length : false;\n const isAnswerFileListEmpty = item?.file ? !item?.file?.length : false;\n\n const isEssayAnswerTextDataEmpty = (item.data as EssayAnswerData)?.text\n ? !(item.data as EssayAnswerData)?.text?.trim()\n : false;\n const isEssayAnswerFileDataEmpty = (item.data as EssayAnswerData)?.file\n ? !(item.data as EssayAnswerData)?.file?.length\n : false;\n\n const isTextAnswerDataEmpty = (item.data as TextAnswerData)?.selectedOption\n ? !(item.data as TextAnswerData)?.selectedOption?.trim()\n : false;\n\n const insertWordsAnswerDataEmpty = (item.data as InsertWordsAnswerData)?.selectedOptions\n ?.map((word, index) => {\n if (word && word?.selectedWord && !word?.selectedWord?.trim()) {\n return index;\n }\n })\n .filter((item) => item !== undefined);\n\n if (insertWordsAnswerDataEmpty?.length) {\n //если вопрос с типом \"insertWords\" и есть слова, состоящие только из пробелов, то удаляем их\n\n return {\n ...item,\n data: {\n // @ts-ignore\n selectedOptions: item.data.selectedOptions.filter((item, index) => {\n if (!insertWordsAnswerDataEmpty.includes(index)) {\n return item;\n }\n }),\n },\n };\n } else if (isEssayAnswerTextDataEmpty && (!isEssayAnswerFileDataEmpty || !isAnswerFilesListEmpty)) {\n //если вопрос с типом \"Essay\" и загружен файл, но поле текст - пустое, то удаляем его\n\n return {\n ...item,\n data: {\n file: (item.data as EssayAnswerData)?.file,\n },\n };\n } else if (\n (!isEssayAnswerTextDataEmpty || !isEssayAnswerFileDataEmpty) &&\n (!isAnswerFileListEmpty || !isAnswerFilesListEmpty) &&\n !isTextAnswerDataEmpty\n ) {\n //если вопрос не содержит проблем в типах \"Essay\", \"InsertWords\" и \"Text\", то ничего с ним не делаем\n return item;\n }\n return undefined;\n })\n .filter((item) => item !== undefined);\n\n return {\n ...answersData,\n answers: filteredAnswers as {\n file?: File[];\n files?: number[];\n question: number;\n answerId?: number;\n data: EssayAnswerData | InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\n isEssay?: boolean;\n }[],\n };\n};\nexport const createAttemptAction = createAsyncThunk(\n 'homework/createAttempt',\n async (assignmentProgress: number) => {\n return await postAnswerAttempt({assignmentProgress, answers: []});\n },\n);\n","import { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';\n\nimport { getAccessToken } from 'utils/token';\n\nexport const ApiInterceptor = (api: AxiosInstance): void => {\n api.interceptors.request.use(\n (config: AxiosRequestConfig) => {\n const token = getAccessToken();\n\n if (token) {\n (config.headers as Record)['Authorization'] = `Bearer ${token}`;\n }\n config.withCredentials = true;\n\n return config;\n },\n (error) => {\n Promise.reject(error).catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n },\n );\n};\n","import { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';\n\nexport const getApiRequest = (\n api: AxiosInstance,\n link: string,\n body?: BodyType,\n): Promise =>\n api\n .get(link, body)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const patchApiRequest = (\n api: AxiosInstance,\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise =>\n api\n .patch(link, body, config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const postApiRequest = (\n api: AxiosInstance,\n link: string,\n body?: BodyType,\n config?: AxiosRequestConfig,\n): Promise =>\n api\n .post(link, body, config)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const deleteApiRequest = (\n api: AxiosInstance,\n link: string,\n params?: BodyType,\n): Promise =>\n api\n .delete(link, params)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n","import { commonHost, host } from 'constants/apiMethods';\n/**\n * @description Список неотслеживаемых апи для Sentry\n * Можно уточнить, какие конкретно статусы не обрабатывать в sentry, передав список в statuses\n * Можно передать alert=true, чтобы на клиенте отображалось уведомление об ошибке\n *\n * ПРИМЕР: {url: 'some_api', statuses: [400], alert: true,} - 400 ошибка от some_api не будет передана в sentry,\n * но ошибка отобразится на клиенте\n */\n\nexport const UntraceableApiList = [\n {\n url: `${host}/alert/`,\n },\n {\n url: `${commonHost}/onboard/v1/`,\n },\n {\n url: `/actions/progress/create/`,\n },\n];\n","import { ErrorsCaptureWrapperApi } from '@frontend-modules/error-handler';\nimport { UntraceableApiList } from '@fsd-shared/constants';\nimport { sleep } from '@lms-elements/utils';\nimport { ssoRefreshToken } from 'api/services/token';\nimport { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';\n\nimport { setAccessToken } from 'utils/token';\n\n/**\n * // Функция вызывается для того что бы сохранить упавшие запросы\n * // Что бы в случае успешного перелогина в компоненте вызвать callback с новыми токенами\n * // если токен есть то перезапрашиваем\n * // если нет возвращаем ошибку\n * @param api\n * @param resolve\n * @param reject\n * @param callback\n * @param originalRequest\n */\nconst resolveRequest = (\n api: AxiosInstance,\n resolve: Function,\n reject: Function,\n callback: Function,\n originalRequest: AxiosRequestConfig,\n) => {\n callback?.((accessToken: string) => {\n if (accessToken) {\n originalRequest.headers.Authorization = `Bearer ${accessToken}`;\n resolve(api(originalRequest));\n } else {\n reject();\n }\n });\n};\n\nlet isTokenUpdating = false; // флаг отвечающий за состояние обновления токена\nlet isAwaitReAuth = false; // флаг отвечающий за состояния перелогина\n\nexport const ApiResponder = (\n api: AxiosInstance,\n callback: Function,\n logout?: Function,\n showErrorReportBtn?: boolean,\n): void => {\n api.interceptors.response.use(\n (response) => {\n return response;\n },\n async (error: AxiosError) => {\n const originalRequest = error.config as AxiosRequestConfig & { _retry: boolean };\n const responseStatus = error?.response?.status;\n if (responseStatus === 403) {\n logout?.();\n return Promise.reject(error);\n }\n if (responseStatus === 401) {\n // если токен обновляется, то зацикливаем апихи, которые вызвались после начала обновления токена\n // что бы запросы не сыпалось на бэк, пока мы не обновили access\n if (isTokenUpdating) {\n await sleep(1000);\n\n // если isAwaitReAuth == true, то отправляем зацикленные запросы в callback,\n // что бы сохранить их и перезапросить после перелогина\n // сделано так, потому что в случае перелогина мы сами управляем вызовом \"упавших\" запросов\n // если isAwaitReAuth == false, зацикливаем запрос ожидая обновления токена\n if (isAwaitReAuth) {\n return new Promise((resolve, reject) =>\n resolveRequest(api, resolve, reject, callback, originalRequest),\n );\n } else {\n return api(originalRequest);\n }\n }\n isTokenUpdating = true;\n // пытаемся обновить токен\n try {\n const { access } = await ssoRefreshToken();\n\n access && setAccessToken(access);\n\n // при удачном обновлении токена, отключаем флаг обновления\n // и вызываем упавший запрос, который инициировал обновление токена\n isTokenUpdating = false;\n return api(originalRequest);\n } catch (e) {\n // если обновление токена упало,\n // то ставим isAwaitReAuth что бы апихи,\n // которые вызвались после начала обновления токена,\n // попали в callback и сохранились\n isAwaitReAuth = true;\n\n // при завершении процесса перелогина(успешного или нет)\n // сбрасываем флаги\n return new Promise((resolve, reject) =>\n resolveRequest(api, resolve, reject, callback, originalRequest),\n ).finally(() => {\n isTokenUpdating = false;\n isAwaitReAuth = false;\n });\n }\n } else {\n if (error.response) {\n ErrorsCaptureWrapperApi({\n error,\n UntraceableApiList: UntraceableApiList,\n showAlertReportBtn: showErrorReportBtn,\n });\n } else {\n ErrorsCaptureWrapperApi({\n error: {\n message: 'Ошибка соединения с сервером',\n response: { ...error.config },\n },\n showAlertReportBtn: false,\n });\n }\n return Promise.reject(error).catch((error: AxiosError) => {\n throw error;\n });\n }\n },\n );\n};\n","import axios, { AxiosInstance } from 'axios';\n\nexport const createInstance = (host?: string): AxiosInstance => {\n return axios.create({\n baseURL: host,\n });\n};\n","//Меняет яркость и насыщенность цвета\nexport const transformHexColor = (hex: string, lightAmount: number, saturationFactor = 1): string => {\n // Преобразуем HEX в число.\n const color = parseInt(hex.startsWith('#') ? hex.slice(1) : hex, 16);\n // Регулируем каждый компонент RGB в пределах 0-255.\n const r = Math.min(255, Math.max(0, (color >> 16) + lightAmount));\n const g = Math.min(255, Math.max(0, ((color & 0x00ff00) >> 8) + lightAmount));\n const b = Math.min(255, Math.max(0, (color & 0x0000ff) + lightAmount));\n\n const reducedG = g * saturationFactor;\n\n // Возвращаем исправленный цвет в HEX-формате.\n return `#${((r << 16) | (reducedG << 8) | b).toString(16).padStart(6, '0')}`;\n};\n","import { Dayjs } from 'dayjs';\n\nexport const getDaysInMonth = (date?: Dayjs): number => (date ? date.daysInMonth() : 0);\n","import dayjs, { Dayjs } from 'dayjs';\n\nexport const getFormattedMonth = (date: Dayjs): string => {\n const month = date.format('MMMM, YYYY');\n return month[0].toUpperCase() + month.slice(1);\n};\nexport const getInMonthText = (date?: string): string => {\n if (date) {\n const monthName = dayjs(date).format('MMMM');\n let result;\n\n switch (monthName) {\n case 'январь':\n result = 'в январе';\n break;\n case 'февраль':\n result = 'в феврале';\n break;\n case 'март':\n result = 'в марте';\n break;\n case 'апрель':\n result = 'в апреле';\n\n break;\n case 'май':\n result = 'в мае';\n\n break;\n case 'июнь':\n result = 'в июне';\n break;\n case 'июль':\n result = 'в июле';\n break;\n case 'август':\n result = 'в августе';\n break;\n case 'сентябрь':\n result = 'в сентябре';\n break;\n case 'октябрь':\n result = 'в октябре';\n break;\n case 'ноябрь':\n result = 'в ноябре';\n break;\n case 'декабрь':\n result = 'в декабре';\n break;\n default:\n result = 'в месяце';\n break;\n }\n\n return result;\n }\n return 'в месяце';\n};\n","/**\n * @description устанавливает задержку выполнения переданной функции на указанное кол-во миллисекунд\n * @param fn - (args: FunctionArgsType) => void\n * @param timeoutMs - number (1000 by default)\n * */\nexport function debounceCaller(\n fn: (args: FunctionArgsType) => void,\n timeoutMs = 1000,\n): (args: FunctionArgsType) => void {\n let timeout: ReturnType | null;\n\n return (args) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => fn(args), timeoutMs);\n };\n}\n","import { isListExist } from '@frontend-modules/frontend-utils';\nimport { setMessage } from 'src-new/utils';\n\nexport const showErrorToast = (errors: string | Array): void => {\n if (errors) {\n const allErrors = [];\n for (const error of errors) {\n if (Array.isArray(error)) {\n allErrors.push(...error);\n } else {\n allErrors.push(error);\n }\n }\n if (isListExist(allErrors)) {\n const config = {\n status: 'error' as const,\n text: allErrors.join(',\\n'),\n key: allErrors.join(',\\n'),\n duration: 5,\n };\n setMessage(config);\n }\n }\n};\n","export const getQueryStringParams = (query: string): { [key: string]: string } => {\n return query\n ? (/^[?#]/.test(query) ? query.slice(1) : query).split('&').reduce((params, param) => {\n const [key, value] = param.split('=');\n // @ts-ignore\n params[key] = value ? decodeURIComponent(value.replace(/\\+/g, ' ')) : '';\n return params;\n }, {})\n : {};\n};\n\nexport const getUrlParamsString = (params: { [key: string]: any }): string => {\n return Object.entries(params).reduce((result, [key, val]) => {\n if (!result && val !== undefined && val !== null) {\n result = `?${key}=${val}`;\n } else if (val !== undefined && val !== null) {\n result += `&${key}=${val}`;\n }\n return result;\n }, '');\n};\n","/**\n *\n * @param value\n * @param mask\n * @param withDot\n */\nconst getMaskedString = (value?: string | null, mask?: string, withDot?: boolean) => {\n if (!value) return '';\n\n if (mask?.length === 1) {\n return `${value[0]}${withDot ? '.' : ''}`;\n }\n return value;\n};\n\n/**\n * @description возвращает инициалы и полное имя, если имени нет, то email\n * data - { name: 'Имя', surname: 'Фамилия', patronymic: 'Отчество' }\n * mask - 'N:NN:S:SS:P:_:PP' - маска значение через \":\", в любом порядке\n * где N - имя, S - фамилия, P - отчество, _ - пробел\n * если N - то первая буква имени, если S - то первая буква фамилии, если P - то первая буква отчества\n * если NN - то полное имя и так далее\n * withDots - нужно ли добавлять точки между инициалами\n * @param data\n * @param data.name\n * @param data.surname\n * @param data.patronymic\n * @param mask\n * @param withDots\n */\nconst getUserName = (\n data: { name?: string | null; surname?: string | null; patronymic?: string | null },\n mask?: string,\n withDots?: boolean,\n): string => {\n const { name, surname, patronymic } = data;\n const maskArray = mask?.split(':');\n let fullName = '';\n maskArray?.forEach((item) => {\n if (item === 'N' || item === 'NN') {\n fullName += getMaskedString(name, item, withDots);\n } else if (item === 'S' || item === 'SS') {\n fullName += getMaskedString(surname, item, withDots);\n } else if (item === 'P' || item === 'PP') {\n fullName += getMaskedString(patronymic, item, withDots);\n } else if (item === '_') {\n fullName += ' ';\n }\n });\n\n return fullName.trim();\n};\n\nexport { getUserName };\n","import React from 'react';\nimport { useDragLayer, XYCoord } from 'react-dnd';\nimport {\n QuestionsBlockContainerMemo,\n SingleQuestionContainerMemo,\n TQuestionsBlockContainerDrag,\n TSingleQuestionContainerDrag,\n} from 'src-new/components/lesson-task';\n\nimport './style.scss';\n/**\n * @description Компонент для кастомной отрисовки перетаскиваемого элемента\n * (Без него будет перетаскиваться скриншот элемента, который обрезается по родительскому контейнеру)\n * @return {JSX.Element | null}\n * */\nexport const CommonDragLayer = (): JSX.Element | null => {\n const { item, itemType, currentOffset, initialOffset, isDragging } = useDragLayer((monitor) => ({\n item: monitor.getItem() as TQuestionsBlockContainerDrag | TSingleQuestionContainerDrag,\n itemType: monitor.getItemType(),\n currentOffset: monitor.getSourceClientOffset() as XYCoord,\n initialOffset: monitor.getInitialSourceClientOffset() as XYCoord,\n isDragging: monitor.isDragging(),\n }));\n\n if (!isDragging) {\n return null;\n }\n\n const renderItem = () => {\n if (itemType === 'block') {\n const { mainProps } = item as TQuestionsBlockContainerDrag;\n\n return (\n \n \n \n );\n } else if (itemType === 'single' || itemType === 'block-single') {\n const { mainProps } = item as TSingleQuestionContainerDrag;\n\n return (\n \n \n \n );\n } else return null;\n };\n\n return
{renderItem()}
;\n};\n","import React, { useEffect } from 'react';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { QuestionsBlockContainer, TQuestionsBlockContainerDrag } from 'src-new/components/lesson-task';\n\nimport './style.scss';\n\n/**\n * @description QuestionsBlockContainerDrag - обертка над QuestionsBlockContainer для реализации перетаскивания\n * @props TQuestionsBlockContainerDrag\n * dragData - используется для dnd\n * mainProps - используется для QuestionsBlockContainer\n * */\nexport const QuestionsBlockContainerDrag: React.FC = (props) => {\n const { dragData, mainProps } = props;\n\n const [{ isDragging }, dragBlock, preview] = useDrag(\n () => ({\n item: () => {\n return {\n mainProps,\n dragData,\n };\n },\n type: 'block',\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n }),\n [props],\n );\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, []);\n\n return (\n
\n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { SingleQuestionContainer, TSingleQuestionContainerDrag } from 'src-new/components/lesson-task';\n\nimport './style.scss';\n\n/**\n * @description SingleQuestionContainerDrag - обертка над SingleQuestionContainer для реализации перетаскивания\n * @props TSingleQuestionContainer\n * dragData - используется для dnd\n * mainProps - используется для QuestionsBlockContainer\n * */\nexport const SingleQuestionContainerDrag: React.FC = (props) => {\n const { canDrag, dragData, mainProps, isIndependent = true } = props;\n\n const [{ isDragging }, dragSingle, preview] = useDrag(\n () => ({\n item: () => {\n return {\n mainProps,\n dragData,\n };\n },\n type: isIndependent ? 'single' : 'block-single',\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n }),\n [props],\n );\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { useDrop } from 'react-dnd';\nimport { getUid, isEmptyList } from '@frontend-modules/frontend-utils';\nimport { emptySubject } from 'assets';\nimport {\n CommonDragLayer,\n QuestionsBlockContainerDrag,\n SingleQuestionContainerDrag,\n TDropArea,\n TDroppedData,\n TQuestionsBlockContainerDrag,\n} from 'src-new/components/lesson-task';\n\nimport './style.scss';\n/**\n * @description DropArea - область для дропа элементов\n * @props TDropArea\n * */\nexport const DropArea: React.FC = (props) => {\n const {\n questions,\n areaName,\n selectedBlock,\n handleDropItem,\n handleBlockSettingsClick,\n canDragQuestions = false,\n } = props;\n\n const [, drop] = useDrop(\n () => ({\n accept: ['block', 'single', 'block-single'],\n drop: (item, monitor) => {\n const type = monitor.getItemType();\n\n if (type === 'single' || type === 'block-single') {\n const dragObject = item as TQuestionsBlockContainerDrag;\n const data: TDroppedData = {\n areaName: areaName,\n type: type,\n data: dragObject.dragData,\n };\n handleDropItem(data);\n }\n if (type === 'block') {\n const dragObject = item as TQuestionsBlockContainerDrag;\n const data: TDroppedData = {\n areaName: areaName,\n type: 'block',\n data: dragObject.dragData,\n };\n handleDropItem(data);\n }\n return undefined;\n },\n }),\n [handleDropItem],\n );\n\n return (\n
\n \n {questions?.singleQuestionsList\n ?.filter(({ questionContent }) => !!questionContent)\n .map((value) => {\n const { filters, questionContent } = value;\n const canDrag = canDragQuestions || !isEmptyList(filters?.topics);\n\n return (\n \n );\n })}\n {questions?.searchBlocksList?.map((value, index) => {\n const isActive = selectedBlock?.number === index + 1 && selectedBlock?.side === areaName;\n return (\n \n );\n })}\n {areaName === 'right' &&\n !questions?.singleQuestionsList?.length &&\n !questions?.searchBlocksList?.length && (\n \n )}\n
\n );\n};\n","import React from 'react';\nimport { getNoun } from '@frontend-modules/frontend-utils';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { SingleQuestionContainerDrag, TQuestionsBlockContainer } from 'src-new/components/lesson-task';\nimport { E_COLORS } from 'src-new/constants';\n\nimport './style.scss';\n/**\n * @description QuestionsBlockContainer - компонент блока с вопросами\n * @props TQuestionsBlockContainer\n * */\nexport const QuestionsBlockContainer: React.FC = (props) => {\n const {\n questionsList,\n searchNum,\n isActiveBlock = false,\n isDragging,\n canDragQuestions,\n areaName,\n handleSettingsClick,\n excludeIds,\n } = props;\n const questionsCount = questionsList?.length;\n const questionsListSliced = isDragging && questionsCount > 20 ? questionsList.slice(0, 20) : questionsList;\n const blocksTitle = questionsCount\n ? `Найдено ${questionsCount} ${getNoun(questionsCount, 'вопрос', 'вопроса', 'вопросов')}`\n : `Пока вопросов не найдено`;\n\n return (\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n {questionsCount ? (\n questionsListSliced.map((item, index) => {\n const isExcluded = excludeIds?.includes(item?.questionContent?.id ?? 0);\n return (\n \n );\n })\n ) : (\n \n )}\n
\n \n );\n};\nexport const QuestionsBlockContainerMemo = React.memo(QuestionsBlockContainer);\n","import React, { useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { TSingleQuestionContainer } from 'src-new/components/lesson-task';\nimport { useDownloadTxtFile } from 'src-new/hooks';\nimport { getSafetyHtml } from 'src-new/utils';\nimport { getQuestionDetailsAction, setOpenedQuestionIdAction } from 'store/actions/lessonTask';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\nimport { getInsertWordsPreviewHtml } from 'utils/questions';\n\nimport './style.scss';\n/**\n * @description SingleQuestionContainer - компонент одиночного вопроса\n * @props TSingleQuestionContainer\n * */\nexport const SingleQuestionContainer: React.FC = (props) => {\n const dispatch = useDispatch();\n const containerRef = useRef(null);\n useDownloadTxtFile(containerRef);\n const { question, isActiveBorder = false, isDragging, isExcluded } = props;\n\n const handleQuestionClick = () => {\n if (question?.id) {\n dispatch(setOpenedQuestionIdAction(question?.id));\n dispatch(getQuestionDetailsAction(question?.id));\n }\n };\n\n const questionContextPreview =\n question?.answersType === AnswersTypeEnum.insert_words && question?.html\n ? getInsertWordsPreviewHtml({ content: question.content, html: question?.html, text: question?.text })\n : question?.html || question?.text || '';\n\n return (\n \n \n \n );\n};\nexport const SingleQuestionContainerMemo = React.memo(SingleQuestionContainer);\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppButton, AppCheckbox, AppFontIcon, AppRadio, AppText } from '@frontend-modules/ui-kit';\nimport { E_ANSWERS_TYPE, E_COLORS, E_QUESTION_TYPE_INFO } from 'src-new/constants';\nimport { useDownloadTxtFile, useGetQuestionInfo } from 'src-new/hooks';\nimport { AppModal, AppSkeleton } from 'src-new/ui';\nimport { getSafetyHtml } from 'src-new/utils';\nimport { resetOpenedQuestionState } from 'store/reducers/lessonTask';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { TResponseQuestionDetailed } from 'types/lessonTask';\nimport { TrueFalseQuestionData } from 'types/question';\n\nimport { TModalButtonType, TQuestionInfoModal } from './QuestionInfoModal.types';\n\nimport './style.scss';\n\nexport const QuestionInfoModal: React.FC = (props) => {\n const {\n canAdd,\n canRemove,\n canExclude,\n canInclude,\n canPaginateLeft,\n canPaginateRight,\n handleModalButtonClick,\n handleQuestionsPaginate,\n } = props;\n const containerRef = useRef(null);\n useDownloadTxtFile(containerRef);\n\n const { questionDetails = {} as TResponseQuestionDetailed, openedQuestionId, getStatusQuestion } = useAppSelector(\n (store) => store.lessonTask,\n );\n\n const dispatch = useDispatch();\n const {\n correctAnswersList,\n answersInfo,\n correctAnswersInfo,\n questionTitle,\n topicsInfo,\n skillsInfo,\n authorFullName,\n essayAnswerFormat,\n difficultyText,\n answersType,\n data,\n id,\n } = useGetQuestionInfo(questionDetails);\n\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n setIsOpen(!!openedQuestionId);\n }, [openedQuestionId]);\n\n const isLoading = getStatusQuestion === FetchStatus.FETCHING;\n\n const handleCloseModal = () => {\n dispatch(resetOpenedQuestionState());\n };\n const handleModalButtonClickLocal = (id: number, type: TModalButtonType) => {\n handleModalButtonClick?.(id, type);\n setIsOpen(false);\n };\n\n return (\n \n {isLoading ? (\n
\n \n \n
\n ) : (\n
\n {canPaginateLeft && (\n \n \n
\n )}\n
\n {!!correctAnswersInfo.count && (\n \n )}\n {!!answersInfo.count && (\n \n )}\n {!!difficultyText && }\n {!!answersType && (\n \n )}\n
\n
\n
\n \n\n
\n {answersType === E_ANSWERS_TYPE.test &&\n correctAnswersList.map((answer, index) => (\n
\n undefined}\n defaultValue={answer.isCorrect}\n disabled\n label={''}\n key={`check-${answer.id}`}\n />\n \n
\n ))}\n {answersType === E_ANSWERS_TYPE.text &&\n correctAnswersList.map((answer) => (\n
\n \n \n {answer.percentOfScore}% от оценки\n
\n ))}\n {answersType === E_ANSWERS_TYPE.true_false && (\n <>\n
\n \n \n
\n
\n \n \n
\n \n )}\n\n {answersType === E_ANSWERS_TYPE.essay &&\n correctAnswersList.map((answer, index) => (\n
\n
\n \n undefined}\n defaultValue={answer.acceptFile}\n disabled\n label={'Файла'}\n key={`check-essay-${answer.id}`}\n />\n undefined}\n defaultValue={answer.acceptText}\n disabled\n label={'Текстового поля'}\n key={`text-field-${index + Math.random()}`}\n />\n
\n
\n ))}\n
\n
\n \n
\n
\n \n \n
\n {!!topicsInfo.count && (\n
\n \n \n
\n )}\n {answersType === E_ANSWERS_TYPE.essay && (\n
\n \n \n
\n )}\n {!!skillsInfo.count && (\n
\n \n \n
\n )}\n
\n
\n {canAdd && (\n \n )}\n {canRemove && (\n \n )}\n {canInclude && (\n \n )}\n {canExclude && (\n \n )}\n
\n
\n {canPaginateRight && (\n \n \n \n )}\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { getNoun } from '@frontend-modules/frontend-utils';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { TMultipleSelectorProps } from 'src-new/components/lesson-task';\nimport { E_COLORS } from 'src-new/constants';\nimport { AppSelect } from 'src-new/ui';\n\nimport './style.scss';\nexport const MultipleSelector: React.FC = (props) => {\n const { label, options, placeholder = '', valueType = 'list', defaultValue, handleMultipleSelect } = props;\n const [selectedOptions, setSelectedOptions] = useState<{ label: React.ReactNode; value: string }[]>([]);\n\n const TagRender = () => {\n const getText = () => {\n const selectedCount = selectedOptions.length;\n const listTypeText = selectedOptions?.map(({ value }) => value)?.join(', ');\n const countTypeText =\n selectedCount === options.length\n ? 'Все типы'\n : `${selectedCount} ${getNoun(selectedCount, 'тип', 'типа', 'типов')} ${getNoun(\n selectedCount,\n 'выбран',\n 'выбрано',\n 'выбрано',\n )}`;\n\n return valueType === 'list' ? listTypeText : countTypeText;\n };\n\n return ;\n };\n\n const getNormalizedOptions = (options: string[] | undefined) => {\n return options\n ? options.map((item) => {\n return {\n label: ,\n value: item,\n };\n })\n : [];\n };\n\n const normalizeOptions = getNormalizedOptions(options);\n const normalizeDefaultValue = getNormalizedOptions(defaultValue);\n\n const handleMultipleSelectLocal = (val: { label: React.ReactNode; value: string }[]) => {\n const list = val.length ? val : normalizeOptions;\n\n setSelectedOptions(list);\n handleMultipleSelect(list.map(({ value }) => value));\n };\n\n useEffect(() => {\n if (defaultValue && defaultValue.length) {\n setSelectedOptions(normalizeDefaultValue);\n } else {\n setSelectedOptions(normalizeOptions);\n }\n }, [options, defaultValue]);\n\n return (\n
\n \n \n
\n );\n};\n","import React from 'react';\nimport { TTreeData } from 'src-new/components/lesson-task';\n\nexport const getTreeSelectorTagBreadcrumbs = (params: { treeData: TTreeData[]; breadcrumbs: string }): JSX.Element => {\n const { breadcrumbs, treeData } = params;\n\n const keyList = breadcrumbs?.split('-');\n const depths = {} as { [key: number]: React.ReactNode };\n\n treeData.forEach((firstDepth) => {\n const key1 = keyList?.[0];\n if (key1 && firstDepth.value === key1) {\n depths[0] = firstDepth.label;\n\n if (firstDepth.children) {\n const key2 = `${keyList[0]}-${keyList[1]}`;\n const secondDepth = firstDepth.children.find(({ value }) => value === key2);\n\n if (secondDepth) {\n depths[1] = secondDepth?.label;\n\n if (secondDepth.children) {\n const key3 = `${keyList[0]}-${keyList[1]}-${keyList[2]}`;\n\n const thirdDepth = secondDepth.children.find(({ value }) => value === key3);\n\n if (thirdDepth) {\n depths[2] = thirdDepth?.label;\n }\n }\n }\n }\n }\n });\n\n return (\n
\n {depths[0]}\n {depths[0] ? ',' : ''} {depths[1]}\n {depths[1] ? ',' : ''}
{depths[2]}\n {depths[2] ? ':' : ''}\n
\n );\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Tag, TreeSelect } from 'antd';\nimport { SmallArrowIcon } from 'assets';\nimport { CustomTagProps } from 'rc-select/lib/BaseSelect';\nimport { TTreeSelectorProps } from 'src-new/components/lesson-task';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { getTreeSelectorTagBreadcrumbs } from './TreeSelector.utils';\n\nimport './style.scss';\nconst MIN_HEIGHT = 500;\nconst MIN_WIDTH = 700;\n\nexport const TreeSelector: React.FC = (props) => {\n const {\n label,\n treeData,\n placeholder = '',\n defaultValue,\n notFoundContent,\n additionalContent,\n expandOnTreeTitles,\n isResponsivePosition = false,\n handleTreeSelect,\n } = props;\n const [initialValues, setInitialValues] = useState([]);\n const [wrapContainerHeight, setWrapContainerHeight] = useState(MIN_HEIGHT);\n\n const wrapContainer = useRef(null);\n\n const TagRender = (props: CustomTagProps) => {\n const { label, value, closable, onClose } = props;\n\n const onPreventMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n return (\n \n
\n {getTreeSelectorTagBreadcrumbs({ treeData, breadcrumbs: value })}
{label}\n
\n
\n );\n };\n useEffect(() => {\n setInitialValues(defaultValue ?? []);\n }, [defaultValue]);\n\n const handleTreeSelectInitial = useCallback(\n (list: string[]) => {\n handleTreeSelect(list);\n const height =\n wrapContainer?.current?.clientHeight && list.length ? wrapContainer?.current?.clientHeight : MIN_HEIGHT;\n setWrapContainerHeight(height < MIN_HEIGHT ? MIN_HEIGHT : height);\n },\n [wrapContainer?.current?.clientHeight],\n );\n\n return (\n
\n \n {additionalContent}\n
\n trigger?.parentElement}\n placeholder={placeholder}\n multiple\n value={initialValues}\n maxTagTextLength={20}\n suffixIcon={}\n onChange={handleTreeSelectInitial}\n treeData={treeData}\n showSearch={false}\n treeExpandAction={expandOnTreeTitles ? 'click' : false}\n tagRender={TagRender}\n notFoundContent={notFoundContent}\n dropdownStyle={{ minHeight: MIN_HEIGHT, height: wrapContainerHeight, minWidth: MIN_WIDTH }}\n treeLine\n treeCheckable\n listHeight={wrapContainerHeight}\n popupClassName={`tree-selector__popup ${\n wrapContainerHeight <= MIN_HEIGHT && isResponsivePosition && !initialValues.length\n ? 'up'\n : 'down'\n }`}\n size={'large'}\n />\n
\n
\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppButton, AppFontIcon, AppText, AppTextareaInput } from '@frontend-modules/ui-kit';\nimport { getInitialFilters } from 'src-new/components/lesson-task';\nimport { E_COLORS, E_COMPLEXITY_OPTIONS, E_QUESTION_TYPE, E_SKILLS_FILTERS } from 'src-new/constants';\nimport { AppSelect, AppSkeleton } from 'src-new/ui';\nimport { fetchCodifierSkillsDataAction } from 'store/actions/codifier';\nimport { getSubjectDataByIdAction, getSubjectsDataAction, setSelectedBlockAction } from 'store/actions/lessonTask';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { QueryParams } from 'types/lessonTask';\n\nimport { MultipleSelector } from './multiple-selector';\nimport {\n TQuestionComplicity,\n TQuestionDifficultyField,\n TQuestionSearchBar,\n TQuestionSkill,\n TQuestionSkillField,\n TQuestionTypes,\n TQuestionTypesField,\n TSearchData,\n TTreeData,\n} from './QuestionSearchBar.types';\nimport { TreeSelector } from './tree-selector';\n\nimport './style.scss';\n\nconst questionsComplicityNormalize = Object.values(E_COMPLEXITY_OPTIONS) as TQuestionComplicity[];\nconst skillsUnionTypesNormalize = Object.values(E_SKILLS_FILTERS).map((item) => {\n return {\n label: ,\n value: item as TQuestionSkill,\n };\n});\nexport const QuestionSearchBar: React.FC = (props) => {\n const dispatch = useDispatch();\n\n const {\n subjectId,\n isShowEssayOption,\n isLoading = false,\n filtersData,\n handleSearchButtonClick,\n handleCreateNewQuestion,\n handleDeleteBlock,\n } = props;\n\n const { codifierSkillsData } = useAppSelector((store) => store.codifier);\n const { selectedBlock, subjectsTree, searchTreeStatus } = useAppSelector((store) => store.lessonTask);\n\n const questionTypeListNormalize = isShowEssayOption\n ? (Object.values(E_QUESTION_TYPE) as TQuestionTypes[])\n : (Object.values(E_QUESTION_TYPE) as TQuestionTypes[]).filter((item) => item !== E_QUESTION_TYPE.essay);\n\n const [selectedSubjectId, setSelectedSubjectId] = useState(0);\n const [topics, setTopics] = useState([]);\n const [skills, setSkills] = useState([]);\n const [skillsUnionType, setSkillsUnionType] = useState('Все');\n const [description, setDescription] = useState('');\n const [complicity, setComplicity] = useState(questionsComplicityNormalize);\n const [types, setTypes] = useState(questionTypeListNormalize);\n\n const topicsTreeNormalize: TTreeData[] = useMemo(() => {\n const data = subjectsTree.find((item) => +item.id === +selectedSubjectId);\n\n const parallels = data?.parallels ?? [];\n return parallels.map((parallel) => {\n const { id, grade, sections = [] } = parallel;\n return {\n label: ,\n value: `parallel${id}`,\n checkable: false,\n isLeaf: !sections.length,\n children: sections.map((section) => {\n const { id, title, blocks = [] } = section;\n\n return {\n label: ,\n value: `parallel${parallel.id}-section${id}`,\n checkable: false,\n isLeaf: !blocks.length,\n children: blocks?.map((block) => {\n const { id, title, topics = [] } = block;\n\n return {\n label: ,\n value: `parallel${parallel.id}-section${section.id}-block${id}`,\n checkable: false,\n isLeaf: !topics.length,\n children: topics?.map((topic) => {\n const { id, title } = topic;\n\n return {\n label: ,\n value: `parallel${parallel.id}-section${section.id}-block${block.id}-${id}`,\n checkable: true,\n };\n }),\n };\n }),\n };\n }),\n };\n });\n }, [subjectsTree, selectedSubjectId]);\n const skillsTreeNormalize: TTreeData[] = useMemo(() => {\n return codifierSkillsData?.map((subject) => {\n const { id, title, parallels = [] } = subject;\n\n return {\n label: ,\n value: `subject${id}`,\n checkable: false,\n isLeaf: !parallels.length,\n children: parallels.map((parallel) => {\n const { id, grade, metasubjects = [] } = parallel;\n\n return {\n label: ,\n value: `subject${subject.id}-parallel${parallel.id}`,\n checkable: false,\n isLeaf: !metasubjects.length,\n children: metasubjects.map((metasubject) => {\n const { id, title, skills = [] } = metasubject;\n\n return {\n label: ,\n value: `subject${subject.id}-parallel${parallel.id}-metasubject${metasubject.id}`,\n checkable: false,\n isLeaf: !skills.length,\n children: skills?.map((skill) => {\n const { id, title } = skill;\n\n return {\n label: ,\n value: `subject${subject.id}-parallel${parallel.id}-metasubject${metasubject.id}-${id}`,\n checkable: true,\n };\n }),\n };\n }),\n };\n }),\n };\n });\n }, [codifierSkillsData]);\n\n const isSearchButtonDisabled = !topics.length;\n const subjectsTreeNormalize = Object.values(subjectsTree).map((item) => {\n return {\n value: `${item.id}`,\n label: item.title,\n };\n });\n const selectedSubject = subjectsTreeNormalize.find(({ value }) => value === `${selectedSubjectId}`);\n\n const setInitialFilters = (filters: QueryParams | undefined) => {\n const initialFilters = filters\n ? getInitialFilters({\n filters: filters,\n tree: subjectsTree,\n codifierSkillsData,\n isShowEssayOption,\n })\n : undefined;\n\n if (initialFilters) {\n const {\n subjectId,\n topicsValues,\n skillsValues,\n skillsUnionTypeValue,\n textValue,\n complicityValues,\n answersTypeValue,\n } = initialFilters;\n\n setSelectedSubjectId(subjectId);\n setTopics(topicsValues);\n setSkills(skillsValues);\n setSkillsUnionType(skillsUnionTypeValue);\n setDescription(textValue);\n setComplicity(complicityValues);\n setTypes(answersTypeValue);\n } else {\n setSelectedSubjectId(subjectId);\n setTopics([]);\n setSkills([]);\n setSkillsUnionType('Все');\n setDescription('');\n setComplicity(questionsComplicityNormalize);\n setTypes(questionTypeListNormalize);\n }\n };\n\n useEffect(() => {\n dispatch(getSubjectsDataAction());\n }, []);\n useEffect(() => setSelectedSubjectId(subjectId), [subjectId]);\n useEffect(() => {\n if (selectedSubjectId && !isEmptyList(subjectsTree)) {\n dispatch(getSubjectDataByIdAction(selectedSubjectId));\n }\n dispatch(fetchCodifierSkillsDataAction());\n }, [selectedSubjectId, subjectsTree.length]);\n\n useEffect(() => {\n setInitialFilters(selectedBlock?.block.filters);\n }, [selectedBlock]);\n\n useEffect(() => {\n setInitialFilters(filtersData);\n }, [filtersData]);\n\n const handleQuestionDescription = (desc: string) => {\n setDescription(desc);\n };\n\n const onMultipleSelect = (field: 'complicity' | 'types', list: string[]) => {\n if (field === 'complicity') {\n setComplicity(list as TQuestionComplicity[]);\n }\n if (field === 'types') {\n setTypes(list as TQuestionTypes[]);\n }\n };\n const onTreeSelect = (field: 'topics' | 'skills', list: string[]) => {\n if (field === 'topics') {\n setTopics(list);\n }\n if (field === 'skills') {\n setSkills(list);\n }\n };\n const onSkillsUnionTypeSelect = (unionType: TQuestionSkill) => {\n setSkillsUnionType(unionType);\n };\n const onSubjectSelect = (id: number) => {\n setSelectedSubjectId(id);\n setTopics([]);\n };\n\n const handleSearchButtonClickLocal = () => {\n const searchFilters: TSearchData = {\n topics: topics.map((topicId) => +topicId.split('-').slice(-1)),\n // @ts-ignore\n answers_type: Object.keys(E_QUESTION_TYPE)\n .map((TYPE) => {\n if (types.includes(E_QUESTION_TYPE[TYPE as TQuestionTypesField])) {\n return TYPE;\n }\n })\n .filter((item) => item),\n status: 'published',\n all_user_questions: 'true',\n };\n if (description) {\n searchFilters.text = description;\n }\n if (skills.length) {\n const field: TQuestionSkillField =\n (Object.keys(E_SKILLS_FILTERS).find(\n (SKILL) => E_SKILLS_FILTERS[SKILL as TQuestionSkillField] === skillsUnionType,\n ) as TQuestionSkillField) ?? 'skills_and';\n searchFilters[field] = skills.map((skillId) => +skillId.split('-').slice(-1));\n }\n if (complicity.length) {\n // @ts-ignore\n searchFilters.difficulty = Object.keys(E_COMPLEXITY_OPTIONS)\n .map((COMPLEXITY) => {\n if (complicity.includes(E_COMPLEXITY_OPTIONS[COMPLEXITY as TQuestionDifficultyField])) {\n return COMPLEXITY;\n }\n })\n .filter((item) => item);\n }\n handleSearchButtonClick(searchFilters, selectedBlock);\n dispatch(setSelectedBlockAction(undefined));\n resetAllFilters();\n };\n\n const handleEditBlock = () => {\n dispatch(setSelectedBlockAction(undefined));\n resetAllFilters();\n };\n const handleDeleteBlockLocal = () => {\n if (selectedBlock) {\n handleDeleteBlock(selectedBlock);\n }\n dispatch(setSelectedBlockAction(undefined));\n resetAllFilters();\n };\n const resetAllFilters = () => {\n setTypes(questionTypeListNormalize);\n setComplicity(questionsComplicityNormalize);\n setDescription('');\n setSkillsUnionType('Все');\n setSkills([]);\n setTopics([]);\n };\n\n return (\n
\n {isLoading ? (\n \n ) : (\n <>\n
\n \n
\n \n
\n \n onSubjectSelect(+value)}\n filterOption={(input, option) =>\n (String(option?.label).toLowerCase() ?? '').includes(input.toLowerCase())\n }\n />\n \n onTreeSelect('topics', selectedTopics)\n }\n />\n
\n \n onMultipleSelect('complicity', selectedComplicity)\n }\n />\n \n onMultipleSelect('types', selectedTypes)\n }\n />\n onTreeSelect('skills', selectedSkills)}\n isResponsivePosition\n additionalContent={\n onSkillsUnionTypeSelect(value as TQuestionSkill)}\n />\n }\n />\n
\n
\n
\n
\n \n {!!selectedBlock && (\n \n \n
\n )}\n
\n\n \n \n
\n \n \n )}\n \n );\n};\nexport const QuestionSearchBarMemo = React.memo(QuestionSearchBar);\n","export const initAssignedQuestion = {\n singleQuestionsList: [],\n searchBlocksList: [],\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport {\n DropArea,\n QuestionInfoModal,\n TAreaName,\n TDroppedData,\n TModalButtonType,\n TQuestionsPaginate,\n TSearchResultBlock,\n} from 'src-new/components/lesson-task';\nimport { E_COLORS } from 'src-new/constants';\nimport { useGetQuestionModalControls, useQuestionsDrop, useQuestionsMove } from 'src-new/hooks';\nimport { getRightTaskTitle } from 'src-new/utils';\nimport { getQuestionDetailsAction, setOpenedQuestionIdAction, setSelectedBlockAction } from 'store/actions/lessonTask';\nimport { useAppSelector } from 'store/store';\nimport { TAssignedQuestion, TSearchBlock, TSingleQuestion } from 'types/lessonTask';\n\nimport { initAssignedQuestion } from './SearchResult.constants';\n\nimport './style.scss';\n\nexport const SearchResult: React.FC = (props) => {\n const dispatch = useDispatch();\n const { selectedQuestions, searchQuestions, activeQuestionNumber, isTrainer } = props;\n const [rightBlock, setRightBlock] = useState(initAssignedQuestion);\n const [leftBlock, setLeftBlock] = useState(initAssignedQuestion);\n\n const selectedQuestionsCount = useMemo(() => {\n const singleCount = rightBlock?.singleQuestionsList?.length ?? 0;\n let blockCount = 0;\n rightBlock?.searchBlocksList?.forEach((item) => {\n const blockQuestionsIds = item?.questionsContentList\n ?.map(({ questionContent }) => questionContent?.id)\n .filter(Boolean);\n const existingExcludedIds = item?.filters?.excludeIds?.filter((item) => blockQuestionsIds.includes(item));\n const excludedCount = existingExcludedIds?.length ?? 0;\n\n blockCount += item?.questionsContentList.length - excludedCount;\n });\n return singleCount + blockCount;\n }, [rightBlock]);\n\n const { openedQuestionId, selectedBlock } = useAppSelector((store) => store.lessonTask);\n\n useEffect(() => {\n setRightBlock(selectedQuestions ?? initAssignedQuestion);\n }, [selectedQuestions]);\n useEffect(() => {\n setLeftBlock(\n {\n searchBlocksList: searchQuestions,\n singleQuestionsList: [],\n } ?? initAssignedQuestion,\n );\n }, [searchQuestions]);\n\n const {\n questionsIdsToPaginate,\n canPaginateRight,\n canPaginateLeft,\n hasRemoveButton,\n hasExcludeButton,\n hasIncludeButton,\n hasAddButton,\n } = useGetQuestionModalControls({ rightBlock, leftBlock, openedQuestionId });\n const { handleDropBlock, handleDropSingle, handleDropSingleBlock } = useQuestionsDrop({\n rightBlock,\n leftBlock,\n activeQuestionNumber,\n });\n const { onBlockQuestionMove, onAddSingleQuestion, onRemoveSingleQuestion } = useQuestionsMove({\n rightBlock,\n leftBlock,\n activeQuestionNumber,\n });\n\n const handleQuestionsDrop = (droppedData: TDroppedData) => {\n const { areaName, type, data } = droppedData;\n\n if (type === 'block') {\n handleDropBlock(areaName, data as TSearchBlock);\n } else if (type === 'single') {\n handleDropSingle(areaName, data as TSingleQuestion);\n } else if (type === 'block-single') {\n handleDropSingleBlock(data as TSingleQuestion);\n }\n };\n\n const handleQuestionsMove = (id: number, type: TModalButtonType) => {\n const rightBlockSelected = rightBlock.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.find(({ questionContent }) => questionContent?.id === id),\n );\n const leftBlockSelected = leftBlock.searchBlocksList?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.find(({ questionContent }) => questionContent?.id === id),\n );\n const leftQuestionSelected = leftBlock.singleQuestionsList?.find(\n ({ questionContent }) => questionContent?.id === id,\n );\n const rightQuestionSelected = rightBlock.singleQuestionsList?.find(\n ({ questionContent }) => questionContent?.id === id,\n );\n\n const leftBlockSingleSelected = leftBlock.searchBlocksList\n ?.find(\n ({ questionsContentList }) =>\n !!questionsContentList.find(({ questionContent }) => questionContent?.id === id),\n )\n ?.questionsContentList.find(({ questionContent }) => questionContent?.id === id);\n\n switch (type) {\n case 'include':\n case 'exclude':\n onBlockQuestionMove(id, type, rightBlockSelected, leftBlockSelected);\n break;\n case 'add':\n onAddSingleQuestion(leftBlockSingleSelected, leftQuestionSelected);\n break;\n case 'remove':\n onRemoveSingleQuestion(rightQuestionSelected);\n break;\n }\n };\n\n const handleQuestionsPaginate = (direction: TQuestionsPaginate) => {\n const index = questionsIdsToPaginate?.findIndex((id) => id === openedQuestionId);\n\n if (questionsIdsToPaginate && index !== undefined && index >= 0) {\n //@ts-ignore\n const nextQuestionId: number =\n direction === 'next' ? questionsIdsToPaginate[index + 1] : questionsIdsToPaginate[index - 1];\n dispatch(setOpenedQuestionIdAction(nextQuestionId));\n dispatch(getQuestionDetailsAction(nextQuestionId));\n }\n };\n const handleClickBlocksSetting = (block: TSearchBlock, areaName: TAreaName, index: number) => {\n const isNeedUpdate = selectedBlock?.number !== index || selectedBlock?.side !== areaName;\n\n if (isNeedUpdate) {\n dispatch(setSelectedBlockAction({ side: areaName, number: index, block }));\n } else {\n dispatch(setSelectedBlockAction(undefined));\n }\n };\n\n return (\n
\n \n
\n
\n \n \n
\n handleClickBlocksSetting(block, 'left', number)}\n canDragQuestions\n />\n
\n
\n
\n
\n \n \n
\n \n
\n handleClickBlocksSetting(block, 'right', number)}\n />\n
\n
\n );\n};\n","import React from 'react';\nimport { AppButton } from '@frontend-modules/ui-kit';\nimport { QuestionsListBar } from 'src-new/components/lesson-task';\nimport { AppSkeleton } from 'src-new/ui';\n\nimport { TQuestionSearchContainerProps } from './QuestionSearchResult.types';\nimport { SearchResult } from './search-result';\n\nimport './style.scss';\n\nexport const QuestionSearchResult: React.FC = ({\n selectedQuestionsList,\n searchResults,\n questionsList,\n handleQuestionClick,\n activeQuestionNumber,\n isLoading = false,\n handleSearchingCancel,\n handleSearchingSave,\n isTrainer,\n handleChangeQuestionList,\n}) => {\n return (\n
\n
\n
\n {!isTrainer && (\n \n )}\n
\n
\n \n \n
\n
\n
\n {isLoading ? (\n
\n \n \n
\n ) : (\n \n )}\n
\n
\n );\n};\n","import React from 'react';\nimport { AppButton, AppText } from '@frontend-modules/ui-kit';\nimport { Trash } from '@lms-elements/icons';\nimport { E_COLORS } from 'src-new/constants';\n\ntype TBarItemDescription = {\n orientation: 'vertical' | 'horizontal';\n isEmptyQuestion: boolean;\n questionNumber: number;\n isNoType: boolean;\n questionsCount: number;\n searchBlocksCount: number;\n handleQuestionClick: (num: number) => void;\n handleDeleteQuestion: (num: number) => void;\n isLastEmptyQuestion: boolean;\n};\nexport const BarItemDescription: React.FC = (props: TBarItemDescription) => {\n const {\n orientation,\n isEmptyQuestion,\n questionNumber,\n isNoType,\n questionsCount,\n searchBlocksCount,\n isLastEmptyQuestion,\n handleDeleteQuestion,\n handleQuestionClick,\n } = props;\n\n return orientation === 'vertical' ? (\n
\n {isEmptyQuestion ? (\n
\n \n
\n ) : (\n
\n \n \n
\n )}\n {/*Чтобы было невозможно удалить последний ПУСТОЙ вопрос*/}\n {!isLastEmptyQuestion && (\n
\n \n
\n )}\n
\n ) : (\n <>\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\ntype TBarItemIcon = {\n numClass: 'common' | 'active';\n numText: string;\n disabled?: boolean;\n handleQuestionClick: () => void;\n};\nexport const BarItemIcon: React.FC = (props: TBarItemIcon) => {\n const { numClass, numText, disabled, handleQuestionClick } = props;\n return (\n \n \n \n );\n};\n","import React, { useMemo } from 'react';\nimport { PlusIcon } from 'assets';\nimport { AppProgressBar } from 'src-new/ui';\n\nimport { BarItemDescription, BarItemIcon } from './bar-item-entities';\nimport { TQuestionsListBarProps } from './QuestionsListBar.types';\n\nimport './style.scss';\n\nexport const QuestionsListBar: React.FC = (props) => {\n const {\n questionList,\n handleChangeList,\n handleQuestionClick,\n orientation = 'vertical',\n activeNumber = 1,\n isNoType,\n } = props;\n\n const handleAddEmptyQuestion = (questionNum: number) => {\n handleChangeList(questionNum, 'add');\n };\n const handleDeleteQuestion = (questionNum: number) => {\n handleChangeList(questionNum, 'delete');\n };\n\n const questionsListNormalized = useMemo(() => {\n const list = questionList.map((question) => {\n const { questionNumber, questionsCount, searchBlocksCount } = question;\n const numText = questionNumber === 1 ? `№ 1` : questionNumber;\n const isEmptyQuestion = !questionsCount && !searchBlocksCount;\n const isLastEmptyQuestion = questionList.length === 1 && isEmptyQuestion;\n const numClass = orientation === 'horizontal' && activeNumber !== questionNumber ? 'common' : 'active';\n\n return {\n title: '',\n icon: (\n \n ),\n description: (\n \n ),\n };\n });\n list.push({\n title: '',\n icon: (\n \n \n \n ),\n description: <>,\n });\n return list;\n }, [questionList, activeNumber, isNoType, orientation, handleQuestionClick]);\n\n return (\n
\n \n
\n );\n};\n","import React, { useMemo } from 'react';\nimport { getNoun } from '@frontend-modules/frontend-utils';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { QuestionsListBar } from 'src-new/components/lesson-task';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TTasksQuestionsListProps } from './TasksQuestionsList.types';\n\nimport './style.scss';\n\nexport const TasksQuestionsList: React.FC = (props) => {\n const { questionsList, isNoType, handleChangeList, handleQuestionClick } = props;\n\n const allQuestionsCount = useMemo(() => {\n const notEmptyQuestions = questionsList.filter(({ questionsCount }) => !!questionsCount);\n\n return notEmptyQuestions.length;\n }, [questionsList]);\n\n return (\n
\n
\n \n \n
\n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { AppButton, AppInput, AppText, AppTextareaInput } from '@frontend-modules/ui-kit';\nimport { useRole } from 'hooks';\nimport { AppSelect, AppSkeleton, AppSwitch } from 'src-new/ui';\n\nimport { TTaskConfigContainerProps } from './TaskConfigContainer.types';\nimport { TasksQuestionsList } from './tasks-questions-list';\n\nimport './style.scss';\n\nexport const TaskConfigContainer: React.FC = (props) => {\n const { isTeacher, isMethodist } = useRole();\n const {\n title,\n description,\n isTaskTemplate,\n questionDetails,\n questionsList,\n typeOptionsNormalize,\n selectedType,\n isLoading = false,\n isSaveButtonDisabled = false,\n isSaveButtonLoading = false,\n isTemplateSwitcherDisabled,\n handleTaskName,\n handleTaskDescription,\n handleTypeSelect,\n handleTemplateSwitcher,\n handleChangeQuestionList,\n handleQuestionClick,\n handleSaveTask,\n handleCancel,\n } = props;\n\n const [isFirstTime, setIsFirstTime] = useState(true);\n\n const onTitleChange = (name: string) => {\n handleTaskName(name);\n setIsFirstTime(false);\n };\n\n return (\n
\n
\n {isLoading ? (\n <>\n \n \n \n ) : (\n <>\n
\n \n \n
\n
\n \n handleTypeSelect(+value)}\n />\n
\n
\n
\n {questionDetails?.map((itemType, index) => {\n const { title, description } = itemType;\n\n return (\n !!title && (\n
\n \n \n
\n )\n );\n })}\n
\n
\n
\n
\n \n \n
\n {!(isTeacher && !isMethodist) && (\n
\n
\n \n handleTemplateSwitcher(checked)}\n />\n
\n \n
\n )}\n
\n \n )}\n
\n
\n {isLoading ? (\n \n ) : (\n \n )}\n
\n
\n );\n};\n","import { ResponseLesson } from 'types/lesson';\n\nexport const sortLessons = >(lessons: Lesson[]): Lesson[] =>\n lessons.sort((firstLesson, nextLesson) => firstLesson.order - nextLesson.order);\n","import { isListExist } from '@frontend-modules/frontend-utils';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getCourseGroupStudents } from 'api/services/courseGroups';\nimport { getStudentsTasksPreview } from 'api/services/homework';\nimport { getLessonDetails, getLessons, handleLesson } from 'api/services/lesson';\nimport { getLessonSchedule, handleLessonSchedule, LessonScheduleResponse } from 'api/services/lessonSchedule';\nimport { payloadTimeFormatter } from 'src-new/utils';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\nimport { CourseLesson, CreateLessonParams, PatchLessonParams, ResponseLesson } from 'types/lesson';\nimport {\n PatchLessonScheduleParams,\n PostLessonScheduleParams,\n THandleLessonScheduleProps,\n THandleLessonSchedules,\n} from 'types/lessonSchedules';\nimport { Student } from 'types/students';\n\nimport { sortLessons } from 'utils/sortLessons';\n\nexport const getLessonsAction = createAsyncThunk(\n 'courseLessons/getLessons',\n async ({ topicId }: { topicId?: number } = {}) => sortLessons(await getLessons(topicId)),\n);\n\nexport const getLessonsAndHomeworksAction = createAsyncThunk(\n 'courseLessons/getLessonsAndHomeworks',\n async (params: {\n topicId: number;\n courseGroupId?: number;\n isStudent?: boolean;\n lessonIds?: number[];\n }): Promise<{\n homeworksMap: Record;\n lessons: ResponseLesson[];\n lessonSchedules: LessonScheduleResponse[];\n }> => {\n const { topicId, courseGroupId, isStudent, lessonIds } = params;\n const resultLessons: ResponseLesson[] = [];\n let lessonSchedules: LessonScheduleResponse[] = [];\n\n const sortedLessons = sortLessons(await getLessons(topicId, lessonIds));\n\n resultLessons.push(...sortedLessons);\n\n const students: Student[] = [];\n\n if (courseGroupId) {\n if (!isStudent) {\n students.push(...(await getCourseGroupStudents(courseGroupId).then((res) => res.students)));\n }\n if (sortedLessons.length) {\n lessonSchedules = await getLessonSchedule(\n sortedLessons.map((lesson) => lesson.id),\n courseGroupId,\n );\n }\n }\n\n if (!resultLessons.length) {\n return {\n homeworksMap: {},\n lessonSchedules: [],\n lessons: resultLessons,\n };\n }\n\n if (!students.length) {\n return {\n homeworksMap: {},\n lessonSchedules: lessonSchedules,\n lessons: resultLessons,\n };\n }\n return await getStudentsTasksPreview(\n sortedLessons.map((lesson) => lesson.id),\n students.map((student) => student.id),\n )\n .then((homeworks) => {\n const homeworksMap = homeworks.reduce((result, homework) => {\n const lessonId = homework.lesson;\n\n if (lessonId) {\n result[lessonId] = result[lessonId] ? result[lessonId].concat([homework]) : [homework];\n }\n\n return result;\n }, {} as { [lessonId: number]: AssignmentProgressPreview[] });\n\n return {\n homeworksMap,\n lessonSchedules,\n lessons: resultLessons,\n };\n })\n .catch(() => {\n return {\n homeworksMap: {},\n lessonSchedules,\n lessons: resultLessons,\n };\n });\n },\n);\n\nexport const createLessonAction = createAsyncThunk(\n 'courseLessons/createLesson',\n async ({ newLesson, courseId }: { newLesson: CreateLessonParams; courseId: number }) => {\n const { order, title, topic, description, isTest } = newLesson;\n\n const lesson = await handleLesson({\n create: {\n title,\n topic,\n order,\n description,\n isTest,\n },\n });\n return {\n ...lesson.create,\n courseId,\n order,\n };\n },\n);\n\nexport type UpdateLessonParams = {\n changedLesson: PatchLessonParams & { order?: number };\n schedulesParams?: {\n createLessonSchedules: PostLessonScheduleParams[];\n updateLessonSchedules: PatchLessonScheduleParams[];\n deleteLessonSchedule: number[];\n };\n courseGroup?: number;\n};\n\nexport const handleLessonScheduleAction = createAsyncThunk(\n 'courseLessons/handleLessonSchedule',\n async ({\n lessonParams,\n topic,\n courseId,\n }: {\n lessonParams: UpdateLessonParams;\n topic?: number;\n courseId: number;\n }) => {\n const { changedLesson, schedulesParams, courseGroup } = lessonParams;\n const { id, title, order, description, isTest, type: lessonType } = changedLesson;\n\n if (courseGroup) {\n const payload: THandleLessonScheduleProps = {\n courseGroup: courseGroup,\n lesson: id,\n order: lessonType === 'common' ? undefined : order,\n topic,\n title: lessonType === 'common' ? undefined : title,\n description: lessonType === 'common' ? undefined : description,\n };\n if (\n schedulesParams &&\n (isListExist(schedulesParams.deleteLessonSchedule) ||\n isListExist(schedulesParams.createLessonSchedules) ||\n isListExist(schedulesParams.updateLessonSchedules))\n ) {\n const lessonSchedules: THandleLessonSchedules = {};\n const createdLessonSchedules = schedulesParams.createLessonSchedules[0];\n const updatedLessonSchedules = schedulesParams.updateLessonSchedules[0];\n const deletedLessonSchedules = schedulesParams.deleteLessonSchedule[0];\n\n if (createdLessonSchedules) {\n //@ts-ignore\n lessonSchedules.create = {\n //@ts-ignore\n type: createdLessonSchedules?.type,\n datetimeStart: createdLessonSchedules?.datetimeStart\n ? payloadTimeFormatter(createdLessonSchedules.datetimeStart)\n : undefined,\n datetimeEnd:\n createdLessonSchedules.datetimeEnd && updatedLessonSchedules?.type !== 'online_lesson'\n ? payloadTimeFormatter(createdLessonSchedules.datetimeEnd)\n : undefined,\n };\n }\n if (updatedLessonSchedules?.id) {\n //@ts-ignore\n lessonSchedules.update = {\n id: updatedLessonSchedules.id,\n //@ts-ignore\n type: updatedLessonSchedules?.type,\n datetimeStart: updatedLessonSchedules.datetimeStart\n ? payloadTimeFormatter(updatedLessonSchedules.datetimeStart)\n : undefined,\n datetimeEnd:\n updatedLessonSchedules.datetimeEnd && updatedLessonSchedules?.type !== 'online_lesson'\n ? payloadTimeFormatter(updatedLessonSchedules.datetimeEnd)\n : undefined,\n };\n }\n if (deletedLessonSchedules) {\n lessonSchedules.delete = deletedLessonSchedules;\n }\n\n const handleLessonScheduleParams =\n lessonType === 'reserve'\n ? {\n ...payload,\n lessonSchedules: lessonSchedules,\n }\n : {\n lesson: payload.lesson,\n courseGroup: payload.courseGroup,\n lessonSchedules: lessonSchedules,\n };\n const res = await handleLessonSchedule(handleLessonScheduleParams);\n const deleted = res.lessonSchedules.delete\n ? {\n ...res,\n lessonSchedules: res.lessonSchedules.delete,\n }\n : undefined;\n const updated = res.lessonSchedules.update\n ? {\n ...res,\n lessonSchedules: res.lessonSchedules.update,\n }\n : undefined;\n const created = res.lessonSchedules.create\n ? {\n ...res,\n lessonSchedules: res.lessonSchedules.create,\n }\n : undefined;\n\n return {\n lessonSchedule: {\n deletedLessonSchedules: deleted ? { ...deleted, order } : undefined,\n updatedLessonSchedules: updated ? { ...updated, order } : undefined,\n createdLessonSchedules: created ? { ...created, order } : undefined,\n },\n };\n }\n\n const updatedLessonSchedules = await handleLessonSchedule(payload);\n return {\n lessonSchedule: {\n updatedLessonSchedules: { ...updatedLessonSchedules, order },\n },\n };\n } else {\n const lessons = await handleLesson({\n update: {\n id,\n title,\n order,\n description,\n topic,\n isTest,\n },\n });\n\n return {\n lesson: { ...lessons.update, order },\n };\n }\n },\n);\n\nexport const deleteLessonAction = createAsyncThunk(\n 'courseLessons/deleteLesson',\n async ({ lessonId, courseId }: { lessonId: number; courseId: number }) => {\n const res = await handleLesson({\n delete: lessonId,\n });\n return {\n lessonId: res.delete,\n courseId,\n };\n },\n);\n\nexport const getLessonDataAction = createAsyncThunk(\n 'courseLesson/getLessonData',\n async (lessonId: number) => await getLessonDetails(lessonId),\n);\n\nexport const changeLessonTopicAction = createAsyncThunk(\n 'courseLessons/changeLessonTopic',\n async ({ lessonParams, newTopic }: { lessonParams: CourseLesson; newTopic: number }) => {\n const { id, title, description, isTest } = lessonParams;\n return await handleLesson({\n update: {\n id,\n title,\n description,\n topic: newTopic,\n isTest,\n },\n });\n },\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n blockCourse,\n CourseParams,\n deleteCourse,\n getCanFillCourseList,\n getCourseDetails,\n getCourses,\n patchCourse,\n PatchCourseParams,\n postCourse,\n PostCourseParams,\n publishCourse,\n} from 'api/services/course';\nimport { getCourseGroups } from 'api/services/courseGroups';\nimport { getThemes } from 'api/services/courseThemes';\nimport { CourseData, CourseType } from 'types/course';\n\nexport const getCoursesAction = createAsyncThunk('course/getCoursesInSubject', async (subjectId: number) => {\n return await Promise.all([getCourses({ subject_id: subjectId }), getCanFillCourseList(subjectId)]);\n});\n\nexport const getCoursesBySubject = createAsyncThunk('courses/getCoursesBySubject', (subjectId: number) => {\n return getCourses({ subject_id: subjectId }).then(async (courses) => {\n return {\n subjectId,\n courses,\n courseGroups: await getCourseGroups({ subject: subjectId }),\n };\n });\n});\n\nexport const getCanFillCourseListAction = createAsyncThunk('course/getCanFillCourse', async (subjectId: number) => {\n return await getCanFillCourseList(subjectId);\n});\n\nexport const publishCourseAction = createAsyncThunk('course/publishCourse', async (courseId: number) => {\n return await publishCourse(courseId);\n});\n\nexport const createCourseAction = createAsyncThunk('course/createCourse', async (values: PostCourseParams) => {\n return await postCourse(values);\n});\n\nexport const changeCourseAction = createAsyncThunk('course/changeCourse', async (courseData: PatchCourseParams) => {\n return await patchCourse(courseData);\n});\n\nexport const deleteCourseAction = createAsyncThunk('course/deleteCourse', async (id: number) => {\n return await deleteCourse(id);\n});\n\nexport const getStudentCoursesAction = createAsyncThunk('course/getStudentCourse', async (params?: CourseParams) => {\n return await getCourses(params);\n});\n\nexport const getAllCourses = createAsyncThunk('course/getCourses', async (params?: CourseParams) => {\n return await getCourses(params);\n});\n\nexport const getCourseDetailsAction = createAsyncThunk('course/getCourseDetails', async (courseId: number) => {\n return await getCourseDetails(courseId);\n});\n\nexport const getCourseWithThemesAction = createAsyncThunk('course/getCourseWithThemes', async (courseId: number) => {\n return await Promise.all([getCourseDetails(courseId), getThemes(courseId)]);\n});\n\nexport const getCourseBySubjectAction = createAsyncThunk(\n 'course/getCourseBySubjectAction',\n async (subjectId: number) => {\n return await getCourses({ subject_id: subjectId });\n },\n);\n\ntype BlockCourseParams = {\n courseId: number;\n isBlockEdit: boolean;\n};\n\nexport const blockCourseAction = createAsyncThunk(\n 'course/blockCourse',\n ({ courseId, isBlockEdit }: BlockCourseParams) => {\n return blockCourse(courseId, isBlockEdit);\n },\n);\n\ninterface CourseWithHoursWeekParams {\n subject_id?: number;\n course_type?: CourseType;\n parallels?: number;\n calendar_plan: number;\n}\n\nexport interface CourseForParallelData {\n parallelId: number;\n calendarPlanId: number;\n courses: CourseData[];\n}\n\nexport const getAllCoursesForParallel = createAsyncThunk(\n 'course/getAllCoursesWithHoursWeek',\n async ({\n subject_id,\n course_type,\n parallels,\n calendar_plan,\n }: CourseWithHoursWeekParams): Promise => {\n const courses = await getCourses({ subject_id, course_type, parallels }).then((res) => res);\n return { calendarPlanId: calendar_plan, parallelId: Number(parallels), courses };\n },\n);\n\nexport interface CourseHoursWeekWithFieldParams {\n calendar_plan: number;\n course: number;\n fieldName: string;\n}\n\nexport interface CourseHoursWeekWithField {\n hoursPerWeek: number;\n fieldName: string;\n}\n","import HardModal from './HardModal';\n\nexport default HardModal;\n","import React, { FC, useMemo } from 'react';\nimport { useQueryPopupsParams } from 'src-new/hooks';\nimport { AppDrawer } from 'src-new/ui';\n\nimport { IHardModalProps } from './HardModal.types';\n\n/**\n * @description - Компонент рендера \"Сложной модалки\"\n * @constructor\n */\nconst HardModal: FC = (props) => {\n const { children, isOpen, layer, urlProps, customWrapperStyle, handleCloseModal, ...rest } = props;\n\n const Popup = useQueryPopupsParams();\n\n // @ts-ignore\n const layerRightAbsolute = useMemo(() => `${layer === 1 ? 0 : layer * 50}px`, [layer]);\n\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { urlProps });\n }\n return child;\n });\n\n const handleCloseModalLocal = () => {\n handleCloseModal?.();\n Popup.closeLastPopup();\n };\n return (\n \n {childrenWithProps}\n \n );\n};\n\nexport default HardModal;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Form, FormSpy } from 'react-final-form';\nimport { FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { useDispatch } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { ReturnButton } from '@lms-elements/atomic';\nimport { insertationToTemplate } from '@lms-elements/custom-editor';\nimport { IQuestionForTeacher } from '@lms-elements/test-task';\nimport { questionType } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Minimized/MinimizedQuestion.types';\nimport { QuestionStatus } from 'api/services/questionBank';\nimport { StrokeArrowRightIcon } from 'assets';\nimport { PageLoader } from 'containers/PageLoader';\nimport { QuestionPool } from 'containers/QuestionPool';\nimport { EditorState } from 'draft-js';\nimport arrayMutators from 'final-form-arrays';\nimport { useLoader } from 'hooks';\nimport { debounce } from 'lodash-es';\nimport { Status } from 'pages/QuestionBankPage/types';\nimport { IFormValuesCreateQuestions, ISelectedValues } from 'pages/QuestionCreationPage/QuestionCreationPage.types';\nimport { Questions } from 'pages/QuestionCreationPage/Questions';\nimport { useSubmit } from 'pages/QuestionCreationPage/useSubmit';\nimport {\n getInitFormValue,\n getInitFormValues,\n getQuestionContent,\n getQuestionText,\n validateQuestion,\n} from 'pages/QuestionCreationPage/utils';\nimport { HardModal } from 'src-new/components/hard-modal';\nimport { useCreateQuestionPopup, useGetPopupLessonData, useSubjectsRedirect } from 'src-new/hooks';\nimport {\n fetchCodifierSkillsDataAction,\n getCodifierDataByTopicsAction,\n getCodifierSubjectDataAction,\n getCodifierSubjectsAction,\n} from 'store/actions/codifier';\nimport { getLessonDataAction } from 'store/actions/courseLessons';\nimport { addCreatedQuestionAction } from 'store/actions/lessonTask';\nimport { addNewQuestionForExerciseMaterialAction } from 'store/actions/material';\nimport {\n deleteQuestionAction,\n getHistoryQuestionAction,\n getQuestionDetailedAction,\n refreshStatusesQuestions,\n} from 'store/actions/questionBank';\nimport { saveCreateQuestionsStore } from 'store/actions/questionCreate';\nimport { resetFetchStatuses } from 'store/reducers/codifier';\nimport { resetPostQuestion, resetQuestionBankState, resetQuestionCreated } from 'store/reducers/questionBank';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { ICreateQuestionPopup, TResponseQuestion } from 'types/lessonTask';\nimport { UserRoles } from 'types/user';\n\nimport { PropertyMenu } from 'components/PropertyMenu';\nimport { getQuestionTypeForBackend } from 'utils/questions';\nimport { getPathParts } from 'utils/url';\n\nimport './style.scss';\nconst cnQuestionCreationPage = cn('question_creation_page');\nconst ARRAY_MUTATORS = { ...arrayMutators };\nconst SUBSCRIPTIONS_STAB = {};\n\nconst CreateQuestionPopup: React.FC = (props) => {\n const { urlProps, ...rest } = props;\n const { lessonId, courseGroupId, taskId, num, purpose, isTrainer, assignment } = urlProps;\n //TODO: isFromMaterials и isSearchPage - заглушки на время, пока не будет готов функционал по созданию резервных уроков\n const isFromMaterials = false;\n const isSearchPage = true;\n const isFillTrainer = isTrainer;\n const isEditPage = purpose === 'edit';\n\n const history = useHistory();\n const CreateQuestionPopup = useCreateQuestionPopup();\n const { courseInfo, topicInfo, lessonInfo } = useGetPopupLessonData({\n lessonId,\n courseGroupId,\n taskId,\n isNeedFetch: CreateQuestionPopup.isCurrent,\n });\n useSubjectsRedirect({\n modalType: 'CREATE_QUESTION',\n urlProps: urlProps,\n });\n\n const handleClosePopup = () => {\n CreateQuestionPopup.closeLastCreateQuestionPopup();\n };\n\n const breadcrumbsHeader = useMemo(() => {\n return courseInfo?.title && topicInfo?.title ? (\n
\n
handleClosePopup()}>\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n ) : (\n <>\n );\n }, [courseInfo, topicInfo]);\n\n // Ниже логика, перенесенная со старой страницы создания вопроса\n // (без рефакторинга, только адаптированная под модалку и немного причесанная)\n const dispatch = useDispatch();\n const location = useLocation();\n\n const handleFormValuesChange = useRef(\n debounce((state: { values: IFormValuesCreateQuestions }) => {\n setFormValuesState(state.values);\n }, 500),\n );\n const isInitValueEdit = useRef(false);\n\n const {\n materialIdToEdit,\n info,\n fetchStatus,\n codifierData,\n fetchStatusSkills,\n codifierSkillsData,\n getSubjectsStatus,\n postStatusQuestion,\n questionCreateId,\n fetchStatusDetailedQuestion,\n detailedQuestion,\n fileLink,\n questionCreated,\n createdQuestions,\n } = useAppSelector((store) => ({\n materialIdToEdit: store.questions.materialIdToEdit,\n postStatusQuestion: store.questions.postStatusQuestion,\n questionCreateId: store.questions.questionCreateId,\n fetchStatusDetailedQuestion: store.questions.fetchStatusDetailedQuestion,\n detailedQuestion: store.questions.detailedQuestion,\n fileLink: store.questions.fileLink,\n questionCreated: store.questions.questionCreated,\n info: store.user.info,\n fetchStatus: store.codifier.fetchStatus,\n codifierData: store.codifier.codifierData,\n fetchStatusSkills: store.codifier.fetchStatusSkills,\n codifierSkillsData: store.codifier.codifierSkillsData,\n getSubjectsStatus: store.codifier.getSubjectsStatus,\n createdQuestions: store.searchBlock.createdQuestions,\n }));\n\n const isMethodistRole = info?.userRoles.includes(UserRoles.METHODIST);\n const isPrincipalRole = info?.userRoles.includes(UserRoles.PRINCIPAL);\n const isSupport = info?.userRoles.includes(UserRoles.SUPPORT);\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что и завуч\n const isPrincipal = isPrincipalRole || isSupport;\n // TODO: изменить, когда будут известны все отличия между методистом и завучем. Сейчас завуч видит все тоже самое что и методист\n const isMethodist = isMethodistRole || isPrincipal;\n const isCreatingForMaterials = isFromMaterials || !!isFillTrainer;\n const needFetchSkills = fetchStatusSkills === FetchStatus.INITIAL;\n const showForm =\n (isFromMaterials && getSubjectsStatus === FetchStatus.FETCHED && fetchStatusSkills === FetchStatus.FETCHED) ||\n (!isEditPage && getSubjectsStatus === FetchStatus.FETCHED && fetchStatusSkills === FetchStatus.FETCHED) ||\n (isEditPage && fetchStatus === FetchStatus.FETCHED && fetchStatusDetailedQuestion === FetchStatus.FETCHED);\n\n const initFormValue = useMemo(\n () =>\n getInitFormValue(\n isCreatingForMaterials,\n new URLSearchParams(history.location.search).get('status') === Status.Published && isMethodist,\n ),\n [history.location.search, isCreatingForMaterials, isMethodist],\n );\n\n const [isQuestionCreated, setIsQuestionCreated] = useState(false);\n const [canDrop, setCanDrop] = useState(!isEditPage);\n const [stateGettingInitValue, setStateGettingInitValue] = useState(\n isEditPage ? FetchStatus.FETCHING : FetchStatus.FETCHED,\n );\n const [topicsLocation, setTopicsLocation] = useState('');\n const [selectedTopics, setSelectedTopics] = useState(\n new URLSearchParams(location.search).get('topics')?.split(',').map(Number) ?? [],\n );\n const [formValuesState, setFormValuesState] = useState(initFormValue);\n const [flagRefresh, setFlagRefresh] = useState(false);\n const [flagDelete, setFlagDelete] = useState(false);\n const [questionType, setQuestionType] = useState('');\n const [selectedSkills, setSelectedSkills] = useState({\n ids: [],\n location: '',\n });\n const [initValueEdit, setInitValueEdit] = useState(initFormValue);\n const [changedSubject, setChangedSubject] = useState();\n\n const editOrCreate = useMemo(() => getPathParts(history.location.pathname)[3], [history]);\n const isTextEditor = useMemo(() => {\n if (isEditPage && stateGettingInitValue === FetchStatus.FETCHED) {\n return detailedQuestion.content !== '{}';\n }\n if (!isEditPage) {\n return true;\n }\n return null;\n }, [detailedQuestion.content, isEditPage, stateGettingInitValue]);\n const canEdit = useMemo(\n () =>\n (isEditPage && isMethodist) ||\n ((detailedQuestion?.author?.id === undefined || info?.id === detailedQuestion?.author?.id) &&\n detailedQuestion.status !== QuestionStatus.Published),\n [detailedQuestion?.author?.id, info?.id, isEditPage, isMethodist, detailedQuestion?.status],\n );\n const isDisabledButton = useMemo(() => {\n if (!formValuesState.topicsLocation) {\n return true;\n }\n\n if (\n canDrop ||\n (isEditPage && JSON.stringify(formValuesState) === JSON.stringify(initValueEdit)) ||\n postStatusQuestion !== FetchStatus.INITIAL ||\n isQuestionCreated\n ) {\n return true;\n }\n\n if (formValuesState?.questions[0]) {\n const error = validateQuestion(formValuesState.questions[0]);\n\n return Boolean(error);\n }\n }, [canDrop, formValuesState, initValueEdit, isEditPage, isQuestionCreated, postStatusQuestion]);\n\n useLoader([fetchStatusDetailedQuestion, stateGettingInitValue, fetchStatus, fetchStatusSkills]);\n const { handleSubmitForm, getMarkup, render } = useSubmit({\n isEditPage,\n questionType: questionType as questionType,\n idPath: Number(lessonId),\n selectedTopics,\n selectedSkills,\n formValuesState,\n materialIdToEdit,\n fileIds: fileLink.map((val) => val.id),\n });\n\n const handleSelectLesson = useCallback((values: ISelectedValues) => {\n setSelectedTopics(values.ids);\n setTopicsLocation(values.location);\n }, []);\n\n const handleSelectSkills = useCallback((values: ISelectedValues) => {\n setSelectedSkills({ ids: values.ids.map((value) => value), location: values.location });\n }, []);\n\n const handleHistoryClick = useCallback(() => {\n dispatch(getHistoryQuestionAction(Number(lessonId)));\n }, [dispatch, lessonId]);\n\n const handleDeleteClick = useCallback(() => {\n if (lessonId) {\n dispatch(deleteQuestionAction(Number(lessonId)));\n CreateQuestionPopup.closeLastCreateQuestionPopup();\n }\n }, [lessonId, dispatch, history]);\n\n const handleCancelClick = useCallback(() => {\n CreateQuestionPopup.closeLastCreateQuestionPopup();\n dispatch(resetQuestionCreated());\n }, [history]);\n\n const handleQuestionDelete = useCallback(\n (fieldsProps: FieldArrayRenderProps) => {\n setQuestionType('');\n if (fieldsProps.fields.length === 1) {\n setCanDrop(true);\n }\n setFlagDelete(true);\n setFormValuesState((prev) => ({\n ...prev,\n questions: [],\n }));\n },\n [],\n );\n const handleSelectSubject = useCallback(\n (subjectId: number) => {\n dispatch(getCodifierSubjectDataAction(subjectId));\n setChangedSubject(subjectId);\n },\n [dispatch],\n );\n\n useEffect(() => {\n dispatch(resetQuestionBankState());\n }, [dispatch]);\n useEffect(() => {\n if (getSubjectsStatus === FetchStatus.INITIAL) {\n dispatch(getCodifierSubjectsAction());\n }\n }, [dispatch, getSubjectsStatus]);\n useEffect(() => {\n if (isSearchPage) {\n dispatch(getLessonDataAction(Number(lessonId)));\n }\n\n if (isEditPage) {\n dispatch(getQuestionDetailedAction(Number(lessonId)));\n }\n }, [dispatch, lessonId, isEditPage, isSearchPage]);\n\n useEffect(() => {\n if (isEditPage && fetchStatusDetailedQuestion === FetchStatus.FETCHED && detailedQuestion?.topics) {\n dispatch(getCodifierDataByTopicsAction(detailedQuestion.topics.map((topic) => topic.id)));\n }\n\n if (Number(lessonId)) {\n dispatch(getCodifierDataByTopicsAction([Number(lessonId)]));\n }\n }, [detailedQuestion.topics, dispatch, fetchStatusDetailedQuestion, lessonId, isEditPage]);\n useEffect(() => {\n dispatch(refreshStatusesQuestions());\n setFlagRefresh(true);\n }, [dispatch]);\n useEffect(() => {\n if (\n isEditPage &&\n fetchStatusDetailedQuestion === FetchStatus.FETCHED &&\n fetchStatusSkills === FetchStatus.FETCHED &&\n fetchStatus === FetchStatus.FETCHED &&\n flagRefresh\n ) {\n setStateGettingInitValue(FetchStatus.FETCHED);\n }\n }, [fetchStatus, fetchStatusDetailedQuestion, fetchStatusSkills, flagRefresh, isEditPage]);\n\n useEffect(() => {\n if (isEditPage && stateGettingInitValue === FetchStatus.FETCHED && !isInitValueEdit.current) {\n const formValue = getInitFormValues(detailedQuestion, codifierData, codifierSkillsData, isFromMaterials);\n\n setSelectedTopics(detailedQuestion?.topics?.map((l) => l.id) || []);\n setTopicsLocation(formValue.topicsLocation);\n setSelectedSkills({\n ids: detailedQuestion.skills ? detailedQuestion.skills.map((s) => s.id) : [],\n location: formValue.skillsLocation,\n });\n setQuestionType(formValue.questions.length ? formValue.questions[0].type : 'binary');\n setInitValueEdit(formValue);\n isInitValueEdit.current = true;\n return;\n }\n }, [\n codifierData,\n codifierSkillsData,\n detailedQuestion,\n detailedQuestion.skills,\n detailedQuestion?.topics,\n fetchStatus,\n lessonId,\n initValueEdit,\n isEditPage,\n stateGettingInitValue,\n ]);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(history.location.search);\n const subjectId = searchParams.get('subjects');\n if (!isEditPage && subjectId && !isNaN(Number(subjectId))) {\n dispatch(getCodifierSubjectDataAction(Number(subjectId)));\n }\n\n if (needFetchSkills) {\n dispatch(fetchCodifierSkillsDataAction());\n }\n }, [dispatch, needFetchSkills, history.location.search, isEditPage]);\n useEffect(() => {\n if (postStatusQuestion === FetchStatus.FETCHED) {\n setIsQuestionCreated(true);\n }\n }, [postStatusQuestion]);\n useEffect(() => {\n if (questionCreateId !== 0 && isQuestionCreated) {\n const markups = getMarkup();\n const question = formValuesState.questions[0]?.question || '';\n const newQuestion = {\n id: questionCreateId,\n text: getQuestionText(question),\n content: getQuestionContent(question),\n html:\n questionType === 'insert-words' && question instanceof EditorState\n ? insertationToTemplate(question)\n : markups[0]?.questionHTML,\n };\n if (\n isSearchPage &&\n !createdQuestions.find((value) => value.questions.find((question) => question.id === questionCreateId))\n ) {\n dispatch(\n saveCreateQuestionsStore(\n {\n questionNum: Number(num),\n questions: [newQuestion],\n },\n 'create',\n ),\n );\n }\n\n // Обновить кодификатор после создания вопросов\n dispatch(resetFetchStatuses());\n\n if (isFromMaterials) {\n dispatch(addNewQuestionForExerciseMaterialAction(questionCreateId));\n }\n }\n\n return () => {\n if (postStatusQuestion === FetchStatus.FETCHED) {\n dispatch(resetPostQuestion());\n }\n };\n }, [\n createdQuestions,\n dispatch,\n formValuesState.questions,\n getMarkup,\n history,\n isFillTrainer,\n isFromMaterials,\n isQuestionCreated,\n isSearchPage,\n postStatusQuestion,\n questionCreateId,\n num,\n questionType,\n ]);\n useEffect(() => {\n if (questionCreated) {\n const question: TResponseQuestion = {\n ...questionCreated,\n topics: selectedTopics.map((id) => {\n return { id };\n }),\n skills: selectedSkills.ids.map((id) => {\n return {\n id,\n title: '',\n };\n }),\n answersType: getQuestionTypeForBackend(questionType as questionType),\n author: {\n id: info?.id,\n firstName: info?.firstName ?? '',\n lastName: info?.lastName ?? '',\n patronymic: info?.patronymic ?? '',\n mainRole: 'teacher',\n },\n };\n dispatch(\n addCreatedQuestionAction({\n question,\n questionNum: +num,\n assignment: assignment ? +assignment : undefined,\n }),\n );\n\n dispatch(resetQuestionCreated());\n CreateQuestionPopup.closeLastCreateQuestionPopup();\n }\n }, [questionCreated]);\n useEffect(() => {\n if (isQuestionCreated && !editOrCreate) {\n dispatch(resetPostQuestion());\n }\n }, [dispatch, editOrCreate, history, isQuestionCreated]);\n\n return (\n \n
\n
\n
\n \n
\n
\n
\n {!showForm && }\n {showForm && (\n \n onSubmit={handleSubmitForm}\n mutators={ARRAY_MUTATORS}\n initialValues={isEditPage ? initValueEdit : initFormValue}\n subscription={SUBSCRIPTIONS_STAB}\n validateOnBlur\n >\n {({ handleSubmit }) => (\n
\n \n \n

Тип

\n \n \n )}\n \n )}\n
\n
\n
\n {render()}\n
\n \n );\n};\n\nexport default CreateQuestionPopup;\n","import CreateQuestionPopup from './CreateQuestionPopup';\nexport default CreateQuestionPopup;\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { Form } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { cn } from '@bem-react/classname';\nimport { IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { TMaterialType } from 'api/services/materials';\nimport { PageLoader } from 'containers/PageLoader';\nimport arrayMutators from 'final-form-arrays';\nimport { useRole } from 'hooks';\nimport { ExpandedMaterialContent } from 'src-new/containers/MaterialsPool/ExpandedMaterial/ExpandedMaterialContent';\nimport { AppProgressBar, AppText } from 'src-new/ui';\nimport { setMessage } from 'src-new/utils/message';\nimport {\n checkExerciseAnswerAction,\n getExercisesCorrectAnswersAction,\n getMaterialsDataAction,\n} from 'store/actions/material';\nimport { setLearningMaterialViewedAction } from 'store/actions/newSubjects';\nimport { getAssignmentProgressQuestionsAction } from 'store/actions/questionBank';\nimport { resetTempMaterials } from 'store/reducers/materials';\nimport { useAppDispatch, useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { IMaterial } from 'types/materials';\n\nimport { getAutoCheckAnswerData } from 'utils/answerAttempt';\nimport { checkIsExerciseFull, filterMaterials, getExerciseQuestions, normalizeMaterialsData } from 'utils/materials';\n\nimport './MaterialsTab.scss';\n\nconst CnMaterialsTab = cn('materialsTab');\n\nconst isEditorOnText = true;\n\nexport const MaterialsTab: React.FC<{ lessonId: number | undefined; type: TMaterialType }> = ({ lessonId, type }) => {\n const dispatch = useAppDispatch();\n const { isStudent } = useRole();\n\n const { getStatusLessons } = useAppSelector((store) => store.courseLesson);\n\n const {\n materials,\n files,\n exrciseAnswers,\n exercisesWithCorrectAnswers,\n getStatusExercisesCorrectAnswers,\n questions,\n fetchAllDataStatus,\n tempMaterials,\n lastCheckedAnswer,\n } = useAppSelector((store) => store.materials);\n\n const isLoading =\n getStatusExercisesCorrectAnswers === FetchStatus.FETCHING ||\n getStatusLessons === FetchStatus.FETCHING ||\n fetchAllDataStatus === FetchStatus.FETCHING;\n const questionTarget = useRef(null);\n\n const allExercisesIds: number[] = materials\n .map((item) => {\n if (item.typeOfContent === 'exercise' && !isNaN(Number(item.content))) {\n return +item.content;\n }\n return 0;\n })\n .filter((item) => item);\n const filteredMaterials = useMemo(() => filterMaterials(materials, exercisesWithCorrectAnswers), [\n materials,\n exercisesWithCorrectAnswers,\n ]);\n\n const resolvedQuestions: number[] = useMemo(() => {\n if (filteredMaterials?.some(checkIsExerciseFull)) {\n const questions = getExerciseQuestions(filteredMaterials);\n return questions;\n }\n return [];\n }, [filteredMaterials]);\n\n const materialsNormalized = useMemo(() => {\n if (fetchAllDataStatus === FetchStatus.FETCHED) {\n return normalizeMaterialsData({\n materials: filteredMaterials,\n files,\n questions,\n answers: exrciseAnswers,\n });\n }\n return [];\n }, [fetchAllDataStatus, filteredMaterials, files, questions, exrciseAnswers]);\n const isEmpty = !materialsNormalized.length;\n\n const isResolveExercise = (id: number | undefined) => {\n if (id) {\n const lastResolveExerciseId = resolvedQuestions ? resolvedQuestions[resolvedQuestions.length - 1] : 0;\n return lastResolveExerciseId === +id;\n }\n return false;\n };\n const isLastExercise = (id?: number, allExList?: number[]) => {\n if (allExList?.length && id) {\n const lastExercise = allExList[allExList.length - 1];\n\n return lastExercise === id;\n }\n return false;\n };\n\n const handleCheckAnswer = useCallback(\n (questionData: IQuestion, materialId: number, questionId?: number) => {\n const checkData = getAutoCheckAnswerData(questionData);\n setTimeout(() => questionTarget?.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' }), 300);\n\n void dispatch(\n checkExerciseAnswerAction({\n material: materialId,\n data: checkData,\n questionId: questionId,\n }),\n );\n },\n [dispatch],\n );\n\n // Показываем сообщение при выполнении последнего упражнения урока\n useEffect(() => {\n const showTooltip = isLastExercise(lastCheckedAnswer, allExercisesIds);\n if (showTooltip) {\n setMessage({ status: 'success', text: 'Вы выполнили последнее упражнение урока!', duration: 3 });\n }\n }, [lastCheckedAnswer]);\n\n useEffect(() => {\n if (lessonId) {\n let answerPromise: any;\n if (type === 'main') {\n answerPromise = dispatch(getExercisesCorrectAnswersAction(lessonId));\n }\n\n const materialsPromise = dispatch(getMaterialsDataAction({ lessonId: lessonId, materialType: type }));\n return () => {\n materialsPromise.abort();\n answerPromise?.abort();\n };\n }\n }, [dispatch, lessonId, type]);\n\n useEffect(() => {\n if (tempMaterials && lessonId) {\n void dispatch(getMaterialsDataAction({ lessonId: lessonId, materialType: type }));\n dispatch(resetTempMaterials());\n }\n }, [dispatch, lessonId, tempMaterials, type]);\n\n useEffect(() => {\n if (fetchAllDataStatus === FetchStatus.FETCHED && resolvedQuestions.length) {\n void dispatch(getAssignmentProgressQuestionsAction(resolvedQuestions));\n questionTarget?.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [dispatch, fetchAllDataStatus, resolvedQuestions]);\n\n useEffect(() => {\n const exercisesList = filteredMaterials.filter(({ typeOfContent }) => typeOfContent === 'exercise');\n\n if (!!exercisesList.length && isStudent && type === 'main') {\n const exercisesIds = exercisesList.map(({ id }) => id);\n void dispatch(setLearningMaterialViewedAction({ exercises: exercisesIds }));\n }\n }, [filteredMaterials]);\n\n //Разбивает контент на блоки по кол-ву упражнений в материалах\n const normalizeMaterialContent = (\n fields: IMaterial[],\n ): {\n title: string;\n description: React.ReactNode;\n icon?: React.ReactNode;\n }[] => {\n const contentBlocks: { title: string; description: React.ReactNode; icon?: React.ReactNode }[] = [];\n\n //список индексов всех упражнений урока\n const allExercisesIndexes = materials\n .map((item, index) => {\n if (item.typeOfContent === 'exercise') {\n return index + 1;\n }\n })\n .filter((item) => item);\n\n //список индексов открытых упражнений\n const availableExercisesIds = fields\n .map((item, index) => {\n if (item.type === 'exercise') {\n return index + 1;\n }\n })\n .filter((item) => item);\n\n //кол-во блоков данного урока\n const allBlocksCount =\n materials[0]?.typeOfContent !== 'exercise' &&\n materials?.[materials.length - 1]?.typeOfContent !== 'exercise'\n ? allExercisesIndexes.length + 1\n : allExercisesIndexes.length;\n\n //интервалы, на которые нужно разбить доступный для отображения контент\n const blockIntervals = availableExercisesIds.map((id, index) => {\n const startIndex = index === 0 ? 0 : availableExercisesIds[index - 1];\n\n return {\n startIndex: startIndex,\n endIndex: id,\n };\n });\n\n //если весь контент уже доступен и разбит на количество блоков, большее, чем кол-во упражнений,\n // то добавляем оставшийся контент\n if (fields.length === materials.length && allBlocksCount > allExercisesIndexes.length) {\n blockIntervals.push({\n startIndex: availableExercisesIds[availableExercisesIds.length - 1],\n endIndex: materials.length,\n });\n }\n //количество упражнений, еще не отображенных на странице\n const unAvailableBlocksCount = allBlocksCount - blockIntervals.length;\n\n //если контент разбивается на более, чем один блок, то отображаем шаги\n if (allBlocksCount > 1) {\n blockIntervals?.forEach((item, index) => {\n const newArray: IMaterial[] = fields.slice(item.startIndex, item.endIndex);\n\n contentBlocks.push({\n title: '',\n icon: (\n
\n \n
\n ),\n description: (\n <>\n {newArray?.map((material, newArrayIndex) => {\n const url = typeof material.url === 'string' ? material.url : undefined;\n\n const questionId = material?.exerciseData?.questionId;\n const materialSubBlockIndex = (item.startIndex || 0) + newArrayIndex;\n\n return (\n \n \n handleCheckAnswer(questionData, materialId, questionId)\n }\n />\n \n );\n })}\n \n ),\n });\n });\n if (unAvailableBlocksCount > 1) {\n //если не раскрыто более одного блока, то показываем номер следующего и последнего\n contentBlocks.push({\n title: ``,\n icon: (\n
\n \n
\n ),\n description: (\n
\n \n
\n ),\n });\n contentBlocks.push({\n title: ``,\n icon: (\n
\n \n
\n ),\n description: <>,\n });\n } else if (unAvailableBlocksCount === 1) {\n //если не раскрыт один блок, то показываем номер последнего\n contentBlocks.push({\n title: ``,\n description: (\n
\n \n
\n ),\n icon: (\n
\n \n
\n ),\n });\n }\n }\n\n return contentBlocks;\n };\n\n if (isLoading) {\n return ;\n }\n if (isEmpty && !isLoading) {\n return (\n
\n

Материалы еще не созданы

\n
\n );\n }\n\n return (\n
\n {!!materialsNormalized.length && (\n
\n undefined}\n initialValues={{\n materials: materialsNormalized,\n }}\n mutators={{ ...arrayMutators }}\n >\n {({ handleSubmit }) => (\n
\n \n {({ fields }: FieldArrayRenderProps) => {\n const materialContent = normalizeMaterialContent(fields.value);\n\n if (!materialContent.length) {\n return (\n <>\n {fields?.map((name, index) => {\n const url =\n typeof fields.value[index].url === 'string'\n ? (fields.value[index].url as string)\n : undefined;\n return (\n \n {fields.value[index] && (\n
\n \n handleCheckAnswer(\n questionData,\n materialId,\n fields.value[index]?.exerciseData\n ?.questionId,\n )\n }\n />\n
\n )}\n
\n );\n })}\n \n );\n } else {\n return (\n \n );\n }\n }}\n
\n
\n )}\n \n
\n )}\n
\n );\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { RoomCard } from '@lms-elements/atomic';\nimport { checkIsBeetween, decreaseDate } from '@lms-elements/utils';\nimport { emptyRecordPreview } from 'assets';\nimport { PageLoader } from 'containers/PageLoader';\nimport { useRole } from 'hooks';\nimport { FilesContainer } from 'src-new/components/new-subjects';\nimport { AppSwitch } from 'src-new/ui';\nimport { getDateWithTime } from 'src-new/utils';\nimport { patchMissedLessonAction } from 'store/actions/lessonSchedule';\nimport { getMeetingRecordingsAction, postMeetingRecordingAction } from 'store/actions/meeting';\nimport { joinRoomAction, rejoinRoomAction } from 'store/actions/proctoring';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { EventTypes } from 'types/events';\n\nimport { getFiles } from './utils';\n\nimport './OnlineLessonTab.scss';\n\nconst CnOnlineLessonTab = cn('onlineLessonTab');\n\ninterface IOnlineLessonTabProps {\n lessonId: number;\n lessonScheduleId?: number;\n courseGroupId?: number;\n isOvered?: boolean;\n isStarted?: boolean;\n isTest?: boolean;\n}\n\nexport const OnlineLessonTab: React.FC = ({\n lessonId,\n lessonScheduleId,\n courseGroupId,\n isOvered,\n isStarted,\n isTest,\n}) => {\n const dispatch = useDispatch();\n const { isStudent } = useRole();\n const history = useHistory();\n\n const { fetchMeetingStatus, meeting, meetingFiles, fetchMeetingFilesStatus } = useAppSelector(\n (store) => store.meeting,\n );\n const { eventRooms, getEventRoomsStatus, changeEventRoomStatus } = useAppSelector((store) => store.proctoring);\n\n const { info } = useAppSelector((store) => store.user);\n\n const currentEventRoom = useMemo(() => eventRooms.find(({ isJoined }) => isJoined), [eventRooms]);\n\n const isLoading =\n fetchMeetingStatus === FetchStatus.FETCHING ||\n fetchMeetingFilesStatus === FetchStatus.FETCHING ||\n changeEventRoomStatus === FetchStatus.FETCHING ||\n getEventRoomsStatus === FetchStatus.FETCHING;\n\n useEffect(() => {\n if (isOvered && lessonScheduleId && !meeting[lessonScheduleId]) {\n dispatch(getMeetingRecordingsAction({ lessonSchedule: lessonScheduleId }));\n }\n }, [isOvered, dispatch, lessonScheduleId, meeting]);\n\n const selectedMeeting = useMemo(() => {\n if (lessonScheduleId) {\n return meeting[lessonScheduleId];\n }\n }, [lessonScheduleId, meeting]);\n\n const handleVideoCheckboxChange = useCallback(\n (isChecked: boolean, id: number) => {\n if (lessonScheduleId && id) {\n dispatch(\n postMeetingRecordingAction({\n lessonSchedule: lessonScheduleId,\n id: id,\n isPublished: isChecked,\n }),\n );\n }\n },\n [lessonScheduleId, dispatch],\n );\n\n const files = useMemo(() => getFiles(meetingFiles), [meetingFiles]);\n\n const records = useMemo(() => {\n if (selectedMeeting) {\n return selectedMeeting.recordings;\n }\n }, [selectedMeeting]);\n\n const isEmpty = !records?.length && !files?.length && !eventRooms?.length && !lessonScheduleId;\n\n const handleJoinClick = useCallback(\n (id: number) => {\n dispatch(joinRoomAction({ newId: id, lesson: lessonId, studentId: info?.id, event_type: EventTypes.TEST }));\n },\n [dispatch, info?.id, lessonId],\n );\n\n const handleRecordClick = useCallback(\n (id: number) => () => {\n if (isStudent) dispatch(patchMissedLessonAction({ id: id, recordViewed: true }));\n },\n [dispatch, isStudent],\n );\n\n const handleRejoinClick = useCallback(\n (id: number) => {\n const leaveId = eventRooms.find((el) => el.students?.some((el) => el.id === info?.id))?.id;\n if (leaveId !== undefined) {\n dispatch(\n rejoinRoomAction({\n leaveId: leaveId,\n newId: id,\n studentId: info?.id,\n lesson: lessonId,\n event_type: EventTypes.TEST,\n }),\n );\n }\n },\n [dispatch, eventRooms, info?.id, lessonId],\n );\n\n const handleRoomClick = useCallback(\n (id: number) => {\n history.push(`/proctoring/event-room/${id}`);\n },\n [history],\n );\n\n const needHideButton =\n !isStudent ||\n checkIsBeetween(\n decreaseDate({ date: currentEventRoom?.datetimeStart ?? '', amount: 10, unit: 'm' }),\n currentEventRoom?.datetimeEnd ?? '',\n );\n\n if (isLoading) {\n return ;\n }\n if (isStudent && isEmpty && !isLoading) {\n return (\n
\n {!isStarted ? (\n

\n {isTest && !lessonScheduleId ? 'Комнаты еще не созданы!' : 'Онлайн-занятие будет позже!'}\n

\n ) : (\n

Запись онлайн занятия будет позже!

\n )}\n
\n );\n }\n\n return (\n
\n {isTest && eventRooms.length !== 0 && (\n <>\n
\n
\n {eventRooms.map((el) => (\n \n ))}\n
\n
\n \n )}\n {isOvered && !!records?.length && fetchMeetingStatus === FetchStatus.FETCHED && (\n
\n {records?.map(({ id, link, duration, preview, isPublished, datetimeStart }, index) => {\n return (\n
\n
\n \n {!isStudent && (\n
\n \n handleVideoCheckboxChange(state, id)}\n />\n
\n )}\n
\n \n \n
\n \n
\n
\n \n
\n \n
\n );\n })}\n
\n )}\n \n
\n );\n};\n","import { MeetingFileData } from 'api/services/meeting';\nimport { IFile } from 'types/file';\n\ntype OnlineLessonTabFile = IFile & { isTemplate?: boolean; fileName: string };\n\nexport const getFiles = (meetingFiles?: MeetingFileData[]): OnlineLessonTabFile[] => {\n return (\n meetingFiles?.map((file) => ({\n id: file.id,\n title: file.title ?? '',\n fileExtension: file.title ? file.title?.split('.')[file.title?.split('.').length - 1] : '',\n fileUrl: file.fileUrl,\n isAvailableToStudents: file.isAvailableToStudents,\n shouldUseOnConference: file.useOnMeeting,\n fileName: file.title ?? '',\n isTemplate: file.lesson !== null,\n })) ?? []\n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { useWindowResize } from '@lms-elements/hooks';\nimport { userAvatar } from 'assets';\nimport { PageLoader } from 'containers/PageLoader';\nimport { ProgressBarAdvanced, ProgressChart } from 'src-new/components/new-subjects';\nimport { getStudentsProgressListAction } from 'store/actions/newSubjects';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport { TProgressTab } from './ProgressTab.types';\n\nimport './style.scss';\n\nexport const ProgressTab: React.FC = (props) => {\n const dispatch = useDispatch();\n const { isTablet } = useWindowResize();\n\n const { lessonId, courseId } = props;\n const { studentsProgressList, getStudentsProgressListStatus } = useAppSelector((store) => store.newSubject);\n\n const isLoading = getStudentsProgressListStatus === FetchStatus.FETCHING;\n\n useEffect(() => {\n dispatch(\n getStudentsProgressListAction({\n lesson: lessonId,\n courseGroup: courseId,\n }),\n );\n }, [lessonId, courseId]);\n\n if (isLoading) {\n return ;\n }\n return (\n
\n {studentsProgressList.length ? (\n
\n \n \n {!isTablet && }\n {studentsProgressList?.map((student, index) => {\n const { photoUrl, firstName, lastName, exercisesProgress, trainingsProgress } = student;\n return (\n <>\n
\n
\n {'photo'}\n
\n \n
\n
\n \n
\n {!isTablet && (\n
\n \n
\n )}\n \n );\n })}\n
\n ) : (\n \n )}\n
\n );\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { getNoun } from '@frontend-modules/frontend-utils';\nimport { AppButton, AppText } from '@frontend-modules/ui-kit';\nimport { PageLoader } from 'containers/PageLoader';\nimport { StudentTask } from 'containers/StudentTask';\nimport { useRole } from 'hooks';\nimport { useLoader } from 'hooks/useLoader';\nimport moment from 'moment';\nimport { getQueryAcademicPerfomanceParams } from 'pages/LessonCard/utils';\nimport { useLessonsPopup } from 'src-new/hooks';\nimport { isTimeExpired } from 'src-new/utils';\nimport { createAttemptAction, updateAttemptDraft } from 'store/actions/answerAttempt';\nimport { fetchStudentHomeworksAction } from 'store/actions/studentTasks';\nimport { resetAnswerAttemptsStatus } from 'store/reducers/answerAttempts';\nimport { resetStudentTask, resetStudentTaskStatus } from 'store/reducers/studentTasks';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\n\nimport { StatusCard } from 'components/StatusCard';\nimport { Timer } from 'components/Timer';\nimport { createTabs } from 'utils/studentsTasks';\n\nimport { IStudentTaskTabProps } from './StudentTaskTab.types';\n\nimport './StudentTaskTab.scss';\n\nconst CnStudentTaskTab = cn('studentTaskTab');\n\nexport const StudentTaskTab: React.FC = ({\n subjectId,\n lessonId,\n courseGroupId,\n activeTaskId,\n courseId,\n}) => {\n const dispatch = useDispatch();\n const history = useHistory();\n const LessonPopup = useLessonsPopup();\n\n const fetchStatusQuestions = useAppSelector((state) => state.questions.fetchStatusQuestions);\n const info = useAppSelector((state) => state.user.info);\n\n const { isStudent } = useRole();\n\n const {\n lastAttempt,\n attemptsQuantity,\n createAttemptStatus,\n fetchStatus: fetchAnswerAttemptsStatus,\n } = useAppSelector((state) => state.answerAttempts);\n const attempts = useAppSelector((state) => state.answerAttempts.data);\n const { studentTasks } = useAppSelector((state) => state.studentTasks);\n\n useEffect(() => {\n dispatch(fetchStudentHomeworksAction({ lessonId: lessonId }));\n }, [dispatch, lessonId]);\n\n useLoader([fetchStatusQuestions, fetchAnswerAttemptsStatus]);\n\n const [selectedTab, setSelectedTab] = useState(Number(activeTaskId ?? studentTasks[0]?.id));\n const [calculatedTimeToComplete, setCalculatedTimeToComplete] = useState(0);\n\n const tabs = useMemo(() => createTabs(studentTasks, attempts), [studentTasks, attempts, selectedTab]);\n const selectedTask = useMemo(() => studentTasks.find((task) => Number(task.id) === selectedTab), [\n studentTasks,\n selectedTab,\n ]);\n const [showConfirmBlock, setShowConfirmBlock] = useState(false);\n const [isTimeLeft, setIsTimeLeft] = useState(false);\n\n const hasAttempts = useMemo(() => {\n if (fetchAnswerAttemptsStatus === FetchStatus.FETCHED && !!lastAttempt && attemptsQuantity !== undefined) {\n return lastAttempt < attemptsQuantity;\n }\n\n return false;\n }, [attemptsQuantity, fetchAnswerAttemptsStatus, lastAttempt]);\n\n const isEmpty = !tabs.length;\n\n useEffect(() => {\n const isAssigned =\n selectedTask?.status !== AssignmentProgressStatus.COMPLETED &&\n selectedTask?.status !== AssignmentProgressStatus.ON_CHECK;\n\n setShowConfirmBlock(\n !!selectedTask &&\n !!selectedTask?.timeToComplete &&\n !!isStudent &&\n isAssigned &&\n !selectedTask?.selectedQuestions.length,\n );\n }, [selectedTask?.id, selectedTask?.timeToComplete, isStudent]);\n\n const deadline = useMemo(() => {\n let deadline;\n // Хард дедлайн для сдачи задания (вычитаем 3 секунды, чтобы не выйти за рамки дедлайна)\n const deadlineForComplete = selectedTask?.hardDeadline\n ? moment(selectedTask?.hardDeadline).subtract(3, 'seconds')\n : undefined;\n\n if (selectedTask?.timeToComplete) {\n deadline = deadlineForComplete?.format();\n } else {\n deadline = selectedTask?.deadlineForComplete;\n }\n\n return deadline;\n }, [selectedTask, calculatedTimeToComplete]);\n\n const hasStartTimeLimitedTask =\n attempts?.length &&\n (!attempts[attempts.length - 1].answers.length || !attempts[attempts.length - 1].mark) &&\n deadline &&\n !isTimeExpired(deadline);\n const showTimer = selectedTask?.timeToComplete\n ? hasStartTimeLimitedTask\n : !hasAttempts &&\n selectedTask?.status !== AssignmentProgressStatus.COMPLETED &&\n selectedTask?.status !== AssignmentProgressStatus.ON_CHECK;\n const handleTabSelect = useCallback(\n (tabId: number) => {\n setSelectedTab(tabId);\n setIsTimeLeft(false);\n if (courseGroupId) {\n LessonPopup.replaceLastLessonPopup({\n subjectId: subjectId ?? 0,\n courseGroupId: courseGroupId,\n courseId,\n lessonId: lessonId,\n tab: 'tasks',\n taskId: tabId,\n });\n }\n },\n [lessonId, courseGroupId],\n );\n\n const handleTimeIsLeft = useCallback(() => {\n dispatch(updateAttemptDraft());\n setIsTimeLeft(true);\n }, [dispatch, selectedTask]);\n const handleMarksClick = useCallback(() => {\n history.push(\n `/performance${getQueryAcademicPerfomanceParams({\n courseId: studentTasks[0].course?.id,\n subjectId: studentTasks[0].subject?.id,\n groupId: studentTasks[0].courseGroup?.id,\n })}`,\n );\n LessonPopup.closeLastLessonPopup();\n }, [history, studentTasks]);\n\n useEffect(() => {\n if (createAttemptStatus === FetchStatus.FETCHED) {\n dispatch(resetStudentTaskStatus());\n dispatch(resetStudentTask());\n dispatch(resetAnswerAttemptsStatus());\n }\n }, [createAttemptStatus]);\n const approveStartTask = () => {\n if (selectedTask) {\n dispatch(createAttemptAction(+selectedTask?.id));\n }\n };\n\n useEffect(() => {\n if (createAttemptStatus === FetchStatus.FETCHED) {\n setShowConfirmBlock(false);\n }\n }, [createAttemptStatus]);\n\n useEffect(() => {\n if (selectedTask && !!selectedTask?.timeToComplete && selectedTask?.hardDeadline) {\n const deadlineForComplete = moment(selectedTask.hardDeadline).subtract(3, 'seconds');\n const secondsBeforeDeadline = deadlineForComplete?.diff(moment.now(), 'seconds');\n const secondsTimeToComplete = selectedTask.timeToComplete * 60;\n\n const minRes: number =\n secondsBeforeDeadline < secondsTimeToComplete ? secondsBeforeDeadline : secondsTimeToComplete;\n setCalculatedTimeToComplete(minRes);\n }\n }, [selectedTask?.hardDeadline, createAttemptStatus]);\n\n const getMinutesNoun = (time: number) => getNoun(time, 'минута', 'минуты', 'минут');\n\n const isTimerStarts = !!selectedTask && !showConfirmBlock && showTimer && !!deadline;\n const confirmBlockText = useMemo(() => {\n const minutesCalculatedTimeToComplete = Math.round(calculatedTimeToComplete / 60);\n const timeToCloseText =\n calculatedTimeToComplete >= 60\n ? `примерно ${minutesCalculatedTimeToComplete} ${getMinutesNoun(minutesCalculatedTimeToComplete)}`\n : `менее 1 минуты`;\n\n return !selectedTask\n ? ''\n : selectedTask?.timeToComplete <= minutesCalculatedTimeToComplete\n ? `На выполнение задания дается ${selectedTask?.timeToComplete} ${getMinutesNoun(\n selectedTask?.timeToComplete,\n )}.`\n : `На выполнение задания дается ${selectedTask?.timeToComplete} ${getMinutesNoun(\n selectedTask?.timeToComplete,\n )}, но до закрытия задания осталось ${timeToCloseText}`;\n }, [selectedTask, calculatedTimeToComplete]);\n\n if (isEmpty) {\n return (\n
\n

Задания ещё не выданы

\n
\n );\n }\n return (\n
\n
\n {tabs.map((tab) => {\n const isTaskInProgress =\n !showConfirmBlock && tab.id === selectedTab && !isTimeExpired(deadline ? deadline : '');\n const showLabel = tab?.timeToComplete && isTaskInProgress ? false : undefined;\n\n return (\n
\n \n
\n );\n })}\n
\n {isTimerStarts ? (\n \n ) : null}\n\n {!!selectedTab && }\n {showConfirmBlock && !!selectedTask && (\n
\n
\n \n \n \n
\n
\n \n
\n
\n )}\n {!showConfirmBlock && !!selectedTask && (\n \n )}\n
\n );\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppButton } from '@frontend-modules/ui-kit';\nimport { getAllAssignmentPeriodsAction } from '@fsd-entities/assignment/model';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { AssignedHomeworkTable } from 'containers/AssignedHomeworkTable';\nimport { AssigningHomeworkForm } from 'containers/AssigningHomeworkForm';\nimport { PageLoader } from 'containers/PageLoader';\nimport { TaskBlock } from 'containers/TaskBlock';\nimport { useRole } from 'hooks';\nimport { TLessonSchedules } from 'src-new/components/new-subjects/NewSubjects.types';\nimport { useLessonsPopup, useStudentTasksViewPopup } from 'src-new/hooks';\nimport {\n addTaskToValues,\n getAllTasks,\n getAssignedTasks,\n getAssignmentProgressData,\n getAssignmentTask,\n getHomeworkTableInitValues,\n getSubmitData,\n getTasksDate,\n isValidInterval,\n removeTaskFromValues,\n sortByFullName,\n} from 'src-new/utils';\nimport { deleteAssignmentAction, getAssignmentsByLessonAction } from 'store/actions/assignment';\nimport {\n getCourseGroupDetailsWithStudentsAction,\n getCourseGroupExpelledStudentsAction,\n} from 'store/actions/courseGroup';\nimport {\n deleteStudentHomeworksAction,\n getStudentsTasksAction,\n postDeferredAssignmentAction,\n} from 'store/actions/homework';\nimport { resetAssignmentState } from 'store/reducers/assignment';\nimport { resetLessonHomeworksState } from 'store/reducers/homework';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { Task, TPostDeferredAssignmentResponse } from 'types/homework';\n\nimport { HomeworkStatus } from 'components/HomeworkStatus';\nimport { HomeworkTableFormValues } from 'components/HomeworkTable';\nimport { ITaskDate } from 'components/Task/Task';\nimport { getHomeworksStatusFromAssignmentProgress } from 'utils/homeworkStatus';\n\nimport './style.scss';\n\nconst CnTasksTab = cn('tasksTab');\n\ninterface TasksTabProps {\n lesson: number;\n subject?: number;\n courseId?: number;\n conferenceId?: number;\n isOvered?: boolean;\n showForm?: boolean;\n showRepeatTaskForm?: boolean;\n courseGroupId?: number;\n onStudentCellClick?: (studentId: number) => void;\n lessonSchedule?: TLessonSchedules;\n}\n\nexport const TeacherTaskTab: React.FC = ({\n lesson,\n subject,\n conferenceId,\n showForm,\n showRepeatTaskForm,\n courseGroupId,\n onStudentCellClick,\n lessonSchedule,\n courseId,\n}) => {\n const history = useHistory();\n const StudentTasksViewPopup = useStudentTasksViewPopup();\n const LessonPopup = useLessonsPopup();\n const dispatch = useDispatch();\n const { isMethodist, isPrincipal, isSupport } = useRole();\n const [isDeferredAssignmentChanged, setIsDeferredAssignmentChanged] = useState(false);\n\n const {\n lessonAssignment,\n getLessonAssignmentStatus,\n fetchHomeworkStatus,\n fetchDeferredAssignmentStatus,\n fetchDeferredAssignmentChangeStatus,\n lessonHomeworks,\n deferredAssignments,\n changeAssignmentMarksStatus,\n createLessonTaskStatus,\n updateLessonTaskStatus,\n courseGroupsMap,\n courseGroupExpelledStudents,\n fetchGroupsExpelledStudentsStatus,\n fetchGroupDetailsStatus,\n assigningHomeworkForm,\n taskForm,\n gettingPeriodsDataStatus,\n } = useAppSelector((store) => ({\n lessonAssignment: store.assignemnt.lessonAssignment,\n getLessonAssignmentStatus: store.assignemnt.getLessonAssignmentStatus,\n fetchHomeworkStatus: store.homework.fetchStatus,\n fetchDeferredAssignmentStatus: store.homework.fetchDeferredAssignmentStatus,\n fetchDeferredAssignmentChangeStatus: store.homework.fetchDeferredAssignmentChangeStatus,\n lessonHomeworks: store.homework.lessonHomeworks,\n deferredAssignments: store.homework.deferredAssignments,\n changeAssignmentMarksStatus: store.newSubject.changeAssignmentMarksStatus,\n createLessonTaskStatus: store.lessonTask.createLessonTaskStatus,\n updateLessonTaskStatus: store.lessonTask.updateLessonTaskStatus,\n courseGroupsMap: store.courseGroup.courseGroupsMap,\n courseGroupExpelledStudents: store.courseGroup.courseGroupExpelledStudents,\n fetchGroupsExpelledStudentsStatus: store.courseGroup.fetchGroupsExpelledStudentsStatus,\n fetchGroupDetailsStatus: store.courseGroup.fetchGroupDetailsStatus,\n assigningHomeworkForm: store.formError.assigningHomeworkForm,\n taskForm: store.formError.taskForm,\n gettingPeriodsDataStatus: store.newAssignment.gettingPeriodsDataStatus,\n }));\n\n const lessonScheduleId = lessonSchedule?.id;\n const isDeferredAssignmentUpdated =\n isDeferredAssignmentChanged && fetchDeferredAssignmentStatus === FetchStatus.FETCHED;\n\n const canDeleteFileTemplate = useMemo(() => isPrincipal || isSupport || isMethodist, [\n isPrincipal,\n isSupport,\n isMethodist,\n ]);\n\n const isSaving =\n fetchDeferredAssignmentStatus === FetchStatus.FETCHING || fetchHomeworkStatus === FetchStatus.FETCHING;\n\n const selectedCourseGroup = useMemo(() => {\n if (courseGroupId) {\n return courseGroupsMap[courseGroupId];\n }\n }, [courseGroupsMap, courseGroupId]);\n\n const students = useMemo(\n () =>\n fetchGroupDetailsStatus === FetchStatus.FETCHED\n ? (selectedCourseGroup?.students ?? [])\n .concat(courseGroupExpelledStudents?.students ?? [])\n .slice()\n .sort(sortByFullName)\n : [],\n [courseGroupExpelledStudents?.students, fetchGroupDetailsStatus, selectedCourseGroup?.students],\n );\n\n useEffect(() => {\n if (\n lesson &&\n courseGroupId &&\n fetchGroupsExpelledStudentsStatus === FetchStatus.INITIAL &&\n fetchGroupDetailsStatus === FetchStatus.FETCHED\n ) {\n dispatch(getCourseGroupExpelledStudentsAction({ lessonId: lesson, courseGroupId: courseGroupId }));\n }\n }, [\n courseGroupId,\n dispatch,\n fetchGroupDetailsStatus,\n fetchGroupsExpelledStudentsStatus,\n getLessonAssignmentStatus,\n lesson,\n ]);\n\n useEffect(() => {\n if (\n (getLessonAssignmentStatus === FetchStatus.INITIAL && courseGroupId && lesson) ||\n createLessonTaskStatus === FetchStatus.FETCHED ||\n updateLessonTaskStatus === FetchStatus.FETCHED\n ) {\n dispatch(getAssignmentsByLessonAction({ lesson, courseGroup: courseGroupId }));\n }\n }, [courseGroupId, dispatch, getLessonAssignmentStatus, lesson, createLessonTaskStatus, updateLessonTaskStatus]);\n\n useEffect(() => {\n if (\n lesson &&\n courseGroupId &&\n students.length > 0 &&\n fetchGroupsExpelledStudentsStatus === FetchStatus.FETCHED &&\n (changeAssignmentMarksStatus !== FetchStatus.FETCHING ||\n changeAssignmentMarksStatus === FetchStatus.FETCHED ||\n isDeferredAssignmentUpdated)\n ) {\n if (isDeferredAssignmentUpdated) {\n dispatch(getCourseGroupExpelledStudentsAction({ lessonId: lesson, courseGroupId: courseGroupId }));\n dispatch(getCourseGroupDetailsWithStudentsAction(courseGroupId));\n } else {\n dispatch(\n getStudentsTasksAction({ lessons: [lesson], students: students.map((student) => student.id) }),\n );\n }\n setIsDeferredAssignmentChanged(false);\n }\n }, [\n courseGroupId,\n dispatch,\n fetchGroupsExpelledStudentsStatus,\n lesson,\n students,\n changeAssignmentMarksStatus,\n isDeferredAssignmentUpdated,\n ]);\n\n useEffect(() => {\n if (courseGroupId && fetchDeferredAssignmentStatus === FetchStatus.INITIAL) {\n dispatch(\n postDeferredAssignmentAction({\n filters: {\n courseGroup: courseGroupId,\n lesson: lesson,\n },\n }),\n );\n }\n }, [courseGroupId, fetchDeferredAssignmentStatus]);\n useEffect(() => {\n return () => {\n dispatch(resetAssignmentState());\n dispatch(resetLessonHomeworksState());\n };\n }, [dispatch]);\n\n const isLoading =\n getLessonAssignmentStatus === FetchStatus.FETCHING ||\n fetchHomeworkStatus === FetchStatus.FETCHING ||\n fetchGroupsExpelledStudentsStatus === FetchStatus.FETCHING ||\n fetchGroupDetailsStatus === FetchStatus.FETCHING;\n\n const [showAssigningForm, setShowAssigningForm] = useState(\n showForm || new URLSearchParams(history.location.search).get('show_form') === 'true',\n );\n\n const [repeatTaskForm, setRepeatTaskForm] = useState(\n showRepeatTaskForm || new URLSearchParams(history.location.search).get('show_repeat_task_form') === 'true',\n );\n\n const onCancelButtonClick = () => {\n setRepeatTaskForm(false);\n setShowAssigningForm(false);\n };\n\n const handleEditTaskClick = useCallback(() => {\n setShowAssigningForm(true);\n }, []);\n\n const handleRepeatTaskClick = useCallback(() => {\n setRepeatTaskForm(true);\n }, []);\n\n const assignmentTasks = useMemo(\n () => getAssignmentTask(lessonAssignment, canDeleteFileTemplate, lessonHomeworks, deferredAssignments),\n [lessonAssignment, canDeleteFileTemplate, lessonHomeworks, deferredAssignments],\n );\n\n const deferredAssignmentTasks: (Task & TPostDeferredAssignmentResponse)[] = useMemo(() => {\n return deferredAssignments\n .map((assignment: TPostDeferredAssignmentResponse) => {\n const task = assignmentTasks.find((homework) => {\n return homework.id === assignment.assignment;\n });\n\n if (task) {\n return {\n ...assignment,\n isPosted: true,\n title: task?.title,\n type: task?.type,\n isTemplate: task?.isTemplate,\n };\n }\n })\n .filter(Boolean);\n }, [deferredAssignments, assignmentTasks]);\n const assignmentProgress = useMemo(() => getAssignmentProgressData(lessonHomeworks, deferredAssignmentTasks), [\n lessonHomeworks,\n deferredAssignmentTasks,\n ]);\n const homeworkStatus = useMemo(() => getHomeworksStatusFromAssignmentProgress(lessonHomeworks), [lessonHomeworks]);\n\n const [newTasks, setNewTasks] = useState([]);\n const [formValues, setFormValues] = useState();\n\n useEffect(() => {\n const ids = assignmentTasks?.map(({ id }) => id);\n if (courseGroupId && ids.length && gettingPeriodsDataStatus !== FetchStatus.FETCHING) {\n dispatch(getAllAssignmentPeriodsAction({ courseGroup: courseGroupId, assignments: ids }));\n }\n }, [assignmentTasks]);\n useEffect(() => {\n if ((assignmentProgress.length || assignmentTasks.length) && students.length) {\n const tasks = getAssignedTasks(assignmentTasks);\n const allTask = getAllTasks(tasks, assignmentProgress);\n const formValues = getHomeworkTableInitValues(\n students,\n tasks,\n assignmentProgress,\n repeatTaskForm,\n courseGroupExpelledStudents?.students,\n );\n\n setFormValues(formValues);\n // Для повторной выдачи сбрасываем даты\n setNewTasks(\n repeatTaskForm\n ? allTask.map((task) => {\n return {\n ...task,\n assignedDate: '',\n deadlineForComplete: '',\n };\n })\n : allTask,\n );\n }\n }, [assignmentTasks, students, assignmentProgress, repeatTaskForm, showAssigningForm]);\n\n const handleTaskSelect = useCallback(\n (taskId: number, isSelected: boolean) => {\n const newTask = assignmentTasks.find((task) => task.id === taskId);\n const alreadyAdded = newTasks.find((task) => task.id === taskId);\n setNewTasks((prev) => {\n if (isSelected) {\n return prev.filter((task) => task.id !== taskId);\n }\n\n if (newTask !== undefined && !alreadyAdded) {\n return [...prev, { ...newTask, assignedDate: '', deadlineForComplete: '' }];\n }\n\n return prev;\n });\n\n setFormValues((values) => {\n if (isSelected && values) {\n return removeTaskFromValues(values, taskId);\n }\n\n if (newTask !== undefined && values && !alreadyAdded) {\n const newValue = addTaskToValues(values, newTask, assignmentProgress, repeatTaskForm);\n return newValue;\n }\n\n return {\n ...values,\n selectAll: values?.selectAll.map((item) => {\n return { ...item, disabled: !!repeatTaskForm };\n }),\n };\n });\n },\n [assignmentProgress, assignmentTasks, repeatTaskForm, newTasks],\n );\n const handleAssigningFormChange = useCallback((values: HomeworkTableFormValues, pristine: boolean) => {\n setFormValues((currentValues) => {\n if (!pristine) {\n return values;\n }\n\n return currentValues;\n });\n }, []);\n const handleTeacherSelected = useCallback((taskId: number, id: number) => {\n setNewTasks((prev) => {\n const newTasksState = prev.map((task) => {\n if (task.id === taskId) {\n return {\n ...task,\n teacher: id,\n };\n }\n\n return task;\n });\n\n return newTasksState;\n });\n }, []);\n const handleDateSelected = useCallback((taskId: number, dates: ITaskDate) => {\n const lessonStartDate = lessonSchedule?.datetimeStart\n ? { datetimeStart: lessonSchedule?.datetimeStart }\n : undefined;\n\n setNewTasks((prev) => {\n const newTasksState = prev.map((task) => {\n if (task.id === taskId) {\n const {\n assignedDate,\n deadlineForComplete,\n assignedType,\n deadlineType,\n assignedDelay,\n deadlineDelay,\n timeToComplete,\n } = getTasksDate(dates, lessonStartDate);\n\n return {\n ...task,\n assignedDate,\n deadlineForComplete,\n assignedType,\n deadlineType,\n assignedDelay,\n deadlineDelay,\n timeToComplete,\n };\n }\n\n return task;\n });\n\n return newTasksState;\n });\n }, []);\n const handleFormButtonClick = useCallback(() => {\n if (formValues && courseGroupId) {\n const {\n createdDeferredAssignments,\n updatedDeferredAssignments,\n deletedDeferredAssignmentsIds,\n deletedAssignmentIds,\n } = getSubmitData({\n tasks: newTasks,\n values: formValues,\n assignmentProgress: lessonHomeworks,\n courseGroup: courseGroupId,\n repeatTaskForm,\n deferredAssignments,\n });\n\n const isSomeCreated = !isEmptyList(createdDeferredAssignments);\n const isSomeUpdated = !isEmptyList(updatedDeferredAssignments);\n const isSomeDeleted = !isEmptyList(deletedDeferredAssignmentsIds);\n\n if (isSomeCreated || isSomeUpdated || isSomeDeleted) {\n dispatch(\n postDeferredAssignmentAction({\n filters: {\n courseGroup: courseGroupId,\n lesson: lesson,\n },\n created: isSomeCreated ? createdDeferredAssignments : undefined,\n updated: isSomeUpdated ? updatedDeferredAssignments : undefined,\n deleted: isSomeDeleted ? deletedDeferredAssignmentsIds : undefined,\n }),\n );\n }\n\n if (deletedAssignmentIds.length) {\n dispatch(deleteStudentHomeworksAction(deletedAssignmentIds));\n\n // Если только удалились прогрессы, все равно перезапрашиваем отложенные выдачи,\n // тк за это время они могли превратиться в прогрессы, тогда список будет не актуальный\n if (!isSomeCreated && !isSomeUpdated && !isSomeDeleted) {\n dispatch(\n postDeferredAssignmentAction({\n filters: {\n courseGroup: courseGroupId,\n lesson: lesson,\n },\n isGetter: false,\n }),\n );\n }\n }\n }\n }, [formValues, courseGroupId, newTasks, lessonHomeworks, repeatTaskForm, dispatch]);\n\n const [disabled, setDisabled] = useState(true);\n\n useEffect(() => {\n if (\n fetchDeferredAssignmentChangeStatus === FetchStatus.FETCHED ||\n fetchDeferredAssignmentChangeStatus === FetchStatus.ERROR\n ) {\n setIsDeferredAssignmentChanged(true);\n repeatTaskForm ? setRepeatTaskForm(false) : setShowAssigningForm(false);\n }\n }, [fetchDeferredAssignmentChangeStatus]);\n useEffect(() => {\n if (!isEmptyList(newTasks) && (assigningHomeworkForm?.errors || taskForm?.errors)) {\n const filteredTasks = repeatTaskForm\n ? newTasks.filter((task) => assignmentTasks.some(({ id }) => id === task.id))\n : newTasks;\n const hasEmptyDates = filteredTasks\n .filter(({ isPosted }) => repeatTaskForm || !isPosted)\n .some(\n ({ deadlineForComplete, assignedDate, assignedDelay, deadlineDelay, timeToComplete }) =>\n (!assignedDate && assignedDelay === undefined) ||\n (!deadlineForComplete && !deadlineDelay) ||\n timeToComplete === 0,\n );\n const hasInvalidDates = filteredTasks\n .filter(({ isPosted }) => repeatTaskForm || !isPosted)\n .some(({ assignedDate, deadlineForComplete }) => {\n return assignedDate && deadlineForComplete\n ? !isValidInterval(assignedDate, deadlineForComplete)\n : false;\n });\n const hasNewCheckedTasks = newTasks.some((task) => !task.isPosted);\n const isFirstAssignment =\n !repeatTaskForm &&\n !showAssigningForm &&\n isEmptyList(lessonHomeworks) &&\n isEmptyList(deferredAssignments);\n const hasTasksWithNoStudents = !!filteredTasks?.filter(({ id }) => {\n const isTaskSelectedAll = formValues?.selectAll?.some(\n ({ taskId, checked, disabled }) => taskId === id && checked && !disabled,\n );\n const isTaskHasStudents = formValues?.students?.some(({ tasks }) =>\n tasks.some(({ taskId, blocked, checked }) => taskId === id && !blocked && checked),\n );\n const isTaskBlocked =\n !isTaskHasStudents &&\n formValues?.students?.some(({ tasks }) =>\n tasks.some(({ taskId, blocked, checked }) => taskId === id && blocked && checked),\n );\n\n return !isTaskSelectedAll && !isTaskHasStudents && !isTaskBlocked;\n }).length;\n\n setDisabled(\n (Boolean((assigningHomeworkForm?.errors as { tasks?: string })?.tasks) &&\n (assigningHomeworkForm?.errors as { tasks?: string })?.tasks !== 'not assigned') ||\n (showAssigningForm ? hasNewCheckedTasks && hasEmptyDates : hasEmptyDates) ||\n hasInvalidDates ||\n (hasTasksWithNoStudents &&\n (repeatTaskForm || isFirstAssignment || (showAssigningForm && hasNewCheckedTasks))),\n );\n } else if (isEmptyList(newTasks)) {\n setDisabled(true);\n } else {\n setDisabled(false);\n }\n }, [assigningHomeworkForm, taskForm, newTasks, formValues, lessonHomeworks, deferredAssignments]);\n\n const hasAssignedHomeworks =\n (fetchHomeworkStatus === FetchStatus.FETCHED || fetchHomeworkStatus === FetchStatus.ERROR) &&\n (fetchDeferredAssignmentStatus === FetchStatus.FETCHED ||\n fetchDeferredAssignmentStatus === FetchStatus.ERROR) &&\n (lessonHomeworks.length || deferredAssignmentTasks.length);\n\n const dataFetched =\n getLessonAssignmentStatus === FetchStatus.FETCHED &&\n fetchHomeworkStatus !== FetchStatus.FETCHING &&\n fetchGroupsExpelledStudentsStatus === FetchStatus.FETCHED &&\n fetchGroupDetailsStatus === FetchStatus.FETCHED;\n\n const handleStudentCellClick = useCallback(\n (studentId: number) => {\n if (onStudentCellClick) {\n onStudentCellClick(studentId);\n }\n },\n [onStudentCellClick],\n );\n\n const handleStudentTaskClick = useCallback(\n (studentId: number, taskId: number) => {\n if (courseGroupId) {\n LessonPopup.replaceLastLessonPopup({\n subjectId: subject ?? 0,\n courseGroupId: courseGroupId,\n lessonId: lesson,\n tab: 'tasks',\n taskId: taskId,\n });\n StudentTasksViewPopup.openStudentTasksViewPopup({\n taskId,\n studentId,\n subjectId: subject ?? 0,\n lessonId: lesson,\n courseGroupId,\n });\n }\n },\n [courseGroupId, lesson],\n );\n\n const handleAssignmentDelete = useCallback(\n (id: number) => {\n dispatch(deleteAssignmentAction(id));\n },\n [dispatch],\n );\n\n const isContentFetching = isLoading && !dataFetched;\n const isTableShow = !showAssigningForm && !repeatTaskForm;\n const isTaskBlockShow = (!courseGroupId || !students?.length) && dataFetched && isTableShow;\n const isAssignedHomeworkTableShow = hasAssignedHomeworks && isTableShow;\n\n if (isContentFetching) {\n return ;\n }\n\n if (!isContentFetching && isAssignedHomeworkTableShow) {\n return (\n
\n \n
\n );\n }\n if (!isContentFetching && isTaskBlockShow) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n {dataFetched && (\n <>\n
\n \n
\n
\n
\n
\n \n
\n
\n \n {repeatTaskForm ? 'Выдать повторно' : 'Сохранить и выдать'}\n \n {(showAssigningForm || repeatTaskForm) && (\n onCancelButtonClick()}\n />\n )}\n
\n
\n
\n \n
\n
\n \n )}\n
\n );\n};\n","import LessonPopup from './LessonPopup';\n\nexport default LessonPopup;\n","import { TIME_AFTER_END_OF_LESSON } from 'constants/date';\n\nimport React, { FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { getMaterialsMetaAction, getTrainingProgress } from '@fsd-entities/materials';\nimport { TrainerTab } from '@fsd-pages/Lesson/TrainerTab';\nimport { useWindowResize } from '@lms-elements/hooks';\nimport { checkIsAfter, checkOverdue } from '@lms-elements/utils';\nimport { getMaterials } from 'api/services/materials';\nimport { StrokeArrowRightIcon } from 'assets';\nimport { AttendanceTab } from 'containers/AttendanceTab';\nimport { OnlineLessonTab } from 'containers/OnlineLessonTab';\nimport { useRole } from 'hooks';\nimport { getQuerySearchParams } from 'pages/LessonCard/utils';\nimport { HardModal } from 'src-new/components/hard-modal';\nimport {\n useCreateQuestionPopup,\n useGetPopupLessonData,\n useLessonsPopup,\n useSearchQuestionsPopup,\n useStudentTasksViewPopup,\n useSubjectsRedirect,\n useTaskPopup,\n} from 'src-new/hooks';\nimport { AppSkeleton, AppTabs, AppText } from 'src-new/ui';\nimport { getTabId, getTabLink, getUid, setViewedLesson } from 'src-new/utils';\nimport { getCourseGroupDetailsAction, getCourseGroupDetailsWithStudentsAction } from 'store/actions/courseGroup';\nimport { resetLastCheckedAnswerAction } from 'store/actions/material';\nimport { getStudentsEventRoomsByLessonAndTypeAction } from 'store/actions/proctoring';\nimport { resetMeetingFilesState } from 'store/reducers/meetingFiles';\nimport { resetNewSubjectsState } from 'store/reducers/newSubjects';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { EventTypes } from 'types/events';\nimport { ILessonPopup } from 'types/lessonTask';\nimport { LessonTypes } from 'types/schedule';\n\nimport { addMinutes } from 'utils/date';\n\nimport { TTab } from './LessonPopup.types';\nimport { MaterialsTab } from './MaterialsTab';\nimport { OnlineLessonTab as TeacherOnlineLessonTab } from './OnlineLessonTab';\nimport { ProgressTab } from './ProgressTab';\nimport { StudentTaskTab } from './StudentTaskTab';\nimport { TeacherTaskTab } from './TeacherTaskTab';\n\nimport './style.scss';\n\n/**\n * @description - компонент генерации урока в модалке\n * @param props\n * @constructor\n */\nconst LessonPopup: FC = (props) => {\n const { urlProps, ...rest } = props;\n const { lessonId, courseGroupId, courseId, taskId, subjectId, tab } = urlProps;\n const { isStudent, isTeacher, isMethodist } = useRole();\n\n const [tabName, setTabName] = useState('materials');\n const [isHaveAdditional, setIsHaveAdditional] = useState(false);\n const [isHaveTrainer, setIsHaveTrainer] = useState(!isStudent);\n\n const LessonPopup = useLessonsPopup();\n const StudentTasksViewPopup = useStudentTasksViewPopup();\n const SearchQuestionsPopup = useSearchQuestionsPopup();\n const CreateQuestionPopup = useCreateQuestionPopup();\n const TaskPopup = useTaskPopup();\n\n const dispatch = useDispatch();\n const history = useHistory();\n const { isMobile, isTablet } = useWindowResize();\n\n const isTeacherMethodist = isTeacher && isMethodist;\n\n useSubjectsRedirect({\n modalType: 'LESSON',\n urlProps: urlProps,\n });\n const { roles: metaRoles } = useAppSelector((state) => state.newMaterials?.meta) || {};\n const { courseInfo, topicInfo, lessonInfo } = useGetPopupLessonData({\n lessonId,\n courseGroupId,\n courseId,\n taskId,\n isNeedFetch: LessonPopup.isCurrent,\n });\n\n const { lessonsTree, getLessonsTreeStatus, getTreeByURLStatus, info } = useAppSelector((store) => ({\n lessonsTree: store.newSubject.lessonsTree,\n getLessonsTreeStatus: store.newSubject.getLessonsTreeStatus,\n getTreeByURLStatus: store.newSubject.getTreeByURLStatus,\n info: store.user.info,\n }));\n\n const handleStudentAvatarClick = useCallback(\n (studentId: number, tab: string) => {\n const searchParams = getQuerySearchParams({\n lessonId: Number(lessonInfo?.id),\n subjectId: courseInfo?.courseId,\n groupId: courseInfo?.id,\n });\n history.push(`/profile/student/${studentId}/${tab}/${searchParams}`);\n },\n [history, courseInfo, lessonInfo],\n );\n\n const isLoading = getLessonsTreeStatus !== FetchStatus.FETCHED;\n const currentLessonIndex = useMemo(() => lessonsTree.findIndex((item) => item.id === lessonInfo?.id), [lessonInfo]);\n const breadcrumbsHeader = useMemo(() => {\n const courseTitle =\n isTeacher && courseInfo?.title && courseInfo?.courseGroupTitle\n ? `${courseInfo?.title} (${courseInfo?.courseGroupTitle})`\n : courseInfo?.title ?? '';\n return courseInfo?.title && topicInfo?.title ? (\n
\n \n \n \n
\n ) : (\n <>\n );\n }, [courseInfo, topicInfo]);\n\n const selectedLessonSchedule = lessonsTree[currentLessonIndex]?.lessonSchedules?.find(\n (schedule) => schedule.type === LessonTypes.ONLINE || schedule.type === LessonTypes.TEST,\n );\n const { isOvered, isStarted } = useMemo(() => {\n if (selectedLessonSchedule) {\n return {\n isOvered: checkOverdue(\n addMinutes({\n date: selectedLessonSchedule?.datetimeEnd,\n minutes: TIME_AFTER_END_OF_LESSON,\n }),\n ),\n isStarted: checkOverdue(selectedLessonSchedule?.datetimeStart),\n };\n }\n\n return {\n isOvered: false,\n isStarted: false,\n };\n }, [selectedLessonSchedule]);\n const isSelfPreparation = useMemo(() => {\n return (\n !selectedLessonSchedule &&\n lessonId &&\n lessonsTree[currentLessonIndex]?.lessonSchedules.some(\n (schedule) => schedule.type === LessonTypes.SELFPREPARATION,\n )\n );\n }, [currentLessonIndex, lessonId, selectedLessonSchedule]);\n const tabs = useMemo(() => {\n const materials = {\n label: ,\n children: ,\n key: '0',\n };\n const additionalMaterials = {\n label: ,\n children: ,\n key: '6',\n };\n const trainer = {\n label: ,\n children: ,\n key: '7',\n };\n const teacherLessons = {\n label: ,\n children: (\n = 0 ? lessonsTree[currentLessonIndex]?.isTest : false}\n />\n ),\n key: '2',\n };\n const studentLessons = {\n label: ,\n children: (\n = 0 ? lessonsTree[currentLessonIndex]?.isTest : false}\n />\n ),\n key: '2',\n };\n const tasks = {\n label: ,\n children: isStudent ? (\n \n ) : (\n handleStudentAvatarClick(id, 'homeworks')}\n lessonSchedule={lessonsTree[currentLessonIndex]?.lessonSchedules?.find(\n (item) => item.type !== 'selfpreparation_lesson',\n )}\n />\n ),\n key: '3',\n };\n const attendance = {\n label: ,\n children: (\n (isStudent ? undefined : handleStudentAvatarClick(id, 'performance'))}\n />\n ),\n key: '4',\n };\n const progress = {\n label: ,\n children: ,\n key: '5',\n };\n\n const lessons = isTeacher ? teacherLessons : studentLessons;\n return (courseInfo?.id && courseInfo?.courseId && isStudent) || isTeacher\n ? [\n materials,\n ...(isHaveAdditional ? [additionalMaterials] : []),\n ...(isHaveTrainer ? [trainer] : []),\n ...(isTeacher ? [progress] : []),\n ...(!isSelfPreparation && !courseInfo?.isCurious ? [lessons] : []),\n ...(!courseInfo?.isCurious ? [tasks] : []),\n ...((courseInfo?.id || (currentLessonIndex >= 0 && lessonsTree[currentLessonIndex]?.isTest)) &&\n isStarted &&\n !courseInfo?.isCurious\n ? [attendance]\n : []),\n ]\n : [tasks];\n }, [\n isHaveTrainer,\n isSelfPreparation,\n selectedLessonSchedule?.id,\n lessonInfo,\n currentLessonIndex,\n courseInfo,\n isStudent,\n isTeacher,\n lessonId,\n courseGroupId,\n taskId,\n isHaveAdditional,\n ]);\n\n // Если это учитель-методист и он не зачислен как учитель в курс-группу,\n // то редиректим на аналогичную страницу в старых предметах\n useEffect(() => {\n if (getTreeByURLStatus === FetchStatus.FETCHED && isTeacherMethodist && !lessonInfo && courseInfo) {\n history.push(\n `/subjects/${subjectId ?? courseId}/${lessonId}/${tab ?? 'materials'}?course_group=${courseGroupId}`,\n );\n }\n }, [getTreeByURLStatus, isTeacherMethodist, lessonInfo, courseInfo]);\n // Получаем имя открытой вкладки из url\n useEffect(() => {\n if (tab) {\n // При открытии модалки из другого раздела (напр-р, из успеваемости)\n // В юрлу может попасть имя таба, которое для данного урока недоступно\n // В этом случае отображаем вкладку \"Материалы\"\n const currentTabId = getTabId(tab);\n const isCurrentTabExist = !!tabs.find((item) => +item.key === currentTabId);\n setTabName(isCurrentTabExist ? tab : 'materials');\n }\n }, [tabs, tab]);\n // При смене вкладки, записываем ее имя в url\n useEffect(() => {\n if (tabName && courseGroupId && lessonInfo?.id) {\n //если переключаемся с вкладки онлайн урока - сбрасываем стейт\n if (tabName !== 'online_lesson') {\n dispatch(resetMeetingFilesState());\n }\n\n LessonPopup.replaceLastLessonPopup({\n subjectId: subjectId,\n courseGroupId: courseGroupId,\n courseId,\n lessonId: lessonInfo?.id,\n tab: tabName,\n });\n }\n }, [tabName]);\n\n useEffect(() => {\n if (courseInfo?.id && isTeacher) {\n dispatch(getCourseGroupDetailsWithStudentsAction(courseInfo?.id));\n }\n if (isStudent && courseInfo?.id && courseInfo.courseId) {\n dispatch(getCourseGroupDetailsAction(courseInfo.id));\n }\n }, [courseInfo, isTeacher, isStudent]);\n\n useEffect(() => {\n if (getTreeByURLStatus === FetchStatus.ERROR) {\n dispatch(resetNewSubjectsState());\n history.push('/new-subjects');\n }\n }, [getTreeByURLStatus]);\n useEffect(() => {\n return () => {\n dispatch(resetMeetingFilesState());\n };\n }, [dispatch]);\n useEffect(() => {\n return () => {\n //чистим стейт, если не на странице предметов\n if (history.location.pathname !== '/new-subjects') {\n dispatch(resetNewSubjectsState());\n }\n\n dispatch(resetMeetingFilesState());\n };\n }, [dispatch, history]);\n useEffect(() => {\n const lessonSchedules = lessonsTree[currentLessonIndex]?.lessonSchedules ?? [];\n const isTest = lessonsTree[currentLessonIndex]?.isTest;\n const isTestNotPassed =\n lessonSchedules?.length !== 0 &&\n checkIsAfter(new Date().toISOString(), lessonSchedules?.[0]?.datetimeEnd) &&\n isTest;\n\n if (lessonId && courseGroupId && (lessonSchedules?.length === 0 || isTestNotPassed)) {\n dispatch(\n getStudentsEventRoomsByLessonAndTypeAction({\n lesson: lessonId,\n event_type: EventTypes.TEST,\n id: info?.id,\n }),\n );\n }\n }, [courseGroupId, dispatch, info?.id, lessonId, lessonsTree, currentLessonIndex]);\n\n useEffect(() => {\n return () => {\n LessonPopup.closeLastLessonPopup();\n StudentTasksViewPopup.closeLastStudentTasksViewPopup();\n SearchQuestionsPopup.closeLastSearchQuestionsPopup();\n CreateQuestionPopup.closeLastCreateQuestionPopup();\n TaskPopup.closeLastTaskPopup();\n };\n }, []);\n\n const handleTabClick = (newValue: string) => {\n const link = getTabLink(+newValue);\n setTabName(link);\n };\n\n const onLessonPaginate = (direction: 'next' | 'prev') => {\n const newIndex = direction === 'next' ? currentLessonIndex + 1 : currentLessonIndex - 1;\n if (currentLessonIndex >= 0 && newIndex >= 0 && newIndex < lessonsTree.length) {\n const lesson = {\n id: lessonsTree[newIndex].id,\n title: lessonsTree[newIndex].title,\n };\n\n //заменяем модалку\n LessonPopup.replaceLastLessonPopup({\n subjectId: subjectId,\n courseGroupId: courseInfo?.id || 0,\n courseId,\n lessonId: lesson?.id,\n });\n\n // Для любознательного запоминаем просмотренный урок\n // ТОЛЬКО ДЛЯ СТУДЕНТА\n if (isStudent && courseInfo?.isCurious && topicInfo && lessonInfo) {\n const itemToAdd = {\n course: courseInfo,\n topic: topicInfo.id,\n lesson: lessonInfo.id,\n };\n setViewedLesson(itemToAdd);\n }\n dispatch(resetLastCheckedAnswerAction());\n }\n };\n\n const checkAdditionalMaterials = (id?: number) => {\n if (id) {\n void getMaterials(id, 'additional').then((res) => {\n setIsHaveAdditional(res?.length > 0);\n });\n }\n };\n const checkTrainer = (lessonId?: number, courseGroupId?: number) => {\n if (lessonId && courseGroupId) {\n void getTrainingProgress({ lesson: lessonId, courseGroup: courseGroupId }).then((res) => {\n setIsHaveTrainer(!!res?.question);\n });\n }\n };\n\n useEffect(() => {\n setIsHaveAdditional(false);\n checkAdditionalMaterials(lessonInfo?.id);\n }, [lessonInfo?.id]);\n\n useEffect(() => {\n if (metaRoles?.isStudent) {\n setIsHaveTrainer(false);\n checkTrainer(lessonInfo?.id, courseGroupId);\n }\n }, [lessonInfo?.id, courseGroupId, metaRoles]);\n\n useEffect(() => {\n if (courseInfo?.courseId) {\n dispatch(getMaterialsMetaAction(courseInfo.courseId));\n }\n }, [courseInfo]);\n\n return (\n \n {isLoading ? (\n
\n \n \n
\n ) : (\n
\n
\n onLessonPaginate('prev')}\n >\n \n
\n
\n \n
\n\n onLessonPaginate('next')}\n >\n \n
\n \n \n \n )}\n \n );\n};\n\nexport default LessonPopup;\n","import SearchQuestionsPopup from './SearchQuestionsPopup';\nexport default SearchQuestionsPopup;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { ReturnButton } from '@lms-elements/atomic';\nimport { StrokeArrowRightIcon } from 'assets';\nimport { HardModal } from 'src-new/components/hard-modal';\nimport {\n getEmptyQuestion,\n QuestionSearchBarMemo,\n QuestionSearchResult,\n TNormalizedQuestion,\n TSearchData,\n} from 'src-new/components/lesson-task';\nimport {\n useCreateQuestionPopup,\n useGetPopupLessonData,\n useSearchQuestionsPopup,\n useSubjectsRedirect,\n} from 'src-new/hooks';\nimport { getAssignmentTypesAction } from 'store/actions/assignment';\nimport {\n createEmptyTaskQuestionAction,\n deleteBlockAction,\n getAssignedTasksAction,\n getQuestionsBySearchAction,\n getTaskDataAction,\n setSelectedBlockAction,\n} from 'store/actions/lessonTask';\nimport { resetToLastVersionState, setLastVersionState } from 'store/reducers/lessonTask';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { ISearchQuestionsPopup, TSelectedBlock } from 'types/lessonTask';\n\nimport './style.scss';\n\nconst SearchQuestionsPopup: React.FC = (props) => {\n const { urlProps, ...rest } = props;\n const { lessonId, courseGroupId, assignment, num = 1, purpose, isTrainer, subjectId, taskTypeId } = urlProps;\n\n const dispatch = useDispatch();\n const SearchQuestionsPopup = useSearchQuestionsPopup();\n const CreateQuestionPopup = useCreateQuestionPopup();\n const { courseInfo, topicInfo, lessonInfo } = useGetPopupLessonData({\n lessonId,\n courseGroupId,\n taskId: assignment,\n isNeedFetch: SearchQuestionsPopup.isCurrent,\n });\n useSubjectsRedirect({\n modalType: 'SEARCH_QUESTIONS',\n urlProps: urlProps,\n });\n\n const handleClosePopup = () => {\n dispatch(setLastVersionState());\n dispatch(setSelectedBlockAction(undefined));\n SearchQuestionsPopup.closeLastSearchQuestionsPopup();\n };\n\n const breadcrumbsHeader = useMemo(() => {\n return courseInfo?.title && topicInfo?.title ? (\n
\n
handleClosePopup()}>\n \n
\n
\n \n \n \n \n \n
\n
\n ) : (\n <>\n );\n }, [courseInfo, topicInfo]);\n\n const [questionsList, setQuestionsList] = useState([]);\n const [activeQuestionNumber, setActiveQuestionNumber] = useState(+num);\n\n const {\n assignmentTypes,\n getTypesStatus,\n isSearchQuestionsIsAllowed,\n assignedTasksList,\n filtersData,\n searchResults,\n getAssignedTasksListStatus,\n getQuestionsBySearchStatus,\n } = useAppSelector((store) => ({\n assignmentTypes: store.assignemnt.assignmentTypes,\n getTypesStatus: store.assignemnt.getTypesStatus,\n isSearchQuestionsIsAllowed: store.lessonTask.isSearchQuestionsIsAllowed,\n filtersData: store.lessonTask.filtersData,\n assignedTasksList: store.lessonTask.assignedTasksList,\n searchResults: store.lessonTask.searchResults,\n getAssignedTasksListStatus: store.lessonTask.getAssignedTasksListStatus,\n getQuestionsBySearchStatus: store.lessonTask.getQuestionsBySearchStatus,\n }));\n\n const isSearchContainerLoading =\n getAssignedTasksListStatus === FetchStatus.FETCHING || getQuestionsBySearchStatus === FetchStatus.FETCHING;\n\n const filteredSearchBlock =\n searchResults?.[activeQuestionNumber]?.filter(\n ({ questionNumber }) => questionNumber === activeQuestionNumber,\n ) ?? [];\n\n const showFiltersData = useMemo(() => {\n return (\n !!filtersData &&\n (!assignedTasksList?.[activeQuestionNumber] ||\n (isEmptyList(assignedTasksList?.[activeQuestionNumber]?.searchBlocksList) &&\n isEmptyList(assignedTasksList?.[activeQuestionNumber]?.singleQuestionsList)))\n );\n }, [activeQuestionNumber, filtersData, assignedTasksList]);\n const assignmentType = assignmentTypes?.find(({ id }) => id === +taskTypeId);\n\n // Получаем данные о задании и список вопросов\n useEffect(() => {\n if (!!assignment && !assignedTasksList) {\n dispatch(getTaskDataAction(+assignment));\n dispatch(getAssignedTasksAction(+assignment));\n }\n }, [assignment, dispatch, assignedTasksList]);\n // Получаем список возможных типов заданий\n useEffect(() => {\n if (getTypesStatus === FetchStatus.INITIAL) {\n dispatch(getAssignmentTypesAction());\n }\n }, [dispatch, getTypesStatus]);\n useEffect(() => {\n SearchQuestionsPopup.replaceLastSearchQuestionsPopup({\n lessonId,\n subjectId,\n courseGroupId,\n assignment,\n num: activeQuestionNumber,\n isTrainer,\n purpose,\n taskTypeId,\n });\n }, [activeQuestionNumber]);\n // Нормализуем список вопросов\n useEffect(() => {\n const isListEmpty = assignedTasksList ? !Object.keys(assignedTasksList).length : false;\n if (assignedTasksList && !isListEmpty) {\n const reformattedList: TNormalizedQuestion[] = [];\n Object.values(assignedTasksList).forEach((task, number) => {\n // список вопросов, относящихся к текущему номеру вопроса\n let summaryQuestion = getEmptyQuestion(number + 1);\n\n const blocksCount = task.searchBlocksList?.length;\n const blocksQuestionsCount = blocksCount\n ? task.searchBlocksList\n ?.map((block) => {\n const blockQuestionsIds = block?.questionsContentList\n ?.map(({ questionContent }) => questionContent?.id)\n .filter(Boolean);\n const existingExcludedIds = block?.filters?.excludeIds?.filter((item) =>\n blockQuestionsIds.includes(item),\n );\n const excludeCount = existingExcludedIds?.length ?? 0;\n\n return block?.questionsContentList?.length - excludeCount;\n })\n ?.reduce((total, count) => total + count)\n : 0;\n const singleCount = task.singleQuestionsList?.length;\n\n if (blocksCount || singleCount) {\n summaryQuestion = {\n questionNumber: number + 1,\n questionsCount: summaryQuestion.questionsCount + singleCount + blocksQuestionsCount,\n searchBlocksCount: summaryQuestion.searchBlocksCount + blocksCount,\n };\n }\n\n reformattedList.push(summaryQuestion);\n });\n const lastQuestionNumber = reformattedList.slice(-1)[0].questionNumber;\n if (activeQuestionNumber > lastQuestionNumber) {\n for (let i = lastQuestionNumber + 1; i <= activeQuestionNumber; i++) {\n reformattedList.push(getEmptyQuestion(i));\n }\n }\n setQuestionsList(reformattedList);\n } else {\n setQuestionsList([getEmptyQuestion(1)]);\n }\n }, [assignedTasksList]);\n // Закрываем модалку при перезагрузке страницы, если это создание задания\n useEffect(() => {\n if (SearchQuestionsPopup.isCurrent && purpose === 'create' && !isSearchQuestionsIsAllowed) {\n handleClosePopup();\n }\n }, [purpose, isSearchQuestionsIsAllowed, SearchQuestionsPopup.isCurrent]);\n const handleSearchingCancel = () => {\n dispatch(resetToLastVersionState());\n dispatch(setSelectedBlockAction(undefined));\n SearchQuestionsPopup.closeLastSearchQuestionsPopup();\n };\n const handleSearchingSave = () => {\n dispatch(setLastVersionState());\n dispatch(setSelectedBlockAction(undefined));\n SearchQuestionsPopup.closeLastSearchQuestionsPopup();\n };\n const handleCloseModal = () => {\n dispatch(setLastVersionState());\n dispatch(setSelectedBlockAction(undefined));\n };\n const onQuestionClick = (newNum: number) => {\n if (newNum !== activeQuestionNumber) {\n setActiveQuestionNumber(newNum);\n dispatch(setSelectedBlockAction());\n }\n };\n const handleSearchButtonClick = (data: TSearchData, selectedBlock?: TSelectedBlock) => {\n dispatch(\n getQuestionsBySearchAction({\n data,\n assignment: assignment ? +assignment : 0,\n questionNum: activeQuestionNumber,\n selectedBlock,\n }),\n );\n };\n const handleDeleteBlock = (selectedBlock: TSelectedBlock) => {\n dispatch(\n deleteBlockAction({\n questionNum: activeQuestionNumber,\n selectedBlock,\n }),\n );\n };\n const handleCreateNewQuestion = () => {\n CreateQuestionPopup.openCreateQuestionPopup({\n lessonId,\n courseGroupId,\n subjectId,\n isTrainer,\n assignment,\n num,\n });\n };\n const handleChangeQuestionList = (num: number, event: 'add' | 'delete') => {\n if (event === 'add') {\n dispatch(createEmptyTaskQuestionAction({ questionsNum: num }));\n setActiveQuestionNumber(num);\n }\n };\n\n return (\n \n
\n \n \n
\n \n );\n};\n\nexport default SearchQuestionsPopup;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { PatchTeacherMarkParams, PostAssignmentMark } from 'api/services/marks';\nimport { StrokeArrowRightIcon } from 'assets';\nimport { PageLoader } from 'containers/PageLoader';\nimport { StudentTask } from 'containers/StudentTask';\nimport { useLoader, useRole, useWindowWidth } from 'hooks';\nimport { getQueryAcademicPerfomanceParams, getQuerySearchParams } from 'pages/LessonCard/utils';\nimport { getChangeAttemptMarkParams } from 'pages/StudentTasks/StudentTasks.utils';\nimport { HardModal } from 'src-new/components/hard-modal';\nimport { useGetPopupLessonData, useStudentTasksViewPopup, useSubjectsRedirect } from 'src-new/hooks';\nimport {\n changeAssignmentAdditionalMarkAction,\n changeAssignmentMarkAction,\n changeAssignmentMarksAction,\n createAssignmentAdditionalMarkAction,\n deleteAssignmentAdditionalMarkWithCheckAction,\n} from 'store/actions/marks';\nimport { deleteStudentTaskAction, getStudentTasksAction } from 'store/actions/studentTasks';\nimport { clearError } from 'store/reducers/error';\nimport { resetProctoringState } from 'store/reducers/proctoring';\nimport { resetStudentTaskData } from 'store/reducers/studentTasks';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport { MarkField } from 'components/AttendanceMark/AttendanceMarkForm';\nimport { StudentTab } from 'components/StudentTab';\nimport { createTabs } from 'utils/studentsTasks';\n\nimport { TDeletedMark } from './StudentTasksViewPopup.types';\n\nconst cnStudentTasks = cn('student_tasks');\n\nimport { IStudentTasksViewPopup } from 'types/lessonTask';\n\nimport './style.scss';\nconst StudentTasksViewPopup: React.FC = (props) => {\n const { urlProps, ...rest } = props;\n const { lessonId, courseGroupId, taskId, studentId, subjectId } = urlProps;\n const StudentTasksViewPopup = useStudentTasksViewPopup();\n\n const { courseInfo, topicInfo, lessonInfo } = useGetPopupLessonData({\n lessonId,\n courseGroupId,\n taskId,\n isNeedFetch: StudentTasksViewPopup.isCurrent,\n });\n const history = useHistory();\n const { isPrincipal: isPrincipalRole, isSupport, isTeacher, isStudent } = useRole();\n useSubjectsRedirect({\n modalType: 'TASKS_VIEW',\n urlProps: urlProps,\n });\n\n const isTablet = useWindowWidth(1024);\n const breadcrumbsHeader = useMemo(() => {\n return courseInfo?.title && topicInfo?.title ? (\n
\n \n \n \n \n \n
\n ) : (\n <>\n );\n }, [courseInfo, topicInfo]);\n\n //Ниже логика, перенесенная со страницы просмотра домашки (будет заменена после рефакторинга)\n const dispatch = useDispatch();\n\n const [currentTab, setCurrentTab] = useState(+taskId);\n const [deletedMarks, setDeletedMarks] = useState([]);\n const [canDelete, setCanDelete] = useState(false);\n\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n\n const {\n studentTasks,\n lesson,\n studentData,\n fetchStatus: studentTasksStatus,\n taskFetchStatus,\n taskDeletingStatus,\n patchStatus: markPatchStatus,\n deleteStatus: markDeleteStatus,\n postStatus: markPostStatus,\n getEventRoomsStatus,\n answerAttempts,\n info,\n } = useAppSelector((store) => ({\n studentTasks: store.studentTasks.studentTasks,\n lesson: store.studentTasks.lesson,\n studentData: store.studentTasks.studentData,\n fetchStatus: store.studentTasks.fetchStatus,\n taskFetchStatus: store.studentTasks.taskFetchStatus,\n taskDeletingStatus: store.studentTasks.taskDeletingStatus,\n patchStatus: store.mark.patchStatus,\n deleteStatus: store.mark.deleteStatus,\n postStatus: store.mark.postStatus,\n getEventRoomsStatus: store.proctoring.getEventRoomsStatus,\n answerAttempts: store.answerAttempts.data,\n info: store.user.info,\n }));\n\n useLoader([\n studentTasksStatus,\n markDeleteStatus,\n markPostStatus,\n markPatchStatus,\n getEventRoomsStatus,\n taskDeletingStatus,\n ]);\n\n const studentName = useMemo(() => {\n if (studentData) {\n return `${studentData.user.firstName} ${studentData.user.lastName}`;\n }\n }, [studentData]);\n\n const isAdaptation = useMemo(() => studentData?.isAdaptation || studentTasks[0]?.student.isAdaptation, [\n studentTasks,\n studentData,\n ]);\n\n const studentPhoto = useMemo(() => studentData?.user.photoUrl || '', [studentData]);\n\n const tabs = useMemo(() => createTabs(studentTasks, answerAttempts, isPrincipal, isStudent, info?.id), [\n studentTasks,\n isPrincipal,\n isStudent,\n info,\n answerAttempts,\n ]);\n\n const groupId = useMemo(() => {\n if (studentData) {\n // TODO: remove after update GET-request student-card//\n return +courseGroupId || studentTasks[0].courseGroup?.id;\n }\n }, [courseGroupId, studentData, studentTasks]);\n\n const assignmentId = useMemo(() => studentTasks.find((task) => Number(task.id) === currentTab)?.assignment.id, [\n currentTab,\n studentTasks,\n ]);\n\n const handleTabChange = (id: number) => {\n setCurrentTab(id);\n StudentTasksViewPopup.replaceLastStudentTasksViewPopup({\n subjectId,\n lessonId,\n courseGroupId,\n taskId: id,\n studentId,\n });\n };\n\n const handleStudentClick = useCallback(() => {\n if (groupId && lesson?.course?.id && !isStudent) {\n history.push(\n `/profile/student/${studentId}/notes/${getQuerySearchParams({\n lessonId: lessonId,\n subjectId: lesson.course.id,\n groupId: groupId,\n })}`,\n );\n } else history.push(`/`);\n }, [groupId, history, lesson, lessonId, studentId, isStudent]);\n\n const handleCancel = useCallback(() => {\n setDeletedMarks([]);\n }, []);\n\n const handleMarkDelete = useCallback((markId: number, attemptMarkNumber?: number, teacherMark?: boolean) => {\n setDeletedMarks((prev) => {\n return [\n ...prev,\n {\n markId,\n attemptMarkNumber,\n teacherMark,\n },\n ];\n });\n }, []);\n\n const handleMarkAdd = useCallback(\n (addMarksOptions: PostAssignmentMark[]) => {\n dispatch(createAssignmentAdditionalMarkAction(addMarksOptions));\n },\n [dispatch],\n );\n\n const handleMarkChange = useCallback(\n (changeMarksOptions: (PatchTeacherMarkParams & { valueCanChange?: boolean; teacherMark?: boolean })[]) => {\n const teacherMarks = changeMarksOptions\n .filter((mark) => mark.teacherMark)\n .map(({ id, score, comment }) => ({\n id,\n score,\n comment,\n }));\n const assignmentMarks = changeMarksOptions.filter((mark) => !mark.teacherMark);\n\n if (teacherMarks.length) {\n dispatch(changeAssignmentAdditionalMarkAction({ marks: teacherMarks, taskId: currentTab }));\n }\n\n if (assignmentMarks.length) {\n dispatch(\n changeAssignmentMarksAction({\n marks: assignmentMarks\n .filter((mark) => mark.valueCanChange)\n .map(({ score, id, comment }) => ({\n score,\n id,\n comment,\n })),\n taskId: currentTab,\n }),\n );\n }\n\n setCanDelete(true);\n },\n [currentTab, dispatch],\n );\n\n const handleErrorModalCancelButtonClick = useCallback(() => {\n dispatch(clearError());\n }, [dispatch]);\n\n const handleErrorModalActionButtonClick = useCallback(() => {\n dispatch(\n deleteStudentTaskAction({\n id: tabs.find((task) => task.id === currentTab)?.id ?? 0,\n studentId: +studentId,\n lessonId: +lessonId,\n }),\n );\n }, [courseGroupId, currentTab, dispatch, history, lessonId, studentId, tabs]);\n\n const handleTaskCheck = useCallback(\n (value: { mark: MarkField; answerAttempt: AnswerAttemptPostResponse }) => {\n const { mark, answerAttempt } = value;\n if (mark.selectedMark && answerAttempt.mark) {\n const changeValues = getChangeAttemptMarkParams(\n { score: mark.selectedMark, comment: mark.comment },\n answerAttempt.mark,\n );\n\n dispatch(changeAssignmentMarkAction({ ...changeValues, taskId: currentTab }));\n }\n },\n [dispatch, currentTab],\n );\n\n const handleMarksClick = useCallback(() => {\n history.push(\n `/performance${getQueryAcademicPerfomanceParams({\n courseId: studentTasks[0].course?.id,\n subjectId: studentTasks[0].subject?.id,\n groupId: studentTasks[0].courseGroup?.id,\n })}`,\n );\n }, [history, studentTasks]);\n\n useEffect(() => {\n dispatch(getStudentTasksAction({ studentId: Number(studentId), lessonId: Number(lessonId) }));\n }, [dispatch, lessonId, studentId]);\n\n useEffect(() => {\n if (canDelete && !!deletedMarks.length && !!answerAttempts) {\n dispatch(\n deleteAssignmentAdditionalMarkWithCheckAction({\n marks: deletedMarks\n .filter(\n ({ attemptMarkNumber }) =>\n typeof attemptMarkNumber === 'number' &&\n answerAttempts.some(({ attempt }) => attempt === attemptMarkNumber),\n )\n .map(({ attemptMarkNumber }) => {\n return answerAttempts.find(({ attempt }) => attempt === attemptMarkNumber)?.id as number;\n }),\n teacherMarks: deletedMarks.filter(({ teacherMark }) => teacherMark).map(({ markId }) => markId),\n allMarks: tabs.find(({ id }) => Number(id) === taskId)?.marks?.filter((el) => el.attemptMarkNumber)\n .length,\n taskId: currentTab,\n numberOfMarks: tabs.find((task) => task.id === currentTab)?.marks?.length ?? 0,\n handleCancelButtonClick: handleErrorModalCancelButtonClick,\n handleActionButtonClick: handleErrorModalActionButtonClick,\n }),\n );\n setDeletedMarks([]);\n setCanDelete(false);\n }\n }, [\n answerAttempts,\n canDelete,\n currentTab,\n deletedMarks,\n dispatch,\n handleErrorModalActionButtonClick,\n handleErrorModalCancelButtonClick,\n isTeacher,\n studentTasks,\n tabs,\n taskId,\n ]);\n\n useEffect(() => {\n if (markPostStatus === FetchStatus.FETCHED) {\n dispatch(getStudentTasksAction({ studentId: +studentId, lessonId: +lessonId }));\n }\n }, [dispatch, lessonId, markPostStatus, studentId]);\n\n useEffect(\n () => () => {\n dispatch(resetStudentTaskData());\n dispatch(resetProctoringState());\n },\n [dispatch],\n );\n\n return (\n \n
\n
\n \n
\n {currentTab !== undefined && (\n \n )}\n {assignmentId !== undefined && (\n \n )}\n
\n
\n
\n \n );\n};\nexport default StudentTasksViewPopup;\n","import StudentTasksViewPopup from './StudentTasksViewPopup';\n\nexport default StudentTasksViewPopup;\n","import TaskPopup from './TaskPopup';\n\nexport default TaskPopup;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { StrokeArrowRightIcon } from 'assets';\nimport { useRole, useWindowWidth } from 'hooks';\nimport { HardModal } from 'src-new/components/hard-modal';\nimport {\n getEmptyQuestion,\n getQuestionDetails,\n TaskConfigContainer,\n TNormalizedQuestion,\n} from 'src-new/components/lesson-task';\nimport { TEST_LESSON_ID } from 'src-new/constants';\nimport { useGetPopupLessonData, useSearchQuestionsPopup, useSubjectsRedirect, useTaskPopup } from 'src-new/hooks';\nimport { setMessage } from 'src-new/utils/message';\nimport { getAssignmentTypesAction } from 'store/actions/assignment';\nimport { getLessonDataAction } from 'store/actions/courseLessons';\nimport {\n createEmptyTaskQuestionAction,\n createLessonTaskAction,\n deleteTaskQuestionAction,\n getAssignedTasksAction,\n getTaskDataAction,\n updateLessonTaskAction,\n} from 'store/actions/lessonTask';\nimport { resetQuestionsState, setSearchQuestionsIsAllowed } from 'store/reducers/lessonTask';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { ITaskPopup, TNewTaskData, TTaskData } from 'types/lessonTask';\n\nimport './style.scss';\n\nconst TaskPopup: React.FC = (props) => {\n const { urlProps, ...rest } = props;\n const { lessonId, courseGroupId, taskId, purpose, subjectId } = urlProps;\n const isEditPage = purpose === 'edit';\n\n const [questionsList, setQuestionsList] = useState([]);\n const [selectedTypeId, setSelectedTypeId] = useState(0);\n const [isTaskTemplate, setIsTaskTemplate] = useState(false);\n\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n\n const dispatch = useDispatch();\n const TaskPopup = useTaskPopup();\n const { isPrincipal, isSupport, isMethodist, isTeacher } = useRole();\n const isOnlyTeacher = isTeacher && !isMethodist;\n\n const SearchQuestionsPopup = useSearchQuestionsPopup();\n\n useSubjectsRedirect({\n modalType: 'TASK',\n urlProps: urlProps,\n });\n\n const { courseInfo, topicInfo, lessonInfo } = useGetPopupLessonData({\n lessonId,\n courseGroupId,\n taskId,\n isNeedFetch: TaskPopup.isCurrent,\n });\n const isTablet = useWindowWidth(1024);\n\n const {\n assignmentTypes,\n getTypesStatus,\n taskData,\n assignedTasksList,\n assignedTasksListInitial,\n isSearchQuestionsIsAllowed,\n lessonDetails,\n getStatusLessons,\n createLessonTaskStatus,\n updateLessonTaskStatus,\n getAssignedTasksListStatus,\n } = useAppSelector((store) => ({\n assignmentTypes: store.assignemnt.assignmentTypes,\n getTypesStatus: store.assignemnt.getTypesStatus,\n taskData: store.lessonTask.taskData,\n assignedTasksList: store.lessonTask.assignedTasksList,\n assignedTasksListInitial: store.lessonTask.assignedTasksListInitial,\n lessonDetails: store.lessonTask.lessonDetails,\n getStatusLessons: store.lessonTask.getStatusLessons,\n createLessonTaskStatus: store.lessonTask.createLessonTaskStatus,\n updateLessonTaskStatus: store.lessonTask.updateLessonTaskStatus,\n isSearchQuestionsIsAllowed: store.lessonTask.isSearchQuestionsIsAllowed,\n getAssignedTasksListStatus: store.lessonTask.getAssignedTasksListStatus,\n }));\n const isTasksContainerLoading =\n getStatusLessons === FetchStatus.FETCHING ||\n getTypesStatus === FetchStatus.FETCHING ||\n getAssignedTasksListStatus === FetchStatus.FETCHING;\n\n const lessonData = lessonDetails[Number(lessonId)] ?? {};\n const questionDetails = getQuestionDetails(assignmentTypes.find(({ id }) => id === selectedTypeId));\n const typeOptionsNormalize = useMemo(() => {\n return assignmentTypes.length\n ? assignmentTypes.map((item) => {\n return {\n label: item.title,\n value: `${item.id}`,\n };\n })\n : [];\n }, [assignmentTypes]);\n const isQuestionsExist = assignedTasksList\n ? Object.values(assignedTasksList).some(\n (item) => !!Object.keys(item).length && Object.values(item).filter((list) => !!list.length).length,\n )\n : false;\n const isSaveButtonDisabled =\n !isQuestionsExist ||\n !title ||\n !selectedTypeId ||\n !questionsList.filter(({ questionsCount }) => !!questionsCount).length ||\n updateLessonTaskStatus === FetchStatus.FETCHING ||\n createLessonTaskStatus === FetchStatus.FETCHING;\n const isTemplateSwitcherDisabled =\n (!isMethodist && !isPrincipal && !isSupport) || selectedTypeId === TEST_LESSON_ID;\n\n const breadcrumbsHeader = useMemo(() => {\n return courseInfo?.title && topicInfo?.title ? (\n
\n \n \n \n \n \n
\n ) : (\n <>\n );\n }, [courseInfo, topicInfo]);\n\n // Получаем данные об уроке (для хлебных крошек)\n useEffect(() => {\n if (getStatusLessons === FetchStatus.INITIAL || Number(lessonId) !== lessonData?.id) {\n dispatch(getLessonDataAction(+lessonId));\n }\n }, [dispatch, lessonId, getStatusLessons, lessonData?.id]);\n useEffect(() => {\n setIsTaskTemplate(!isOnlyTeacher);\n }, [isOnlyTeacher]);\n //Ставим флаг для того, чтобы закрыть модалку поиска вопросов при создании, если страницу обновили\n useEffect(() => {\n if (selectedTypeId && !isSearchQuestionsIsAllowed) {\n dispatch(setSearchQuestionsIsAllowed());\n }\n }, [selectedTypeId, isSearchQuestionsIsAllowed]);\n // Получаем данные о задании и список вопросов\n useEffect(() => {\n if (!!taskId && !assignedTasksList) {\n dispatch(getTaskDataAction(+taskId));\n dispatch(getAssignedTasksAction(+taskId));\n }\n }, [taskId, dispatch, assignedTasksList]);\n // Получаем список возможных типов заданий\n useEffect(() => {\n if (getTypesStatus === FetchStatus.INITIAL) {\n dispatch(getAssignmentTypesAction());\n }\n }, [dispatch, getTypesStatus]);\n // Устанавливаем полученные данные о задании как дефолтные\n useEffect(() => {\n if (taskData) {\n const { isTemplate, type, title, description = '' } = taskData;\n setIsTaskTemplate(isTemplate);\n setSelectedTypeId(type.id);\n setTitle(title);\n setDescription(description);\n }\n }, [taskData]);\n // Нормализуем список вопросов\n useEffect(() => {\n const isListEmpty = assignedTasksList ? !Object.keys(assignedTasksList).length : false;\n if (assignedTasksList && !isListEmpty) {\n const reformattedList: TNormalizedQuestion[] = [];\n Object.values(assignedTasksList).forEach((task, number) => {\n // список вопросов, относящихся к текущему номеру вопроса\n let summaryQuestion = getEmptyQuestion(number + 1);\n\n const blocksCount = task.searchBlocksList?.length ?? 0;\n const blocksQuestionsCount = blocksCount\n ? task.searchBlocksList\n ?.map((block) => {\n const blockQuestionsIds = block?.questionsContentList\n ?.map(({ questionContent }) => questionContent?.id)\n .filter(Boolean);\n const existingExcludedIds = block?.filters?.excludeIds?.filter((item) =>\n blockQuestionsIds.includes(item),\n );\n const excludeCount = existingExcludedIds?.length ?? 0;\n\n const allCount = block?.questionsContentList?.length ?? 0;\n return allCount - excludeCount;\n })\n ?.reduce((total, count) => total + count)\n : 0;\n const singleCount = task.singleQuestionsList?.length ?? 0;\n\n if (blocksCount || singleCount) {\n summaryQuestion = {\n questionNumber: number + 1,\n questionsCount: summaryQuestion.questionsCount + singleCount + blocksQuestionsCount,\n searchBlocksCount: summaryQuestion.searchBlocksCount + blocksCount,\n };\n }\n\n reformattedList.push(summaryQuestion);\n });\n setQuestionsList(reformattedList);\n } else {\n setQuestionsList([getEmptyQuestion(1)]);\n }\n }, [assignedTasksList]);\n\n // Выплевываем тост по выполнении запроса\n useEffect(() => {\n if (createLessonTaskStatus === FetchStatus.FETCHED || updateLessonTaskStatus === FetchStatus.FETCHED) {\n setMessage({\n status: 'success',\n text: 'Задание успешно сохранено!',\n duration: 3,\n });\n TaskPopup.closeLastTaskPopup();\n }\n }, [createLessonTaskStatus, updateLessonTaskStatus]);\n //Чистим стейт при выходе\n useEffect(() => {\n return () => {\n dispatch(resetQuestionsState());\n setTitle('');\n setQuestionsList([]);\n setDescription('');\n setIsTaskTemplate(false);\n setSelectedTypeId(0);\n };\n }, []);\n\n const onQuestionClick = (num: number) => {\n SearchQuestionsPopup.openSearchQuestionsPopup({\n lessonId,\n subjectId,\n courseGroupId,\n num,\n assignment: taskId,\n purpose: isEditPage ? 'edit' : 'create',\n taskTypeId: selectedTypeId,\n });\n };\n const handleSaveTask = () => {\n if (assignedTasksList && Object.keys(assignedTasksList).length) {\n if (isEditPage && taskData) {\n const taskDataParams: TTaskData = {\n id: taskData.id,\n lesson: +lessonId,\n title,\n };\n if (courseGroupId) {\n taskDataParams.courseGroup = +courseGroupId;\n }\n if (description !== taskData.description) {\n taskDataParams.description = description;\n }\n if (isTaskTemplate !== taskData.isTemplate) {\n taskDataParams.isTemplate = isTaskTemplate;\n }\n if (selectedTypeId !== taskData.type.id) {\n taskDataParams.type = selectedTypeId;\n }\n\n dispatch(\n updateLessonTaskAction({\n taskData: taskDataParams,\n assignedQuestions: assignedTasksList,\n assignedTasksListInitial,\n }),\n );\n } else {\n const taskDataParams: TNewTaskData = {\n lesson: +lessonId,\n title,\n type: selectedTypeId,\n };\n if (courseGroupId) {\n taskDataParams.courseGroup = +courseGroupId;\n }\n if (description) {\n taskDataParams.description = description;\n }\n if (isTaskTemplate) {\n taskDataParams.isTemplate = isTaskTemplate;\n }\n\n dispatch(\n createLessonTaskAction({\n taskData: taskDataParams,\n assignedQuestions: assignedTasksList,\n }),\n );\n }\n }\n };\n const handleChangeQuestionList = (num: number, event: 'add' | 'delete') => {\n if (event === 'delete') {\n dispatch(deleteTaskQuestionAction(num));\n } else {\n dispatch(createEmptyTaskQuestionAction({ questionsNum: num, saveIntoLastVersion: true }));\n }\n };\n const handleCancel = () => {\n TaskPopup.closeLastTaskPopup();\n };\n const handleTypeSelect = (typeId: number) => {\n setSelectedTypeId(typeId);\n\n if (typeId === TEST_LESSON_ID && !isOnlyTeacher) {\n setIsTaskTemplate(true);\n }\n };\n\n return (\n \n
\n +value === selectedTypeId)}\n isLoading={isTasksContainerLoading}\n isSaveButtonDisabled={isSaveButtonDisabled}\n isSaveButtonLoading={\n updateLessonTaskStatus === FetchStatus.FETCHING ||\n createLessonTaskStatus === FetchStatus.FETCHING\n }\n isTemplateSwitcherDisabled={isTemplateSwitcherDisabled}\n handleTaskName={(name) => setTitle(name)}\n handleTaskDescription={(desc) => setDescription(desc)}\n handleTypeSelect={handleTypeSelect}\n handleTemplateSwitcher={(isTemplate) => setIsTaskTemplate(isTemplate)}\n handleChangeQuestionList={handleChangeQuestionList}\n handleQuestionClick={onQuestionClick}\n handleSaveTask={handleSaveTask}\n handleCancel={handleCancel}\n />\n
\n \n );\n};\nexport default TaskPopup;\n","import {\n CreateQuestionPopup,\n LessonPopup,\n SearchQuestionsPopup,\n StudentTasksViewPopup,\n TaskPopup,\n} from 'src-new/components/new-subjects/popups';\n\n// сделать из этого один общий enum для всех URL параметров\nexport const URL_SEARCH_ENUM = {\n MODALS: 'modals',\n};\n\nexport const HARD_MODAL_ENUMS = {\n LESSON: 'lesson',\n TASK: 'task',\n SEARCH_QUESTIONS: 'search_questions',\n CREATE_QUESTION: 'create_question',\n TASKS_VIEW: 'tasks_view',\n};\n\nexport const mappedPopups = {\n [HARD_MODAL_ENUMS.LESSON]: LessonPopup,\n [HARD_MODAL_ENUMS.TASK]: TaskPopup,\n [HARD_MODAL_ENUMS.SEARCH_QUESTIONS]: SearchQuestionsPopup,\n [HARD_MODAL_ENUMS.CREATE_QUESTION]: CreateQuestionPopup,\n [HARD_MODAL_ENUMS.TASKS_VIEW]: StudentTasksViewPopup,\n};\n","import { api, getApiRequest, patchApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\nimport { UserRoles } from 'types/user';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nimport { DifficultyEnum } from './questionCreate';\n\nexport enum QuestionStatus {\n Published = 'published',\n NotPublished = 'not_published',\n OnRevision = 'on_revision',\n}\n\nexport interface ResponseQuestion {\n id: number;\n text: string;\n content?: string;\n html?: string;\n isActual: boolean;\n difficulty: DifficultyEnum;\n status: QuestionStatus;\n author: {\n id?: number;\n firstName: string;\n lastName: string;\n patronymic: string | null;\n online?: boolean;\n lastSeen?: string;\n mainRole: string;\n };\n topics: { id: number }[];\n skills: {\n id: number;\n title: string;\n }[];\n multiply: boolean;\n answersType: AnswersTypeEnum;\n timestamp: string;\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport const getQuestions = (options: string): Promise => {\n return api\n .get>(`/codifier/question/${options}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PostQuestion {\n text: string;\n content?: string;\n html?: string;\n answersType: AnswersTypeEnum;\n difficulty: DifficultyEnum;\n maximumScore: number;\n topics: number[];\n skills: number[];\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n fileIds?: number[];\n status?: QuestionStatus;\n isActual?: boolean;\n timestamp?: string;\n}\n\nexport interface PartialUpdateQuestion {\n text?: string;\n answersType?: AnswersTypeEnum;\n difficulty?: DifficultyEnum;\n maximumScore?: number;\n status?: QuestionStatus;\n skills?: number[];\n topics?: number[];\n html?: string;\n data?: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n content?: string;\n}\n\nexport interface ResponsePartialUpdateQuestion {\n id: number;\n text: string;\n answersType: AnswersTypeEnum;\n difficulty: DifficultyEnum;\n status: QuestionStatus;\n timestamp: string;\n html: string;\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n content: string;\n}\n\nexport interface PostQuestionResponse extends PostQuestion {\n id: number;\n}\n\nexport interface PostQuestionFile {\n question?: number;\n file: File;\n onUploadProgress?: (percent: number) => void;\n}\n\nexport interface FileLink {\n id: number;\n url: string;\n}\n\nexport interface PatchQuestionFile extends FileLink {\n question?: number;\n}\n\nexport const postQuestion = (value: PostQuestion): Promise => {\n return api\n .post, AxiosResponse>(`/codifier/question/create/`, {\n ...value,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface ResponseQuestionDetailed {\n id: number;\n text?: string;\n content?: string;\n html?: string;\n difficulty: DifficultyEnum;\n answersType: AnswersTypeEnum;\n status?: QuestionStatus;\n timestamp?: string;\n author?: {\n id?: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n mainRole: string;\n };\n topics: {\n id: number;\n title: string;\n }[];\n subjects?: {\n id: number;\n }[];\n skills: {\n id: number;\n title: string;\n }[];\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport const getQuestionDetailed = (id: number): Promise => {\n return api\n .get>(`/codifier/question/${id}/overview/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const putQuestion = (value: { id: number; question: PostQuestion }): Promise => {\n return api\n .put, AxiosResponse>(\n `/codifier/question/update/${value.id}/`,\n value.question,\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\n// @ts-ignore\nexport const patchQuestion = (value: { id: number; payload }): Promise => {\n return api\n .patch, AxiosResponse>(\n `/learning-material/partial-update/${value.id}/`,\n value.payload,\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const partialUpdateQuestion = (params: {\n id: number;\n values: PartialUpdateQuestion;\n}): Promise =>\n patchApiRequest(`/codifier/question/partial-update/${params.id}/`, params.values);\n\nexport const deleteQuestion = (id: number): Promise => {\n return api\n .delete, AxiosResponse>(`/codifier/question/delete/${id}/`)\n .then(() => id)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const postQuestionFile = (params: PostQuestionFile): Promise => {\n const config = {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n onUploadProgress: function (progressEvent: { loaded: number; total: number }) {\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n params.onUploadProgress?.(percentCompleted);\n },\n };\n\n const data = new FormData();\n\n data.append('file', params.file);\n if (params.question) {\n data.append('question', String(params.question));\n }\n\n return api\n .post, AxiosResponse>(`/question-file/`, data, config)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchQuestionFile = (params: { id: number; question: number }): Promise =>\n patchApiRequest(`question-file/partial-update/${String(params.id)}/`, { ...params });\n\nexport interface ResponseStudentQuestion {\n id: number;\n text: string;\n content?: string;\n html?: string;\n difficulty: DifficultyEnum;\n answersType: AnswersTypeEnum;\n answerOptionsQuantity: number;\n correctAnswerOptionsQuantity: number;\n randomOrder?: boolean;\n isActual: boolean;\n answerOptions?: {\n id: string;\n content: string;\n html?: string;\n text: string;\n order: number;\n acceptFile: boolean | null;\n acceptText: boolean | null;\n }[];\n multiply?: boolean;\n isTemplate: boolean;\n timestamp: string;\n acceptFile?: boolean;\n acceptText?: boolean;\n}\n\nexport interface HistoryQuestion {\n user: string;\n datetime: string;\n action: string;\n userRoles: UserRoles[];\n}\n\nexport const getHistoryQuestion = (id: number): Promise => {\n return getApiRequest(`/codifier/question/${id}/history/`);\n};\n","import { api, deleteApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { IHomeworkItem } from 'types/homework';\n\nexport const getStudentTasks = (\n studentId: number,\n lessonId: number,\n isMandatory?: boolean,\n): Promise => {\n const url = isMandatory\n ? `/assignment-progress/?student=${studentId}&lesson=${lessonId}&is_mandatory=${isMandatory}`\n : `/assignment-progress/?student=${studentId}&lesson=${lessonId}`;\n return api\n .get>(url)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\n// fetching the student homeworks. Used only for student role;\nexport const fetchStudentHomeworksByLesson = async (\n lessonId: number,\n isMandatory?: boolean,\n): Promise => {\n const url = isMandatory\n ? `/assignment-progress/?lesson=${lessonId}&status=assigned,on_check,completed&is_mandatory=${isMandatory}`\n : `/assignment-progress/?lesson=${lessonId}&status=assigned,on_check,completed`;\n\n return await api\n .get>(url)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const fetchStudentHomeworkById = async (id: number): Promise => {\n return await api\n .get>(`/assignment-progress/${id}/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteStudentTask = async (id: number): Promise => {\n return await deleteApiRequest(`/assignment-progress/delete/${id}/`);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getAssignmentProgressPreview } from 'api/services/homework';\nimport { getLessonDetails } from 'api/services/lesson';\nimport { fetchStudentData } from 'api/services/student';\nimport {\n deleteStudentTask,\n fetchStudentHomeworkById,\n fetchStudentHomeworksByLesson,\n getStudentTasks,\n} from 'api/services/studentTasks';\n\ninterface getStudentTasksParam {\n studentId: number;\n lessonId: number;\n isMandatory?: boolean;\n}\nexport const getStudentTasksAction = createAsyncThunk(\n 'studentTasks/getStudentTasks',\n async ({ studentId, lessonId, isMandatory }: getStudentTasksParam) => {\n return await Promise.all([\n getStudentTasks(studentId, lessonId, isMandatory),\n getLessonDetails(lessonId),\n fetchStudentData(studentId),\n ]);\n },\n);\nexport const fetchStudentHomeworksAction = createAsyncThunk(\n 'homework/fetchStudentHomeworks',\n async (params: { lessonId: number; isMandatory?: boolean }) => {\n const { lessonId, isMandatory } = { ...params };\n return await fetchStudentHomeworksByLesson(lessonId, isMandatory);\n },\n);\n\nexport const getStudentTaskById = createAsyncThunk('studentTasks/getStudentTaskById', async (id: number) => {\n return await fetchStudentHomeworkById(id);\n});\n\ntype Params = {\n student: number;\n lesson?: number;\n status?: string;\n is_mandatory?: boolean;\n};\n\nexport const getStudentTaskPreview = createAsyncThunk(\n 'studentTasks/getStudentTaskPreview',\n ({ student, lesson, status, is_mandatory }: Params) => {\n return getAssignmentProgressPreview({ student, lesson, status, is_mandatory });\n },\n);\n\nexport const deleteStudentTaskAction = createAsyncThunk(\n 'studentTasks/deleteStudentTask',\n ({ id, studentId, lessonId }: { id: number; studentId: number; lessonId: number }, { dispatch }) => {\n return deleteStudentTask(id).then(() => {\n void dispatch(getStudentTasksAction({ studentId, lessonId }));\n });\n },\n);\n","import { patchApiRequest } from 'api';\n\nexport interface PatchAssignmentMarkParams {\n id: number;\n score?: number;\n comment?: string;\n}\n\ninterface AssignmentMark {\n id: number;\n score: number;\n comment?: string;\n}\n\nexport const changeAssignmentMark = ({ id, ...params }: PatchAssignmentMarkParams): Promise => {\n return patchApiRequest(`assignment-mark/partial-update/${id}/`, params);\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteTeacherMarks = (markIds: number[]): Promise => {\n return deleteApiRequest('/teacher-mark/bulk-delete/', {\n data: markIds.map((id) => ({ id })),\n });\n};\n","import { lastAttemptDeleting } from 'constants/errors';\n\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { deleteAnswerAttempts } from 'api/services/answerAttempt';\nimport {\n changeAssignmentMark,\n changeTeacherMarks,\n createTeacherMarks,\n deleteTeacherMarks,\n PatchAssignmentMarkParams,\n PatchTeacherMarkParams,\n PostAssignmentMark,\n} from 'api/services/marks';\nimport { getTransferredMarks, TransferredMarksParams } from 'api/services/marks/getTransferredMarks';\nimport { error } from 'store/reducers/error';\n\nimport { getAnswerAttemptByProgressAction } from './answerAttempt';\nimport { getStudentTaskById } from './studentTasks';\n\nexport const createAssignmentAdditionalMarkAction = createAsyncThunk(\n 'marks/createAssignmentAdditionalMark',\n (params: PostAssignmentMark[]) => {\n return createTeacherMarks(params);\n },\n);\n\ntype ChangeTeacherMarksParams = {\n taskId: number;\n marks: PatchTeacherMarkParams[];\n};\n\nexport const changeAssignmentAdditionalMarkAction = createAsyncThunk(\n 'marks/changeAssignmentAdditionalMark',\n ({ marks }: ChangeTeacherMarksParams) => {\n return changeTeacherMarks(marks.map((mark) => ({ ...mark, comment: mark.comment || '' })));\n },\n);\n\nexport const changeAssignmentMarkAction = createAsyncThunk(\n 'marks/changeAssignmentMark',\n ({ taskId, ...params }: PatchAssignmentMarkParams & { taskId: number }, { dispatch }) => {\n return changeAssignmentMark(params).then(() => {\n void dispatch(getStudentTaskById(taskId));\n void dispatch(getAnswerAttemptByProgressAction(taskId));\n });\n },\n);\n\ntype ChangeAssignmentMarksParams = {\n taskId: number;\n marks: PatchAssignmentMarkParams[];\n};\n\nexport const changeAssignmentMarksAction = createAsyncThunk(\n 'marks/changeAssignmentsMark',\n ({ marks }: ChangeAssignmentMarksParams) => {\n return Promise.all(marks.map((mark) => changeAssignmentMark({ ...mark, comment: mark.comment ?? '' })));\n },\n);\n\ntype deleteAddittionalMarksParams = {\n marks: number[];\n taskId: number;\n};\n\nexport const deleteAssignmentAdditionalMarkAction = createAsyncThunk(\n 'marks/deleteAssignmentAdditionalMark',\n ({ marks, taskId }: deleteAddittionalMarksParams, { dispatch }) => {\n return deleteTeacherMarks(marks).then(() => {\n void dispatch(getStudentTaskById(taskId));\n });\n },\n);\n\nexport const deleteAssignmentAdditionalMarkWithCheckAction = createAsyncThunk(\n 'marks/deleteAssignmentAdditionalMarkWithCheck',\n async (\n {\n marks,\n taskId,\n handleCancelButtonClick,\n handleActionButtonClick,\n teacherMarks,\n allMarks,\n }: {\n marks: number[];\n taskId: number;\n teacherMarks: number[];\n numberOfMarks: number;\n allMarks?: number;\n handleCancelButtonClick?: () => void;\n handleActionButtonClick?: () => void;\n },\n { dispatch },\n ) => {\n if (teacherMarks.length > 0) {\n await deleteTeacherMarks(teacherMarks);\n }\n\n if (!marks.length) {\n return dispatch(getStudentTaskById(taskId));\n }\n\n if (allMarks && allMarks > marks.length) {\n return deleteAnswerAttempts(marks).then(() => {\n void dispatch(getStudentTaskById(taskId));\n });\n }\n\n dispatch(\n error({\n message: lastAttemptDeleting.error,\n extra: {\n needHideErrorIcon: true,\n isFrontend: false,\n customDescription: lastAttemptDeleting.descriptions,\n isLastAttemptDeliting: true,\n disableCancelButton: false,\n },\n actionButtonClick: handleActionButtonClick,\n cancelButtonClick: handleCancelButtonClick,\n }),\n );\n },\n);\n\nexport const getTransferredMarksAction = createAsyncThunk(\n 'marks/getTransferredMarks',\n (params: TransferredMarksParams) => {\n return getTransferredMarks(params);\n },\n);\n","import { postApiRequest } from 'api';\n\nimport { AdditionalMark, PostAssignmentMark } from './';\n\nexport const createTeacherMarks = (params: PostAssignmentMark[]): Promise => {\n return postApiRequest('/teacher-mark/bulk-create/', params);\n};\n","import { patchApiRequest } from 'api';\n\nimport { AdditionalMark } from './';\n\nexport interface PatchTeacherMarkParams {\n id: number;\n score?: number;\n comment?: string;\n}\n\nexport const changeTeacherMarks = (params: PatchTeacherMarkParams[]): Promise => {\n return patchApiRequest(`/teacher-mark/bulk-update/`, params);\n};\n","import { getApiRequest } from 'api';\n\nexport interface TransferredMarksParams {\n students: number[];\n period: number;\n courses?: number[];\n}\n\nexport interface TransferredMarks {\n id: number;\n student: number;\n course: number;\n period: number;\n scores: (2 | 3 | 4 | 5)[];\n reportCard: string;\n}\n\nexport const getTransferredMarks = (params: TransferredMarksParams): Promise => {\n return getApiRequest(`/transferred-marks/`, {\n params: {\n students: params.students.join(','),\n period: params.period,\n courses: params.courses?.join(','),\n },\n });\n};\n","import { DAY_IN_SECONDS } from 'common/constants';\nimport moment, { Moment } from 'moment';\n\n/**\n * @example capitalizeWord('1 марта 2021', 2) === 1 Марта 2021\n * @param text source text\n * @param wordIndex the ordinal number of the word in the text, starting from 1\n * @returns text with capitalize word\n */\nconst capitalizeWord = (text: string, wordIndex: number): string => {\n const result = text\n .split(' ')\n .map((word, index) => {\n if (index === wordIndex - 1) {\n return word[0].toUpperCase() + word.slice(1);\n }\n\n return word;\n })\n .join(' ');\n\n return result;\n};\n\n/**\n * Returns overdue status\n * @param deadline deadline date\n */\n\nexport const checkOverdue = (deadline?: string | number): boolean => {\n return deadline ? Number(new Date()) - Number(new Date(deadline)) > 0 : false;\n};\n\nexport const plusDaysToCurrentDate = (date: Date, days: number): Date =>\n new Date(date.getTime() + days * DAY_IN_SECONDS);\nexport const minusDaysToCurrentDate = (date: Date, days: number): Date =>\n new Date(date.getTime() - days * DAY_IN_SECONDS);\n\n/**\n * Return format date\n * @param date incoming date\n */\n\nexport const formatDate = (date: Date | string): string => {\n return moment(date).format('LL').split(' ').slice(0, 2).join(' ');\n};\n\nexport const convertDateToHtmlDateString = (date?: Date | string): string => moment(date).format('YYYY-MM-DD');\nexport const getDateString = (date?: Date | string): string => moment(date).format('DD.MM.YYYY');\n\nexport const getDayOfMonth = (date: Date | string): number => moment(date).get('date');\n\nexport const getTwoCharsDate = (date: Date): string => moment(date).format('DD');\n\nexport const getDateWithAbbreviatedMonth = (date: Date): string => moment(date).format('DD MMM');\n\n/**\n * gets a date and returns the number of minutes before the date\n * @param date - incoming date\n * @returns string\n */\n\nexport const getNumberMinutesBeforeDate = (date: Date | string): string => {\n const rightTime = moment(date).fromNow();\n return rightTime.includes('через') || rightTime.includes('in')\n ? rightTime\n .split(' ')\n .slice(1, 3)\n .map((word, index) => {\n if (index === 1 && word.length > 4) {\n return `${word.split('').slice(0, 3).join('')}.`;\n }\n\n return word;\n })\n .join(' ')\n : rightTime;\n};\n\n/**\n * Return date string 'D MMMM' with capitalaze month name\n * @example 1 марта -> 1 Марта\n * @param date incoming date\n * @returns\n */\nexport const getCapitalizeMonth = (date?: Date | string): string => {\n const result = moment(date).format('D MMMM');\n\n return capitalizeWord(result, 2);\n};\n\nexport const getDayOfMonthTitle = (date: Date | string): string => {\n const monthDay = getDayOfMonth(date);\n\n return monthDay === 1 ? getCapitalizeMonth(date) : String(monthDay);\n};\n\nexport const getWeekday = (date: Date | string): string | undefined => {\n const startDateWeekday = moment(date).startOf('month').weekday();\n const countDaysToWeekEnd = 7 - startDateWeekday;\n const monthDay = getDayOfMonth(date);\n\n if (monthDay <= countDaysToWeekEnd) {\n const result = moment(date).format('dd');\n\n return capitalizeWord(result, 1);\n }\n};\n\nexport const getDaysInMonth = (date: Date | string): number => {\n return moment(date, 'YYYY-MM').daysInMonth();\n};\n\nexport const getWeekdayNumber = (date: Date | string): number => {\n return moment(date).weekday();\n};\n\nexport const getCapitalizeStartOfWeek = (date: Date | string): string => {\n const startOfWeek = moment(date).startOf('week').format('D MMMM YYYY');\n\n return capitalizeWord(startOfWeek, 2);\n};\n\nexport const getCapitalizeEndOfWeek = (date: Date | string): string => {\n const endOfWeek = moment(date).endOf('week').format('D MMMM YYYY');\n\n return capitalizeWord(endOfWeek, 2);\n};\n\nexport const getCapitalizeMonthAndYear = (date?: Date | string | [number, number]): string => {\n let monthAndYear = moment(date).format('MMMM YYYY');\n\n if (Array.isArray(date)) {\n const [month, year] = date;\n monthAndYear = moment().set({ month, year }).format('MMMM YYYY');\n }\n\n return capitalizeWord(monthAndYear, 1);\n};\n\nexport const getStartOfMonth = (date?: Date | string): string => {\n return moment(date).startOf('month').format('YYYY-MM-DD');\n};\n\nexport const getEndOfMonth = (date?: Date | string): string => {\n return moment(date).endOf('month').format('YYYY-MM-DD');\n};\n\nexport const getStartOfWeek = (date?: Date | string, format?: string): string => {\n return moment(date).startOf('week').format(format);\n};\n\nexport const getEndOfWeek = (date?: Date | string, format?: string): string => {\n return moment(date).endOf('week').format(format);\n};\n\n/**\n *\n * @param date start week date\n * @returns array of dates\n */\n\nexport const getWeekArray = (date: Date | string): string[] => {\n const start = moment(date);\n const resultArray = [];\n\n for (let i = 0; i < 7; i = i + 1) {\n const newDate = moment(start).add(i, 'd').format('YYYY-MM-DD');\n resultArray.push(newDate);\n }\n\n return resultArray;\n};\n\nexport const getCalendarWeekTitle = (date: Date | string): string => {\n const weekday = capitalizeWord(moment(date).format('dd'), 1);\n\n if (weekday === 'Пн') {\n return `${weekday} - ${getCapitalizeMonth(date)}`;\n }\n\n return `${weekday} - ${getDayOfMonthTitle(date)}`;\n};\n\nexport const getTimeArray = (startTime: number, maxTime: number, step = 60): string[] => {\n const resultArray: string[] = [];\n const startTimeMinutes = startTime * 60;\n const endTimeMinutes = maxTime * 60;\n for (let i = startTimeMinutes; i <= endTimeMinutes; i = i + step) {\n const hours = Math.floor(i / 60);\n const minutes = i % 60;\n const newHours = String(hours).length < 2 ? `0${hours}` : String(hours);\n const newMinutes = String(minutes).length < 2 ? `0${minutes}` : String(minutes);\n\n resultArray.push(`${newHours}:${newMinutes}`);\n }\n\n return resultArray;\n};\n\ntype TimeStatus = 'future' | 'present' | 'late' | 'past';\nexport const getTimeStatus = (start: Date | string, end: Date | string): TimeStatus => {\n const lateTimeStart = moment(start).add(15, 'm').format();\n const isBefore = moment().isBefore(start);\n const isPresent = moment().isBetween(start, lateTimeStart);\n const isLate = moment().isBetween(lateTimeStart, end);\n\n if (isBefore) {\n return 'future';\n }\n\n if (isPresent) {\n return 'present';\n }\n\n if (isLate) {\n return 'late';\n }\n\n return 'past';\n};\n\nexport const getTimeBeforeDate = (date: Date | string): string => {\n return moment(date).toNow(true);\n};\n\nexport const getTimeAfterDate = (date: Date | string): string => {\n return moment(date).fromNow(true);\n};\n\n/**\n * return ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']\n */\nexport const getWeekdayNames = (): string[] => {\n return new Array(7).fill(' ').map((_, index) => {\n switch (index) {\n case 0:\n return 'Пн';\n case 1:\n return 'Вт';\n case 2:\n return 'Ср';\n case 3:\n return 'Чт';\n case 4:\n return 'Пт';\n case 5:\n return 'Сб';\n default:\n return 'Вс';\n }\n });\n};\n\ninterface CalendarDropdownDay {\n label: string;\n date: string;\n inactive?: boolean;\n}\nexport const getCalendarDropdownDays = (month: number, year: number): CalendarDropdownDay[] => {\n const start = moment().set({ month, year }).startOf('month');\n const daysCount = start.daysInMonth();\n\n return new Array(daysCount).fill(' ').map((_, index) => {\n const date = moment(start).add(index, 'd');\n return {\n label: date.format('D'),\n inactive: false,\n date: date.format('YYYY-MM-DD'),\n };\n });\n};\n\n/**\n * @example 2021-05-06T15:30 -> 06.05.2021 в 15:30\n * @param date incomind date\n * @returns\n */\nexport const getDatepickerSelectTitle = (date: string | Date): string => {\n const resultDate = moment(date).format('DD.MM.YYYY');\n const resultTime = moment(date).format('HH:mm');\n if (resultTime === '00:00') {\n return `${resultDate}`;\n }\n return `${resultDate} в ${resultTime}`;\n};\n\nexport const getSelectedDate = (day?: string | Date, time?: string): moment.Moment => {\n const [hours, minutes] = time?.split(':') || [0, 0];\n const newDate = moment(day).add(hours, 'h').add(minutes, 'minute');\n\n return newDate;\n};\n\nexport interface DateComponents {\n month: number;\n year: number;\n dateWithoutTime?: string;\n time?: string;\n dateWithMonth?: string;\n}\nexport const getDateComponents = (date?: string | Date): DateComponents => {\n return {\n month: moment(date)?.get('month') || moment().get('month'),\n year: moment(date)?.get('year') || moment().get('year'),\n dateWithoutTime: date ? moment(date)?.format('YYYY-MM-DD') || moment().format('YYYY-MM-DD') : undefined,\n time: date ? moment(date)?.format('HH:mm') || moment(date).format('HH:mm') : undefined,\n dateWithMonth: date\n ? moment().isBefore(date) && moment().format('D') !== moment(date).format('D')\n ? getCapitalizeMonth(date)\n : 'сегодня'\n : undefined,\n };\n};\n\n/**\n *\n * @param date verified date\n * @param inactiveCondition date inactive condition or callback to check\n * @returns\n */\nexport const isInactive = (\n date: Date | string,\n inactiveCondition?: 'past' | 'future' | ((date: Date | string) => boolean),\n): boolean => {\n if (inactiveCondition === 'past') {\n return moment().startOf('day').isAfter(date);\n }\n\n if (inactiveCondition === 'future') {\n return !moment().endOf('day').isAfter(date);\n }\n\n if (inactiveCondition instanceof Function) {\n return inactiveCondition(date);\n }\n\n return false;\n};\n\nexport const getDateWithoutYear = (date: Date | string): string => {\n return moment(date).format('DD.MM');\n};\n\nexport const checkIsPeriodEnd = (periodEnd: Date | string, date?: Date | string): boolean => {\n return moment(date).isAfter(periodEnd);\n};\n\n/**\n * @example 2021-05-06T15:30 -> 06 Мая в 15:30\n * @param date incoming date\n * @returns\n */\nexport const getDateWithTime = (date?: Date | string): string =>\n capitalizeWord(moment(date).format('D MMMM [в] HH:mm'), 2);\n\nexport const isDateTomorrow = (date: Date | string): boolean => {\n const endOfToday = moment().endOf('day');\n const endOfTomorrow = moment().add(1, 'day').endOf('day');\n\n return moment(date).isBetween(endOfToday, endOfTomorrow);\n};\n\nexport const getTodayData = (): string => {\n return moment().format('YYYY-MM-DD');\n};\n\n/**\n *\n * @param dates array of dates\n * @returns earliest date\n */\nexport const getEarliestDate = (dates: string[]): string => {\n return dates.reduce((closestDate, date) => {\n return moment(closestDate).isBefore(date) ? moment(closestDate).format() : moment(date).format();\n }, moment().format());\n};\n\nexport const getNumberHoursBeforeDate = (date: Date | string | Moment): number => {\n return moment().diff(date);\n};\n\nexport const checkIsBeetween = (start: Date | string, end: Date | string): boolean => {\n return moment().isBetween(start, end);\n};\n\n/**\n *\n * @param first first date\n * @param second second date\n * @param granularity level of granularity comparison\n * @returns\n */\nexport const checkIsSameDates = (\n first: Moment | Date | string,\n second: Moment | Date | string,\n granularity: moment.unitOfTime.StartOf = 'minute',\n): boolean => {\n const secondDate = moment(second);\n return moment(first).isSame(secondDate, granularity);\n};\n\n/**\n *\n * @param startLesson - start time of lesson\n * @param numberOfMinutes - number of minutes before start user can change lesson\n * @returns\n */\nexport const checkCanEditLesson = (startLesson?: Date | string | Moment, numberOfMinutes = 30): boolean => {\n if (!startLesson) {\n return true;\n }\n\n return moment().add(numberOfMinutes, 'minute').isBefore(startLesson);\n};\n\nexport const checkIsDayBefore = (first: Date | string, second?: Date | string): boolean => {\n const secondMoment = moment(second).startOf('day');\n return moment(first).isBefore(secondMoment);\n};\n\ntype AddMinutesData = {\n date?: string | Date;\n minutes?: number;\n};\n\nexport const addMinutes = ({ date, minutes = 0 }: AddMinutesData): string => {\n return moment(date).add(minutes, 'minutes').format();\n};\n\n/**\n *\n * @param correctTime [HH:MM] текущее время по МСК;\n */\nexport const checkTimezone = (correctTime: string): boolean => {\n const [correctHours, correctMinutes] = correctTime?.split(':').map(Number);\n const currentTime = moment.tz('Europe/Moscow');\n const currentHours = currentTime.get('hours');\n const currentMinutes = currentTime.get('minutes');\n\n switch (true) {\n case Math.abs(correctHours - currentHours) > 1:\n case correctHours !== currentHours && Math.abs(correctMinutes - currentMinutes) < 45:\n case correctHours === currentHours && Math.abs(correctMinutes - currentMinutes) > 15:\n return false;\n default:\n return true;\n }\n};\n\nexport const getDiffBetweenDates = (\n start: string,\n end: string,\n unitOfTime: moment.unitOfTime.Diff = 'minute',\n): number => {\n return moment(start).diff(end, unitOfTime);\n};\n\nexport const normalizeTimeToMonitoring = (start?: string, end?: string): string => {\n return `${moment(start).format('HH:mm')} - ${moment(end).format('HH:mm')}`;\n};\n","export enum UserRoles {\n PARENT = 'parent',\n STUDENT = 'student',\n TEACHER = 'teacher',\n METHODIST = 'methodist',\n CURATOR = 'curator',\n PRINCIPAL = 'principal',\n SUPPORT = 'support',\n ILSTUDENT = 'il',\n PROCTOR = 'proctor',\n TUTOR = 'tutor',\n NEWS_EDITOR = 'news_editor',\n LIBRARIAN = 'librarian',\n}\n\nexport interface User {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string | null;\n photoUrl?: string;\n online: boolean;\n lastSeen: string;\n useRoles: string[];\n atMeeting: boolean;\n}\nexport type TUserCommon = {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n photoUrl?: string;\n online: boolean;\n lastSeen: string;\n mainRole: string;\n};\n","import {\n ICreateTrainingRequest,\n ICreateTrainingResponse,\n IMaterialsMetaResponse,\n ITrainingCountInfo,\n ITrainingCountRequest,\n ITrainingProgressRequest,\n ITrainingProgressResponse,\n ITrainingQuestionDataResponse,\n ITrainingQuestionRequest,\n ITrainingQuestionResponse,\n ITrainingSearchBlockRequest,\n ITrainingSearchBlockResponse,\n} from '@fsd-shared/models/materials';\nimport { getApiRequest, postApiRequest } from 'api';\n\nexport const getTrainingProgress = (params: ITrainingProgressRequest): Promise => {\n return postApiRequest(`api/v2/training/progress/`, params);\n};\n\nexport const getMaterialsMeta = (course: number): Promise =>\n postApiRequest(`meta/course/`, { course });\n\nexport const getTrainingQuestions = (params: ITrainingQuestionRequest): Promise => {\n return postApiRequest(`api/v2/training/questions/`, params);\n};\n\nexport const postCreateTraining = (params: ICreateTrainingRequest): Promise => {\n return postApiRequest(`api/v2/training/create/`, params);\n};\n\nexport const getQuestionData = (questionId: number): Promise => {\n return getApiRequest(`api/v2/training/questions/${questionId}/`);\n};\n\nexport const getTrainingCount = (params: ITrainingCountRequest): Promise => {\n return postApiRequest(`api/v2/training/`, params);\n};\n\nexport const postTrainingSearchBlocks = (\n params: ITrainingSearchBlockRequest,\n): Promise> => {\n return postApiRequest(`api/v2/training/search-blocks/`, params);\n};\n","import {\n ITrainingCountRequest,\n ITrainingProgressRequest,\n ITrainingQuestionRequest,\n ITrainingSearchBlockRequest,\n ITrainingSearchBlockResponse,\n ITrainingSearchBlocksQuestionsData,\n} from '@fsd-shared/models/materials';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getQuestionSearchByQueryFilters } from 'api/services/questionCreate';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\nimport { Status } from 'pages/QuestionBankPage/types';\n\nimport { convertQueryFiltersToPageFilters } from 'utils/searchBlocks';\n\nimport {\n getMaterialsMeta,\n getTrainingCount,\n getTrainingProgress,\n getTrainingQuestions,\n postTrainingSearchBlocks,\n} from './materialsApi';\n\nexport const getTrainingProgressAction = createAsyncThunk(\n 'materials/getTrainingProgressAction',\n async (params: ITrainingProgressRequest) => getTrainingProgress(params),\n);\n\nexport const getMaterialsMetaAction = createAsyncThunk('materials/getMaterialsMetaAction', async (course: number) =>\n getMaterialsMeta(course),\n);\n\nexport const getTrainingQuestionsAction = createAsyncThunk(\n 'materials/getTrainingQuestionsAction',\n async (params: ITrainingQuestionRequest & { isLoadingMore?: boolean }) => {\n delete params?.isLoadingMore;\n return getTrainingQuestions(params);\n },\n);\n\nexport const getTrainingCountAction = createAsyncThunk(\n 'materials/getTrainingCountAction',\n async (params: ITrainingCountRequest) => getTrainingCount(params),\n);\n\nexport const getTrainingSearchBlocksQuestionsAction = createAsyncThunk(\n 'materials/getTrainingSearchBlocksQuestionsAction',\n async (params: ITrainingSearchBlockRequest): Promise => {\n const initSearchBlocks = await postTrainingSearchBlocks(params);\n const singleQuestions: IQuestion[] = [];\n const searchBlocks: ISearchBlock[] = [];\n let excludesAndSingleIds: number[] = [];\n const singleQuestionsIds: number[] = [];\n\n await Promise.all(\n initSearchBlocks.map(async ({ filters, single }) => {\n if (single) {\n singleQuestions.push((await getQuestionSearchByQueryFilters(filters))[0]);\n if (filters?.id) {\n singleQuestionsIds.push(filters.id);\n }\n }\n excludesAndSingleIds = [...(filters?.excludeIds ?? []), ...excludesAndSingleIds];\n }),\n );\n\n const initExcludesIds = excludesAndSingleIds.filter((item) => !singleQuestionsIds?.includes(item));\n await Promise.all(\n initSearchBlocks\n .filter((item) => !item.single)\n .map(async ({ filters, single, id }, index) => {\n if (!single) {\n searchBlocks.push({\n id: id,\n numSearch: index + 1,\n questions: await getQuestionSearchByQueryFilters({\n ...filters,\n excludeIds: [],\n status: Status.Published,\n }),\n filters: convertQueryFiltersToPageFilters(filters),\n });\n }\n }),\n );\n\n return { singleQuestions, searchBlocks, initSearchBlocks, initExcludesIds };\n },\n);\n","import { IInsertWordAnswerData, IInsertWordsCheckedAnswer } from '@fsd-shared/models/materials';\n\nconst INSERT_WORD_REPLACE = '';\nconst INSERT_WORD_REGEX = /(

).*(<\\/p>)/gm;\n\nconst getQuestionParts = (question: string): Array => {\n const result: string[] = [];\n let lastIndex = 0;\n\n const getQuestion = (text: string): Array => {\n const questionPartExec = INSERT_WORD_REGEX.exec(text);\n\n if (questionPartExec !== null) {\n if (result.length === 0 && questionPartExec.index > 0) {\n result.push(`${question.slice(0, questionPartExec.index)}
`);\n }\n\n lastIndex = questionPartExec.index + questionPartExec[0].length;\n\n result.push(`${questionPartExec[0].slice(3, questionPartExec[0].length - 4)}
`);\n return getQuestion(text);\n }\n\n if (lastIndex > 0 && lastIndex !== question.length - 1) {\n result.push(`${question.slice(lastIndex, question.length)}`.replace('

', ''));\n }\n\n return result;\n };\n\n return getQuestion(question);\n};\n\nexport const normalizeInsertWordQuestion = (question: string): Array => {\n if (question?.length) {\n const questionParts = getQuestionParts(question);\n\n if (questionParts.length) {\n return questionParts\n .flatMap((questionPart) => questionPart.split(new RegExp(`(${INSERT_WORD_REPLACE})`)))\n .reduce<{ parts: (string | number)[]; count: number }>(\n (accum, part) =>\n part === INSERT_WORD_REPLACE\n ? { parts: [...accum.parts, accum.count], count: accum.count + 1 }\n : { parts: [...accum.parts, part], count: accum.count },\n { parts: [], count: 0 },\n ).parts;\n }\n\n return question\n .split(new RegExp(`(${INSERT_WORD_REPLACE})`))\n .reduce<{ parts: (string | number)[]; count: number }>(\n (accum, part) =>\n part === INSERT_WORD_REPLACE\n ? { parts: [...accum.parts, accum.count], count: accum.count + 1 }\n : { parts: [...accum.parts, part], count: accum.count },\n { parts: [], count: 0 },\n ).parts;\n }\n return [];\n};\n\nexport const normalizeInsertWordCorrectAnswerData = (\n correctAnswer: IInsertWordsCheckedAnswer,\n): IInsertWordAnswerData => {\n const { incomplete, isCorrect, data } = correctAnswer;\n\n return {\n incomplete,\n correctness: isCorrect ? 'correct' : 'incorrect',\n answerOptions: data.selectedOptions.map(({ selectedWord, isCorrect, gapIndex }) => ({\n selectedWord,\n correctness: isCorrect ? 'correct' : 'incorrect',\n gapIndex,\n })),\n };\n};\n","import { ITrueFalseAnswerData, ITrueFalseCheckedAnswer } from '@fsd-shared/models/materials';\n\nconst TRUE_FALSE_ANSWER_OPTIONS = [\n { value: false, label: 'Неверно' },\n { value: true, label: 'Верно' },\n];\n\nexport const normalizeTrueFalseAnswerData = (): ITrueFalseAnswerData => {\n return {\n answerOptions: TRUE_FALSE_ANSWER_OPTIONS,\n };\n};\nexport const normalizeTrueFalseCorrectAnswerData = (correctAnswer: ITrueFalseCheckedAnswer): ITrueFalseAnswerData => {\n const { data, isCorrect } = correctAnswer;\n return {\n answerOptions: TRUE_FALSE_ANSWER_OPTIONS.map((item) => {\n if (item.value === data.answer) {\n return { ...item, correctness: isCorrect ? 'correct' : 'incorrect' };\n }\n return { ...item };\n }),\n correctness: isCorrect ? 'correct' : 'incorrect',\n };\n};\n","import {\n IExercise,\n IInsertWordsCheckedAnswer,\n IQuestionResponse,\n ITestAnswerData,\n ITestCheckedAnswer,\n ITextCheckedAnswer,\n ITrueFalseCheckedAnswer,\n TCheckTrainingQuestionResponse,\n TQuestionType,\n} from '@fsd-shared/models/materials';\n\nimport { normalizeInsertWordCorrectAnswerData, normalizeInsertWordQuestion } from './insertWordsQuestionNormalizer';\nimport { normalizeTestAnswerData, normalizeTestCorrectAnswerData } from './testQuestionNormalizer';\nimport { normalizeTextCorrectAnswerData } from './textQuestionNormalizer';\nimport { normalizeTrueFalseAnswerData, normalizeTrueFalseCorrectAnswerData } from './trueFasleQuestionNormalizer';\n\nconst normalizeAnswerData = (questionData: IQuestionResponse['data'], type: TQuestionType): IExercise['answerData'] => {\n switch (type) {\n case 'true_false':\n return normalizeTrueFalseAnswerData();\n case 'test':\n return normalizeTestAnswerData(questionData);\n default:\n return {};\n }\n};\n\nconst normalizeExerciseQuestion = (question: IQuestionResponse): IExercise['question'] => {\n const { text, html, answersType } = question;\n const questionValue = html || text;\n switch (answersType) {\n case 'insert_words':\n return normalizeInsertWordQuestion(questionValue);\n default:\n return questionValue;\n }\n};\nexport const normalizeQuestion = (question: IQuestionResponse | undefined): IExercise | undefined => {\n if (question) {\n const { data, answersType, multiply, id } = question;\n return {\n id: id,\n type: answersType,\n multiply: multiply,\n question: normalizeExerciseQuestion(question),\n answerData: normalizeAnswerData(data, answersType),\n };\n }\n return question;\n};\n\nconst normalizeCorrectAnswerData = (\n type: TQuestionType,\n questionData: IExercise['answerData'],\n correctAnswer: TCheckTrainingQuestionResponse,\n): IExercise['answerData'] => {\n switch (type) {\n case 'true_false':\n return normalizeTrueFalseCorrectAnswerData(correctAnswer as ITrueFalseCheckedAnswer);\n case 'test':\n return normalizeTestCorrectAnswerData(questionData as ITestAnswerData, correctAnswer as ITestCheckedAnswer);\n case 'insert_words':\n return normalizeInsertWordCorrectAnswerData(correctAnswer as IInsertWordsCheckedAnswer);\n case 'text':\n return normalizeTextCorrectAnswerData(correctAnswer as ITextCheckedAnswer);\n default:\n return {};\n }\n};\n\nexport const normalizeCorrectAnswerToQuestion = (\n correctAnswer: TCheckTrainingQuestionResponse,\n question?: IExercise,\n): IExercise | undefined => {\n if (question) {\n const { type, answerData } = question;\n\n return {\n ...question,\n answerData: normalizeCorrectAnswerData(type, answerData, correctAnswer),\n };\n }\n\n return undefined;\n};\n","import { ITestAnswerData, ITestCheckedAnswer, ITestQuestionResponse } from '@fsd-shared/models/materials';\n\nexport const normalizeTestAnswerData = (questionData: ITestQuestionResponse): ITestAnswerData => {\n const { randomAnswerOrder, answerOptions } = questionData || {};\n return {\n randomAnswerOrder: randomAnswerOrder,\n answerOptions: answerOptions?.map((answer, index) => {\n return {\n label:\n answer.html ||\n ((JSON.parse(answer.content) as Record]>)['blocks'] as Array<{\n text?: string;\n }>)[0]['text'] ||\n '',\n value: String(answer?.uuid || index),\n };\n }),\n };\n};\n\nexport const normalizeTestCorrectAnswerData = (\n answerData: ITestAnswerData,\n correctAnswer: ITestCheckedAnswer,\n): ITestAnswerData => {\n const { data, isCorrect } = correctAnswer;\n const { randomAnswerOrder, answerOptions } = answerData;\n return {\n randomAnswerOrder: randomAnswerOrder,\n answerOptions: answerOptions.map((item) => {\n const answerItem = data.selectedOptions?.find((option) => option.uuid === item.value);\n if (answerItem) {\n return { ...item, correctness: answerItem.isCorrect ? 'correct' : 'incorrect' };\n }\n return { ...item };\n }),\n correctness: isCorrect ? 'correct' : 'incorrect',\n };\n};\n","import { ITextAnswerData, ITextCheckedAnswer } from '@fsd-shared/models/materials';\n\nexport const normalizeTextCorrectAnswerData = (correctAnswer: ITextCheckedAnswer): ITextAnswerData => {\n const { data, isCorrect } = correctAnswer;\n return {\n answer: data.selectedOption,\n correctness: isCorrect ? 'correct' : 'incorrect',\n };\n};\n","import { IPagination } from '@fsd-shared/models/app';\nimport {\n IMaterialsMeta,\n ITrainingCountInfo,\n ITrainingProgress,\n ITrainingQuestionInfo,\n ITrainingSearchBlockResponse,\n} from '@fsd-shared/models/materials';\nimport { createSlice } from '@reduxjs/toolkit';\nimport { QuestionSearchBarFieldsValues } from 'containers/QuestionSearchBar';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\n\nimport {\n getMaterialsMetaAction,\n getTrainingCountAction,\n getTrainingProgressAction,\n getTrainingQuestionsAction,\n getTrainingSearchBlocksQuestionsAction,\n} from './materialsActions';\nimport { normalizeCorrectAnswerToQuestion, normalizeMaterialsMeta, normalizeQuestion } from './normalizers';\n\nexport interface IMaterialsState {\n meta?: IMaterialsMeta;\n training?: {\n exercise?: Partial & {\n isQuestionLoading?: boolean;\n isCheckQuestionLoading?: boolean;\n };\n questionList?: {\n list?: Array;\n pagination?: IPagination;\n isLoading?: boolean;\n isLoadingMore?: boolean;\n };\n trainingCountInfo?: {\n info?: ITrainingCountInfo;\n isLoading?: boolean;\n };\n trainingSearchBlocksData?: {\n isLoading?: boolean;\n initSearchBlocks?: Array;\n trainerSearches?: {\n singleQuestions: IQuestion[];\n rightSearchBlocks: ISearchBlock[];\n leftSearchBlocks: ISearchBlock[];\n };\n initExcludesIds?: Array;\n numSearch?: number;\n filters?: QuestionSearchBarFieldsValues[];\n };\n };\n}\n\nconst initialState: IMaterialsState = {};\n\nconst materialsSlice = createSlice({\n name: 'materials',\n initialState,\n reducers: {\n setEditTraining: (state, { payload }) => {\n const {\n filters: newFilters,\n numSearch: newNumSearch,\n singleQuestions: newSingleQuestions,\n rightSearchBlocks: newRightSearchBlocks,\n leftSearchBlocks: newLeftSearchBlocks,\n } = payload || {};\n const { numSearch: oldNumSearch, filters: oldFilters } = state.training?.trainingSearchBlocksData || {};\n const {\n singleQuestions: oldSingleQuestions,\n rightSearchBlocks: oldRightSearchBlocks,\n leftSearchBlocks: oldLeftSearchBlocks,\n } = state.training?.trainingSearchBlocksData?.trainerSearches || {};\n state.training = {\n ...state.training,\n trainingSearchBlocksData: {\n ...state.training?.trainingSearchBlocksData,\n filters: newFilters ?? oldFilters,\n numSearch: newNumSearch ?? oldNumSearch,\n trainerSearches: {\n singleQuestions: newSingleQuestions ?? oldSingleQuestions,\n rightSearchBlocks: newRightSearchBlocks ?? oldRightSearchBlocks,\n leftSearchBlocks: newLeftSearchBlocks ?? oldLeftSearchBlocks,\n },\n },\n };\n },\n initTrainerData: (state) => {\n state.training = {\n ...state.training,\n trainingSearchBlocksData: {\n initSearchBlocks: [],\n trainerSearches: {\n singleQuestions: [],\n rightSearchBlocks: [],\n leftSearchBlocks: [],\n },\n initExcludesIds: [],\n },\n };\n },\n resetTrainerData: (state) => {\n state.training = {\n ...state.training,\n trainingSearchBlocksData: undefined,\n };\n },\n resetExercise: (state) => {\n state.training = {\n ...state.training,\n exercise: undefined,\n };\n },\n },\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {\n builder.addCase(getMaterialsMetaAction.fulfilled, (state, { payload }) => {\n state.meta = normalizeMaterialsMeta(payload);\n });\n builder.addCase(getTrainingProgressAction.pending, (state, { meta }) => {\n const { check } = meta.arg;\n const isCheck = !!check;\n state.training = {\n ...state.training,\n exercise: {\n ...state.training?.exercise,\n isQuestionLoading: true,\n isCheckQuestionLoading: isCheck,\n },\n };\n });\n builder.addCase(getTrainingProgressAction.fulfilled, (state, { payload }) => {\n const { question, statistics, answer } = payload;\n const normalizedQuestion = normalizeQuestion(question);\n const newQuestion = answer\n ? normalizeCorrectAnswerToQuestion(answer.data, normalizedQuestion)\n : normalizedQuestion;\n state.training = {\n ...state.training,\n exercise: {\n question: newQuestion,\n statistics: statistics,\n isQuestionLoading: false,\n isCheckQuestionLoading: false,\n },\n };\n });\n builder.addCase(getTrainingProgressAction.rejected, (state) => {\n state.training = {\n ...state?.training,\n exercise: {\n ...state.training?.exercise,\n isQuestionLoading: false,\n isCheckQuestionLoading: false,\n },\n };\n });\n builder.addCase(getTrainingQuestionsAction.pending, (state, { meta }) => {\n const isMore = meta.arg.isLoadingMore;\n\n state.training = {\n ...state.training,\n questionList: {\n ...state.training?.questionList,\n isLoading: !isMore,\n isLoadingMore: isMore,\n },\n };\n });\n builder.addCase(getTrainingQuestionsAction.fulfilled, (state, { payload }) => {\n const isMore = state?.training?.questionList?.isLoadingMore;\n\n let newQuestions = payload?.results ?? [];\n if (isMore) {\n newQuestions = [...(state?.training?.questionList?.list ?? []), ...newQuestions];\n }\n\n state.training = {\n ...state.training,\n questionList: {\n ...state.training?.questionList,\n pagination: payload.pagination,\n list: newQuestions,\n isLoadingMore: false,\n isLoading: false,\n },\n };\n });\n builder.addCase(getTrainingQuestionsAction.rejected, (state) => {\n state.training = {\n ...state?.training,\n questionList: {\n ...state.training?.questionList,\n isLoading: false,\n isLoadingMore: false,\n },\n };\n });\n builder.addCase(getTrainingCountAction.pending, (state) => {\n state.training = {\n ...state?.training,\n trainingCountInfo: { ...state?.training?.trainingCountInfo, isLoading: true },\n };\n });\n builder.addCase(getTrainingCountAction.fulfilled, (state, { payload }) => {\n state.training = {\n ...state?.training,\n trainingCountInfo: { info: payload, isLoading: false },\n };\n });\n builder.addCase(getTrainingCountAction.rejected, (state) => {\n state.training = {\n ...state?.training,\n trainingCountInfo: { ...state?.training?.trainingCountInfo, isLoading: false },\n };\n });\n builder.addCase(getTrainingSearchBlocksQuestionsAction.pending, (state) => {\n state.training = {\n ...state.training,\n trainingSearchBlocksData: {\n ...state.training?.trainingSearchBlocksData,\n isLoading: true,\n },\n };\n });\n builder.addCase(getTrainingSearchBlocksQuestionsAction.fulfilled, (state, { payload }) => {\n state.training = {\n ...state.training,\n trainingSearchBlocksData: {\n ...state.training?.trainingSearchBlocksData,\n isLoading: false,\n initSearchBlocks: payload?.initSearchBlocks || {},\n trainerSearches: {\n singleQuestions: payload?.singleQuestions || [],\n rightSearchBlocks: payload?.searchBlocks || [],\n leftSearchBlocks: payload?.searchBlocks || [],\n },\n initExcludesIds: payload?.initExcludesIds || [],\n },\n };\n });\n builder.addCase(getTrainingSearchBlocksQuestionsAction.rejected, (state) => {\n state.training = {\n ...state.training,\n trainingSearchBlocksData: {\n ...state.training?.trainingSearchBlocksData,\n isLoading: false,\n },\n };\n });\n },\n});\nexport const { setEditTraining, resetExercise, initTrainerData, resetTrainerData } = materialsSlice.actions;\n\nexport const materialsReducer = materialsSlice.reducer;\n","import {\n IMaterialsMeta,\n IMaterialsMetaResponse,\n IMaterialsMetaRoles,\n TMaterialsRoles,\n} from '@fsd-shared/models/materials';\n\nconst convertRoles = (roles: Array): IMaterialsMetaRoles => {\n return {\n isMethodist: roles.includes('methodist'),\n isStudent: roles.includes('student'),\n isTeacher: roles.includes('teacher'),\n };\n};\n\nexport const normalizeMaterialsMeta = (meta: IMaterialsMetaResponse): IMaterialsMeta => {\n const roles = convertRoles(meta.roles);\n return { ...meta, roles };\n};\n","import React, { FC } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { SleepingOwlPng, TwoPeopleLookingForPng } from '@fsd-shared/assets';\n\nimport { IEmptyTrainerCardProps } from './EmptyTrainerCard.types';\n\nimport './EmptyTrainerCard.scss';\nconst CmdEmptyTrainerCard = cn('empty-trainer-card');\n\nexport const EmptyTrainerCard: FC = (props) => {\n const { type, height = `calc(100vh - 200px)` } = props;\n const isNoAccess = type === 'noAccess';\n const image = isNoAccess ? TwoPeopleLookingForPng : SleepingOwlPng;\n const text = isNoAccess ? 'У вас нет доступа к данному разделу' : 'Вопросы для тренажёра ещё не добавлены';\n\n return (\n

\n \n \"empty-iamge\"\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Checkbox } from 'antd';\nimport { CheckboxValueType } from 'antd/es/checkbox/Group';\n\nimport { IMultiplyAnswerExerciseOptions, IMultiplyAnswerExerciseProps } from './MultiplyAnswerExercise.types';\n\nimport './MultiplyAnswerExercise.scss';\n\nconst CnSingleAnswerExercise = cn('single-answer-exercise');\n\nexport const MultiplyAnswerExercise: React.FC = (props) => {\n const { localAnswerValue, answerData, exerciseInfo, setLocalAnswerValue } = props;\n const { answerOptions, correctness } = answerData;\n const onChange = (e: CheckboxValueType[]) => {\n setLocalAnswerValue(e);\n };\n\n useEffect(() => {\n if (!localAnswerValue) {\n const values: CheckboxValueType[] = [];\n answerOptions?.forEach((item: IMultiplyAnswerExerciseOptions) => {\n if (item?.correctness) {\n values.push(item.value);\n }\n });\n setLocalAnswerValue(values);\n }\n }, [answerOptions]);\n\n return (\n
\n {exerciseInfo}\n \n \n
\n {answerOptions?.map((item: IMultiplyAnswerExerciseOptions, index: number) => {\n return (\n \n \n \n \n
\n );\n })}\n
\n \n \n );\n};\n","export const NEW_LINE_DELIMITER = '';\n","import { IInsertWordAnswerData, TAnswerCorrectness } from '@fsd-shared/models/materials';\n\nexport const getInsertWordInputStatus = (\n value?: string,\n answerOptions?: IInsertWordAnswerData['answerOptions'],\n): TAnswerCorrectness | string => {\n let correctness: TAnswerCorrectness | string = '';\n answerOptions?.forEach((item) => {\n if (item.selectedWord?.trim() === value?.trim() && !correctness) {\n correctness = item?.correctness ?? '';\n }\n });\n return correctness;\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Input } from 'antd';\n\nimport { NEW_LINE_DELIMITER } from './InsertWordsExercise.config';\nimport { IInsertWordsOptionProps } from './InsertWordsExercise.types';\nimport { getInsertWordInputStatus } from './InsertWordsExercise.utils';\n\nimport './InsertWordsExercise.scss';\n\nconst CnInsertWordsExercise = cn('insert-word-exercise');\n\nexport const InsertWordsExercise: React.FC = (props) => {\n const { question, answerData, localAnswerValue, setLocalAnswerValue } = props;\n const { correctness, answerOptions } = answerData || {};\n const onChangeValue = (value: string, index: number) => {\n setLocalAnswerValue({ ...localAnswerValue, [index]: { value: value } });\n };\n\n return (\n
\n {question.map((part, index) => {\n const answerValue = typeof part === 'number' ? answerOptions?.[part]?.selectedWord || '' : '';\n const value = localAnswerValue?.[index]?.value || answerValue;\n return typeof part === 'number' ? (\n onChangeValue(event.target.value, index)}\n />\n ) : (\n part\n .split(new RegExp(`(${NEW_LINE_DELIMITER})`))\n .map((item, index) =>\n item === NEW_LINE_DELIMITER ? (\n
\n ) : (\n \n ),\n )\n );\n })}\n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppText, AppTextareaInput } from '@frontend-modules/ui-kit';\n\nimport { IOpenAnswerExerciseProps } from './OpenAnswerExercise.types';\n\nimport './OpenAnswerExercise.scss';\n\nconst CnOpenAnswerExercise = cn('open-answer-exercise');\n\nexport const OpenAnswerExercise: React.FC = (props) => {\n const { exerciseInfo, localAnswerValue, correctness, setLocalAnswerValue } = props;\n\n return (\n
\n {exerciseInfo}\n \n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Radio, RadioChangeEvent } from 'antd';\n\nimport { ISingleAnswerExerciseOptions, ISingleAnswerExerciseProps } from './SingleAnswerExercise.types';\n\nimport './SingleAnswerExercise.scss';\n\nconst CnSingleAnswerExercise = cn('single-answer-exercise');\n\nexport const SingleAnswerExercise: React.FC = (props) => {\n const { localAnswerValue, answerData, exerciseInfo, setLocalAnswerValue } = props;\n const { answerOptions, correctness } = answerData;\n const onChange = (e: RadioChangeEvent) => {\n setLocalAnswerValue(e.target.value);\n };\n\n useEffect(() => {\n if (!localAnswerValue) {\n answerOptions?.forEach((item: ISingleAnswerExerciseOptions) => {\n if (item?.correctness) {\n setLocalAnswerValue(item.value as any);\n }\n });\n }\n }, [answerOptions]);\n\n return (\n
\n {exerciseInfo}\n \n \n
\n {answerOptions?.map((item: ISingleAnswerExerciseOptions, index: number) => {\n return (\n \n \n \n \n
\n );\n })}\n
\n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { MultiplyAnswerExercise } from '@fsd-entities/materials/ui/Exercise/MultiplyAnswerExercise';\nimport { IInsertWordAnswerData, ITestAnswerData, ITrueFalseAnswerData } from '@fsd-shared/models/materials';\n\nimport { IExerciseLocalValue, IExerciseProps } from './Exercise.types';\nimport { InsertWordsExercise } from './InsertWordsExercise';\nimport { OpenAnswerExercise } from './OpenAnswerExercise';\nimport { SingleAnswerExercise } from './SingleAnswerExercise';\n\nimport './Exercise.styles.scss';\n\nconst CnExercise = cn('exercise');\n\nexport const Exercise: React.FC = (props) => {\n const { exercise, changeLocalAnswer } = props;\n const { question, type, multiply, answerData, id } = exercise;\n const { correctness } = answerData || {};\n const [localAnswerValue, setLocalAnswer] = useState();\n\n const exerciseInfo = useMemo(() => {\n if (typeof question === 'string') {\n return
;\n }\n return null;\n }, [question]);\n\n const onChangeValue = (value: IExerciseLocalValue) => {\n setLocalAnswer(value);\n changeLocalAnswer?.(type, value);\n };\n // если следующий вопрос будет точно таким же, то локальные данные ответов нужно сбросить,\n // иначе подставятся предыдущие ответы\n // поэтому если correctness === undefined, то вопрос обновился и введенные ответы можно сбросить\n useEffect(() => {\n if (!answerData?.correctness) {\n setLocalAnswer(undefined);\n }\n }, [answerData?.correctness]);\n\n switch (type) {\n case 'true_false':\n return (\n onChangeValue({ single: value })}\n />\n );\n case 'test':\n return multiply ? (\n onChangeValue({ multiple: value })}\n />\n ) : (\n onChangeValue({ single: value })}\n />\n );\n case 'insert_words':\n return (\n }\n answerData={answerData as IInsertWordAnswerData}\n localAnswerValue={localAnswerValue?.insertWords}\n setLocalAnswerValue={(value) => onChangeValue({ insertWords: value })}\n />\n );\n case 'text':\n return (\n onChangeValue({ text: value })}\n />\n );\n default:\n return null;\n }\n};\n","import { IExerciseLocalValue } from '@fsd-entities/materials';\nimport { TQuestionType, TTrainingQuestionAnswer } from '@fsd-shared/models/materials';\n\nexport const checkAnswerData = (\n type: TQuestionType,\n answer: IExerciseLocalValue,\n): TTrainingQuestionAnswer | undefined => {\n const { insertWords, single, text, multiple } = answer;\n const answerArray = insertWords ? Object.values(insertWords) : [];\n switch (type) {\n case 'true_false':\n return { answer: single === true };\n case 'test': {\n const answer = single ? [single] : multiple;\n return answer ? { selectedOptions: answer } : { selectedOptions: [] };\n }\n case 'text':\n return text ? { selectedOption: String(text) } : { selectedOption: '' };\n case 'insert_words':\n return answerArray\n ? {\n selectedOptions: answerArray.map((ans, gapIndex) => ({\n gapIndex,\n selectedWord: ans?.value ?? '',\n })),\n }\n : { selectedOptions: [] };\n default:\n return undefined;\n }\n};\n","import { ITrainingSearchBlockRequest, ITrainingSearchBlockResponse } from '@fsd-shared/models/materials';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\n\nimport { convertPageFiltersToQueryFilters } from 'utils/searchBlocks';\n\nconst getUpdateSearchBlocksRequestParams = (\n searchBlocks?: ISearchBlock[],\n excludesQuestions?: Array,\n): ITrainingSearchBlockRequest['updateData'] => {\n return searchBlocks\n ?.map(({ filters, id }) => ({\n block: id,\n filters: convertPageFiltersToQueryFilters(filters || {}, excludesQuestions ?? []),\n }))\n ?.filter((item) => !!item?.block) as ITrainingSearchBlockRequest['updateData'];\n};\n\nconst getCreateSearchBlocksRequestParams = (\n searchBlocks?: ISearchBlock[],\n singleQuestions?: IQuestion[],\n excludesIds?: Array,\n): ITrainingSearchBlockRequest['createData'] => {\n return searchBlocks\n ?.map(({ filters }) => ({\n filters: convertPageFiltersToQueryFilters(filters || {}, excludesIds ?? []),\n }))\n ?.concat(singleQuestions?.map((item) => ({ filters: { id: item.id } })) ?? []);\n};\n\nexport const getSearchBlocksRequestParams = (\n rightSearchBlocks?: ISearchBlock[],\n singleQuestions?: IQuestion[],\n excludesQuestions?: Array,\n initSearchBlocks?: Array,\n): Omit => {\n const initOnlySearchBlocks = initSearchBlocks?.filter((item) => !item?.single);\n const initSingleQuestions = initSearchBlocks?.filter((item) => item?.single);\n\n // если у блока нет id, значит он новый\n const createdSearchBlocks = rightSearchBlocks?.filter((item) => !item.id);\n\n // вытаскиваем id блоков которые сейчас выбраны\n const rightSearchBlocksIds = rightSearchBlocks?.filter((item) => item?.id)?.map((item) => item.id);\n\n // ищем какие элементы были при инициализации, но в выбранных нет, значит эти блоки нужно удалить\n // вытаскиваем id этих блоков\n const deletedSearchBlocksIds =\n initOnlySearchBlocks\n ?.filter((item) => item.id && !rightSearchBlocksIds?.includes(item?.id))\n ?.map((item) => item.id) || [];\n\n // ищем какие блоки были при инициализации и в выбранных есть, значит эти блоки нужно обновить\n // забираем их id\n const updatedSearchBlocksIds =\n initOnlySearchBlocks\n ?.filter((item) => item.id && rightSearchBlocksIds?.includes(item?.id))\n ?.map((item) => item.id) || [];\n\n // ищем блоки вопросов, которые нужно обновить, сравнивая их id со списком id блоков для обновления\n const updatedSearchBlocks = rightSearchBlocks?.filter(\n (item) => item?.id && updatedSearchBlocksIds?.includes(item?.id),\n );\n\n // получаем id единичных вопросов\n const singleQuestionsIds = singleQuestions?.map((item) => item.id);\n const initSingleQuestionsIds = initSingleQuestions?.map((item) => item.filters?.id);\n\n // ищем вопросы, которых не было при инициализации, но в выбранных есть, значит эти вопросы нужно создать\n const createSingleQuestions = singleQuestions?.filter(\n (item) => item.id && !initSingleQuestionsIds?.includes(item.id),\n );\n\n // ищем id блоков, которые были при инициализации, но в выбранных нет, значит эти вопросы нужно удалить\n const deleteQuestionIds =\n initSingleQuestions\n ?.filter((item) => item?.filters?.id && !singleQuestionsIds?.includes(item.filters.id))\n .map((item) => item.id) || [];\n\n const excludesSingleQuestionsIds = singleQuestionsIds?.filter((item) => !deleteQuestionIds.includes(item));\n\n const excludesIds = [...(excludesSingleQuestionsIds ?? []), ...(excludesQuestions ?? [])];\n\n return {\n createData: getCreateSearchBlocksRequestParams(createdSearchBlocks, createSingleQuestions, excludesIds),\n updateData: getUpdateSearchBlocksRequestParams(updatedSearchBlocks, excludesIds),\n deleteData: [...deletedSearchBlocksIds, ...deleteQuestionIds],\n };\n};\n","import { INSERT_WORD_REPLACE } from '@lms-elements/custom-editor';\n\ninterface IParsedQuestionContent {\n blocks: {\n text: string;\n }[];\n entityMap: {\n data: {\n text: string;\n options: string[];\n };\n }[];\n}\n\nexport const getInsertWordsPreviewHtml = (content?: string, html?: string, text?: string): string => {\n if (content && html) {\n const parsedContent = JSON.parse(content) as IParsedQuestionContent;\n\n return Object.values(parsedContent.entityMap).reduce(\n (htmlAccumulator, entity) =>\n htmlAccumulator.replace(\n INSERT_WORD_REPLACE,\n ``,\n ),\n html || '',\n );\n }\n\n return text || '';\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n createCalendarPlan,\n createCalendarPlanPeriod,\n createSchoolHolidays,\n deleteCalendarPlan,\n deleteCalendarPlanPeriod,\n deleteSchoolHolidays,\n getCalendarPlan,\n getCalendarPlanList,\n patchCalendarPlan,\n patchCalendarPlanPeriod,\n patchSchoolHolidays,\n} from 'api/services/calendarPlan';\nimport {\n ICreateCalendarPlanParams,\n ICreateCalendarPlanPeriodParams,\n ICreateSchoolHolidaysParam,\n IDeleteCalendarPlanPeriodParams,\n IDeleteSchoolHolidaysParams,\n IUpdateCalendarPlan,\n IUpdateCalendarPlanPeriodParams,\n IUpdateSchoolHolidaysParam,\n} from 'types/calendarPlan';\n\nexport const createCalendarPlanAction = createAsyncThunk(\n 'calendarPlan/createCalendarPlan',\n async (params: ICreateCalendarPlanParams) => {\n return await createCalendarPlan(params);\n },\n);\n\nexport const createCalendarPlanPeriodAction = createAsyncThunk(\n 'calendarPlan/createCalendarPlanPeriod',\n async (params: ICreateCalendarPlanPeriodParams) => {\n return await createCalendarPlanPeriod(params);\n },\n);\n\nexport const createSchoolHolidaysAction = createAsyncThunk(\n 'calendarPlan/createSchoolHolidays',\n async (params: Array) => {\n return await createSchoolHolidays(params);\n },\n);\n\nexport const deleteCalendarPlanAction = createAsyncThunk(\n 'calendarPlan/deleteCalendarPlan',\n async (id: number, { dispatch }) => {\n return await deleteCalendarPlan(id).then(() => dispatch(getCalendarPlanListAction()));\n },\n);\n\nexport const deleteCalendarPlanPeriodAction = createAsyncThunk(\n 'calendarPlan/deleteCalendarPlanPeriod',\n async (params: IDeleteCalendarPlanPeriodParams) => {\n return await deleteCalendarPlanPeriod(params);\n },\n);\n\nexport const deleteSchoolHolidaysAction = createAsyncThunk(\n 'calendarPlan/deleteSchoolHolidays',\n async (params: IDeleteSchoolHolidaysParams) => {\n return await deleteSchoolHolidays(params);\n },\n);\n\nexport const getCalendarPlanAction = createAsyncThunk('calendarPlan/getCalendarPlan', async (id: number) => {\n return await getCalendarPlan(id);\n});\n\nexport const getCalendarPlanListAction = createAsyncThunk('calendarPlan/getCalendarPlanList', async () => {\n return await getCalendarPlanList();\n});\n\nexport const patchCalendarPlanAction = createAsyncThunk(\n 'calendarPlan/patchCalendarPlan',\n async (data: { id: number; params: IUpdateCalendarPlan }) => {\n const { id, params } = data;\n return await patchCalendarPlan(id, params);\n },\n);\n\nexport const patchCalendarPlanPeriodAction = createAsyncThunk(\n 'calendarPlan/patchCalendarPlanPeriod',\n async (params: Array) => {\n return await patchCalendarPlanPeriod(params);\n },\n);\n\nexport const patchSchoolHolidaysAction = createAsyncThunk(\n 'calendarPlan/patchSchoolHolidays',\n async (params: Array) => {\n return await patchSchoolHolidays(params);\n },\n);\n","import { postApiRequest } from 'api';\nimport {\n TCourseGroupMeetingFile,\n TCreateCourseGroupMeetingFilePayload,\n TCreateCourseMeetingFilePayload,\n TGetCourseGroupMeetingFiles,\n TGetCourseGroupMeetingFilesPayload,\n TGetCourseMeetingFiles,\n TGetCourseMeetingFilesPayload,\n TMeetingFile,\n TUpdateCourseGroupMeetingFilePayload,\n TUpdateCourseMeetingFilePayload,\n} from 'types/meetingFiles';\n\n// Получение списка файлов к уроку\nexport const getCourseMeetingFiles = (params: TGetCourseMeetingFilesPayload): Promise => {\n return postApiRequest(`/meeting/files/`, params);\n};\nexport const getCourseGroupMeetingFiles = (\n params: TGetCourseGroupMeetingFilesPayload,\n): Promise => {\n return postApiRequest(`/meeting/files/lesson-schedule/`, params);\n};\n// Создание файла к уроку\nexport const createCourseMeetingFile = (params: TCreateCourseMeetingFilePayload): Promise => {\n const data = new FormData();\n\n data.append('file', params.file);\n data.append('lesson', String(params.lesson));\n\n return postApiRequest(`/meeting/files/create/`, data, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n });\n};\nexport const createCourseGroupMeetingFile = (\n params: TCreateCourseGroupMeetingFilePayload,\n): Promise => {\n const data = new FormData();\n\n data.append('file', params.file);\n data.append('lessonSchedule', String(params.lessonSchedule));\n\n return postApiRequest(`/meeting/files/lesson-schedule/create/`, data, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n });\n};\n// Редактирование файла\nexport const updateCourseMeetingFile = (\n params: TUpdateCourseMeetingFilePayload,\n): Promise<{ update: TMeetingFile[] }> => {\n const payload = {\n update: [params],\n };\n return postApiRequest(`/meeting/files/handle/`, payload);\n};\nexport const updateCourseGroupMeetingFile = (\n params: TUpdateCourseGroupMeetingFilePayload,\n): Promise<{ update: TCourseGroupMeetingFile[] }> => {\n const payload = {\n update: [params],\n };\n return postApiRequest(`/meeting/files/lesson-schedule/handle/`, payload);\n};\n// Удаление файла\nexport const deleteCourseMeetingFile = (ids: number[]): Promise<{ delete: number[] }> => {\n const payload = {\n delete: ids,\n };\n return postApiRequest(`/meeting/files/handle/`, payload);\n};\nexport const deleteCourseGroupMeetingFile = (ids: number[]): Promise<{ delete: number[] }> => {\n const payload = {\n delete: ids,\n };\n return postApiRequest(`/meeting/files/lesson-schedule/handle/`, payload);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n createCourseGroupMeetingFile,\n createCourseMeetingFile,\n deleteCourseGroupMeetingFile,\n deleteCourseMeetingFile,\n getCourseGroupMeetingFiles,\n getCourseMeetingFiles,\n updateCourseGroupMeetingFile,\n updateCourseMeetingFile,\n} from 'api/services/meetingFiles';\nimport { UserInfo } from 'api/services/user';\nimport {\n TCreateCourseGroupMeetingFilePayload,\n TCreateCourseMeetingFilePayload,\n TDeleteMeetingFilePayload,\n TGetCourseGroupMeetingFilesPayload,\n TGetCourseMeetingFilesPayload,\n TUpdateCourseGroupMeetingFilePayload,\n TUpdateCourseMeetingFilePayload,\n} from 'types/meetingFiles';\n\n// Получение списка файлов к уроку\nexport const getCourseMeetingFilesAction = createAsyncThunk(\n 'meetingFiles/getCourseMeetingFiles',\n async (params: TGetCourseMeetingFilesPayload) => {\n return await getCourseMeetingFiles(params);\n },\n);\nexport const getCourseGroupMeetingFilesAction = createAsyncThunk(\n 'meetingFiles/getCourseGroupMeetingFiles',\n async (params: TGetCourseGroupMeetingFilesPayload) => {\n return await getCourseGroupMeetingFiles(params);\n },\n);\n\n// Создание файла к уроку\nexport const createMeetingFileAction = createAsyncThunk(\n 'meetingFiles/createMeetingFile',\n async (payload: {\n params: TCreateCourseMeetingFilePayload | TCreateCourseGroupMeetingFilePayload;\n isCourseGroup: boolean;\n userInfo?: UserInfo;\n }) => {\n const { params, isCourseGroup, userInfo } = payload;\n\n return {\n isCourseGroup,\n list: isCourseGroup\n ? await createCourseGroupMeetingFile(params as TCreateCourseGroupMeetingFilePayload)\n : await createCourseMeetingFile(params as TCreateCourseMeetingFilePayload),\n uploadedBy: userInfo\n ? {\n firstName: userInfo.firstName,\n lastName: userInfo.lastName,\n patronymic: userInfo.patronymic,\n id: userInfo.id,\n }\n : undefined,\n };\n },\n);\n\n// Редактирование файла\nexport const updateMeetingFileAction = createAsyncThunk(\n 'meetingFiles/updateMeetingFile',\n async (payload: {\n params: TUpdateCourseMeetingFilePayload | TUpdateCourseGroupMeetingFilePayload;\n isCourseGroup: boolean;\n lessonScheduleId?: number;\n }) => {\n const { params, isCourseGroup, lessonScheduleId } = payload;\n\n let courseGroupMeetingFiles = undefined;\n const res = isCourseGroup\n ? await updateCourseGroupMeetingFile(params as TDeleteMeetingFilePayload)\n : await updateCourseMeetingFile(params as TUpdateCourseMeetingFilePayload);\n\n if (isCourseGroup && params.isTemplate === false && lessonScheduleId) {\n courseGroupMeetingFiles = await getCourseGroupMeetingFiles({ lessonSchedule: lessonScheduleId });\n }\n return {\n updatedFile: res.update[0],\n isCourseGroup,\n courseGroupMeetingFiles,\n };\n },\n);\n\n// Удаление файла\nexport const deleteMeetingFileAction = createAsyncThunk(\n 'meetingFiles/deleteMeetingFile',\n async (params: TDeleteMeetingFilePayload) => {\n const { id, isCourseGroup } = params;\n\n return {\n isCourseGroup,\n list: isCourseGroup ? await deleteCourseGroupMeetingFile([id]) : await deleteCourseMeetingFile([id]),\n };\n },\n);\n","export enum TooltipViewEnum {\n comment = 'comment',\n devices = 'devices',\n detailed = 'detailed',\n semester = 'semester',\n attendance = 'attendance',\n period = 'period',\n list = 'list',\n na = 'na',\n}\n\nexport enum PointerPosition {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n\nexport enum Position {\n bottom = 'bottom',\n left = 'left',\n top = 'top',\n right = 'right',\n}\n\nexport interface MarkMetaData {\n date: string;\n type: string;\n weight: number;\n isMark: boolean;\n}\n\nexport interface AttendanceData {\n isMicDisabled: boolean;\n isCameraDisabled: boolean;\n isUserDisabled: boolean;\n micDescription: string;\n cameraDescription: string;\n userDescription: string;\n}\n\nexport interface TooltipListData {\n title: string;\n list: {\n text: string;\n isValid: boolean;\n }[];\n}\n\ninterface IFile {\n title: string;\n url: string;\n}\n\nexport interface ITooltipProps {\n view?: TooltipViewEnum;\n approved?: boolean;\n average?: number | string;\n metaData?: MarkMetaData;\n attandanceData?: AttendanceData;\n pointerPosition?: PointerPosition;\n pointerSide?: Position;\n commentLabel?: string;\n filesLabel?: string;\n files?: IFile[];\n withPointer?: boolean;\n isError?: boolean;\n listData?: TooltipListData;\n author?: string;\n}\n","import { getApiRequest } from 'api';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\nexport interface Absence {\n id: number;\n datetimeStart: string;\n status: AttendanceStatus;\n lesson: number;\n course: number;\n subject: number;\n}\nexport const getLessonAbsence = async (params: {\n date_start: string;\n date_end: string;\n student?: number;\n status?: AttendanceStatus[];\n}): Promise => {\n return await getApiRequest(`/attendance-lesson/absence/`, {\n params: {\n date_start: params.date_start,\n date_end: params.date_end,\n student: params.student,\n status: params.status?.join(','),\n },\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getAssignmentMarksByDate, getAssignmentStudentMarks } from 'api/services/assignment/getAssignmentMarks';\nimport {\n changeAttendanceMark,\n changeStudentPresence,\n createAttendanceMark,\n deleteAttendanceMark,\n getAttendanceMarks,\n getAttendanceStudentMarks,\n getLessonAttendance,\n PatchAttendanceParams,\n PostAttandenceMarkParams,\n} from 'api/services/attendance';\nimport { getAttendanceMarksByDate } from 'api/services/attendance/getAttendanceMarks';\nimport { getLessonAbsence } from 'api/services/attendance/getLessonAbsence';\nimport { AcademicStudent, getMarksAndStats, getStudentMarksAndStatuses } from 'pages/AcademicPerformance/utils';\nimport { ICourseStructure } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { MarkScore } from 'types/mark';\n\nimport { Course } from 'utils/academicPerformance';\n\nexport const getLessonAttendanceDataAction = createAsyncThunk(\n 'attedance/getLessonAttendance',\n async (params: { lessonId: number; courseGroupId?: number; studentIds?: number[]; eventRoom?: number }) => {\n return await getLessonAttendance(params);\n },\n);\n\ntype PatchPresenceData = {\n id: number;\n values: PatchAttendanceParams;\n};\n\nexport const patchStudentPresenceAction = createAsyncThunk(\n 'attedance/patchPresence',\n async ({ id, values }: PatchPresenceData) => {\n return await changeStudentPresence(id, values);\n },\n);\n\nexport const createAttendanceMarkAction = createAsyncThunk(\n 'attedance/createMark',\n async (params: PostAttandenceMarkParams) => {\n return await createAttendanceMark(params);\n },\n);\n\ntype PatchAttendanceMarkData = {\n markId: number;\n score?: MarkScore | null;\n comment?: string | null;\n};\n\nexport const changeAttendanceMarkAction = createAsyncThunk(\n 'attedance/changeMark',\n async ({ markId, ...params }: PatchAttendanceMarkData) => {\n return await changeAttendanceMark(markId, {\n ...params,\n comment: params.comment ? params.comment : '',\n });\n },\n);\n\ntype DeleteAttendanceMarkData = {\n markId: number;\n attendanceLesson: number;\n};\n\nexport const deleteAttendanceMarkAction = createAsyncThunk(\n 'attedance/deleteMark',\n async ({ markId, attendanceLesson }: DeleteAttendanceMarkData) => {\n return await deleteAttendanceMark(markId).then(() => ({ markId, attendanceLesson }));\n },\n);\n\nexport const getAttendanceMarksAction = createAsyncThunk(\n 'attendance/getMarks',\n async (params: { lessonIds: number[]; studentIds: number[] }) => {\n return await getAttendanceMarks(params);\n },\n);\n\nexport const getMarksAction = createAsyncThunk(\n 'marks/getMarks',\n async (params: {\n lessonIds: number[];\n studentIds: number[];\n course: ICourseStructure[];\n students: AcademicStudent[];\n start: string;\n end: string;\n quarter: number;\n }) => {\n const studentsIds = params.students.map((student) => student.id);\n const attendMark = await getAttendanceMarksByDate({\n mark_date_before: params.end,\n mark_date_after: params.start,\n studentIds: studentsIds,\n lessonIds: params.lessonIds,\n });\n const assignMark = await getAssignmentMarksByDate({\n mark_date_before: params.end,\n mark_date_after: params.start,\n studentIds: studentsIds,\n lessonIds: params.lessonIds,\n });\n const attendanceLessons = await getLessonAttendance(params);\n return getMarksAndStats(\n attendMark,\n assignMark,\n attendanceLessons,\n params.course,\n params.students,\n params.quarter,\n );\n },\n);\n\nexport const getStudentMarksAction = createAsyncThunk(\n 'marks/getStudentMarks',\n async (params: { start: string; end: string; course: Course[]; quarter: 0 | 1 | 2 | 3 | 4; id: number }) => {\n const attendMark = await getAttendanceStudentMarks({\n mark_date_before: params.end,\n mark_date_after: params.start,\n student: params.id,\n });\n const assignMark = await getAssignmentStudentMarks({\n mark_date_before: params.end,\n mark_date_after: params.start,\n student: params.id,\n });\n const lessonAbsence = await getLessonAbsence({\n date_start: params.start,\n date_end: params.end,\n student: params.id,\n });\n return getStudentMarksAndStatuses(\n attendMark,\n assignMark,\n lessonAbsence,\n params.course,\n params.quarter,\n params.id,\n );\n },\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getCalendarPlanList } from 'api/services/calendarPlan';\nimport {\n deleteEducationalPlan,\n deleteEducationalPlanItem,\n editEducationalPlanItem,\n getAllEducationalPlans,\n getEducationalPlan,\n patchEducationalPlan,\n PostEducationalPlan,\n postEducationalPlan,\n PostEducationalPlanItem,\n} from 'api/services/educationalPlan';\nimport { createEducationalPlanItem, PostItem } from 'api/services/educationalPlan/createEducationalPlanItem';\nimport { getEducationalParallels } from 'api/services/educationalPlan/getEducationalParallels';\nimport { getNormalizedItemsMap } from 'store/normalizers/educationalPlan/getNormalizedItemsMap';\nimport { ResponseEducationalPlanItem } from 'types/educationalPlan';\n\nexport const getEducationalPlanAction = createAsyncThunk('course/getEducationalPlan', async (id: number) => {\n return await Promise.all([getEducationalPlan(id), getCalendarPlanList(), getEducationalParallels()]);\n});\n\nexport const postEducationalPlanAction = createAsyncThunk(\n 'course/postEducationalPlan',\n async ({ educationalPlanItems, ...params }: PostEducationalPlan) => {\n const educationalPlan = await postEducationalPlan({ ...params, educationalPlanItems: [] });\n\n let newItems: ResponseEducationalPlanItem[] = [];\n\n if (educationalPlanItems && educationalPlanItems.length > 0) {\n newItems = await createEducationalPlanItem({\n educationalPlanItems: getNormalizedItemsMap(educationalPlanItems, Number(educationalPlan.id)),\n } as PostItem);\n }\n\n return {\n ...educationalPlan,\n educationalPlanItems: newItems,\n };\n },\n);\n\ntype patchEducationalPlanActionData = {\n params: PostEducationalPlan;\n idsWillDelete: number[];\n};\n\nexport const patchEducationalPlanAction = createAsyncThunk(\n 'course/patchEducationalPlan',\n async ({ params, idsWillDelete }: patchEducationalPlanActionData) => {\n const { educationalPlanItems = [], ...data } = params;\n if (idsWillDelete.length > 0) {\n await deleteEducationalPlanItem({ data: { id: idsWillDelete } });\n }\n\n const newItems: PostEducationalPlanItem[] = [];\n const newItemsOrder: number[] = [];\n const patchItems: PostEducationalPlanItem[] = [];\n\n const ordering = educationalPlanItems.map((item, index) => {\n if (item.id && item.id < 0) {\n newItems.push(item);\n newItemsOrder.push(index);\n return item.id ?? -1;\n }\n\n patchItems.push(item);\n return item.id ?? -1;\n });\n\n if (newItems.length > 0) {\n const returnedItems = await createEducationalPlanItem({\n educationalPlanItems: getNormalizedItemsMap(newItems, Number(data.id)),\n } as PostItem);\n returnedItems.forEach((item, index) => {\n ordering[newItemsOrder[index]] = item.id;\n });\n }\n\n if (patchItems.length > 0) {\n await editEducationalPlanItem({\n educationalPlanItems: getNormalizedItemsMap(patchItems, Number(data.id)),\n });\n }\n\n return await patchEducationalPlan({\n ...data,\n ordering,\n });\n },\n);\n\nexport const deleteEducationalPlanAction = createAsyncThunk('course/deleteEducationalPlan', async (id: number) => {\n return await deleteEducationalPlan(id);\n});\n\nexport const getAllCalendarPlansAction = createAsyncThunk('course/getAllCalendarPlans', async () => {\n return await getCalendarPlanList();\n});\n\nexport const getEducationalParallelsAction = createAsyncThunk('course/getEducationalParallels', async () => {\n return await getEducationalParallels();\n});\n\nexport const getEducationPLanWithParallelsAndCalendar = createAsyncThunk(\n 'courseGroup/getEducationPLanWithParallelsAndCalendar',\n async () => {\n return await Promise.all([getAllEducationalPlans(), getCalendarPlanList(), getEducationalParallels()]);\n },\n);\n\nexport const getAllEducationalPlanAction = createAsyncThunk('courseGroup/getAllEducationalPlan', async () => {\n return await getAllEducationalPlans();\n});\n\nexport const deleteEducationalPlanItemAction = createAsyncThunk(\n 'course/deleteEducationalPlanItem',\n async (params: { data: { id: number[] } }) => {\n return await deleteEducationalPlanItem(params);\n },\n);\n","import { patchApiRequest } from 'api';\n\nimport { ResponseCourse } from '.';\n\nexport const blockCourse = (courseId: number, isBlockEdit: boolean): Promise => {\n return patchApiRequest(`/course/block/${courseId}/`, { isBlockEdit });\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteCourse = (id: number): Promise => {\n return deleteApiRequest(`/course/delete/${id}/`).then(() => id);\n};\n","import { getApiRequest } from 'api';\nimport { CanFillCourse } from 'types/course';\n\n/**\n * Return list of teachers who can fill course\n * @param subjectId\n * @returns\n */\nexport const getCanFillCourseList = (subjectId: number): Promise => {\n return getApiRequest(`/staff-profile/?subject=${subjectId}`);\n};\n","import { getApiRequest } from 'api';\nimport { CourseType } from 'types/course';\nimport { Parallel } from 'types/parallel';\n\nexport interface CourseDetails {\n id: number;\n title: string;\n description?: string;\n aboutTeacher?: string;\n task?: string;\n preview?: File;\n courseVideo?: File;\n subject: {\n id: number;\n title: string;\n };\n subjectAlterTitle?: string;\n courseType?: CourseType;\n topics: {\n id: number;\n title: string;\n };\n topicsQuantity: number;\n isBlockEdit?: boolean;\n lessonCount: number;\n endToEndGeneralLessonOrdering: number[];\n isPublished: boolean;\n duration?: number;\n parallels?: Parallel[];\n}\n\nexport const getCourseDetails = (id: number): Promise => {\n return getApiRequest(`/course/${id}/`);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { CourseType } from 'types/course';\n\nimport { ResponseCourse } from '.';\n\nexport interface CourseParams {\n subject_id?: number;\n course_type?: CourseType;\n parallels?: number;\n}\n\nexport const getCourses = async (params?: CourseParams): Promise => {\n return await api\n .get>('/course/', { params })\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api, patchApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { CourseType } from 'types/course';\n\nimport { ResponseCourseType } from '.';\n\nexport interface PatchCourseParams {\n id: number;\n subjectAlterTitle?: string;\n parallels?: number[];\n title?: string;\n description?: string;\n aboutTeacher?: string;\n task?: string;\n lessonCount?: number;\n courseType?: CourseType[];\n duration?: number;\n preview?: File | string;\n courseVideo?: File | string;\n methodists?: number[];\n}\n\nexport const patchCourse = async (params: PatchCourseParams): Promise => {\n const {\n id,\n subjectAlterTitle,\n parallels,\n title,\n description,\n aboutTeacher,\n task,\n lessonCount,\n courseType,\n duration,\n preview,\n courseVideo,\n methodists,\n } = params;\n\n const hasMediaFiles = preview !== undefined || courseVideo !== undefined;\n const hasOtherData =\n subjectAlterTitle !== undefined ||\n parallels !== undefined ||\n title !== undefined ||\n description !== undefined ||\n aboutTeacher !== undefined ||\n task !== undefined ||\n lessonCount !== undefined ||\n courseType !== undefined ||\n duration !== undefined ||\n methodists !== undefined;\n\n const jsonParams = { ...params };\n delete jsonParams.preview;\n delete jsonParams.courseVideo;\n\n let mediaRes = undefined,\n otherDataRes = undefined;\n\n if (hasMediaFiles) {\n const formData = new FormData();\n if (preview !== undefined) formData.append('preview', preview);\n if (courseVideo !== undefined) formData.append('courseVideo', courseVideo);\n\n mediaRes = await api\n .patch>(`/course/partial-update/${id}/`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n Accept: 'application/json',\n },\n })\n .then((res) => ({\n ...res?.data,\n id: params.id,\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n }\n if (hasOtherData) {\n otherDataRes = await api\n .patch>(`/course/partial-update/${id}/`, jsonParams)\n .then((res) => ({\n ...res?.data,\n id: params.id,\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n }\n\n if (mediaRes && otherDataRes) {\n return {\n ...mediaRes,\n ...otherDataRes,\n };\n } else {\n //@ts-ignore\n return mediaRes ? mediaRes : otherDataRes;\n }\n};\n","import { patchApiRequest } from 'api';\n\ninterface PatchThemeOrderingParams {\n courseId: number;\n ordering: number[];\n}\n\nexport const patchThemesOrdering = ({\n courseId,\n ...params\n}: PatchThemeOrderingParams): Promise<{ ordering: number[] }> => {\n return patchApiRequest(`/course/${courseId}/topics/ordering/`, params);\n};\n","import { api } from 'api';\nimport { ResponseCourseType } from 'api/services/course';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { CourseType } from 'types/course';\n\nexport interface PostCourseParams {\n subjectId: number;\n subjectAlterTitle?: string;\n parallels: number[];\n title: string;\n description?: string;\n aboutTeacher?: string;\n task?: string;\n lessonCount: number;\n methodists: number[];\n courseType: CourseType[];\n duration: number;\n preview?: File;\n courseVideo?: File;\n}\n\nexport const postCourse = (params: PostCourseParams): Promise => {\n const {\n subjectId,\n subjectAlterTitle,\n parallels,\n title,\n description,\n aboutTeacher,\n task,\n lessonCount,\n courseType,\n duration,\n preview,\n courseVideo,\n methodists,\n } = params;\n\n const data = new FormData();\n\n data.append('subjectId', String(subjectId));\n\n if (subjectAlterTitle !== undefined) data.append('subjectAlterTitle', subjectAlterTitle);\n\n parallels.forEach((parallel) => {\n data.append('parallels', String(parallel));\n });\n\n data.append('title', title);\n\n if (description !== undefined) data.append('description', description);\n\n if (aboutTeacher !== undefined) data.append('aboutTeacher', aboutTeacher);\n\n if (task !== undefined) data.append('task', task);\n\n data.append('lessonCount', String(lessonCount));\n\n courseType.forEach((type) => {\n data.append('courseType', type);\n });\n\n methodists.forEach((methodist) => data.append('methodists', methodist.toString()));\n\n data.append('duration', String(duration));\n\n if (preview !== undefined) data.append('preview', preview);\n\n if (courseVideo !== undefined) data.append('courseVideo', courseVideo);\n\n return api\n .post, AxiosResponse>('/course/create/', data, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { patchApiRequest } from 'api';\n\nexport const publishCourse = (courseId: number): Promise => {\n return patchApiRequest(`/course/publish/${courseId}/`).then(() => courseId);\n};\n","import { IAssignmentPeriodsResponse } from '@fsd-shared/models/assignment';\nimport { TaskProgressInterval } from 'containers/TaskBlock/TaskBlock.types';\nimport dayjs, { Dayjs } from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\n\ninterface IGetTimeDisableValueReturn {\n startHour?: number;\n endHour?: number;\n startMinute?: number;\n endMinute?: number;\n isEndSame?: boolean;\n isStartSame?: boolean;\n}\nexport interface ITaskDateOptions {\n dateStartList: { label: string; value: EDateTimeTypesList }[];\n dateEndList: { label: string; value: EDateTimeTypesList }[];\n timeToComplete?: { label: string; value: EDateTimeTypesList }[];\n}\n\nexport enum EDateTimeTypesList {\n DATE_TIME = 'DATE_TIME',\n TIME = 'TIME',\n NONE = '',\n}\nexport const getTaskDateInitialValues = (onlyDatesOptions?: boolean): ITaskDateOptions => {\n if (onlyDatesOptions) {\n return {\n dateStartList: [{ label: 'Дата и время', value: EDateTimeTypesList.DATE_TIME }],\n dateEndList: [{ label: 'Дата и время', value: EDateTimeTypesList.DATE_TIME }],\n };\n }\n\n return {\n dateStartList: [\n { label: 'Точные дата и время', value: EDateTimeTypesList.DATE_TIME },\n { label: 'Выдать сейчас', value: EDateTimeTypesList.NONE },\n { label: 'По началу онлайн-занятия', value: EDateTimeTypesList.TIME },\n ],\n dateEndList: [\n { label: 'Точные дата и время', value: EDateTimeTypesList.DATE_TIME },\n { label: 'Через время после выдачи задания', value: EDateTimeTypesList.TIME },\n ],\n timeToComplete: [\n { label: 'Не ограничено', value: EDateTimeTypesList.NONE },\n { label: 'Выбрать время', value: EDateTimeTypesList.TIME },\n ],\n };\n};\n\ntype Values = {\n timeStart?: string;\n timeEnd?: string;\n startTimeDelay?: number;\n endTimeDelay?: number;\n timeToComplete?: number;\n};\n\ntype DateValidationError = {\n timeStart?: string;\n timeEnd?: string;\n startTimeDelay?: string;\n endTimeDelay?: string;\n timeToComplete?: string;\n};\n\nexport const getTimeZoneOffsetHours = (): number => {\n return new Date().getTimezoneOffset() / 60 + 3;\n};\n\nexport const dateValidator = (\n values: Values,\n interval?: TaskProgressInterval,\n calendarStartType?: EDateTimeTypesList,\n calendarDurationType?: EDateTimeTypesList,\n): DateValidationError => {\n const { timeStart, timeEnd, endTimeDelay, timeToComplete, startTimeDelay } = values;\n const isStartNow = calendarStartType === EDateTimeTypesList.NONE;\n const { datetimeStart, datetimeEnd } = interval || {};\n const timeStartDJS = isStartNow ? dayjs() : dayjs(timeStart);\n const timeEndDJS = dayjs(timeEnd);\n const datetimeStartDJS = dayjs(datetimeStart);\n const datetimeEndDJS = dayjs(datetimeEnd);\n let dateStartValid = false;\n let dateEndValid = false;\n\n if (timeStart || isStartNow) {\n let isAfter = true;\n let isBetween = true;\n\n if (timeEnd) {\n isAfter = timeStartDJS?.isBefore(timeEndDJS, 'minute');\n }\n\n if (datetimeStart && datetimeEnd) {\n timeStartDJS?.isSame(timeEndDJS, 'minute');\n isBetween =\n (timeStartDJS.isAfter(datetimeStartDJS, 'minute') && timeStartDJS.isBefore(datetimeEndDJS, 'minute')) ||\n timeStartDJS.isSame(datetimeStartDJS, 'minute') ||\n timeStartDJS.isSame(datetimeEndDJS, 'minute');\n }\n\n dateStartValid = isAfter && isBetween;\n }\n\n if (timeEnd) {\n let isAfter = true;\n let isBetween = true;\n\n if (timeStart || isStartNow) {\n isAfter = timeEndDJS?.isAfter(timeStartDJS, 'minute');\n }\n\n if (datetimeStart && datetimeEnd) {\n isBetween =\n (timeEndDJS.isAfter(datetimeStartDJS, 'minute') && timeEndDJS.isBefore(datetimeEndDJS, 'minute')) ||\n timeEndDJS.isSame(datetimeStartDJS, 'minute') ||\n timeEndDJS.isSame(datetimeEndDJS, 'minute');\n }\n\n dateEndValid = isAfter && isBetween;\n }\n\n return {\n timeStart: dateStartValid ? undefined : 'error',\n timeEnd: dateEndValid ? undefined : 'error',\n endTimeDelay: endTimeDelay ? undefined : 'error',\n startTimeDelay:\n calendarStartType === EDateTimeTypesList.TIME && startTimeDelay !== undefined ? undefined : 'error',\n timeToComplete: calendarDurationType !== EDateTimeTypesList.NONE && timeToComplete ? undefined : 'error',\n };\n};\n\n/**\n * @description определяем нужно ли дизейблить текущую дату\n * @param date\n * @param interval\n * @param periodData\n * @return {boolean}\n */\nexport const disabledDate = (\n date: Dayjs,\n interval?: { datetimeStart?: string; datetimeEnd?: string },\n periodData?: IAssignmentPeriodsResponse,\n): boolean => {\n dayjs.extend(timezone);\n\n const { assignmentPeriod, blockedDates } = periodData ?? {};\n\n const { datetimeStart, datetimeEnd } = interval || assignmentPeriod || {};\n\n let intervalStart = false;\n let intervalEnd = false;\n\n const currDate = dayjs().tz('Europe/Moscow');\n\n const start = dayjs(datetimeStart).tz('Europe/Moscow');\n const end = dayjs(datetimeEnd).tz('Europe/Moscow');\n const past = date.isBefore(currDate.format('YYYY-MM-DD'), 'day');\n\n if (datetimeStart) {\n intervalStart = date.isBefore(start.format('YYYY-MM-DD'), 'day');\n }\n\n if (datetimeEnd) {\n intervalEnd = date.isAfter(end.format('YYYY-MM-DD'), 'day');\n }\n const isDateBlocked = blockedDates?.some((item) => dayjs(item).isSame(date, 'day'));\n\n return past || intervalEnd || intervalStart || !!isDateBlocked;\n};\n\n/**\n * @description определяем перечень часов которые нужно задизейблить\n * в зависимости от даты\n * @param date\n * @param value\n */\nexport const disabledHours = (date?: string, value?: IGetTimeDisableValueReturn): Array => {\n const { startHour, endHour, isStartSame, isEndSame } = value || {};\n const array: Array = [];\n\n if (date === undefined) {\n for (let i = 0; i <= 24; i++) {\n array.push(i);\n }\n }\n if (isStartSame) {\n for (let i = 0; i < (startHour ?? 0); i++) {\n array.push(i);\n }\n }\n if (isEndSame) {\n for (let j = (endHour ?? 24) + 1; j <= 24; j++) {\n array.push(j);\n }\n }\n\n return array;\n};\n\n/**\n * @description определяем перечень минут которые нужно задизейблить\n * в зависимости от часа и даты\n * @param hour\n * @param date\n * @param value\n */\nexport const disabledMinutes = (\n hour: number,\n date?: string,\n value?: IGetTimeDisableValueReturn,\n): Array => {\n const { startHour, endHour, startMinute, endMinute, isStartSame, isEndSame } = value || {};\n const array: Array = [];\n\n if (date === undefined) {\n for (let i = 0; i <= 60; i += 10) {\n array.push(i);\n }\n }\n if (hour == startHour) {\n if (isStartSame) {\n for (let i = 0; i < (startMinute ?? 0); i += 10) {\n array.push(i);\n }\n }\n }\n if (hour == endHour) {\n if (isEndSame) {\n const minutes = endMinute !== undefined ? endMinute + 10 : 70;\n for (let j = minutes; j <= 60; j += 10) {\n array.push(j);\n }\n }\n }\n return array;\n};\n\n/**\n * @description подготавливаем даты для календаря\n * для сравнения и получения допустимых дат\n * @param date\n * @param interval\n * @param periodData\n */\nexport const getTimeDisableValue = (\n date?: Dayjs,\n interval?: TaskProgressInterval,\n periodData?: IAssignmentPeriodsResponse,\n): IGetTimeDisableValueReturn => {\n const { assignmentPeriod } = periodData ?? {};\n const { datetimeStart, datetimeEnd } = interval || assignmentPeriod || {};\n\n dayjs.extend(timezone);\n const start = dayjs(datetimeStart).tz('Europe/Moscow');\n const end = dayjs(datetimeEnd).tz('Europe/Moscow');\n\n const isStartSame = date?.isSame(start.format('YYYY-MM-DD'), 'day');\n const isEndSame = date?.isSame(end.format('YYYY-MM-DD'), 'day');\n\n let startHour;\n let startMinute;\n let endHour;\n let endMinute;\n\n if (datetimeStart) {\n startHour = start.hour();\n startMinute = start.minute();\n }\n\n if (datetimeEnd) {\n endHour = end.hour();\n endMinute = end.minute();\n }\n\n return { startHour, startMinute, endMinute, endHour, isEndSame, isStartSame };\n};\n","export const letterAndNumberRegExp = /[а-яА-Я]+\\d+/m;\nexport const letterRegExp = /[а-яА-Я]+/m;\nexport const groupNumberRegExp = /\\d+/m;\nexport const classLetterAndNumberRegExp = /[а-яА-Я]+\\d+/m;\nexport const alphabet = ['Н', 'М', 'Л', 'У'];\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { CourseGroupDetails } from 'types/courseGroup';\n\nexport const getCourseGroupDetails = async (id: number): Promise => {\n return await api\n .get>(`/course-groups/${id}/`)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { CourseGroup } from 'types/courseGroup';\n\ninterface Params {\n course?: number | string;\n subject?: number | string;\n}\n\nexport const getCourseGroups = async (params?: Params): Promise => {\n return await api\n .get>('/course-groups/', { params })\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { getApiRequest } from 'api';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport const getCourseGroupsByAcademicYear = (year: number): Promise => {\n return getApiRequest(`/course-groups/?academic_year=${year}`);\n};\n","import { getApiRequest } from 'api';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport const getCourseGroupsByCourse = (courseId: number): Promise => {\n return getApiRequest(`/course-groups/?course=${courseId}`);\n};\n","import { getApiRequest } from 'api';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport interface SubjectAndYear {\n subject: number;\n year: number;\n}\n\nexport const getCourseGroupsBySubjectAndYear = (params: SubjectAndYear): Promise => {\n return getApiRequest(`/course-groups/?subject=${params.subject}&academic_year=${params.year}`);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Student } from 'types/students';\n\ntype ReturnType = {\n id: number;\n title: string;\n students: Student[];\n};\n\nexport const getCourseGroupStudents = async (courseGroupId: number): Promise => {\n return await api\n .get>(`/course-groups/${courseGroupId}/students/`)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { getApiRequest } from 'api';\n\nexport interface Period {\n id: number;\n dateStart: string;\n dateEnd: string;\n}\n\nexport interface PeriodResponse {\n id: number;\n title: string;\n periodType: string;\n period: Period[];\n}\n\nexport const getPeriods = (groupId: string): Promise => {\n return getApiRequest(`/course-groups/${groupId}/period/`);\n};\n","import { getApiRequest } from 'api';\n\nexport interface Lesson {\n id: number;\n title: string;\n}\n\nexport interface Topic {\n id: number;\n title: string;\n lesson: Lesson[];\n}\n\nexport interface TopicParams {\n groupId: number;\n dateStart: string;\n dateEnd: string;\n}\nexport const getTopics = (params: TopicParams): Promise => {\n return getApiRequest(\n `/course-groups/tree/?course_group=${params.groupId}&date_start=${params.dateStart}&date_end=${params.dateEnd}`,\n );\n};\n","import { patchApiRequest } from 'api';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport interface PatchCourseGroupsParams {\n id: number;\n teachers: number[];\n dateStart?: string | null;\n dateEnd?: string | null;\n scheduleInfo?: string;\n}\n\nexport const patchCourseGroups = ({ id, ...params }: PatchCourseGroupsParams): Promise => {\n return patchApiRequest(`/course-groups/partial-update/${id}/`, params);\n};\n","import { AttendanceData } from '@lms-elements/atomic';\n\nexport enum PeriodTypes {\n QUARTER = 'quarter',\n TRIMESTER = 'trimester',\n SEMESTER = 'semester',\n}\n\nexport interface Student {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n school?: string;\n enrollDate?: string;\n dismissDate?: string;\n isAdaptation?: boolean;\n}\n\nexport interface ICourseLesson {\n id: number;\n title: string;\n}\n\nexport interface ICourseTopic {\n id: number;\n title: string;\n lessons: ICourseLesson[];\n}\n\nexport interface ICourseQuarter {\n quarter: number;\n topics: ICourseTopic[];\n}\n\nexport interface ICourseStructure {\n subject: number;\n quarters: ICourseQuarter[];\n}\n\nexport interface IMark {\n id: number;\n subject: number;\n topic: number;\n quarter: number;\n lesson: number;\n comment?: string | null;\n lessonType?: string;\n student: number;\n score?: number;\n type?: string;\n weight?: number;\n date?: string;\n withAttendanceTooltip?: boolean;\n attendenceData?: AttendanceData;\n commentLabel?: string;\n filesLabel?: string;\n files?: {\n title: string;\n url: string;\n }[];\n needTrimComment?: boolean;\n maxCommentLength?: number;\n}\n\nexport interface IStatus {\n id: number;\n subject: number;\n topic: number;\n quarter: number;\n lesson: number;\n student: number;\n date?: string;\n status: AttendanceStatus;\n}\n\nexport enum AttendanceStatus {\n ABSENT = 'absent',\n PRESENT = 'present',\n LATE = 'late',\n ABSENT_WITH_REASON = 'absent_with_reason',\n ABSENT_DUE_ILLNESS = 'absent_due_illness',\n}\n\nexport interface IQuarterMark {\n id: number;\n subject: number;\n student: number;\n quarter: number;\n average?: number;\n isTest?: boolean;\n testApproved?: boolean;\n score?: number;\n}\n\nexport enum DragScrollStateEnum {\n notScrolling = 0,\n scrollStart = 1,\n scrollEnd = 2,\n}\n\nexport enum SubjectType {\n COMMON = 'common',\n NON_SUBJECT = 'non_subject',\n ELECTIVE = 'elective',\n GIA_PREPARATION = 'gia_preparation',\n}\n\nexport interface CourseAssignment {\n id: number;\n courseId: number;\n groupId: number;\n title: string;\n type: SubjectType;\n subject?: number;\n}\n\nexport interface Teacher {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n photoUrl?: string;\n}\n\nexport interface TransferredMarks {\n id: number;\n student: number;\n course: number;\n period: number;\n scores: (2 | 3 | 4 | 5)[];\n reportCard: string;\n}\n","import { eduWeeksType, periodsType } from 'types/calendarPlan';\n\nexport const reCaptchaKey = process.env.REACT_APP_RECAPTCHA_KEY || '6LcXBFUeAAAAACa3D5Suv3ML8eDWvJMxHxofUYav';\nexport const TARIFF_CURIOUS_ID = 12;\nexport const TARIFF_CURIOUS_TITLE = 'curious';\nexport const PASSWORD_PATTERN = /^[a-z0-9_-]+$/i;\n\nexport const DEFAULT_TABLE_PAGE = 1;\nexport const DEFAULT_TABLE_PAGE_SIZE = 16;\nexport const LIST_PAGINATE_LIMIT = 20;\nexport const GROUP_ACTIONS_PAGE_TAB_NAME = 'group-actions-page-tab-name';\n\nexport const studyPeriods: Array<{ value: periodsType; label: string }> = [\n { value: 'quarter', label: 'Четверть' },\n { value: 'trimester', label: 'Триместр' },\n { value: 'half_year', label: 'Пол года' },\n { value: 'year', label: 'Год' },\n];\nexport const eduWeeks: Array<{ value: eduWeeksType; label: string }> = [\n { value: 5, label: 'Пятидневная' },\n { value: 6, label: 'Шестидневная' },\n];\n\nexport const weekdaysRu = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];\nexport const monthRu = [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n];\n","export type QueryValue = string | number | (string | number)[];\n\nexport const createUrlQuery = (pairs: Partial>): string => {\n const queries: string[] = [];\n\n Object.entries(pairs).forEach(([key, value = []]) => {\n if (Array.isArray(value) && value.length) {\n queries.push(`${key}=${value.join(',')}`);\n } else if (typeof value !== 'object' && value !== '' && value !== null) {\n queries.push(`${key}=${value}`);\n }\n });\n\n return `?${queries.join('&')}`;\n};\n","import { patchApiRequest } from 'api';\n\nexport const changeNewsElementsOrdering = (id: number, ordering: number[]): Promise<{ ordering: number[] }> => {\n return patchApiRequest(`/news/${id}/element-ordering/`, { ordering });\n};\n","import { postApiRequest } from 'api';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\nexport interface CreateNewsElement {\n news: number;\n content: string;\n html: string;\n typeOfContent: ContentMaterialTypeEnum;\n}\n\nexport interface CreateNewsElementResponse {\n id: number;\n news: number;\n typeOfContent: ContentMaterialTypeEnum;\n content: string;\n html: string;\n order: number;\n}\n\nexport const createNewsElements = (params: CreateNewsElement[]): Promise => {\n return postApiRequest('/news-element/bulk-create/', params);\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteNewsElements = (elementsIds: number[]): Promise => {\n return deleteApiRequest('/news-element/bulk-delete/', {\n data: { ids: elementsIds },\n }).then(() => elementsIds);\n};\n","import { api } from 'api';\nimport { NewsFile } from 'api/services/news';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport const createNewsFile = (newsElement: number, file: File): Promise => {\n const data = new FormData();\n data.append('file', file);\n data.append('newsElement', String(newsElement));\n\n return api\n .post, AxiosResponse>(`/news-element-file/create/`, data, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteNewsFile = (id: number): Promise => {\n return deleteApiRequest(`/news-element-file/delete/${id}/`).then(() => id);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n changeNewsElementsOrdering,\n createNews,\n CreateNewsElement,\n CreateNewsElementResponse,\n createNewsElements,\n createNewsFile,\n deleteNews,\n deleteNewsElements,\n deleteNewsFile,\n getNews,\n getNewsById,\n getUnreadNewsStatus,\n updateNews,\n updateNewsElements,\n} from 'api/services/news';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\ninterface NewsFilters {\n date_before: string;\n date_after: string;\n}\n\ninterface CreateNewsActionParams {\n materials: {\n id: number;\n content: string;\n html: string;\n typeOfContent: ContentMaterialTypeEnum;\n }[];\n files: {\n [materialOrder: number]: File[] | undefined;\n };\n}\n\nexport const getUnreadNewsStatusAction = createAsyncThunk('news/getUnreadNewsStatus', () => {\n return getUnreadNewsStatus();\n});\n\nconst createAddedFilesToElements = (\n elements: CreateNewsElementResponse[],\n files: { [materialOrder: number]: File[] | undefined },\n) => {\n const fileParams = Object.entries(files)\n .filter(([, files]) => files && files.length > 0)\n .flatMap(([order, files]) => {\n return (files as File[]).map((file) => ({\n file,\n newsElement: elements[Number(order)].id,\n }));\n });\n return Promise.all(fileParams.map(({ newsElement, file }) => createNewsFile(newsElement, file)));\n};\n\nexport const createNewsAction = createAsyncThunk('news/createNews', ({ materials, files }: CreateNewsActionParams) => {\n return createNews()\n .then(({ id }) => {\n const elements: CreateNewsElement[] = materials.map(({ content, html, typeOfContent }) => ({\n content,\n html,\n typeOfContent,\n news: id,\n }));\n\n return createNewsElements(elements);\n })\n .then((elements) => createAddedFilesToElements(elements, files));\n});\n\nexport const getNewsByIdAction = createAsyncThunk('news/getNewsById', (id: number) => {\n return getNewsById(id);\n});\n\ninterface UpdateNewsParams {\n newsId: number;\n deletedNewsElements: number[];\n newElementsData: CreateNewsActionParams;\n changedElementsData: {\n id: number;\n content: string;\n html: string;\n typeOfContent: ContentMaterialTypeEnum;\n }[];\n files: {\n [materialId: number]: File[];\n };\n deletedFiles: number[];\n ordering: number[];\n}\n\nexport const updateNewsAction = createAsyncThunk(\n 'news/updateNews',\n async ({\n newsId,\n deletedNewsElements,\n newElementsData,\n changedElementsData,\n files,\n deletedFiles,\n ordering,\n }: UpdateNewsParams) => {\n const newElements = newElementsData.materials.map(({ content, html, typeOfContent }) => ({\n content,\n html,\n typeOfContent,\n news: newsId,\n }));\n\n const createFilesParams = Object.entries(files).flatMap(([newsElement, files]) => {\n return files.map((file) => ({\n file,\n newsElement: Number(newsElement),\n }));\n });\n\n const [createdElements] = await Promise.all([\n newElements.length ? createNewsElements(newElements) : null,\n changedElementsData.length ? updateNewsElements(changedElementsData) : null,\n deletedNewsElements.length ? deleteNewsElements(deletedNewsElements) : null,\n createFilesParams.map(({ newsElement, file }) => createNewsFile(newsElement, file)),\n deletedFiles.map((id) => deleteNewsFile(id)),\n ]);\n\n if (createdElements) {\n void (await createAddedFilesToElements(createdElements, newElementsData.files));\n }\n\n const newOrdering = ordering.map((materialId) => {\n const findNewMaterialIndex = newElementsData.materials.findIndex(({ id }) => id === materialId);\n\n if (createdElements !== null && findNewMaterialIndex > -1 && createdElements[findNewMaterialIndex]) {\n return createdElements[findNewMaterialIndex].id;\n }\n\n return materialId;\n });\n\n return changeNewsElementsOrdering(newsId, newOrdering);\n },\n);\n\nexport const getNewsByDatesAction = createAsyncThunk('news/getNewsByDates', (params: NewsFilters) => {\n return getNews(params);\n});\n\nexport const updateNewsLikesAction = createAsyncThunk(\n 'news/updateNewsLikes',\n (params: { id: number; like: boolean }) => {\n return updateNews(params.id, params.like);\n },\n);\n\nexport const deleteNewsAction = createAsyncThunk('news/deleteNews', (id: number) => {\n return deleteNews(id);\n});\n","import { getApiRequest } from 'api';\nimport { TUnreadNewsStatus } from 'api/services/news';\n\nexport const getUnreadNewsStatus = (): Promise => {\n return getApiRequest(`/news/unread/exists/`);\n};\n","import { postApiRequest } from 'api';\n\ninterface NewsMetaData {\n id: number;\n dateCreate: string;\n author: number;\n}\n\nexport const createNews = (): Promise => {\n return postApiRequest('/news/create/');\n};\n","import { getApiRequest } from 'api';\nimport { News } from 'api/services/news';\n\nexport const getNewsById = (id: number): Promise => {\n return getApiRequest(`/news/${id}/`);\n};\n","import { patchApiRequest } from 'api';\nimport { NewsElement } from 'api/services/news';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\ninterface UpdateNewsElement {\n id: number;\n content: string;\n html: string;\n typeOfContent: ContentMaterialTypeEnum;\n}\n\nexport const updateNewsElements = (elements: UpdateNewsElement[]): Promise => {\n return patchApiRequest('/news-element/bulk-update/', elements);\n};\n","import { getApiRequest } from 'api';\nimport { News } from 'api/services/news';\n\ninterface NewsFilters {\n date_before?: string;\n date_after?: string;\n}\n\nexport const getNews = (params: NewsFilters): Promise => {\n return getApiRequest('/news/', { params: { date_before: params?.date_before, date_after: params?.date_after } });\n};\n","import { patchApiRequest } from 'api';\n\ninterface NewsLikesInfo {\n id: number;\n likesCount: number;\n like: boolean;\n}\n\nexport const updateNews = (id: number, like: boolean): Promise => {\n return patchApiRequest(`/news/update/${id}/`, { like });\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteNews = (id: number): Promise => {\n return deleteApiRequest(`/news/delete/${id}/`).then(() => id);\n};\n","import Cookies, { CookieAttributes } from 'js-cookie';\n\nconst getCookie = (name: string): string => {\n return Cookies.get(name) || '';\n};\n\nconst setCookie = (name: string, value: string | number, config?: CookieAttributes): string | undefined => {\n return Cookies.set(name, String(value), config);\n};\n\nconst removeCookie = (name: string, config?: CookieAttributes): void => {\n return Cookies.remove(name, config);\n};\n\nexport { getCookie, removeCookie, setCookie };\n","import { cookiesDomain } from 'constants/apiMethods';\n\nimport { jwtDecode } from 'jwt-decode';\n\nimport { getCookie, removeCookie, setCookie } from './cookies';\n\nexport const getAccessToken = (): string => getCookie('access_token') || '';\nexport const getRefreshToken = (): string => getCookie('refresh_token') || '';\nexport const setAccessToken = (token: string): string | undefined => {\n let tokenData;\n try {\n tokenData = jwtDecode(token);\n } catch (e) {\n tokenData = undefined;\n }\n const expires = tokenData?.exp ? new Date(tokenData?.exp * 1000) : new Date();\n\n return setCookie('access_token', token, {\n secure: true,\n expires: expires,\n domain: cookiesDomain,\n sameSite: 'none',\n path: '/',\n });\n};\nexport const setRefreshToken = (token: string): string | undefined => {\n let tokenData;\n try {\n tokenData = jwtDecode(token);\n } catch (e) {\n tokenData = undefined;\n }\n const expires = tokenData?.exp ? new Date(tokenData?.exp * 1000) : new Date();\n\n return setCookie('refresh_token', token, {\n secure: true,\n expires: expires,\n domain: cookiesDomain,\n sameSite: 'none',\n path: '/',\n });\n};\n\nexport const removeAccessToken = (): void => removeCookie('access_token', { domain: cookiesDomain });\nexport const removeRefreshToken = (): void => removeCookie('refresh_token', { domain: cookiesDomain });\n\nexport const removeAllTokens = (): void => {\n removeRefreshToken();\n removeAccessToken();\n};\n","let url = 'https://lms-backend.og1.tech';\nconst ssoUrl = process.env.REACT_APP_SSO_TEST_HOST;\nconst commonUrl = process.env.REACT_APP_COMMON_TEST_HOST;\nconst monitoringUrl = process.env.REACT_APP_MONITORING_TEST_HOST;\nconst socketUrl = process.env.REACT_APP_SOCKET_URI;\n\n//let url = 'https://lms-backend-dev2.og1.ru';\n\nif (process.env.REACT_APP_TEST_HOST) {\n url = process.env.REACT_APP_TEST_HOST;\n} else if (window.location.href.includes('thmoon.tech') && !window.location.href.includes('dyn')) {\n if (window.location.href.includes('release')) {\n url = 'https://lms-backend.og1.tech';\n } else {\n url = 'https://lms-backend-staging.og1.ru/';\n }\n}\n\nlet sentryDsn = 'https://f42b24955aac4f4c94a508214250c272@sentry.og1.ru/18';\n\nif (process.env.REACT_APP_SENTRY_DSN) {\n sentryDsn = process.env.REACT_APP_SENTRY_DSN;\n} else if (window.location.href.includes('thmoon.tech') && !window.location.href.includes('dyn')) {\n if (window.location.href.includes('release')) {\n sentryDsn = 'https://f89adf2b6778442aa2c80423049129ca@sentry.og1.ru/17';\n } else {\n sentryDsn = 'https://f42b24955aac4f4c94a508214250c272@sentry.og1.ru/18';\n }\n}\n\nexport const isLocalHost = window.location.href.includes('localhost');\n\nexport const host = url;\nexport const ssoHost = ssoUrl;\nexport const commonHost = commonUrl;\nexport const dsn = sentryDsn;\nexport const cookiesDomain = isLocalHost ? undefined : host.includes('tech') ? 'og1.tech' : 'og1.ru';\nexport const projectDomain = isLocalHost || host.includes('tech') ? 'og1.tech' : 'og1.ru';\nexport const currentEnvironment = host.includes('tech') || isLocalHost ? 'development' : 'production';\nexport const monitoringHost = monitoringUrl;\nexport const socketHost = socketUrl;\n","import { Block, MetaSubjects, Parallel, ParallelSkills, Section, Topic } from 'api/services/codifier';\n\nexport const noQuestionInTheme = (topic: Topic): boolean => {\n return topic.questionsQuantity + topic.questionsQuantityUnpublished === 0;\n};\n\nexport const noQuestionInBlock = (block: Block, topics: Topic[]): boolean => {\n const noQuestions = topics.reduce(\n (noQuestions, topic) =>\n topic.block === block.id || topic.block === undefined || topic.block === null\n ? noQuestions && noQuestionInTheme(topic)\n : noQuestions,\n true,\n );\n return noQuestions;\n};\n\nexport const noQuestionInSection = (section: Section): boolean => {\n const noQuestions = section.blocks\n ? section.blocks.reduce(\n (noQuestions, block) => noQuestions && noQuestionInBlock(block, section?.topics ?? []),\n true,\n )\n : true;\n return noQuestions;\n};\n\nexport const noQuestionInParallel = (parallel: Parallel): boolean => {\n const noQuestions = parallel.sections\n ? parallel.sections.reduce((noQuestions, section) => noQuestions && noQuestionInSection(section), true)\n : true;\n return noQuestions;\n};\n\nexport const noSkillInArea = (areas: MetaSubjects): boolean => {\n return areas?.skills?.length === 0 ?? true;\n};\n\nexport const noSkillInParallel = (parallel: ParallelSkills): boolean => {\n const noSkills = (parallel.metasubjects ?? []).reduce((noSkills, area) => noSkills && noSkillInArea(area), true);\n return noSkills;\n};\n","export enum DropdownActionsFormValuesFields {\n title = 'title',\n codifierValue = 'codifierValue',\n order = 'order',\n}\n\nexport type DropdownActionsFormValues = {\n [key in keyof typeof DropdownActionsFormValuesFields]?: string;\n} & {\n [DropdownActionsFormValuesFields.title]: string;\n [DropdownActionsFormValuesFields.order]: string;\n};\n\nexport interface DropdownActionsFormProps {\n onChangeAdd: (values: Record) => void;\n onClickCancel: () => void;\n name: string;\n textButtonAdd?: string;\n allCodifierValues?: (string | undefined)[];\n placeholder: string;\n options?: string[];\n isNeedTextField?: boolean;\n needTextarea?: boolean;\n needCodifierValue?: boolean;\n initialValue?: Record;\n title?: string;\n noSkills?: boolean;\n isSection?: boolean;\n needDisableOrder?: boolean;\n}\n","import React, { useCallback } from 'react';\nimport { Form } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum, FieldDropdown, FieldForm, TextareaField } from '@lms-elements/atomic';\n\nimport { DropdownActionsFormProps, DropdownActionsFormValuesFields } from './DropdownWithActions.types';\n\nimport './DropdownWithActions.scss';\n\nconst CnDropdownActionsForm = cn('dropdownActionsForm');\n\nconst codifierRegexp = /[\\wА-Яа-я]+.[\\wА-Яа-я]+.\\d+.\\d+.\\d+|^(?![\\s\\S])/g;\n\nexport const DropdownWithActions: React.FC = ({\n onClickCancel,\n onChangeAdd,\n textButtonAdd = 'Добавить',\n name,\n initialValue = {},\n placeholder,\n allCodifierValues = [],\n options = [],\n isNeedTextField = false,\n needTextarea = false,\n needCodifierValue,\n title,\n noSkills = false,\n needDisableOrder,\n}) => {\n const validate = useCallback((value: string) => (value ? undefined : 'error'), []);\n const validateCodifierExists = useCallback(\n (codifier: string | undefined) =>\n allCodifierValues?.includes(codifier || '') ? 'This codifier already exists' : undefined,\n [allCodifierValues],\n );\n const validateCodifierStructure = useCallback(\n (codifier: string | undefined) => (codifier?.match(codifierRegexp) === null ? 'Not valid' : undefined),\n [],\n );\n\n const handleFormSubmit = useCallback(\n (values: Record) => {\n onChangeAdd(values);\n onClickCancel();\n },\n [onChangeAdd, onClickCancel],\n );\n\n return (\n
\n
\n {({ handleSubmit }) => (\n \n
\n {title &&
{title}
}\n {isNeedTextField && noSkills && (\n \n )}\n {isNeedTextField ? (\n \n ) : needTextarea ? (\n \n ) : (\n \n )}\n
\n {needCodifierValue && (\n
\n \n
\n )}\n
\n \n \n
\n
\n )}\n \n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Basket, CopyIcon, Pencil, Plus } from '@lms-elements/icons';\nimport { ReplaceIcon } from 'assets';\n\nimport './ThemeTooltip.scss';\n\ninterface IThemeTooltipProps {\n handleCreateQuestion?: () => void;\n isTheme?: boolean;\n canEdit?: boolean;\n handleEditClick?: () => void;\n handleCopyClick?: () => void;\n handleDeleteClick?: () => void;\n handleReplaceClick?: () => void;\n canCopy?: boolean;\n skillsTooltip?: boolean;\n isChild?: boolean;\n canDelete?: boolean;\n canReplace?: boolean;\n}\n\nconst cnThemeTooltip = cn('theme_tooltip');\n\nconst viewBoxPencilPosition = '9 -2 14 28';\n\nexport const ThemeTooltip: React.FC = ({\n handleCreateQuestion,\n isTheme = true,\n canEdit = true,\n handleEditClick,\n handleCopyClick,\n handleDeleteClick,\n handleReplaceClick,\n canCopy,\n skillsTooltip = false,\n isChild = false,\n canDelete = true,\n canReplace = true,\n}) => {\n return (\n
\n
\n
\n {isTheme && !isChild && (\n
\n \n {skillsTooltip ? 'Создать навык' : 'Создать вопрос'}\n
\n )}\n {canEdit && (\n
\n \n Редактировать\n
\n )}\n {canCopy && !isChild && (\n
\n \n Копировать\n
\n )}\n {canReplace && (\n
\n \n Переместить\n
\n )}\n {canDelete && (\n
\n \n Удалить\n
\n )}\n
\n
\n
\n );\n};\n","import { codifierPageData } from 'constants/cypress/codifier-page';\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Dots, Folders, LittleArrow, Plus } from '@lms-elements/icons';\nimport { useOuterClickField } from 'hooks/useOuterClickField';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\nimport { getGradesOptions } from 'components/Codifier/utils';\nimport { DropdownWithActions } from 'components/DropdownWithActions';\nimport { ThemeTooltip } from 'components/ThemeTooltip';\n\nimport './CodifierDropdownGrade.scss';\n\nconst cnCodifierDropdownGrade = cn('codifier_dropdown_grade');\n\ninterface CodifierDropdownGradeProps {\n id: number;\n numberGrade: number;\n sectionsCount?: number;\n onDeleteClick?: (type: CodifierEventType, id: number) => void;\n onCreateClick?: (id: number, values: Record) => void;\n onEditClick?: (id: number, values: Record) => void;\n onSelect?: (type: CodifierEventType, id: number) => void;\n handleCopyClick?: () => void;\n nextSection?: number;\n isEditable?: boolean;\n isOpenedInit?: boolean;\n isHighlighted?: boolean;\n skillsCodifier?: boolean;\n parallels?: {\n grade: number;\n }[];\n disabled?: boolean;\n canHover?: boolean;\n handleCanHover?: () => void;\n index: number;\n canDelete?: boolean;\n canReplace?: boolean;\n needHideBlue?: boolean;\n}\n\nexport const CodifierDropdownGrade: React.FC = ({\n id,\n numberGrade,\n onCreateClick,\n onEditClick,\n handleCopyClick,\n sectionsCount = 0,\n onDeleteClick,\n onSelect,\n nextSection = 1,\n children,\n disabled = false,\n isEditable = true,\n isOpenedInit = false,\n isHighlighted = false,\n skillsCodifier = true,\n canHover = true,\n handleCanHover,\n parallels,\n index,\n canDelete = true,\n canReplace = true,\n needHideBlue = false,\n}) => {\n const [isButtonsVisible, setIsButtonsVisible] = useState(false);\n const [isOpened, setIsOpened] = useState(isOpenedInit);\n const [isCreated, setIsCreated] = useState(false);\n const [isEdited, setIsEdited] = useState(false);\n const [isEditedForm, setIsEditedForm] = useState(false);\n const [isAdded, setIsAdded] = useState(false);\n\n const gradesAvailable = useMemo(() => {\n if (parallels) {\n return getGradesOptions(parallels?.map((parallel) => parallel.grade));\n }\n\n return [];\n }, [parallels]);\n\n const tooltipRef = useRef(null);\n const hideTooltip = useCallback(() => {\n setIsButtonsVisible(false);\n setIsEdited(false);\n if (handleCanHover) {\n handleCanHover();\n }\n }, [handleCanHover]);\n useOuterClickField(tooltipRef, hideTooltip);\n\n const grades = useMemo(\n () =>\n gradesAvailable\n ? [...gradesAvailable, `${numberGrade} класс`].sort((prev, next) => parseInt(prev) - parseInt(next))\n : [`${numberGrade} класс`],\n [gradesAvailable, numberGrade],\n );\n\n const handleDeleteClick = useCallback(() => {\n if (onDeleteClick && id) {\n onDeleteClick(CodifierEventType.PARALLEL, id);\n }\n }, [id, onDeleteClick]);\n\n const handleHoverButtons = useCallback(\n (value) => {\n if (canHover) {\n setIsButtonsVisible(value);\n }\n },\n [canHover],\n );\n\n const handleHeaderClick = useCallback(() => {\n if (!disabled) {\n if (!needHideBlue) setIsOpened(!isOpened);\n if (onSelect) {\n onSelect(CodifierEventType.PARALLEL, id);\n }\n }\n }, [disabled, needHideBlue, isOpened, onSelect, id]);\n\n const handleCreateButtonClick = useCallback(() => {\n if (!isEdited && !isEditedForm) {\n setIsCreated(!isCreated);\n if (handleCanHover) {\n handleCanHover();\n }\n setIsButtonsVisible(false);\n }\n }, [isCreated, handleCanHover, isEditedForm, isEdited]);\n\n const handleEditButtonClick = useCallback(() => {\n if (!isEditedForm && !isCreated) {\n setIsEdited(!isEdited);\n if (handleCanHover) {\n handleCanHover();\n }\n }\n }, [isEdited, handleCanHover, isEditedForm, isCreated]);\n\n const handleEditFormClick = useCallback(() => {\n setIsEditedForm((prev) => !prev);\n if (handleCanHover && !canHover && !isEdited) {\n handleCanHover();\n }\n setIsButtonsVisible(false);\n setIsEdited(false);\n }, [canHover, handleCanHover, isEdited]);\n\n const handleAddFormClick = useCallback(\n (values: Record) => {\n if (onCreateClick) {\n onCreateClick(id, values);\n }\n setIsAdded(true);\n },\n [id, onCreateClick],\n );\n\n const handleEditFormSubmit = useCallback(\n (values: Record) => {\n if (onEditClick) {\n onEditClick(id, values);\n }\n },\n [id, onEditClick],\n );\n\n const correctPlaceholder = useMemo(\n () => (skillsCodifier ? `${nextSection}. Мета-предметная область: введите название` : `Название`),\n [skillsCodifier, nextSection],\n );\n\n useEffect(() => {\n if (!(isEdited || isCreated || isEditedForm)) {\n if (disabled && isOpened && !isAdded) {\n setIsOpened(false);\n }\n if (!disabled && isAdded) {\n setIsOpened(true);\n setIsAdded(false);\n }\n }\n }, [disabled, isOpened, isEdited, isCreated, isEditedForm, isAdded]);\n\n return (\n <>\n \n \n \n \n

{numberGrade} класс

\n
\n
\n {(isButtonsVisible || isEdited) && isEditable && (\n <>\n
\n \n
\n
\n \n
\n \n )}\n {isEdited && (\n
\n 1}\n handleCopyClick={handleCopyClick}\n handleDeleteClick={handleDeleteClick}\n handleEditClick={handleEditFormClick}\n canDelete={canDelete}\n canReplace={canReplace}\n />\n
\n )}\n
\n \n {(isOpened || isCreated || isEditedForm) && (\n \n {isCreated && (\n \n )}\n {isEditedForm && (\n \n )}\n {isOpened && children}\n \n )}\n \n );\n};\n","import { codifierPageData } from 'constants/cypress/codifier-page';\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Dots, LittleArrow, Plus } from '@lms-elements/icons';\nimport { useOuterClickField } from 'hooks/useOuterClickField';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\nimport { DropdownWithActions } from 'components/DropdownWithActions';\nimport { ThemeTooltip } from 'components/ThemeTooltip';\n\nimport './CodifierDropdownSection.scss';\n\nconst cnCodifierDropdownSection = cn('codifier_dropdown_section');\n\ntype CreateParams = {\n id: number;\n parentId?: number;\n order?: number;\n};\n\ninterface ICodifierDropdownSectionProps {\n id: number;\n parentId?: number;\n type: CodifierEventType;\n order: number;\n childrenOrder?: number;\n isTheme: boolean;\n themeNext?: number;\n themeLessonNext: number;\n handleCopyClick?: () => void;\n onCreateClick?: (\n params: CreateParams,\n values: Record,\n parallel: number,\n ) => void;\n onDeleteClick?: (type: CodifierEventType, id: number) => void;\n onReplaceClick?: (type: CodifierEventType, id: number) => void;\n onEditClick?: (\n id: number,\n values: Record,\n section: number,\n parallel?: number,\n ) => void;\n onSelect?: (type: CodifierEventType, id: number) => void;\n title: string;\n isEditable?: boolean;\n isOpenedInit?: boolean;\n isHighlighted?: boolean;\n disabled?: boolean;\n canHover?: boolean;\n parallel?: number;\n handleCanHover?: () => void;\n index: number;\n canDelete?: boolean;\n canReplace?: boolean;\n needHideBlue?: boolean;\n}\n\nexport const CodifierDropdownSection: React.FC = ({\n id,\n type,\n order,\n isTheme,\n title,\n themeNext = 1,\n themeLessonNext,\n handleCopyClick,\n onDeleteClick,\n onReplaceClick,\n onSelect,\n onCreateClick,\n onEditClick,\n isEditable = true,\n isOpenedInit = false,\n isHighlighted = false,\n children,\n parentId,\n disabled = false,\n canHover = true,\n handleCanHover,\n index,\n canDelete = true,\n canReplace = true,\n needHideBlue = false,\n parallel,\n}) => {\n const [isButtonsVisible, setIsButtonsVisible] = useState(false);\n const [isOpened, setIsOpened] = useState(isOpenedInit);\n const [isCreated, setIsCreated] = useState(false);\n const [isEdited, setIsEdited] = useState(false);\n const [isEditedForm, setIsEditedForm] = useState(false);\n const [isAdded, setIsAdded] = useState(false);\n\n const tooltipRef = useRef(null);\n const hideTooltip = useCallback(() => {\n setIsButtonsVisible(false);\n setIsEdited(false);\n if (handleCanHover) {\n handleCanHover();\n }\n }, [handleCanHover]);\n useOuterClickField(tooltipRef, hideTooltip);\n const correctThemeTitle = useMemo(() => (isTheme ? `Блок ${order}` : `Раздел ${order}`), [isTheme, order]);\n\n const handleHoverButtons = useCallback(\n (value) => {\n if (canHover) {\n setIsButtonsVisible(value);\n }\n },\n [canHover],\n );\n\n const handleHeaderClick = useCallback(() => {\n if (!disabled) {\n if (!needHideBlue) setIsOpened(!isOpened);\n if (onSelect) {\n onSelect(type, id);\n }\n }\n }, [disabled, id, isOpened, needHideBlue, onSelect, type]);\n\n const handleDeleteClick = useCallback(() => {\n onDeleteClick?.(type, id);\n }, [id, onDeleteClick, type]);\n\n const handleReplaceClick = useCallback(() => {\n onReplaceClick?.(type, id);\n }, [id, onReplaceClick, type]);\n\n const handleCreateButtonClick = useCallback(() => {\n if (!isEdited && !isEditedForm) {\n setIsCreated(!isCreated);\n if (handleCanHover) {\n handleCanHover();\n }\n setIsButtonsVisible(false);\n }\n }, [isCreated, handleCanHover, isEditedForm, isEdited]);\n\n const handleEditButtonClick = useCallback(() => {\n if (!isEditedForm && !isCreated) {\n setIsEdited(!isEdited);\n if (handleCanHover) {\n handleCanHover();\n }\n }\n }, [isEdited, handleCanHover, isEditedForm, isCreated]);\n\n const handleEditFormClick = useCallback(() => {\n setIsEditedForm((prev) => !prev);\n if (handleCanHover && !canHover && !isEdited) {\n handleCanHover();\n }\n setIsEdited(false);\n setIsButtonsVisible(false);\n }, [canHover, handleCanHover, isEdited]);\n\n const handleAddFormClick = useCallback(\n (values: Record) => {\n if (onCreateClick) {\n onCreateClick({ id: id, parentId: parentId }, values, Number(parentId));\n }\n setIsAdded(true);\n },\n [onCreateClick, id, parentId],\n );\n\n const handleEditFormSubmit = useCallback(\n (values: Record) => {\n if (onEditClick) {\n onEditClick(id, values, Number(parentId), Number(parallel));\n }\n },\n [onEditClick, id, parentId, parallel],\n );\n\n useEffect(() => {\n if (!(isEdited || isCreated || isEditedForm)) {\n if (disabled && isOpened && !isAdded) {\n setIsOpened(false);\n }\n if (!disabled && isAdded) {\n setIsOpened(true);\n setIsAdded(false);\n }\n }\n }, [disabled, isOpened, isEdited, isCreated, isEditedForm, isAdded]);\n\n return (\n <>\n \n \n \n {`${correctThemeTitle}: ${title}`}\n \n
\n {(isButtonsVisible || isEdited) && isEditable && (\n <>\n
\n \n
\n
\n \n
\n \n )}\n {isEdited && (\n
\n \n
\n )}\n
\n \n {(isOpened || isCreated || isEditedForm) && (\n 1 || themeLessonNext > 1)),\n section: !isTheme,\n })}\n >\n {isCreated && (\n \n )}\n {isEditedForm && (\n \n )}\n {isOpened && children}\n \n )}\n \n );\n};\n","import { codifierPageData } from 'constants/cypress/codifier-page';\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { GetMore, LittleArrow, Plus } from '@lms-elements/icons';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\nimport { getGradesOptions } from 'components/Codifier/utils';\nimport { DropdownWithActions } from 'components/DropdownWithActions';\nimport { ThemeTooltip } from 'components/ThemeTooltip';\n\nimport './SubjectName.scss';\n\nconst CnSubjectName = cn('subjectName');\n\ninterface ISubjectNameProps {\n id?: number;\n title: string;\n onClickAdd?: (id: number, type: string) => void;\n onClickMore?: () => void;\n handleCopyClick?: () => void;\n handleCreateClick?: (id: number, values: Record) => void;\n handleDeleteClick?: () => void;\n handleEditClick?: () => void;\n handleSelect?: (type: CodifierEventType, id: number) => void;\n parallels?: {\n grade: number;\n }[];\n isClickMore: boolean;\n isEditable?: boolean;\n isOpenedInit?: boolean;\n isHighlighted?: boolean;\n canEdit?: boolean;\n disabled?: boolean;\n canHover?: boolean;\n handleCanHover?: () => void;\n setMounted?: React.Dispatch>;\n index: number;\n}\n\nexport const SubjectName: React.FC = ({\n id,\n title,\n children,\n parallels,\n handleCreateClick,\n handleCopyClick,\n handleDeleteClick,\n handleEditClick,\n handleSelect,\n isClickMore,\n isEditable = true,\n isOpenedInit = false,\n isHighlighted = false,\n disabled = false,\n canEdit,\n canHover = true,\n handleCanHover,\n setMounted,\n index,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isClickShow, setIsClickShow] = useState(isOpenedInit);\n const [isCreated, setIsCreated] = useState(false);\n const [isEdited, setIsEdited] = useState(false);\n const [isAdded, setIsAdded] = useState(false);\n\n const grades = useMemo(() => {\n if (parallels) {\n return getGradesOptions(parallels?.map((parallel) => parallel.grade));\n }\n\n return [];\n }, [parallels]);\n\n useEffect(() => {\n setMounted?.(true);\n\n return () => setMounted?.(false);\n }, [setMounted]);\n\n const toggleShow = useCallback(() => {\n if (!disabled) {\n setIsClickShow((prev) => !prev);\n if (handleSelect && id && !isClickShow) {\n handleSelect(CodifierEventType.SUBJECT, id);\n }\n }\n }, [disabled, handleSelect, id, isClickShow]);\n\n const toggleHover = useCallback(\n (value) => {\n if (canHover) {\n setIsHovered(value);\n }\n },\n [canHover],\n );\n\n const showDots = useMemo(() => isHovered || isClickMore, [isHovered, isClickMore]);\n\n const handleClickAdd = useCallback(() => {\n setIsCreated((prev) => !prev);\n if (handleCanHover) {\n handleCanHover();\n }\n setIsHovered(false);\n }, [handleCanHover]);\n\n const handleEditButtonClick = useCallback(() => {\n setIsEdited(!isEdited);\n }, [isEdited]);\n\n const handleAddFormClick = useCallback(\n (values: Record) => {\n if (handleCreateClick && id) handleCreateClick(id, values);\n setIsAdded(true);\n },\n [handleCreateClick, id],\n );\n\n useEffect(() => {\n if (!(isEdited || isCreated)) {\n if (disabled && isClickShow && !isAdded) {\n setIsClickShow(false);\n }\n if (!disabled && isAdded) {\n setIsClickShow(true);\n setIsAdded(false);\n }\n }\n }, [disabled, isClickShow, isEdited, isCreated, isAdded]);\n\n return (\n
\n \n \n \n \n
\n
{title}
\n \n
\n {(showDots || isEdited) && isEditable && (\n <>\n {grades && !!grades.length && (\n
\n \n
\n )}\n {canEdit && (\n
\n \n
\n )}\n \n )}\n {isEdited && isEditable && (\n \n )}\n
\n \n \n {isCreated && (\n \n )}\n {isClickShow && children}\n \n \n );\n};\n","import { codifierPageData } from 'constants/cypress/codifier-page';\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox } from '@lms-elements/atomic';\nimport { GetMore } from '@lms-elements/icons';\nimport { useOuterClickField } from 'hooks/useOuterClickField';\nimport i18next from 'i18next';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\nimport { DropdownActionsFormValues, DropdownWithActions } from 'components/DropdownWithActions';\nimport { ThemeTooltip } from 'components/ThemeTooltip';\n\nimport './ThemeCodifier.scss';\n\nconst CnThemeCodifier = cn('themeCodifier');\n\ninterface stateMetaArea {\n subjectId: number;\n gradeId: number;\n metaAreaId: number;\n}\ninterface stateSkill {\n subjectId: number;\n gradeId: number;\n metaAreaId: number;\n skillId: number;\n}\n\ninterface IThemeCodifierProps {\n id?: number;\n subjectId?: number;\n type: CodifierEventType;\n isThemeSubject: boolean;\n title: string;\n numQuestions: number;\n numQuestionsUnpublished: number;\n isSelectedInit: boolean;\n isCheckedInit?: boolean;\n themeNumber: number;\n codifierValue?: string;\n allCodifierValues?: (string | undefined)[];\n onCreateClick?: (id: number, alues: Record) => void;\n onClickAdd?: (id: number) => () => void;\n handleCopyClick?: () => void;\n handleCreateQuestion?: (id: number, subject?: number) => void;\n onDeleteClick?: (type: CodifierEventType, id: number) => void;\n onEditClick?: (\n id: number,\n values: Record,\n parallel: number,\n block: number,\n section?: number,\n ) => void;\n onReplaceClick?: (type: CodifierEventType, id: number) => void;\n handleSelectThemeLesson?: (type: CodifierEventType, id: number) => void;\n handleSelectCheckbox?: (id: number) => void;\n onClickMore?: () => void;\n isClickMore?: boolean;\n isEditable?: boolean;\n hasCheckbox?: boolean;\n skillsTheme?: boolean;\n numSkill?: number;\n isChild?: boolean;\n setSelectedMetaArea?: ({ subjectId, gradeId, metaAreaId }: stateMetaArea) => void;\n selectedMetaArea?: { subjectId: number; gradeId: number; metaAreaId: number };\n subjectIndex?: number;\n parallelIndex?: number;\n metaAreaIndex?: number;\n setSelectedSkill?: ({ subjectId, gradeId, metaAreaId, skillId }: stateSkill) => void;\n selectedSkill?: { subjectId: number; gradeId: number; metaAreaId: number; skillId: number };\n isOpenedInit?: boolean;\n canHover?: boolean;\n handleCanHover?: () => void;\n themeIndex: number;\n blockIndex?: number;\n canDelete?: boolean;\n canReplace?: boolean;\n needOrder?: boolean;\n parallel?: number;\n section?: number;\n block?: number;\n needDisableOrder?: boolean;\n}\nconst test = false;\nexport const ThemeCodifier: React.FC = ({\n type,\n isThemeSubject,\n title,\n numQuestions,\n numQuestionsUnpublished,\n isSelectedInit,\n isCheckedInit = false,\n themeNumber,\n id = -1,\n isEditable = true,\n codifierValue,\n allCodifierValues = [],\n handleCreateQuestion,\n handleCopyClick,\n onCreateClick,\n onDeleteClick,\n onReplaceClick,\n handleSelectThemeLesson,\n handleSelectCheckbox,\n onClickAdd = () => undefined,\n isClickMore = false,\n hasCheckbox = false,\n skillsTheme = false,\n onEditClick,\n numSkill = 1,\n children,\n isChild = false,\n setSelectedMetaArea = () => undefined,\n selectedMetaArea = { subjectId: 0, gradeId: 0, metaAreaId: 0 },\n subjectIndex = 0,\n parallelIndex = 0,\n metaAreaIndex = 0,\n setSelectedSkill = () => undefined,\n isOpenedInit = false,\n canHover = true,\n handleCanHover,\n subjectId,\n themeIndex,\n needOrder = false,\n blockIndex,\n canDelete = true,\n canReplace = true,\n parallel,\n section,\n block,\n needDisableOrder = false,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isCreated, setIsCreated] = useState(false);\n const [isSelected, setIsSelected] = useState(isSelectedInit);\n const [isChecked, setIsChecked] = useState(isCheckedInit);\n const [showOptions, setShowOptions] = useState(false);\n const [isOpened, setIsOpened] = useState(isOpenedInit);\n const [isEditedForm, setIsEditedForm] = useState(false);\n\n const tooltipRef = useRef(null);\n const hideTooltip = useCallback(() => {\n setShowOptions(false);\n setIsHovered(false);\n if (handleCanHover) {\n handleCanHover();\n }\n }, [handleCanHover]);\n useOuterClickField(tooltipRef, hideTooltip);\n\n const toggleHover = useCallback(\n (value) => {\n if (canHover) {\n setIsHovered(value);\n }\n },\n [canHover],\n );\n\n const clickMore = useMemo(() => isClickMore && isSelectedInit, [isClickMore, isSelectedInit]);\n\n const oneSelectedArea = useMemo(\n () =>\n JSON.stringify(selectedMetaArea) ===\n JSON.stringify({ subjectId: subjectIndex, gradeId: parallelIndex, metaAreaId: metaAreaIndex }) &&\n isOpened,\n [parallelIndex, subjectIndex, metaAreaIndex, selectedMetaArea, isOpened],\n );\n\n const handleEditButtonClick = useCallback(() => {\n if (handleCanHover) {\n handleCanHover();\n }\n if (!isSelected) {\n setIsSelected(true);\n }\n setShowOptions(!showOptions);\n setSelectedMetaArea({ subjectId: subjectIndex, gradeId: parallelIndex, metaAreaId: metaAreaIndex });\n if (isChild) {\n setSelectedSkill({\n subjectId: subjectIndex,\n gradeId: parallelIndex,\n metaAreaId: metaAreaIndex,\n skillId: themeNumber - 1,\n });\n }\n }, [\n handleCanHover,\n isSelected,\n showOptions,\n setSelectedMetaArea,\n subjectIndex,\n parallelIndex,\n metaAreaIndex,\n isChild,\n themeNumber,\n setSelectedSkill,\n ]);\n\n useEffect(() => {\n if (!oneSelectedArea && isOpened) {\n setIsOpened(false);\n }\n }, [oneSelectedArea, isOpened]);\n\n const handleSelectLesson = useCallback(() => {\n if (handleSelectThemeLesson) {\n handleSelectThemeLesson(type, id);\n }\n }, [handleSelectThemeLesson, id, type]);\n\n const handleChangeCheckbox = useCallback(() => {\n if (handleSelectCheckbox) {\n handleSelectCheckbox(id);\n setIsChecked(!isChecked);\n }\n }, [handleSelectCheckbox, id, isChecked]);\n\n const handleCreateButtonClick = useCallback(() => {\n if (!showOptions) {\n setIsCreated(!isCreated);\n setShowOptions(false);\n setIsHovered(false);\n if (handleCanHover) {\n handleCanHover();\n }\n onClickAdd(id);\n }\n }, [isCreated, handleCanHover, showOptions, onClickAdd, id]);\n\n const handleAddSkill = useCallback(() => {\n setIsCreated(!isCreated);\n setShowOptions(!showOptions);\n setIsHovered(false);\n }, [isCreated, setIsCreated, showOptions]);\n\n const handleAddFormClick = useCallback(\n (values: Record) => {\n if (onCreateClick) {\n onCreateClick(id, values);\n }\n setIsOpened(true);\n },\n [id, onCreateClick],\n );\n\n const handleEditFormSubmit = useCallback(\n (values: Record) => {\n if (onEditClick) {\n onEditClick(id, values, Number(parallel), block ?? 0, needDisableOrder ? undefined : Number(section));\n }\n },\n [block, id, needDisableOrder, onEditClick, parallel, section],\n );\n\n const handleEditFormClick = useCallback(() => {\n setIsEditedForm((prev) => !prev);\n if (handleCanHover && !canHover && !showOptions) {\n handleCanHover();\n }\n setShowOptions(false);\n setIsHovered(false);\n }, [canHover, handleCanHover, showOptions]);\n\n const onClickOpenInit = useCallback(() => {\n if (!isChild) {\n if (!isSelected && isEditable) {\n setIsSelected(!isSelected);\n }\n setIsOpened(!isOpened);\n setShowOptions(false);\n setSelectedMetaArea({ subjectId: subjectIndex, gradeId: parallelIndex, metaAreaId: metaAreaIndex });\n }\n }, [isOpened, isSelected, subjectIndex, parallelIndex, metaAreaIndex, setSelectedMetaArea, isChild, isEditable]);\n\n const canSelect = useMemo(() => isEditedForm || isCreated || showOptions || isOpened, [\n isCreated,\n isEditedForm,\n isOpened,\n showOptions,\n ]);\n\n const titleText = useMemo(() => {\n if (skillsTheme) {\n return isChild ? `${numSkill}. ${title}` : `${title}`;\n }\n\n return `Тема ${themeNumber}: ${title}`;\n }, [isChild, numSkill, skillsTheme, themeNumber, title]);\n\n const skillsLabel = useMemo(() => {\n if (skillsTheme) {\n return numSkill ? `${i18next.t('skill', { count: numSkill })}` : 'нет навыков';\n }\n return numQuestions ? `${i18next.t('questions', { count: numQuestions })}` : 'нет вопросов';\n }, [numQuestions, numSkill, skillsTheme]);\n\n const unpublishedQuestions = useMemo(() => {\n if (!skillsTheme && numQuestionsUnpublished) {\n return `(${i18next.t('unpublished', { count: numQuestionsUnpublished })})`;\n }\n return '';\n }, [numQuestionsUnpublished, skillsTheme]);\n\n const handleTextClick = useMemo(() => {\n if (hasCheckbox) {\n return handleChangeCheckbox;\n }\n\n if (!numSkill) {\n return undefined;\n }\n\n return skillsTheme ? onClickOpenInit : handleSelectLesson;\n }, [handleChangeCheckbox, handleSelectLesson, hasCheckbox, numSkill, onClickOpenInit, skillsTheme]);\n\n const handleDeleteClick = useCallback(() => {\n if (onDeleteClick && id > 0) {\n onDeleteClick(type, id);\n }\n }, [id, onDeleteClick, type]);\n\n const handleReplaceClick = useCallback(() => {\n onReplaceClick?.(type, id);\n }, [id, onReplaceClick, type]);\n\n const skillCreateFormRef = useRef(null);\n\n useEffect(() => {\n if (isCreated && skillsTheme && skillCreateFormRef.current) {\n skillCreateFormRef.current.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isCreated, skillsTheme]);\n\n return (\n <>\n \n
\n {hasCheckbox && }\n \n {titleText}\n {isChild && codifierValue && (\n ({codifierValue})\n )}\n
\n
\n {(isHovered || showOptions || test) && !hasCheckbox && isEditable && (\n \n \n
\n )}\n {showOptions && (\n
\n \n
\n )}\n \n \n {!hasCheckbox && !isChild && (\n
\n
{skillsLabel}
\n
{unpublishedQuestions}
\n
\n )}\n \n {isEditedForm && (\n \n )}\n {(oneSelectedArea || isOpened || isOpenedInit) && children}\n {isCreated && skillsTheme && (\n
\n \n
\n )}\n \n );\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { DeleteIcon } from '@lms-elements/icons';\nimport { CodifierResponseData } from 'api/services/codifier';\nimport { patchCodifierBlockAction, patchCodifierSectionAction, patchCodifierTopicAction } from 'store/actions/codifier';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType, ReplaceParams } from 'components/Codifier/Codifier';\nimport { CodifierDropdownGrade } from 'components/CodifierDropdownGrade';\nimport { CodifierDropdownSection } from 'components/CodifierDropdownSection';\n\nimport './ReplaceWindow.scss';\n\nconst cnReplaceWindow = cn('modalWindow');\n\ninterface ReplaceWindowProps {\n params: ReplaceParams;\n onCloseClick: () => void;\n subjects?: CodifierResponseData[];\n}\n\nexport const ReplaceWindow: React.FC = ({ params, onCloseClick, subjects }) => {\n const dispatch = useDispatch();\n const { codifierData } = useAppSelector((store) => store.codifier);\n\n const handleClose = useCallback(() => onCloseClick(), [onCloseClick]);\n\n const [selectedParallel, setSelectedParallel] = useState(params.parallel);\n const [selectedSection, setSelectedSection] = useState(params.section);\n const [selectedBlock, setSelectedBlock] = useState(params.block);\n\n const replaceLabels = useMemo(() => {\n switch (params.type) {\n case CodifierEventType.SECTION:\n return {\n buttonLabel: 'Переместить раздел',\n title: 'Перемещение раздела',\n desc: 'Выберите параллель, в которую вы хотите перенести выбранный вами раздел',\n };\n case CodifierEventType.BLOCK:\n return {\n buttonLabel: 'Переместить блок',\n title: 'Перемещение блока',\n desc: 'Выберите раздел, в который вы хотите перенести выбранный вами блок',\n };\n case CodifierEventType.TOPIC:\n return {\n buttonLabel: 'Переместить тему',\n title: 'Перемещение темы',\n desc: 'Выберите раздел и блок, в который вы хотите перенести выбранную вами тему',\n };\n default:\n break;\n }\n }, [params.type]);\n\n const handleElementSelect = useCallback((type: CodifierEventType, id: number) => {\n switch (type) {\n case CodifierEventType.PARALLEL:\n setSelectedParallel(id);\n break;\n case CodifierEventType.SECTION:\n setSelectedSection(id);\n setSelectedBlock(undefined);\n break;\n case CodifierEventType.BLOCK:\n setSelectedBlock(id);\n break;\n }\n }, []);\n\n const handleApproveReplace = useCallback(() => {\n if (params.type === CodifierEventType.TOPIC) {\n const oldOrdering = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === params.section)\n ?.blocks?.find((el) => el.id === params.block)\n ?.topics?.map((el) => el.id);\n\n const order = (oldOrdering?.findIndex((topic) => topic === params.id) ?? 0) + 1;\n const selectedTopic = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === params.section)\n ?.blocks?.find((el) => el.id === params.block)\n ?.topics?.find((el) => el.id === params.id);\n\n const orderInCurrenSection = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === selectedSection)\n ?.blocks?.find((el) => el.id === selectedBlock)\n ?.topics?.map((el) => el.id);\n\n if (selectedBlock) {\n dispatch(\n patchCodifierTopicAction({\n id: params.id,\n section: selectedSection,\n block: selectedBlock,\n subject: params.subject,\n parallel: params.parallel,\n oldSection: params.section,\n oldBlock: params.block,\n newPlaceOrdering: orderInCurrenSection,\n title: selectedTopic?.title,\n order: order,\n ordering: oldOrdering,\n }),\n );\n }\n\n onCloseClick();\n }\n if (params.type === CodifierEventType.BLOCK) {\n const sectionOrdering = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === selectedSection)\n ?.blocks?.map((el) => el.id);\n const oldSectionOrdering = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === params.section)\n ?.blocks?.map((el) => el.id);\n\n const selectedBlock = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === params.section)\n ?.blocks?.find((el) => el.id === params.id);\n\n dispatch(\n patchCodifierBlockAction({\n id: params.id,\n section: selectedSection,\n sectionOrdering: sectionOrdering,\n subject: params.subject,\n parallel: params.parallel,\n oldSection: params.section,\n title: selectedBlock?.title,\n order: selectedBlock?.order,\n ordering: oldSectionOrdering,\n }),\n );\n onCloseClick();\n }\n if (params.type === CodifierEventType.SECTION) {\n const selectedSection = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.find((el) => el.id === params.section);\n\n const targetParallelOrder = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === selectedParallel)\n ?.sections?.map((el) => el.id);\n\n const currentParallelOrder = codifierData\n .find((el) => el.parallels?.some((el) => el.id === params.parallel))\n ?.parallels?.find((el) => el.id === params.parallel)\n ?.sections?.map((el) => el.id);\n\n dispatch(\n patchCodifierSectionAction({\n id: params.id,\n parallel: selectedParallel,\n subject: params.subject,\n oldParallel: params.parallel,\n title: selectedSection?.title,\n parallelOrdering: targetParallelOrder,\n ordering: currentParallelOrder,\n order: selectedSection?.order,\n }),\n );\n onCloseClick();\n }\n }, [\n dispatch,\n onCloseClick,\n params.block,\n params.id,\n params.parallel,\n params.section,\n params.subject,\n params.type,\n selectedBlock,\n selectedParallel,\n selectedSection,\n ]);\n\n const parallels = useMemo(() => subjects?.find((el) => el.id === params.subject)?.parallels, [\n params.subject,\n subjects,\n ]);\n\n const sections = useMemo(\n () =>\n subjects?.find((el) => el.id === params.subject)?.parallels?.find((el) => el.id === params.parallel)\n ?.sections,\n [params.parallel, params.subject, subjects],\n );\n\n return (\n
\n
\n \n
\n
{replaceLabels?.title}
\n
{replaceLabels?.desc}
\n
\n {params.type === CodifierEventType.SECTION &&\n parallels?.map((parallel, index) => (\n \n ))}\n {params.type === CodifierEventType.BLOCK &&\n sections?.map((section, sectionIndex) => (\n \n ))}\n {params.type === CodifierEventType.TOPIC && (\n
\n {sections?.map((section, sectionIndex) => (\n \n {section.blocks?.map((block, blockIndex) => (\n \n ))}\n \n ))}\n
\n )}\n
\n
\n \n {replaceLabels?.buttonLabel}\n \n
\n
\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport { cn } from '@bem-react/classname';\nimport { CodifierResponseData, CodifierSkillsResponseData } from 'api/services/codifier';\nimport {\n noQuestionInBlock,\n noQuestionInParallel,\n noQuestionInSection,\n noQuestionInTheme,\n noSkillInArea,\n noSkillInParallel,\n} from 'pages/CodifierPage/utils';\nimport { OptionsLocation } from 'pages/QuestionBankPage/utils';\n\nimport { CodifierDropdownGrade } from 'components/CodifierDropdownGrade';\nimport { CodifierDropdownSection } from 'components/CodifierDropdownSection';\nimport { DropdownActionsFormValues } from 'components/DropdownWithActions';\nimport { SubjectName } from 'components/SubjectName';\nimport { ThemeCodifier } from 'components/ThemeCodifier';\n\nimport { ReplaceWindow } from './ReplaceWindow';\nimport { getLessonLocation, getSkillLocation, LessonLocation, SkillLocation } from './utils';\n\nimport './Codifier.scss';\n\nconst cnCodifier = cn('codifier');\n\nexport enum CodifierEventType {\n SUBJECT = 'subject',\n PARALLEL = 'parallel',\n SECTION = 'section',\n BLOCK = 'block',\n TOPIC = 'topic',\n METASUBJECT = 'metasubject',\n SKILL = 'skill',\n}\n\nexport interface ReplaceParams {\n id: number;\n type: CodifierEventType;\n subject: number;\n section?: number;\n block?: number;\n parallel?: number;\n}\n\ninterface CodifierProps {\n subjects?: CodifierResponseData[];\n skills?: CodifierSkillsResponseData[];\n isEditable?: boolean;\n onParallelSelect?: (data: { grade: number; subject: number }) => void;\n onParallelPatch?: (data: { grade: number; id: number }) => void;\n onObjectlDelete?: (\n type: CodifierEventType,\n id: number,\n parallelId?: number,\n sectionId?: number,\n blockId?: number,\n ) => void;\n onObjectReplace?: (params: {\n type: CodifierEventType;\n id: number;\n section?: number;\n block?: number;\n parallel?: number;\n }) => void;\n onSectionCreate?: (data: { parallel: number; title: string; order: string }) => void;\n onSectionPatch?: (data: { id: number; title: string; order?: string; parallel?: number }) => void;\n onBlockCreate?: (data: { section: number; title: string; order: string; parallel: number }) => void;\n onBlockPatch?: (data: { id: number; title: string; order?: string; parallel?: number; section: number }) => void;\n onSkillCreate?: (data: { metasubject: number; title: string; codifier?: string }) => void;\n onSkillPatch?: (data: { id: number; title: string; codifier?: string }) => void;\n onTopicCreate?: (data: { section: number; block: number; title: string; order: number; parallel: number }) => void;\n onTopicPatch?: (data: {\n id: number;\n title: string;\n block: number;\n order?: string;\n parallel: number;\n section?: number;\n }) => void;\n handleSelectTopicCheckbox?: (data: LessonLocation) => void;\n handleSelect?: (type: string, id: number) => void;\n handleSelectSkillCheckbox?: (data: SkillLocation) => void;\n hasTopicCheckbox?: boolean;\n topicLocations?: LessonLocation[];\n skillLocations?: SkillLocation[];\n highlightedLeafs?: OptionsLocation;\n skillsCodifier?: boolean;\n canEditSubject?: boolean;\n questionBank?: boolean;\n isHighlight?: boolean;\n initSelectedLocation?: {\n [type: string]: number;\n };\n setMounted?: React.Dispatch>;\n}\n\nexport const Codifier: React.FC = ({\n subjects = [],\n skills = [],\n isEditable = false,\n onParallelSelect,\n onParallelPatch,\n onObjectlDelete,\n onSectionCreate,\n onSectionPatch,\n onBlockCreate,\n onBlockPatch,\n onTopicCreate,\n onTopicPatch,\n handleSelectTopicCheckbox,\n hasTopicCheckbox = false,\n handleSelect,\n topicLocations = [],\n skillsCodifier = false,\n handleSelectSkillCheckbox,\n skillLocations = [],\n canEditSubject,\n onSkillCreate,\n onSkillPatch,\n isHighlight,\n initSelectedLocation,\n setMounted,\n}) => {\n const [selectedMetaArea, setSelectedMetaArea] = useState({ subjectId: -1, gradeId: -1, metaAreaId: -1 });\n const [selectedSkill, setSelectedSkill] = useState({ subjectId: -1, gradeId: -1, metaAreaId: -1, skillId: -1 });\n const [canHover, setCanHover] = useState(true);\n\n const [selectedLocation, setSelectedLocation] = useState | undefined>(initSelectedLocation);\n const [replaceOpened, setReplaceOpened] = useState(false);\n const [replaceParams, setReplaceParams] = useState({ id: 0, type: CodifierEventType.SECTION } as ReplaceParams);\n\n const handleCanHover = useCallback(() => {\n setCanHover((prev) => !prev);\n }, []);\n\n const onCloseReplaceClick = useCallback(() => setReplaceOpened(false), []);\n\n const handleParallelSelect = useCallback(\n (subject: number, values: Record) => {\n const selectedGrade = parseInt(values.createTheme.title);\n if (onParallelSelect && !isNaN(selectedGrade)) {\n onParallelSelect({\n grade: selectedGrade,\n subject,\n });\n }\n },\n [onParallelSelect],\n );\n\n const handleParallelPatch = useCallback(\n (parallel: number, values: Record) => {\n const selectedGrade = parseInt(values.editParallel.title);\n if (onParallelPatch && !isNaN(selectedGrade)) {\n onParallelPatch({\n grade: selectedGrade,\n id: parallel,\n });\n }\n },\n [onParallelPatch],\n );\n\n const handleDelete = useCallback(\n (type: CodifierEventType, id: number, parallelId?: number, sectionId?: number, blockId?: number) => {\n setCanHover(true);\n if (onObjectlDelete) {\n onObjectlDelete(type, id, parallelId, sectionId, blockId);\n }\n },\n [onObjectlDelete],\n );\n\n const handleReplace = useCallback(\n (params: {\n type: CodifierEventType;\n id: number;\n subject: number;\n section?: number;\n block?: number;\n parallel?: number;\n }) => () => {\n setReplaceOpened(true);\n setReplaceParams({\n id: params.id,\n type: params.type,\n subject: params.subject,\n section: params.section,\n block: params.block,\n parallel: params.parallel,\n });\n },\n [],\n );\n\n const handleSectionCreate = useCallback(\n (parallel: number, values: Record) => {\n if (onSectionCreate) {\n onSectionCreate({\n title: values.createSection.title,\n parallel: parallel,\n order: values.createSection.order,\n });\n }\n },\n [onSectionCreate],\n );\n\n const handleSectionPatch = useCallback(\n (id: number, values: Record, parallel?: number) => {\n onSectionPatch?.({ id: id, title: values.editSection.title, order: values.editSection.order, parallel });\n },\n [onSectionPatch],\n );\n\n const handleBlockCreate = useCallback(\n (params: { id: number }, values: Record, parallel: number) => {\n if (onBlockCreate) {\n onBlockCreate({\n title: values.createBlock.title,\n order: values.createBlock.order,\n section: params.id,\n parallel: parallel,\n });\n }\n },\n [onBlockCreate],\n );\n\n const handleBlockPatch = useCallback(\n (\n block: number,\n values: Record,\n section: number,\n sectionId: number,\n parallel?: number,\n ) => {\n if (onBlockPatch) {\n onBlockPatch({\n title: values.editBlock.title,\n id: block,\n order: values.editBlock.order,\n section: sectionId,\n parallel: parallel,\n });\n }\n },\n [onBlockPatch],\n );\n\n const handleTopicCreate = useCallback(\n (\n params: { id: number; order?: number },\n values: Record,\n section: number,\n parallel: number,\n ) => {\n const { id, order } = params;\n\n if (onTopicCreate && section && parallel) {\n onTopicCreate({\n block: id,\n section: section,\n order: order ?? +values.createTheme?.order ?? 0,\n title: values.createThemeLesson?.title || values.createTheme?.title || '',\n parallel: parallel,\n });\n }\n },\n [onTopicCreate],\n );\n\n const handleTopicPatch = useCallback(\n (\n topic: number,\n values: Record,\n parallel: number,\n block: number,\n section?: number,\n ) => {\n if (onTopicPatch) {\n onTopicPatch({\n title: values.editLesson.title,\n id: topic,\n order: values.editLesson.order,\n section: section,\n parallel: parallel,\n block: block,\n });\n }\n },\n [onTopicPatch],\n );\n\n const handleTopicSelectCheckbox = useCallback(\n (topicId: number) => {\n if (handleSelectTopicCheckbox) {\n handleSelectTopicCheckbox(getLessonLocation(subjects, topicId));\n }\n },\n [handleSelectTopicCheckbox, subjects],\n );\n\n const handleSkillSelectCheckbox = useCallback(\n (skillId: number) => {\n if (handleSelectSkillCheckbox) {\n handleSelectSkillCheckbox(getSkillLocation(skills, skillId));\n }\n },\n [handleSelectSkillCheckbox, skills],\n );\n\n const handleSelectAnything = useCallback(\n (type: CodifierEventType, id: number) => {\n setSelectedLocation({\n [type]: id,\n });\n\n if (handleSelect) {\n handleSelect(type, id);\n }\n },\n [handleSelect],\n );\n\n const handleSkillCreate = useCallback(\n (metasubject: number, values: Record) => {\n if (onSkillCreate) {\n onSkillCreate({\n metasubject,\n title: values.createSection.title,\n codifier: values.createSection.codifierValue,\n });\n }\n },\n [onSkillCreate],\n );\n\n const handleSkillPatch = useCallback(\n (skill: number, values: Record) => {\n if (onSkillPatch) {\n onSkillPatch({\n id: skill,\n title: values.editSkill.title,\n codifier: values.editSkill.codifierValue,\n });\n }\n },\n [onSkillPatch],\n );\n\n const history = useHistory();\n\n const handleCreateQuestion = useCallback(\n (id: number, subject?: number) => {\n setCanHover(true);\n history.push(`/codifier/create-question/${id}${subject ? `?subjects=${subject}` : ''}`);\n },\n [history],\n );\n\n return skillsCodifier ? (\n
\n {skills.map((subject, subjectIndex) => (\n value.subjectId === subject.id).length}\n isHighlighted={isHighlight && selectedLocation?.subject === subject.id}\n isEditable={isEditable}\n key={`Subject ${subject.id}`}\n handleCreateClick={handleParallelSelect}\n handleSelect={handleSelectAnything}\n canHover={canHover}\n handleCanHover={handleCanHover}\n setMounted={setMounted}\n index={subjectIndex}\n >\n {subject.parallels?.length !== 0 ? (\n subject.parallels?.map((parallel, parallelIndex) => (\n \n value.parallelId === parallel.id ||\n (value.subjectId === subject.id && parallel.grade === value.parallel),\n ).length\n }\n isEditable={isEditable}\n key={`Subject ${subject.id} grade ${parallel.grade}`}\n onDeleteClick={handleDelete}\n onCreateClick={handleSectionCreate}\n onEditClick={handleParallelPatch}\n onSelect={handleSelectAnything}\n skillsCodifier={skillsCodifier}\n disabled={!parallel.metasubjects?.length}\n canHover={canHover}\n handleCanHover={handleCanHover}\n index={parallelIndex}\n canDelete={noSkillInParallel(parallel)}\n canReplace={false}\n >\n {parallel.metasubjects?.map((areas, index) => (\n
\n value.metaAreaId === areas.id).length\n }\n isEditable={isEditable}\n skillsTheme={true}\n numSkill={areas.skills?.length}\n setSelectedMetaArea={setSelectedMetaArea}\n selectedMetaArea={selectedMetaArea}\n hasCheckbox={false}\n subjectIndex={subjectIndex}\n parallelIndex={parallelIndex}\n allCodifierValues={areas.skills?.map((skill) => skill.codifier) || []}\n onCreateClick={handleSkillCreate}\n onEditClick={handleSectionPatch}\n onDeleteClick={handleDelete}\n canHover={canHover}\n handleCanHover={handleCanHover}\n themeIndex={index}\n canDelete={noSkillInArea(areas)}\n canReplace={false}\n >\n {areas.skills?.map((skill, indexSkill) => (\n skill.codifier) || []\n }\n isSelectedInit={false}\n isEditable={isEditable}\n skillsTheme={true}\n isChild={true}\n setSelectedSkill={setSelectedSkill}\n selectedSkill={selectedSkill}\n metaAreaIndex={index}\n subjectIndex={subjectIndex}\n parallelIndex={parallelIndex}\n hasCheckbox={hasTopicCheckbox}\n handleSelectCheckbox={handleSkillSelectCheckbox}\n isOpenedInit={\n !!skillLocations.filter((value) => value.skillId === skill.id)\n .length\n }\n isCheckedInit={\n hasTopicCheckbox &&\n !!skillLocations.filter((value) => value.skillId === skill.id)\n .length\n }\n onEditClick={handleSkillPatch}\n onDeleteClick={handleDelete}\n canHover={canHover}\n handleCanHover={handleCanHover}\n themeIndex={indexSkill}\n blockIndex={index}\n />\n ))}\n \n
\n ))}\n \n ))\n ) : (\n
Нет параллелей
\n )}\n \n ))}\n
\n ) : (\n
\n {subjects.map((subject, index) => (\n value.subjectId === subject.id).length}\n isHighlighted={isHighlight && selectedLocation?.subject === subject.id}\n isEditable={isEditable}\n key={`Subject ${subject.id}`}\n handleCreateClick={handleParallelSelect}\n handleSelect={handleSelectAnything}\n canEdit={canEditSubject}\n canHover={canHover}\n handleCanHover={handleCanHover}\n setMounted={setMounted}\n index={index}\n >\n {subject.parallels?.length !== 0 ? (\n subject.parallels?.map((parallel, index) => (\n \n value.parallelId === parallel.id ||\n (value.subjectId === subject.id && parallel.grade === value.parallel),\n ).length\n }\n isEditable={isEditable}\n key={`Subject ${subject.id} grade ${parallel.grade}`}\n onDeleteClick={handleDelete}\n onCreateClick={handleSectionCreate}\n onEditClick={handleParallelPatch}\n onSelect={handleSelectAnything}\n skillsCodifier={skillsCodifier}\n disabled={!parallel.sections?.length}\n canHover={canHover}\n handleCanHover={handleCanHover}\n index={index}\n canDelete={noQuestionInParallel(parallel)}\n canReplace={false}\n >\n {parallel.sections?.map((section, sectionIndex) => (\n value.sectionId === section.id).length\n }\n key={`Section ${section.id}`}\n title={section.title}\n onDeleteClick={(type, id) => handleDelete(type, id, parallel.id)}\n onCreateClick={handleBlockCreate}\n onEditClick={handleSectionPatch}\n onSelect={handleSelectAnything}\n disabled={!section.blocks?.length}\n canHover={canHover}\n handleCanHover={handleCanHover}\n index={sectionIndex}\n canDelete={noQuestionInSection(section)}\n onReplaceClick={handleReplace({\n id: section.id,\n type: CodifierEventType.SECTION,\n parallel: parallel.id,\n subject: subject.id,\n section: section.id,\n })}\n parallel={parallel.id}\n parentId={parallel.id}\n >\n {section.blocks?.map((blockEl, blockIndex) => (\n value.blockId === blockEl.id)\n .length\n }\n key={`Theme ${blockEl.id}`}\n title={blockEl.title}\n type={CodifierEventType.BLOCK}\n onDeleteClick={(type, id) =>\n handleDelete(type, id, parallel.id, section.id)\n }\n onCreateClick={(params, values) =>\n handleTopicCreate(params, values, section.id, parallel.id)\n }\n onEditClick={(id, values, parentId, parallelId) =>\n handleBlockPatch(id, values, parentId, section.id, parallelId)\n }\n onSelect={handleSelectAnything}\n childrenOrder={blockEl?.topics?.length}\n disabled={!blockEl?.topics?.length}\n canHover={canHover}\n handleCanHover={handleCanHover}\n index={blockIndex}\n canDelete={noQuestionInBlock(blockEl, blockEl?.topics ?? [])}\n onReplaceClick={handleReplace({\n id: blockEl.id,\n type: CodifierEventType.BLOCK,\n section: section.id,\n parallel: parallel.id,\n subject: subject.id,\n })}\n parallel={parallel.id}\n >\n {blockEl?.topics?.map((topic, topicIndex) => (\n value.topicId === topic.id,\n ).length\n }\n isEditable={isEditable}\n handleSelectThemeLesson={handleSelectAnything}\n handleSelectCheckbox={handleTopicSelectCheckbox}\n onEditClick={(id, values, parallel, blockId, section) =>\n handleTopicPatch(\n id,\n values,\n parallel,\n blockId ? blockId : blockEl?.id,\n section,\n )\n }\n key={`LessonTheme ${topic.id}`}\n onDeleteClick={(type, id) =>\n handleDelete(type, id, parallel.id, section.id, blockEl.id)\n }\n hasCheckbox={hasTopicCheckbox}\n canHover={canHover}\n handleCanHover={handleCanHover}\n themeIndex={topicIndex}\n blockIndex={blockIndex}\n canDelete={noQuestionInTheme(topic)}\n onReplaceClick={handleReplace({\n id: topic.id,\n type: CodifierEventType.TOPIC,\n parallel: parallel.id,\n subject: subject.id,\n section: section.id,\n block: blockEl.id,\n })}\n parallel={parallel.id}\n section={section.id}\n block={blockEl.id}\n />\n ))}\n \n ))}\n \n ))}\n \n ))\n ) : (\n
Нет параллелей
\n )}\n \n ))}\n {replaceOpened && (\n
\n \n
\n )}\n
\n );\n};\n","import { CodifierResponseData, CodifierSkillsResponseData } from 'api/services/codifier';\nimport { SelectedElement } from 'containers/CodifierSelector/utils';\nimport {\n CodifierBlockData,\n CodifierParallelData,\n CodifierSectionData,\n CodifierSubjectData,\n CodifierTopicData,\n} from 'store/normalizers/codifier';\n\nimport { LessonThemeCodifier, MetaAreas, SectionCodifier, Skills, ThemeCodifier } from './types';\n\nconst subjectsTitles: string[] = ['Химия', 'Физика', 'Тригонометрия', 'Алгебра'];\nconst gradesList: number[] = [5, 6, 7, 8, 9, 10, 11];\nconst sections: SectionCodifier[] = [\n {\n id: 1,\n grade: 7,\n idSubject: 1,\n title: 'Давление тел',\n },\n {\n id: 2,\n grade: 7,\n idSubject: 1,\n title: 'Электрический ток',\n },\n];\n\nconst metaAreas: MetaAreas[] = [\n {\n id: 1,\n grade: 7,\n title: 'Мета-предметная область №1',\n numSkills: 3,\n },\n {\n id: 2,\n grade: 7,\n title: 'Мета-предметная область №2',\n numSkills: 20,\n },\n {\n id: 2,\n grade: 7,\n title: 'Мета-предметная область №2',\n numSkills: 7,\n },\n];\n\nconst skills: Skills[] = [\n {\n id: 1,\n idMetaAreas: 1,\n title:\n '1. Соблюдать правила безопасного труда. бла блаблаблырапрвимсроив рвиаоврпраовисв ир ироымсрмит иофвмицупмкви рывмсроав ирцупейгвсвисрамп',\n },\n {\n id: 2,\n idMetaAreas: 1,\n title:\n '2. оаврполаврмоаимолаи иовпарпангеукупанвмиимт ифпвмпиыфо иовимр иыотслсьмлоплаопл олырвоцрагупагп првыпарвыпаыо шшвошцаршур овпмаврд',\n },\n];\n\nconst themes: ThemeCodifier[] = [\n {\n id: 1,\n idSection: 1,\n title: 'Давление. Закон Паскаля. Гидростатическое давление',\n },\n {\n id: 2,\n idSection: 1,\n title: 'Давление. Закон Паскаля. Гидростатическое давление',\n },\n];\nconst lessonThemes: LessonThemeCodifier[] = [\n {\n id: 1,\n idTheme: 1,\n idSection: 1,\n title: 'Давление',\n numQuestions: 20,\n numQuestionsUnpublished: 20,\n },\n {\n id: 2,\n idTheme: 1,\n idSection: 1,\n title: 'Закон Паскаля',\n numQuestions: 20,\n numQuestionsUnpublished: 20,\n },\n {\n id: 3,\n idTheme: 1,\n idSection: 1,\n title: 'Гидростатическое давление',\n numQuestions: 0,\n numQuestionsUnpublished: 0,\n },\n {\n id: 4,\n idTheme: 0,\n idSection: 1,\n title: 'Гидростатическое давление 2',\n numQuestions: 3,\n numQuestionsUnpublished: 3,\n },\n];\n\nexport const getGradesOptions = (grades: number[]): string[] => {\n return gradesList.filter((grade) => !grades.includes(grade)).map((grade) => `${grade} класс`);\n};\n\nexport const createCodifierSkills = (data: {\n subjectsTitles: string[];\n gradesList: number[];\n metaAreas: MetaAreas[];\n skills: Skills[];\n}): CodifierSkillsResponseData[] => {\n return data.subjectsTitles.map((subjectTitle, subjectIndex) => {\n if (subjectTitle === 'Физика') {\n return {\n id: subjectIndex,\n title: subjectTitle,\n parallels: [7, 8, 9].map((grade, gradeIndex) => ({\n id: gradeIndex,\n grade,\n metasubjects: data.metaAreas\n .filter((sections) => sections.grade === grade)\n .map((section) => ({\n id: Number(section.id),\n title: String(section.title),\n skills: data.skills\n .filter((topic) => topic.idMetaAreas === subjectIndex)\n .map((topic) => ({\n id: Number(topic.id),\n title: String(topic.title),\n })),\n })),\n })),\n };\n }\n\n return {\n id: subjectIndex,\n title: subjectTitle,\n parallels: [],\n };\n });\n};\n\nexport const createCodifierData = (data: {\n subjectsTitles: string[];\n gradesList: number[];\n sections: SectionCodifier[];\n themes: ThemeCodifier[];\n lessonThemes: LessonThemeCodifier[];\n}): CodifierResponseData[] => {\n return data.subjectsTitles.map((subjectTitle, subjectIndex) => {\n if (subjectTitle === 'Физика') {\n return {\n id: subjectIndex,\n title: subjectTitle,\n parallels: [7, 8, 9].map((grade, gradeIndex) => ({\n id: gradeIndex,\n grade,\n sections: data.sections\n .filter((section) => section.grade === grade && section.idSubject === subjectIndex)\n .map((section, sectionIndex) => ({\n id: section.id,\n title: section.title,\n order: sectionIndex,\n blocks: data.themes\n .filter((block) => block.idSection === subjectIndex)\n .map((block, blockOrder) => ({\n id: block.id,\n title: block.title,\n order: blockOrder,\n section: section.id,\n })),\n topics: data.lessonThemes\n .filter((topic) => topic.idSection === sectionIndex)\n .map((topic, topicOrder) => ({\n id: topic.id,\n title: topic.title,\n order: topicOrder,\n block: topic.idTheme,\n questionsQuantity: topic.numQuestions,\n questionsQuantityUnpublished: Number(topic.numQuestionsUnpublished),\n })),\n })),\n })),\n };\n }\n\n return {\n id: subjectIndex,\n title: subjectTitle,\n parallels: [],\n };\n });\n};\n\nexport const createInitSkills = (): CodifierSkillsResponseData[] => {\n return createCodifierSkills({\n subjectsTitles,\n gradesList,\n metaAreas,\n skills,\n });\n};\n\nexport const createInitValues = (): CodifierResponseData[] => {\n return createCodifierData({\n subjectsTitles,\n gradesList,\n sections,\n themes,\n lessonThemes,\n });\n};\n\nexport interface LessonLocation {\n subject: string;\n subjectId: number;\n subjectOrder: number;\n parallel: number;\n parallelId: number;\n parallelOrder: number;\n section: string;\n sectionId: number;\n sectionOrder: number;\n block: string | undefined;\n blockId: number | undefined;\n blockOrder: number | undefined;\n topic: string;\n topicId: number;\n topicOrder: number;\n}\n\nexport interface SkillLocation {\n subject: string;\n subjectId: number;\n subjectOrder: number;\n parallel: number;\n parallelId: number;\n parallelOrder: number;\n metaArea: string;\n metaAreaId: number;\n metaAreaOrder: number;\n skill: string;\n skillId: number;\n skillOrder: number;\n}\n\nexport const getSkillLocation = (skills: CodifierSkillsResponseData[], skillId: number): SkillLocation => {\n const location: SkillLocation = {\n subject: '',\n subjectId: 0,\n subjectOrder: 0,\n parallel: 0,\n parallelId: 0,\n parallelOrder: 0,\n metaArea: '',\n metaAreaId: 0,\n metaAreaOrder: 0,\n skill: '',\n skillId: skillId,\n skillOrder: skillId,\n };\n skills.map((subject, indexSub) => {\n subject.parallels?.map((parallel, indexPar) => {\n parallel.metasubjects?.map((meta, indexMeta) => {\n meta.skills?.map((skill, indexSkill) => {\n if (skill.id === skillId) {\n location.subject = subject.title;\n location.subjectId = subject.id;\n location.subjectOrder = indexSub + 1;\n location.parallel = parallel.grade;\n location.parallelId = parallel.id;\n location.parallelOrder = indexPar + 1;\n location.metaArea = meta.title;\n location.metaAreaId = meta.id;\n location.metaAreaOrder = indexMeta + 1;\n location.skill = skill.title;\n location.skillOrder = indexSkill + 1;\n }\n });\n });\n });\n });\n return location;\n};\n\nexport const getLessonLocation = (subjects: CodifierResponseData[], lessonId: number): LessonLocation => {\n const location: LessonLocation = {\n subject: '',\n subjectId: 0,\n subjectOrder: 0,\n parallel: 0,\n parallelId: 0,\n parallelOrder: 0,\n section: '',\n sectionId: 0,\n sectionOrder: 0,\n block: '',\n blockId: 0,\n blockOrder: 0,\n topic: '',\n topicId: lessonId,\n topicOrder: lessonId,\n };\n subjects.map((subject, indexSub) => {\n subject.parallels?.map((parallel, indexPar) => {\n parallel.sections?.map((section, indexSec) => {\n section.blocks?.map((block, indexBlock) => {\n block.topics?.map((topic, indexLes) => {\n if (topic.id === lessonId) {\n location.subject = subject.title;\n location.subjectId = subject.id;\n location.subjectOrder = indexSub + 1;\n location.parallel = parallel.grade;\n location.parallelId = parallel.id;\n location.parallelOrder = indexPar + 1;\n location.section = section.title;\n location.sectionId = section.id;\n location.sectionOrder = indexSec + 1;\n location.topic = topic.title;\n location.topicOrder = indexLes + 1;\n location.block = block.title;\n location.blockId = block.id;\n location.blockOrder = indexBlock;\n }\n });\n });\n });\n });\n });\n return location;\n};\n\ntype SearchParams = {\n subject: number;\n parallel: number;\n section: number;\n block: number;\n topic: number;\n};\n\nexport const getLocation = (subjects: CodifierResponseData[], params: SearchParams): LessonLocation => {\n const {\n subject: subjectId = 0,\n parallel: parallelId = 0,\n section: sectionId = 0,\n block: blockId = 0,\n topic: topicId = 0,\n } = params;\n const location: LessonLocation = {\n subjectId,\n parallelId,\n sectionId,\n blockId,\n topicId,\n subject: '',\n subjectOrder: 0,\n parallel: 0,\n parallelOrder: 0,\n section: '',\n sectionOrder: 0,\n block: '',\n blockOrder: 0,\n topic: '',\n topicOrder: 0,\n };\n\n const parallels = subjects.flatMap((subject) => subject.parallels);\n const sections = parallels.flatMap((parallel) => parallel?.sections);\n const blocks = sections.flatMap((section) => section?.blocks);\n const topics = blocks.flatMap((block) => {\n return block?.topics?.map((topic) => {\n return {\n ...topic,\n block: block?.id,\n };\n });\n });\n\n const topicData = topics.find((topic) => topic?.id === topicId);\n const blockData = blocks.find((block) => block?.id === blockId || block?.id === topicData?.block);\n const sectionData = sections.find(\n (section) =>\n section?.id === sectionId ||\n section?.id === blockData?.section ||\n topics?.some((topic) => topic?.id === topicData?.id),\n );\n const parallelData = parallels.find(\n (parallel) =>\n parallel?.id === parallelId || parallel?.sections?.some((section) => section.id === sectionData?.id),\n );\n const subjectData = subjects.find(\n (subject) =>\n subject.id === subjectId || subject.parallels?.some((parallel) => parallel.id === parallelData?.id),\n );\n\n location.subjectId = subjectData?.id ?? subjectId;\n location.parallelId = parallelData?.id ?? parallelId;\n location.sectionId = sectionData?.id ?? sectionId;\n location.blockId = blockData?.id ?? blockId;\n location.topicId = topicData?.id ?? topicId;\n\n return location;\n};\n\ntype CodifierMap = {\n subjectsMap: {\n [id: number]: CodifierSubjectData;\n };\n parallelsMap: {\n [id: number]: CodifierParallelData;\n };\n sectionsMap: {\n [id: number]: CodifierSectionData;\n };\n blocksMap: {\n [id: number]: CodifierBlockData;\n };\n topicsMap: {\n [id: number]: CodifierTopicData;\n };\n};\n\nexport const getCodifierSelectorInitValues = (codifierMap: CodifierMap, topics?: number[]): SelectedElement => {\n const element: SelectedElement = {\n subjects: [],\n parallels: [],\n sections: [],\n blocks: [],\n topics: [],\n };\n\n element.topics = topics?.map((topicId) => {\n if (\n codifierMap.topicsMap[topicId]?.block &&\n !element.blocks?.includes(codifierMap.topicsMap[topicId].block as number)\n ) {\n element.blocks = (element.blocks ?? []).concat([codifierMap.topicsMap[topicId].block as number]);\n }\n\n if (\n codifierMap.topicsMap[topicId]?.section &&\n !element.sections?.includes(codifierMap.topicsMap[topicId].section as number)\n ) {\n element.sections = (element.sections ?? []).concat([codifierMap.topicsMap[topicId].section as number]);\n }\n\n return topicId;\n });\n\n if (element.blocks?.length) {\n element.blocks.forEach((blockId) => {\n if (!element.sections?.includes(codifierMap.blocksMap[blockId].section)) {\n element.sections?.push(codifierMap.blocksMap[blockId].section);\n }\n });\n }\n\n if (element.sections?.length) {\n element.sections.forEach((sectionId) => {\n if (!element.parallels?.includes(codifierMap.sectionsMap[sectionId].parallel)) {\n element.parallels?.push(codifierMap.sectionsMap[sectionId].parallel);\n }\n });\n }\n\n if (element.parallels?.length) {\n element.parallels.forEach((parallelId) => {\n if (!element.subjects?.includes(codifierMap.parallelsMap[parallelId].subject)) {\n element.subjects?.push(codifierMap.parallelsMap[parallelId].subject);\n }\n });\n }\n\n return element;\n};\n\nexport const getSubject = (codifier: CodifierResponseData[], topicId: number): number => {\n return (\n codifier.find((subject) =>\n subject.parallels?.some((parallel) =>\n parallel.sections?.some((section) =>\n section.blocks?.some((block) => block.topics?.some((topic) => topic.id === topicId)),\n ),\n ),\n )?.id ?? 0\n );\n};\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { getQuestionDetailed, getQuestions, QuestionStatus } from 'api/services/questionBank';\nimport {\n fetchAssignmentSearchBlocks,\n getQuestionSearch,\n getQuestionSearchByQueryFilters,\n postSearchQuestions,\n SearchBlockGet,\n SearchBlockPost,\n} from 'api/services/questionCreate';\nimport { QuestionSearchBarFieldsValues } from 'containers/QuestionSearchBar';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\nimport { Status } from 'pages/QuestionBankPage/types';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\nimport { convertQueryFiltersToPageFilters } from 'utils/searchBlocks';\n\ntype QuestionFilters = {\n questionIds: number[];\n searchBlocks: SearchBlockGet[];\n searchBlocksWithSingleQuestion: SearchBlockGet[];\n};\n\nexport const fetchAssignmentSearchBlocksAction = createAsyncThunk(\n 'questionCreate/fetchAssignmentSearchBlocks',\n async (assignmentId: number) => {\n const assignmentSearchBlocks = await fetchAssignmentSearchBlocks(assignmentId);\n\n const formValuesAccumulator: { [questionNumber in number]: SearchPageState } = {};\n const singleQuestionsAccumulator: { [questionNumber in number]: SingleQuestions } = {};\n\n const separatedFilters = assignmentSearchBlocks.reduce(\n (result, searchBlock) => {\n const { filters, questionNumber: questionNum } = searchBlock;\n\n formValuesAccumulator[questionNum] = {\n questionNum,\n filters: [],\n excludesIds: [],\n rightSearchBlock: [],\n leftSearchBlock: [],\n };\n singleQuestionsAccumulator[questionNum] = {\n questionNum,\n questions: [],\n };\n\n if (filters.id) {\n if (!result.questionIds.includes(filters.id)) {\n result.questionIds.push(filters.id);\n }\n\n result.searchBlocksWithSingleQuestion.push(searchBlock);\n }\n\n if (!filters.id) {\n result.searchBlocks.push(searchBlock);\n }\n\n return result;\n },\n {\n questionIds: [],\n searchBlocks: [],\n searchBlocksWithSingleQuestion: [],\n } as QuestionFilters,\n );\n\n if (separatedFilters.questionIds.length > 0) {\n await getQuestions(createUrlQuery({ include_ids: separatedFilters.questionIds })).then((questions) => {\n separatedFilters.searchBlocksWithSingleQuestion.forEach(({ filters, questionNumber }) => {\n const question = questions.find(({ id }) => filters.id === id);\n\n if (question) {\n singleQuestionsAccumulator[questionNumber].questions.push(question);\n }\n });\n });\n }\n\n await Promise.all(\n separatedFilters.searchBlocks.map(async (searchBlock) => {\n const { excludeIds = [], ...restFilters } = searchBlock.filters;\n const questions = await getQuestionSearchByQueryFilters({\n ...restFilters,\n status: Status.Published,\n all_user_questions: true,\n });\n\n if (searchBlock.filters.id !== undefined && searchBlock.filters.id && searchBlock.filters.id > 0) {\n singleQuestionsAccumulator[searchBlock.questionNumber].questions.push(...questions);\n } else {\n const newSearchBlock = {\n questions,\n id: searchBlock.id,\n filters: convertQueryFiltersToPageFilters(searchBlock.filters),\n numSearch: formValuesAccumulator[searchBlock.questionNumber].rightSearchBlock.length + 1,\n excludesIds: formValuesAccumulator[searchBlock.questionNumber].excludesIds.push(...excludeIds),\n };\n formValuesAccumulator[searchBlock.questionNumber].rightSearchBlock.push(newSearchBlock);\n formValuesAccumulator[searchBlock.questionNumber].leftSearchBlock.push(newSearchBlock);\n }\n }),\n );\n\n return {\n assignmentSearchBlocks,\n formValues: Object.values(formValuesAccumulator),\n questions: Object.values(singleQuestionsAccumulator),\n };\n },\n);\n\nexport const postSearchQuestionAction = createAsyncThunk(\n 'questionCreate/getQuestionBlock',\n async (values: SearchBlockPost) => {\n return await postSearchQuestions(values);\n },\n);\n\nexport const questionDetailAction = createAsyncThunk('questionCreate/getQuestionDetail', async (id: number) => {\n return await getQuestionDetailed(id);\n});\n\nexport const questionBlockAction = createAsyncThunk(\n 'questionCreate/questionBlock',\n async (values: QuestionSearchBarFieldsValues & { status?: QuestionStatus; all_user_questions?: boolean }) => {\n return await getQuestionSearch(values);\n },\n);\n\nexport interface SearchPageState {\n questionNum: number;\n filters: QuestionSearchBarFieldsValues[];\n rightSearchBlock: ISearchBlock[];\n leftSearchBlock: ISearchBlock[];\n excludesIds: number[];\n}\n\nexport const saveStateSearchPageStore = createAction(\n 'questionCreate/saveStateSearchPage',\n (formValues: SearchPageState) => {\n return {\n payload: {\n values: formValues,\n },\n };\n },\n);\n\nexport const addEmptyFormValuesStore = createAction('questionCreate/addEmptyFormValuesStore', () => {\n return {\n payload: {},\n };\n});\n\nexport const addEmptyQuestionsStore = createAction('questionCreate/addEmptyQuestionsStore', () => {\n return {\n payload: {},\n };\n});\n\nexport interface SingleQuestions {\n questionNum: number;\n questions: IQuestion[];\n}\n\nexport const saveCreateQuestionsStore = createAction(\n 'questionCreate/SaveCreateQuestionsStore',\n (questions: SingleQuestions, action: 'create' | 'save') => {\n return {\n payload: {\n questions: questions,\n action: action,\n },\n };\n },\n);\n\nexport const resetSearchBlocksStore = createAction('questionCreate/resetSearchBlocks', () => {\n return {\n payload: {},\n };\n});\n\nexport const getAssignmentSearchBlocksAction = createAsyncThunk(\n 'questionCreate/getAssignmentSearchBlocks',\n async (assignmentId: number) => {\n return await fetchAssignmentSearchBlocks(assignmentId);\n },\n);\n","import { getApiRequest, postApiRequest } from 'api';\nimport {\n TChartInfo,\n TDaySchedule,\n TGetDayScheduleParams,\n TLessonInformation,\n TParallel,\n} from 'types/studentScheduleTypes';\n\nexport const getFilterTree = (): Promise => {\n return getApiRequest('/student-group/tree/');\n};\nexport const getDaySchedule = (params: TGetDayScheduleParams): Promise => {\n return postApiRequest(`/schedule/student-groups/day/`, params);\n};\nexport const getLessonInformation = (id: number): Promise => {\n return postApiRequest(`/schedule/student-groups/lesson-schedule/`, { id: id });\n};\nexport const getEventRoomInformation = (id: number): Promise => {\n return postApiRequest(`/schedule/student-groups/event-room/`, { id: id });\n};\nexport const getDayScheduleChart = (params: TGetDayScheduleParams): Promise => {\n return postApiRequest('/schedule/student-groups/timeline/', params);\n};\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport * as ScheduleService from 'api/services/dashboardStudentSchedule';\n// import {Dayjs} from \"dayjs\";\nimport { TGetDayScheduleParams } from 'types/studentScheduleTypes';\n\nexport const clearScheduleListAction = createAction('dashboardStudentScheduleTypes/clearScheduleList', () => {\n return {\n payload: 'null',\n };\n});\nexport const clearLessonInfoAction = createAction('dashboardStudentScheduleTypes/clearLessonInfoAction', () => {\n return {\n payload: 'null',\n };\n});\nexport const getFilterTreeAction = createAsyncThunk('dashboardStudentScheduleTypes/getFilterTree', async () => {\n return await ScheduleService.getFilterTree();\n});\nexport const setFiltersAction = createAction('dashboardStudentScheduleTypes/setFilters', (ids: number[]) => {\n return {\n payload: ids,\n };\n});\nexport const setSelectedDayAction = createAction('dashboardStudentScheduleTypes/setCurrentDate', (date: string) => {\n return {\n payload: date,\n };\n});\n\nexport const getDayScheduleAction = createAsyncThunk(\n 'dashboardStudentScheduleTypes/getDaySchedule',\n async (params: TGetDayScheduleParams) => {\n const res = await ScheduleService.getDaySchedule(params);\n const lessons = res.lessonSchedules.map((item) => {\n return {\n ...item,\n isEventRoom: false,\n };\n });\n const rooms = res.eventRooms.map((item) => {\n return {\n ...item,\n isEventRoom: true,\n };\n });\n\n return [...lessons, ...rooms];\n },\n);\n\nexport const getDayScheduleChartAction = createAsyncThunk(\n 'dashboardStudentScheduleTypes/getDayScheduleChart',\n async (params: TGetDayScheduleParams) => {\n return await ScheduleService.getDayScheduleChart(params);\n },\n);\n\nexport const getLessonInformationAction = createAsyncThunk(\n 'dashboardStudentScheduleTypes/getLessonInformation',\n async (params: { id: number; selectedStudents: number[] }) => {\n const info = await ScheduleService.getLessonInformation(params.id);\n\n return {\n ...info,\n selectedStudents: info.students.filter((item) => params.selectedStudents.includes(item.id)),\n otherStudents: info.students.filter((item) => !params.selectedStudents.includes(item.id)),\n };\n },\n);\nexport const getEventRoomInformationAction = createAsyncThunk(\n 'dashboardStudentScheduleTypes/getEventRoomInformation',\n async (params: { id: number; selectedStudents: number[] }) => {\n const info = await ScheduleService.getEventRoomInformation(params.id);\n\n return {\n ...info,\n selectedStudents: info.students.filter((item) => params.selectedStudents.includes(item.id)),\n otherStudents: info.students.filter((item) => !params.selectedStudents.includes(item.id)),\n };\n },\n);\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { FileTypes, IUploadedFile } from 'types/file';\n\nexport interface ICreateFileParams {\n type?: FileTypes;\n lessonId?: number;\n materialId?: number;\n file: File;\n onUploadProgress?: (percent: number) => void;\n}\n\nexport const createFile = (params: ICreateFileParams): Promise => {\n const config = {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n onUploadProgress: function (progressEvent: { loaded: number; total: number }) {\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n params.onUploadProgress?.(percentCompleted >= 100 ? 99 : percentCompleted);\n },\n };\n\n const { type = FileTypes.COMMON, lessonId, materialId, file } = params;\n const data = new FormData();\n\n data.append('file', file);\n data.append('type', type);\n\n switch (true) {\n case lessonId !== undefined:\n data.append('lesson_id', String(lessonId));\n break;\n case type === FileTypes.COMMON && materialId !== undefined:\n data.append('material_id', String(materialId));\n break;\n default:\n break;\n }\n\n return api\n .post, AxiosResponse>(`/file/create/`, data, config)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const fetchDeleteFiles = (idFile: number): Promise<{ id: number } | undefined> => {\n return api\n .delete, AxiosResponse<{ id: number }>>(`/file/delete/${idFile}/`)\n .then((res) => res?.data ?? { id: idFile })\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PatchFileParams {\n id: number;\n type?: FileTypes;\n isAvailableToStudents?: boolean;\n shouldUseOnConference?: boolean;\n materialId?: number | null;\n lessonId?: number | null;\n}\n\nexport interface PatchFileResp {\n id: number;\n type: FileTypes;\n isAvailableToStudents: boolean;\n shouldUseOnConference: boolean;\n materialId: number | null;\n lessonId: number | null;\n}\n\n/**\n * Patch file\n * @param params id: number,\n * isAvailableStudents: boolean,\n * shouldUseOnConference: boolean\n * @returns\n */\n\nexport const patchFile = async (params: PatchFileParams): Promise => {\n const { id, type = FileTypes.COMMON, isAvailableToStudents, shouldUseOnConference, materialId, lessonId } = params;\n\n const formData = new FormData();\n formData.append('type', type);\n if (isAvailableToStudents !== undefined) formData.append('isAvailableToStudents', String(isAvailableToStudents));\n if (shouldUseOnConference !== undefined) formData.append('shouldUseOnConference', String(shouldUseOnConference));\n\n switch (true) {\n case lessonId !== undefined:\n formData.append('lesson', String(lessonId));\n break;\n case type === FileTypes.COMMON && materialId !== undefined:\n formData.append('material', String(materialId));\n break;\n default:\n break;\n }\n\n return await api\n .patch>(`/file/partial-update/${id}/`, formData)\n .then((res) => ({\n ...res?.data,\n id: params.id,\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n createActionProgress,\n getActionCreate,\n getActionProgress,\n getActionStudents,\n postActionDetails,\n} from 'api/services/groupActions';\nimport { IGroupActionFilters } from 'src-new/components/group-actions';\nimport { deleteEmptyParams, normalizeFiltersForSetAction, normalizeParamsForActions } from 'src-new/utils';\nimport {\n IActionDetailsRequest,\n ICreateActionProgressActionsParams,\n IGetActionProgressRequest,\n} from 'types/groupActions';\n\nexport const getActionStudentsAction = createAsyncThunk(\n 'groupAction/getActionStudentsAction',\n async (params: IGroupActionFilters) => {\n const newParams = normalizeParamsForActions(params);\n if (newParams) {\n return await getActionStudents(newParams);\n }\n },\n);\n\nexport const getActionsListAction = createAsyncThunk(\n 'groupAction/getActionsListAction',\n async (params: IGetActionProgressRequest) => {\n return await getActionProgress(params);\n },\n);\nexport const getMoreActionsListAction = createAsyncThunk(\n 'groupAction/getMoreActionsListAction',\n async (params: IGetActionProgressRequest) => {\n return await getActionProgress(params);\n },\n);\n\nexport const actionDetailsAction = createAsyncThunk(\n 'groupAction/actionDetailsAction',\n async (params: IActionDetailsRequest) => {\n if (params) {\n return await postActionDetails(params);\n }\n },\n);\nexport const getActionCreateAction = createAsyncThunk('groupAction/getActionCreateAction', async () => {\n return await getActionCreate();\n});\n\nexport const createActionProgressAction = createAsyncThunk(\n 'groupAction/createActionProgressAction',\n async (params: ICreateActionProgressActionsParams) => {\n const { filters, ...otherParams } = params;\n const normalizeFilters = normalizeFiltersForSetAction(filters);\n const normalizeParams = { filters: normalizeFilters, ...otherParams };\n const newParams = deleteEmptyParams(normalizeParams);\n if (newParams) {\n return await createActionProgress(newParams);\n }\n },\n);\n","import { getApiRequest } from 'api';\n\nimport { MeetingFileData } from '.';\n\nexport const getMeetingFiles = (lessonSchedule: number): Promise => {\n return getApiRequest(`/meeting/files/?lesson_schedule=${lessonSchedule}`);\n};\n","import { getApiRequest } from 'api';\n\nimport { MeetingFileData } from '.';\n\nexport const getMeetingTemplateFiles = (lesson: number): Promise => {\n return getApiRequest(`/meeting/files/?lesson=${lesson}`);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n changeMeetingFile,\n ChangeMeetingFileParams,\n createMeetingFile,\n CreateMeetingFileParam,\n deleteMeetingFile,\n getMeetingFiles,\n getMeetingRecordings,\n getMeetingTemplateFiles,\n PatchMeetingRecordingData,\n postMeetingRecording,\n} from 'api/services/meeting';\n\nexport const getMeetingRecordingsAction = createAsyncThunk(\n 'meeting/getMeetingRecordings',\n (param: { lessonSchedule?: number; eventRoom?: number }) => {\n return getMeetingRecordings(param.lessonSchedule, param.eventRoom).then((data) => {\n if (typeof data === 'string') {\n return {\n lessonSchedule: param.lessonSchedule,\n eventRoom: param.eventRoom,\n error: data,\n };\n }\n\n return {\n ...data,\n lessonSchedule: param.lessonSchedule,\n eventRoom: param.eventRoom,\n };\n });\n },\n);\n\ntype PatchMeetingParams = {\n lessonSchedule: number;\n};\n\nexport const postMeetingRecordingAction = createAsyncThunk(\n 'meeting/patchMeetingRecording',\n ({ lessonSchedule, ...params }: PatchMeetingParams & PatchMeetingRecordingData) => {\n return postMeetingRecording(params).then((data) => ({\n ...data,\n lessonSchedule,\n }));\n },\n);\n\ntype GetFilesParams = {\n lessonSchedule?: number;\n lesson: number;\n};\n\nexport const getMeetingFilesAction = createAsyncThunk(\n 'meeting/getMeetingFiles',\n async ({ lessonSchedule, lesson }: GetFilesParams) => {\n if (lessonSchedule) {\n return await getMeetingFiles(lessonSchedule);\n }\n\n return await getMeetingTemplateFiles(lesson);\n },\n);\n\nexport const createMeetingFileAction = createAsyncThunk(\n 'meeting/createMeetingFile',\n (params: CreateMeetingFileParam) => {\n return createMeetingFile(params);\n },\n);\n\nexport const deleteMeetingFileAction = createAsyncThunk('meeting/deleteMeetingFile', (fileId: number) => {\n return deleteMeetingFile(fileId).then(() => ({\n fileId,\n }));\n});\n\nexport const changeMeetingFileAction = createAsyncThunk(\n 'meeting/changeMeetingFile',\n (params: ChangeMeetingFileParams) => {\n return changeMeetingFile(params);\n },\n);\n","import { api } from 'api';\nimport { AxiosError } from 'axios';\n\nexport interface Recording {\n id: number;\n link: string;\n duration: string;\n preview: string;\n datetimeStart: string;\n isPublished: boolean;\n}\n\nexport interface MeetingData {\n id: number;\n title: string;\n recordings: Recording[];\n}\n\nexport const getMeetingRecordings = (lessonSchedule?: number, eventRoom?: number): Promise => {\n return api\n .post(`/meeting/recordings/`, { lessonSchedule: lessonSchedule, eventRoom: eventRoom })\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n if (err.response?.status === 400) {\n return 'Встреча не состоялась';\n }\n\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { postApiRequest } from 'api';\n\nexport interface PatchMeetingRecordingData {\n id: number;\n isPublished: boolean;\n}\n\nexport interface ChangedMeetingData {\n id: number;\n isPublished: boolean;\n}\n\nexport const postMeetingRecording = (params: PatchMeetingRecordingData): Promise => {\n return postApiRequest(`/meeting/recordings/update/`, params);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nimport { MeetingFileData } from '.';\n\nexport interface CreateMeetingFileParam {\n lessonSchedule?: number;\n lesson?: number;\n isAvailableToStudents: boolean;\n file: File;\n}\n\nexport const createMeetingFile = ({\n lessonSchedule,\n lesson,\n isAvailableToStudents,\n file,\n}: CreateMeetingFileParam): Promise => {\n const data = new FormData();\n\n data.append('file', file);\n data.append('isAvailableToStudents', String(isAvailableToStudents));\n\n if (lessonSchedule) {\n data.append('lessonSchedule', String(lessonSchedule));\n }\n\n if (lesson) {\n data.append('lesson', String(lesson));\n }\n\n return api\n .post, AxiosResponse>('meeting/files/create/', data, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteMeetingFile = (fileId: number): Promise => {\n return deleteApiRequest(`/meeting/files/delete/${fileId}/`);\n};\n","import { patchApiRequest } from 'api';\n\nimport { MeetingFileData } from '.';\n\nexport interface ChangeMeetingFileParams {\n id: number;\n lessonSchedule?: number | null;\n lesson?: number | null;\n useOnMeeting?: boolean;\n isAvailableToStudents?: boolean;\n}\n\nexport const changeMeetingFile = ({ id, ...params }: ChangeMeetingFileParams): Promise => {\n return patchApiRequest(`/meeting/files/partial-update/${id}/`, params);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport const deleteStudentTasks = async (tasks: { id: number }[]): Promise<{ id: number }[]> => {\n return api\n .delete, AxiosResponse<{ id: number }[]>>(`/assignment-progress/bulk-delete/`, {\n data: tasks,\n })\n .then((res) => res?.data || tasks)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { IHomeworkItem } from 'types/homework';\n\nexport const fetchAssignedAndOnCheckHomeworks = async (isMandatory?: boolean): Promise => {\n const url = isMandatory\n ? `/assignment-progress/?status=assigned,on_check&is_mandatory=${isMandatory}`\n : `/assignment-progress/?status=assigned,on_check`;\n return await api\n .get>(url)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { IHomeworkItem } from 'types/homework';\n\nexport const fetchHomeworks = async (isMandatory?: boolean): Promise => {\n const url = isMandatory\n ? `/assignment-progress/?status=on_check&my_course_groups=true&is_mandatory=${isMandatory}`\n : `/assignment-progress/?status=on_check&my_course_groups=true`;\n return await api\n .get>(url)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { IHomeworkItem } from 'types/homework';\n\nexport const getAssignedHomeworks = async (isMandatory?: boolean): Promise => {\n const url = isMandatory\n ? `/assignment-progress/?status=assigned,deferred_assignment&is_mandatory=${isMandatory}`\n : `/assignment-progress/?status=assigned,deferred_assignment`;\n return await api\n .get>(url)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { getApiRequest } from 'api';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\n\nexport interface GetHWPreviewParams {\n status?: string;\n student?: number;\n lesson?: number;\n my_course_groups?: string;\n available_for_execution?: boolean;\n is_mandatory?: boolean;\n}\n\nexport const getAssignmentProgressPreview = (params: GetHWPreviewParams): Promise => {\n if (!params.is_mandatory) {\n delete params.is_mandatory;\n }\n return getApiRequest('/assignment-progress/preview/', { params });\n};\n","import { getApiRequest } from 'api';\nimport { AssignmentProgressPreview, AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { FilterTypes } from 'types/homework';\n\ninterface Params {\n deadline_for_complete_after?: string;\n deadline_for_complete_before?: string;\n deadline_for_check_after?: string;\n deadline_for_check_before?: string;\n assigned_date_after?: string;\n assigned_date_before?: string;\n status?: string;\n my_course_groups?: string;\n is_mandatory?: boolean;\n}\n\nexport const getHomeworkPreviewBeetweenDates = async (\n filterType: FilterTypes,\n dateStart: string,\n dateEnd: string,\n statusFilters?: AssignmentProgressStatus[],\n isFilterCourseGroup?: boolean,\n isMandatory?: boolean,\n): Promise => {\n let params: Params;\n\n switch (filterType) {\n case FilterTypes.DEADLINE_FOR_COMPLETE:\n params = {\n deadline_for_complete_after: dateStart,\n deadline_for_complete_before: dateEnd,\n };\n break;\n case FilterTypes.DEADLINE_FOR_CHECK:\n params = {\n deadline_for_check_after: dateStart,\n deadline_for_check_before: dateEnd,\n };\n break;\n case FilterTypes.ASSIGNED:\n default:\n params = {\n assigned_date_after: dateStart,\n assigned_date_before: dateEnd,\n };\n break;\n }\n\n if (statusFilters && statusFilters.length > 0) {\n params.status = statusFilters.join(',');\n }\n\n if (isFilterCourseGroup !== undefined) {\n params.my_course_groups = String(isFilterCourseGroup);\n }\n\n if (isMandatory) {\n params.is_mandatory = isMandatory;\n }\n\n return getApiRequest('/assignment-progress/preview/', { params });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { FilterTypes, IHomeworkItem } from 'types/homework';\n\ninterface Params {\n deadline_for_complete_after?: string;\n deadline_for_complete_before?: string;\n deadline_for_check_after?: string;\n deadline_for_check_before?: string;\n assigned_date_after?: string;\n assigned_date_before?: string;\n status?: string;\n my_course_groups?: string;\n is_mandatory?: boolean;\n}\n\nexport const getHomeworksBetweenDates = async (\n filterType: FilterTypes,\n dateStart: string,\n dateEnd: string,\n statusFilters?: AssignmentProgressStatus[],\n isFilterCourseGroup?: boolean,\n isMandatory?: boolean,\n): Promise => {\n let params: Params;\n\n switch (filterType) {\n case FilterTypes.DEADLINE_FOR_COMPLETE:\n params = {\n deadline_for_complete_after: dateStart,\n deadline_for_complete_before: dateEnd,\n };\n break;\n case FilterTypes.DEADLINE_FOR_CHECK:\n params = {\n deadline_for_check_after: dateStart,\n deadline_for_check_before: dateEnd,\n };\n break;\n case FilterTypes.ASSIGNED:\n default:\n params = {\n assigned_date_after: dateStart,\n assigned_date_before: dateEnd,\n };\n break;\n }\n\n if (statusFilters && statusFilters.length > 0) {\n params.status = statusFilters.join(',');\n }\n\n if (isFilterCourseGroup !== undefined) {\n params.my_course_groups = String(isFilterCourseGroup);\n }\n if (isMandatory) {\n params.is_mandatory = isMandatory;\n }\n\n return await api\n .get>(`/assignment-progress/`, { params })\n .then((res) => res.data || [])\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { getApiRequest } from 'api';\nimport { HomeworkStatus, ProgressesStatisticsData } from 'types/homework';\n\n/**\n *\n * @param status - Available values : assigned, on_check, complete\n * @example 'status=on_check'\n * @param user - Id of the requested user\n * @example 'user=1234'\n * @returns statistics about progresses\n */\n\nexport const getProgressesStatistics = async ({\n status,\n userId,\n}: {\n status: HomeworkStatus;\n userId?: number;\n}): Promise => {\n return getApiRequest('/assignment-progress/statistics/', { params: { status: status, user: userId } });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { IHomeworkItem } from 'types/homework';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nexport const getStudentsTasks = async (lessons: number[], students: number[]): Promise => {\n const queryString = createUrlQuery({\n lesson_ids: lessons,\n student_ids: students,\n });\n\n return await api\n .get>(`assignment-progress/${queryString}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nexport const getStudentsTasksPreview = async (\n lessons: number[],\n students: number[],\n): Promise => {\n const queryString = createUrlQuery({\n lesson_ids: lessons,\n student_ids: students,\n });\n\n return await api\n .get>(`assignment-progress/preview/${queryString}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport interface PutAssignmentProgress {\n id: number;\n deadlineForComplete: string;\n assignedDate: string;\n}\n\nexport const putStudentTask = async (tasks: PutAssignmentProgress[]): Promise => {\n return api\n .put, AxiosResponse>(`/assignment-progress/bulk-update/`, tasks)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { INSERT_WORD_REPLACE } from '@lms-elements/custom-editor';\nimport { answerType, IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { CheckAnswerResponse } from 'api/services/materials';\nimport { QuestionStatus, ResponseQuestion, ResponseStudentQuestion } from 'api/services/questionBank';\nimport {\n EssayAnswerData,\n InsertWordsAnswerData,\n InsertWordsAnswerDataResponse,\n TestAnswerData,\n TestAnswerDataResponse,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\nimport { EssayQuestionData, questionType, TestQuestionData } from 'types/question';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\ninterface AnswerOption {\n id: string;\n content: string;\n html?: string;\n text: string;\n order: number;\n acceptFile: boolean | null;\n acceptText: boolean | null;\n}\n\ninterface ParsedQuestionContent {\n blocks: {\n text: string;\n }[];\n entityMap: {\n data: {\n text: string;\n options: string[];\n };\n }[];\n}\n\nexport const getInsertWordsPreviewHtml = ({\n content,\n html,\n text,\n}: Pick): string => {\n if (content && html) {\n const parsedContent = JSON.parse(content) as ParsedQuestionContent;\n\n return Object.values(parsedContent.entityMap).reduce(\n (htmlAccumulator, entity) =>\n htmlAccumulator.replace(\n INSERT_WORD_REPLACE,\n ``,\n ),\n html || '',\n );\n }\n\n return text || '';\n};\n\nexport const getStudentQuestionsData = (questions: ResponseQuestion[] = []): ResponseStudentQuestion[] => {\n return questions.map((question) => {\n const {\n id,\n text,\n content,\n difficulty,\n answersType,\n status,\n timestamp,\n html,\n data,\n multiply,\n isActual,\n } = question;\n\n let answerOptionsQuantity = 0;\n let correctAnswerOptionsQuantity = 0;\n let answerOptions: AnswerOption[] = [];\n let randomOrder = false;\n\n if (answersType === AnswersTypeEnum.test) {\n answerOptions = (data as TestQuestionData).answerOptions?.map((option, index) => {\n const { correct, uuid, ...restData } = option;\n\n answerOptionsQuantity += 1;\n\n if (correct) {\n correctAnswerOptionsQuantity += 1;\n }\n\n return {\n ...restData,\n id: uuid || String(index),\n order: index,\n acceptFile: null,\n acceptText: null,\n };\n });\n randomOrder = (data as TestQuestionData).randomAnswerOrder;\n }\n\n return {\n id,\n text,\n content,\n difficulty,\n answersType,\n answerOptionsQuantity,\n correctAnswerOptionsQuantity,\n randomOrder,\n answerOptions,\n isActual,\n isTemplate: status === QuestionStatus.Published,\n timestamp,\n html,\n multiply,\n acceptFile: (data as EssayQuestionData).acceptFile,\n acceptText: (data as EssayQuestionData).acceptText,\n } as ResponseStudentQuestion;\n });\n};\n\ninterface GetInitValuesQuestionTypeParams {\n type: AnswersTypeEnum;\n multiply?: boolean;\n}\n\nconst getInitValuesQuestionType = ({ type, multiply }: GetInitValuesQuestionTypeParams): answerType => {\n switch (true) {\n case type === AnswersTypeEnum.essay:\n return 'detailed';\n case type === AnswersTypeEnum.test && multiply:\n return 'multiple';\n case type === AnswersTypeEnum.test:\n return 'single';\n case type === AnswersTypeEnum.true_false:\n return 'binary';\n case type === AnswersTypeEnum.insert_words:\n return 'insert-words';\n default:\n return 'open';\n }\n};\n\nexport interface StudentAnswerData {\n data: CheckAnswerResponse;\n answers: TextAnswerData | TrueFalseAnswerData | InsertWordsAnswerData | TestAnswerData | EssayAnswerData;\n}\n\nconst getAnswerData = (\n type: AnswersTypeEnum,\n answer?: StudentAnswerData,\n): { answer: string | string[] | undefined; correctAnswers: string | string[] | undefined } => {\n if (!answer) {\n return {\n answer: undefined,\n correctAnswers: undefined,\n };\n }\n\n const { data, answers } = answer;\n\n switch (type) {\n case AnswersTypeEnum.true_false:\n return {\n answer: String((answers as TrueFalseAnswerData)?.answer),\n correctAnswers: data.isCorrect\n ? String((answers as TrueFalseAnswerData)?.answer)\n : String(!(answers as TrueFalseAnswerData)?.answer),\n };\n case AnswersTypeEnum.test:\n return {\n answer: (answers as TestAnswerData)?.selectedOptions,\n correctAnswers: data.incomplete\n ? [\n ...((data.data as TestAnswerDataResponse).selectedOptions\n ?.filter((option) => option.isCorrect)\n ?.map((option) => option.uuid) || []),\n '-1',\n ]\n : (data.data as TestAnswerDataResponse).selectedOptions\n ?.filter((option) => option.isCorrect)\n ?.map((option) => option.uuid) || [],\n };\n case AnswersTypeEnum.text:\n return {\n answer: data.isCorrect\n ? (data.data as TextAnswerData)?.selectedOption\n : (answers as TextAnswerData)?.selectedOption,\n correctAnswers: data.isCorrect\n ? (data.data as TextAnswerData)?.selectedOption\n : `${(answers as TextAnswerData)?.selectedOption}_wrong`,\n };\n case AnswersTypeEnum.insert_words:\n return {\n answer:\n (data.data as InsertWordsAnswerDataResponse).selectedOptions?.reduce((result, option, index) => {\n result[option.gapIndex] = option.isCorrect\n ? option.selectedWord\n : (answers as InsertWordsAnswerData).selectedOptions[index].selectedWord;\n\n return result;\n }, [] as string[]) ||\n (answers as InsertWordsAnswerData).selectedOptions?.reduce((result, option) => {\n result[option.gapIndex] = option.selectedWord;\n\n return result;\n }, [] as string[]) ||\n [],\n correctAnswers: data.incomplete\n ? (data.data as InsertWordsAnswerDataResponse).selectedOptions?.reduce((result, option) => {\n result[option.gapIndex] = option.isCorrect\n ? option.selectedWord\n : `${option.selectedWord}_wrong`;\n\n return result;\n }, [] as string[]) || []\n : (data.data as InsertWordsAnswerDataResponse).selectedOptions\n ?.filter((option) => option.isCorrect)\n ?.reduce((result, option) => {\n result[option.gapIndex] = option.selectedWord;\n\n return result;\n }, [] as string[]) || [],\n };\n case AnswersTypeEnum.essay:\n return {\n answer: 'text' in answer.data.data ? answer.data.data.text : undefined,\n correctAnswers: 'essay',\n };\n default:\n return {\n answer: undefined,\n correctAnswers: undefined,\n };\n }\n};\n\nexport const normalizeQuestionData = (\n questionData: ResponseStudentQuestion,\n studentAnswers?: StudentAnswerData,\n isDraft?: boolean,\n): IQuestion & { id: number } => {\n const {\n answersType: type,\n multiply,\n answerOptions: answers,\n id,\n acceptFile,\n acceptText,\n randomOrder,\n } = questionData;\n\n const answerOptions =\n type === AnswersTypeEnum.true_false\n ? [\n {\n id: '0',\n markup: 'Неверно',\n },\n {\n id: '1',\n markup: 'Верно',\n },\n ]\n : answers?.map((answer) => {\n return {\n id: String(answer.id),\n markup:\n answer.html ||\n ((JSON.parse(answer.content) as Record]>)['blocks'] as Array<{\n text?: string;\n }>)[0]['text'] ||\n '',\n };\n });\n\n const { answer, correctAnswers } = getAnswerData(type, studentAnswers);\n\n return {\n id,\n answerOptions,\n randomOrder,\n answer,\n correctAnswers: isDraft ? undefined : correctAnswers,\n file: studentAnswers?.data?.file\n ? studentAnswers?.data?.file.map((el) => {\n return {\n ...el,\n id: String(el.id),\n name: el.title,\n };\n })\n : undefined,\n type: getInitValuesQuestionType({ type, multiply }),\n question: questionData.html || questionData.text,\n isFileAvailable: acceptFile,\n isTextAvailable: acceptText,\n };\n};\n\nexport const getQuestionTypeForBackend = (questionType: questionType): AnswersTypeEnum => {\n switch (questionType) {\n case 'multiple':\n return AnswersTypeEnum.test;\n case 'detailed':\n return AnswersTypeEnum.essay;\n case 'binary':\n return AnswersTypeEnum.true_false;\n case 'open':\n return AnswersTypeEnum.text;\n case 'insert-words':\n return AnswersTypeEnum.insert_words;\n }\n};\n\nexport const getQuestionType = (questionType: string | undefined): questionType => {\n switch (questionType) {\n case AnswersTypeEnum.test:\n return 'multiple';\n case AnswersTypeEnum.essay:\n return 'detailed';\n case AnswersTypeEnum.true_false:\n return 'binary';\n case AnswersTypeEnum.insert_words:\n return 'insert-words';\n default:\n return 'open';\n }\n};\n\nexport const getHeaderForForm = (questionType: questionType): string => {\n switch (questionType) {\n case 'multiple':\n return 'Вопрос - тестовый, автопроверка';\n case 'detailed':\n return 'Открытый вопрос - эссе, ручная проверка';\n case 'binary':\n return 'Вопрос - верно или нет, автопроверка';\n case 'open':\n return 'Вопрос - тестовый, с текстовым ответом, автопроверка';\n case 'insert-words':\n return 'Вопрос - вставить слова, автопроверка';\n }\n};\n","import { timezoneError } from 'constants/errors';\n\nimport { ActionCreatorWithoutPayload, createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { setError } from 'store/actions/error';\nimport { getCurrentTimeAction } from 'store/actions/user';\n\nimport { checkTimezone } from 'utils/date';\n\ninterface ErrorState {\n error?: string | null;\n descriptions?: string[];\n extra?: Record | null;\n isFrontend?: boolean;\n isTimezoneError?: boolean;\n needHideButtons?: boolean;\n isBlockLesson?: boolean;\n needHideErrorIcon?: boolean;\n isOlBlocked?: boolean;\n disableCancelButton?: boolean;\n isLastAttemptDeliting?: boolean;\n isCourseDeleting?: boolean;\n customDescription?: string;\n createCertificate?: boolean;\n actionButtonClick?: () => void;\n cancelButtonClick?: () => void;\n}\n\nconst initialState: ErrorState = {\n error: null,\n};\n\ninterface ErrorPayload {\n message: string;\n extra: {\n isBlockLesson: boolean;\n needHideErrorIcon: boolean;\n needHideButtons?: boolean;\n isFrontend?: boolean;\n createCertificate?: boolean;\n isCourseDeleting?: boolean;\n } & Record;\n actionButtonClick?: () => void;\n cancelButtonClick?: () => void;\n}\n\nexport const errorSlice = createSlice>({\n name: 'error',\n initialState,\n reducers: {\n ready: () => {\n return initialState;\n },\n error: (state, action: PayloadAction) => {\n const {\n isBlockLesson,\n needHideErrorIcon,\n needHideButtons,\n isFrontend,\n createCertificate,\n isCourseDeleting,\n ...restExtraParams\n } = action.payload.extra;\n\n state.error = action.payload.message === 'Rejected' ? 'Ой, что-то пошло не так!' : action.payload.message;\n state.extra = restExtraParams;\n state.isFrontend = typeof isFrontend === 'boolean' ? isFrontend : true;\n state.isBlockLesson = isBlockLesson;\n state.needHideErrorIcon = needHideErrorIcon;\n state.actionButtonClick = action.payload.actionButtonClick;\n state.cancelButtonClick = action.payload.cancelButtonClick;\n state.needHideButtons = needHideButtons;\n state.createCertificate = createCertificate;\n state.isCourseDeleting = isCourseDeleting;\n if (action.payload.extra.isOlBlocked !== undefined)\n state.isOlBlocked = Boolean(action.payload.extra.isOlBlocked);\n if (action.payload.extra.disableCancelButton !== undefined)\n state.disableCancelButton = Boolean(action.payload.extra.disableCancelButton);\n if (action.payload.extra.isLastAttemptDeliting !== undefined)\n state.isLastAttemptDeliting = Boolean(action.payload.extra.isLastAttemptDeliting);\n if (action.payload.extra.customDescription !== undefined)\n state.customDescription = String(action.payload.extra.customDescription);\n },\n clear: () => {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getCurrentTimeAction.fulfilled, (state, { payload }) => {\n const isCorrectTimezone = checkTimezone(payload.time);\n\n if (!isCorrectTimezone) {\n state.error = timezoneError.error;\n state.descriptions = timezoneError.descriptions;\n state.isTimezoneError = true;\n state.actionButtonClick = () => undefined;\n }\n });\n builder.addCase(setError, (state, { payload }) => {\n state.error = payload;\n state.needHideButtons = true;\n });\n },\n});\n\nexport const { ready, error } = errorSlice.actions;\nexport const clearError = errorSlice.actions.clear as ActionCreatorWithoutPayload;\n\nexport const errorReducer = errorSlice.reducer;\n","import { ReactElement } from 'react';\n\nimport { Parallel } from './parallel';\n\nexport enum LessonTypes {\n ONLINE = 'online_lesson',\n SELFPREPARATION = 'selfpreparation_lesson',\n TEST = 'test_lesson',\n PARENT_MEETING = 'parent_meeting',\n}\n\nexport enum AssemblyTypes {\n PARENT_MEETING = 'parent_meeting',\n}\n\nexport interface ScheduleEvent {\n id: number;\n lesson: {\n id: number;\n title: string;\n };\n type: string;\n subject: {\n id: number;\n title: string;\n shortName?: string;\n };\n courseGroup: {\n id: number;\n title: string;\n };\n meeting: {\n id: number;\n title: string;\n };\n parallels: Parallel[];\n topic: string;\n users: number[];\n parentName: string;\n date: string;\n datetimeStart: string;\n datetimeEnd: string;\n IconElement?: ReactElement;\n customTitle?: string;\n isEventRoom?: boolean;\n isAssembly?: boolean;\n}\n\nexport interface ScheduleData {\n [key: string]: {\n date: string;\n data: ScheduleEvent[];\n };\n}\n","import { getApiRequest } from 'api';\n\nimport { MissedLesson } from './patchMissedLesson';\n\nexport const getMissedLesson = (lesson?: number): Promise => {\n return getApiRequest(`/missed-lesson/`, { params: { lesson } });\n};\n","import { nonPaymentError, wrongClientError } from 'constants/errors';\n\nimport { isMobile } from 'react-device-detect';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getMissedLesson } from 'api/services/lesson/getMissedLesson';\nimport { MissedLesson, patchMissedLesson, PatchMissedLessonParams } from 'api/services/lesson/patchMissedLesson';\nimport { getLessonSchedule, getMeetingJoinRedirect } from 'api/services/lessonSchedule';\nimport moment from 'moment';\nimport { error } from 'store/reducers/error';\n\ntype GetLessonScheduleParams = {\n lessonIds: number[];\n courseGroupId?: number;\n};\n\nexport const getLessonScheduleAction = createAsyncThunk(\n 'schedule/getLessonSchedule',\n ({ lessonIds, courseGroupId }: GetLessonScheduleParams) => getLessonSchedule(lessonIds, courseGroupId),\n);\n\nexport const patchMissedLessonAction = createAsyncThunk('missed-lesson/', (params: PatchMissedLessonParams) => {\n return getMissedLesson(params.id).then((elem) =>\n elem.length ? patchMissedLesson({ id: elem[0].id, recordViewed: true }) : ({} as MissedLesson),\n );\n});\n\nexport const getMissedLessonAction = createAsyncThunk('missed-lesson/getMissedLessons', () => {\n return getMissedLesson();\n});\n\ntype GetMeetingJoinRedirectParams = {\n lessonSchedule?: number;\n eventRoom?: number;\n assembly?: number;\n};\n\nexport const getMeetingJoinRedirectAction = createAsyncThunk(\n 'schedule/getMeetingJoinRedirect',\n ({ lessonSchedule, eventRoom, assembly }: GetMeetingJoinRedirectParams, { dispatch }) => {\n return getMeetingJoinRedirect({\n lesson_schedule: lessonSchedule,\n event_room: eventRoom,\n assembly: assembly,\n }).then(({ link, block }) => {\n if (block || !link) {\n dispatch(\n error({\n message: nonPaymentError.error,\n extra: {\n isOlBlocked: true,\n needHideErrorIcon: true,\n isBlockLesson: true,\n isFrontend: false,\n customDescription: nonPaymentError.descriptions,\n disableCancelButton: true,\n },\n }),\n );\n return;\n }\n if (isMobile) {\n document.location.href = link;\n return;\n }\n window.open(link, '_blank', 'noopener noreferrer');\n });\n },\n);\n\nexport const getMeetingWithCheckAction = createAsyncThunk(\n 'schedule/getMeetingWithCheck',\n (\n params: {\n lessonSchedule?: number;\n eventRoom?: number;\n assembly?: number;\n isAppUsed?: boolean;\n datetimeStartUsedApp?: string | null;\n isMacOrApp: boolean;\n handleActionButtonClick?: () => void;\n handleCancelButtonClick?: () => void;\n },\n { dispatch },\n ) => {\n if (\n (params.isAppUsed && !params.isMacOrApp) ||\n (typeof params.datetimeStartUsedApp === 'string' &&\n ((moment().diff(params.datetimeStartUsedApp) < 0 && !params.isAppUsed) ||\n (moment().diff(params.datetimeStartUsedApp) >= 0 && params.isAppUsed)) &&\n !params.isMacOrApp)\n ) {\n dispatch(\n error({\n message: wrongClientError.error,\n extra: {\n needHideErrorIcon: true,\n isBlockLesson: true,\n isFrontend: false,\n customDescription: `С ${moment(params.datetimeStartUsedApp).format(\n 'LL',\n )} вход на онлайн-занятия будет доступен только через приложение \"Онлайн Гимназия №1\". Пожалуйста, установите приложение, чтобы не прерывать процесс обучения`,\n disableCancelButton: moment().diff(params.datetimeStartUsedApp) >= 0 && params.isAppUsed,\n },\n actionButtonClick: params.handleActionButtonClick,\n cancelButtonClick: params.handleCancelButtonClick,\n }),\n );\n return;\n }\n\n void dispatch(\n getMeetingJoinRedirectAction({\n lessonSchedule: params.lessonSchedule,\n eventRoom: params.eventRoom,\n assembly: params.assembly,\n }),\n );\n },\n);\n","import { Parallel } from '@lms-elements/atomic';\nimport { patchApiRequest } from 'api';\n\nexport interface PatchMissedLessonParams {\n id: number;\n recordViewed: boolean;\n}\n\nexport interface MissedLesson {\n id: number;\n lesson: {\n id: number;\n title: string;\n };\n subject: {\n id: number;\n title: string;\n };\n parallels: Parallel[];\n}\n\nexport const patchMissedLesson = ({ id, ...missed }: PatchMissedLessonParams): Promise => {\n return patchApiRequest(`/missed-lesson/partial-update/${id}/`, missed);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getCourseDetails, patchThemesOrdering } from 'api/services/course';\nimport {\n deleteTheme,\n getThemes,\n patchTheme,\n postTheme,\n PostThemeParams,\n publishTheme,\n ResponseTheme,\n} from 'api/services/courseThemes';\n\nexport const getThemesAction = createAsyncThunk('courseThemes/getThemes', async (courseId: number) => {\n return await getThemes(courseId);\n});\n\nexport const publishThemeAction = createAsyncThunk('courseThemes/publishTheme', async (themeId: number) =>\n publishTheme(themeId),\n);\n\nexport const createThemeAction = createAsyncThunk(\n 'courseThemes/createTheme',\n async (params: { values: PostThemeParams & { order: number }; ordering: number[] }) => {\n return await postTheme(params.values)\n .then((newTheme) => {\n const newOrdering = [\n ...params.ordering.slice(0, params.values.order),\n newTheme.id,\n ...params.ordering.slice(params.values.order),\n ];\n return patchThemesOrdering({\n ordering: newOrdering,\n courseId: params.values.course,\n });\n })\n .then(({ ordering }) => {\n return {\n ordering,\n newTheme: {\n ...params.values,\n id: ordering[params.values.order],\n } as ResponseTheme,\n };\n });\n },\n);\n\nexport const changeThemeAction = createAsyncThunk(\n 'courseThemes/changeTheme',\n async (params: { theme: ResponseTheme; courseId: number; ordering: number[] }) => {\n const { theme, courseId, ordering } = params;\n return await patchTheme(theme)\n .then((updatedTheme) => {\n const orderingWithoutUpdatetedTheme = ordering.filter((themeId) => themeId !== updatedTheme.id);\n const newOrdering = [\n ...orderingWithoutUpdatetedTheme.slice(0, theme.order),\n updatedTheme.id,\n ...orderingWithoutUpdatetedTheme.slice(theme.order),\n ];\n return patchThemesOrdering({\n ordering: newOrdering,\n courseId,\n });\n })\n .then(async ({ ordering }) => {\n const course = await getCourseDetails(courseId);\n\n return {\n ordering,\n course,\n };\n })\n .then(({ ordering, course }) => {\n return {\n ordering,\n course,\n newTheme: theme,\n };\n });\n },\n);\n\nexport const deleteThemeAction = createAsyncThunk(\n 'courseThemes/deleteTheme',\n async (params: { themeId: number; ordering: number[]; courseId: number }) => {\n return await deleteTheme(params.themeId).then(() => patchThemesOrdering(params));\n },\n);\n","import { patchApiRequest } from 'api';\nimport { CreateRoomResponse } from 'api/services/proctoring';\nimport { payloadTimeFormatter } from 'src-new/utils/date-n-time';\nimport { EventActions } from 'types/events';\n\nexport interface ChangeRoomData {\n id: number;\n action?: EventActions;\n datetimeStart?: string;\n duration?: number;\n maxStudents?: number;\n leaders?: number[];\n}\n\nexport const changeEventRoom = ({ id, ...roomData }: ChangeRoomData): Promise => {\n const { datetimeStart, action, duration, maxStudents, leaders } = { ...roomData };\n const startDate = datetimeStart ? payloadTimeFormatter(datetimeStart) : datetimeStart;\n\n const payload: typeof roomData = {\n action,\n duration,\n maxStudents,\n leaders,\n };\n if (startDate) {\n payload.datetimeStart = startDate;\n }\n return patchApiRequest(`/event-room/update/${id}/`, payload);\n};\n","import { postApiRequest } from 'api';\nimport { CreateRoomResponse } from 'api/services/proctoring';\nimport { payloadTimeFormatter } from 'src-new/utils/date-n-time';\n\nexport interface CreateRoomData {\n event: number;\n datetimeStart: string;\n duration: number;\n maxStudents?: number;\n leaders?: number[];\n}\n\nexport const createEventRoom = (roomData: CreateRoomData): Promise => {\n const { datetimeStart, event, duration, maxStudents, leaders } = { ...roomData };\n const startDate = payloadTimeFormatter(datetimeStart);\n\n const payload: CreateRoomData = {\n event,\n duration,\n maxStudents,\n leaders,\n datetimeStart: startDate,\n };\n return postApiRequest('/event-room/create/', payload);\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteEventRoom = (roomId: number): Promise => {\n return deleteApiRequest(`/event-room/delete/${roomId}/`).then(() => roomId);\n};\n","import { getApiRequest } from 'api';\nimport { EventRoom } from 'api/services/proctoring';\n\nexport const getEventRoomDetails = (id: number): Promise => {\n return getApiRequest(`/event-room/${id}/`);\n};\n","import { getApiRequest } from 'api';\nimport { EventRoom } from 'api/services/proctoring';\nimport { EventTypes } from 'types/events';\n\nexport type GetEventRoomsParams = {\n lesson?: number;\n lesson_ids?: string;\n event_type?: EventTypes;\n students?: number[];\n datetime_start_before?: string;\n datetime_start_after?: string;\n};\n\nexport const getEventRooms = (params: GetEventRoomsParams): Promise => {\n return getApiRequest('/event-room/', { params });\n};\n","import { getApiRequest } from 'api';\nimport { EventTypes } from 'types/events';\n\nexport interface ProctoringEvent {\n id: number;\n lesson: {\n id: number;\n title: string;\n };\n course: {\n id: number;\n title: string;\n };\n parallels: {\n id: number;\n title: string;\n titleShort: string;\n }[];\n type: EventTypes;\n dateStart: string;\n dateEnd: string;\n // field for student\n subject?: number;\n courseGroup?: number;\n}\n\nexport type GetEventParams = {\n date?: string;\n lesson?: number;\n course?: number;\n};\n\nexport const getEvents = (params: GetEventParams): Promise => {\n return getApiRequest(`/event/`, { params });\n};\n","import { getApiRequest } from 'api';\nimport { StaffProfile } from 'types/staffProfile';\nimport { UserRoles } from 'types/user';\n\nexport const getProctors = (): Promise => {\n return getApiRequest(`/staff-profile/?user_role=${UserRoles.PROCTOR}`);\n};\n","import { deleteApiRequest, getApiRequest, patchApiRequest, postApiRequest } from 'api';\nimport {\n IAssignmentItem,\n LessonDetails,\n TBlockParam,\n TCodifierSubjectData,\n TNewTaskData,\n TResponseQuestion,\n TResponseQuestionDetailed,\n TSearchBlockGet,\n TSubjectData,\n TTaskData,\n TUpdateLessonTaskResponse,\n} from 'types/lessonTask';\n\nexport const getQuestionDetails = (id: number): Promise => {\n return getApiRequest(`/codifier/question/${id}/overview/`);\n};\nexport const getLessonDetails = (id: number): Promise => {\n return getApiRequest(`/lesson/${id}/`);\n};\nexport const getTaskData = async (id: number): Promise => {\n return getApiRequest(`/assignment/${id}`);\n};\n\nexport const getAssignedTasks = async (id?: number): Promise => {\n return getApiRequest(`/codifier/assignment-search-block/?assignment=${id}`);\n};\n\nexport const getQuestionsByQuery = async (query: string): Promise => {\n return getApiRequest(`/codifier/question/${query}`);\n};\n\nexport const updateLessonTask = async (taskData: TTaskData): Promise => {\n const { id, ...rest } = taskData;\n\n return patchApiRequest(`/assignment/partial-update/${id}/`, { ...rest });\n};\nexport const createLessonTask = async (taskData: TNewTaskData): Promise => {\n return postApiRequest(`/assignment/create/`, {\n ...taskData,\n courseGroup: taskData?.isTemplate ? undefined : taskData?.courseGroup,\n });\n};\nexport const createLessonTaskQuestion = async (blocks: TBlockParam[]): Promise => {\n return postApiRequest(`/codifier/assignment-search-block/bulk-create/`, blocks);\n};\nexport const updateLessonTaskQuestion = async (blocks: TBlockParam & { id: number }[]): Promise => {\n return patchApiRequest(`/codifier/assignment-search-block/bulk-update/`, blocks);\n};\nexport const deleteLessonTaskQuestion = async (ids: number[]): Promise => {\n const params = ids.map((id) => {\n return { id };\n });\n return deleteApiRequest(`/codifier/assignment-search-block/bulk-delete/`, { data: params });\n};\n\nexport const getSubjectsData = async (): Promise => {\n return getApiRequest(`/codifier/subject/`);\n};\nexport const getSubjectDataById = (subjectId: number): Promise => {\n return getApiRequest(`/codifier/tree/?subject=${subjectId}`);\n};\n","export enum EventTypes {\n TEST = 'test_lesson',\n}\n\nexport enum EventActions {\n JOIN = 'join',\n LEAVE = 'leave',\n}\n\nexport interface StudentEvent {\n id: number;\n date: string;\n course: string;\n isStarted: boolean;\n subjectId?: number;\n lessonId?: number;\n courseGroupId?: number;\n}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n changeAcademicYear,\n changePassword,\n ChangePasswordRequestData,\n getCurrentTime,\n getUserInfo,\n} from 'api/services/user';\n\nexport const getUserInfoAction = createAsyncThunk('user/getUserInfo', async () => {\n return await getUserInfo();\n});\n\nexport const changePasswordAction = createAsyncThunk(\n 'user/changePassword',\n (changePasswordRequestData: ChangePasswordRequestData) => changePassword(changePasswordRequestData),\n);\n\nexport const changeAcademicYearAction = createAsyncThunk('user/changeAcademicYear', (yearId: number) =>\n changeAcademicYear(yearId),\n);\n\nexport const getCurrentTimeAction = createAsyncThunk('user/getCurrentTime', () => getCurrentTime());\n","import { api, getApiRequest, patchApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { UserRoles } from 'types/user';\n\nexport interface UserInfo {\n id: number;\n externalId?: string;\n firstName: string;\n lastName: string;\n patronymic: string;\n photoUrl: string;\n email?: string;\n userRoles: UserRoles[];\n academicYear: TAcademicYear;\n isAppUsed: boolean;\n datetimeStartUsedApp: null | string;\n isOlBlocked: boolean;\n tariff: number;\n tariffTitle: string;\n monitoringURL?: string;\n googleTableUrls?: string[];\n}\n\nexport interface ChangePasswordRequestData {\n password: string;\n repPassword: string;\n oldPassword: string;\n}\nexport type TAcademicYear = {\n id: number;\n title: string;\n};\nexport type TChangeAcademicYearResponse = {\n id: number;\n academicYear: TAcademicYear;\n};\n\n/**\n * Fetch current user data\n * @returns user info\n */\n\nexport const getUserInfo = (): Promise => {\n return api\n .get, AxiosResponse>(`/user/`)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const changePassword = (changePasswordRequestData: ChangePasswordRequestData): Promise =>\n api\n .post(`/user/change-password/`, changePasswordRequestData)\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport const changeAcademicYear = (yearId: number): Promise => {\n const params = {\n academicYear: yearId,\n };\n return patchApiRequest('/user/partial-update/', params);\n};\n\nexport const getCurrentTime = (): Promise<{ time: string }> => {\n return getApiRequest('/user/current-time/');\n};\n","import { postApiRequest } from 'api/index';\nimport { ICreateCalendarPlanParams, ICreateCalendarPlanResponse } from 'types/calendarPlan';\n\nexport const createCalendarPlan = (params: ICreateCalendarPlanParams): Promise => {\n return postApiRequest(`/calendar-plan/create/`, params);\n};\n","import { postApiRequest } from 'api/index';\nimport { ICreateCalendarPlanPeriodParams } from 'types/calendarPlan';\n\nexport const createCalendarPlanPeriod = (\n params: ICreateCalendarPlanPeriodParams,\n): Promise => {\n return postApiRequest(`/period/bulk-create/`, params);\n};\n","import { postApiRequest } from 'api/index';\nimport { ICreateSchoolHolidaysParam, ICreateSchoolHolidaysResponse } from 'types/calendarPlan';\n\nexport const createSchoolHolidays = (\n params: Array,\n): Promise => {\n return postApiRequest(`/school-holiday/bulk-create/`, params);\n};\n","import { deleteApiRequest } from 'api/index';\n\nexport const deleteCalendarPlan = (id: number): Promise => {\n return deleteApiRequest(`/calendar-plan/delete/${id}/`).then(() => id);\n};\n","import { deleteApiRequest } from 'api/index';\nimport { IDeleteCalendarPlanPeriodParams } from 'types/calendarPlan';\n\nexport const deleteCalendarPlanPeriod = (params: IDeleteCalendarPlanPeriodParams): Promise => {\n return deleteApiRequest(`/period/bulk-delete/`, params);\n};\n","import { deleteApiRequest } from 'api/index';\nimport { IDeleteSchoolHolidaysParams } from 'types/calendarPlan';\n\nexport const deleteSchoolHolidays = (params: IDeleteSchoolHolidaysParams): Promise => {\n return deleteApiRequest(`/school-holiday/bulk-delete/`, params);\n};\n","import { getApiRequest } from 'api/index';\nimport { ICalendarPlan } from 'types/calendarPlan';\n\nexport const getCalendarPlanList = (): Promise> => {\n return getApiRequest(`/calendar-plan/`);\n};\n","import { getApiRequest } from 'api/index';\nimport { ICalendarPlan } from 'types/calendarPlan';\n\nexport const getCalendarPlan = (id: number): Promise => {\n return getApiRequest(`/calendar-plan/${id}/`);\n};\n","import { patchApiRequest } from 'api/index';\nimport { ICalendarPlan, IUpdateCalendarPlan } from 'types/calendarPlan';\n\nexport const patchCalendarPlan = (id: number, params: IUpdateCalendarPlan): Promise => {\n return patchApiRequest(`/calendar-plan/partial-update/${id}/`, params);\n};\n","import { patchApiRequest } from 'api/index';\nimport { ICreateCalendarPlanPeriodParams, IUpdateCalendarPlanPeriodParams } from 'types/calendarPlan';\n\nexport const patchCalendarPlanPeriod = (\n params: Array,\n): Promise => {\n return patchApiRequest(`/period/bulk-update/`, params);\n};\n","import { patchApiRequest } from 'api/index';\nimport { IUpdateSchoolHolidaysParam, IUpdateSchoolHolidaysResponse } from 'types/calendarPlan';\n\nexport const patchSchoolHolidays = (\n params: Array,\n): Promise => {\n return patchApiRequest(`/school-holiday/bulk-update/`, params);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getApiRequest } from 'api';\nimport {\n getFirstArchiveNotificationsPage,\n getNotificationsPage,\n getUnreadMessagesCount,\n getUnreadNotificationsCount,\n NotificationsArchivePage,\n} from 'api/services/notifications';\nimport { State } from 'store/store';\n\nexport const getUnreadNotificationsCountAction = createAsyncThunk('notifications/getUnreadNotificationsCount', () =>\n getUnreadNotificationsCount(),\n);\n\nexport const getUnreadMessagesCountAction = createAsyncThunk('notifications/getUnreadMessagesCount', () =>\n getUnreadMessagesCount(),\n);\n\nexport const getNotificationsPageAction = createAsyncThunk('notifications/getNotificationsPage', () =>\n getNotificationsPage(),\n);\n\nexport const getFirstArchiveNotificationsPageAction = createAsyncThunk(\n 'notifications/getFirstArchiveNotificationsPage',\n () => getFirstArchiveNotificationsPage(),\n);\n\nexport const getNextArchiveNotificationsPageAction = createAsyncThunk(\n 'notifications/getNextArchiveNotificationsPage',\n async (_, thunkApi) => {\n const state = thunkApi.getState() as State;\n const { nextArchiveNotificationsPageLink } = state.notifications;\n\n if (nextArchiveNotificationsPageLink === null) {\n return null;\n }\n\n return getApiRequest(nextArchiveNotificationsPageLink);\n },\n);\n","import { getApiRequest } from 'api';\nimport { NotificationType } from 'types/notifications';\n\nexport interface UnreadNotificationsCount {\n count: number;\n}\nexport interface UnreadMessagesCount {\n unreadMessagesCount: number;\n}\n\nexport interface NotificationTaskData {\n subject: {\n id: number;\n title: string;\n };\n lesson: number;\n courseGroup: {\n id: number;\n title: string;\n } | null;\n count?: number;\n}\n\nexport interface Notification {\n id: number;\n timeCreate: string;\n isRead: boolean;\n type: NotificationType;\n data: NotificationTaskData;\n}\n\nexport interface NotificationsArchivePage {\n count: number;\n next: string | null;\n previous: string | null;\n data: Notification[];\n}\n\nexport const getUnreadNotificationsCount = (): Promise =>\n getApiRequest('notifications/unread/');\nexport const getUnreadMessagesCount = (): Promise =>\n getApiRequest('rocket-chat/unread-messages-count/');\n\nexport const getNotificationsPage = (): Promise => getApiRequest('notifications/');\n\nexport const getFirstArchiveNotificationsPage = (): Promise =>\n getApiRequest(`notifications/archieve/`);\n","import { createAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { ssoLogin, ssoLogout } from 'api/services/token';\nimport { TLogin } from 'types/auth';\n\nimport { removeAllTokens } from 'utils/token';\n\nexport const fetchLogin = createAsyncThunk('login/fetchLogin', async (values: TLogin) => {\n return await ssoLogin(values);\n});\n\nexport const fetchLogout = createAsyncThunk('logout/fetchLogout', async () => {\n removeAllTokens();\n return await ssoLogout();\n});\n\nexport const setIsLoggedInAction = createAction('login/setTokens', (payload: boolean) => {\n return { payload };\n});\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Status } from 'pages/QuestionBankPage/types';\nimport {\n EssayAnswerData,\n EssayAnswerDataResponse,\n InsertWordsAnswerData,\n InsertWordsAnswerDataResponse,\n TestAnswerData,\n TestAnswerDataResponse,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\nimport { FileTypes, IFile } from 'types/file';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nimport { createFile, fetchDeleteFiles } from './file';\nimport { DifficultyEnum } from './questionCreate';\n\nexport interface IPostMaterial {\n lesson: number;\n content: string;\n html?: string;\n question?: number;\n typeOfContent: ContentMaterialTypeEnum;\n type: TMaterialType;\n}\n\nexport type TMaterialType = 'main' | 'additional';\n\nexport interface IPostMaterialResponse {\n id: number;\n materialType: string;\n lesson: number;\n content: string;\n html?: string;\n question?: number;\n typeOfContent: ContentMaterialTypeEnum;\n}\n\nexport interface IMaterialFile {\n id: number;\n files: IFile[];\n material: number;\n course?: number;\n}\n\nexport interface IUploadMaterialParams {\n id?: number;\n material: IPostMaterial;\n filesForPatch: number[];\n file?: File;\n files?: File[];\n filesForDelete?: number[];\n}\n\nexport interface TrainingSearchBlockFilters {\n text: string;\n topics?: number[];\n difficulty?: DifficultyEnum[];\n answersType?: AnswersTypeEnum[];\n skillsOr?: number[];\n skillsAnd?: number[];\n excludeIds?: number[];\n id: number | null;\n status?: Status;\n all_user_questions?: boolean;\n}\n\nexport const postMaterial = async (value: IUploadMaterialParams): Promise => {\n return api\n .post, AxiosResponse>(`/learning-material/create/`, {\n ...value.material,\n })\n .then((res) => {\n return res;\n })\n .then(async (res) => {\n if (res?.data.id && value.file) {\n await createFile({\n file: value.file,\n type: FileTypes.COMMON,\n materialId: res?.data.id,\n });\n }\n if (res?.data.id && value.files) {\n await Promise.all(\n value.files.map((file) =>\n createFile({\n file,\n type: FileTypes.COMMON,\n materialId: res?.data.id,\n }),\n ),\n );\n }\n if (res?.data.id && value.filesForPatch.length) {\n await getMaterialFile({ materialId: res.data.id }).then(async (fileSet) => {\n if (fileSet.length && fileSet[0].id) {\n await patchFilesMaterials(value.filesForPatch, fileSet[0].id);\n }\n });\n }\n return res?.data;\n })\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchFilesMaterials = (fileIds: number[], materialId: number): Promise => {\n return api\n .patch>(`/material-file-set/${materialId}/upload/`, { fileIds })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface LearningMaterialsContent {\n id: number;\n content: string;\n html?: string;\n order: number;\n question?: number;\n typeOfContent: ContentMaterialTypeEnum;\n}\n\nexport interface CheckAnswerResponse {\n isCorrect: boolean;\n incomplete?: boolean;\n file?: { id: number; url: string; title: string }[] | null;\n data:\n | EssayAnswerDataResponse\n | InsertWordsAnswerDataResponse\n | TestAnswerDataResponse\n | TextAnswerData\n | TrueFalseAnswerData;\n}\n\nexport const getMaterials = async (\n lessonId: number,\n materialType: TMaterialType,\n): Promise => {\n return await api\n .get, AxiosResponse>(\n `/learning-material/?lesson=${lessonId}&type=${materialType}`,\n )\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getMaterialFile = ({\n materialId,\n lesson,\n}: {\n materialId?: number;\n lesson?: number;\n}): Promise => {\n return api\n .get>(\n `/material-file-set/${createUrlQuery({ material: materialId, lesson })}`,\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteMaterial = (materialId: number, filesForDelete?: number[]): Promise => {\n return api\n .delete(`/learning-material/delete/${materialId}/`)\n .then(async (id) => {\n await Promise.all(filesForDelete?.map((file) => fetchDeleteFiles(file)) || []);\n return id;\n })\n .then((id) => id)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchMaterial = (\n id: number,\n value: IPostMaterial,\n filesForPatch: number[],\n files?: File[],\n filesForDelete?: number[],\n): Promise => {\n return api\n .patch, AxiosResponse>(\n `/learning-material/partial-update/${id}/`,\n {\n ...value,\n },\n )\n .then(async (res) => {\n if (filesForPatch.length) {\n const fileSet = await getMaterialFile({ materialId: res.data.id });\n if (fileSet.length && fileSet[0].id) {\n await patchFilesMaterials(filesForPatch, fileSet[0].id);\n }\n }\n if (id && files) {\n await Promise.all(\n files.map((file) =>\n createFile({\n file,\n type: FileTypes.COMMON,\n materialId: id,\n }),\n ),\n );\n }\n if (filesForDelete) {\n await Promise.all(filesForDelete.map((file) => fetchDeleteFiles(file)));\n }\n return res?.data;\n })\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchMaterialsOrdering = (lessonId: number, ordering: number[]): Promise<{ ordering: number[] }> => {\n return api\n .patch, AxiosResponse<{ ordering: number[] }>>(\n `/lesson/${lessonId}/materials/ordering/`,\n {\n ordering,\n },\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface ExerciseAnswer {\n material: number;\n data: EssayAnswerData | InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\n questionId?: number;\n}\n\nexport const checkExerciseAnswer = (params: ExerciseAnswer): Promise => {\n return api\n .post, AxiosResponse>(`/codifier/answer/check/`, params)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface ExerciseCorrectAnswer {\n material: number;\n id?: number;\n data?: unknown;\n}\n\nexport const getExercisesCorrectAnswers = (lessonId: number): Promise =>\n api\n .get(`/codifier/answer/show/?lesson=${lessonId}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n","import React from 'react';\nimport { AppFontIcon } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TBooleanStatusIndicator } from './BooleanStatusIndicator.types';\n\nimport './BooleanStatusIndicator.style.scss';\nexport const BooleanStatusIndicator: React.FC = (props) => {\n const { isPositive, color } = props;\n\n return isPositive ? (\n
\n \n
\n ) : (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { AppSkeleton } from '@frontend-modules/ui-kit';\n\nimport { TCardWrapperProps } from './CardWrapper.types';\n\nimport './CardWrapper.style.scss';\nexport const CardWrapper: React.FC = (props) => {\n const { children, isLoading = false, style, additionalCls = '' } = props;\n\n return (\n
\n {isLoading ? (\n \n ) : (\n <>{children}\n )}\n
\n );\n};\n","import { E_COLORS } from 'src-new/constants';\n\nexport const baseChartOptions = {\n legend: 'none',\n chartArea: { width: '90%', height: '90%', top: 5 },\n focusTarget: 'category',\n vAxis: {\n gridlines: {\n color: E_COLORS.light_grey_color_3,\n },\n baselineColor: E_COLORS.light_grey_color_3,\n textStyle: {\n color: E_COLORS.light_grey_color_1,\n fontSize: 13,\n },\n },\n hAxis: {\n gridlines: {\n color: E_COLORS.light_grey_color_3,\n },\n baselineColor: E_COLORS.light_grey_color_3,\n textStyle: {\n color: E_COLORS.light_grey_color_1,\n fontSize: 13,\n },\n },\n tooltip: {\n isHtml: true,\n trigger: 'focus',\n ignoreBounds: true,\n },\n};\n","import React from 'react';\nimport { Chart } from 'react-google-charts';\nimport { AppSkeleton, AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { baseChartOptions } from './GoogleChartWrapper.config';\nimport { TGoogleChartWrapperProps } from './GoogleChartWrapper.types';\n\nimport './GoogleChartWrapper.style.scss';\nexport const GoogleChartWrapper: React.FC = (props) => {\n const {\n isNoData = false,\n isLoading = false,\n emptyDataText = 'Данные отсутствуют',\n width = '100%',\n height = 400,\n options,\n ...rest\n } = props;\n\n const mergedChartOptions = {\n ...baseChartOptions,\n ...options,\n hAxis: { ...baseChartOptions.hAxis, ...options?.hAxis },\n vAxis: { ...baseChartOptions.vAxis, ...options?.vAxis },\n tooltip: { ...baseChartOptions.tooltip, ...options?.tooltip },\n };\n\n if (isLoading) {\n return ;\n }\n return (\n
\n {isNoData ? (\n \n ) : (\n // @ts-expect-error Server Component\n \n )}\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\n\nimport { TChartsLegendItem } from './ChartsLegendItem.types';\n\nimport './ChartsLegendItem.style.scss';\nexport const ChartsLegendItem: React.FC = (props) => {\n const { color, name, children } = props;\n\n return (\n
\n
\n {children ?? }\n
\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { AppCollapse } from '@frontend-modules/ui-kit';\nimport { TextButton } from '@fsd-shared/ui-kit';\n\nimport { TCollapseWithButtonProps } from './CollapseWithButton.types';\n\nimport './CollapseWithButton.style.scss';\nexport const CollapseWithButton: React.FC = (props) => {\n const { header, showHeaderArrow = false, content } = props;\n\n const [opened, setOpened] = useState(0);\n\n const renderContent = useMemo(() => {\n return (\n
\n {content}\n
\n setOpened(1)} />\n
\n
\n );\n }, [content]);\n\n return (\n
\n setOpened((prevState) => Number(!prevState))}\n items={[\n { title:
{header}
, content: renderContent },\n ]}\n />\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { emptyDataImage } from '@fsd-shared/assets';\nimport { CardWrapper } from '@fsd-shared/ui-kit';\n\nimport { TEmptyData } from './EmptyData.types';\n\nimport './EmptyData.style.scss';\nexport const EmptyData: React.FC = (props) => {\n const { text = 'Нет данных', imageContent } = props;\n\n return (\n \n {!!text && }\n {imageContent ?? }\n \n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TFractionContentProps } from './FractionContent.types';\n\nimport './FractionContent.style.scss';\nexport const FractionContent = (props: TFractionContentProps): React.ReactElement => {\n const { currentAmount, maxAmount, withPercent = false } = props;\n\n return (\n
\n \n \n
\n );\n};\n","import { ELinkSeparatingLine, ESupportedLinkTypes } from '@fsd-features/AddKinescopeVideo/AddKinescopeVideo.config';\n\nexport const transformVideoUrlToShow = (link?: string): string => {\n switch (true) {\n case link?.includes(ESupportedLinkTypes.kinescope):\n return link ? addEmbed(link, ELinkSeparatingLine.kinescope) : '';\n default:\n return link ?? '';\n }\n};\n\nconst addEmbed = (link: string, separator: string): string => {\n return link.replace(separator, `${separator}/embed`);\n};\n","import React from 'react';\n\nimport { TKinescopeVideo } from './KinescopeVideo.types';\nimport { transformVideoUrlToShow } from './KinescopeVideo.utils';\n\nimport './KinescopeVideo.style.scss';\nexport const KinescopeVideo: React.FC = (props) => {\n const { url, allowFullScreen = true, allowAutoplay = false, videoWidth = 470, videoHeight = 270 } = props;\n\n return (\n
\n
\n \n
\n
\n );\n};\n","import React, { FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppCheckbox, AppInput, AppSelect } from '@frontend-modules/ui-kit';\nimport { Tag } from 'antd';\nimport type { CustomTagProps } from 'rc-select/lib/BaseSelect';\n\nimport { TMultipleSelector, TSelectorItem } from './MultipleSelector.types';\n\nimport './MultipleSelector.style.scss';\n\n/**\n * @description MultipleSelector - компонент селектора с множественным выбором на основе AppSelect\n * Особенности компонента:\n * 1) Рендерятся кастомные теги для отображения в инпуте (TagRender) +\n * кастомный тег для отображения не уместившегося контента (MaxTagPlaceholder)\n * 2) Списки по умолчанию отсортированы по алфавиту, реализован поиск по опциям\n * 3) В начало списка всегда ставятся уже выбранные опции\n * 3) Добавлена логика работы с опцией \"выбрать все\":\n * при выборе данной опции будет выбран весь список,\n * при снятии данной опции будет снят весь список,\n * если ранее был выбран весь список и один из элементов удалить - снимется опция \"все\"\n * если выбрана данная опция, то в инпуте отображается только тег \"Все\"\n * в общем списке данная опция всегда будет расположена сверху\n * Чтобы заработало, необходимо передать в список опций данный вариант как {value: \"\"; label: 'Все'}\n * (обязательно пустая строка в value) и передать в компонент withSelectedAll=true\n * @param {TMultipleSelector} params\n * @return {React.FC}\n */\nexport const MultipleSelector: FC = (params) => {\n const {\n defaultValue,\n options,\n handleMultipleSelect,\n onScrollEnd,\n onSearch,\n placeholder = 'Выберите из списка',\n maxTagCount = 'responsive',\n maxLabelLength = 25,\n withSelectedAll,\n needSortOptionsBySelected = true,\n withCheckboxes = false,\n searchResults,\n currentPage = 1,\n isOptionsLoading,\n } = params;\n\n const [selectedList, setSelectedList] = useState(defaultValue);\n const [searchText, setSearchText] = useState(undefined);\n const [isDropdownOpened, setIsDropdownOpened] = useState(false);\n\n const hasSelectedAllOptions = withSelectedAll && selectedList.some(({ value }) => !value);\n const hasSearchResults = !!searchText && !isEmptyList(searchResults);\n\n useEffect(() => {\n const needUpdateList =\n (currentPage === 1 && isEmptyList(selectedList) && !hasSearchResults) ||\n (currentPage !== 1 && (hasSelectedAllOptions || !isDropdownOpened));\n\n if (!isOptionsLoading && needUpdateList) {\n setSelectedList(defaultValue);\n }\n }, [defaultValue, currentPage, isOptionsLoading]);\n\n const TagRender = (props: CustomTagProps) => {\n const { closable, onClose, label } = props;\n\n const onPreventMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n \n {label}\n \n );\n };\n const MaxTagPlaceholder = (values: string | any[]) => {\n return (\n + {values.length}\n );\n };\n\n const sortedOptions = useMemo(() => {\n const currentOptions = hasSearchResults ? searchResults : options;\n if (selectedList?.length && currentOptions?.length && needSortOptionsBySelected) {\n const selectedValuesIds: (string | number)[] = selectedList.map((item) => item.value);\n const filteredOptions = currentOptions.filter(\n (item) => !selectedValuesIds.includes(item.value as string) && !!item.value,\n );\n\n const selectedAllOption = withSelectedAll ? currentOptions.find((opt) => !opt.value) : undefined;\n const newArr = selectedAllOption\n ? [selectedAllOption, ...selectedList.filter(({ value }) => value)]\n : selectedList;\n\n filteredOptions.unshift(...newArr);\n\n return filteredOptions;\n }\n return searchText ? currentOptions?.filter(({ value }) => !!value) : currentOptions;\n }, [options, selectedList, searchText, needSortOptionsBySelected, searchResults]);\n\n const searchFilter = (input: string, option: { label: any }) =>\n (String(option?.label).toLowerCase() ?? '').includes(input.toLowerCase());\n\n const onDropdownChanged = useCallback(\n (isOpened: boolean) => {\n setIsDropdownOpened(isOpened);\n if (!isOpened) {\n if (isEmptyList(selectedList)) {\n handleMultipleSelect(options);\n setSelectedList(options);\n } else {\n handleMultipleSelect(selectedList);\n }\n }\n },\n [selectedList],\n );\n const onSearchLocal = (text: string) => {\n setSearchText(text);\n onSearch?.(text);\n };\n const onSelect = (val: TSelectorItem[]) => {\n if (withSelectedAll && !hasSearchResults) {\n let selectedOptions: TSelectorItem[] = [];\n const isAllJustSelected = !val[val.length - 1]?.value; //если только что выбрали \"все\" (он будет в конце списка)\n const isAllJustUnselected = selectedList.some(({ value }) => !value) && !val.some(({ value }) => !value);\n\n const filteredList = val.filter(({ value }) => !!value); //выбранный список без \"все\"\n const hasSelectedAll = val.some(({ value }) => !value); //есть ли среди выбранных \"все\"\n const isCheckedAllList = filteredList.length === options.length - 1; //выбран ли весь остальной список помимо \"все\"\n\n if (isAllJustUnselected) {\n selectedOptions = [];\n } else if (hasSelectedAll && !isCheckedAllList) {\n selectedOptions = isAllJustSelected ? options : filteredList;\n } else if (!hasSelectedAll && isCheckedAllList) {\n selectedOptions = options;\n } else {\n selectedOptions = val;\n }\n setSelectedList(selectedOptions);\n if (!isDropdownOpened) {\n handleMultipleSelect(selectedOptions);\n }\n } else {\n setSelectedList(val.filter(({ value }) => !!value));\n if (!isDropdownOpened) {\n handleMultipleSelect(val);\n }\n }\n };\n\n const onScroll = (event: Event) => {\n event.preventDefault();\n //@ts-ignore\n const target = event.target as HTMLDivElement;\n if (target.scrollTop + target.offsetHeight >= target.scrollHeight * 0.9) {\n onScrollEnd?.();\n }\n };\n const onClearLocal = () => {\n setSelectedList([]);\n handleMultipleSelect([]);\n onSearchLocal('');\n };\n const onDeselectLocal = (opt: string) => {\n if (opt) {\n setSelectedList((prev) => prev.filter(({ value }) => value !== opt));\n }\n };\n\n return (\n
\n !!value) : sortedOptions}\n showArrow\n maxTagTextLength={maxLabelLength}\n menuItemSelectedIcon={\n withCheckboxes\n ? ({ value }) => (\n null}\n defaultValue={selectedList.some((option) => option.value === value)}\n />\n )\n : undefined\n }\n tagRender={TagRender}\n maxTagPlaceholder={MaxTagPlaceholder}\n onClear={onClearLocal}\n onDeselect={onDeselectLocal}\n onChange={onSelect}\n onSearch={onSearchLocal}\n filterOption={onSearch ? () => sortedOptions : searchFilter}\n virtual={false}\n onPopupScroll={(event) => onScroll(event)}\n onDropdownChanged={onDropdownChanged}\n showSearch={false}\n loading={isOptionsLoading}\n dropdownRender={(menu) => (\n
\n e.stopPropagation()}\n />\n {menu}\n
\n )}\n />\n
\n );\n};\n","import React from 'react';\nimport { Progress } from 'antd';\nimport { ProgressProps } from 'antd/es/progress/progress';\n\nexport const ProgressBar: React.FC = (props) => {\n return ;\n};\n","import { ThemeConfig } from 'antd';\n\nexport const tableConfigProviderTheme: ThemeConfig = {\n token: {\n colorBgBase: 'transparent',\n colorBgContainer: 'transparent',\n colorBorderSecondary: 'transparent',\n colorBgTextActive: 'transparent',\n colorBgTextHover: 'transparent',\n colorTextHeading: '#252232',\n },\n};\n","import React, { useMemo } from 'react';\nimport { getUid } from '@frontend-modules/frontend-utils';\nimport { AppTable } from '@frontend-modules/ui-kit';\n\nimport { tableConfigProviderTheme } from './TableBorderless.config';\nimport { TTableBorderlessProps } from './TableBorderless.types';\n\nimport './TableBorderless.style.scss';\nexport const TableBorderless: React.FC = (props) => {\n const { columns, rows, align = 'center', isNeedNumbering = false, loading } = props;\n\n const renderColumns = useMemo(() => {\n return columns.map(({ title, name }) => {\n return {\n title,\n dataIndex: name,\n key: name,\n align,\n className: 'table-borderless__col',\n };\n });\n }, [columns, align]);\n const renderData = useMemo(() => {\n return rows.map((item) => {\n return {\n ...item,\n key: getUid(),\n };\n });\n }, [rows]);\n\n return (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { TTextButtonProps } from '@fsd-shared/ui-kit/TextButton/TextButton.types';\nimport { E_COLORS } from 'src-new/constants';\n\nimport './TextButton.style.scss';\n\nexport const TextButton: React.FC = (props) => {\n const {\n label,\n handleClick,\n wrapperClassName,\n textStyle = 'DesktopFontBody',\n color = E_COLORS.firm_blue_color,\n disabled = false,\n } = props;\n const history = useHistory();\n\n const handleClickLocal = () => {\n try {\n handleClick();\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms TextButton',\n MethodCatchOn: 'handleClick()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n return (\n \n \n
\n );\n};\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { ErrorsCaptureWrapperUi } from '@frontend-modules/error-handler';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { TUserAvatar } from '@fsd-shared/ui-kit/UserAvatar/UserAvatar.types';\nimport { E_COLORS } from 'src-new/constants';\n\nimport './UserAvatar.style.scss';\nexport const UserAvatar: React.FC = (props) => {\n const {\n imageUrl,\n initials,\n color = E_COLORS.firm_blue_color,\n size = 48,\n borderless = true,\n isOnline,\n onAvatarClick,\n } = props;\n\n const history = useHistory();\n\n const style = {\n background: `${color}15`,\n width: size,\n height: size,\n border: borderless ? 'none' : '1px solid #fff',\n };\n\n const onAvatarClickLocal = () => {\n try {\n onAvatarClick?.();\n } catch (err) {\n ErrorsCaptureWrapperUi({\n error: err,\n componentName: 'lms UserAvatar',\n MethodCatchOn: 'onAvatarClick()',\n PathCatchOn: history.location.pathname,\n });\n }\n };\n return (\n
\n
\n {imageUrl ? (\n {'preview'}\n ) : initials ? (\n 32 ? 'DesktopH4' : 'DesktopFootNotes'} color={color} />\n ) : (\n <>\n )}\n
\n {isOnline &&
}\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { UserAvatar } from '@fsd-shared/ui-kit';\nimport { getUserName } from '@fsd-shared/utils';\n\nimport { TUserInfo } from './UserInfo.types';\n\nimport './UserInfo.style.scss';\nexport const UserInfo: React.FC = (props): JSX.Element => {\n const { user, isShort = false, withLogo = true, onUserClick } = props;\n\n const mask = isShort ? 'SS:_:N:_:P' : 'SS:_:NN:_:PP';\n const nameInitials = getUserName({ name: user.firstName, surname: user.lastName }, 'N:S', true);\n const name = getUserName(\n { name: user.firstName, surname: user.lastName, patronymic: user.patronymic },\n mask,\n isShort,\n );\n\n return (\n
\n {withLogo && }\n \n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { UserAvatar } from '@fsd-shared/ui-kit';\nimport { getUserName } from '@fsd-shared/utils';\n\nimport { TUserListItem } from './UserListItem.types';\n\nimport './UserListItem.style.scss';\nexport const UserListItem: React.FC = (props): JSX.Element => {\n const { user, isShort = false, withLogo = true } = props;\n\n const mask = isShort ? 'SS:_:N:_:P' : 'SS:_:NN:_:PP';\n const nameInitials = getUserName({ name: user.firstName, surname: user.lastName }, 'N:S', true);\n const name = getUserName(\n { name: user.firstName, surname: user.lastName, patronymic: user.patronymic },\n mask,\n isShort,\n );\n\n return (\n
\n {withLogo && }\n \n
\n );\n};\n","import { useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { HARD_MODAL_ENUMS, URL_SEARCH_ENUM } from 'src-new/components/layouts/Modals/Modals.config';\n\nimport { TPopupsState, TRowPopup } from './Modals.types';\nlet timeout: NodeJS.Timeout;\n/**\n * @description - хук получения состояния сложной модалки\n */\nexport const useGetPopupsState = (): TPopupsState => {\n const { search } = useLocation();\n\n const [rawPopups, setRawPopups] = useState([]);\n\n const [mountedPopups, setMountedPopups] = useState(rawPopups);\n\n useEffect(() => {\n const query = new URLSearchParams(search);\n const queryParam = query.get(URL_SEARCH_ENUM.MODALS);\n const queryList = queryParam ? JSON.parse(queryParam) : [];\n const currentPopups = queryList?.map((item: TRowPopup) => {\n //@ts-ignore\n if (item?.type && HARD_MODAL_ENUMS[item.type.toUpperCase()]) {\n return item;\n }\n });\n setRawPopups(currentPopups);\n }, [search]);\n\n useEffect(() => {\n if (rawPopups) {\n if (timeout) {\n clearTimeout(timeout);\n }\n setMountedPopups(rawPopups);\n } else {\n timeout = setTimeout(() => {\n setMountedPopups([]);\n }, 300);\n }\n }, [rawPopups]);\n\n useEffect(() => {\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, []);\n\n return {\n mountedPopups,\n popups: rawPopups,\n };\n};\n","export enum FileTypes {\n TEMPLATE = 'template',\n COMMON = 'common',\n}\n\nexport interface IFile {\n id: number;\n title: string;\n fileExtension: string;\n fileUrl: string;\n isAvailableToStudents: boolean;\n shouldUseOnConference: boolean;\n}\n\nexport interface IUploadedFile {\n id: number;\n file: string;\n lessonId: number | null;\n materialId: number | null;\n type: FileTypes;\n}\n","import { getApiRequest } from 'api';\nimport { LessonDetails } from 'types/lesson';\n\nexport const getLessonDetails = (id: number): Promise => {\n return getApiRequest(`/lesson/${id}/`);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { ResponseLesson } from 'types/lesson';\n\nexport const getLessons = (topicId?: number, ids?: number[]): Promise => {\n const getUrl = `/lesson/${topicId === undefined ? '' : `?topic=${topicId}`}${\n ids?.length && topicId ? `&include_ids=${ids.join(',')}` : ''\n }`;\n return api\n .get>(getUrl)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { postApiRequest } from 'api';\nimport { THandleLessonProps, THandleLessonResponse } from 'types/lesson';\n\nexport const handleLesson = (params: THandleLessonProps): Promise => {\n return postApiRequest('/lesson/handle/', params);\n};\n","import { message } from 'antd';\n\nimport { TMessageProps } from './setMessage.types';\n\nconst messageStyle = {\n display: 'flex',\n justifyContent: 'flex-end',\n};\n\nexport const setMessage = (props: TMessageProps): void => {\n const { text, status, duration, maxCount = 5, key } = { ...props };\n\n if (maxCount) {\n message.config({\n maxCount: maxCount,\n });\n }\n\n switch (status) {\n case 'success':\n void message.success({\n content: text,\n style: messageStyle,\n duration: duration || 1.5,\n key,\n });\n break;\n case 'error':\n void message.error({\n content: text,\n style: messageStyle,\n duration: duration || 1.5,\n key,\n });\n break;\n case 'warning':\n void message.warning({\n content: text,\n style: messageStyle,\n duration: duration || 1.5,\n key,\n });\n break;\n case 'loading':\n void message.loading({\n content: text,\n style: messageStyle,\n duration: duration || 1.5,\n key,\n });\n break;\n default:\n case 'info':\n void message.info({\n content: text,\n style: messageStyle,\n duration: duration || 1.5,\n key,\n });\n break;\n }\n};\n","export const ssoDomainUrl = '/sso/v1';\nexport const ssoLoginUrl = `${ssoDomainUrl}/token/`;\nexport const ssoLogoutAllUrl = `${ssoDomainUrl}/token/logout-all/`;\nexport const ssoLogoutUrl = `${ssoDomainUrl}/token/logout/`;\nexport const ssoRefreshUrl = `${ssoDomainUrl}/token/refresh/`;\nexport const ssoVerifyUrl = `${ssoDomainUrl}/token/verify/`;\nexport const ssoResetPasswordUrl = `${ssoDomainUrl}/password-reset/`;\nexport const ssoResetPasswordConfirmUrl = `${ssoDomainUrl}/password-reset/confirm/`;\nexport const ssoResetPasswordValidateUrl = `${ssoDomainUrl}/password-reset/validate-token/`;\n\nexport const NO_TOKEN_SSO_PATHS = [\n ssoLoginUrl,\n ssoLogoutAllUrl,\n ssoLogoutUrl,\n ssoRefreshUrl,\n ssoVerifyUrl,\n ssoResetPasswordUrl,\n ssoResetPasswordConfirmUrl,\n ssoResetPasswordValidateUrl,\n];\n","import { deleteApiRequest } from 'api';\n\nexport const deleteEducationalPlan = (id: number): Promise => {\n return deleteApiRequest(`/educational-plan/delete/${id}/`).then(() => id);\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteEducationalPlanItem = (params: { data: { id: number[] } }): Promise => {\n return deleteApiRequest(`/educational-plan-item/bulk-delete/`, params);\n};\n","import { patchApiRequest } from 'api';\nimport { ResponseEducationalPlanItem } from 'types/educationalPlan';\n\nimport { PostEducationalPlanItem } from './postEducationalPlan';\n\nexport interface PatchItemParams {\n educationalPlanItems: PostEducationalPlanItem[];\n}\n\nexport const editEducationalPlanItem = (params: PatchItemParams): Promise => {\n return patchApiRequest(`/educational-plan-item/bulk-update/`, params.educationalPlanItems);\n};\n","import { getApiRequest } from 'api';\nimport { EducationalPlan } from 'types/educationalPlan';\n\nexport const getAllEducationalPlans = (): Promise => {\n return getApiRequest('/educational-plan/');\n};\n","import { getApiRequest } from 'api';\nimport { ResponseEducationPlan } from 'types/educationalPlan';\n\nexport const getEducationalPlan = (id: number): Promise => {\n return getApiRequest(`/educational-plan/${id}/`);\n};\n","import { patchApiRequest } from 'api';\nimport { ResponseEducationPlan } from 'types/educationalPlan';\n\nimport { PostEducationalPlan } from './postEducationalPlan';\n\nexport const patchEducationalPlan = ({\n id,\n ...params\n}: PostEducationalPlan & { ordering: number[] }): Promise => {\n return patchApiRequest(`/educational-plan/update/${String(id)}/`, params);\n};\n","import { postApiRequest } from 'api';\nimport { EduCourseType, ResponseEducationPlan } from 'types/educationalPlan';\n\nexport interface PostEducationalPlanItem {\n id?: number;\n educationalPlan?: number;\n course: number;\n type: EduCourseType;\n yearLessonsCount: number;\n weekLessonsCount: number;\n yearOnlineLessonsCount: number;\n weekOnlineLessonsCount: number;\n yearFlowLecturesCount: number;\n weekFlowLecturesCount: number;\n evaluationType: string;\n takeIntoAccount: boolean;\n}\n\nexport interface PostEducationalPlan {\n id?: number;\n title: string;\n parallel: number;\n calendarPlan: number;\n freeHours: number;\n minHours: number;\n educationalPlanItems?: PostEducationalPlanItem[];\n}\n\nexport const postEducationalPlan = (params: PostEducationalPlan): Promise => {\n return postApiRequest('/educational-plan/create/', params);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\ninterface Author {\n id: number;\n firstName: string;\n lastName: string;\n isTeacher: boolean;\n isCurator: boolean;\n isMethodist: boolean;\n isStudent: boolean;\n isPrincipal: boolean;\n}\n\nexport interface Note {\n id: number;\n author: Author;\n text: string;\n timestamp: string;\n student: number;\n}\n\nexport interface PostNoteResponse {\n id: number;\n author: number;\n text: string;\n timestamp: string;\n student: number;\n}\n\nexport interface CreateNote {\n text: string;\n student: number;\n}\n\ninterface ResponsePatchedNote {\n id?: number;\n author: number;\n text: string;\n timestamp: string;\n student: number;\n}\n\nexport interface DeleteNote {\n id: number;\n}\n\nexport interface EditNote {\n id: number;\n text: string;\n student: number;\n}\n\nexport const getNotes = async (studentId: number): Promise => {\n return await api\n .get, AxiosResponse>(`/profile-note/?student=${studentId}`)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const postNote = (values: CreateNote): Promise => {\n return api\n .post, AxiosResponse>(`/profile-note/create/`, {\n text: values.text,\n student: values.student,\n })\n .then((res) => res?.data)\n .then(({ author, ...note }) => ({\n ...note,\n author: {\n id: author,\n firstName: '',\n isCurator: true,\n isMethodist: true,\n isPrincipal: true,\n isStudent: true,\n isTeacher: true,\n lastName: '',\n },\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const deleteNote = (id: number): Promise<{ id: string }> => {\n return api\n .delete, AxiosResponse<{ id: string }>>(`/profile-note/delete/${id}/`)\n .then(() => ({\n id: String(id),\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const patchNote = (values: EditNote): Promise => {\n return api\n .patch, AxiosResponse>(`/profile-note/update/${values.id}/`, {\n text: values.text,\n student: values.student,\n })\n .then((res) => ({\n id: values.id,\n ...res?.data,\n }))\n .then(({ author, ...note }) => ({\n ...note,\n author: {\n id: author,\n firstName: '',\n isCurator: true,\n isMethodist: true,\n isPrincipal: true,\n isStudent: true,\n isTeacher: true,\n lastName: '',\n },\n }))\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { CreateNote, deleteNote, EditNote, getNotes, patchNote, postNote } from 'api/services/notes';\n\nexport const getNotesAction = createAsyncThunk('note/getNotes', async (studentId: number) => {\n return await getNotes(studentId);\n});\n\nexport const createNoteAction = createAsyncThunk('note/createNote', async (values: CreateNote) => {\n return postNote(values);\n});\n\nexport const changeNoteAction = createAsyncThunk('note/changeNote', async (values: EditNote) => {\n return await patchNote(values);\n});\n\nexport const deleteNoteAction = createAsyncThunk('note/deleteNote', async (id: number) => {\n const result = await deleteNote(id);\n return { ...result, id };\n});\n","import { useLocation } from 'react-router-dom';\n\nexport const useQuery = (): URLSearchParams => {\n return new URLSearchParams(useLocation().search);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n addQuestionsBlock,\n addSingleQuestion,\n addTask,\n deleteQuestionsBlock,\n deleteTask,\n TNormalizedQuestion,\n} from 'src-new/components/lesson-task';\nimport { replaceAssignmentValue } from 'src-new/utils';\nimport {\n addCreatedQuestionAction,\n createEmptyTaskQuestionAction,\n createLessonTaskAction,\n deleteBlockAction,\n deleteTaskQuestionAction,\n getAssignedTasksAction,\n getLessonDataAction,\n getQuestionDetailsAction,\n getQuestionsBySearchAction,\n getSubjectDataByIdAction,\n getSubjectsDataAction,\n getTaskDataAction,\n setOpenedQuestionIdAction,\n setQuestionsStateAction,\n setSelectedBlockAction,\n updateLessonTaskAction,\n} from 'store/actions/lessonTask';\nimport { FetchStatus } from 'types/api';\nimport {\n IAssignmentItem,\n ITaskData,\n LessonDetails,\n QueryParams,\n TAssignedQuestion,\n TAssignedQuestions,\n TCodifierSubjectData,\n TResponseQuestionDetailed,\n TSearchBlock,\n TSearchResults,\n TSelectedBlock,\n TSingleQuestion,\n} from 'types/lessonTask';\n\nexport interface LessonTaskState {\n getStatusLessons: FetchStatus;\n getStatusQuestion: FetchStatus;\n getQuestionsBySearchStatus: FetchStatus;\n getAssignedTasksListStatus: FetchStatus;\n createLessonTaskStatus: FetchStatus;\n updateLessonTaskStatus: FetchStatus;\n searchTreeStatus: FetchStatus;\n needChangeCreateToEdit?: number;\n taskData: IAssignmentItem | undefined;\n newTaskData: ITaskData;\n questionsList: TNormalizedQuestion[];\n assignedTasksList: TAssignedQuestions | undefined;\n assignedTasksListInitial: TAssignedQuestions | undefined;\n assignedTaskListLastVersions: TAssignedQuestions | undefined;\n searchResults: TSearchResults | undefined;\n selectedBlock: TSelectedBlock | undefined;\n filtersData: QueryParams | undefined;\n subjectsTree: TCodifierSubjectData[];\n lessonDetails: {\n [lessonId: number]: LessonDetails;\n };\n openedQuestionId: number | undefined;\n isSearchQuestionsIsAllowed: boolean;\n questionDetails: TResponseQuestionDetailed | undefined;\n error: unknown;\n}\n\nexport const initialState: LessonTaskState = {\n getStatusLessons: FetchStatus.INITIAL,\n getStatusQuestion: FetchStatus.INITIAL,\n getQuestionsBySearchStatus: FetchStatus.INITIAL,\n getAssignedTasksListStatus: FetchStatus.INITIAL,\n createLessonTaskStatus: FetchStatus.INITIAL,\n updateLessonTaskStatus: FetchStatus.INITIAL,\n searchTreeStatus: FetchStatus.INITIAL,\n lessonDetails: {},\n assignedTasksList: undefined,\n assignedTasksListInitial: undefined,\n assignedTaskListLastVersions: undefined,\n filtersData: undefined,\n selectedBlock: undefined,\n searchResults: undefined,\n subjectsTree: [],\n needChangeCreateToEdit: undefined,\n taskData: undefined,\n newTaskData: {\n title: '',\n description: '',\n isTemplate: false,\n selectedTypeId: 0,\n },\n questionsList: [],\n isSearchQuestionsIsAllowed: false,\n questionDetails: undefined,\n openedQuestionId: undefined,\n error: null,\n};\n\nconst lessonTaskSlice = createSlice>({\n name: 'LessonTask',\n initialState,\n reducers: {\n resetOpenedQuestionState(state) {\n state.questionDetails = undefined;\n state.openedQuestionId = undefined;\n },\n resetQuestionsState(state) {\n state.searchResults = undefined;\n state.assignedTasksList = undefined;\n state.taskData = undefined;\n state.filtersData = undefined;\n state.needChangeCreateToEdit = undefined;\n state.isSearchQuestionsIsAllowed = false;\n state.assignedTaskListLastVersions = undefined;\n state.getAssignedTasksListStatus = FetchStatus.INITIAL;\n state.getStatusLessons = FetchStatus.INITIAL;\n state.createLessonTaskStatus = FetchStatus.INITIAL;\n state.updateLessonTaskStatus = FetchStatus.INITIAL;\n },\n resetToLastVersion(state) {\n state.filtersData = undefined;\n state.assignedTasksList = state.assignedTaskListLastVersions;\n state.searchResults = undefined;\n },\n setLastVersion(state) {\n state.filtersData = undefined;\n state.assignedTaskListLastVersions = state.assignedTasksList;\n },\n setNewTaskData(state, { payload }) {\n state.newTaskData = payload\n ? {\n ...state.newTaskData,\n ...payload,\n }\n : {\n title: '',\n description: '',\n isTemplate: false,\n selectedTypeId: 0,\n };\n },\n setQuestionsList(state, { payload }) {\n state.questionsList = payload;\n },\n setSearchQuestionsIsAllowed(state) {\n state.isSearchQuestionsIsAllowed = true;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(setOpenedQuestionIdAction, (state, { payload }) => {\n state.openedQuestionId = payload;\n });\n builder.addCase(deleteTaskQuestionAction, (state, { payload }) => {\n state.assignedTasksList = deleteTask(payload, state.assignedTasksList);\n state.assignedTaskListLastVersions = state.assignedTasksList;\n });\n builder.addCase(createEmptyTaskQuestionAction, (state, { payload }) => {\n const { questionsNum, saveIntoLastVersion = false } = payload;\n state.assignedTasksList = addTask({\n position: questionsNum,\n task: {} as TAssignedQuestion,\n currentState: state.assignedTasksList,\n });\n if (saveIntoLastVersion) {\n state.assignedTaskListLastVersions = state.assignedTasksList;\n }\n });\n builder.addCase(addCreatedQuestionAction, (state, { payload }) => {\n const { question, questionNum, assignment } = payload;\n\n const filtersObj = {\n id: question.id,\n assignment: assignment,\n questionNumber: questionNum,\n single: true,\n quantity: 1,\n filters: {\n id: question.id,\n },\n };\n state.assignedTasksList = addSingleQuestion({\n position: questionNum,\n question: { ...filtersObj, questionContent: question } as TSingleQuestion,\n currentState: state.assignedTasksList,\n });\n });\n builder.addCase(setQuestionsStateAction, (state, { payload }) => {\n const { left, right, questionNum } = payload;\n\n if (right) {\n state.assignedTasksList = addTask({\n position: questionNum,\n task: right,\n currentState: state.assignedTasksList,\n });\n }\n if (left) {\n state.searchResults = {\n ...state.searchResults,\n [questionNum]: left.searchBlocksList,\n };\n }\n\n //Если во время изменения стейта активен для редактирования какой-либо блок\n if (state.selectedBlock) {\n const { side, number, block } = state.selectedBlock;\n\n const targetBlock =\n side === 'left'\n ? state.searchResults?.[questionNum].find(({ id }) => id === block.id)\n : state.assignedTasksList?.[number + 1].searchBlocksList.find(({ id }) => id === block.id);\n\n if (targetBlock) {\n state.selectedBlock = {\n ...state.selectedBlock,\n block: targetBlock,\n };\n }\n }\n });\n builder.addCase(setSelectedBlockAction, (state, { payload }) => {\n state.selectedBlock = payload;\n });\n builder.addCase(deleteBlockAction, (state, { payload }) => {\n const { questionNum, selectedBlock } = payload;\n const { side, number } = selectedBlock;\n\n if (side === 'left' && state.searchResults?.[questionNum]) {\n state.searchResults = {\n ...state.searchResults,\n [questionNum]: [\n ...state.searchResults?.[questionNum]?.slice(0, number - 1),\n ...state.searchResults?.[questionNum]?.slice(number),\n ],\n };\n } else if (state.assignedTasksList?.[questionNum]) {\n state.assignedTasksList = deleteQuestionsBlock({\n position: questionNum,\n blockPosition: number,\n currentState: state.assignedTasksList,\n });\n }\n });\n builder\n .addCase(getQuestionDetailsAction.pending, (state) => {\n state.getStatusQuestion = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getQuestionDetailsAction.fulfilled, (state, { payload }) => {\n state.getStatusQuestion = FetchStatus.FETCHED;\n state.questionDetails = payload;\n state.error = null;\n })\n .addCase(getQuestionDetailsAction.rejected, (state, { error }) => {\n state.getStatusQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getLessonDataAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonDataAction.fulfilled, (state, { payload }) => {\n state.getStatusLessons = FetchStatus.FETCHED;\n state.lessonDetails[payload.id] = payload;\n state.error = null;\n })\n .addCase(getLessonDataAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getTaskDataAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getTaskDataAction.fulfilled, (state, { payload }) => {\n state.getStatusLessons = FetchStatus.FETCHED;\n state.taskData = payload;\n state.error = null;\n })\n .addCase(getTaskDataAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getAssignedTasksAction.pending, (state) => {\n state.getAssignedTasksListStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAssignedTasksAction.fulfilled, (state, { payload }) => {\n state.getAssignedTasksListStatus = FetchStatus.FETCHED;\n state.assignedTasksList = payload;\n state.assignedTasksListInitial = payload;\n state.assignedTaskListLastVersions = payload;\n state.error = null;\n })\n .addCase(getAssignedTasksAction.rejected, (state, { error }) => {\n state.getAssignedTasksListStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getQuestionsBySearchAction.pending, (state) => {\n state.getQuestionsBySearchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getQuestionsBySearchAction.fulfilled, (state, { payload }) => {\n const { questionsList, filters, assignment, questionNum, selectedBlock } = payload;\n state.getQuestionsBySearchStatus = FetchStatus.FETCHED;\n state.filtersData = filters;\n const filtersObj = {\n assignment: assignment,\n questionNumber: questionNum,\n single: false,\n quantity: questionsList.length,\n filters: {\n ...filters,\n },\n };\n\n const res: TSearchBlock = {\n ...filtersObj,\n questionsContentList: questionsList.map((item) => {\n return {\n ...filtersObj,\n questionContent: item,\n };\n }),\n };\n if (selectedBlock) {\n const { side, number, block } = selectedBlock;\n\n if (side === 'left' && state.searchResults?.[questionNum]) {\n state.searchResults = {\n ...state.searchResults,\n [questionNum]: [\n ...state.searchResults[questionNum].slice(0, number - 1),\n res,\n ...state.searchResults[questionNum].slice(number),\n ],\n };\n } else if (state.assignedTasksList?.[questionNum]) {\n state.assignedTasksList = addQuestionsBlock({\n position: questionNum,\n blockPosition: number,\n block: { ...res, id: block.id },\n currentState: state.assignedTasksList,\n });\n }\n } else {\n state.searchResults = {\n ...state.searchResults,\n [questionNum]: state.searchResults?.[questionNum]\n ? [...state.searchResults?.[questionNum], res]\n : [res],\n };\n }\n\n state.error = null;\n })\n .addCase(getQuestionsBySearchAction.rejected, (state, { error }) => {\n state.getQuestionsBySearchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(createLessonTaskAction.pending, (state) => {\n state.createLessonTaskStatus = FetchStatus.FETCHING;\n state.needChangeCreateToEdit = undefined;\n state.error = null;\n })\n .addCase(createLessonTaskAction.fulfilled, (state, { payload }) => {\n const { assignment, err } = payload;\n if (err) {\n state.error = { message: err };\n state.createLessonTaskStatus = FetchStatus.ERROR;\n state.needChangeCreateToEdit = assignment.id;\n state.assignedTasksList = replaceAssignmentValue(\n state.assignedTasksList,\n assignment.id,\n 'assignedQuestions',\n ) as TAssignedQuestion;\n state.searchResults = replaceAssignmentValue(\n state.searchResults,\n assignment.id,\n 'searchResults',\n ) as TSearchResults;\n } else {\n state.createLessonTaskStatus = FetchStatus.FETCHED;\n }\n })\n .addCase(createLessonTaskAction.rejected, (state, { error }) => {\n state.createLessonTaskStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(updateLessonTaskAction.pending, (state) => {\n state.updateLessonTaskStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(updateLessonTaskAction.fulfilled, (state, { payload }) => {\n state.updateLessonTaskStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(updateLessonTaskAction.rejected, (state, { error }) => {\n state.updateLessonTaskStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getSubjectsDataAction.pending, (state) => {\n state.searchTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getSubjectsDataAction.fulfilled, (state, { payload }) => {\n state.searchTreeStatus = FetchStatus.FETCHED;\n state.subjectsTree = payload.map((item) => {\n return {\n id: item.id,\n title: item.title,\n };\n });\n state.error = null;\n })\n .addCase(getSubjectsDataAction.rejected, (state, { error }) => {\n state.searchTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getSubjectDataByIdAction.pending, (state) => {\n state.searchTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getSubjectDataByIdAction.fulfilled, (state, { payload }) => {\n const { data, id } = payload;\n state.searchTreeStatus = FetchStatus.FETCHED;\n\n const newTree = state.subjectsTree.length\n ? state.subjectsTree.map((item) => {\n if (+id === +item.id) {\n return { ...data[0] };\n }\n return { ...item };\n })\n : data;\n\n state.subjectsTree = [...newTree];\n state.error = null;\n })\n .addCase(getSubjectDataByIdAction.rejected, (state, { error }) => {\n state.searchTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\nexport const lessonTaskReducer = lessonTaskSlice.reducer;\nexport const resetOpenedQuestionState = lessonTaskSlice.actions.resetOpenedQuestionState as ActionCreatorWithoutPayload;\nexport const resetQuestionsState = lessonTaskSlice.actions.resetQuestionsState as ActionCreatorWithoutPayload;\nexport const resetToLastVersionState = lessonTaskSlice.actions.resetToLastVersion as ActionCreatorWithoutPayload;\nexport const setLastVersionState = lessonTaskSlice.actions.setLastVersion as ActionCreatorWithoutPayload;\nexport const setSearchQuestionsIsAllowed = lessonTaskSlice.actions\n .setSearchQuestionsIsAllowed as ActionCreatorWithoutPayload;\n\nexport const { setNewTaskData, setQuestionsList } = lessonTaskSlice.actions;\n","import { getApiRequest } from 'api';\nimport { Parallel } from 'types/parallel';\nimport { LessonTypes } from 'types/schedule';\n\nexport interface LessonScheduleResponse {\n id: number;\n lesson: number;\n type: LessonTypes;\n datetimeStart?: string;\n datetimeEnd?: string;\n parallels: Parallel[];\n}\n\nexport const getLessonSchedule = async (\n lessonId: number[],\n courseGroupId?: number,\n): Promise => {\n return await getApiRequest(`/lesson-schedule/`, {\n params: {\n lesson_ids: lessonId.join(','),\n course_group: courseGroupId,\n },\n });\n};\n","import { getApiRequest } from 'api';\n\ntype Params = {\n lesson_schedule?: number;\n event_room?: number;\n assembly?: number;\n};\n\nexport const getMeetingJoinRedirect = (params: Params): Promise<{ link?: string; block: boolean }> => {\n return getApiRequest('meeting/join/', { params });\n};\n","import { postApiRequest } from 'api';\nimport { THandleLessonScheduleProps, THandleLessonScheduleResponse } from 'types/lessonSchedules';\n\nexport const handleLessonSchedule = (params: THandleLessonScheduleProps): Promise => {\n return postApiRequest('/lesson-schedule/handle/', params);\n};\n","import { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\n\nexport const normalizeAnswerAttempt = (attempts: AnswerAttemptPostResponse[]): AnswerAttemptPostResponse[] => {\n return [...attempts]\n .map((attempt) => {\n return {\n ...attempt,\n answers: attempt.answers.map((answer) => {\n return {\n ...answer,\n files: [...(answer.files ?? []).sort((a, b) => a.id - b.id)],\n };\n }),\n };\n })\n .sort((a, b) => a.id - b.id);\n};\n","import {\n ActionCreatorWithoutPayload,\n ActionCreatorWithPayload,\n createSlice,\n PayloadAction,\n SliceCaseReducers,\n} from '@reduxjs/toolkit';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport moment from 'moment';\nimport {\n createAttemptAction,\n createQuestionFileAction,\n getAnswerAttemptAction,\n getAnswerAttemptByProgressAction,\n patchAnswerAttemptAction,\n postEvaluateAction,\n updateAttemptDraft,\n} from 'store/actions/answerAttempt';\nimport { normalizeAnswerAttempt } from 'store/normalizers/answerAttempt';\nimport {\n AnswerAttemptData,\n EssayAnswerData,\n InsertWordsAnswerData,\n TestAnswerData,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\nimport { FetchStatus } from 'types/api';\n\nimport { getAttemptQuantityInfo } from 'utils/answerAttempt';\n\nexport type QuestionFiles = {\n [questionId: number]: {\n files: {\n id: number;\n index: number;\n }[];\n };\n};\n\nexport interface AnswerAttemptsState {\n postAnswerAttemptStatus: FetchStatus;\n patchAnswerAttemptStatus: FetchStatus;\n createQuestionFileStatus: FetchStatus;\n patchDraftStatus: FetchStatus;\n postEvaluateStatus: FetchStatus;\n fetchStatus: FetchStatus;\n createAttemptStatus: FetchStatus;\n data: AnswerAttemptPostResponse[] | null;\n error: unknown;\n lastAttempt?: number;\n attemptsQuantity?: number;\n questionFiles: QuestionFiles;\n draftAttempId?: number;\n draftData?: AnswerAttemptData & { id?: number };\n draftTime?: string;\n}\n\nconst initialState: AnswerAttemptsState = {\n postAnswerAttemptStatus: FetchStatus.INITIAL,\n patchAnswerAttemptStatus: FetchStatus.INITIAL,\n createQuestionFileStatus: FetchStatus.INITIAL,\n postEvaluateStatus: FetchStatus.INITIAL,\n patchDraftStatus: FetchStatus.INITIAL,\n fetchStatus: FetchStatus.INITIAL,\n createAttemptStatus: FetchStatus.INITIAL,\n questionFiles: {},\n data: null,\n error: null,\n};\n\ninterface DeleteFileParams {\n questionId: number;\n fileId: number;\n}\n\ninterface DraftParams {\n attemptId?: number;\n assignmentProgress: number;\n answers: {\n question: number;\n file?: File[];\n files?: number[];\n data: TextAnswerData | TrueFalseAnswerData | EssayAnswerData | InsertWordsAnswerData | TestAnswerData;\n isEssay?: boolean | undefined;\n }[];\n}\n\nconst answerAttemptsSlice = createSlice>({\n name: 'answersAttempts',\n initialState,\n reducers: {\n resetAnswerAttemptsState() {\n return initialState;\n },\n resetAnswerAttemptsStatus(state) {\n state.fetchStatus = FetchStatus.INITIAL;\n },\n resetAnswerAttemptsData(state) {\n state.data = [];\n state.error = null;\n state.postAnswerAttemptStatus = FetchStatus.INITIAL;\n },\n deleteQuestionFile(state, action: PayloadAction) {\n if (state.questionFiles[action.payload.questionId]?.files) {\n state.questionFiles[action.payload.questionId].files = state.questionFiles[\n action.payload.questionId\n ].files.filter(({ id }) => id !== action.payload.fileId);\n }\n },\n saveDraft(state, { payload }: PayloadAction) {\n const { attemptId, answers, assignmentProgress } = payload;\n\n state.draftData = {\n assignmentProgress,\n id: attemptId ? attemptId : state.draftData?.id,\n answers: answers.map(({ question, data, files = [] }) => {\n return {\n question,\n data,\n files: Array.from(\n new Set([\n ...((data as EssayAnswerData)?.file ?? []).map(Number),\n ...files,\n ...(state.questionFiles[question]?.files ?? []).map(({ id }) => id),\n ]),\n ),\n };\n }),\n };\n state.patchDraftStatus = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(postEvaluateAction.pending, (state) => {\n state.postEvaluateStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(postEvaluateAction.fulfilled, (state) => {\n state.postEvaluateStatus = FetchStatus.FETCHED;\n state.data = [];\n state.draftAttempId = undefined;\n state.draftData = undefined;\n state.draftTime = undefined;\n state.patchDraftStatus = FetchStatus.INITIAL;\n state.fetchStatus = FetchStatus.INITIAL;\n state.error = null;\n })\n .addCase(postEvaluateAction.rejected, (state, { error }) => {\n state.postEvaluateStatus = FetchStatus.ERROR;\n state.data = null;\n state.error = error;\n })\n .addCase(getAnswerAttemptAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAnswerAttemptAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.data = normalizeAnswerAttempt(payload);\n const { lastAttempt, attemptsQuantity } = getAttemptQuantityInfo(payload);\n\n state.lastAttempt = lastAttempt;\n state.attemptsQuantity = attemptsQuantity;\n state.error = null;\n })\n .addCase(getAnswerAttemptAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.data = [];\n state.error = error;\n })\n .addCase(getAnswerAttemptByProgressAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAnswerAttemptByProgressAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.data = normalizeAnswerAttempt(payload);\n const { lastAttempt, attemptsQuantity } = getAttemptQuantityInfo(payload);\n\n state.lastAttempt = lastAttempt;\n const lastAttemptData = state.data?.[lastAttempt];\n if (lastAttemptData?.isDraft) {\n state.draftTime = moment(lastAttemptData.dateUpdate).format('LT');\n state.draftAttempId = lastAttemptData.id;\n } else {\n state.draftTime = undefined;\n state.draftAttempId = undefined;\n }\n state.attemptsQuantity = attemptsQuantity;\n state.error = null;\n })\n .addCase(getAnswerAttemptByProgressAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.data = [];\n state.error = error;\n })\n .addCase(createQuestionFileAction.pending, (state) => {\n state.createQuestionFileStatus = FetchStatus.FETCHING;\n })\n .addCase(createQuestionFileAction.fulfilled, (state, { payload }) => {\n state.createQuestionFileStatus = FetchStatus.FETCHED;\n\n if (state.questionFiles[payload.questionId]?.files) {\n state.questionFiles[payload.questionId].files = [\n ...state.questionFiles[payload.questionId].files,\n { id: payload.file.id, index: payload.index },\n ];\n } else {\n state.questionFiles[payload.questionId] = {\n files: [{ id: payload.file.id, index: payload.index }],\n };\n }\n })\n .addCase(createQuestionFileAction.rejected, (state, { error }) => {\n state.createQuestionFileStatus = FetchStatus.ERROR;\n })\n .addCase(patchAnswerAttemptAction.pending, (state) => {\n state.patchAnswerAttemptStatus = FetchStatus.FETCHING;\n })\n .addCase(patchAnswerAttemptAction.fulfilled, (state) => {\n state.patchAnswerAttemptStatus = FetchStatus.FETCHED;\n state.questionFiles = initialState.questionFiles;\n })\n .addCase(createAttemptAction.rejected, (state, { error }) => {\n state.createAttemptStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(createAttemptAction.pending, (state) => {\n state.createAttemptStatus = FetchStatus.FETCHING;\n })\n .addCase(createAttemptAction.fulfilled, (state, { payload }) => {\n state.createAttemptStatus = FetchStatus.FETCHED;\n })\n .addCase(updateAttemptDraft.pending, (state) => {\n if (state.draftData) {\n state.patchDraftStatus = FetchStatus.FETCHING;\n }\n })\n .addCase(updateAttemptDraft.fulfilled, (state, { payload }) => {\n if (payload && state.draftData) {\n state.patchDraftStatus = FetchStatus.FETCHED;\n state.error = null;\n state.draftData = {\n ...state.draftData,\n id: payload.id,\n };\n state.draftTime = moment(payload.dateUpdate).format('LT');\n state.draftAttempId = payload.id;\n }\n })\n .addCase(updateAttemptDraft.rejected, (state) => {\n state.patchDraftStatus = FetchStatus.ERROR;\n });\n },\n});\n\nconst resetAnswerAttemptsData = answerAttemptsSlice.actions.resetAnswerAttemptsData as ActionCreatorWithoutPayload;\nconst resetAnswerAttemptsState = answerAttemptsSlice.actions.resetAnswerAttemptsState as ActionCreatorWithoutPayload;\nconst resetAnswerAttemptsStatus = answerAttemptsSlice.actions.resetAnswerAttemptsStatus as ActionCreatorWithoutPayload;\nconst deleteQuestionFile = answerAttemptsSlice.actions.deleteQuestionFile as ActionCreatorWithPayload;\nconst saveDraft = answerAttemptsSlice.actions.saveDraft as ActionCreatorWithPayload;\n\nexport { deleteQuestionFile, resetAnswerAttemptsData, resetAnswerAttemptsState, resetAnswerAttemptsStatus, saveDraft };\nexport const answerAttemptsReducer = answerAttemptsSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n FileLink,\n HistoryQuestion,\n PostQuestionResponse,\n ResponseQuestion,\n ResponseQuestionDetailed,\n} from 'api/services/questionBank';\nimport {\n deleteQuestionAction,\n getAssignmentProgressQuestionsAction,\n getHistoryQuestionAction,\n getQuestionDetailedAction,\n getQuestionsAction,\n partialUpdateQuestionAction,\n patchQuestionAction,\n postQuestionAction,\n postQuestionFileAction,\n refreshStatusesQuestions,\n setMaterialIdToEdit,\n} from 'store/actions/questionBank';\nimport { FetchStatus } from 'types/api';\n\nexport interface QuestionsState {\n fetchStatusQuestions: FetchStatus;\n fetchStatusDetailedQuestion: FetchStatus;\n fetchHistoryStatus: FetchStatus;\n postStatusQuestion: FetchStatus;\n patchStatusQuestion: FetchStatus;\n partialUpdateStatusQuestion: FetchStatus;\n deleteStatusQuestion: FetchStatus;\n postStatusQuestionFile: FetchStatus;\n patchStatusQuestionFile: FetchStatus;\n questions: ResponseQuestion[];\n detailedQuestion: ResponseQuestionDetailed;\n questionCreateId: number;\n questionCreated: PostQuestionResponse | undefined;\n editedQuestionsList: { oldId: number; newId: number }[];\n studentQuestions: ResponseQuestion[];\n fileLink: FileLink[];\n historyQuestion: HistoryQuestion[];\n error: unknown;\n materialIdToEdit: number;\n}\n\nexport const initialState: QuestionsState = {\n fetchStatusQuestions: FetchStatus.INITIAL,\n fetchStatusDetailedQuestion: FetchStatus.INITIAL,\n fetchHistoryStatus: FetchStatus.INITIAL,\n postStatusQuestion: FetchStatus.INITIAL,\n patchStatusQuestion: FetchStatus.INITIAL,\n partialUpdateStatusQuestion: FetchStatus.INITIAL,\n deleteStatusQuestion: FetchStatus.INITIAL,\n postStatusQuestionFile: FetchStatus.INITIAL,\n patchStatusQuestionFile: FetchStatus.INITIAL,\n questions: [],\n historyQuestion: [],\n detailedQuestion: {} as ResponseQuestionDetailed,\n questionCreateId: 0,\n studentQuestions: [],\n editedQuestionsList: [],\n fileLink: [],\n questionCreated: undefined,\n error: undefined,\n materialIdToEdit: 0,\n};\n\nconst questionsSlice = createSlice>({\n name: 'questions',\n initialState,\n reducers: {\n resetPostQuestion(state) {\n state.postStatusQuestion = FetchStatus.INITIAL;\n state.questionCreateId = 0;\n },\n reset(state) {\n state.fetchStatusQuestions = FetchStatus.INITIAL;\n state.fetchStatusDetailedQuestion = FetchStatus.INITIAL;\n state.postStatusQuestion = FetchStatus.INITIAL;\n state.patchStatusQuestion = FetchStatus.INITIAL;\n state.deleteStatusQuestion = FetchStatus.INITIAL;\n state.postStatusQuestionFile = FetchStatus.INITIAL;\n state.patchStatusQuestionFile = FetchStatus.INITIAL;\n state.questions = [];\n state.detailedQuestion = {} as ResponseQuestionDetailed;\n state.questionCreateId = 0;\n state.studentQuestions = [];\n state.editedQuestionsList = [];\n state.error = undefined;\n state.fileLink = [];\n state.materialIdToEdit = 0;\n },\n resetStatusDetailedQuestion(state) {\n state.fetchStatusDetailedQuestion = FetchStatus.INITIAL;\n },\n resetStatusPartialUpdateQuestion(state) {\n state.partialUpdateStatusQuestion = FetchStatus.INITIAL;\n },\n resetQuestionCreated(state) {\n state.postStatusQuestion = FetchStatus.INITIAL;\n state.questionCreateId = 0;\n state.questionCreated = undefined;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getQuestionsAction.pending, (state) => {\n state.fetchStatusQuestions = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(getQuestionsAction.fulfilled, (state, { payload }) => {\n state.fetchStatusQuestions = FetchStatus.FETCHED;\n state.questions = payload;\n state.error = undefined;\n })\n .addCase(getQuestionsAction.rejected, (state, { error }) => {\n state.fetchStatusQuestions = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(postQuestionAction.pending, (state) => {\n state.postStatusQuestion = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(postQuestionAction.fulfilled, (state, { payload }) => {\n state.postStatusQuestion = FetchStatus.FETCHED;\n state.questionCreateId = payload.id;\n state.questionCreated = payload;\n state.error = undefined;\n })\n .addCase(postQuestionAction.rejected, (state, { error }) => {\n state.postStatusQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(refreshStatusesQuestions, (state) => {\n state.fetchStatusDetailedQuestion = FetchStatus.INITIAL;\n state.postStatusQuestion = FetchStatus.INITIAL;\n });\n builder\n .addCase(getQuestionDetailedAction.pending, (state) => {\n state.fetchStatusDetailedQuestion = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(getQuestionDetailedAction.fulfilled, (state, { payload }) => {\n state.fetchStatusDetailedQuestion = FetchStatus.FETCHED;\n const content = typeof payload.content === 'string' ? payload.content : JSON.stringify(payload.content);\n state.detailedQuestion = { ...payload, content };\n state.error = undefined;\n })\n .addCase(getQuestionDetailedAction.rejected, (state, { error }) => {\n state.fetchStatusDetailedQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(deleteQuestionAction.pending, (state) => {\n state.deleteStatusQuestion = FetchStatus.FETCHING;\n })\n .addCase(deleteQuestionAction.fulfilled, (state, { payload }) => {\n state.deleteStatusQuestion = FetchStatus.FETCHED;\n state.questions = state.questions.filter((question) => question.id !== payload);\n state.error = undefined;\n })\n .addCase(deleteQuestionAction.rejected, (state, { error }) => {\n state.deleteStatusQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(patchQuestionAction.pending, (state) => {\n state.patchStatusQuestion = FetchStatus.FETCHING;\n })\n .addCase(patchQuestionAction.fulfilled, (state, { payload }) => {\n // @ts-ignore\n state.editedQuestionsList = [{ ...payload }];\n\n state.patchStatusQuestion = FetchStatus.FETCHED;\n state.error = undefined;\n })\n .addCase(patchQuestionAction.rejected, (state, { error }) => {\n state.patchStatusQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(setMaterialIdToEdit.fulfilled, (state, { payload }) => {\n state.materialIdToEdit = payload;\n });\n builder\n .addCase(getAssignmentProgressQuestionsAction.pending, (state) => {\n state.fetchStatusQuestions = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(getAssignmentProgressQuestionsAction.fulfilled, (state, { payload }) => {\n state.fetchStatusQuestions = FetchStatus.FETCHED;\n state.studentQuestions = payload;\n state.error = undefined;\n })\n .addCase(getAssignmentProgressQuestionsAction.rejected, (state, { error }) => {\n state.fetchStatusQuestions = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(postQuestionFileAction.pending, (state) => {\n state.postStatusQuestionFile = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(postQuestionFileAction.fulfilled, (state, { payload }) => {\n state.postStatusQuestionFile = FetchStatus.FETCHED;\n state.fileLink.push(payload);\n state.error = undefined;\n })\n .addCase(postQuestionFileAction.rejected, (state, { error }) => {\n state.postStatusQuestionFile = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(partialUpdateQuestionAction.pending, (state) => {\n state.partialUpdateStatusQuestion = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(partialUpdateQuestionAction.fulfilled, (state) => {\n state.partialUpdateStatusQuestion = FetchStatus.FETCHED;\n state.error = undefined;\n })\n .addCase(partialUpdateQuestionAction.rejected, (state, { error }) => {\n state.partialUpdateStatusQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(getHistoryQuestionAction.pending, (state) => {\n state.fetchHistoryStatus = FetchStatus.FETCHING;\n state.error = undefined;\n })\n .addCase(getHistoryQuestionAction.fulfilled, (state, { payload }) => {\n state.fetchHistoryStatus = FetchStatus.FETCHED;\n state.historyQuestion = payload;\n state.error = undefined;\n })\n .addCase(getHistoryQuestionAction.rejected, (state, { error }) => {\n state.fetchHistoryStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetStatusDetailedQuestion = questionsSlice.actions\n .resetStatusDetailedQuestion as ActionCreatorWithoutPayload;\nexport const resetPostQuestion = questionsSlice.actions.resetPostQuestion as ActionCreatorWithoutPayload;\nexport const resetQuestionCreated = questionsSlice.actions.resetQuestionCreated as ActionCreatorWithoutPayload;\nexport const resetQuestionBankState = questionsSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const resetStatusPartialUpdateQuestion = questionsSlice.actions\n .resetStatusPartialUpdateQuestion as ActionCreatorWithoutPayload;\nexport const questionsReducer = questionsSlice.reducer;\n","import i18next from 'i18next';\n\nimport { LessonLocation, SkillLocation } from 'components/Codifier/utils';\n\nconst getEnding = (num: number) => {\n let end = '';\n if (num % 10 === 1 && Math.floor((num % 100) / 10) !== 1) {\n end = 'а';\n }\n if (num % 10 > 1 && num % 10 < 5 && Math.floor((num % 100) / 10) !== 1) {\n end = 'ы';\n }\n return end;\n};\n\nexport const getLocationString = (location: LessonLocation[]): string => {\n if (location.length === 0) {\n return '';\n }\n\n let returnString = `${location.length} тем${getEnding(location.length)}:`;\n location.forEach((value) => {\n const buf = ` ${value.subject}, ${value.parallel} класс, ${value.section}, ${\n value.block ? value.block + ', ' : ''\n } ${value.topic}\\n`;\n buf.replace(new RegExp('(^|\\\\s)(' + value.subject + ')(\\\\s|$)', 'ig'), '$1$2$3');\n returnString += buf;\n });\n return returnString;\n};\n\nexport const getLocationSkillString = (location: SkillLocation[]): string => {\n if (location.length === 0) {\n return '';\n }\n let returnString = `${i18next.t('skill', { count: location.length })}:`;\n location.forEach((value) => {\n const buf = ` ${value.subject}, ${value.parallel} класс, ${value.metaArea}, ${value.skill}\\n`;\n buf.replace(new RegExp('(^|\\\\s)(' + value.subject + ')(\\\\s|$)', 'ig'), '$1$2$3');\n returnString += buf;\n });\n return returnString;\n};\n\nexport const findRowsCount = (locationString: string, items: number, symbols: number): number => {\n if (!locationString.includes('\\n')) {\n return Math.floor(locationString.length / symbols) + 1;\n }\n let rows = items,\n bufLen = 0;\n for (let i = 0; i < locationString.length; i++) {\n if (locationString[i] === '\\n') {\n rows += Math.floor(bufLen / symbols);\n bufLen = 0;\n } else {\n bufLen++;\n }\n }\n return rows;\n};\n","import { EvaluationType } from '@lms-elements/educational-plan';\nimport { Subject } from 'src-new/components/lms-elements/CourseTable';\nimport { EducationalPlanData } from 'store/reducers/educationalPlan';\nimport { EduCourseType, ResponseEducationPlan } from 'types/educationalPlan';\n\nexport const convertEvaluationTypeToSelection = (type: string | null): string => {\n switch (type) {\n case EvaluationType.DIFFERENTIATED:\n return 'Диф';\n case EvaluationType.BINARY:\n return 'Зачет';\n default:\n return 'Не выбрано';\n }\n};\n\nexport const convertSelectionToEvaluationType = (selection: string | undefined): string => {\n switch (selection) {\n case 'Диф':\n return EvaluationType.DIFFERENTIATED;\n case 'Зачет':\n return EvaluationType.BINARY;\n default:\n return EvaluationType.DIFFERENTIATED;\n }\n};\n\nexport const getNormalizedResponseData = (educationPlan: ResponseEducationPlan): EducationalPlanData => {\n const mainBasicCourses: Subject[] = [];\n const mainAdditionalCourses: Subject[] = [];\n const selectiveBasicCourses: Subject[] = [];\n const selectiveAdditionalCourses: Subject[] = [];\n\n educationPlan.educationalPlanItems.map((item) => {\n switch (item.type) {\n case EduCourseType.COMMON:\n mainBasicCourses.push({\n id: Number(item.id),\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lessonsInYear: '',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lecturesInYear: '',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n } as Subject);\n break;\n case EduCourseType.NON_SUBJECT:\n mainAdditionalCourses.push({\n id: Number(item.id),\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lessonsInYear: '',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lecturesInYear: '',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n } as Subject);\n break;\n case EduCourseType.GIA_PREPARATION:\n selectiveBasicCourses.push({\n id: Number(item.id),\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lessonsInYear: '',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n } as Subject);\n break;\n case EduCourseType.ELECTIVE:\n selectiveAdditionalCourses.push({\n id: Number(item.id),\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lessonsInYear: '',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n } as Subject);\n break;\n }\n });\n\n return {\n id: educationPlan.id,\n data: {\n name: educationPlan.title,\n calendarPlan: educationPlan.calendarPlan,\n parallel: { id: educationPlan.parallel.id, title: educationPlan.parallel.title },\n minWeekHours: educationPlan.minHours || 0,\n freeWeekHours: educationPlan.freeHours || 0,\n mainBasicCourses: mainBasicCourses,\n mainAdditionalCourses: mainAdditionalCourses,\n selectiveBasicCourses: selectiveBasicCourses,\n selectiveAdditionalCourses: selectiveAdditionalCourses,\n },\n };\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getAlertsList, setAlertRead } from 'api/services/alerts';\n\nexport const getAlertsListAction = createAsyncThunk('alerts/getAlertsList', () => getAlertsList());\nexport const setAlertReadAction = createAsyncThunk('alerts/setAlertRead', (id: number) => setAlertRead(id));\n","import { getApiRequest, patchApiRequest } from 'api';\n\nexport type TAlert = {\n id: number;\n title: string;\n text: string;\n};\nexport const getAlertsList = (): Promise => {\n return getApiRequest('/alert/');\n};\nexport const setAlertRead = (id: number): Promise => {\n const data = {\n isRead: true,\n };\n return patchApiRequest(`/alert/partial-update/${id}/`, data);\n};\n","import { patchApiRequest } from 'api';\nimport { MarkScore } from 'types/mark';\n\nimport { AttendanceMarkResponse } from '.';\n\nexport interface PatchAttendanceMarkParams {\n score?: MarkScore | null;\n comment?: string | null;\n}\n\nexport const changeAttendanceMark = async (\n markId: number,\n params: PatchAttendanceMarkParams,\n): Promise => {\n return await patchApiRequest(\n `/mark-attendance-lesson/partial-update/${markId}/`,\n params,\n );\n};\n","import { patchApiRequest } from 'api';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\nimport { AttendanceResponseData } from '.';\n\nexport interface PatchAttendanceParams {\n status: AttendanceStatus;\n lateDuration: number;\n}\n\nexport const changeStudentPresence = async (\n attendanceId: number,\n params: PatchAttendanceParams,\n): Promise => {\n return await patchApiRequest(\n `/attendance-lesson/partial-update/${attendanceId}/`,\n params,\n );\n};\n","import { postApiRequest } from 'api';\nimport { MarkScore } from 'types/mark';\n\nimport { AttendanceMarkResponse } from '.';\n\nexport interface PostAttandenceMarkParams {\n score?: MarkScore;\n comment?: string | null;\n attendanceLesson: number;\n}\n\nexport const createAttendanceMark = async (params: PostAttandenceMarkParams): Promise => {\n return await postApiRequest(\n `/mark-attendance-lesson/create/`,\n params,\n );\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteAttendanceMark = async (markId: number): Promise => {\n return await deleteApiRequest(`/mark-attendance-lesson/delete/${markId}/`);\n};\n","import { getApiRequest } from 'api';\n\nimport { AttendanceResponseData } from '.';\n\nexport const getLessonAttendance = async (params: {\n lessonId?: number;\n lessonIds?: number[];\n courseGroupId?: number;\n studentIds?: number[];\n eventRoom?: number;\n}): Promise => {\n return await getApiRequest(`/attendance-lesson/`, {\n params: {\n lesson: params.lessonIds?.join(',') ?? params.lessonId,\n student_ids: params.studentIds?.join(','),\n course_group: params.courseGroupId,\n event_room: params.eventRoom,\n },\n });\n};\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCamera(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.9167 36.5379H24.0833C29.8183 36.5379 32.6858 36.5379 34.7456 35.1866C35.6372 34.6015 36.4028 33.8498 36.9987 32.9745C38.375 30.9521 38.375 28.1366 38.375 22.506C38.375 16.8755 38.375 14.0601 36.9987 12.0377C36.4028 11.1623 35.6372 10.4105 34.7456 9.82555C33.4219 8.95727 31.765 8.64695 29.228 8.53602C28.0172 8.53602 26.975 7.63523 26.7377 6.46977C26.3812 4.72133 24.8178 3.46289 23.0019 3.46289H16.9981C15.1822 3.46289 13.6186 4.72133 13.2625 6.46977C13.0252 7.63523 11.9827 8.53602 10.772 8.53602C8.23516 8.64695 6.57812 8.95727 5.25453 9.82555C4.36281 10.4105 3.59719 11.1623 3.00141 12.0377C1.625 14.0601 1.625 16.8755 1.625 22.506C1.625 28.1366 1.625 30.9521 3.00125 32.9745C3.59719 33.8498 4.36281 34.6015 5.25453 35.1866C7.31437 36.5379 10.1817 36.5379 15.9167 36.5379ZM20 14.989C15.7716 14.989 12.3437 18.3546 12.3437 22.506C12.3437 26.6576 15.7716 30.0231 20 30.0231C24.2284 30.0231 27.6562 26.6577 27.6562 22.506C27.6562 18.3546 24.2284 14.989 20 14.989ZM20 17.9959C17.463 17.9959 15.4062 20.0151 15.4062 22.506C15.4062 24.997 17.463 27.0163 20 27.0163C22.537 27.0163 24.5937 24.997 24.5937 22.506C24.5937 20.0151 22.537 17.9959 20 17.9959ZM28.677 16.4924C28.677 15.6621 29.3627 14.989 30.2084 14.989H32.25C33.0956 14.989 33.7812 15.6621 33.7812 16.4924C33.7812 17.3227 33.0956 17.9959 32.25 17.9959H30.2084C29.3627 17.9959 28.677 17.3227 28.677 16.4924Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCamera);\nexport default __webpack_public_path__ + \"static/media/camera.c4bee272.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCrownIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.9285 3.60742C11.8291 3.50669 11.7277 3.41333 11.616 3.32617C10.9537 2.89573 10.1393 2.8941 9.46563 3.30469C9.0373 3.59294 8.76932 4.01505 8.65313 4.51562C8.54697 5.06997 8.67451 5.58451 8.98675 6.05322C9.2905 6.44193 9.71591 6.72342 10.2098 6.79492C10.796 6.84198 11.3108 6.7446 11.7723 6.35742C12.1967 5.95209 12.4282 5.48964 12.4422 4.89843C12.4274 4.458 12.2945 3.9853 11.9817 3.65857L11.9285 3.60742ZM11.8156 8.67231C11.6305 8.2205 11.4458 7.76967 11.013 7.50024C10.7665 7.38031 10.4348 7.37603 10.1719 7.44702C9.81749 7.59098 9.58729 7.87266 9.43952 8.21935C9.41396 8.28205 9.38788 8.34454 9.36144 8.40688L9.31549 8.51477C9.21074 8.76304 9.1019 9.00944 8.99278 9.25581L8.83656 9.60869L8.72172 9.86844L8.58622 10.1749C8.42238 10.546 8.25768 10.9168 8.08947 11.2859L8.03985 11.3945L8.03505 11.4051L8.03504 11.4051C7.95763 11.5761 7.88122 11.7448 7.78094 11.9039C7.72986 11.981 7.65971 12.071 7.58477 12.1387L7.52423 12.1934C7.27956 12.3731 7.00804 12.4218 6.70977 12.3887C6.37982 12.3248 6.15431 12.141 5.96844 11.8687C5.91581 11.7902 5.86131 11.7135 5.8056 11.6372C5.66212 11.4409 5.51949 11.2443 5.38336 11.0428C5.35681 11.0034 5.33049 10.9636 5.30412 10.9238L5.30411 10.9237L5.3041 10.9237C5.16405 10.7119 5.02236 10.4976 4.83477 10.3262C4.67253 10.2072 4.49766 10.2166 4.30352 10.2324C4.08708 10.3046 3.93274 10.3923 3.78717 10.5718C3.62279 10.8101 3.63261 11.0528 3.66789 11.3304L3.6773 11.3999C3.68781 11.4796 3.6985 11.5592 3.7095 11.6388L3.72149 11.7246C3.888 12.9203 4.12838 14.104 4.42312 15.2745C4.44134 15.3467 4.4595 15.4188 4.47743 15.491C4.50505 15.6027 4.53283 15.7142 4.56132 15.8256L4.59259 15.9473C4.67011 16.257 4.76443 16.5557 4.95869 16.8141C5.29139 17.2101 5.65275 17.359 6.15691 17.4265L6.2254 17.4355C6.61893 17.4895 7.01312 17.5354 7.40844 17.5742L7.48907 17.582C8.42381 17.6751 9.35896 17.7117 10.298 17.7095C10.4324 17.7092 10.5669 17.709 10.7013 17.7093C11.6293 17.7118 12.5526 17.68 13.4766 17.5895L13.5516 17.582C13.9311 17.5451 14.3101 17.5045 14.6883 17.4552L14.8367 17.4355L14.8862 17.4293C15.1197 17.4 15.3479 17.3714 15.5613 17.2631L15.616 17.2324L15.7009 17.1866C16.2138 16.8468 16.3635 16.3352 16.5063 15.7686L16.5281 15.6816C16.8453 14.4287 17.1177 13.1711 17.3045 11.8917L17.3172 11.8047L17.326 11.7454C17.3664 11.473 17.4066 11.2021 17.4049 10.9259C17.3815 10.7154 17.271 10.5452 17.1172 10.4045C16.8978 10.2423 16.665 10.2053 16.3973 10.2324C16.2028 10.2973 16.0894 10.4451 15.9742 10.6066L15.9246 10.6777C15.8705 10.7541 15.8164 10.8304 15.7626 10.907L15.6611 11.0515L15.6143 11.1177L15.5223 11.248L15.4998 11.2799L15.4997 11.28C15.4271 11.3826 15.3545 11.4852 15.283 11.5885C15.2475 11.6398 15.212 11.6908 15.1762 11.7418L15.1238 11.8164C14.9776 12.0307 14.8249 12.1785 14.6 12.3093C14.3319 12.422 14.0378 12.4328 13.7641 12.3312C13.3537 12.1455 13.1837 11.8053 13.0151 11.4113C12.9922 11.3576 12.969 11.3041 12.9457 11.2506C12.8955 11.1364 12.8453 11.0222 12.7956 10.9078C12.7173 10.7272 12.6381 10.5471 12.5579 10.3673L12.477 10.1862L12.4366 10.0959C12.257 9.69399 12.0782 9.29184 11.9049 8.88716C11.8745 8.816 11.8451 8.74415 11.8156 8.67231ZM17.8348 6.29492C18.1946 6.56761 18.4451 6.97278 18.5223 7.41992C18.574 7.9971 18.5152 8.51372 18.1473 8.98242C17.7588 9.42566 17.3103 9.65185 16.7232 9.69629C16.2372 9.72057 15.8078 9.5604 15.4285 9.26367L15.3309 9.19336C14.9461 8.82532 14.7428 8.33071 14.7274 7.80273C14.7321 7.26587 14.9255 6.81595 15.296 6.42554C16.0078 5.73357 17.0542 5.71748 17.8348 6.29492ZM5.80352 6.48242C5.7034 6.38282 5.60168 6.28902 5.49102 6.20117C4.95057 5.82904 4.28942 5.79563 3.68609 6.01355C3.24009 6.19716 2.88199 6.52168 2.68157 6.96191L2.64727 7.04492C2.47805 7.43996 2.45079 7.94357 2.58306 8.35571C2.79885 8.93734 3.13737 9.31078 3.70196 9.57031C4.14487 9.74392 4.65887 9.74783 5.10284 9.57629C5.62874 9.35227 5.99963 8.97468 6.21978 8.4458C6.37067 7.9963 6.36463 7.4576 6.1689 7.02248L6.14141 6.96484C6.06589 6.806 5.9879 6.66654 5.86395 6.53955L5.80352 6.48242Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCrownIcon);\nexport default __webpack_public_path__ + \"static/media/crown-icon.f27dd38b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCupIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.4622 2.00776L6.37248 2.00837C6.2278 2.00862 6.16653 2.05227 6.05564 2.14694C5.94319 2.27669 5.91792 2.3988 5.91594 2.56921L5.92485 2.6924C5.92941 2.76014 5.93407 2.82786 5.93923 2.89556C5.94282 2.94244 5.94627 2.98934 5.94958 3.03624C5.9571 3.14498 5.96484 3.25368 5.97293 3.36238L5.97965 3.45049C5.83493 3.44921 5.69022 3.44814 5.54549 3.44745L5.36781 3.4466C5.28079 3.4458 5.19376 3.44502 5.10673 3.44467L5.02366 3.44441C4.92625 3.44321 4.82973 3.44241 4.7326 3.45049C4.46947 3.52135 4.23806 3.68351 4.08881 3.91302L4.04672 3.98049C3.99885 4.05381 3.96686 4.1028 3.94568 4.15609C3.90303 4.26342 3.90424 4.38819 3.90788 4.76424C3.90846 4.82048 3.90882 4.87672 3.90897 4.93297C3.90908 5.05084 3.90934 5.16871 3.91016 5.28658C3.9114 5.43921 3.91247 5.59182 3.91281 5.74445C3.91311 5.89275 3.91355 6.04104 3.9142 6.18933L3.91459 6.27426C3.9149 6.3559 3.91527 6.43754 3.91588 6.51919L3.9165 6.59438C3.91857 7.16529 4.13706 7.73474 4.46975 8.19654C4.94915 8.82962 5.63847 9.24486 6.42135 9.36229L6.50964 9.37398V9.46751C6.65798 10.0431 7.03851 10.6532 7.4716 11.059L7.53846 11.1198L7.55502 11.1358C7.79852 11.3707 8.05274 11.616 8.36987 11.7464L8.44257 11.7745C8.43049 11.8428 8.41852 11.9115 8.40652 11.9803C8.27664 12.7255 8.14188 13.4986 7.79371 14.1732C7.72424 14.3015 7.67907 14.408 7.63199 14.5492H13.3061C13.3061 14.5262 13.3061 14.5117 13.3033 14.4977C13.2986 14.4738 13.2859 14.4515 13.2514 14.3912C12.7947 13.6129 12.6366 12.652 12.4955 11.7745H12.5578C13.0372 11.5092 13.4494 11.1326 13.7804 10.6976L13.8361 10.621C13.9777 10.4304 14.0951 10.2359 14.1998 10.0231L14.2375 9.94489C14.3092 9.79742 14.3694 9.65669 14.4053 9.49613L14.4284 9.37398C15.0845 9.30503 15.6936 9.00062 16.1653 8.54391C16.7632 7.91101 17.038 7.18317 17.0311 6.31917C17.0306 6.26383 17.0304 6.20849 17.0303 6.15315C17.0303 6.03633 17.0302 5.91953 17.0295 5.80271C17.0284 5.65235 17.0276 5.502 17.0276 5.35163C17.0276 5.23315 17.0275 5.11467 17.0271 4.99619L17.0265 4.82675C17.0264 4.74631 17.0263 4.66587 17.0257 4.58542L17.0251 4.51144C17.0255 4.20107 16.9315 3.99923 16.7354 3.76226C16.5269 3.56305 16.2734 3.43626 15.9835 3.43637L15.9053 3.43832C15.8207 3.43886 15.7361 3.43956 15.6515 3.44109C15.5929 3.44217 15.5344 3.44302 15.4758 3.44364C15.34 3.44482 15.2042 3.44624 15.0684 3.44852L14.9584 3.45049C14.9665 3.34324 14.9744 3.23597 14.9821 3.12868L14.9915 2.99649C14.9964 2.93203 15.0013 2.86757 15.0058 2.80309L15.0102 2.74111C15.0259 2.52493 15.0352 2.31859 14.896 2.14109C14.7547 2.01782 14.6487 2.00178 14.4633 2L14.3652 2.00097C14.2541 2.00049 14.143 2.0002 14.0318 2.00068C13.9293 2.00116 13.8268 2.00122 13.7243 2.00102C13.5234 2.00059 13.3225 2.00073 13.1216 2.0013C12.8857 2.00197 12.6498 2.00214 12.4138 2.00212C11.9937 2.00206 11.5735 2.0025 11.1534 2.00339C10.744 2.00427 10.3347 2.00487 9.9254 2.00484L9.84886 2.00483L9.77241 2.00483C9.30465 2.00478 8.83689 2.00507 8.36913 2.00562L7.87404 2.00597C7.67099 2.00601 7.46795 2.00618 7.2649 2.0067L7.01514 2.00733L7.01403 2.00733C6.89794 2.00728 6.78185 2.00723 6.66575 2.00762L6.56098 2.00805L6.4622 2.00776ZM4.85277 4.71608C4.85316 4.61388 4.85601 4.54554 4.88848 4.44813C4.95759 4.41371 4.99258 4.39629 5.02961 4.3875C5.06757 4.3785 5.10769 4.37857 5.18893 4.37872L5.25724 4.37969C5.32998 4.37997 5.40272 4.38032 5.47547 4.38108C5.52603 4.38162 5.57659 4.38204 5.62715 4.38236C5.77583 4.38311 5.9245 4.38424 6.07318 4.38578L6.14923 5.51592L6.1881 6.09472L6.22608 6.65899L6.24063 6.87623C6.27381 7.36571 6.30244 7.85496 6.32259 8.34516L6.26494 8.3266L6.18893 8.30176C5.92344 8.21556 5.68743 8.0609 5.48667 7.86778C4.85162 7.18503 4.84657 6.46775 4.85089 5.58055C4.85132 5.49387 4.85153 5.40719 4.85153 5.32051C4.85151 5.2351 4.85157 5.14969 4.85175 5.06428L4.85207 4.94245L4.85217 4.82466L4.85277 4.71608ZM14.7673 5.83783L14.8649 4.38578C14.9889 4.38514 15.113 4.3846 15.2371 4.38426L15.389 4.38383C15.4637 4.38344 15.5383 4.38304 15.613 4.38287L15.6839 4.38274C15.6893 4.3827 15.6947 4.38266 15.7002 4.38261C15.8113 4.38174 15.9104 4.38096 16.0184 4.41696C16.067 4.48779 16.0804 4.53857 16.0887 4.62432L16.0888 4.71962L16.0894 4.8282L16.089 4.94549L16.0891 4.96929C16.0892 5.06544 16.0894 5.16159 16.0891 5.25774C16.0887 5.36591 16.0885 5.47408 16.0889 5.58226C16.0891 5.65903 16.0903 5.73689 16.0915 5.81542C16.099 6.30184 16.1069 6.81419 15.8937 7.25399C15.6064 7.7953 15.1981 8.1525 14.6155 8.34516C14.6128 8.18346 14.6206 8.02371 14.6313 7.86236L14.6384 7.75873L14.6617 7.41101L14.6826 7.0999L14.722 6.51207L14.7673 5.83783ZM6.18635 15.4689L6.10488 15.4689C6.07023 15.4711 6.05077 15.4724 6.03626 15.4815C6.01766 15.4931 6.00718 15.5177 5.98327 15.5738L5.94656 15.6675C5.87775 15.8429 5.80978 16.0186 5.74221 16.1944C5.70944 16.2797 5.67664 16.365 5.64331 16.4501C5.60252 16.5537 5.5619 16.6574 5.52203 16.7614L5.47612 16.8812C5.41959 17.0235 5.3658 17.1639 5.32718 17.3122C5.30326 17.5133 5.29343 17.6759 5.42071 17.8422C5.56783 17.9759 5.69055 17.9817 5.88577 17.9834L5.99848 17.9825C6.12586 17.9831 6.25322 17.9835 6.38059 17.983C6.49813 17.9825 6.61565 17.9826 6.73318 17.9829C6.96351 17.9834 7.19384 17.9834 7.42418 17.9829C7.69475 17.9824 7.96533 17.9823 8.23591 17.9824C8.71778 17.9826 9.19966 17.9823 9.68153 17.9816C10.1509 17.9808 10.6203 17.9804 11.0897 17.9807C11.6027 17.9811 12.1157 17.9812 12.6286 17.9808L12.7927 17.9807L12.8743 17.9806C13.0635 17.9804 13.2527 17.9804 13.442 17.9805C13.6748 17.9807 13.9076 17.9807 14.1405 17.9801L14.1815 17.98C14.2867 17.9797 14.3919 17.9794 14.4971 17.9796C14.6072 17.9798 14.7174 17.9799 14.8276 17.9795L14.948 17.979L15.0609 17.9795L15.1642 17.9787C15.2532 17.9786 15.2532 17.9786 15.3348 17.9669C15.475 17.8956 15.5471 17.8303 15.6153 17.6863C15.6431 17.4545 15.6102 17.2561 15.5282 17.0393L15.4901 16.9445C15.4502 16.8406 15.4101 16.7369 15.3691 16.6334C15.341 16.5623 15.3131 16.4912 15.2855 16.42C15.2331 16.2843 15.1804 16.1487 15.1274 16.0132L15.0915 15.9224C15.0598 15.842 15.0269 15.7623 14.9921 15.6832L14.9583 15.6074L14.8983 15.4728C13.7972 15.4721 12.6962 15.4715 11.5951 15.4712L11.1973 15.4711L11.1171 15.4711L9.82944 15.4704C9.38769 15.4701 8.94594 15.4699 8.50418 15.4699C8.23188 15.4698 7.95957 15.4697 7.68726 15.4695C7.49893 15.4693 7.31059 15.4692 7.12225 15.4692L7.08812 15.4692C6.99088 15.4693 6.89364 15.4693 6.7964 15.4692C6.69552 15.469 6.59464 15.4689 6.49376 15.4689L6.38412 15.469L6.27999 15.4688L6.18635 15.4689Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCupIcon);\nexport default __webpack_public_path__ + \"static/media/cup-icon.0682ed38.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLikeIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.87012 8.85L9.41012 4.79C9.50855 4.62953 9.64688 4.49729 9.81161 4.40616C9.97634 4.31503 10.1619 4.26812 10.3501 4.27C10.4984 4.26465 10.6462 4.28907 10.7849 4.34183C10.9235 4.39458 11.0502 4.4746 11.1574 4.57715C11.2646 4.67969 11.3502 4.80269 11.409 4.93887C11.4679 5.07505 11.4989 5.22165 11.5001 5.37V8.28H15.8901C16.0523 8.28526 16.2116 8.3248 16.3574 8.39601C16.5033 8.46723 16.6324 8.5685 16.7363 8.69319C16.8402 8.81787 16.9165 8.96313 16.9603 9.11942C17.004 9.27572 17.0142 9.4395 16.9901 9.6L16.1901 14.76C16.156 15.0358 16.0223 15.2896 15.8142 15.4737C15.6062 15.6579 15.338 15.7597 15.0601 15.76H8.50012C8.18784 15.7612 7.87961 15.6893 7.60012 15.55L6.88012 15.19\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.87012 8.85L9.41012 4.79C9.50855 4.62953 9.64688 4.49729 9.81161 4.40616C9.97634 4.31503 10.1619 4.26812 10.3501 4.27C10.4984 4.26465 10.6462 4.28907 10.7849 4.34183C10.9235 4.39458 11.0502 4.4746 11.1574 4.57715C11.2646 4.67969 11.3502 4.80269 11.409 4.93887C11.4679 5.07505 11.4989 5.22165 11.5001 5.37V8.28H15.8901C16.0523 8.28526 16.2116 8.3248 16.3574 8.39601C16.5033 8.46723 16.6324 8.5685 16.7363 8.69319C16.8402 8.81787 16.9165 8.96313 16.9603 9.11942C17.004 9.27572 17.0142 9.4395 16.9901 9.6L16.1901 14.76C16.156 15.0358 16.0223 15.2896 15.8142 15.4737C15.6062 15.6579 15.338 15.7597 15.0601 15.76H8.50012C8.18784 15.7612 7.87961 15.6893 7.60012 15.55L6.88012 15.19\",\n stroke: \"#0088E9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.87012 8.85V15.16\",\n stroke: \"#0088E9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 8.85H4.87V15.16H4.5C4.36739 15.16 4.24021 15.1073 4.14645 15.0136C4.05268 14.9198 4 14.7926 4 14.66V9.35C4 9.21739 4.05268 9.09021 4.14645 8.99645C4.24021 8.90268 4.36739 8.85 4.5 8.85Z\",\n fill: \"#0088E9\",\n stroke: \"#0088E9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLikeIcon);\nexport default __webpack_public_path__ + \"static/media/like-icon.715665ae.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMonitorPlay(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 77,\n height: 77,\n viewBox: \"0 0 77 77\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4375 57.75L62.5625 57.75C65.2204 57.75 67.375 55.5954 67.375 52.9375V19.25C67.375 16.5921 65.2204 14.4375 62.5625 14.4375L14.4375 14.4375C11.7796 14.4375 9.625 16.5921 9.625 19.25L9.625 52.9375C9.625 55.5954 11.7796 57.75 14.4375 57.75Z\",\n stroke: \"#EDEEF2\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.125 67.375H28.875\",\n stroke: \"#EDEEF2\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.125 36.0938L33.6875 26.4688V45.7188L48.125 36.0938Z\",\n stroke: \"#EDEEF2\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMonitorPlay);\nexport default __webpack_public_path__ + \"static/media/monitor-play.df0da9bd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStarIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.47664 2.74351C9.79875 1.75216 11.2012 1.75216 11.5234 2.74351L12.6742 6.28556C12.8183 6.7289 13.2314 7.02907 13.6976 7.02907H17.4219C18.4643 7.02907 18.8977 8.36292 18.0544 8.97561L15.0413 11.1647C14.6642 11.4387 14.5064 11.9244 14.6505 12.3677L15.8013 15.9098C16.1234 16.9011 14.9888 17.7255 14.1455 17.1128L11.1325 14.9237C10.7553 14.6497 10.2447 14.6497 9.86753 14.9237L6.85449 17.1128C6.0112 17.7255 4.87655 16.9011 5.19866 15.9098L6.34954 12.3677C6.49359 11.9244 6.33579 11.4387 5.95866 11.1647L2.94561 8.97561C2.10232 8.36292 2.53572 7.02907 3.57808 7.02907H7.30241C7.76857 7.02907 8.18171 6.7289 8.32576 6.28556L9.47664 2.74351Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarIcon);\nexport default __webpack_public_path__ + \"static/media/star-icon.6d276c72.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTrash(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.5625 4.375C24.2184 4.37517 24.8576 4.5817 25.3895 4.96532C25.9215 5.34895 26.3193 5.89024 26.5266 6.5125L27.375 9.0625H32.5C32.9144 9.0625 33.3118 9.22712 33.6049 9.52015C33.8979 9.81317 34.0625 10.2106 34.0625 10.625C34.0625 11.0394 33.8979 11.4368 33.6049 11.7299C33.3118 12.0229 32.9144 12.1875 32.5 12.1875L32.4953 12.2984L31.1406 31.2719C31.0561 32.4541 30.5268 33.5604 29.6594 34.3681C28.792 35.1757 27.6509 35.6249 26.4656 35.625H13.5344C12.3492 35.6249 11.208 35.1757 10.3406 34.3681C9.47316 33.5604 8.94392 32.4541 8.85938 31.2719L7.50469 12.2969C7.50186 12.2605 7.5003 12.224 7.5 12.1875C7.0856 12.1875 6.68817 12.0229 6.39515 11.7299C6.10212 11.4368 5.9375 11.0394 5.9375 10.625C5.9375 10.2106 6.10212 9.81317 6.39515 9.52015C6.68817 9.22712 7.0856 9.0625 7.5 9.0625H12.625L13.4734 6.5125C13.6808 5.88998 14.0788 5.34852 14.6111 4.96487C15.1434 4.58122 15.7829 4.37484 16.4391 4.375H23.5625ZM15.3125 16.875C14.9298 16.8751 14.5604 17.0156 14.2744 17.2699C13.9884 17.5242 13.8057 17.8746 13.7609 18.2547L13.75 18.4375V27.8125C13.7504 28.2107 13.9029 28.5938 14.1763 28.8834C14.4497 29.173 14.8234 29.3472 15.2209 29.3706C15.6185 29.3939 16.01 29.2646 16.3154 29.009C16.6208 28.7534 16.817 28.3908 16.8641 27.9953L16.875 27.8125V18.4375C16.875 18.0231 16.7104 17.6257 16.4174 17.3326C16.1243 17.0396 15.7269 16.875 15.3125 16.875ZM24.6875 16.875C24.2731 16.875 23.8757 17.0396 23.5826 17.3326C23.2896 17.6257 23.125 18.0231 23.125 18.4375V27.8125C23.125 28.2269 23.2896 28.6243 23.5826 28.9174C23.8757 29.2104 24.2731 29.375 24.6875 29.375C25.1019 29.375 25.4993 29.2104 25.7924 28.9174C26.0854 28.6243 26.25 28.2269 26.25 27.8125V18.4375C26.25 18.0231 26.0854 17.6257 25.7924 17.3326C25.4993 17.0396 25.1019 16.875 24.6875 16.875ZM23.5625 7.5H16.4375L15.9172 9.0625H24.0828L23.5625 7.5Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrash);\nexport default __webpack_public_path__ + \"static/media/trash.1cbe0613.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgWreathIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.4095 3.65807C17.3705 3.50183 17.3295 3.3994 17.2187 3.28124C17.1338 3.22399 17.0787 3.18685 17.018 3.16922C16.9059 3.13669 16.7745 3.17063 16.4007 3.26721C16.3373 3.28397 16.2739 3.30064 16.2103 3.31654C15.6029 3.46761 15.114 3.72146 14.7499 4.24999C14.4322 4.77353 14.3237 5.3254 14.4648 5.92382C14.4816 5.99322 14.4981 6.06266 14.5145 6.13214L14.5406 6.24319C14.6088 6.53154 14.6734 6.82062 14.7374 7.10992L14.7851 7.32617C14.8002 7.39344 14.8156 7.46094 14.831 7.52866C14.9692 8.13592 15.1112 8.75992 15.1062 9.38201L15.1035 9.4746C15.0995 9.90647 15.0389 10.3051 14.8982 10.715C14.5524 11.681 13.8593 12.5466 12.9202 12.9921L12.856 13.022C12.6226 13.1269 12.5058 13.1794 12.3883 13.2301C12.2708 13.2808 12.1525 13.3298 11.916 13.4277C11.8322 13.4622 11.7485 13.4966 11.665 13.5315L11.5855 13.5648C11.4064 13.6375 11.2662 13.71 11.1249 13.8437C11.0825 13.9088 11.0546 13.9516 11.0385 13.9985C11.0077 14.0884 11.0206 14.1933 11.0582 14.4994C11.1565 15.2498 11.3115 15.9151 11.9383 16.4031C12.5541 16.8384 13.1583 16.8651 13.8794 16.7721L13.998 16.7559L14.1131 16.7402L14.2215 16.724C14.3567 16.7039 14.4501 16.6727 14.5624 16.5937C14.6158 16.5303 14.6521 16.4871 14.675 16.4378C14.7236 16.3333 14.7124 16.2009 14.6774 15.7881C14.58 14.9587 14.3155 14.3639 13.6603 13.8337L13.5937 13.7812C13.7257 13.694 13.7916 13.6504 13.858 13.6074C13.9244 13.5644 13.9913 13.5221 14.1249 13.4375L14.1315 13.4415C14.6705 13.7761 15.1805 14.0927 15.8389 14.0675C16.4472 14.0222 16.9586 13.7789 17.3607 13.3163C17.3781 13.2941 17.3962 13.2713 17.4148 13.2478C17.6865 12.9051 18.0619 12.4314 18.0312 12C18.0048 11.9207 17.9879 11.87 17.9597 11.8266C17.9096 11.7493 17.8238 11.6953 17.5855 11.5451L17.4863 11.4844C17.0262 11.2011 16.5742 10.965 16.0195 10.9629L15.8749 10.9687L15.9687 10.5625C16.0624 10.5631 16.1562 10.5637 16.2499 10.564L16.3652 10.5644L16.4786 10.5652L16.5882 10.5655C17.0684 10.5679 17.5255 10.3502 17.8671 10.0195C18.3433 9.51616 18.5136 9.02124 18.5097 8.33618C18.5087 8.24352 18.5078 8.15088 18.5075 8.05822L18.5068 7.87428L18.5063 7.78686C18.5062 7.76868 18.5063 7.7511 18.5064 7.73404C18.5071 7.58953 18.5076 7.48211 18.4023 7.36132C18.2057 7.18607 18.0362 7.17662 17.7802 7.17773L17.664 7.17968C17.0608 7.18225 16.5442 7.22591 16.0234 7.55663L15.8749 7.65624L15.7187 6.93749L16.0624 6.87499C16.5854 6.72652 17.0294 6.41104 17.3223 5.953C17.6831 5.34807 17.6758 4.72073 17.5082 4.05303L17.4746 3.91992L17.4745 3.91987C17.4584 3.8536 17.4423 3.78735 17.4256 3.72122L17.4095 3.65807ZM4.79469 3.31475L4.68159 3.2871C4.65494 3.28022 4.62822 3.27312 4.60145 3.266C4.3254 3.19261 4.04426 3.11788 3.78315 3.27343C3.74133 3.31053 3.71377 3.33497 3.69244 3.36399C3.65124 3.42004 3.63326 3.49315 3.58058 3.70747L3.56245 3.78124C3.3765 4.49932 3.25977 5.11615 3.60456 5.81164C3.89687 6.34718 4.35548 6.69906 4.93745 6.87499L5.2812 6.93749L5.12495 7.65624L5.06245 7.62499C4.56701 7.28369 4.0812 7.18075 3.4842 7.17742L3.36323 7.17773C3.32878 7.1773 3.29333 7.17616 3.25729 7.175C3.03077 7.16769 2.78111 7.15964 2.61222 7.32406C2.50857 7.45686 2.48201 7.55816 2.48145 7.72565L2.48359 7.80981C2.48405 7.90057 2.48473 7.99128 2.48645 8.08203C2.48764 8.14463 2.48849 8.20724 2.48901 8.26986C2.49285 8.9035 2.58088 9.45235 3.04292 9.92968C3.47526 10.3387 3.93582 10.5759 4.54048 10.5707L4.64839 10.5684L4.86665 10.5658L5.0312 10.5625L5.12495 10.9687C5.05377 10.977 4.9826 10.9854 4.91151 10.9944L4.82222 11.0059C4.42727 11.0506 4.09772 11.1869 3.75819 11.3915L3.65815 11.4531C3.62178 11.475 3.58429 11.4965 3.54646 11.5182C3.32321 11.6464 3.08813 11.7814 2.99995 12.0312C2.98522 12.1748 2.9911 12.3019 3.06184 12.4308L3.09956 12.4929L3.14189 12.5626L3.18745 12.6367C3.21367 12.6794 3.23979 12.7226 3.26604 12.766C3.42597 13.0306 3.59112 13.3038 3.81709 13.5122L3.87495 13.5625C4.28082 13.9347 4.81935 14.1213 5.37068 14.0985L5.43745 14.0937C5.79695 14.0755 6.13136 13.9331 6.43681 13.751C6.5231 13.6988 6.60935 13.6475 6.69746 13.5985L6.79292 13.5469L6.93745 13.4687L7.01618 13.5201L7.11909 13.5879C7.12391 13.591 7.12872 13.5942 7.13351 13.5973C7.23255 13.6622 7.3263 13.7236 7.4062 13.8125C7.33074 13.859 7.25788 13.908 7.18537 13.959C6.71547 14.3294 6.4792 14.8274 6.38198 15.4104L6.36714 15.5078C6.36063 15.5498 6.35312 15.5938 6.34537 15.6393C6.29827 15.9153 6.24227 16.2435 6.34846 16.4897C6.49986 16.6805 6.65589 16.7086 6.8896 16.743L7.00386 16.7578C7.75777 16.8593 8.40623 16.863 9.05659 16.4121C9.66077 15.9493 9.82975 15.3118 9.92567 14.5912L9.93745 14.5C9.94001 14.4809 9.94267 14.4617 9.94534 14.4425C9.97158 14.254 9.99787 14.065 9.92182 13.8848C9.89902 13.842 9.88301 13.812 9.86143 13.7867C9.81062 13.7273 9.72893 13.6942 9.45493 13.5834C9.41292 13.5667 9.37097 13.5499 9.32907 13.533L9.26122 13.5056C9.21134 13.4855 9.16134 13.4656 9.11129 13.4456C8.43033 13.1737 7.74 12.8981 7.19966 12.3873C6.42387 11.6103 5.91725 10.6666 5.89551 9.54927L5.89448 9.44531C5.921 9.01476 5.93428 8.79921 5.96341 8.58582C5.99261 8.3719 6.03774 8.16014 6.12811 7.7361L6.16909 7.54195C6.25237 7.14488 6.3395 6.74918 6.43745 6.35546C6.62312 5.63474 6.6813 4.97893 6.28945 4.3135C5.94156 3.75024 5.42149 3.47341 4.79469 3.31475Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWreathIcon);\nexport default __webpack_public_path__ + \"static/media/wreath-icon.9e430c07.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBigOgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 120,\n height: 120,\n viewBox: \"0 0 120 120\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.3937 60.534L75.4999 61.5776L49.997 47.2748C49.5551 47.0293 49.3657 46.4768 49.6813 46.0471C49.9338 45.6174 50.502 45.4333 50.9439 45.7402L77.3937 60.534Z\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.1082 55.9916L63.3797 46.5996L53.0902 40.768C49.0501 38.5581 44 41.3819 44 45.863V69.1895C44 73.6706 48.987 76.433 52.9639 74.2231L73.038 63.0509L48.7345 49.4233C47.0932 48.5026 46.5251 46.4155 47.4719 44.8194C48.4188 43.162 50.5651 42.6096 52.2064 43.5303L79.8557 59.0609L80.0451 58.9381C81.3076 58.3242 81.3076 56.6055 80.1082 55.9916Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBigOgLogo);\nexport default __webpack_public_path__ + \"static/media/big-og-logo.e3387038.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgContentLoader(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 134,\n height: 120,\n viewBox: \"0 0 134 120\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.293 60.7071C125.683 61.0976 126.317 61.0976 126.707 60.7071L133.071 54.3431C133.462 53.9526 133.462 53.3195 133.071 52.9289C132.681 52.5384 132.047 52.5384 131.657 52.9289L126 58.5858L120.343 52.9289C119.953 52.5384 119.319 52.5384 118.929 52.9289C118.538 53.3195 118.538 53.9526 118.929 54.3431L125.293 60.7071ZM66 0C65.4477 0 65 0.447715 65 1C65 1.55228 65.4477 2 66 2V0ZM66 2C98.607 2 125 27.4276 125 60H127C127 26.2792 99.6672 0 66 0V2Z\",\n fill: \"#0088E9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.70711 59.2929C8.31658 58.9024 7.68342 58.9024 7.29289 59.2929L0.928931 65.6569C0.538406 66.0474 0.538406 66.6805 0.928931 67.0711C1.31946 67.4616 1.95262 67.4616 2.34314 67.0711L8 61.4142L13.6569 67.0711C14.0474 67.4616 14.6805 67.4616 15.0711 67.0711C15.4616 66.6805 15.4616 66.0474 15.0711 65.6569L8.70711 59.2929ZM68 120C68.5523 120 69 119.552 69 119C69 118.448 68.5523 118 68 118V120ZM68 118C35.393 118 9 92.5724 9 60H7C7 93.7208 34.3328 120 68 120V118Z\",\n fill: \"#0088E9\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgContentLoader);\nexport default __webpack_public_path__ + \"static/media/content-loader.8ccece99.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/empty-data.b93091bc.png\";","export default __webpack_public_path__ + \"static/media/sleeping-owl.5cb42d07.png\";","export default __webpack_public_path__ + \"static/media/two-people-looking-for.6c9fca20.png\";","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n getStaffProfileById,\n getStaffProfiles,\n updateStaffProfile,\n UpdateStaffProfileData,\n} from 'api/services/staffProfile';\nimport { UserRoles } from 'types/user';\n\nexport const getStaffProfilesAction = createAsyncThunk(\n 'staffProfile/getStaffProfiles',\n async ({ userRole, subjects }: { userRole?: UserRoles; subjects?: number[] }) => {\n return {\n userRole,\n profiles: await getStaffProfiles({ userRole, subjects }),\n };\n },\n);\n\nexport const updateStaffProfileAction = createAsyncThunk(\n 'staffProfile/updateStaffProfile',\n ({ data, staffProfileId }: { data: UpdateStaffProfileData; staffProfileId: number }) => {\n return updateStaffProfile({ data, staffProfileId });\n },\n);\n\nexport const getStaffProfileByIdAction = createAsyncThunk(\n 'staffProfile/getStaffProfileById',\n (staffProfileId: number) => {\n return getStaffProfileById(staffProfileId);\n },\n);\n","const getCodifierPage = (): string => {\n return `cy-codifier-codifier-page`;\n};\n\nconst getSubjectNameTitle = (index: number): string => {\n return `cy-codifier-subject-name-title-${index}`;\n};\n\nconst getGradeContainer = (index: number): string => {\n return `cy-codifier-grade-container-${index}`;\n};\n\nconst getSectionContainerHeader = (index: number): string => {\n return `cy-codifier-section-container-header-${index}`;\n};\n\nconst getBlockContainerHeader = (index: number): string => {\n return `cy-codifier-block-container-header-${index}`;\n};\n\nconst getThemeContainer = (theme: number, block?: number): string => {\n return `cy-codifier${block !== undefined ? `-block-${block}` : ''}-theme-container-${theme}`;\n};\n\nconst getThemeContainerIcon = (theme: number, block?: number): string => {\n return `cy-codifier${block !== undefined ? `-block-${block}` : ''}-theme-container-icon-${theme}`;\n};\n\nexport const codifierPageData = {\n getCodifierPage,\n selectedSubjectIndex: 0,\n getSubjectNameTitle,\n selectedGradeIndex: 2,\n getGradeContainer,\n selectedSectionIndex: 4,\n getSectionContainerHeader,\n selectedBlockIndex: 1,\n getBlockContainerHeader,\n selectedThemeIndex: 0,\n getThemeContainer,\n getThemeContainerIcon,\n};\n","import React, { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Dots, Pen, PlusCircle } from '@lms-elements/icons';\nimport { useRole } from 'hooks';\nimport { Mark } from 'src-new/components/lms-elements/Mark';\n\nimport { IAttendanceMarkProps } from './AttendanceMark.types';\nimport { AttendanceMarkForm, MarkField } from './AttendanceMarkForm';\n\nimport './AttendanceMark.scss';\n\nconst CnAttendanceMark = cn('attendanceMark');\n\nexport const AttendanceMark: React.FC = ({\n marks,\n teacherId,\n submitCreateMark,\n submitChangeMark,\n onDeleteMark,\n isNeedAddMark = true,\n isNeedChangeMark = isNeedAddMark,\n isStudent,\n canCreateCommentOnly,\n onceMark,\n withoutComment,\n onCancel,\n needHideWeight,\n isAbsolutionPosition,\n onAcademicPerfomance,\n statusCard = false,\n}) => {\n const [isAddMarksFormShow, setIsAddMarksFormShow] = useState(false);\n const [isChangeMarksFormShow, setIsChangeMarksFormShow] = useState(false);\n const [formPosition, setformPosition] = useState({ top: -9999, left: -9999 });\n\n const { isPrincipal: isPrincipalRole, isSupport } = useRole();\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n const changeIsAddMarksFormShowCallback = useCallback(\n (e?: React.MouseEvent) => {\n if (e) {\n const plusIcon = e.currentTarget as HTMLDivElement;\n const { x, y } = plusIcon.getBoundingClientRect();\n\n setformPosition({ top: y + 40, left: x - 200, maxHeight: `calc(100vh - ${y + 40}px - 50px)` });\n }\n\n setIsAddMarksFormShow(!isAddMarksFormShow);\n },\n [isAddMarksFormShow],\n );\n\n const changeformRef = useRef(null);\n const createformRef = useRef(null);\n\n useEffect(() => {\n if (changeformRef.current || createformRef.current) {\n const width = 440;\n setformPosition((prev) => {\n if (Number(prev.left) + width + 30 > window.innerWidth) {\n return {\n ...prev,\n left: window.innerWidth - width - 30,\n };\n }\n\n if (Number(prev.left) < 30) {\n return {\n ...prev,\n left: 30,\n };\n }\n\n return prev;\n });\n }\n }, [formPosition.left]);\n\n const changeIsChangeMarksFormShowCallback = useCallback(\n (e?: React.MouseEvent) => {\n if (e) {\n const penIcon = e?.currentTarget as HTMLDivElement;\n const { x, y } = penIcon.getBoundingClientRect();\n\n setformPosition({ top: y + 40, left: x - 200, maxHeight: `calc(100vh - ${y + 40}px - 50px)` });\n }\n\n setIsChangeMarksFormShow(!isChangeMarksFormShow);\n },\n [isChangeMarksFormShow],\n );\n\n const handleCancelClick = useCallback(() => {\n onCancel?.();\n setIsChangeMarksFormShow(false);\n }, [onCancel]);\n\n const handleSubmitIsAddMarksForm = useCallback(\n (values: { mark: MarkField[] }) => {\n if (submitCreateMark) {\n submitCreateMark(values.mark);\n }\n setIsAddMarksFormShow(false);\n },\n [submitCreateMark],\n );\n\n const handleSubmitIsChangeMarksForm = useCallback(\n (values: { mark: MarkField[] }) => {\n const changedMarks: MarkField[] = [];\n\n values.mark.forEach((mark) => {\n if (mark.isDeleted) {\n onDeleteMark?.(mark.markId, mark.attemptMarkNumber, mark.teacherMark);\n } else {\n changedMarks.push(mark);\n }\n });\n\n submitChangeMark?.(changedMarks);\n\n setIsChangeMarksFormShow(false);\n },\n [onDeleteMark, submitChangeMark],\n );\n\n const filteredMarks = useMemo(\n () =>\n marks\n .filter((mark) => {\n if (isPrincipal) {\n return true;\n }\n if (teacherId) {\n return mark.author === teacherId;\n }\n return true;\n })\n .map((mark) => {\n return {\n ...mark,\n valueCanChange: mark.valueCanChange || teacherId === mark.author || isPrincipal,\n teacherMark: mark.teacherMark || teacherId === mark.author,\n attemptMarkNumber: mark.attemptMarkNumber,\n };\n }),\n [isPrincipal, marks, teacherId],\n );\n\n const noMarks = useMemo(() => marks.length === 0, [marks]);\n\n useEffect(() => {\n if (isChangeMarksFormShow) {\n changeformRef.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isChangeMarksFormShow]);\n\n useEffect(() => {\n if (isAddMarksFormShow) {\n createformRef.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isAddMarksFormShow]);\n\n const changeMarkInitList = useMemo(\n () =>\n filteredMarks.map((el) => ({\n comment: el.comment,\n selectedMark: el.score,\n markId: el.id,\n valueCanChange: el.valueCanChange,\n teacherMark: el.teacherMark,\n attemptMarkNumber: el.attemptMarkNumber,\n })),\n [filteredMarks],\n );\n\n const addMarkInitList = useMemo(() => [{ comment: '', markId: 0, valueCanChange: true }], []);\n\n return (\n
\n
\n {marks.slice(0, statusCard ? 4 : marks.length).map(({ id, score, ...mark }, index, array) => {\n return (\n \n \n
\n );\n })}\n {statusCard && marks.length > 4 && (\n
\n \n
\n )}\n
\n {isNeedChangeMark && filteredMarks.length !== 0 && !isStudent && (\n
\n \n
\n )}\n {isNeedAddMark && !isStudent && (\n
\n \n
\n )}\n\n {(isAddMarksFormShow || isChangeMarksFormShow) &&
}\n\n {isChangeMarksFormShow && (\n \n \n
\n )}\n {isAddMarksFormShow && (\n \n \n
\n )}\n \n );\n};\n","export const timezoneError = {\n error: 'На вашем устройстве неправильно настроен часовой пояс.',\n descriptions: [\n 'При неправильно настроенном часовом поясе вы не сможете зайти на урок!',\n 'Исправьте в настройках устройства часовой пояс!',\n 'При возникновении трудностей обратитесь в техподдержку!',\n ],\n};\n\nexport const nonPaymentError = {\n error: 'Доступ к онлайн-занятиям заблокирован.',\n descriptions: 'Обратитесь к родителям.',\n};\n\nexport const wrongClientError = {\n error: 'Скачайте приложение',\n};\n\nexport const lastAttemptDeleting = {\n error: 'Вы действительно хотите удалить последнюю попытку?',\n descriptions:\n 'Вы уверены, что хотите удалить последнюю попытку выполнения данного задания? После этого задание будет удалено для ученика.',\n};\n\nexport const ApprovingMedicalCertificate = {\n error: 'Утверждение справки',\n descriptions: 'Вы действительно хотите утвердить справку? Данные утвержденной справки нельзя будет изменить.',\n};\n","import { Parallel } from './parallel';\nexport interface EduCalendarPlan {\n id: number;\n title: string;\n}\nexport enum EducationalPlanType {\n MAIN = 'main',\n TRIAL_DAYS = 'trial_days',\n}\n\nexport enum EduCourseType {\n COMMON = 'common',\n NON_SUBJECT = 'non_subject',\n GIA_PREPARATION = 'gia_preparation',\n ELECTIVE = 'elective',\n}\n\nexport interface EduCourse {\n id: number;\n title: string;\n lessonCount: number;\n}\n\nexport interface EducationalPlanItem {\n id: number;\n course: EduCourse;\n type: EduCourseType;\n takeIntoAccount: boolean;\n yearLessonsCount: number;\n weekLessonsCount: number;\n yearOnlineLessonsCount: number;\n weekOnlineLessonsCount: number;\n yearFlowLecturesCount: number;\n weekFlowLecturesCount: number;\n evaluationType: string | null;\n}\n\nexport interface EducationalPlan {\n id: number;\n title: string;\n parallel: Parallel;\n calendarPlan: EduCalendarPlan;\n freeHours?: number;\n minHours?: number;\n type?: EducationalPlanType;\n educationalPlanItems: EducationalPlanItem[];\n}\n\nexport interface ResponseEducationalPlanItem {\n id: number;\n course: EduCourse;\n type: EduCourseType;\n educationalPlan: number;\n yearLessonsCount: number;\n weekLessonsCount: number;\n yearOnlineLessonsCount: number;\n weekOnlineLessonsCount: number;\n yearFlowLecturesCount: number;\n weekFlowLecturesCount: number;\n evaluationType: string | null;\n takeIntoAccount: boolean;\n}\n\nexport interface ResponseEducationPlan {\n id: number;\n title: string;\n parallel: Parallel;\n calendarPlan: EduCalendarPlan;\n freeHours?: number;\n minHours?: number;\n type?: EducationalPlanType;\n educationalPlanItems: ResponseEducationalPlanItem[];\n}\n","import { getApiRequest } from 'api';\n\nimport { ScheduleResponseData } from '.';\n\n/**\n *\n * @param start - date 'YYYY-MM-DD'\n * @param end - date 'YYYY-MM-DD'\n * @returns\n */\nexport const getScheduleByDateRange = (\n start: string,\n end: string,\n isPublished?: boolean,\n): Promise => {\n return getApiRequest(\n `/schedule/?datetime_start=${start}&datetime_end=${end}${isPublished ? '&lesson_is_published=true' : ''}`,\n );\n};\n","import { getApiRequest } from 'api';\n\nimport { ScheduleResponseData } from '.';\n\n/**\n *\n * @param start - date 'YYYY-MM-DD'\n * @param end - date 'YYYY-MM-DD'\n * @returns\n */\n\nexport const getUserScheduleByDateRange = async (\n userId: number,\n start: string,\n end: string,\n isPublished?: boolean,\n): Promise => {\n return await getApiRequest(\n `/schedule/user/${userId}/?datetime_start=${start}&datetime_end=${end}${\n isPublished ? '&lesson_is_published=true' : ''\n }`,\n );\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getScheduleByDateRange, getUserScheduleByDateRange } from 'api/services/schedule';\n\nimport { convertDateToHtmlDateString } from 'utils/date';\n\nexport const fetchSchedule = createAsyncThunk('schedule/fetchSchedule', (date: Date) => {\n const formatedDate = convertDateToHtmlDateString(date);\n return getScheduleByDateRange(formatedDate, formatedDate).then((scheduleData) => ({\n scheduleData,\n date: formatedDate,\n }));\n});\n\ntype GetScheduleParams = {\n start: string;\n end: string;\n};\n\nexport const getScheduleByDateRangeAction = createAsyncThunk(\n 'schedule/getSchedule',\n ({ start, end }: GetScheduleParams) => {\n return getScheduleByDateRange(start, end, true);\n },\n);\n\ntype GetUserScheduleParams = GetScheduleParams & { userId: number };\n\nexport const getUserScheduleAction = createAsyncThunk(\n 'schedule/getUserShedule',\n ({ userId, start, end }: GetUserScheduleParams) => {\n return getUserScheduleByDateRange(userId, start, end, true);\n },\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n createRevisionQuestion,\n deleteRevisionQuestion,\n PatchRevisionQuestionParams,\n PostRevisionQuestionParams,\n updateRevisionQuestion,\n} from 'api/services/revisionQuestion';\n\nexport const createRevisionQuestionAction = createAsyncThunk(\n 'revision/createRevisionQuestion',\n async (params: PostRevisionQuestionParams) => await createRevisionQuestion(params),\n);\n\nexport const updateRevisionQuestionAction = createAsyncThunk(\n 'revision/updateRevisionQuestion',\n async (params: PatchRevisionQuestionParams) => await updateRevisionQuestion(params),\n);\n\nexport const deleteRevisionQuestionAction = createAsyncThunk(\n 'revision/deleteRevisionQuestion',\n async (id: number) => await deleteRevisionQuestion(id),\n);\n","import { getApiRequest, universalApiRequest } from 'api';\nimport { AxiosRequestConfig } from 'axios';\nimport { IMetaCatalogRequestResponse, IMetaResponse } from 'types/meta';\n\nexport const loadMetaRequest = (): Promise => getApiRequest('/meta/');\n\nexport const loadMetaCatalogRequest = (config: AxiosRequestConfig): Promise =>\n universalApiRequest(config);\n","import { IEntitiesConfig, IMetaResponse } from 'types/meta';\n\nconst normalizeCatalog = (catalog: Array, url: string): Array => {\n if (url === '/specific-route/') {\n return catalog; // call normalized function here\n }\n return catalog;\n};\n\n/**\n * @description - переформатируем settings массив в объект\n * @param list\n */\n\nconst normalizeMetaOptionsList = (\n list: IMetaResponse,\n): {\n [key: string]: IEntitiesConfig;\n} => {\n const normalizedObj: { [key: string]: {} } = {};\n\n const parseSettingsList = (localList: Array) => {\n const newObj: { [key: string]: boolean } = {};\n localList.forEach((key) => {\n newObj[key] = true;\n });\n return newObj;\n };\n Object.keys(list).forEach((key) => {\n normalizedObj[key] = {\n ...normalizedObj[key],\n access: list[key].access,\n sorting: list[key].sorting || [],\n filters: (list[key].filters || []).map((item: { settings: Array }) => {\n return {\n ...item,\n settings: parseSettingsList(item.settings),\n };\n }),\n };\n });\n return normalizedObj;\n};\n\nexport { normalizeCatalog, normalizeMetaOptionsList };\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { loadMetaCatalogRequest, loadMetaRequest } from 'api/services/meta';\nimport { normalizeCatalog, normalizeMetaOptionsList } from 'store/normalizers/meta';\nimport { IMetaCatalogRequestPayload, IMetaMoreCatalogRequestPayload } from 'types/meta';\n\nexport const loadMetaAction = createAsyncThunk('meta/loadMeta', async () => {\n const response = await loadMetaRequest();\n return normalizeMetaOptionsList(response);\n});\n\nexport const loadMetaCatalogAction = createAsyncThunk(\n 'meta/loadMetaCatalog',\n async (payload: IMetaCatalogRequestPayload) => {\n const { catalogData, searchValue } = payload;\n const requestConfig = {\n url: catalogData?.url,\n params: {\n [catalogData?.query]: searchValue,\n limit: catalogData?.limit,\n currentPage: 1,\n },\n };\n const response = await loadMetaCatalogRequest(requestConfig);\n\n const normalizedRes = normalizeCatalog(response.results, catalogData?.url);\n return {\n url: catalogData?.url,\n list: normalizedRes,\n pagination: response.pagination,\n };\n },\n);\nexport const loadMoreMetaCatalogAction = createAsyncThunk(\n 'meta/loadMoreMetaCatalog',\n async (payload: IMetaMoreCatalogRequestPayload) => {\n const { catalogData, searchValue, page } = payload;\n const requestConfig = {\n url: catalogData?.url,\n params: {\n [catalogData?.query]: searchValue,\n currentPage: page,\n limit: catalogData?.limit,\n },\n };\n const response = await loadMetaCatalogRequest(requestConfig);\n\n const normalizedRes = normalizeCatalog(response.results, catalogData?.url);\n return {\n url: catalogData?.url,\n list: normalizedRes,\n pagination: response.pagination,\n };\n },\n);\n","import { getApiRequest, patchApiRequest, postApiRequest } from 'api';\nimport { MedicalCertificates, MedicalCertificatesReasons } from 'types/certificates';\n\nexport interface CertificateCreateProps {\n files: (File | undefined)[];\n student: number;\n startDate: string;\n expirationDate: string;\n type: MedicalCertificatesReasons;\n isApproved: boolean;\n isImage?: boolean;\n}\n\nexport interface CertificateUpdateProps {\n isApproved: boolean;\n startDate?: string;\n expirationDate?: string;\n type?: MedicalCertificatesReasons;\n comment?: string;\n}\n\nexport const getMedicalCertificates = async (student_ids?: number[]): Promise => {\n return await getApiRequest('/certificates/', {\n params: {\n student_ids: student_ids?.join(','),\n },\n });\n};\n\nexport const createMedicalCertificate = async ({\n files,\n startDate,\n expirationDate,\n student,\n type,\n isApproved,\n isImage,\n}: CertificateCreateProps): Promise => {\n const data = new FormData();\n\n files.forEach((file) => file && data.append('files', file));\n data.append('student', String(student));\n data.append('startDate', startDate);\n data.append('expirationDate', expirationDate);\n data.append('type', String(type));\n data.append('isApproved', String(isApproved));\n data.append('isImage', String(isImage));\n\n return await postApiRequest('/certificates/create/', data);\n};\n\nexport const updateMedicalCertificate = async (params: {\n data: CertificateUpdateProps;\n certificateId: number;\n}): Promise => {\n return await patchApiRequest(`/certificates/partial-update/${params.certificateId}/`, params.data);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n CertificateCreateProps,\n CertificateUpdateProps,\n createMedicalCertificate,\n getMedicalCertificates,\n updateMedicalCertificate,\n} from 'api/services/certificate/medicalCerificate';\n\nexport const getMedicalCertificatesAction = createAsyncThunk(\n 'certificate/getMedicalCertificates',\n (student_ids?: number[]) => {\n return getMedicalCertificates(student_ids);\n },\n);\n\nexport const createMedicalCertificateAction = createAsyncThunk(\n 'certificate/createMedicalCertificate',\n (data: CertificateCreateProps) => {\n return createMedicalCertificate(data);\n },\n);\n\nexport const updateMedicalCertificateAction = createAsyncThunk(\n 'certificate/updateMedicalCertificate',\n ({ data, certificateId }: { data: CertificateUpdateProps; certificateId: number }) => {\n return updateMedicalCertificate({ data, certificateId });\n },\n);\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { changeAssignmentAdditionalMarkAction, changeAssignmentMarksAction } from 'store/actions/marks';\nimport {\n deleteStudentTaskAction,\n fetchStudentHomeworksAction,\n getStudentTaskById,\n getStudentTaskPreview,\n getStudentTasksAction,\n} from 'store/actions/studentTasks';\nimport { FetchStatus } from 'types/api';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\nimport { IHomeworkItem } from 'types/homework';\nimport { LessonDetails } from 'types/lesson';\nimport { MarkScore } from 'types/mark';\nimport { StudentProfile } from 'types/students';\n\nexport interface StudentTasksState {\n fetchStatus: FetchStatus;\n studentTasks: IHomeworkItem[];\n studentData?: StudentProfile;\n lesson?: LessonDetails;\n taskFetchStatus: FetchStatus;\n task?: IHomeworkItem;\n taskPreviewStatus: FetchStatus;\n taskDeletingStatus: FetchStatus;\n taskPreview: AssignmentProgressPreview[];\n error: unknown;\n}\n\nexport const initialState: StudentTasksState = {\n fetchStatus: FetchStatus.INITIAL,\n taskFetchStatus: FetchStatus.INITIAL,\n taskDeletingStatus: FetchStatus.INITIAL,\n studentTasks: [],\n taskPreview: [],\n taskPreviewStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst studentTasksSlice = createSlice>({\n name: 'StudentTasks',\n initialState,\n reducers: {\n resetStudentTaskData() {\n return initialState;\n },\n resetStudentTask(state) {\n state.task = undefined;\n },\n resetStudentTaskStatus(state) {\n state.taskFetchStatus = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getStudentTasksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getStudentTasksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.studentTasks = payload[0] || [];\n state.lesson = payload[1];\n state.studentData = payload[2];\n state.error = null;\n });\n builder.addCase(getStudentTasksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(fetchStudentHomeworksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(fetchStudentHomeworksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.studentTasks = payload;\n state.error = null;\n });\n builder.addCase(fetchStudentHomeworksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getStudentTaskById.pending, (state) => {\n state.taskFetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getStudentTaskById.fulfilled, (state, { payload }) => {\n state.taskFetchStatus = FetchStatus.FETCHED;\n state.task = payload;\n state.studentTasks = state.studentTasks.map((task) => {\n if (task.id === payload.id) {\n return payload;\n }\n\n return task;\n });\n state.error = null;\n });\n builder.addCase(getStudentTaskById.rejected, (state, { error }) => {\n state.taskFetchStatus = FetchStatus.ERROR;\n state.task = undefined;\n state.error = error;\n });\n builder\n .addCase(getStudentTaskPreview.pending, (state) => {\n state.taskPreviewStatus = FetchStatus.FETCHING;\n })\n .addCase(getStudentTaskPreview.fulfilled, (state, { payload }) => {\n state.taskPreviewStatus = FetchStatus.FETCHED;\n state.taskPreview = payload;\n });\n builder\n .addCase(deleteStudentTaskAction.pending, (state) => {\n state.taskDeletingStatus = FetchStatus.FETCHING;\n })\n .addCase(deleteStudentTaskAction.fulfilled, (state) => {\n state.taskDeletingStatus = FetchStatus.FETCHED;\n });\n builder\n .addCase(changeAssignmentMarksAction.fulfilled, (state, { meta, payload }) => {\n state.studentTasks = state.studentTasks.map((task) => {\n if (Number(task.id) === meta.arg.taskId) {\n return {\n ...task,\n marks:\n task.marks?.map((mark) => {\n const changedMark = payload.find((newMark) => newMark.id === mark.id);\n if (changedMark) {\n return {\n ...mark,\n ...changedMark,\n score: changedMark.score as MarkScore,\n };\n }\n return mark;\n }) ?? [],\n };\n }\n\n return task;\n });\n })\n .addCase(changeAssignmentAdditionalMarkAction.fulfilled, (state, { meta, payload }) => {\n state.studentTasks = state.studentTasks.map((task) => {\n if (Number(task.id) === meta.arg.taskId) {\n return {\n ...task,\n teacherMark:\n task.teacherMark?.map((mark) => {\n const changedMark = payload.find((newMark) => newMark.id === mark.id);\n if (changedMark) {\n return {\n ...mark,\n ...changedMark,\n score: changedMark.score as MarkScore,\n };\n }\n return mark;\n }) ?? [],\n };\n }\n\n return task;\n });\n });\n },\n});\n\nexport const resetStudentTaskData = studentTasksSlice.actions\n .resetStudentTaskData as ActionCreatorWithoutPayload;\nexport const resetStudentTask = studentTasksSlice.actions.resetStudentTask as ActionCreatorWithoutPayload;\nexport const resetStudentTaskStatus = studentTasksSlice.actions.resetStudentTaskStatus as ActionCreatorWithoutPayload;\nexport const studentTasksReducer = studentTasksSlice.reducer;\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { changeAdaptation, ChangeAdaptationParams, getAdaptation } from 'api/services/adaptation';\n\nexport const getAdaptationAction = createAsyncThunk('adaptation/getAdaptation', (studentId: number) =>\n getAdaptation(studentId),\n);\n\nexport const changeAdaptationAction = createAsyncThunk(\n 'adaptation/changeAdaptation',\n (changeParams: ChangeAdaptationParams[] & { studentId?: number }) =>\n Promise.all(changeParams.map((changeParam) => changeAdaptation(changeParam))),\n);\n","import { getApiRequest, patchApiRequest } from 'api';\n\nexport interface AdaptationItem {\n id: number;\n adaptation: string;\n done: boolean;\n}\n\nexport interface ChangeAdaptationParams {\n id: number;\n done: boolean;\n}\n\nexport const getAdaptation = (studentId: number): Promise =>\n getApiRequest(`/adaptation/${studentId}/`);\n\nexport const changeAdaptation = ({ id, ...restChangeParams }: ChangeAdaptationParams): Promise =>\n patchApiRequest(`/adaptation/partial-update/${id}/`, restChangeParams);\n","export enum AssignmentLevels {\n ADMINISTRATIVE = 'administrative',\n TEACHER = 'teacher',\n}\nexport enum ExecutionTimes {\n IN_CLASS = 'in_class',\n AT_HOME = 'at_home',\n}\nexport enum VerificationTypes {\n MANUAL = 'manual',\n AUTO = 'auto',\n}\n\nexport type AssignmentType = {\n id: number;\n title: string;\n attemptsQuantity: number;\n verificationType: VerificationTypes[]; // тип проверки: ручная или автоматическая\n executionTime: ExecutionTimes[]; // время выполнения задания: дома или на уроке\n isMandatory: boolean; // обязательный или необязательный\n assignmentLevel: AssignmentLevels;\n weight?: number;\n delayAutoCompletion?: number; // количество минут после soft-deadline для отправки ДЗ\n};\n\nexport type TAssignmentItem = {\n id: number;\n title: string;\n description?: string;\n topic: {\n id: number;\n title: string;\n };\n isTemplate: boolean;\n type: AssignmentType;\n lesson: {\n id: number;\n };\n author: number;\n};\n\nexport type AssignmentResponse = {\n id: number;\n lesson: number;\n type: AssignmentType;\n author: number;\n title: string;\n description: string;\n isTemplate: boolean;\n courseGroup?: number;\n};\n\nexport type TNormalizedQuestion = {\n questionNumber: number;\n questionsCount: number;\n searchBlocksCount: number;\n};\n","import {\n EntityTypes,\n getEntityDataByType,\n INSERT_WORD_REPLACE,\n insertationToTemplate,\n} from '@lms-elements/custom-editor';\nimport { createDefaultQuestion, IQuestionForTeacher } from '@lms-elements/test-task';\nimport { IDetailedAnswerOption } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/DetailedAnswerFields';\nimport { IMultipleAnswerOption } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/MultipleAnswerFields';\nimport { IOpenAnswerOption } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/OpenAnswerFields';\nimport { truthfulnessArr } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/OpenAnswerFields/OpenAnswerFields.types';\nimport { CodifierResponseData, CodifierSkillsResponseData } from 'api/services/codifier';\nimport { PostQuestion, QuestionStatus, ResponseQuestionDetailed } from 'api/services/questionBank';\nimport { DifficultyEnum } from 'api/services/questionCreate';\nimport { convertFromRaw, convertToRaw, EditorState, RawDraftContentState } from 'draft-js';\nimport convertToHtml from 'draftjs-to-html';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n questionType,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\n\nimport { getLessonLocation, getSkillLocation } from 'components/Codifier/utils';\nimport { getLocationSkillString, getLocationString } from 'components/QuestionLocationDropdown/utils';\nimport { getQuestionType, getQuestionTypeForBackend } from 'utils/questions';\n\nimport { IFormValuesCreateQuestions, QuestionMarkup } from './QuestionCreationPage.types';\n\ntype insertWordsData = {\n key: string;\n val: {\n data: {\n options: string[];\n text: string;\n };\n };\n};\n\nexport const getQuestionText = (question: EditorState | string): string =>\n typeof question === 'object' ? question.getCurrentContent().getPlainText() : question;\n\nexport const getQuestionContent = (question: EditorState | string): string | undefined =>\n typeof question === 'object' ? JSON.stringify(convertToRaw(question.getCurrentContent())) : undefined;\n\nexport const getDifficultyForBackend = (difficulty: string): DifficultyEnum => {\n switch (difficulty) {\n case 'Лёгкая':\n return DifficultyEnum.easy;\n case 'Средняя':\n return DifficultyEnum.medium;\n default:\n return DifficultyEnum.hard;\n }\n};\n\nexport const getDifficulty = (difficulty: string | undefined): string => {\n switch (difficulty) {\n case DifficultyEnum.easy:\n return 'Лёгкая';\n case DifficultyEnum.medium:\n return 'Средняя';\n default:\n return 'Тяжёлая';\n }\n};\n\nexport const getAnswerOptionText = (option: EditorState | string): string =>\n typeof option === 'object' ? option.getCurrentContent().getPlainText() : option;\n\nconst getAnswerOption = (option: EditorState | string) =>\n typeof option === 'object'\n ? JSON.stringify(convertToRaw(option.getCurrentContent()))\n : JSON.stringify({ text: option });\n\nexport const getQuestionAnswersData = (\n questionData: IQuestionForTeacher,\n markups?: QuestionMarkup,\n): TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData => {\n const { type, question, randomOrder, answerOptions, rightAnswer } = questionData;\n let questionAnswersData = {} as\n | TestQuestionData\n | InsertWordQuestionData\n | TrueFalseQuestionData\n | EssayQuestionData\n | TextQuestionData;\n switch (type) {\n case 'detailed':\n questionAnswersData =\n answerOptions?.reduce(\n (result, answer) => {\n return {\n acceptFile: result.acceptFile && (answer as IDetailedAnswerOption).isFileAvailable,\n acceptText: result.acceptFile && (answer as IDetailedAnswerOption).isTextAvailable,\n };\n },\n { acceptFile: true, acceptText: true } as EssayQuestionData,\n ) || ({ acceptFile: true, acceptText: true } as EssayQuestionData);\n break;\n case 'insert-words':\n getEntityDataByType(question as EditorState, 'INSERT_WORD' as EntityTypes).forEach(\n ({ key, val }: insertWordsData) => {\n if ((questionAnswersData as InsertWordQuestionData).gaps) {\n (questionAnswersData as InsertWordQuestionData).gaps.push({\n index: Number(key),\n wordOptions: [\n { word: val.data.text },\n ...val.data.options.map((option) => {\n return {\n word: option,\n };\n }),\n ],\n });\n } else {\n questionAnswersData = {\n gaps: [\n {\n index: Number(key),\n wordOptions: [\n { word: val.data.text },\n ...val.data.options\n .filter((option) => option.trim().length > 0)\n .map((option) => {\n return {\n word: option,\n };\n }),\n ],\n },\n ],\n };\n }\n },\n );\n break;\n case 'multiple':\n questionAnswersData = {\n randomAnswerOrder: Boolean(randomOrder),\n answerOptions: (answerOptions as IMultipleAnswerOption[]).map((option, index) => {\n return {\n content: getAnswerOption(option.answer),\n html: (markups?.answersHTML || [])[index],\n text: getAnswerOptionText(option.answer),\n correct: option.isCorrect,\n };\n }),\n } as TestQuestionData;\n break;\n case 'open':\n questionAnswersData = {\n randomAnswerOrder: Boolean(randomOrder),\n answerOptions: ((answerOptions as IOpenAnswerOption[]) ?? []).map((option) => {\n return {\n text: getAnswerOptionText(option.answer),\n percentOfScore: parseInt(option.truthfulness.replace(/[^\\d]/g, '')),\n };\n }),\n } as TextQuestionData;\n break;\n default:\n questionAnswersData = { valid: rightAnswer === 'Верно' };\n break;\n }\n\n return questionAnswersData;\n};\n\nconst convertInsertWord = (editorState: EditorState) =>\n convertToHtml(convertToRaw(editorState.getCurrentContent()), undefined, undefined, ({ type }, text) => {\n if (type === EntityTypes.INSERT_WORD) {\n return INSERT_WORD_REPLACE;\n }\n return text as string;\n });\n\nexport const getPostQuestionData = (\n value: IFormValuesCreateQuestions,\n question: IQuestionForTeacher,\n topics: number[],\n skills: number[],\n questionType: questionType,\n markups?: QuestionMarkup,\n fileIds?: number[],\n): PostQuestion => {\n const questionHtml =\n questionType === 'insert-words' && question.question instanceof EditorState\n ? convertInsertWord(question.question)\n : markups?.questionHTML;\n\n return {\n text:\n questionType === 'insert-words' && question.question instanceof EditorState\n ? insertationToTemplate(question.question).replace(new RegExp(INSERT_WORD_REPLACE, 'g'), '[...]')\n : getQuestionText(question.question),\n content: getQuestionContent(question.question),\n html: questionHtml,\n answersType: getQuestionTypeForBackend(questionType),\n difficulty: getDifficultyForBackend(value.complexity),\n // TODO: изменить когда будет логика выставления оценки согласно отвеченным вопросам\n maximumScore: 1,\n topics: topics,\n skills: skills,\n status: value.toggle ? QuestionStatus.Published : QuestionStatus.NotPublished,\n data: getQuestionAnswersData(question, markups),\n fileIds: fileIds,\n };\n};\n\nexport const getInitFormValue = (isForMaterials: boolean, isPublished?: boolean): IFormValuesCreateQuestions => ({\n toggle: isForMaterials || Boolean(isPublished),\n complexity: 'Средняя',\n topicsLocation: '',\n skillsLocation: '',\n questions: [],\n isFromMaterials: isForMaterials,\n});\n\nexport const getInitFormValues = (\n question: ResponseQuestionDetailed,\n codifier: CodifierResponseData[],\n skills: CodifierSkillsResponseData[],\n isFromMaterials: boolean,\n): IFormValuesCreateQuestions => {\n const type = getQuestionType(question.answersType);\n const form: IFormValuesCreateQuestions = {\n toggle: true,\n complexity: '',\n topicsLocation: '',\n skillsLocation: '',\n questions: [],\n isFromMaterials: false,\n };\n form.isFromMaterials = isFromMaterials;\n form.complexity = getDifficulty(question.difficulty);\n form.toggle = question?.status === QuestionStatus.Published;\n form.topicsLocation = getLocationString(question.topics?.map((q) => getLessonLocation(codifier, q.id)) || []);\n form.skillsLocation = getLocationSkillString(\n question.skills ? question.skills.map((s) => getSkillLocation(skills, s.id)) : [],\n );\n form.questions = [createDefaultQuestion(type)].map((value) => value);\n form.questions[0].question =\n question.content && question.content !== '{}'\n ? EditorState.createWithContent(convertFromRaw(JSON.parse(question.content)))\n : question.text || '';\n form.questions[0].answerOptions = [];\n if (type === 'binary') {\n form.questions[0].rightAnswer = (question.data as TrueFalseQuestionData).valid ? 'Верно' : 'Неверно';\n }\n\n if (type === 'detailed') {\n form.questions[0].answerOptions.push({\n isFileAvailable: (question.data as EssayQuestionData).acceptFile,\n isTextAvailable: (question.data as EssayQuestionData).acceptText,\n });\n }\n\n if (type === 'multiple') {\n form.questions[0].randomOrder = (question.data as TestQuestionData).randomAnswerOrder;\n form.questions[0].answerOptions = (question.data as TestQuestionData).answerOptions.map((option) => {\n const isEmptyAnswer = option.content === '{}' || option.content === '';\n let answer: string | EditorState = '';\n\n if (!isEmptyAnswer) {\n const rawAnswer = JSON.parse(option.content) as { text: string } | RawDraftContentState;\n answer =\n Object.keys(rawAnswer).length === 1\n ? (rawAnswer as { text: string }).text\n : EditorState.createWithContent(convertFromRaw(rawAnswer as RawDraftContentState));\n }\n\n return {\n answer,\n isCorrect: option.correct,\n };\n });\n }\n\n if (type === 'open') {\n form.questions[0].randomOrder = (question.data as TextQuestionData).randomAnswerOrder;\n form.questions[0].answerOptions = (question.data as TextQuestionData).answerOptions?.map((option) => {\n return {\n answer: option.text,\n truthfulness: `${\n [100, 75, 50, 25].includes(option.percentOfScore) ? option.percentOfScore : 100\n } % от оценки` as typeof truthfulnessArr[number],\n };\n });\n }\n\n return form;\n};\n\nconst isEmptyQuestion = (question?: EditorState | string): boolean => {\n if (!question) return false;\n\n if (typeof question === 'string') {\n return question.trim().length === 0;\n }\n\n return question.getCurrentContent().getPlainText().trim().length === 0;\n};\n\nexport const validateQuestion = (questionData: IQuestionForTeacher): string | undefined => {\n const { type, ...question } = questionData;\n\n if (isEmptyQuestion(question.question)) {\n return 'question is empty';\n }\n\n switch (type) {\n case 'multiple':\n case 'open':\n if (!question.answerOptions?.length) {\n return 'no answer options';\n }\n\n return question.answerOptions.reduce((error, option) => {\n if ('answer' in option) {\n return isEmptyQuestion(option.answer) ? 'option answer is empty' : undefined;\n } else {\n return 'no answer field';\n }\n }, undefined);\n case 'insert-words':\n return getEntityDataByType(question.question as EditorState, 'INSERT_WORD' as EntityTypes).length > 0\n ? undefined\n : 'no gaps';\n default:\n return undefined;\n }\n};\n","import { getApiSsoRequest, postApiSsoRequest } from 'api';\nimport {\n ssoLoginUrl,\n ssoLogoutAllUrl,\n ssoLogoutUrl,\n ssoRefreshUrl,\n ssoResetPasswordConfirmUrl,\n ssoResetPasswordUrl,\n ssoResetPasswordValidateUrl,\n ssoVerifyUrl,\n} from 'src-new/constants/authUrl';\nimport { TAccess, TLogin, TLoginRes } from 'types/auth';\n\nimport { getRefreshToken } from 'utils/token';\n\nexport const ssoLogin = (params: TLogin): Promise => {\n return postApiSsoRequest(ssoLoginUrl, { ...params });\n};\nexport const ssoLogoutAll = (refreshToken: string): Promise => {\n return postApiSsoRequest(ssoLogoutAllUrl, { refresh: refreshToken });\n};\nexport const ssoLogout = (params?: { refresh?: string }): Promise => {\n return postApiSsoRequest(ssoLogoutUrl, params);\n};\nexport const ssoRefreshToken = (): Promise => {\n const refresh = getRefreshToken();\n if (refresh) {\n return postApiSsoRequest(ssoRefreshUrl, { refresh });\n }\n return postApiSsoRequest(ssoRefreshUrl);\n};\nexport const ssoVerifyToken = (token: string): Promise => {\n return postApiSsoRequest(ssoVerifyUrl, { token: token });\n};\nexport const ssoPasswordReset = (params: { email: string; realm: string }): Promise => {\n return postApiSsoRequest(ssoResetPasswordUrl, params);\n};\nexport const ssoPasswordResetConfirm = (params: { password: string; token: string }): Promise => {\n return postApiSsoRequest(ssoResetPasswordConfirmUrl, params);\n};\nexport const ssoPasswordResetValidate = (token: string): Promise => {\n return getApiSsoRequest(`${ssoResetPasswordValidateUrl}?token=${token}`);\n};\n","import { LearningMaterialsContent } from 'api/services/materials';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\nexport const checkIsExerciseFull = (material: LearningMaterialsContent): boolean => {\n return material.typeOfContent === ContentMaterialTypeEnum.exercise && !isNaN(Number(material.content));\n};\n","import { Header, HeaderSize } from '@lms-elements/materials-header';\nimport { IMaterialAudio } from '@lms-elements/materials-media/build/@types/packages/MaterialsMedia/src/Audio/Expanded/ExpandedAudioMaterial.types';\nimport { EditorState } from 'draft-js';\nimport { ContentMaterialTypeEnum, ExerciseData, IMaterial, IMaterialImage, IMaterialTable } from 'types/materials';\n\nexport const createDefaultMaterial = (\n id: number,\n type: ContentMaterialTypeEnum,\n isEditor: boolean,\n): IMaterial | undefined => {\n switch (type) {\n case ContentMaterialTypeEnum.text:\n return {\n id: id,\n type: type,\n textData: isEditor ? EditorState.createEmpty() : '',\n documentData: [],\n headerData: {} as Header,\n imageData: {} as IMaterialImage,\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.audio:\n case ContentMaterialTypeEnum.video:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {} as IMaterialImage,\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.kinescope:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {} as IMaterialImage,\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.photo:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {\n data: [],\n description: '',\n },\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.document:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {\n data: [],\n description: '',\n },\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.header:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {\n size: HeaderSize.LARGE,\n text: '',\n },\n imageData: {\n data: [],\n description: '',\n },\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.table:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {} as IMaterialImage,\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n size: { x: 0, y: 0 },\n table: [],\n html: [],\n widths: [],\n heights: [],\n minHeights: [],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n },\n exerciseData: {} as ExerciseData,\n isDeleted: false,\n };\n case ContentMaterialTypeEnum.exercise:\n return {\n id: id,\n type: type,\n textData: '',\n documentData: [],\n headerData: {} as Header,\n imageData: {} as IMaterialImage,\n audioData: {} as IMaterialAudio,\n videoData: { url: '' },\n files: [],\n html: '',\n url: '',\n tableData: {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable,\n exerciseData: {\n isFull: false,\n } as ExerciseData,\n isDeleted: false,\n };\n default:\n return undefined;\n }\n};\n","import { LearningMaterialsContent } from 'api/services/materials';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\nconst sortMaterials = (materials: LearningMaterialsContent[]): LearningMaterialsContent[] =>\n [...materials].sort((currentMaterial, nextMaterial) => (currentMaterial.order > nextMaterial.order ? 1 : 0));\n\nexport const filterMaterials = (\n materials: LearningMaterialsContent[],\n exercisesWithCorrectAnswers: number[],\n): LearningMaterialsContent[] => {\n const sortedMaterials = sortMaterials(materials);\n const filteredMaterials: LearningMaterialsContent[] = [];\n\n let needAddMaterials = true;\n sortedMaterials.forEach((material) => {\n if (!needAddMaterials) {\n return;\n }\n\n filteredMaterials.push(material);\n\n if (material.typeOfContent === ContentMaterialTypeEnum.exercise) {\n if (!exercisesWithCorrectAnswers.includes(material.id)) {\n needAddMaterials = false;\n }\n }\n });\n\n return filteredMaterials;\n};\n","import { LearningMaterialsContent } from 'api/services/materials';\n\nimport { checkIsExerciseFull } from './checkIsExerciseFull';\n\nexport const getExerciseQuestions = (materials: LearningMaterialsContent[]): number[] => {\n const questions = materials.reduce((questions, material) => {\n if (checkIsExerciseFull(material)) {\n questions.add(Number(material.content));\n }\n\n return questions;\n }, new Set());\n\n return Array.from(questions);\n};\n","import { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\nexport interface MaterialFile {\n materialIndex: number;\n file: File;\n}\n\nexport const getFiles = (materials: IMaterial[]): MaterialFile[] => {\n return materials.reduce((result, material, index) => {\n switch (true) {\n case !material.isDeleted &&\n material.type === ContentMaterialTypeEnum.audio &&\n material.audioData.file instanceof File:\n result.push({\n materialIndex: index,\n file: material.audioData.file as File,\n });\n break;\n case !material.isDeleted &&\n material.type === ContentMaterialTypeEnum.video &&\n material.videoData.file instanceof File:\n result.push({\n materialIndex: index,\n file: material.videoData.file as File,\n });\n break;\n case !material.isDeleted &&\n material.type === ContentMaterialTypeEnum.document &&\n material.documentData.some((value) => value instanceof File):\n result.push(\n ...material.documentData\n .filter((document) => document instanceof File)\n .map((document) => ({\n materialIndex: index,\n file: document as File,\n })),\n );\n break;\n default:\n break;\n }\n\n return result;\n }, [] as MaterialFile[]);\n};\n","import { IUploadedFile } from 'types/file';\nimport { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const getFilesForPatch = (material: IMaterial, createdFiles: IUploadedFile[]): number[] => {\n if (material.type === ContentMaterialTypeEnum.photo && material.imageData) {\n return material.imageData.data\n .filter((value) => createdFiles.some((file) => file.id === value.id))\n .map((value) => value.id || -1)\n .filter((value) => value !== -1);\n }\n return [];\n};\n","import { IPostMaterial, TMaterialType } from 'api/services/materials';\nimport { ContentState, convertToRaw, EditorState } from 'draft-js';\nimport { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const getMaterialsDataForPost = (\n material: IMaterial,\n lesson: number,\n isEditor: boolean,\n materialType: ContentMaterialTypeEnum,\n type: TMaterialType,\n markup?: string,\n): IPostMaterial => {\n let content = '.';\n let urls: { name: string; url: string }[] = [];\n let question: number | undefined = undefined;\n\n if (materialType === ContentMaterialTypeEnum.document || Array.isArray(material.documentData)) {\n urls = material.documentData\n .map((document) => {\n if (typeof document === 'string') {\n return { name: document, url: document };\n }\n\n if (!(document instanceof File)) {\n return document;\n }\n })\n .filter(Boolean) as { name: string; url: string }[];\n }\n\n switch (materialType) {\n case ContentMaterialTypeEnum.text:\n if (isEditor) {\n content = JSON.stringify(convertToRaw((material.textData as EditorState).getCurrentContent()));\n } else {\n content = material.textData as string;\n }\n break;\n case ContentMaterialTypeEnum.audio:\n content = JSON.stringify({\n url: typeof material.audioData === 'string' ? material.audioData : material.url,\n songName: material.audioData.songName || (material.audioData.file as File)?.name,\n });\n break;\n case ContentMaterialTypeEnum.video:\n case ContentMaterialTypeEnum.kinescope:\n content = JSON.stringify({\n url: typeof material.videoData.url === 'string' ? material.videoData.url : '',\n });\n break;\n case ContentMaterialTypeEnum.photo:\n content = JSON.stringify({\n data: material.imageData?.data ?? [],\n description: material.imageData.description || '',\n });\n break;\n case ContentMaterialTypeEnum.document:\n content = JSON.stringify({\n data: urls,\n });\n break;\n case ContentMaterialTypeEnum.header:\n content = JSON.stringify(material.headerData);\n break;\n case ContentMaterialTypeEnum.table:\n content = JSON.stringify({\n ...material.tableData,\n table: {\n ...material.tableData.table,\n table: material.tableData.table.table?.map((row) =>\n row.map((cell) =>\n typeof cell === 'string'\n ? convertToRaw(ContentState.createFromText(cell))\n : convertToRaw(cell?.getCurrentContent()),\n ),\n ),\n editorBuffer: convertToRaw(\n typeof material.tableData.table.editorBuffer === 'string'\n ? ContentState.createFromText(material.tableData.table.editorBuffer)\n : material.tableData.table.editorBuffer.getCurrentContent(),\n ),\n },\n });\n break;\n case ContentMaterialTypeEnum.exercise:\n content = JSON.stringify(material.exerciseData.questionId || '');\n question = material.exerciseData.questionId;\n break;\n }\n\n const typeOfContent =\n material.type === ContentMaterialTypeEnum.kinescope ? ContentMaterialTypeEnum.video : material.type;\n\n return {\n lesson,\n typeOfContent,\n content,\n html: materialType === ContentMaterialTypeEnum.text ? markup : '.',\n question,\n type,\n };\n};\n","import { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const getMaterialsFilesPost = (material: IMaterial): File | undefined => {\n switch (material.type) {\n case ContentMaterialTypeEnum.audio:\n return material.audioData.file instanceof File ? material.audioData.file : undefined;\n case ContentMaterialTypeEnum.video:\n case ContentMaterialTypeEnum.kinescope:\n return material.videoData.file instanceof File ? material.videoData.file : undefined;\n default:\n return undefined;\n }\n};\n","import { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const getMaterialsFilesPostArray = (material: IMaterial): File[] | undefined => {\n if (\n Array.isArray(material.documentData) &&\n material.type === ContentMaterialTypeEnum.document &&\n material.documentData.some((value) => value instanceof File)\n ) {\n return material.documentData.filter((value) => value instanceof File) as File[];\n }\n};\n","import { IMaterial } from 'types/materials';\n\nexport const getMinIdForFields = (fields: IMaterial[] = []): number => {\n return fields?.reduce((maxId, current) => (current.id > maxId ? current.id : maxId), 0) + 1;\n};\n","import { IMaterialFile } from 'api/services/materials';\nimport { FileTypes, IUploadedFile } from 'types/file';\nimport { IMaterial, IMaterialDocument } from 'types/materials';\n\nexport const getTempFiles = (tempFiles: IMaterialFile[], materials: IMaterial[]): IUploadedFile[] => {\n return tempFiles.flatMap((tempMaterialFile) => {\n const material = materials.find((material) => material.id === tempMaterialFile.material);\n\n return tempMaterialFile.files\n .filter(\n (file) =>\n material &&\n !(\n material.type === 'document' &&\n !material.documentData.some((document) => (document as IMaterialDocument).id === file.id)\n ),\n )\n .map((file) => ({\n id: file.id,\n file: file.fileUrl,\n materialId: tempMaterialFile.material,\n conferenceId: null,\n lessonId: null,\n type: FileTypes.COMMON,\n }));\n });\n};\n","import { CodifierElementIconEnum } from '@lms-elements/atomic';\nimport { ContentMaterialTypeEnum, MaterialType } from 'types/materials';\n\nexport const typesOfMaterials: Record = {\n [ContentMaterialTypeEnum.text]: {\n title: 'Текст',\n description: 'Форматирование, формулы',\n type: ContentMaterialTypeEnum.text,\n icon: CodifierElementIconEnum.text,\n },\n [ContentMaterialTypeEnum.table]: {\n title: 'Таблица',\n description: 'Данные, ячейки',\n type: ContentMaterialTypeEnum.table,\n icon: CodifierElementIconEnum.table,\n },\n [ContentMaterialTypeEnum.header]: {\n title: 'Заголовок',\n description: 'Заголовки, текст, формула',\n type: ContentMaterialTypeEnum.header,\n icon: CodifierElementIconEnum.header,\n },\n [ContentMaterialTypeEnum.audio]: {\n title: 'Аудиофайл',\n description: 'Ссылки и файлы',\n type: ContentMaterialTypeEnum.audio,\n icon: CodifierElementIconEnum.audio,\n },\n [ContentMaterialTypeEnum.video]: {\n title: 'Видеофайл',\n description: 'Ссылки и файлы',\n type: ContentMaterialTypeEnum.video,\n icon: CodifierElementIconEnum.video,\n },\n [ContentMaterialTypeEnum.kinescope]: {\n title: 'Видео из Kinescope',\n description: 'Ссылки',\n type: ContentMaterialTypeEnum.kinescope,\n icon: CodifierElementIconEnum.video,\n },\n [ContentMaterialTypeEnum.document]: {\n title: 'Документ - файл',\n description: 'Docx, pdf, pptx',\n type: ContentMaterialTypeEnum.document,\n icon: CodifierElementIconEnum.document,\n },\n [ContentMaterialTypeEnum.photo]: {\n title: 'Изображение',\n description: 'Jpeg, png, bmp, tiff',\n type: ContentMaterialTypeEnum.photo,\n icon: CodifierElementIconEnum.image,\n },\n [ContentMaterialTypeEnum.exercise]: {\n title: 'Упражнение',\n description: 'Автопроверка',\n type: ContentMaterialTypeEnum.exercise,\n icon: CodifierElementIconEnum.exercise,\n },\n};\n\nexport const getTypeOfMaterials = (types: ContentMaterialTypeEnum[]): MaterialType[] => {\n return types.map((type) => typesOfMaterials[type]);\n};\n","import { convertToRaw, EditorState } from 'draft-js';\nimport { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const materialFieldValidation = (value?: IMaterial): string | undefined => {\n if (value?.isDeleted) {\n return undefined;\n }\n\n switch (value?.type) {\n case ContentMaterialTypeEnum.exercise:\n return !value.exerciseData.questionId ? 'Упражнение нельзя создать без вопроса' : undefined;\n case ContentMaterialTypeEnum.header:\n return !value.headerData.text ? 'Заголовок не может быть пустым' : undefined;\n case ContentMaterialTypeEnum.audio:\n return !value.audioData.file ? 'Нужно добавить файлы' : undefined;\n case ContentMaterialTypeEnum.video:\n case ContentMaterialTypeEnum.kinescope:\n return !value.videoData.url && !value.videoData ? 'Нужно добавить ссылку на видео' : undefined;\n case ContentMaterialTypeEnum.document:\n return !value.documentData.length ? 'Материал \"документ\" не может быть пустым' : undefined;\n case ContentMaterialTypeEnum.photo:\n return !value.imageData?.data.length ? 'Нет выбранных изображений' : undefined;\n case ContentMaterialTypeEnum.text:\n return !convertToRaw((value.textData as EditorState).getCurrentContent()).blocks.some((block) =>\n Boolean(block.text),\n )\n ? 'Отсутсвует текст'\n : undefined;\n case ContentMaterialTypeEnum.table:\n return !value.tableData?.table?.widths?.length ? 'Таблица не инициализирована' : undefined;\n default:\n return undefined;\n }\n};\n\nexport const materialFormValidation = (values: {\n materials: IMaterial[];\n}): Record> => {\n const error = { materials: [] } as Record>;\n\n values.materials.forEach((value, index) => {\n error.materials[index] = materialFieldValidation(value);\n });\n\n return error;\n};\n","import { checkIsKinescopeUrlValid } from '@fsd-features/AddKinescopeVideo';\nimport { Header } from '@lms-elements/materials-header';\nimport { ImageData } from '@lms-elements/materials-image';\nimport { IUploadAudioProps } from '@lms-elements/materials-media/build/@types/packages/MaterialsMedia/src/Audio/Expanded/ExpandedAudioMaterial.types';\nimport { IMaterialFile, LearningMaterialsContent } from 'api/services/materials';\nimport { ResponseQuestion } from 'api/services/questionBank';\nimport { ContentState, convertFromRaw, EditorState, RawDraftContentState } from 'draft-js';\nimport {\n ContentMaterialTypeEnum,\n ExerciseData,\n IMaterial,\n IMaterialDocument,\n IMaterialImage,\n IMaterialTable,\n} from 'types/materials';\n\nimport { getFileTitle } from 'utils/file';\nimport { getStudentQuestionsData, normalizeQuestionData, StudentAnswerData } from 'utils/questions';\n\ninterface NormalizeMaterialsDataParams {\n materials: (LearningMaterialsContent & { isDeleted?: boolean })[];\n files: IMaterialFile[];\n questions?: ResponseQuestion[];\n answers?: {\n [exerciseId: number]: StudentAnswerData;\n };\n}\n\nexport const normalizeMaterialsData = (params: NormalizeMaterialsDataParams): IMaterial[] => {\n const { materials, files, questions, answers } = params;\n\n return [...materials]\n .sort((a, b) => a.order - b.order)\n .map((value) => {\n let textData: string | EditorState = '';\n let documentData: (File | string | IMaterialDocument)[] = [];\n let headerData: Header = {} as Header;\n let imageData: IMaterialImage = {} as IMaterialImage;\n let audioData = { file: {} as IUploadAudioProps, songName: '' };\n let videoData = { url: '' };\n let url = undefined;\n let tableData = {\n table: {\n table: [[EditorState.createEmpty()]],\n editorBuffer: EditorState.createEmpty(),\n },\n title: '',\n } as IMaterialTable;\n let exerciseData = {} as ExerciseData;\n\n if (value.typeOfContent === ContentMaterialTypeEnum.audio) {\n const fileUrl = files?.find((file) => file.material === value.id)?.files[0]?.fileUrl || '';\n const content = JSON.parse(value.content) as { url: string; songName: string };\n url = fileUrl || content.url;\n audioData = {\n file: {} as IUploadAudioProps,\n songName: content.songName,\n };\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.video) {\n const fileUrl = files?.find((file) => file.material === value.id)?.files[0]?.fileUrl || '';\n const content = JSON.parse(value.content) as { url: string };\n let correctEmbedUrl = '';\n if (correctEmbedUrl.includes('youtube')) {\n const embedVideo = content.url.replace('watch?v=', 'embed/');\n correctEmbedUrl = embedVideo;\n } else if (correctEmbedUrl.includes('vimeo')) {\n const embedVideo = content.url.replace('vimeo.com', 'player.vimeo.com/video');\n correctEmbedUrl = embedVideo;\n } else if (correctEmbedUrl.includes('facebook')) {\n const startUrl = 'https://www.facebook.com/plugins/video.php?href=';\n const embedVideo = correctEmbedUrl.replace('/', '%2F').replace(':', '%3A');\n correctEmbedUrl = startUrl + embedVideo;\n }\n\n videoData = { url: correctEmbedUrl || fileUrl || content.url };\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.text) {\n const isTextarea = JSON.parse(value.content) === value.content ? true : false;\n if (isTextarea) {\n textData = value.content;\n } else {\n try {\n const content = convertFromRaw(JSON.parse(value.content) as RawDraftContentState);\n textData = EditorState.createWithContent(content);\n } catch (error) {\n textData = EditorState.createWithContent(ContentState.createFromText(value.content));\n }\n }\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.photo) {\n const imageFiles = files.find((file) => file.material === value.id)?.files || [];\n\n const content = JSON.parse(value.content) as {\n data: ImageData[];\n description: string;\n };\n\n /**\n * При копировании курса изменяются id файлов в новосозданном курсе, поэтому id'шники, которые хранятся в content'е становятся неактуальными\n * Для того, чтобы сохранить выбранную последовательность картинок, нужно собрать все старые id (contentIds), и определить исходную последовательность создания файлов (initialIds)\n * На основании этих двух последовательностей можно определить в какой последовательности нужно отрисовывать файлы с новыми id\n * */\n if (content.data) {\n const contentIds = content?.data?.map((imageData) => imageData.id)?.filter(Boolean) as number[];\n const initialIds = [...contentIds]?.sort((a, b) => b - a);\n\n imageData = {\n ...content,\n data:\n content?.data?.map((imageFile) => {\n if (!imageFile.id) {\n return imageFile;\n }\n\n const fileIndex = initialIds.findIndex((id) => id === imageFile.id);\n const currentFile = imageFiles[fileIndex];\n\n if (currentFile) {\n return {\n ...imageFile,\n data: currentFile.fileUrl,\n };\n } else {\n return imageFile;\n }\n }) ?? [],\n };\n } else {\n imageData = {\n data: [\n {\n data: '',\n width: 0,\n },\n ],\n description: '',\n };\n }\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.document) {\n const contentData = (JSON.parse(value.content) as { data: IMaterialDocument[] }) || { data: [] };\n const filesData =\n files\n .find((file) => file.material === value.id)\n ?.files?.map((file) => ({\n id: file.id,\n name: getFileTitle(file.title, file.fileExtension),\n url: file.fileUrl,\n })) || [];\n filesData?.forEach((file) => {\n const contentDataIndex = contentData?.data?.findIndex((document) => document.id === file.id);\n if (contentDataIndex !== -1 && contentData?.data) {\n contentData.data[contentDataIndex] = file;\n } else {\n contentData?.data?.push(file);\n }\n });\n documentData = contentData?.data;\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.header) {\n headerData = JSON.parse(value.content) as Header;\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.table) {\n const content = JSON.parse(value.content) as {\n table: {\n size: { x: number; y: number };\n table?: Array;\n html: Array;\n widths: number[];\n heights: number[];\n minHeights: number[];\n editorBuffer: RawDraftContentState;\n };\n title: string;\n };\n\n const editorBuffer = EditorState.createWithContent(convertFromRaw(content.table.editorBuffer));\n\n const table = content?.table?.table?.map((row) =>\n row.map((cell) => {\n const content =\n typeof cell === 'string' ? ContentState.createFromText(cell) : convertFromRaw(cell);\n return EditorState.createWithContent(content);\n }),\n );\n\n tableData = {\n ...content,\n table: {\n ...content.table,\n editorBuffer,\n table,\n },\n };\n }\n\n if (value.typeOfContent === ContentMaterialTypeEnum.exercise && questions?.length) {\n const questionData = questions?.find((question) => question.id === Number(value.content));\n\n if (questionData) {\n const answer = answers && answers[value.id] ? answers[value.id] : undefined;\n const [studentQuestionsData] = getStudentQuestionsData([questionData]);\n exerciseData = {\n ...normalizeQuestionData(studentQuestionsData, answer),\n isFull: true,\n questionId: Number(value.content),\n isActual: studentQuestionsData.isActual,\n };\n }\n }\n\n const typeOfContent =\n value.typeOfContent === ContentMaterialTypeEnum.video && checkIsKinescopeUrlValid(videoData.url)\n ? ContentMaterialTypeEnum.kinescope\n : value.typeOfContent;\n return {\n textData,\n documentData,\n headerData,\n imageData,\n audioData,\n videoData,\n tableData,\n files:\n files.filter((file) => file.material === value.id)?.flatMap((file) => file.files) || ([] as File[]),\n url,\n id: value.id,\n type: typeOfContent,\n html: value.html || '',\n exerciseData,\n isDeleted: Boolean(value.isDeleted),\n };\n });\n};\n","export interface FiltersQuestionBank {\n search?: string;\n filterType: string;\n filterDifficulty: string;\n sortDate: string;\n status: string;\n}\n\nexport enum Status {\n All = 'all',\n Published = 'published',\n NotPublished = 'not_published',\n OnRevision = 'on_revision',\n}\n\nexport enum StatusDropdownLabels {\n All = 'Показать все',\n Published = 'Показать утвержденные',\n NotPublished = 'Показать неутвержденные',\n OnRevision = 'Показать на доработке',\n}\n","const getQuestionPage = (): string => {\n return `cy-questions-bank-page-principal`;\n};\n\nconst getDropdownContainer = (): string => {\n return `cy-questions-bank-page-principal-dropdown`;\n};\n\nconst getDropdownSubjectContainer = (subject: number): string => {\n return `cy-questions-bank-page-principal-dropdown-subject-${subject}`;\n};\n\nconst getParallelContainer = (parallel: number): string => {\n return `cy-questions-bank-page-principal-parallel-${parallel}`;\n};\n\nconst getSectionContainer = (section: number): string => {\n return `cy-questions-bank-page-principal-section-${section}`;\n};\n\nconst getBlockContainer = (block: number): string => {\n return `cy-questions-bank-page-principal-block-${block}`;\n};\n\nconst getTopicContainer = (topic: number): string => {\n return `cy-questions-bank-page-principal-topic-${topic}`;\n};\n\nexport const questionsBankPageData = {\n getQuestionPage,\n getDropdownContainer,\n getDropdownSubjectContainer,\n selectedDropdownSubjectIndex: 0,\n getParallelContainer,\n selectedParallelIndex: 0,\n getSectionContainer,\n selectedSectionIndex: 0,\n getBlockContainer,\n selectedBlockIndex: 0,\n getTopicContainer,\n selectedTopicIndex: 0,\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useOuterClickField = (ref: RefObject, callback: () => void, isNeed = true): void => {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent): void => {\n if (ref.current && !ref.current.contains(event.target) && isNeed) {\n callback();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return (): void => document.removeEventListener('mousedown', handleClickOutside);\n }, [ref, callback, isNeed]);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport interface Subject {\n id: number;\n title: string;\n shortName: string;\n studentsCount: number;\n courseGroupsCount: number;\n courseQuantity: number;\n ordering: number;\n}\n\n/**\n * Returns subject data from server\n */\n\nexport const getSubjects = async (): Promise => {\n return await api\n .get, AxiosResponse>(`/subject/`)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getSubjectDetails = async (subjectId: number): Promise => {\n return await api\n .get, AxiosResponse>(`subject/${subjectId}/`)\n .then((res) => res.data || undefined)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getCourses } from 'api/services/course';\nimport { getCourseGroups } from 'api/services/courseGroups';\nimport { getStaffProfileById } from 'api/services/staffProfile/staffProfile';\nimport { getSubjectDetails, getSubjects } from 'api/services/subject';\n\nexport const getTeacherSubjects = createAsyncThunk('subject/getTeacherSubjects', () => {\n return getSubjects();\n});\n\nexport const getMethodistSubjects = createAsyncThunk('subject/getMethodistSubjects', (methodistId: number) => {\n return getStaffProfileById(methodistId).then(({ subjects }) => subjects);\n});\n\ntype CourseBySubjectParams = {\n subjectId: number;\n isTeacher?: boolean;\n};\n\nexport const getCoursesBySubject = createAsyncThunk(\n 'subject/getCoursesBySubject',\n ({ subjectId, isTeacher }: CourseBySubjectParams) => {\n return Promise.all([getCourses({ subject_id: subjectId }), getCourseGroups({ subject: subjectId })]).then(\n ([courses, courseGroups]) => ({\n subjectId,\n courses,\n courseGroups: courseGroups,\n isTeacher,\n }),\n );\n },\n);\n\nexport const getSubjectDetailsAction = createAsyncThunk('subject/getSubjectDetails', async (subjectId: number) => {\n return await getSubjectDetails(subjectId);\n});\n\nexport const getPrincipalSubjects = createAsyncThunk('subject/getPrincipalSubjects', () => {\n return getSubjects();\n});\n","import { getApiRequest } from 'api';\nimport { MarkData } from 'types/mark';\n\nexport interface AssignmentMark {\n id: number;\n marks: MarkData[];\n student: {\n id: number;\n };\n lesson: number;\n assignmentType: {\n id: number;\n title: string;\n assignmentLevel: string;\n };\n course: number;\n teacherMark: MarkData[];\n}\n\nexport interface AssignmentParams {\n lessonIds: number[];\n studentIds: number[];\n}\n\nexport interface AssignmentStudentParams {\n mark_date_before: string;\n mark_date_after: string;\n student: number;\n}\n\nexport interface AssignmentByDateParams {\n mark_date_before: string;\n mark_date_after: string;\n lessonIds: number[];\n studentIds: number[];\n}\nexport interface ITeacher {\n id: number;\n lastName: string;\n firstName: string;\n patronymic: string;\n}\n\nexport const getAssignmentProgressTeachersList = (id: number): Promise => {\n return getApiRequest(`/assignment-progress/teachers/?course=${id}`);\n};\n\nexport const getAssignmentMarks = (params: AssignmentParams): Promise => {\n return getApiRequest(\n `/assignment-progress/marks/?lesson_ids=${params.lessonIds.join(',')}&student_ids=${params.studentIds.join(\n ',',\n )}&status=completed`,\n );\n};\n\nexport const getAssignmentStudentMarks = (params: AssignmentStudentParams): Promise => {\n return getApiRequest(\n `/assignment-progress/marks/?student_ids=${params.student}&mark_date_before=${params.mark_date_before}&mark_date_after=${params.mark_date_after}&status=completed,on_check`,\n );\n};\n\nexport const getAssignmentMarksByDate = (params: AssignmentByDateParams): Promise => {\n return getApiRequest(\n `/assignment-progress/marks/?lesson_ids=${params.lessonIds.join(',')}&student_ids=${params.studentIds.join(\n ',',\n )}&mark_date_before=${params.mark_date_before}&mark_date_after=${\n params.mark_date_after\n }&status=completed,on_check`,\n );\n};\n","import { AcademicYear } from 'api/services/academicYear';\nimport { AssignmentMark } from 'api/services/assignment/getAssignmentMarks';\nimport { AttendanceResponseData } from 'api/services/attendance';\nimport { AttendanceMark } from 'api/services/attendance/getAttendanceMarks';\nimport { Absence } from 'api/services/attendance/getLessonAbsence';\nimport { Period } from 'api/services/courseGroups/getPeriods';\nimport { PeriodMark } from 'api/services/periodMark';\nimport { PeriodMarkFinal } from 'api/services/periodMark/getPeriodMarkFinal';\nimport { UserInfo } from 'api/services/user';\nimport moment from 'moment';\nimport { IOptions } from 'pages/ProctoringPage/types';\nimport {\n ICourseLesson,\n ICourseQuarter,\n ICourseStructure,\n ICourseTopic,\n IMark,\n IQuarterMark,\n IStatus,\n SubjectType,\n} from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { PeriodTopics } from 'store/actions/courseGroup';\nimport { FetchStatus } from 'types/api';\nimport { CourseGroup } from 'types/courseGroup';\nimport { Student } from 'types/students';\nimport { SubjectCourse } from 'types/subject';\n\nimport { Course } from 'utils/academicPerformance';\n\ntype SubjectsMap = {\n [subjectId: number]: {\n id: number;\n title: string;\n courses: SubjectCourse[];\n status: FetchStatus;\n };\n};\n\ninterface YearOptions {\n id: number;\n title: string;\n}\n\nexport interface AcademicStudent {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n school: string;\n enrollDate?: string;\n dismissDate?: string;\n}\n\nexport interface Teacher {\n id: number;\n firstName: string;\n lastName: string;\n patronymic: string;\n photoUrl?: string;\n mainRole: string;\n}\n\nexport const normalizeCourseGroups = (courseGroups: CourseGroup[]): Course[] => {\n return courseGroups.map((group) => ({\n id: group.id,\n courseId: group.course.id,\n groupId: group.id,\n title: group.course ? `${group?.course.title}, ${group.title}` : `${group.title}`,\n type: SubjectType.COMMON,\n }));\n};\n\nexport const getTeachersList = (courseGroups: CourseGroup): Teacher[] => {\n return courseGroups.teachers.map((group) => ({\n id: group.id,\n firstName: group.firstName,\n lastName: group.lastName,\n patronymic: group.patronymic,\n photoUrl: group.photoUrl,\n mainRole: group.mainRole,\n }));\n};\n\nexport const normalizeStudentProfile = (item: UserInfo): AcademicStudent[] => {\n const student = {\n id: item.id,\n firstName: item.firstName,\n lastName: item.lastName,\n photoUrl: item.photoUrl,\n school: 'Без прикрепления',\n };\n return Array.of(student);\n};\n\nexport const normalizeStudents = (dateStart?: string, dateEnd?: string, students?: Student[]): AcademicStudent[] => {\n return (\n students?.map((el) => {\n const isExpulDatesNotEqual =\n el.expulsionDate && dateEnd && moment(el.expulsionDate).format('L') !== moment(dateEnd).format('L');\n // const isEnrolDatesNotEqual =\n // el.enrolmentDate && dateStart && moment(el.enrolmentDate).format('L') !== moment(dateStart).format('L');\n return {\n ...el,\n school: el.school?.title ? el.school.title : 'Без прикрепления',\n enrollDate: el.enrolmentDate ? moment(el.enrolmentDate).format('L') : undefined,\n dismissDate: isExpulDatesNotEqual ? moment(el.expulsionDate).format('L') : undefined,\n };\n }) ?? []\n );\n};\n\nexport const normalizeSubjects = (teacher: SubjectsMap): YearOptions[] => {\n return Object.values(teacher)\n .map((teach) => ({\n id: teach.id,\n title: teach.title,\n }))\n .sort((a, b) => (a.title > b.title ? 1 : -1));\n};\n\nexport const checkMarkIsBetween = (start?: Date | string, end?: Date | string, markDate?: Date | string): boolean => {\n return markDate ? moment(markDate).isBetween(start, end, 'day', '[]') : false;\n};\nexport const checkIsNearestPeriod = (start?: Date | string, end?: Date | string, markDate?: Date | string): boolean => {\n return markDate ? moment(markDate).isSameOrBefore(start, 'month') : false;\n};\n\nexport const normalizeYearState = (id: number, title?: string): YearOptions => {\n return { id: id, title: title ? `${title}` : '' };\n};\n\nexport const normalizeYear = (academicYear: AcademicYear[]): YearOptions[] => {\n return academicYear.map((year) => ({\n id: year.id,\n title: year.title,\n }));\n};\n\nexport const getCourseStructure = (subject: number, periodTopics: PeriodTopics[]): ICourseStructure[] => {\n const returnArray: ICourseStructure[] = [];\n\n const value: ICourseStructure = {\n subject: subject,\n quarters: Array(),\n };\n for (let i = 0; i < periodTopics.length; i++) {\n const quarter = {\n quarter: i + 1,\n topics: Array(),\n };\n for (let j = 0; j < periodTopics[i].topics.length; j++) {\n const topic = {\n id: periodTopics[i].topics[j].id,\n title: periodTopics[i].topics[j].title ? `${j + 1}. ${periodTopics[i].topics[j].title}` : '',\n lessons: Array(),\n };\n let coun = 1;\n for (let k = periodTopics[i].topics[j].lesson.length; k > 0; k--) {\n topic.lessons.push({\n id: periodTopics[i].topics[j].lesson[k - 1].id,\n title: periodTopics[i].topics[j].lesson[k - 1].title\n ? `${coun}. ${periodTopics[i].topics[j].lesson[k - 1].title}`\n : '',\n });\n coun++;\n }\n quarter.topics.push(topic);\n }\n value.quarters.push(quarter);\n }\n returnArray.push(value);\n\n return returnArray;\n};\n\nexport const getMarksAndStats = (\n attendanceMarks: AttendanceMark[],\n assignmentMarks: AssignmentMark[],\n attendanceResponseData: AttendanceResponseData[],\n course: ICourseStructure[],\n students: AcademicStudent[],\n currentQuarter: number,\n): { marks: IMark[]; stats: IStatus[] } => {\n const marks: IMark[] = [];\n const stats: IStatus[] = [];\n\n course.forEach((subject) => {\n subject.quarters.forEach((quarter) => {\n const quarterForMark = quarter.quarter - 1;\n if (quarterForMark < 4 && quarterForMark + 1 === currentQuarter) {\n quarter.topics.forEach((topic) => {\n topic.lessons.forEach((lesson) => {\n students.forEach((student) => {\n if (attendanceMarks.length !== 0 && lesson.id !== undefined) {\n attendanceMarks.forEach((attendanceMark) => {\n if (\n attendanceMark.lesson.id === lesson.id &&\n attendanceMark.student === student.id\n ) {\n attendanceMark.marks.forEach((mark) => {\n marks.push({\n id: mark.id,\n subject: subject.subject,\n topic: topic.id,\n lesson: lesson.id,\n quarter: quarterForMark,\n comment: mark.comment,\n score: mark.score,\n student: student.id,\n weight: mark.weight,\n date: mark.date,\n needTrimComment: false,\n lessonType: 'attendance',\n });\n });\n }\n });\n }\n if (assignmentMarks.length !== 0 && lesson.id !== undefined) {\n const filteredAssignmentMarks = assignmentMarks.filter(\n (el) => el.lesson === lesson.id && el.student.id === student.id,\n );\n filteredAssignmentMarks\n .flatMap(({ teacherMark }) => teacherMark)\n .forEach((teacherMark) => {\n marks.push({\n id: teacherMark.id,\n subject: subject.subject,\n topic: topic.id,\n lesson: lesson.id,\n quarter: quarterForMark,\n comment: teacherMark.comment,\n score: teacherMark.score,\n student: student.id,\n weight: teacherMark.weight,\n date: teacherMark.date,\n needTrimComment: false,\n lessonType: 'assignment',\n });\n });\n filteredAssignmentMarks.forEach((assignmentMarks) => {\n if (assignmentMarks.marks.some((mark) => mark.score !== null)) {\n assignmentMarks.marks.forEach((mark) => {\n if (mark.score !== null || mark.comment !== '') {\n marks.push({\n id: assignmentMarks.id,\n subject: subject.subject,\n topic: topic.id,\n lesson: lesson.id,\n quarter: quarterForMark,\n comment: mark.comment,\n score: mark.score,\n student: student.id,\n weight: mark.weight,\n date: mark.date,\n needTrimComment: false,\n lessonType: 'assignment',\n });\n }\n });\n }\n });\n }\n if (attendanceResponseData.length !== 0 && lesson.id !== undefined) {\n attendanceResponseData.forEach((element) => {\n if (element.lesson === lesson.id && element.student.id === student.id) {\n stats.push({\n id: element.id,\n subject: subject.subject,\n topic: topic.id,\n lesson: lesson.id,\n quarter: quarterForMark,\n student: student.id,\n status: element.status,\n });\n }\n });\n }\n });\n });\n });\n }\n });\n });\n return { marks, stats };\n};\n\nconst convertDate = (date: string) => {\n return moment(date).format('YYYY-MM-DD');\n};\n\nexport const getStudentMarksAndStatuses = (\n attendanceMarks: AttendanceMark[],\n assignmentMarks: AssignmentMark[],\n lessonAbsence: Absence[],\n course: Course[],\n quarter: number,\n student: number,\n): { marks: IMark[]; stats: IStatus[] } => {\n const marks: IMark[] = [];\n const stats: IStatus[] = [];\n\n course.forEach((subject) => {\n attendanceMarks.forEach((attendanceMark) => {\n if (attendanceMark.course === subject.courseId) {\n attendanceMark.marks.forEach((mark) => {\n marks.push({\n id: mark.id,\n subject: subject.courseId,\n topic: subject.courseId,\n lesson: attendanceMark.lesson.id,\n comment: mark.comment,\n score: mark.score,\n weight: mark.weight,\n quarter: quarter,\n student: student,\n date: mark.date ? convertDate(mark.date) : '',\n needTrimComment: false,\n lessonType: 'attendance',\n });\n });\n }\n });\n assignmentMarks.forEach((assignmentMark) => {\n if (\n assignmentMark.student.id === student &&\n assignmentMark.marks.some((mark) => mark.score !== null && assignmentMark.course === subject.courseId)\n ) {\n assignmentMark.marks.forEach((mark) => {\n if (mark.score !== null || mark.comment !== '') {\n marks.push({\n id: mark.id,\n subject: subject.courseId,\n topic: subject.courseId,\n lesson: assignmentMark.lesson,\n quarter: quarter,\n comment: mark.comment,\n score: mark.score,\n student: student,\n weight: mark.weight,\n date: mark.date ? convertDate(mark.date) : '',\n needTrimComment: false,\n lessonType: 'assignment',\n });\n }\n });\n assignmentMark.teacherMark.forEach((teacherMark) => {\n marks.push({\n id: teacherMark.id,\n subject: subject.courseId,\n topic: subject.courseId,\n lesson: assignmentMark.lesson,\n quarter: quarter,\n comment: teacherMark.comment,\n score: teacherMark.score,\n student: student,\n weight: teacherMark.weight,\n date: teacherMark.date ? convertDate(teacherMark.date) : '',\n needTrimComment: false,\n lessonType: 'assignment',\n });\n });\n }\n });\n lessonAbsence.forEach((status) => {\n if (status.course === subject.courseId) {\n stats.push({\n id: status.id,\n subject: subject.courseId,\n topic: subject.courseId,\n lesson: status.lesson,\n quarter: quarter,\n student: student,\n status: status.status,\n date: status.datetimeStart ? convertDate(status.datetimeStart) : '',\n });\n }\n });\n });\n\n return { marks, stats };\n};\n\nexport const getMultipleSchoolsInputValue = (options: string[], values: { [key: string]: IOptions }): string => {\n const selectedValues = options.filter((_, index) => values[`${index}`]?.isSelected);\n\n if (selectedValues.length === options.length) {\n return 'Все школы';\n }\n\n const emptyPlaceholder = 'Выберите школу';\n\n if (selectedValues.length === 0) {\n return emptyPlaceholder;\n }\n\n return selectedValues.reduce((result, value, index, { length }) => {\n const valueWithoutIndex = value.split('--')[0];\n switch (true) {\n case index === 0:\n return valueWithoutIndex;\n case length === index + 1:\n return `${result}, ${valueWithoutIndex.toLowerCase()}`;\n default:\n return `${result}, ${valueWithoutIndex.toLowerCase()}`;\n }\n });\n};\n\nexport const getQuarterMarks = (\n students: AcademicStudent[],\n mark: PeriodMark[],\n periods: Period[],\n courseGroupId: number,\n type: string,\n): IQuarterMark[] => {\n const marks: IQuarterMark[] = [];\n\n periods.forEach((period) => {\n students.forEach((student) => {\n mark.forEach((element) => {\n if (element.student === student.id && element.period === period.id) {\n marks.push({\n id: element.id,\n subject: courseGroupId,\n quarter: periods.indexOf(period),\n average: element.avgScore,\n student: student.id,\n score:\n element.notCertified && element.score === null\n ? -1\n : type !== 'binary' && element.score !== null\n ? element.score\n : undefined,\n isTest: type === 'binary' ? true : false,\n testApproved: type === 'binary' && element.passed !== null ? element.passed : undefined,\n });\n }\n });\n });\n });\n return marks;\n};\n\nexport const getQuarterStudentMarks = (mark: PeriodMark[], periods: Period[], course: Course[]): IQuarterMark[] => {\n const marks: IQuarterMark[] = [];\n\n periods.forEach((period) => {\n course.forEach((course) => {\n mark.forEach((element) => {\n if (element.period === period.id && element.course === course.courseId) {\n marks.push({\n id: element.id,\n subject: course.courseId,\n quarter: periods.indexOf(period),\n average: element.avgScore,\n student: element.student,\n score: element.notCertified\n ? -1\n : course.periodType !== 'binary' && element.score !== null\n ? element.score\n : undefined,\n isTest: course.periodType === 'binary' ? true : false,\n testApproved:\n course.periodType === 'binary' && element.passed !== null ? element.passed : undefined,\n });\n }\n });\n });\n });\n return marks;\n};\n\nexport const getQuarterFinalMarks = (\n students: AcademicStudent[],\n mark: PeriodMarkFinal[],\n courseGroupId: number,\n periodsLength: number,\n type: string,\n): IQuarterMark[] => {\n const marks: IQuarterMark[] = [];\n\n students.forEach((student) => {\n mark.forEach((element) => {\n if (element.student === student.id) {\n marks.push({\n id: student.id,\n subject: courseGroupId,\n quarter: periodsLength,\n average: element.finalScore,\n student: student.id,\n score:\n type !== 'binary' && element.finalScore !== null\n ? element.finalScore\n : !element.finalNotCertified && type === 'binary' && !element.finalPassed\n ? -1\n : undefined,\n isTest: type === 'binary',\n testApproved: type === 'binary' ? element.finalPassed : undefined,\n });\n }\n });\n });\n return marks;\n};\n\nexport const getQuarterStudentFinalMarks = (\n course: Course[],\n mark: PeriodMarkFinal[],\n periodsLength: number,\n student: number,\n): IQuarterMark[] => {\n const marks: IQuarterMark[] = [];\n\n course.forEach((course) => {\n mark.forEach((element) => {\n if (element.course === course.courseId) {\n marks.push({\n id: course.courseId,\n subject: course.courseId,\n quarter: periodsLength,\n average: element.finalScore,\n student: student,\n score:\n course.periodType !== 'binary' && element.finalScore !== null\n ? element.finalScore\n : element.finalNotCertified\n ? -1\n : undefined,\n isTest: course.periodType === 'binary',\n testApproved: course.periodType === 'binary' ? element.finalPassed : undefined,\n });\n }\n });\n });\n return marks;\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n createMeetingFileAction,\n deleteMeetingFileAction,\n getCourseGroupMeetingFilesAction,\n getCourseMeetingFilesAction,\n updateMeetingFileAction,\n} from 'store/actions/meetingFiles';\nimport { FetchStatus } from 'types/api';\nimport { TPaginate } from 'types/libraryTypes';\nimport { TCourseGroupMeetingFile, TMeetingFile } from 'types/meetingFiles';\n\ninterface MeetingFilesState {\n getMeetingFilesStatus: FetchStatus;\n createMeetingFileStatus: FetchStatus;\n updateMeetingFileStatus: FetchStatus;\n deleteMeetingFileStatus: FetchStatus;\n courseMeetingFiles: TMeetingFile[];\n courseMeetingPaginate: TPaginate | undefined;\n courseGroupMeetingFiles: TCourseGroupMeetingFile[];\n courseGroupMeetingPaginate: TPaginate | undefined;\n error: unknown;\n}\n\nconst initialState: MeetingFilesState = {\n getMeetingFilesStatus: FetchStatus.INITIAL,\n createMeetingFileStatus: FetchStatus.INITIAL,\n updateMeetingFileStatus: FetchStatus.INITIAL,\n deleteMeetingFileStatus: FetchStatus.INITIAL,\n courseMeetingFiles: [],\n courseGroupMeetingFiles: [],\n courseGroupMeetingPaginate: undefined,\n courseMeetingPaginate: undefined,\n error: null,\n};\n\nexport const meetingFilesSlice = createSlice>({\n name: 'meetingFiles',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getCourseMeetingFilesAction.pending, (state) => {\n state.getMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseMeetingFilesAction.fulfilled, (state, { payload }) => {\n const { pagination, results } = payload;\n\n state.courseMeetingPaginate = pagination;\n state.courseMeetingFiles = results;\n state.error = null;\n state.getMeetingFilesStatus = FetchStatus.FETCHED;\n })\n .addCase(getCourseMeetingFilesAction.rejected, (state, { error }) => {\n state.getMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getCourseGroupMeetingFilesAction.pending, (state) => {\n state.getMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupMeetingFilesAction.fulfilled, (state, { payload }) => {\n const { pagination, results } = payload;\n\n state.courseGroupMeetingPaginate = pagination;\n state.courseGroupMeetingFiles = results;\n state.error = null;\n state.getMeetingFilesStatus = FetchStatus.FETCHED;\n })\n .addCase(getCourseGroupMeetingFilesAction.rejected, (state, { error }) => {\n state.getMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(createMeetingFileAction.pending, (state) => {\n state.getMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createMeetingFileAction.fulfilled, (state, { payload }) => {\n const { isCourseGroup, list, uploadedBy } = payload;\n\n if (isCourseGroup) {\n state.courseGroupMeetingFiles.push(list as TCourseGroupMeetingFile);\n } else {\n if (uploadedBy) {\n state.courseMeetingFiles.push({ ...(list as TMeetingFile), uploadedBy });\n } else {\n state.courseMeetingFiles.push(list as TMeetingFile);\n }\n }\n state.error = null;\n state.getMeetingFilesStatus = FetchStatus.FETCHED;\n })\n .addCase(createMeetingFileAction.rejected, (state, { error }) => {\n state.getMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(updateMeetingFileAction.pending, (state) => {\n state.getMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(updateMeetingFileAction.fulfilled, (state, { payload }) => {\n const { isCourseGroup, updatedFile, courseGroupMeetingFiles } = payload;\n\n if (isCourseGroup) {\n if (courseGroupMeetingFiles) {\n state.courseGroupMeetingFiles = courseGroupMeetingFiles.results;\n state.courseGroupMeetingPaginate = courseGroupMeetingFiles.pagination;\n } else {\n state.courseGroupMeetingFiles = state.courseGroupMeetingFiles.map((file) => {\n if (file.id === updatedFile.id) {\n return updatedFile as TCourseGroupMeetingFile;\n }\n return file;\n });\n }\n } else {\n state.courseMeetingFiles = state.courseMeetingFiles.map((file) => {\n if (file.id === updatedFile.id) {\n return updatedFile as TMeetingFile;\n }\n return file;\n });\n }\n state.error = null;\n state.getMeetingFilesStatus = FetchStatus.FETCHED;\n })\n .addCase(updateMeetingFileAction.rejected, (state, { error }) => {\n state.getMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(deleteMeetingFileAction.pending, (state) => {\n state.getMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(deleteMeetingFileAction.fulfilled, (state, { payload }) => {\n const { isCourseGroup, list } = payload;\n\n if (isCourseGroup) {\n state.courseGroupMeetingFiles = state.courseGroupMeetingFiles.filter(\n ({ id }) => !list.delete.includes(id),\n );\n } else {\n state.courseMeetingFiles = state.courseMeetingFiles.filter(({ id }) => !list.delete.includes(id));\n }\n state.error = null;\n state.getMeetingFilesStatus = FetchStatus.FETCHED;\n })\n .addCase(deleteMeetingFileAction.rejected, (state, { error }) => {\n state.getMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetMeetingFilesState = meetingFilesSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const meetingFilesReducer = meetingFilesSlice.reducer;\n","import { host } from 'constants/apiMethods';\n\nimport { api, getApiRequest, patchApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { StudentProfile } from 'types/students';\n\nexport interface PostStudentProfile {\n isAdaptation: boolean;\n}\n\nexport interface PostData {\n id: string;\n data: PostStudentProfile;\n}\n\nexport interface StudentsStatistics {\n studentsCount: number;\n studentsWithoutSchoolPartnerCount: number;\n studentsWithoutTariffCount: number;\n}\n\nexport interface StudentsStatisticsTariff {\n id: number;\n title: string;\n studentsCount: number;\n}\n\nexport const fetchStudentData = async (userId: number): Promise => {\n return await api\n .get>(`${host}/student-profile/${userId}/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const createStudentProfile = async (params: PostData): Promise => {\n return await patchApiRequest(\n `/student-profile/partial-update/${params.id}/`,\n params.data,\n );\n};\n\nexport const getStudentsStatistics = (): Promise => {\n return getApiRequest(`/students/statistics/`);\n};\n\nexport const getStudentsStatisticsTariff = (): Promise => {\n return getApiRequest(`/students/statistics-tariff/`);\n};\n","export enum ETagLabel {\n test_lesson = 'Контрольная работа',\n online_lesson = 'Онлайн-занятие',\n selfpreparation_lesson = 'Самоподготовка',\n assembly = 'Встреча с родителем',\n course_group_tag = '',\n}\n\nexport enum ETagMainColor {\n test_lesson = '#2F929A',\n online_lesson = '#0088E9',\n selfpreparation_lesson = '#e5a139',\n assembly = '#8F4AB0',\n course_group_tag = '#919399',\n}\nexport enum ETagBackColor {\n test_lesson = '#D1E6E8',\n online_lesson = '#EEF4FB',\n selfpreparation_lesson = '#f9e9cc',\n assembly = '#E8D8F4',\n course_group_tag = '#EDEEF2',\n}\nexport enum ETagIcons {\n test_lesson = 'pencil-l',\n online_lesson = 'webcam-l',\n selfpreparation_lesson = 'proktoring-s',\n assembly = 'user-s',\n course_group_tag = '',\n}\n","import React from 'react';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { useWindowResize } from 'hooks';\n\nimport { ETagBackColor, ETagIcons, ETagLabel, ETagMainColor } from './OnlineLessonTag.config';\nimport { TOnlineLessonTagProps } from './OnlineLessonTag.types';\n\nimport './OnlineLessonTag.style.scss';\nexport const OnlineLessonTag: React.FC = (props) => {\n const { type, text, isIconView = false } = props;\n const isMobile = useWindowResize();\n\n const label = type !== 'course_group_tag' ? ETagLabel[type] : text;\n\n if (isIconView) {\n return ;\n }\n if (label) {\n return (\n
\n \n
\n );\n }\n\n return null;\n};\n","import React, { useState } from 'react';\nimport { AppButton, useToaster } from '@frontend-modules/ui-kit';\nimport { onlineLessonsProvider } from '@fsd-entities/online-lessons';\n\nexport const MeetingEnterButton: React.FC<{ url: string }> = ({ url }) => {\n const [isEnterButtonLoading, setIsEnterButtonLoading] = useState(false);\n const { showErrorToast } = useToaster();\n\n const handleButtonClick = () => {\n setIsEnterButtonLoading(true);\n void onlineLessonsProvider\n .getOnlineLessonLink(url)\n .then(({ link, block }) => {\n if (!block && link) {\n window.open(link, '_blank', 'noopener noreferrer');\n } else {\n showErrorToast({\n message: 'Невозможно перейти в комнату',\n });\n }\n })\n .catch((err) => {\n showErrorToast({\n message: err.message,\n });\n })\n .finally(() => setIsEnterButtonLoading(false));\n };\n\n return ;\n};\n","import React from 'react';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { OnlineLessonTag } from '@fsd-entities/online-lessons/ui/OnlineLessonTag';\nimport { MeetingEnterButton } from '@fsd-features/online-lessons/EnterToOnlineLesson';\nimport { getUserName } from '@fsd-shared/utils';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { INotificationCardProps } from './NotificationCard.types';\n\nimport './NotificationCard.style.scss';\nexport const NotificationCard: React.FC = (props) => {\n const { data, isCollapsed = false, isMeetingStarted = false, handleCollapseBtnClick } = props;\n const { title, tags, url, type, users, description, canHide } = data;\n\n return (\n
\n {isCollapsed &&
}\n
\n \n
\n \n
\n
\n
\n
\n \n {tags?.map((tag, index) => (\n \n ))}\n
\n {canHide && (\n
\n \n
\n )}\n
\n
\n \n
\n
\n {users?.map((user) => {\n const name = getUserName(\n { name: user.firstName, surname: user.lastName, patronymic: user?.patronymic },\n 'NN:_:PP:_:SS',\n );\n return (\n
\n \n \n
\n );\n })}\n
\n \n \n
\n
\n
\n \n
\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { INotificationTimeIndicatorProps } from './NotificationTimeIndicator.types';\n\nimport './NotificationTimeIndicator.style.scss';\nexport const NotificationTimeIndicator: React.FC = (props) => {\n const { isCollapsed, isMeetingStarted, isMeetingFinished, time } = props;\n const timerLabel = isMeetingFinished ? 'Закончился' : isMeetingStarted ? 'Идёт' : 'Через';\n return (\n
\n \n \n
\n );\n};\n","import { getApiRequest } from 'api';\n\nexport interface PeriodMark {\n id: number;\n score: number | null;\n student: number;\n period: number;\n course: number;\n avgScore: number;\n passed: boolean | null;\n notCertified: boolean;\n}\n\nexport interface PeriodMarkParams {\n period: number[];\n course: number;\n students: number[];\n}\n\nexport const getPeriodMark = (params: PeriodMarkParams): Promise => {\n return getApiRequest(\n `/period-mark/?period=${params.period.join(',')}&course=${params.course}&students=${params.students.join(',')}`,\n );\n};\n\nexport const getPeriodStudentMark = (params: { periods: number[]; id: number }): Promise => {\n return getApiRequest(`/period-mark/?period=${params.periods.join(',')}&students=${params.id}`);\n};\n","import { getApiRequest } from 'api';\n\nexport interface PeriodMarkFinal {\n student: number;\n finalScore: number;\n course: number;\n finalPassed: boolean;\n finalNotCertified: boolean;\n}\n\nexport interface PeriodMarkFinalParams {\n course: number;\n students: number[];\n}\n\nexport const getPeriodMarkFinal = (params: PeriodMarkFinalParams): Promise => {\n return getApiRequest(`/period-mark/final/?course=${params.course}&students=${params.students.join(',')}`);\n};\n\nexport const getPeriodStudentMarkFinal = (id: number): Promise => {\n return getApiRequest(`/period-mark/final/?students=${id}`);\n};\n","import { patchApiRequest } from 'api';\n\nimport { PeriodMark } from './getPeriodMark';\n\nexport interface PatchPeriodMarkParams {\n score?: number | null;\n passed?: boolean | null;\n notCertified: boolean;\n id: string;\n}\n\nexport const patchPeriodMark = (params: PatchPeriodMarkParams): Promise => {\n return patchApiRequest(`/period-mark/partial-update/${params.id}/`, {\n score: params.score,\n passed: params.passed,\n notCertified: params.notCertified,\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { Period } from 'api/services/courseGroups/getPeriods';\nimport {\n getPeriodMark,\n getPeriodMarkFinal,\n getPeriodStudentMark,\n getPeriodStudentMarkFinal,\n patchPeriodMark,\n} from 'api/services/periodMark';\nimport { PatchPeriodMarkParams } from 'api/services/periodMark/patchPeriodMark';\nimport {\n AcademicStudent,\n getQuarterFinalMarks,\n getQuarterMarks,\n getQuarterStudentFinalMarks,\n getQuarterStudentMarks,\n} from 'pages/AcademicPerformance/utils';\n\nimport { Course } from 'utils/academicPerformance';\n\nexport const patchPeriodMarkAction = createAsyncThunk('periodMark/patchMark', async (params: PatchPeriodMarkParams) => {\n return await patchPeriodMark(params);\n});\n\nexport const getPeriodMarkAction = createAsyncThunk(\n 'periodMark/getMark',\n async (params: {\n course: number;\n students: number[];\n periods: Period[];\n groupId: number;\n student: AcademicStudent[];\n period: number[];\n periodMarkType: string;\n needFinalMark: boolean;\n needRewrite: boolean;\n }) => {\n const mark = await getPeriodMark({ ...params, period: params.period });\n const finalMark = params.needFinalMark ? await getPeriodMarkFinal(params) : [];\n return {\n periodMarks: getQuarterMarks(\n params.student,\n mark,\n params.periods,\n params.groupId,\n params.periodMarkType,\n ).concat(\n getQuarterFinalMarks(\n params.student,\n finalMark,\n params.groupId,\n params.periods.length,\n params.periodMarkType,\n ),\n ),\n needRewrite: params.needRewrite,\n };\n },\n);\n\nexport const getPeriodStudentMarkAction = createAsyncThunk(\n 'periodMark/getStudentMark',\n async (params: { student: number; periods: Period[]; course: Course[]; needFinalMark: boolean }) => {\n const allPeriods = params?.periods?.map((el) => el.id);\n const finalMark = params.needFinalMark ? await getPeriodStudentMarkFinal(params.student) : [];\n const mark = await getPeriodStudentMark({ periods: allPeriods, id: params.student });\n\n return getQuarterStudentMarks(mark, params.periods, params.course).concat(\n getQuarterStudentFinalMarks(params.course, finalMark, params.periods.length, params.student),\n );\n },\n);\n","import { api, deleteApiRequest, getApiRequest, postApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport {\n EssayAnswerData,\n EssayAnswerDataResponse,\n InsertWordsAnswerData,\n InsertWordsAnswerDataResponse,\n TestAnswerData,\n TestAnswerDataResponse,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\nimport { MarkScore } from 'types/mark';\n\nexport interface AnswerAttemptPostParams {\n assignmentProgress: number;\n answers?: {\n files?: number[];\n question: number;\n data: EssayAnswerData | InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\n }[];\n}\n\nexport interface AnswerAttemptPatchParams {\n answers?: {\n file?: File[];\n question: number;\n answerId?: number;\n data: EssayAnswerData | InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\n }[];\n}\n\ninterface Mark {\n id: number;\n score?: MarkScore;\n}\n\nexport interface AnswerAttemp {\n id: number;\n questionId: number;\n isCorrect: boolean;\n incomplete?: boolean;\n files?:\n | {\n id: number;\n url: string;\n title: string;\n }[]\n | null;\n data:\n | EssayAnswerDataResponse\n | InsertWordsAnswerDataResponse\n | TestAnswerDataResponse\n | TextAnswerData\n | TrueFalseAnswerData;\n}\n\nexport interface AnswerAttemptPostResponse {\n id: number;\n attempt: number;\n attemptsQuantity: number;\n mark: Mark | null;\n answers: {\n id: number;\n questionId: number;\n isCorrect: boolean;\n incomplete?: boolean;\n files?:\n | {\n id: number;\n url: string;\n title: string;\n }[]\n | null;\n data:\n | EssayAnswerDataResponse\n | InsertWordsAnswerDataResponse\n | TestAnswerDataResponse\n | TextAnswerData\n | TrueFalseAnswerData;\n }[];\n isEdited: boolean;\n selectedQuestions: number[];\n // Не приходит при патче и посте и для ученика\n student?: number;\n isDraft?: boolean;\n dateUpdate?: string;\n}\n\nexport const postAnswerAttempt = (params: AnswerAttemptPostParams): Promise => {\n return postApiRequest(`/api/v2/answer-attempt/`, params);\n};\n\nexport const patchAnswerAttempt = (params: {\n answerId: number;\n newAnswerAttemptParams: { files: number[] };\n}): Promise => {\n return api\n .patch(\n `/codifier/answer/partial-update/${params.answerId}/`,\n params.newAnswerAttemptParams,\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getAnswerAttemptInfo = (assignment: number): Promise => {\n return api\n .get>(`/codifier/answer-attempt/?assignment=${assignment}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const getAnswerAttemptsByProgress = (assignmentProgress: number): Promise => {\n return getApiRequest(`/codifier/answer-attempt/?assignment_progress=${assignmentProgress}`);\n};\n\nexport const deleteAnswerAttempt = (answerAttemptId: number): Promise => {\n return deleteApiRequest(`/codifier/answer-attempt/delete/${answerAttemptId}/`).then(() => answerAttemptId);\n};\n\nexport const deleteAnswerAttempts = (answerAttempts: number[]): Promise => {\n return deleteApiRequest('/codifier/answer-attempt/bulk-delete/', {\n data: { ids: answerAttempts },\n }).then(() => answerAttempts);\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\n\nexport interface ResponseTheme {\n id: number;\n order: number;\n title: string;\n description: string;\n isPublished?: boolean;\n}\n\n/**\n * Return course themes\n * @param courseId\n * @returns\n */\n\nexport const getThemes = (courseId: number): Promise => {\n return api\n .get>(`/topic/?course=${courseId}`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const publishTheme = (topicId: number): Promise =>\n api\n .patch(`/topic/publish/${topicId}/`)\n .then(() => topicId)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n\nexport interface PostThemeParams {\n course: number;\n title: string;\n description: string;\n}\n\nexport interface PostResponseTheme {\n id: number;\n title: string;\n description: string;\n course: string;\n isPublished: boolean;\n}\n\n/**\n * Creates new theme\n * @param themes theme data\n */\n\nexport const postTheme = (themes: PostThemeParams): Promise => {\n return api\n .post, AxiosResponse>(`/topic/create/`, {\n course: themes.course,\n title: themes.title,\n description: themes.description,\n })\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport interface PatchedTheme {\n id: number;\n title: string;\n description: string;\n}\n\nexport interface PatchedThemeResponse {\n id: number;\n title: string;\n description: string;\n isPublished: boolean;\n}\n\n/**\n *\n * @param data: {\n * id - theme id,\n * themeData - theme data\n * }\n * @returns theme\n */\n\nexport const patchTheme = ({ id, ...themeData }: PatchedTheme): Promise => {\n return api\n .patch, AxiosResponse>(\n `/topic/partial-update/${id}/`,\n themeData,\n )\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\n/**\n *\n * @param id theme id\n */\n\nexport const deleteTheme = (id: number): Promise => {\n return api\n .delete, AxiosResponse>(`/topic/delete/${id}/`)\n .then(() => id)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Latex from 'react-latex-next';\nimport { cn } from '@bem-react/classname';\nimport { ClockIcon, Comment } from '@lms-elements/icons';\nimport { getDateWithoutYear, trimString } from '@lms-elements/utils';\nimport { Tooltip } from 'src-new/components/lms-elements/Tooltip';\nimport { MarkMetaData, TooltipViewEnum } from 'src-new/components/lms-elements/Tooltip/Tooltip.types';\n\nimport { IMarkProps } from './Mark.types';\n\nimport './Mark.scss';\n\nconst CnMark = cn('mark');\n\nexport const Mark: React.FC = ({\n markId,\n comment,\n value,\n average,\n approved = true,\n hoverable = true,\n isPeriodMark,\n withDetailedTooltip,\n type,\n weight,\n date,\n deadline,\n showComment,\n isTestPassed,\n withAttendanceTooltip,\n attendenceData,\n commentLabel,\n filesLabel,\n files,\n needTrimComment = true,\n maxCommentLength = 95,\n isNotSelected,\n needHideWeight,\n onMarkClick,\n author,\n}) => {\n const markStatus = useMemo(() => {\n switch (value) {\n case 5:\n case 4:\n return 'good';\n case 3:\n return 'normal';\n case 2:\n return 'bad';\n case -1:\n return 'na';\n case 0:\n return 'comment';\n case null:\n return 'comment';\n case undefined:\n return isTestPassed ? 'accept' : 'failed';\n default:\n return 'comment';\n }\n }, [isTestPassed, value]);\n\n const showTooltip = useMemo(\n () => (isPeriodMark || withDetailedTooltip || comment || withAttendanceTooltip) && value !== -1,\n [isPeriodMark, withDetailedTooltip, comment, withAttendanceTooltip, value],\n );\n\n const tooltipView = useMemo(() => {\n switch (true) {\n case withDetailedTooltip:\n return TooltipViewEnum.detailed;\n case value === -1:\n return TooltipViewEnum.na;\n case isPeriodMark:\n return TooltipViewEnum.period;\n case withAttendanceTooltip:\n return TooltipViewEnum.attendance;\n default:\n return TooltipViewEnum.comment;\n }\n }, [isPeriodMark, value, withAttendanceTooltip, withDetailedTooltip]);\n\n const tooltipMetaData: MarkMetaData = useMemo(() => {\n let markType = type || 'Урок';\n\n if (withAttendanceTooltip) {\n markType = type || 'Работа в классе';\n }\n\n return {\n type: markType,\n weight: Number((weight && weight <= 3 ? (weight < 0.01 ? 0.01 : weight) : 0).toFixed(3)),\n date: date || '',\n isMark: value === undefined || value > 0,\n };\n }, [type, withAttendanceTooltip, weight, date, value]);\n\n const isComment = useMemo(() => markStatus === 'comment', [markStatus]);\n const isChangableGrade = useMemo(() => (markStatus === 'normal' || markStatus === 'bad') && deadline, [\n deadline,\n markStatus,\n ]);\n\n const weightValue = useMemo(\n () => Number((weight && weight <= 3 ? (weight < 0.01 ? 0.01 : weight) : 0).toFixed(3)),\n [weight],\n );\n\n const weightClassName = useMemo(() => (approved ? 'weight' : 'weight-notApproved'), [approved]);\n const tooltipClassName = useMemo(() => (approved ? 'tooltip' : 'tooltip-notApproved'), [approved]);\n\n const [hovered, setHovered] = useState(false);\n const [tooltipState, setTooltipState] = useState({ top: -9999, left: -9999 });\n const [weightState, setWeightState] = useState({ top: -9999, left: -9999 });\n\n const handleDocumentScroll = useCallback(() => {\n setHovered(false);\n }, []);\n\n const tooltipRef = useRef(null);\n\n const handleMarkMouseEnter = useCallback(\n (e: React.MouseEvent | React.TouchEvent) => {\n const mark = e.currentTarget as HTMLDivElement;\n const { x, y } = mark.getBoundingClientRect();\n\n setTooltipState({ top: y, left: x });\n setWeightState({ top: y, left: x });\n\n document.addEventListener('touchmove', handleDocumentScroll);\n document.addEventListener('mousewheel', handleDocumentScroll);\n document.addEventListener('scroll', handleDocumentScroll);\n\n setHovered(true);\n },\n [handleDocumentScroll],\n );\n\n useEffect(() => {\n if (tooltipRef.current) {\n const { width } = tooltipRef.current.getBoundingClientRect();\n\n setTooltipState((prev) => {\n if (prev.left + width / 2 + 30 > window.innerWidth) {\n return {\n ...prev,\n left: window.innerWidth - width / 2 - 30,\n };\n }\n\n if (prev.left < width / 2) {\n return {\n ...prev,\n left: width / 2,\n };\n }\n\n return prev;\n });\n }\n }, [tooltipState.left]);\n\n const handleMarkMouseLeave = useCallback(() => {\n setTooltipState({ top: -9999, left: -9999 });\n setWeightState({ top: -9999, left: -9999 });\n\n document.removeEventListener('touchmove', handleDocumentScroll);\n document.removeEventListener('mousewheel', handleDocumentScroll);\n document.removeEventListener('scroll', handleDocumentScroll);\n\n setHovered(false);\n }, [handleDocumentScroll]);\n\n const commentText = useMemo(() => {\n if (comment && isChangableGrade && deadline) {\n return `${comment} ${getDateWithoutYear(deadline)}`;\n }\n if (comment && needTrimComment) {\n return trimString(comment, maxCommentLength, '...');\n }\n\n return comment;\n }, [comment, deadline, isChangableGrade, maxCommentLength, needTrimComment]);\n\n const handleMarkClick = useCallback(() => {\n if ((value !== undefined || isTestPassed !== undefined) && onMarkClick) {\n onMarkClick({\n id: markId,\n score: value !== undefined ? value : isTestPassed ? true : false,\n isApproved: approved,\n });\n }\n }, [approved, isTestPassed, markId, onMarkClick, value]);\n\n if (showComment) {\n return (\n
\n
\n {isComment ? (\n
\n \n
\n ) : (\n
{value}
\n )}\n
\n {comment && (\n
\n {comment}\n
\n )}\n
\n );\n }\n\n if (isComment) {\n return (\n \n
\n \n
\n {comment && showTooltip && hovered && hoverable && (\n <>\n
\n \n {comment && commentText ? {comment && commentText} : null}\n \n
\n
\n \n )}\n
\n );\n }\n return (\n \n {comment && !isChangableGrade && (\n
\n \n
\n )}\n {isChangableGrade && (\n
\n \n
\n )}\n {((comment && showTooltip && hovered && hoverable && tooltipView !== TooltipViewEnum.period) ||\n author ||\n (tooltipView === TooltipViewEnum.period && markStatus !== 'accept' && markStatus !== 'failed') ||\n (!comment && showTooltip && hovered && hoverable)) && (\n <>\n
\n \n {comment && commentText ? {comment && commentText} : null}\n \n
\n {hovered &&
}\n \n )}\n {!needHideWeight && hovered && hoverable && !deadline && (\n
\n {weightValue}\n
\n )}\n {value !== undefined && isTestPassed === undefined ? (\n
{value === -1 ? 'Н/A' : value}
\n ) : (\n
\n {isTestPassed === true ? 'Зач' : 'Нзч'}\n
\n )}\n
\n );\n};\n","export const getTabId = (tabName: string, isStudent?: boolean): number => {\n const lowercaseName = tabName?.toLowerCase();\n switch (lowercaseName) {\n case 'materials':\n return 0;\n case 'academic_performance':\n return isStudent ? -1 : 1;\n case 'online_lesson':\n return 2;\n case 'tasks':\n return 3;\n case 'attendance':\n return 4;\n case 'additional_materials':\n return 5;\n case 'trainer':\n return 6;\n default:\n return -1;\n }\n};\n\nexport const getTabLink = (tabId: number): string => {\n switch (tabId) {\n case 0:\n return 'materials';\n case 1:\n return 'academic_performance';\n case 2:\n return 'online_lesson';\n case 3:\n return 'tasks';\n case 4:\n return 'attendance';\n case 5:\n return 'additional_materials';\n case 6:\n return 'trainer';\n default:\n return 'materials';\n }\n};\n\nexport const getQuerySearchParams = ({\n lessonId,\n subjectId,\n groupId,\n}: {\n lessonId?: number;\n subjectId?: number;\n groupId?: number;\n}): string => {\n const paramsArray = [];\n if (!!lessonId || !!subjectId || !!groupId) {\n if (lessonId) {\n paramsArray.push(`lesson=${lessonId}`);\n }\n if (subjectId) {\n paramsArray.push(`subject=${subjectId}`);\n }\n if (groupId) {\n paramsArray.push(`course_group=${groupId}`);\n }\n let link = '?';\n paramsArray.map((param, index) => {\n if (index > 0) {\n link += `&${param}`;\n } else {\n link += param;\n }\n });\n\n return link;\n }\n return '';\n};\n\nexport const getQueryAcademicPerfomanceParams = ({\n courseId,\n subjectId,\n groupId,\n}: {\n courseId?: number;\n subjectId?: number;\n groupId?: number;\n}): string => {\n const paramsArray = [];\n if (!!courseId || !!subjectId || !!groupId) {\n if (courseId) {\n paramsArray.push(`course=${courseId}`);\n }\n if (subjectId) {\n paramsArray.push(`subject=${subjectId}`);\n }\n if (groupId) {\n paramsArray.push(`group=${groupId}`);\n }\n let link = '?';\n paramsArray.map((param, index) => {\n if (index > 0) {\n link += `&${param}`;\n } else {\n link += param;\n }\n });\n return link;\n }\n return '';\n};\n","import { ReactElement } from 'react';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport moment from 'moment';\nimport { getCurrentDateByMoscow } from 'src-new/utils';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { IHomeworkItem } from 'types/homework';\nimport { MarkData } from 'types/mark';\n\ninterface TabMark extends MarkData {\n valueCanChange: boolean;\n teacherMark?: boolean;\n attemptMarkNumber?: number;\n canDelete?: boolean;\n}\n\ninterface Tabs {\n id: number;\n studentId: number;\n subjectId: number;\n teacherId?: number;\n title: string;\n passed?: string;\n marks?: TabMark[];\n isSelected?: boolean;\n deadline?: string;\n isStudent?: boolean;\n isPassed: boolean;\n completed?: boolean;\n timeToComplete: number;\n status: AssignmentProgressStatus;\n assignedDate?: string;\n extraInfo?: { IconElement?: ReactElement; label: string };\n}\n\nexport const createTabs = (\n tasks: IHomeworkItem[],\n data: AnswerAttemptPostResponse[] | null,\n isPrincipal?: boolean,\n isStudent?: boolean,\n teacherId?: number,\n): Tabs[] => {\n const tabs: Tabs[] = [];\n tasks.forEach((task) => {\n const teacherMarks: Array = task.teacherMark.map((mark) => ({\n ...mark,\n author: mark.author?.id,\n valueCanChange: Boolean(teacherId && teacherId === mark.author?.id),\n teacherMark: true,\n }));\n\n const marksToPreview: Array = [];\n if (task.marks) {\n marksToPreview.push(\n ...task.marks.map((mark) => ({\n ...mark,\n author: mark?.author?.id,\n valueCanChange: Boolean(teacherId && teacherId === mark.author?.id),\n attemptMarkNumber: data?.find((el) => el.mark?.id === mark.id)?.attempt,\n authorLastName: mark.author?.lastName,\n authorFirstName: mark.author?.firstName,\n authorPatronymic: mark.author?.patronymic,\n })),\n );\n }\n marksToPreview.push(...teacherMarks);\n\n const deadlineForComplete = moment(task.deadlineForComplete);\n const hardDeadline = moment(task.hardDeadline);\n const minDeadline = deadlineForComplete.isSameOrAfter(hardDeadline) ? hardDeadline : deadlineForComplete;\n const currentDate = moment(getCurrentDateByMoscow());\n const isMinDeadlineLeft = currentDate.isAfter(minDeadline);\n const deadline = task.timeToComplete && !isMinDeadlineLeft ? minDeadline.format() : task.deadlineForComplete;\n\n tabs.push({\n id: Number(task.id),\n title: task.description || task.title || '',\n passed: task.completeDate != null ? task.completeDate : '',\n isPassed: task.status === AssignmentProgressStatus.ON_CHECK,\n completed: task.status === AssignmentProgressStatus.COMPLETED,\n marks: marksToPreview,\n deadline: deadline,\n timeToComplete: task.timeToComplete,\n isSelected: false,\n isStudent,\n teacherId,\n studentId: task.student.id,\n subjectId: task.subject?.id || -1,\n status: task.status,\n assignedDate: task.assignedDate,\n extraInfo: { label: task.type.isMandatory ? 'Обязательное задание' : 'Рекомендованное задание' },\n });\n });\n return tabs;\n};\n\nexport const isEmptyAttempts = (attempts?: AnswerAttemptPostResponse[] | null): boolean => {\n return attempts?.filter((attemp) => !attemp.answers.every(({ questionId }) => questionId === null)).length === 0;\n};\n","import { IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { InsertWordsAnswerData, TestAnswerData, TextAnswerData, TrueFalseAnswerData } from 'types/answerAttempt';\n\ntype ReturnType = InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\nexport const getAutoCheckAnswerData = (questionData: IQuestion): ReturnType => {\n const { type, answer } = questionData;\n switch (type) {\n case 'binary':\n return { answer: answer === 'true' };\n case 'single':\n case 'multiple':\n return answer ? { selectedOptions: Array.isArray(answer) ? answer : [answer] } : { selectedOptions: [] };\n case 'open':\n return answer ? { selectedOption: Array.isArray(answer) ? answer[0] : answer } : { selectedOption: '' };\n case 'insert-words':\n return answer\n ? {\n selectedOptions: Array.isArray(answer)\n ? answer\n .map((ans, gapIndex) => ({\n gapIndex,\n selectedWord: ans,\n }))\n .filter((answerData) => Boolean(answerData?.selectedWord))\n : [\n {\n gapIndex: 0,\n selectedWord: answer,\n },\n ].filter((answerData) => Boolean(answerData?.selectedWord)),\n }\n : { selectedOptions: [] };\n default:\n return {} as ReturnType;\n }\n};\n\nexport const getAttemptQuestions = (answerAttempt: AnswerAttemptPostResponse): number[] => {\n return answerAttempt.answers?.map(({ questionId }) => questionId).filter(Boolean) ?? [];\n};\n\nexport const getAttemptQuantityInfo = (\n attempts: AnswerAttemptPostResponse[] | null,\n): { lastAttempt: number; attemptsQuantity: number } => {\n if (attempts === null) {\n return {\n lastAttempt: 0,\n attemptsQuantity: 0,\n };\n }\n\n const lastAttempt = attempts\n .filter(({ isDraft }) => !isDraft)\n .reduce(\n (lastAttemptNumber, attempt) => (lastAttemptNumber < attempt.attempt ? attempt.attempt : lastAttemptNumber),\n 0,\n );\n\n return {\n lastAttempt,\n attemptsQuantity: attempts[0]?.attemptsQuantity ?? 1,\n };\n};\n","import { TrainingSearchBlockFilters } from 'api/services/materials';\nimport { DifficultyEnum } from 'api/services/questionCreate';\nimport { QuestionSearchBarFieldsValues } from 'containers/QuestionSearchBar';\nimport { optionsType } from 'pages/QuestionSearchPage/utils';\n\nimport { LessonLocation, SkillLocation } from 'components/Codifier/utils';\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nexport const convertQueryFiltersToPageFilters = (\n queryFilters: Partial,\n): QuestionSearchBarFieldsValues => {\n const skillsSelect = queryFilters.skillsAnd?.length ? 'Все' : 'Любой из нижеперечисленных';\n const convertSkills = (skills: number[]) => skills.map((skill) => ({ skillId: skill } as SkillLocation));\n\n return {\n name: queryFilters.text,\n location: queryFilters.topics?.map((topicId) => (({ topicId } as unknown) as LessonLocation)),\n complexity: queryFilters.difficulty?.map((difficultyItem) => {\n switch (difficultyItem) {\n case DifficultyEnum.medium:\n return 'Средняя';\n case DifficultyEnum.easy:\n return 'Низкая';\n case DifficultyEnum.hard:\n return 'Высокая';\n default:\n return difficultyItem;\n }\n }),\n types: queryFilters.answersType?.map((answerTypeItem) => {\n switch (answerTypeItem) {\n case AnswersTypeEnum.text:\n return 'Вопрос - тестовый, с текстовым ответом';\n case AnswersTypeEnum.test:\n return 'Вопрос - тестовый';\n case AnswersTypeEnum.essay:\n return 'Вопрос - открытый вопрос - эссе';\n case AnswersTypeEnum.true_false:\n return 'Вопрос - верно или нет';\n case AnswersTypeEnum.insert_words:\n return 'Вопрос - вставить слова';\n default:\n return answerTypeItem;\n }\n }),\n skillsSelect,\n skills: convertSkills(skillsSelect === 'Все' ? queryFilters.skillsAnd || [] : queryFilters.skillsOr || []),\n };\n};\n\nexport const convertPageFiltersToQueryFilters = (\n pageFilters: QuestionSearchBarFieldsValues,\n excludeIds: number[] = [],\n): Partial => ({\n text: pageFilters.name || undefined,\n topics: pageFilters.location?.map((block) => block.topicId) || [],\n difficulty:\n pageFilters.complexity?.length === 3\n ? undefined\n : pageFilters.complexity?.map((item) => {\n switch (item) {\n case 'Средняя':\n return DifficultyEnum.medium;\n case 'Низкая':\n return DifficultyEnum.easy;\n case 'Высокая':\n return DifficultyEnum.hard;\n default:\n return DifficultyEnum.easy;\n }\n }),\n answersType:\n pageFilters.types?.length === optionsType.length\n ? undefined\n : pageFilters.types?.map((type) => {\n switch (type) {\n case 'Вопрос - тестовый, с текстовым ответом':\n return AnswersTypeEnum.text;\n case 'Вопрос - тестовый':\n return AnswersTypeEnum.test;\n case 'Вопрос - открытый вопрос - эссе':\n return AnswersTypeEnum.essay;\n case 'Вопрос - верно или нет':\n return AnswersTypeEnum.true_false;\n case 'Вопрос - вставить слова':\n return AnswersTypeEnum.insert_words;\n default:\n return AnswersTypeEnum.text;\n }\n }),\n excludeIds,\n skillsAnd: pageFilters.skillsSelect === 'Все' ? pageFilters.skills?.map((skill) => skill.skillId) || [] : [],\n skillsOr: pageFilters.skillsSelect === 'Все' ? [] : pageFilters.skills?.map((skill) => skill.skillId) || [],\n});\n","import { api, postApiRequest } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AssignmentType } from 'types/assignment';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport {\n EAssignedTypes,\n EDeadlineTypes,\n IHomeworkItem,\n TPostDeferredAssignment,\n TPostDeferredAssignmentResponse,\n} from 'types/homework';\nimport { Student } from 'types/students';\n\nexport interface AssigningStudentTask {\n assignment: number;\n student: number;\n deadlineForComplete: string;\n assignedDate: string;\n courseGroup?: number;\n teacher?: number;\n assignedDelay?: number;\n deadlineDelay?: number;\n timeToComplete?: number;\n assignedType: EAssignedTypes;\n deadlineType: EDeadlineTypes;\n}\n\ninterface PostHomeworkItemResponse {\n id: string;\n status: AssignmentProgressStatus;\n title?: string;\n description?: string;\n assignedDate?: string;\n type: AssignmentType;\n student: Student;\n assignment: {\n id: number;\n };\n completeDate?: string;\n deadlineForComplete?: string;\n deadlineForCheck?: string;\n timeToComplete: number;\n}\n\nexport const postStudentTask = async (tasks: AssigningStudentTask[]): Promise => {\n return api\n .post, AxiosResponse>(`/assignment-progress/bulk-create/`, tasks)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n\nexport const postDeferredAssignment = async (\n params: TPostDeferredAssignment,\n): Promise => {\n return postApiRequest('/api/v2/deferred-assignment/', params);\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getQuestionsForReview } from 'api/services/question';\nimport { getQuestionsOnRevision } from 'api/services/question/getQuestionsOnRevision';\n\nexport const getQuestionsForReviewAction = createAsyncThunk(\n 'questionBank/getQuestionsForReview',\n (parallel?: number) => {\n return getQuestionsForReview(parallel);\n },\n);\n\nexport const getQuestionsOnRevisionAction = createAsyncThunk('questionBank/getQuestionsOnRevision', () => {\n return getQuestionsOnRevision();\n});\n","import { getApiRequest } from 'api';\nimport { QuestionStatus } from 'api/services/questionBank';\nimport { DifficultyEnum } from 'api/services/questionCreate';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\nimport { User } from 'types/user';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nexport interface QuestionForReview {\n id: number;\n text: string;\n content: string;\n html: string;\n difficulty?: DifficultyEnum;\n answersType?: AnswersTypeEnum;\n status?: QuestionStatus;\n timestamp?: string;\n author: User;\n topics?: {\n id: number;\n title: string;\n }[];\n skills?: {\n id: number;\n title: string;\n }[];\n data?: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n maximumScore?: number;\n}\n\nexport interface QuestionsReviewData {\n questions: QuestionForReview[];\n countQuestionUnpublished: number;\n}\nexport const getQuestionsForReview = (parallel?: number): Promise => {\n return getApiRequest('/codifier/question/review/', { params: { parallels: parallel } });\n};\n","import { getApiRequest } from 'api';\nimport { QuestionStatus } from 'api/services/questionBank';\nimport { DifficultyEnum } from 'api/services/questionCreate';\nimport {\n EssayQuestionData,\n InsertWordQuestionData,\n TestQuestionData,\n TextQuestionData,\n TrueFalseQuestionData,\n} from 'types/question';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nexport interface QuestionOnRevision {\n id: number;\n text?: string;\n html?: string;\n content?: string;\n answersType: AnswersTypeEnum;\n difficulty: DifficultyEnum;\n maximumScore: number;\n timestamp: string;\n topics: { id: number; title: string }[];\n author: {\n id?: number;\n firstName: string;\n lastName: string;\n patronymic: string | null;\n online?: boolean;\n lastSeen?: string;\n };\n skills: {\n id: number;\n title: string;\n }[];\n status: QuestionStatus;\n data: TestQuestionData | InsertWordQuestionData | TrueFalseQuestionData | EssayQuestionData | TextQuestionData;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport interface QuestionsRevisionData {\n questions: QuestionOnRevision[];\n countQuestionUnpublished: number;\n}\nexport const getQuestionsOnRevision = (): Promise => {\n return getApiRequest('/codifier/question/revision/');\n};\n","import { getApiRequest } from 'api';\nimport { MonitoringProps } from 'types/monitoring';\n\nexport const getMonitoringInfo = async (params: { status: string; date: string }): Promise => {\n return await getApiRequest('/schedule/monitoring/', {\n params: {\n status: params.status,\n date: params.date,\n },\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getApiRequest } from 'api';\nimport { getMonitoringInfo } from 'api/services/monitoring';\nimport { MonitoringProps } from 'types/monitoring';\n\nexport const getMonitoringInfoAction = createAsyncThunk(\n 'schedule/getMonitoringInfo',\n ({ status, date }: { status: string; date: string }) => {\n return getMonitoringInfo({ status, date });\n },\n);\n\nexport const getNextMonitoringInfoAction = createAsyncThunk('schedule/getNextMonitoringInfo', (nextUrl: string) => {\n return getApiRequest(nextUrl);\n});\n","export const insertItemIntoArray = (array: Item[], item: Item, itemIndex: number): Item[] => [\n ...array.slice(0, itemIndex),\n item,\n ...array.slice(itemIndex),\n];\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { createStudentProfile, fetchStudentData, PostData } from 'api/services/student';\n\nexport const getStudentDataAction = createAsyncThunk(\n 'student/getStudentData',\n async (studentId: number) => await fetchStudentData(studentId),\n);\n\nexport const postStudentProfileData = createAsyncThunk('student/addStudentProfileData', async (params: PostData) => {\n return await createStudentProfile(params);\n});\n","import { postApiRequest } from 'api/index';\nimport { IActionDetailsRequest, IActionDetailsResponse } from 'types/groupActions';\n\nexport const postActionDetails = (params: IActionDetailsRequest): Promise => {\n return postApiRequest(`/actions/progress/detail/`, params);\n};\n","import { postApiRequest } from 'api/index';\nimport { ICreateActionProgressRequest, ICreateActionProgressResponse } from 'types/groupActions';\n\nexport const createActionProgress = (params: ICreateActionProgressRequest): Promise => {\n return postApiRequest(`/actions/progress/create/`, params);\n};\n","import { getApiRequest } from 'api/index';\nimport { IGetActionCreateResponse } from 'types/groupActions';\n\nexport const getActionCreate = (): Promise => {\n return getApiRequest(`/actions/`);\n};\n","import { postApiRequest } from 'api/index';\nimport { IGetActionProgressRequest, IGetActionProgressResponse } from 'types/groupActions';\n\nexport const getActionProgress = (params: IGetActionProgressRequest): Promise => {\n return postApiRequest(`/actions/progress/`, params);\n};\n","import { postApiRequest } from 'api/index';\nimport { IActionStudentsParamsRequest, IActionStudentsResponse } from 'types/groupActions';\n\nexport const getActionStudents = (params: IActionStudentsParamsRequest): Promise => {\n return postApiRequest(`/actions/students/`, params);\n};\n","import { IActionsDetailsItem } from 'store/reducers/groupActions';\nimport { IAction, IActionDetailsResponse } from 'types/groupActions';\n\nconst getUpdatedActionList = (\n list: IAction[] | undefined,\n targetId: number,\n type: 'updateItem' | 'removeItem',\n newItem: IAction | undefined,\n): IAction[] | undefined => {\n if (type === 'removeItem') {\n return list?.filter((item) => item.id !== targetId);\n }\n const currentListItemIndex = list?.findIndex((item) => item.id === targetId) ?? -1;\n if (currentListItemIndex > -1 && newItem) {\n return [\n ...(list ?? [])?.slice(0, currentListItemIndex),\n newItem,\n ...(list ?? [])?.slice(currentListItemIndex + 1),\n ];\n }\n return list;\n};\n\n/**\n * @description обновляем инфу о действии\n * если isSavedData = true то пришли данные которые сохранены на сервере\n * если isSavedData = false то пришли, с измененными фильтрами или сортировкой\n * @param oldItems\n * @param payload\n * @param isSavedData\n */\nconst getUpdatedDetailsItem = (\n oldItems?: { [key: string]: IActionsDetailsItem },\n payload?: IActionDetailsResponse,\n isSavedData?: boolean,\n): { [key: string]: IActionsDetailsItem } | undefined => {\n if (payload) {\n const newData = { ...payload.data, sorting: payload.data?.sorting ?? [] };\n\n return {\n ...oldItems,\n [payload.id]: {\n ...payload,\n data: newData,\n savedData: isSavedData ? newData : oldItems?.[payload.id]?.savedData,\n },\n };\n }\n return oldItems;\n};\n\nexport { getUpdatedActionList, getUpdatedDetailsItem };\n","import { IAction } from 'types/groupActions';\n\nconst normalizeActionsList = (data: Array): Array => {\n return data?.map((item) => {\n const { data } = item;\n return {\n ...item,\n data: {\n ...data,\n sorting: data.sorting ?? [],\n },\n };\n });\n};\n\nexport { normalizeActionsList };\n","import { TGroupActionTableItem } from 'src-new/components/group-actions';\nimport { IActionsStudentItem } from 'types/groupActions';\n\nconst normalizeTableData = (data: Array): Array => {\n return data?.map((item) => {\n const { lastName, firstName, patronymic, id, ...otherItem } = item;\n return {\n ...otherItem,\n fullname: `${lastName} ${firstName} ${patronymic}`,\n key: id.toString(),\n };\n });\n};\n\nexport { normalizeTableData };\n","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { ValidationErrors } from 'final-form';\nimport { setFormError } from 'store/reducers/formError';\n\nexport const useFormError = (formName: string): ((state: { errors: ValidationErrors }) => void) => {\n const dispatch = useDispatch();\n const [errors, setErrors] = useState();\n\n useEffect(() => {\n if (errors) {\n dispatch(setFormError({ errors, formName }));\n }\n }, [errors, dispatch, formName]);\n\n const handleFormSpyChange = useCallback((state: { errors: ValidationErrors }) => {\n setTimeout(() => {\n setErrors(state.errors);\n }, 0);\n }, []);\n\n return handleFormSpyChange;\n};\n","import { getApiRequest } from 'api';\nimport { MarkData } from 'types/mark';\n\nexport interface AttendanceMark {\n id?: number;\n marks: MarkData[];\n lesson: {\n id: number;\n title: string;\n };\n student: number;\n course: number;\n}\n\nexport interface AttendanceParams {\n lessonIds: number[];\n studentIds: number[];\n}\n\nexport interface AttendanceStudentParams {\n mark_date_before: string;\n mark_date_after: string;\n student: number;\n}\n\nexport interface AttendanceStudentByDateParams {\n mark_date_before: string;\n mark_date_after: string;\n lessonIds: number[];\n studentIds: number[];\n}\n\nexport const getAttendanceMarks = (params: AttendanceParams): Promise => {\n return getApiRequest(\n `/attendance-lesson/marks/?lessons=${params.lessonIds.join(',')}&students=${params.studentIds.join(',')}`,\n );\n};\n\nexport const getAttendanceStudentMarks = (params: AttendanceStudentParams): Promise => {\n return getApiRequest(\n `/attendance-lesson/marks/?mark_date_before=${params.mark_date_before}&mark_date_after=${params.mark_date_after}&students=${params.student}`,\n );\n};\n\nexport const getAttendanceMarksByDate = (params: AttendanceStudentByDateParams): Promise => {\n return getApiRequest(\n `/attendance-lesson/marks/?mark_date_before=${params.mark_date_before}&mark_date_after=${\n params.mark_date_after\n }&lessons=${params.lessonIds.join(',')}&students=${params.studentIds.join(',')}`,\n );\n};\n","import { getApiRequest } from 'api';\nimport { Parallel } from 'types/parallel';\n\nexport const getEducationalParallels = (): Promise => {\n return getApiRequest(`/edu/parallel/`);\n};\n","import { StudentGroupStatisticsTariff } from 'api/services/studentGroups/getStudentsGroupStatisticsTariffs';\nimport { alphabet, groupNumberRegExp, letterRegExp } from 'containers/ActiveClasses/ActiveClasses.constants';\nimport { User } from 'types/user';\n\nexport const sortGroupTitles = (first: { title: string }, second: { title: string }): number => {\n const firstClassLetter = (letterRegExp.exec(first.title) ?? [''])[0];\n const secondClassLetter = (letterRegExp.exec(second.title) ?? [''])[0];\n const firstClassNumber = Number((groupNumberRegExp.exec(first.title) ?? [''])[0]);\n const secondClassNumber = Number((groupNumberRegExp.exec(second.title) ?? [''])[0]);\n const sortNumber = alphabet.indexOf(firstClassLetter) - alphabet.indexOf(secondClassLetter);\n if (!alphabet.includes(firstClassLetter) && alphabet.includes(secondClassLetter)) {\n return 1;\n }\n if (alphabet.includes(firstClassLetter) && !alphabet.includes(secondClassLetter)) {\n return -1;\n }\n return sortNumber !== 0 ? sortNumber : firstClassNumber - secondClassNumber;\n};\n\nexport const sortGroupParallels = (first: { title: string }, second: { title: string }): number => {\n const firstParallel = Number((groupNumberRegExp.exec(first.title) ?? ['0'])[0]);\n const secondParallel = Number((groupNumberRegExp.exec(second.title) ?? ['0'])[0]);\n return firstParallel - secondParallel;\n};\n\nexport const tutorName = (curators: User[]): string => {\n const curatorsNames: string[] = [];\n curators.map((curator) =>\n curatorsNames.push(`${curator.firstName} ${curator.lastName[0]}.${(curator?.patronymic ?? [''])[0]}.`),\n );\n return curatorsNames.join(', ');\n};\n\nexport const sortParallels = (first: { parallel: string }, second: { parallel: string }): number => {\n return Number(first.parallel) - Number(second.parallel);\n};\n\nexport const sortClassLetters = (first: { classLetter: string }, second: { classLetter: string }): number => {\n if (!alphabet.includes(first.classLetter) && alphabet.includes(second.classLetter)) {\n return 1;\n }\n if (alphabet.includes(first.classLetter) && !alphabet.includes(second.classLetter)) {\n return -1;\n }\n return alphabet.indexOf(first.classLetter) - alphabet.indexOf(second.classLetter);\n};\n\nexport const studentsCount = (item: { id: number; title: string; studentsCount: number }[]): number => {\n return item.reduce((sum, { studentsCount }) => sum + studentsCount, 0);\n};\n\nexport const vacanciesCount = (item: StudentGroupStatisticsTariff[]): number => {\n return item.reduce((sum, { tariffs }) => {\n const sudentGroupSum = tariffs.reduce((sum, { vacanciesCount }) => sum + vacanciesCount, 0);\n return sum + sudentGroupSum;\n }, 0);\n};\n","import { PostEducationalPlanItem } from 'api/services/educationalPlan';\n\nexport const getNormalizedItemsMap = (\n params: PostEducationalPlanItem[],\n educationalPlan: number,\n): PostEducationalPlanItem[] => {\n return params.map((item) => {\n return {\n id: item.id && item.id !== -1 ? item.id : undefined,\n educationalPlan: educationalPlan,\n course: item.course,\n type: item.type,\n yearLessonsCount: Number(item.yearLessonsCount.toFixed()),\n weekLessonsCount: item.weekLessonsCount,\n yearOnlineLessonsCount: Number(item.yearOnlineLessonsCount.toFixed()),\n weekOnlineLessonsCount: item.weekOnlineLessonsCount,\n yearFlowLecturesCount: Number(item.yearFlowLecturesCount.toFixed()),\n weekFlowLecturesCount: item.weekFlowLecturesCount,\n evaluationType: item.evaluationType,\n takeIntoAccount: item.takeIntoAccount,\n };\n });\n};\n","import { postApiRequest } from 'api';\n\nexport interface PostRevisionQuestionParams {\n comment: string;\n question: number;\n}\n\nexport interface ResponseRevisionQuestion {\n id: number;\n comment: string;\n question: number;\n dateCreate: string;\n}\n\nexport const createRevisionQuestion = (values: PostRevisionQuestionParams): Promise => {\n return postApiRequest('/codifier/question-revision/create/', values);\n};\n","import { deleteApiRequest } from 'api';\n\nexport const deleteRevisionQuestion = (id: number): Promise => {\n return deleteApiRequest(`/codifier/question-revision/delete/${id}/`).then(() => id);\n};\n","import { patchApiRequest } from 'api';\n\nimport { ResponseRevisionQuestion } from './createRevisionQuestion';\n\nexport interface PatchRevisionQuestionParams {\n id: number;\n comment?: string;\n question?: number;\n}\n\nexport const updateRevisionQuestion = ({\n id,\n ...params\n}: PatchRevisionQuestionParams): Promise => {\n return patchApiRequest(`/codifier/question-revision/partial-update/${id}/`, params);\n};\n","/**\n * Returns an array of url parts\n * @param url - document url\n * @returns array of string\n */\n\nexport const getPathParts = (url: string): string[] => {\n return url.split('/').slice(2);\n};\n\n/**\n * Returns an array of url parts\n * @param url - document url\n * @returns array of string\n */\n\nexport const getPathBook = (url: string): string[] => {\n return url.split('book-view/');\n};\n\nexport const getStudentTasksParts = (url: string): number[] => {\n return url.match(/\\d+/gi)?.map((part) => Number(part)) || [];\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const useWindowResize = (): boolean => {\n const [isTablet, setIsTablet] = useState(window.innerWidth <= 1024);\n\n const handleWindowResize = useCallback((event: UIEvent) => {\n const target = event.currentTarget as Window;\n setIsTablet(target.innerWidth <= 1024);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleWindowResize);\n\n return () => window.removeEventListener('resize', handleWindowResize);\n }, [handleWindowResize]);\n\n return isTablet;\n};\n\nexport const useWindowWidth = (targetWidth: number): boolean => {\n const [isSizeReached, setIsSizeReached] = useState(window.innerWidth <= targetWidth);\n\n const handleWindowResize = useCallback((event: UIEvent) => {\n const target = event.currentTarget as Window;\n setIsSizeReached(target.innerWidth <= targetWidth);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleWindowResize);\n\n return () => window.removeEventListener('resize', handleWindowResize);\n }, [handleWindowResize]);\n\n return isSizeReached;\n};\n","import React from 'react';\nimport { AppText } from 'src-new/ui';\n\nexport enum ETags {\n test_lesson = 'Контрольная работа',\n online_lesson = 'Онлайн-занятие',\n selfpreparation_lesson = 'Самоподготовка',\n}\ntype TLessonTypeTagProps = {\n type: keyof typeof ETags;\n};\n\nimport { useWindowResize } from 'hooks';\n\nimport './style.scss';\n\nconst LessonTypeTag: React.FC = ({ type }) => {\n const isMobile = useWindowResize();\n\n return (\n
\n \n
\n );\n};\nexport default LessonTypeTag;\n","export type TLessonsColTabsProps = {\n tabs: TLessonTab[];\n selectedTab?: TLessonTabTypes;\n handleTabClick?: (type: TLessonTabTypes | undefined) => void;\n};\n\nexport type TLessonTab = {\n type: TLessonTabTypes;\n count: number;\n};\nexport enum ELessonTabTitle {\n 'test_lesson' = 'Контрольная',\n 'online_lesson' = 'Онлайн',\n 'selfpreparation_lesson' = 'Самоподготовка',\n 'need_attention' = 'Требует внимания',\n}\n\nexport type TLessonTabTypes = 'test_lesson' | 'online_lesson' | 'selfpreparation_lesson' | 'need_attention';\n","import React, { useEffect, useState } from 'react';\nimport { AppText } from 'src-new/ui';\n\nimport { ELessonTabTitle, TLessonsColTabsProps, TLessonTabTypes } from './LessonsColTabs.types';\n\nimport './style.scss';\n\nexport const LessonsColTabs: React.FC = ({ tabs, selectedTab, handleTabClick }) => {\n const [selected, setSelected] = useState();\n\n useEffect(() => {\n setSelected(selectedTab);\n }, [selectedTab]);\n\n const onTabClick = (handledType: TLessonTabTypes) => {\n if (handledType === selected) {\n setSelected(undefined);\n handleTabClick?.(undefined);\n } else {\n setSelected(handledType);\n handleTabClick?.(handledType);\n }\n };\n\n return (\n
\n {tabs.map((tab, index) => (\n onTabClick(tab.type)}\n data-onboarding={index + 1 !== tabs.length ? 'lessonsColFilters' : 'needAttentionFilter'}\n >\n
\n \n
\n
\n \n
\n
\n ))}\n
\n );\n};\nexport const LessonsColTabsMemo = React.memo(LessonsColTabs);\n","import React, { useMemo } from 'react';\nimport { AppLoader } from '@frontend-modules/ui-kit';\nimport { AppButtonDropdown, AppScrollPaginateContainer, AppText } from 'src-new/ui';\n\nimport { TThemesColTabsProps } from './ThemesColTabs.types';\n\nimport './style.scss';\n\nexport const ThemesColTabs: React.FC = (props: TThemesColTabsProps) => {\n const {\n teachers,\n students,\n hasBooks,\n paginate,\n isStudentListLoading,\n handleTeacherClick,\n handleStudentClick,\n handleLibraryClick,\n handleStudentsListPaginate,\n } = props;\n\n const isStudents = !!students && !!students.length;\n\n const personsListNormalized = useMemo(() => {\n const list = isStudents ? students : teachers;\n\n return list?.length\n ? list?.map((item) => {\n return {\n label: (\n
\n
\n {!item.photoUrl ? (\n {'teachers-avatar'}\n ) : (\n
\n \n
\n )}\n
\n \n
\n ),\n key: item.id,\n };\n })\n : [];\n }, [students, teachers]);\n\n const onTeacherClick = (id: number) => {\n handleTeacherClick(id);\n };\n const onStudentClick = (id: number) => {\n handleStudentClick(id);\n };\n const onLibraryClick = () => {\n handleLibraryClick();\n };\n\n const TeachersBlock = (): JSX.Element => {\n switch (personsListNormalized.length) {\n case 1:\n return (\n onTeacherClick(personsListNormalized[0].key)}\n >\n \n \n );\n case 0:\n return <>;\n default:\n return (\n
\n \n
\n );\n }\n };\n\n return (\n
\n {isStudents ? (\n (\n handleStudentsListPaginate?.(currPage)}\n >\n <>\n {children}\n {isStudentListLoading && (\n
\n \n
\n )}\n \n \n )}\n />\n ) : (\n \n )}\n {hasBooks && (\n
onLibraryClick()}>\n \n
\n )}\n
\n );\n};\n","import React from 'react';\nimport { emptyLessonsPreview } from 'assets';\nimport { AppText } from 'src-new/ui';\n\nimport './style.scss';\nexport const EmptyList: React.FC = () => {\n return (\n
\n \n
\n \"empty\"\n
\n
\n );\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppCheckbox, AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { useRole } from 'hooks';\nimport { MAX_FILE_SIZE_MB } from 'src-new/constants';\nimport { AppFileUploader } from 'src-new/ui';\nimport { setMessage } from 'src-new/utils/message';\nimport {\n createMeetingFileAction,\n deleteMeetingFileAction,\n getCourseGroupMeetingFilesAction,\n getCourseMeetingFilesAction,\n updateMeetingFileAction,\n} from 'store/actions/meetingFiles';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport {\n TCreateCourseGroupMeetingFilePayload,\n TCreateCourseMeetingFilePayload,\n TUpdateCourseGroupMeetingFilePayload,\n TUpdateCourseMeetingFilePayload,\n} from 'types/meetingFiles';\n\nimport { TFilesContainerProps } from './FilesContainer.types';\n\nimport './FilesContainer.scss';\n\ntype TFile = {\n id: number;\n isAvailableToStudents?: boolean;\n useOnMeeting?: boolean;\n isTemplate: boolean;\n meetingFileId?: number;\n fileUrl: string;\n title: string;\n extension: string;\n};\nexport const FilesContainer: React.FC = ({\n lessonId,\n lessonScheduleId,\n courseGroupId,\n isOvered,\n}) => {\n const dispatch = useDispatch();\n const { isTeacher } = useRole();\n\n const { courseMeetingFiles, courseGroupMeetingFiles, getMeetingFilesStatus } = useAppSelector(\n (store) => store.meetingFiles,\n );\n const isCourseGroup = !!courseGroupId && !!lessonScheduleId;\n\n const files: TFile[] = useMemo(() => {\n if (courseGroupMeetingFiles.length) {\n return courseGroupMeetingFiles.map((file) => {\n const { id, isAvailableToStudents, meetingFile, useOnMeeting } = file;\n const { id: meetingFileId, fileUrl, isTemplate, title, extension } = meetingFile;\n return {\n id,\n isAvailableToStudents,\n useOnMeeting,\n isTemplate,\n meetingFileId,\n fileUrl,\n title,\n extension,\n };\n });\n }\n if (courseMeetingFiles.length) {\n return courseMeetingFiles;\n }\n return [];\n }, [courseMeetingFiles, courseGroupMeetingFiles]);\n\n const needFetchFiles = getMeetingFilesStatus === FetchStatus.INITIAL;\n\n const isCanUpload = isTeacher && isCourseGroup;\n const isShowContent = !!files.length || isCanUpload;\n\n useEffect(() => {\n if (needFetchFiles) {\n if (isCourseGroup) {\n //@ts-ignore\n dispatch(getCourseGroupMeetingFilesAction({ lessonSchedule: lessonScheduleId }));\n } else if (lessonId && !courseGroupId) {\n dispatch(getCourseMeetingFilesAction({ lesson: lessonId }));\n }\n }\n }, [dispatch]);\n\n const handleUploadFile = useCallback(\n (file: File) => {\n const isCourseGroup = !!lessonScheduleId;\n\n const params: TCreateCourseMeetingFilePayload | TCreateCourseGroupMeetingFilePayload = lessonScheduleId\n ? {\n file,\n lessonSchedule: lessonScheduleId,\n }\n : {\n file,\n lesson: lessonId,\n };\n\n if (file) {\n dispatch(\n createMeetingFileAction({\n params,\n isCourseGroup,\n }),\n );\n }\n },\n [dispatch, isTeacher, lessonId, lessonScheduleId],\n );\n\n const onFileCheckbox = (\n isChecked: boolean,\n fileId: number,\n fieldName: 'isAvailableToStudents' | 'useOnMeeting',\n ) => {\n const params: TUpdateCourseMeetingFilePayload | TUpdateCourseGroupMeetingFilePayload = {\n id: fileId,\n };\n params[fieldName] = isChecked;\n dispatch(\n updateMeetingFileAction({\n params,\n isCourseGroup,\n }),\n );\n };\n const onFileClick = (url: string) => {\n window.open(url);\n };\n const onDeleteFile = (event: React.MouseEvent, fileId: number) => {\n event.stopPropagation();\n\n dispatch(\n deleteMeetingFileAction({\n id: fileId,\n isCourseGroup,\n }),\n );\n };\n const onCopyFileUrl = (event: React.MouseEvent, fileUrl: string) => {\n event.stopPropagation();\n\n void navigator.clipboard\n .writeText(fileUrl)\n .then(() => {\n setMessage({ text: 'Ссылка успешно скопирована!', status: 'success' });\n })\n .catch(() => {\n setMessage({ text: 'Не удалось скопировать ссылку!', status: 'error' });\n });\n };\n\n return (\n
\n {!isShowContent ? (\n <>\n ) : (\n <>\n \n
\n {!!files.length && (\n
\n \n {isCourseGroup && (\n <>\n \n \n \n )}\n
\n )}\n {files?.map((file) => {\n const {\n id,\n title,\n fileUrl,\n isTemplate,\n isAvailableToStudents,\n useOnMeeting,\n meetingFileId,\n extension,\n } = file;\n const name = `${title}.${extension}`;\n const fileName = name.length > 55 ? `${name.slice(0, 30)}...${name.slice(-10)}` : name;\n return (\n
\n
onFileClick(fileUrl)}>\n 55 ? 'hasAttr' : ''}`}\n data-title={name}\n >\n \n \n
\n
\n onCopyFileUrl(event, fileUrl)}\n >\n \n
\n {!isTemplate && isCourseGroup && (\n onDeleteFile(event, id)}\n >\n \n
\n )}\n
\n
\n {isCourseGroup && (\n <>\n
\n \n onFileCheckbox(isChecked, id, 'isAvailableToStudents')\n }\n defaultValue={!!isAvailableToStudents}\n />\n
\n
\n \n onFileCheckbox(isChecked, id, 'useOnMeeting')\n }\n defaultValue={!!useOnMeeting}\n />\n
\n \n )}\n \n );\n })}\n \n {isCanUpload && (\n
\n \n\n
\n \n \n
\n
\n )}\n \n )}\n \n );\n};\n","import React, { ReactNode } from 'react';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { Task } from '@lms-elements/icons';\nimport { CalendarSmallIcon, TimeSmallIcon } from 'assets';\nimport { TSubjectLesson } from 'src-new/components/new-subjects';\nimport LessonTypeTag from 'src-new/components/students-schedule/lesson-type-tag/LessonTypeTag';\nimport { useGetLessonHomeworks } from 'src-new/hooks';\nimport { AppText } from 'src-new/ui';\nimport { getDateByMoscow, getTimeByMoscow } from 'src-new/utils';\n\nimport './style.scss';\n\nexport const LessonInfo: React.FC<{ lessonInfo: TSubjectLesson }> = ({ lessonInfo }) => {\n const { homeworkTitle } = useGetLessonHomeworks(lessonInfo);\n\n const getTime = (start: string, end: string): ReactNode => {\n if (start && end) {\n const startDay = getDateByMoscow(start),\n endDay = getDateByMoscow(end),\n startTime = getTimeByMoscow(start),\n endTime = getTimeByMoscow(end);\n\n if (startDay === endDay) {\n return (\n
\n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n return (\n
\n
\n \n \n
\n
\n \n \n
\n \n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n return <>;\n };\n\n const noLessonSchedules = isEmptyList(lessonInfo.lessonSchedules);\n const isTestLesson = noLessonSchedules && lessonInfo.isTest;\n\n return (\n
\n
\n
\n \n \n
\n {lessonInfo.lessonSchedules.map((item) => (\n
\n \n {getTime(item.datetimeStart, item.datetimeEnd)}\n
\n ))}\n {noLessonSchedules && isTestLesson && (\n
\n \n
\n )}\n
\n
\n );\n};\n","import React, { useMemo } from 'react';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { ProgressBar } from 'src-new/components/new-subjects';\n\nimport { TSubjectCourseCardProps } from './NewSubjectsCard.types';\n\nimport './style.scss';\n\n/**\n * @description Component for displaying theme/course/subject card content\n * @param {TSubjectCourseCardProps} params\n * */\nexport const NewSubjectsCard: React.FC = (params: TSubjectCourseCardProps) => {\n const {\n title,\n additionalTitle,\n metrics,\n progress,\n isSelected = false,\n backgroundStyle = 'light',\n borderStyle = 'none',\n brightnessStyle = 'bright',\n hasHoverTrigger = true,\n LessonInfo,\n MobileContent,\n isTeacher,\n handleCardClick,\n handleEditLessonClick,\n } = params;\n\n const styleClassConstructor = useMemo(() => {\n return `${backgroundStyle} border-${borderStyle} ${brightnessStyle} ${isSelected ? 'selected' : ''} ${\n LessonInfo ? 'lesson-card' : hasHoverTrigger ? 'hovered' : ''\n }`;\n }, [backgroundStyle, borderStyle, brightnessStyle, isSelected]);\n\n const onCardClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n handleCardClick?.();\n };\n const onEditClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n handleEditLessonClick?.();\n };\n\n return (\n
onCardClick(event)}>\n
\n \n {!!additionalTitle && (\n
\n \n
\n )}\n {isTeacher && (\n
\n \n
\n )}\n
\n {!!metrics && !!metrics.length && (\n <>\n
\n \n
\n {metrics.map(({ label, status }, index) => {\n return (\n \n \n
\n );\n })}\n
\n
\n \n )}\n {LessonInfo && (\n
\n \n {LessonInfo}\n
\n )}\n {!!progress && !!progress.length && (\n
\n \n
\n )}\n {!!MobileContent &&
{MobileContent}
}\n \n );\n};\n\nexport const NewSubjectsCardMemo = React.memo(NewSubjectsCard);\n","import React from 'react';\nimport { EMPTY_ARRAY_3 } from 'src-new/constants';\nimport { AppSkeleton } from 'src-new/ui';\nimport { getUid } from 'src-new/utils';\n\nimport './style.scss';\n\ntype TCourseCardSkeleton = {\n type: 'course-card' | 'title' | 'button' | 'option' | 'lesson-card';\n isInverseBackground?: boolean;\n};\nexport const SubjectsElementsSkeleton: React.FC = (props: TCourseCardSkeleton) => {\n const { type, isInverseBackground = false } = props;\n\n const Content = () => {\n switch (type) {\n case 'button':\n return (\n <>\n \n \n );\n case 'option':\n return (\n <>\n \n \n \n );\n case 'lesson-card':\n return (\n <>\n
\n \n \n
\n
\n {EMPTY_ARRAY_3.map(() => (\n
\n \n \n
\n ))}\n
\n
\n \n
\n \n );\n case 'course-card':\n return (\n <>\n \n \n \n );\n case 'title':\n default:\n return (\n <>\n \n \n );\n }\n };\n\n return (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\n\nimport { TWarningSign } from './WarningSign.types';\n\nimport './style.scss';\nexport const WarningSign: React.FC = (props: TWarningSign) => {\n const { message, type = 'warning' } = props;\n const textColor = type === 'error' ? '#EA5959' : '#E5A139';\n\n return (\n
\n \n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { AppButton, AppLoader, AppModal, AppText } from '@frontend-modules/ui-kit';\nimport { SubjectsElementsSkeleton, WarningSign } from 'src-new/components/new-subjects';\nimport LessonTypeTag from 'src-new/components/students-schedule/lesson-type-tag/LessonTypeTag';\nimport { EMPTY_ARRAY_2 } from 'src-new/constants';\nimport { AppScrollPaginateContainer } from 'src-new/ui';\nimport { getDateByMoscow, getTimeByMoscow, getUid } from 'src-new/utils';\n\nimport { TAddLessonModal } from './AddLessonModal.types';\n\nimport './style.scss';\nexport const AddLessonModal: React.FC = (props: TAddLessonModal) => {\n const [selectedLessonId, setSelectedLessonId] = useState(undefined);\n const { orderNumber, lessonsList, isFetching, paginate, error, onModalClose, onAddLesson, handlePaginate } = props;\n const { currentPage, maxPage } = paginate;\n const isFirstFetching = isFetching && !lessonsList.length;\n const isPaginationFetching = isFetching && lessonsList.length;\n\n const getErrorMessage = (): string => {\n if (error) {\n // @ts-ignore\n const errorData = JSON.parse(error.message) as { message: string; extra: { fields: string[] } };\n\n return errorData.extra.fields[0] ?? 'Не удалось переместить урок';\n }\n return '';\n };\n const onScrollHandle = (currPage: number) => {\n if (!isFirstFetching) {\n handlePaginate(currPage);\n }\n };\n const onLessonSelect = (id: number) => {\n setSelectedLessonId(id === selectedLessonId ? undefined : id);\n };\n return (\n undefined}\n isShowCloseIcon={false}\n wrapClassName={'add-lesson-modal__wrapper'}\n width={'90%'}\n centered\n getContainer={() => document.getElementById('lesson-col') as HTMLElement}\n >\n
\n {isFirstFetching ? (\n <>\n \n
\n \n
\n
\n {EMPTY_ARRAY_2.map(() => (\n \n ))}\n
\n \n ) : (\n <>\n
\n \n
\n {getErrorMessage() && }\n {lessonsList.length ? (\n \n
\n {lessonsList.map(({ id, title, lessonSchedules }) => {\n const isLessonSelected = id === selectedLessonId;\n const textColor = isLessonSelected ? '#ffffff' : '#252232';\n\n return (\n \n
\n \n \n
\n
\n {lessonSchedules.map((lessonSchedule) => {\n const { id, type, datetimeStart, datetimeEnd } = lessonSchedule;\n const hasDates = !!datetimeStart || !!datetimeEnd;\n const startDay = getDateByMoscow(datetimeStart, 'LL'),\n endDay = getDateByMoscow(datetimeEnd, 'LL'),\n startTime = getTimeByMoscow(datetimeStart),\n endTime = getTimeByMoscow(datetimeEnd);\n\n const dateString =\n startDay === endDay\n ? `${startDay} в ${startTime} - ${endTime}`\n : `${startDay} в ${startTime} - ${endDay} в ${endTime} -`;\n\n return (\n
\n \n {hasDates && (\n \n )}\n
\n );\n })}\n {isPaginationFetching && (\n
\n \n
\n )}\n
\n
\n );\n })}\n
\n \n ) : (\n
\n \n
\n )}\n\n
\n \n \n
\n \n )}\n \n \n );\n};\n","import { TLessonSchedules } from 'src-new/components/new-subjects';\n\nexport const emptyOlineLessonSchedule: TLessonSchedules = {\n id: 0,\n type: 'online_lesson',\n datetimeStart: '',\n datetimeEnd: '',\n};\nexport const emptySelfpreparationLessonSchedule: TLessonSchedules = {\n id: 0,\n type: 'selfpreparation_lesson',\n datetimeStart: '',\n datetimeEnd: '',\n};\n","import React, { useState } from 'react';\nimport { getUid } from '@frontend-modules/frontend-utils';\nimport { AppButton, AppDatepicker, AppModal, AppText, AppTextareaInput } from '@frontend-modules/ui-kit';\nimport { checkIsBefore } from '@lms-elements/utils';\nimport { ConfigProvider, ThemeConfig } from 'antd';\nimport { TLessonSchedules, WarningSign } from 'src-new/components/new-subjects';\nimport { EMPTY_ARRAY_2 } from 'src-new/constants';\nimport { AppSwitch } from 'src-new/ui';\nimport { payloadTimeFormatter } from 'src-new/utils';\n\nimport { emptyOlineLessonSchedule, emptySelfpreparationLessonSchedule } from './EditLessonModal.constants';\nimport { TEditLessonModal } from './EditLessonModal.types';\n\nimport './style.scss';\nexport const EditLessonModal: React.FC = (props: TEditLessonModal) => {\n const { lesson, error, onModalClose, onSaveLesson } = props;\n const { id, title, lessonSchedules, type } = lesson;\n\n const onlineLessonSchedule = lessonSchedules.find(({ type }) => type === 'online_lesson');\n const selfpreparationLessonSchedule = lessonSchedules.find(({ type }) => type === 'selfpreparation_lesson');\n\n const [onlineLesson, setOnlineLesson] = useState(\n onlineLessonSchedule\n ? {\n ...onlineLessonSchedule,\n datetimeStart: onlineLessonSchedule?.datetimeStart?.split('+')[0],\n datetimeEnd: onlineLessonSchedule?.datetimeEnd?.split('+')[0],\n }\n : undefined,\n );\n const [selfpreparationLesson, setSelfpreparationLesson] = useState(\n selfpreparationLessonSchedule\n ? {\n ...selfpreparationLessonSchedule,\n datetimeStart: selfpreparationLessonSchedule?.datetimeStart?.split('+')[0],\n datetimeEnd: selfpreparationLessonSchedule?.datetimeEnd?.split('+')[0],\n }\n : undefined,\n );\n const [lessonTitle, setLessonTitle] = useState(title);\n\n const dateError = checkIsBefore(selfpreparationLesson?.datetimeEnd, selfpreparationLesson?.datetimeStart);\n const isNoLessons = !selfpreparationLesson && !onlineLesson;\n const isSaveButtonDisabled =\n isNoLessons ||\n dateError ||\n !lessonTitle ||\n (selfpreparationLesson && !selfpreparationLesson?.datetimeStart) ||\n (selfpreparationLesson && !selfpreparationLesson?.datetimeEnd);\n const schedulesList: { type: 'self' | 'online'; title: string; schedule: TLessonSchedules | undefined }[] = [\n {\n type: 'self',\n title: 'Самоподготовка',\n schedule: selfpreparationLesson,\n },\n {\n type: 'online',\n title: 'Онлайн-занятие',\n schedule: onlineLesson,\n },\n ];\n const datepickerTheme: ThemeConfig = {\n components: {\n DatePicker: {\n controlPaddingHorizontalSM: 2,\n paddingSM: 10,\n paddingXS: 4,\n paddingXXS: 2,\n marginXXS: 4,\n controlHeightSM: 24,\n },\n },\n };\n\n const getErrorMessage = (): string => {\n if (error) {\n // @ts-ignore\n const errorData = JSON.parse(error.message) as { message: string; extra: { fields: string[] } };\n\n return errorData.extra.fields[0] ?? 'Не удалось переместить урок';\n }\n return '';\n };\n const onSwitchChanged = (val: boolean, type: 'self' | 'online') => {\n if (type === 'self') {\n val\n ? setSelfpreparationLesson(selfpreparationLessonSchedule ?? emptySelfpreparationLessonSchedule)\n : setSelfpreparationLesson(undefined);\n } else {\n val ? setOnlineLesson(onlineLessonSchedule ?? emptyOlineLessonSchedule) : setOnlineLesson(undefined);\n }\n };\n const onDateChanged = (val: string, type: 'self' | 'online', point: 'start' | 'end') => {\n if (type === 'self' && selfpreparationLesson) {\n const lesson =\n point === 'start'\n ? {\n ...selfpreparationLesson,\n datetimeStart: val,\n }\n : {\n ...selfpreparationLesson,\n datetimeEnd: val,\n };\n setSelfpreparationLesson(lesson);\n } else if (onlineLesson) {\n setOnlineLesson({\n ...onlineLesson,\n datetimeStart: val,\n });\n }\n };\n /**\n * @description handleSaveLesson - метод, вызываемый при сохранении урока\n * Если данные не изменились, вызовется метод onModalClose, иначе - onSaveLesson\n * (если lessonSchedule был удален, то передастся его id с отрицательным знаком, если добавлен новый - id = 0)\n *\n * */\n const handleSaveLesson = () => {\n const isTitlesEqual = title === lessonTitle.trim();\n const isOnlineLessonEqual =\n onlineLessonSchedule?.datetimeStart === payloadTimeFormatter(onlineLesson?.datetimeStart ?? '');\n const isSelpreparationLessonsEqual =\n selfpreparationLessonSchedule?.datetimeStart ===\n payloadTimeFormatter(selfpreparationLesson?.datetimeStart ?? '') &&\n selfpreparationLessonSchedule?.datetimeEnd ===\n payloadTimeFormatter(selfpreparationLesson?.datetimeEnd ?? '');\n\n if (isTitlesEqual && isOnlineLessonEqual && isSelpreparationLessonsEqual) {\n onModalClose();\n } else {\n const schedules: TLessonSchedules[] = [];\n if ((onlineLesson || onlineLessonSchedule) && !isOnlineLessonEqual) {\n const isLessonScheduleDeleted = onlineLessonSchedule && !onlineLesson;\n //@ts-ignore\n const lessonHandling: TLessonSchedules = onlineLesson ?? onlineLessonSchedule;\n schedules.push({\n ...lessonHandling,\n id: isLessonScheduleDeleted ? -lessonHandling.id : onlineLesson?.id ?? 0,\n datetimeStart: lessonHandling.datetimeStart\n ? payloadTimeFormatter(lessonHandling.datetimeStart)\n : '',\n });\n }\n if ((selfpreparationLesson || selfpreparationLessonSchedule) && !isSelpreparationLessonsEqual) {\n const isLessonScheduleDeleted = selfpreparationLessonSchedule && !selfpreparationLesson;\n //@ts-ignore\n const lessonHandling: TLessonSchedules = selfpreparationLesson ?? selfpreparationLessonSchedule;\n schedules.push({\n ...lessonHandling,\n id: isLessonScheduleDeleted ? -lessonHandling.id : lessonHandling?.id ?? 0,\n datetimeStart: payloadTimeFormatter(lessonHandling.datetimeStart),\n datetimeEnd: payloadTimeFormatter(lessonHandling.datetimeEnd),\n });\n }\n const lessonToSave = {\n ...lesson,\n title: lessonTitle,\n lessonSchedules: schedules,\n };\n\n onSaveLesson(lessonToSave);\n }\n };\n\n return (\n undefined}\n isShowCloseIcon={false}\n wrapClassName={'edit-lesson-modal__wrapper'}\n centered\n >\n
\n
\n \n
\n {getErrorMessage() && }\n
\n \n setLessonTitle(value.trim())}\n />\n
\n {schedulesList.map((scheduleItem) => {\n const { type, schedule, title } = scheduleItem;\n\n return (\n
\n
\n onSwitchChanged(val, type)}\n />\n \n
\n
\n {EMPTY_ARRAY_2.map((item, index) => {\n const title = index ? 'Конец' : 'Начало';\n const dateType = index ? 'end' : 'start';\n const defaultValue = index ? schedule?.datetimeEnd : schedule?.datetimeStart;\n\n if ((type === 'online' && index) || !schedule) {\n return <>;\n }\n return (\n
\n \n \n onDateChanged(val, type, dateType)}\n />\n \n
\n );\n })}\n
\n
\n );\n })}\n
\n \n \n
\n
\n \n );\n};\n","import React, { useMemo } from 'react';\nimport { CloseIcon, emptyPreview, StrokeArrowRightIcon } from 'assets';\nimport { getPdfViewerUrl } from 'src-new/components/library-page/utils';\nimport { AppModal, AppScrollPaginateContainer, AppSkeleton, AppText } from 'src-new/ui';\nimport { isEmptyList } from 'src-new/utils';\nimport { TBookAuthors } from 'types/libraryTypes';\n\nimport { TLibraryModalParams } from './LibraryModal.types';\n\nimport './style.scss';\n\nexport const LibraryModal: React.FC = (params) => {\n const {\n title,\n booksList,\n bookListPaginate,\n isFetching,\n isShow,\n handleLibraryPaginate,\n handleLibraryClose,\n } = params;\n const { currentPage, maxPage } = bookListPaginate;\n\n const hasBooks = useMemo(() => !isEmptyList(booksList), [booksList]);\n const isModalShow = useMemo(() => hasBooks && isShow, [hasBooks, isShow]);\n\n const getAuthorsString = (authorsList: TBookAuthors[]): string => {\n const result = authorsList.map((item) => `${item.lastName} ${item.firstName} ${item.patronymic}`);\n return result.join(', ');\n };\n const getTitlesString = (list: string[]): string => {\n return list.filter((item, index, list) => list.indexOf(item) == index).join(', ');\n };\n\n const handleClose = () => {\n handleLibraryClose();\n };\n const onScrollHandle = (currPage: number) => {\n if (!isFetching && hasBooks) {\n handleLibraryPaginate(currPage);\n }\n };\n const onBookClick = (url: string) => {\n document.open(getPdfViewerUrl(url), '_blank', 'noopener noreferrer');\n };\n return (\n } afterClose={handleClose}>\n
\n {isFetching ? (\n \n ) : (\n <>\n
\n
\n \n
\n \n
\n \n
\n
\n\n \n
\n {booksList.map((book, index) => {\n const { id, preview, title, courseTypeBooks, authors, files } = book;\n\n return (\n onBookClick(files[0]?.url)}\n >\n \n
\n
\n {'book-preview'}\n
\n
\n
\n \n item.type.title),\n )}\n fontStyle={'footnotes'}\n />\n
\n
\n \n item.course.title),\n )}\n fontStyle={'footnotes'}\n />\n
\n
\n
\n
\n );\n })}\n
\n \n \n )}\n \n
\n );\n};\n","import { TField } from './TeachersInfoModal.types';\n\nexport const getInfoFields: TField[] = [\n {\n title: 'Должность',\n fieldName: 'currentPosition',\n },\n {\n title: 'Преподаваемые дисциплины',\n fieldName: 'subjects',\n },\n {\n title: 'Общий стаж работы',\n fieldName: 'generalExperience',\n },\n {\n title: 'Стаж в данной должности',\n fieldName: 'currentExperience',\n },\n {\n title: 'Образование',\n fieldName: 'education',\n },\n {\n title: 'Квалификация по диплому',\n fieldName: 'upProfessional',\n },\n {\n title: 'Направление подготовки и/или специальность',\n fieldName: 'specialization',\n },\n];\n","import React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { CloseIcon } from 'assets';\nimport { TTeacherSubjects } from 'src-new/components/new-subjects';\nimport { AppModal, AppSkeleton, AppText } from 'src-new/ui';\nimport { resetTeacherInfoAction } from 'store/actions/newSubjects';\n\nimport { getInfoFields } from './TeachersInfoModal.config';\nimport { TFieldName, TTeachersInfoModalParams } from './TeachersInfoModal.types';\n\nimport './style.scss';\n\nexport const TeachersInfoModal: React.FC = ({ teacherInfo, isFetching }) => {\n const dispatch = useDispatch();\n const { lastName, firstName, patronymic, img, id, externalId } = { ...teacherInfo?.user };\n\n const isModalShow = useMemo(() => !!id, [id]);\n\n const getInfoContent = (fieldName: TFieldName): React.ReactNode => {\n const value = teacherInfo?.[fieldName];\n\n if (Array.isArray(value)) {\n // TODO: использовать isListExist\n return value?.length ? (\n value.map((value: string | TTeacherSubjects, index: number) => {\n return typeof value !== 'string' ? (\n \n ) : (\n \n );\n })\n ) : (\n \n );\n } else {\n return ;\n }\n };\n const handleClose = () => {\n dispatch(resetTeacherInfoAction());\n };\n\n return (\n }\n afterClose={handleClose}\n >\n
\n {isFetching ? (\n \n ) : (\n <>\n
\n
\n
\n {!img ? (\n {'teachers-avatar'}\n ) : (\n
\n \n
\n )}\n
\n \n
\n
\n
\n {getInfoFields.map((item, index) => {\n const content = teacherInfo?.[item.fieldName];\n const isEmpty = Array.isArray(content) ? !content.length : !content;\n\n return !isEmpty ? (\n
\n
\n \n
\n
\n {getInfoContent(item.fieldName)}\n
\n
\n ) : undefined;\n })}\n
\n \n )}\n
\n \n );\n};\n","import React from 'react';\nimport { TProgress } from 'src-new/components/new-subjects';\n\nimport './style.scss';\n\n/**\n * @description Component for displaying lesson/theme/course progress (solid line for 30 and more items, dashed line otherwise)\n * @param {TProgress[]} progress\n * */\nexport const ProgressBar: React.FC<{ progress: TProgress[] }> = ({ progress }) => {\n const isSolid = progress.length >= 30;\n\n return (\n
\n {progress.map((value, index) => (\n
\n \n {!value.isViewed && }\n
\n ))}\n
\n );\n};\n","import React from 'react';\nimport { AppPopover, AppText } from '@frontend-modules/ui-kit';\nimport { getDateWithTime } from '@lms-elements/utils';\nimport { TExercisesProgress } from 'types/newSubjectsTypes';\n\nimport './style.scss';\n\n/**\n * @description Component for displaying materials resolve progress\n * @param {TExercisesProgress[]} progress\n * */\nexport const ProgressBarAdvanced: React.FC<{ progress: TExercisesProgress[] }> = ({ progress }) => {\n const getPopoverContent = (data: TExercisesProgress) => {\n const { attemptsCount, title, completedDate } = data;\n const popoverTitle = !isNaN(Number(title)) ? `Упражнение №${title}` : title;\n\n return (\n
\n \n
\n \n \n
\n {completedDate && (\n
\n \n \n
\n )}\n
\n );\n };\n\n return (\n
\n {progress.map((value, index) => {\n const { status } = value;\n\n return (\n
\n \n \n \n
\n );\n })}\n
\n );\n};\n","import React, { useMemo } from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { AppAreaChart } from 'src-new/ui';\nimport { TTrainingsProgress } from 'types/newSubjectsTypes';\n\nimport './style.scss';\nexport const ProgressChart: React.FC = (props) => {\n const { points, allCorrectAnswersCount, allAnswersCount, maxPointAnswersCount } = props;\n\n const lastTenPoints = points.length > 10 ? points.slice(-10) : points;\n const maxPointsVal = lastTenPoints.length ? lastTenPoints[lastTenPoints.length - 1] : 0;\n const noData = allAnswersCount <= 10;\n\n const commonColor = useMemo(() => {\n const percent = (allCorrectAnswersCount / allAnswersCount) * 100;\n if (percent <= 45) {\n return '#EA5959';\n }\n if (percent <= 75) {\n return '#E68B00';\n }\n return '#0088E9';\n }, [allCorrectAnswersCount, allAnswersCount]);\n const statisticColor = useMemo(() => {\n if (maxPointsVal <= 4) {\n return '#EA5959';\n }\n if (maxPointsVal <= 7) {\n return '#E68B00';\n }\n return '#0088E9';\n }, [maxPointsVal]);\n\n const chartDataNormalize = useMemo(() => {\n const lowVal = maxPointAnswersCount * 0.45;\n const middleVal = maxPointAnswersCount * 0.75 - lowVal;\n const highVal = maxPointAnswersCount - middleVal - lowVal;\n\n const arr: (string | number)[][] = [['Axis', 'Low', 'Middle', 'High', 'Line']];\n lastTenPoints.forEach((item, index) => {\n arr.push([index, lowVal, middleVal, highVal, item]);\n });\n return arr;\n }, [lastTenPoints]);\n\n const chartOptions = useMemo(() => {\n return {\n legend: 'none',\n height: 32,\n width: 100,\n chartArea: {\n width: '100%',\n height: 32,\n },\n hAxis: {\n textPosition: 'none',\n gridlines: {\n color: 'transparent',\n },\n baselineColor: 'transparent',\n },\n vAxis: {\n textPosition: 'none',\n gridlines: {\n color: 'transparent',\n },\n minValue: 0,\n maxValue: 11,\n baselineColor: 'transparent',\n },\n isStacked: true,\n series: {\n // low\n 0: {\n areaOpacity: 0.1,\n color: '#EA5959',\n lineDashStyle: [4, 2],\n lineWidth: 1,\n visibleInLegend: false,\n },\n\n // middle\n 1: {\n areaOpacity: 0.1,\n color: '#E68B00',\n lineDashStyle: [4, 2],\n lineWidth: 1,\n visibleInLegend: false,\n },\n\n // high\n 2: {\n areaOpacity: 0.1,\n color: '#0088E9',\n lineDashStyle: [4, 2],\n lineWidth: 1,\n visibleInLegend: false,\n },\n\n // statistic\n 3: {\n color: commonColor,\n type: 'line',\n },\n },\n seriesType: 'area',\n enableInteractivity: false,\n };\n }, [commonColor, chartDataNormalize]);\n\n return (\n
\n {noData ? (\n
\n \n
\n ) : (\n \n )}\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n );\n};\n","import React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getNoun } from '@frontend-modules/frontend-utils';\nimport { TARIFF_CURIOUS_TITLE } from 'App/constants';\nimport { useRole } from 'hooks';\nimport {\n NewSubjectsCardMemo,\n SubjectsElementsSkeleton,\n TCourseColContent,\n TCourseListItem,\n} from 'src-new/components/new-subjects';\nimport { EMPTY_ARRAY_10 } from 'src-new/constants';\nimport { AppCollapse, AppText } from 'src-new/ui';\nimport { getUid } from 'src-new/utils';\nimport { setSelectedCourseAction } from 'store/actions/newSubjects';\nimport { useAppSelector } from 'store/store';\nimport { TCourseGroup, TGetCourseTreePayload, TSelectedCourse } from 'types/newSubjectsTypes';\n\nexport const CoursesColContent: React.FC = (props) => {\n const { isStudent, isTeacher } = useRole();\n const { isDesktop, isCourseListLoading, MobileContent } = props;\n const { courseTree, selectedCourse } = useAppSelector((store) => store.newSubject);\n\n const dispatch = useDispatch();\n\n const handleCourseSelected = (course: TSelectedCourse) => {\n dispatch(setSelectedCourseAction(course));\n };\n // список курсов для студентов\n const getStudentCourseList = (\n courseTree: TGetCourseTreePayload,\n selectedCourse: TSelectedCourse,\n ): TCourseListItem[] => {\n const { common: commonCourses, choice: choiceCourses, additional: additionalCourses } = courseTree;\n const isCommonExist = commonCourses && !!commonCourses.length;\n const isChoiceExist = choiceCourses && !!choiceCourses.length;\n const isAdditionalExist = additionalCourses && !!additionalCourses.length;\n\n // Следующие три константы содержат в себе подготовленные списки курсов для встраивания в AppCollapse\n const commonCoursesList = isCommonExist\n ? commonCourses.map((course) => {\n return {\n header: (\n \n ),\n content: (\n
\n {course?.studentGroup?.courseGroups?.map((value) => {\n const isCourseSelected = selectedCourse?.id === value.id;\n const needInsertContent = !isDesktop && isCourseSelected;\n\n return (\n
\n \n handleCourseSelected({\n id: value.id,\n courseId: value.course.id,\n title: value.course.title,\n type: 'common',\n isCurious: value.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: value.title,\n recalculation: value.recalculation,\n })\n }\n MobileContent={needInsertContent ? MobileContent : undefined}\n />\n
\n );\n })}\n
\n ),\n key: course.studentGroup.id,\n };\n })\n : [];\n\n const choiceCoursesList = isChoiceExist\n ? [\n {\n header: ,\n content: (\n
\n {choiceCourses?.map((value) => {\n const isCourseSelected = selectedCourse?.id === value.id;\n const needInsertContent = !isDesktop && isCourseSelected;\n\n return (\n \n \n handleCourseSelected({\n id: value.id,\n courseId: value.course.id,\n title: value.course.title,\n type: 'choice',\n isCurious: value.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: value.title,\n recalculation: value.recalculation,\n })\n }\n MobileContent={needInsertContent ? MobileContent : undefined}\n />\n
\n );\n })}\n \n ),\n key: 1001,\n },\n ]\n : [];\n\n const additionalCoursesList = isAdditionalExist\n ? [\n {\n header: ,\n content: (\n
\n {additionalCourses?.map((value) => {\n const isCourseSelected = selectedCourse?.id === value.id;\n const needInsertContent = !isDesktop && isCourseSelected;\n return (\n \n \n handleCourseSelected({\n id: value.id,\n courseId: value.course.id,\n title: value.course.title,\n type: 'additional',\n isCurious: value.tariff === TARIFF_CURIOUS_TITLE,\n courseGroupTitle: value.title,\n recalculation: value.recalculation,\n })\n }\n MobileContent={needInsertContent ? MobileContent : undefined}\n />\n
\n );\n })}\n \n ),\n key: 2002,\n },\n ]\n : [];\n\n return [...commonCoursesList, ...choiceCoursesList, ...additionalCoursesList];\n };\n // список курсов для учителей\n const getTeachersCourseList = (courseTree: TCourseGroup[], selectedCourse: TSelectedCourse): TCourseListItem[] => {\n return courseTree?.map((courseGroup) => {\n const { id: subjectId, title, courseGroups } = courseGroup;\n\n return {\n header: ,\n content: (\n
\n {courseGroups?.map((value) => {\n const { id, title, studentsCount, course, progress, recalculation } = value;\n const isCourseSelected = selectedCourse?.id === value.id;\n const needInsertContent = !isDesktop && isCourseSelected;\n const additionalTitle = studentsCount\n ? `${studentsCount} ${getNoun(studentsCount, 'ученик', 'ученика', 'учеников')}`\n : 'нет учеников';\n\n return (\n
\n \n handleCourseSelected({\n id: id,\n subjectId: subjectId,\n courseId: course.id,\n title: course.title,\n courseGroupTitle: title,\n recalculation: recalculation,\n })\n }\n MobileContent={needInsertContent ? MobileContent : undefined}\n />\n
\n );\n })}\n
\n ),\n key: subjectId,\n };\n });\n };\n\n const courseList = useMemo(() => {\n if (courseTree) {\n return isStudent\n ? getStudentCourseList(courseTree as TGetCourseTreePayload, selectedCourse)\n : isTeacher\n ? getTeachersCourseList(courseTree as TCourseGroup[], selectedCourse)\n : [];\n }\n return [];\n }, [isStudent, isTeacher, courseTree, isDesktop, selectedCourse, MobileContent]);\n\n return (\n
\n
\n {isCourseListLoading ? (\n
\n {EMPTY_ARRAY_10.map(() => (\n \n ))}\n
\n ) : (\n
\n item.key).join('-')}\n list={courseList}\n expandIconPosition={'end'}\n defaultActiveKey={courseList.map((item) => item.key)}\n />\n
\n )}\n
\n
\n );\n};\nexport const CoursesColContentMemo = React.memo(CoursesColContent);\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { AppFontIcon } from '@frontend-modules/ui-kit';\nimport { useRole } from 'hooks';\nimport {\n LessonInfo,\n LessonsColTabsMemo,\n NewSubjectsCardMemo,\n SubjectsElementsSkeleton,\n TLessonSchedules,\n TLessonsColContent,\n TLessonTab,\n TLessonTabTypes,\n TSubjectLesson,\n WarningSign,\n} from 'src-new/components/new-subjects';\nimport {\n TBorderStyle,\n TBrightnessStyle,\n} from 'src-new/components/new-subjects/entities/new-course-card/NewSubjectsCard.types';\nimport { EMPTY_ARRAY_4, EMPTY_ARRAY_10 } from 'src-new/constants';\nimport { AppSwitch, AppText } from 'src-new/ui';\nimport { getLastViewedLessonByCourse, getNearestLessonId, getUid } from 'src-new/utils';\nimport { isTimeExpired } from 'src-new/utils/date-n-time/getCurrentTime';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nexport const LessonsColContent: React.FC = (props) => {\n const lessonTarget = useRef(null);\n const { isTeacher } = useRole();\n\n const [lessonTypeFilter, setLessonTypeFilter] = useState();\n const [isPastLessonsVisible, setIsPastLessonsVisible] = useState(false);\n\n const { isLessonListLoading, isCurious, handleLessonSelect, handleAddLessonClick, handleEditLessonClick } = props;\n\n const { lessonsTree, topicsTree, selectedCourse, selectedTopicId, getLessonsTreeStatus } = useAppSelector(\n (store) => store.newSubject,\n );\n\n const isLessonsListEmpty = getLessonsTreeStatus === FetchStatus.FETCHED && !lessonsTree.length;\n const isWarningVisible = !!selectedCourse?.recalculation && getLessonsTreeStatus === FetchStatus.FETCHED;\n\n const reserveLessonsCount = useMemo(() => lessonsTree.filter((item) => item.type === 'reserve')?.length, [\n lessonsTree,\n ]);\n const getLessonTypeFilterList = useMemo((): TLessonTab[] => {\n let onlineLessonsCount = 0,\n testLessonsCount = 0,\n selfPreparationCount = 0,\n needAttentionCount = 0;\n\n lessonsTree.forEach((item) => {\n onlineLessonsCount += item.lessonSchedules.filter((lesson) => lesson.type === 'online_lesson').length;\n testLessonsCount += item.lessonSchedules.filter((lesson) => lesson.type === 'test_lesson').length;\n selfPreparationCount += item.lessonSchedules.filter((lesson) => lesson.type === 'selfpreparation_lesson')\n .length;\n if (isTeacher && item.metrics?.some(({ status }) => status === 'critical')) {\n needAttentionCount += 1;\n } else if (item.progress?.some((lesson) => lesson.status === 'expired')) {\n needAttentionCount += 1;\n }\n });\n return [\n {\n type: 'online_lesson',\n count: onlineLessonsCount,\n },\n {\n type: 'test_lesson',\n count: testLessonsCount,\n },\n {\n type: 'selfpreparation_lesson',\n count: selfPreparationCount,\n },\n {\n type: 'need_attention',\n count: needAttentionCount,\n },\n ];\n }, [lessonsTree]);\n const targetLessonId = useMemo(() => {\n //для любознательного контент скроллится до последнего просмотренного урока или до первого урока в списке\n if (isCurious) {\n const viewedLesson = getLastViewedLessonByCourse(selectedCourse.id);\n return viewedLesson ? viewedLesson.lesson : lessonsTree[0]?.id;\n }\n\n //для остальных - до ближайшего по времени урока\n return getNearestLessonId(lessonsTree);\n }, [lessonsTree, selectedCourse]);\n\n // Скролл до нужного урока в списке\n useEffect(() => {\n if (lessonTarget.current && !isLessonListLoading) {\n lessonTarget.current.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isLessonListLoading, lessonTarget]);\n\n // При смене темы сбрасываем установленный фильтр\n useEffect(() => {\n setLessonTypeFilter(undefined);\n }, [selectedTopicId]);\n\n const handlePastLessonFilterSet = (checked: boolean) => {\n setIsPastLessonsVisible(checked);\n };\n const handleLessonTypeSelected = (type: TLessonTabTypes | undefined) => {\n setLessonTypeFilter(type);\n };\n\n /**\n * @description getLessonOrderById - возвращает порядковый номер урока,\n * который рассчитывается по индексу урока в topicsTree\n * @param {number} lessonId\n * @return number\n */\n const getLessonOrderById = (lessonId: number): number => {\n const lessonIdsList = topicsTree\n .map(({ lessons }) => lessons)\n .flat(1)\n .filter((item) => !!item);\n return lessonIdsList.findIndex((item) => item === lessonId) + 1;\n };\n /**\n * @description getBorderByLessonType - возвращает цвет обводки для карточки урока:\n * голубой - если выбранный тип урока содержится в списке конкретного урока, иначе - серый\n * @param {TSubjectLesson} lesson\n * @return TBorderStyle\n */\n const getBorderByLessonType = (lesson: TSubjectLesson): TBorderStyle => {\n switch (lessonTypeFilter) {\n case 'online_lesson':\n case 'test_lesson':\n case 'selfpreparation_lesson':\n return lesson.lessonSchedules.find((item) => item.type === lessonTypeFilter) ? 'blue' : 'gray';\n case 'need_attention':\n return isTeacher && lesson.metrics?.some((item) => item.status === 'critical')\n ? 'blue'\n : lesson?.progress?.find((item) => item.status === 'expired')\n ? 'blue'\n : 'gray';\n default:\n return 'blue';\n }\n };\n /**\n * @description getBrightnessByDate - возвращает тип яркости для карточки урока:\n * яркий - если выбран фильтр isPastLessonsVisible и урок еще не прошел конкретного урока, иначе - тусклый\n * @param {TLessonSchedules[]} lessons\n * @return TBrightnessStyle\n */\n const getBrightnessByDate = (lessons: TLessonSchedules[]): TBrightnessStyle => {\n if (isPastLessonsVisible) {\n const notPastLesson = lessons.find((item) => !isTimeExpired(item.datetimeEnd));\n return notPastLesson ? 'bright' : 'dim';\n }\n return 'bright';\n };\n\n return (\n
\n {isLessonListLoading ? (\n <>\n
\n \n {!isCurious && }\n
\n {!isCurious && (\n
\n {EMPTY_ARRAY_4.map(() => (\n \n ))}\n
\n )}\n
\n
\n {EMPTY_ARRAY_10.map(() => (\n \n ))}\n
\n
\n \n ) : (\n <>\n
\n
\n \n {isTeacher && }\n
\n {!isCurious && (\n
\n \n handlePastLessonFilterSet(checked)}\n />\n
\n )}\n
\n {isWarningVisible && (\n \n )}\n {!isCurious && (\n {\n handleLessonTypeSelected(type);\n }}\n />\n )}\n
\n {!isLessonsListEmpty ? (\n \n {lessonsTree.map((value, index) => {\n return (\n \n {isTeacher && !index && (\n
\n \n \n
\n
\n )}\n \n : undefined\n }\n handleCardClick={() => handleLessonSelect(value.id)}\n handleEditLessonClick={handleEditLessonClick?.bind(this, value)}\n isTeacher={isTeacher}\n />\n
\n {isTeacher && (\n
\n \n \n
\n \n )}\n \n );\n })}\n \n ) : (\n
\n \n
\n )}\n \n \n )}\n \n );\n};\nexport const LessonsColContentMemo = React.memo(LessonsColContent);\n","import React, { useEffect, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n NewSubjectsCardMemo,\n SubjectsElementsSkeleton,\n ThemesColTabs,\n TTopicsColContent,\n} from 'src-new/components/new-subjects';\nimport { EMPTY_ARRAY_1, EMPTY_ARRAY_2, EMPTY_ARRAY_10 } from 'src-new/constants';\nimport { AppText } from 'src-new/ui';\nimport { getUid } from 'src-new/utils';\nimport { getStudentsListAction } from 'store/actions/newSubjects';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nexport const TopicsColContent: React.FC = (props) => {\n const dispatch = useDispatch();\n const topicTarget = useRef(null);\n\n const {\n isTopicListLoading,\n isCurious,\n hasBooks,\n isDesktop,\n courseTeachers,\n LessonsColContent,\n handleTeacherClick,\n handleStudentClick,\n handleLibraryClick,\n handleTopicSelect,\n } = props;\n\n const {\n selectedCourse,\n topicsTree,\n selectedTopicId,\n getTopicsTreeStatus,\n studentsList,\n studentsListPaginate,\n getStudentsListStatus,\n } = useAppSelector((store) => store.newSubject);\n\n const isTopicListEmpty = getTopicsTreeStatus === FetchStatus.FETCHED && !topicsTree.length;\n const hasPersonsList = !!courseTeachers?.length || !!studentsList?.length;\n\n const targetTopicId = selectedTopicId || topicsTree[0]?.id;\n\n // Скролл до нужных темы и урока в списках\n useEffect(() => {\n if (topicTarget.current && !isTopicListLoading) {\n topicTarget.current.scrollIntoView({ block: 'nearest', behavior: 'auto' });\n }\n }, [isTopicListLoading, topicTarget]);\n\n const handleStudentsListPaginate = (currPage: number) => {\n dispatch(\n getStudentsListAction({\n courseGroup: selectedCourse.id,\n currentPage: currPage,\n }),\n );\n };\n return (\n
\n {isTopicListLoading ? (\n <>\n
\n \n
\n {!isCurious && (hasBooks || hasPersonsList) && (\n
\n {(hasPersonsList ? EMPTY_ARRAY_2 : EMPTY_ARRAY_1).map(() => (\n \n ))}\n
\n )}\n\n
\n
\n {EMPTY_ARRAY_10.map(() => (\n \n ))}\n
\n
\n \n ) : (\n <>\n
\n \n
\n {!isCurious && (hasBooks || hasPersonsList) && (\n \n )}\n
\n {!isTopicListEmpty ? (\n
\n {topicsTree?.map((value) => {\n const isTopicSelected = targetTopicId === value.id;\n const needInsertContent = !isDesktop && isTopicSelected;\n\n return (\n \n \n handleTopicSelect({\n courseGroup: selectedCourse.id,\n topic: value.id,\n })\n }\n />\n
\n );\n })}\n
\n ) : (\n
\n \n
\n )}\n
\n \n )}\n \n );\n};\nexport const TopicsColContentMemo = React.memo(TopicsColContent);\n","import React, { useMemo } from 'react';\nimport { useWindowResize } from 'hooks';\nimport { EmptyList } from 'src-new/components/new-subjects';\nimport { useGetSubjectsTreeData } from 'src-new/hooks';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport { CoursesColContentMemo } from './course-col-content/CourseColContent';\nimport { LessonsColContentMemo } from './lessons-col-content/LessonsColContent';\nimport { TopicsColContentMemo } from './topics-col-content/TopicsColContent';\nimport { TSubjectsTableDesktop } from './SubjectsTableContent.types';\n\nimport './style.scss';\n\nexport const SubjectsTableContent: React.FC = (params: TSubjectsTableDesktop) => {\n const isDesktop = !useWindowResize();\n // хук получает список учителей и студентов\n const { teachersList, noCourses } = useGetSubjectsTreeData();\n\n const {\n hasBooks,\n handleTopicSelect,\n handleLessonSelect,\n handleTeacherSelect,\n handleLibraryClick,\n handleAddLessonClick,\n handleEditLessonClick,\n } = params;\n\n const { selectedCourse, getCourseTreeStatus, getTopicsTreeStatus, getLessonsTreeStatus } = useAppSelector(\n (store) => store.newSubject,\n );\n\n const { isCurious } = selectedCourse;\n\n const isCourseListLoading = getCourseTreeStatus === FetchStatus.FETCHING;\n const isTopicListLoading = isCourseListLoading || getTopicsTreeStatus === FetchStatus.FETCHING;\n const isLessonListLoading =\n isCourseListLoading || isTopicListLoading || getLessonsTreeStatus === FetchStatus.FETCHING;\n\n const handleTeacherClick = (id: number) => {\n const selectedTeacher = teachersList?.find((item) => item.id === id);\n\n if (selectedTeacher) {\n handleTeacherSelect(selectedTeacher);\n }\n };\n const handleStudentClick = (id: number) => {\n window.open(`/profile/student/${id}/homeworks`);\n };\n\n const TopicsColContent = useMemo(() => {\n return (\n \n }\n />\n );\n }, [isTopicListLoading, teachersList, isDesktop]);\n\n return noCourses ? (\n \n ) : (\n
\n \n {/*В десктопной версии темы и уроки выводятся как самостоятельные элементы, в мобилке - вложены в курсы*/}\n {isDesktop && (\n <>\n {TopicsColContent}\n \n \n )}\n
\n );\n};\n","import { postApiRequest } from 'api';\nimport { ResponseEducationalPlanItem } from 'types/educationalPlan';\n\nimport { PostEducationalPlanItem } from '.';\n\nexport interface PostItem {\n educationalPlanItems: PostEducationalPlanItem[];\n}\n\nexport const createEducationalPlanItem = (params: PostItem): Promise => {\n return postApiRequest('/educational-plan-item/bulk-create/', params.educationalPlanItems);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { TSubjectLesson, TSubjectsTopic, TTeacherProfile } from 'src-new/components/new-subjects';\nimport {\n changeAssignmentMarkAction,\n changeAssignmentMarksAction,\n createAssignmentAdditionalMarkAction,\n} from 'store/actions/marks';\nimport * as NewSubjectService from 'store/actions/newSubjects';\nimport { FetchStatus } from 'types/api';\nimport {\n TCourseGroup,\n TCourseGroupsLesson,\n TGetCourseTreePayload,\n TGetLessonsStatisticPayload,\n TGetStudentsProgressListResponse,\n TPaginate,\n TSelectedCourse,\n TStudentItem,\n} from 'types/newSubjectsTypes';\n\nexport interface NewSubjectsState {\n getCourseTreeStatus: FetchStatus;\n getTopicsTreeStatus: FetchStatus;\n getLessonsTreeStatus: FetchStatus;\n getTeacherInfoStatus: FetchStatus;\n getStudentsListStatus: FetchStatus;\n getStudentsProgressListStatus: FetchStatus;\n getCourseGroupsLessonsStatus: FetchStatus;\n handleLessonScheduleStatus: FetchStatus;\n setMaterialViewedStatus: FetchStatus;\n getTreeByURLStatus: FetchStatus;\n postStatus: FetchStatus;\n changeAssignmentMarksStatus: FetchStatus;\n courseTree: TGetCourseTreePayload | TCourseGroup[] | undefined;\n topicsTree: TSubjectsTopic[];\n lessonsTree: TSubjectLesson[];\n lessonsStatistic: TGetLessonsStatisticPayload;\n selectedCourse: TSelectedCourse;\n teacherInfo: TTeacherProfile;\n selectedTopicId: number | undefined;\n selectedLessonId: number;\n studentsList: TStudentItem[];\n studentsListPaginate: TPaginate;\n courseGroupLessonsList: TCourseGroupsLesson[];\n courseGroupLessonsListPaginate: TPaginate;\n studentsProgressList: TGetStudentsProgressListResponse[];\n error: unknown;\n handleLessonScheduleError: unknown;\n}\nexport const initialState: NewSubjectsState = {\n getCourseTreeStatus: FetchStatus.INITIAL,\n getTopicsTreeStatus: FetchStatus.INITIAL,\n getLessonsTreeStatus: FetchStatus.INITIAL,\n getTeacherInfoStatus: FetchStatus.INITIAL,\n getStudentsProgressListStatus: FetchStatus.INITIAL,\n setMaterialViewedStatus: FetchStatus.INITIAL,\n getCourseGroupsLessonsStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n getTreeByURLStatus: FetchStatus.INITIAL,\n getStudentsListStatus: FetchStatus.INITIAL,\n handleLessonScheduleStatus: FetchStatus.INITIAL,\n changeAssignmentMarksStatus: FetchStatus.INITIAL,\n lessonsStatistic: {} as TGetLessonsStatisticPayload,\n courseTree: undefined,\n topicsTree: [],\n lessonsTree: [],\n selectedCourse: {} as TSelectedCourse,\n selectedTopicId: 0,\n selectedLessonId: 0,\n teacherInfo: {} as TTeacherProfile,\n studentsList: [],\n studentsProgressList: [],\n studentsListPaginate: {} as TPaginate,\n courseGroupLessonsList: [],\n courseGroupLessonsListPaginate: {} as TPaginate,\n error: null,\n handleLessonScheduleError: null,\n};\n\nconst NewSubjectsSlice = createSlice>({\n name: 'newSubjects',\n initialState,\n reducers: {\n reset: () => initialState,\n resetLessonHandlersErrors(state) {\n state.handleLessonScheduleError = null;\n state.handleLessonScheduleStatus = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(NewSubjectService.resetTeacherInfoAction, (state, { payload }) => {\n state.teacherInfo = payload;\n });\n builder.addCase(NewSubjectService.setSelectedCourseAction, (state, { payload }) => {\n state.selectedCourse = payload;\n state.getLessonsTreeStatus = FetchStatus.INITIAL;\n });\n builder.addCase(NewSubjectService.setSelectedTopicIdAction, (state, { payload }) => {\n state.selectedTopicId = payload;\n });\n builder.addCase(NewSubjectService.setSelectedLessonIdAction, (state, { payload }) => {\n state.selectedLessonId = payload;\n });\n\n builder\n .addCase(NewSubjectService.getStudentsTreeByURLAction.pending, (state) => {\n state.getTreeByURLStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsTreeByURLAction.fulfilled, (state, { payload }) => {\n const { courseTree, topicTree, lessonTree, selectedCourse, selectedTopicId } = payload;\n\n state.getTreeByURLStatus = FetchStatus.FETCHED;\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n\n state.courseTree = courseTree;\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedCourse = selectedCourse;\n state.selectedTopicId = selectedTopicId;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsTreeByURLAction.rejected, (state, { error }) => {\n state.getTreeByURLStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getTeachersTreeByURLAction.pending, (state) => {\n state.getTreeByURLStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersTreeByURLAction.fulfilled, (state, { payload }) => {\n const { courseTree, topicTree, lessonTree, selectedCourse, selectedTopicId } = payload;\n\n state.getTreeByURLStatus = FetchStatus.FETCHED;\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n\n state.courseTree = courseTree;\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedCourse = selectedCourse;\n state.selectedTopicId = selectedTopicId;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersTreeByURLAction.rejected, (state, { error }) => {\n state.getTreeByURLStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getStudentsCourseTreeAction.pending, (state) => {\n state.getCourseTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsCourseTreeAction.fulfilled, (state, { payload }) => {\n state.getCourseTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.courseTree = payload.courseTree;\n state.selectedCourse = payload.selectedCourse;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsCourseTreeAction.rejected, (state, { error }) => {\n state.getCourseTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getTeachersCourseTreeAction.pending, (state) => {\n state.getCourseTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersCourseTreeAction.fulfilled, (state, { payload }) => {\n state.getCourseTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.courseTree = payload.courseTree;\n state.selectedCourse = payload.selectedCourse;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersCourseTreeAction.rejected, (state, { error }) => {\n state.getCourseTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(changeAssignmentMarksAction.pending, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(changeAssignmentMarksAction.fulfilled, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(changeAssignmentMarksAction.rejected, (state, { error }) => {\n state.changeAssignmentMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(changeAssignmentMarkAction.pending, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(changeAssignmentMarkAction.fulfilled, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(changeAssignmentMarkAction.rejected, (state, { error }) => {\n state.changeAssignmentMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(createAssignmentAdditionalMarkAction.pending, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createAssignmentAdditionalMarkAction.fulfilled, (state) => {\n state.changeAssignmentMarksStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(createAssignmentAdditionalMarkAction.rejected, (state, { error }) => {\n state.changeAssignmentMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getLessonsStatisticAction.pending, (state) => {\n state.error = null;\n })\n .addCase(NewSubjectService.getLessonsStatisticAction.fulfilled, (state, { payload }) => {\n state.lessonsStatistic = payload;\n state.error = null;\n })\n .addCase(NewSubjectService.getLessonsStatisticAction.rejected, (state, { error }) => {\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.setLearningMaterialViewedAction.pending, (state) => {\n state.setMaterialViewedStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.setLearningMaterialViewedAction.fulfilled, (state) => {\n state.setMaterialViewedStatus = FetchStatus.FETCHED;\n\n state.error = null;\n })\n .addCase(NewSubjectService.setLearningMaterialViewedAction.rejected, (state, { error }) => {\n state.setMaterialViewedStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(NewSubjectService.getTreeByFirstItemsAction.pending, (state) => {\n state.getTopicsTreeStatus = FetchStatus.FETCHING;\n state.getLessonsTreeStatus = FetchStatus.FETCHING;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getTreeByFirstItemsAction.fulfilled, (state, { payload }) => {\n const { topicTree, lessonTree, selectedTopicId } = payload;\n\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedTopicId = selectedTopicId;\n state.error = null;\n })\n .addCase(NewSubjectService.getTreeByFirstItemsAction.rejected, (state, { error }) => {\n state.getTopicsTreeStatus = FetchStatus.ERROR;\n state.getLessonsTreeStatus = FetchStatus.ERROR;\n\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getTreeByKnownItemsAction.pending, (state) => {\n state.getTopicsTreeStatus = FetchStatus.FETCHING;\n state.getLessonsTreeStatus = FetchStatus.FETCHING;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getTreeByKnownItemsAction.fulfilled, (state, { payload }) => {\n const { topicTree, lessonTree, selectedTopicId } = payload;\n\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedTopicId = selectedTopicId;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getTreeByKnownItemsAction.rejected, (state, { error }) => {\n state.getTopicsTreeStatus = FetchStatus.ERROR;\n state.getLessonsTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(NewSubjectService.getStudentsTreeByTimeItemsAction.pending, (state) => {\n state.getTopicsTreeStatus = FetchStatus.FETCHING;\n state.getLessonsTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsTreeByTimeItemsAction.fulfilled, (state, { payload }) => {\n const { topicTree, lessonTree, selectedTopicId } = payload;\n\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedTopicId = selectedTopicId;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsTreeByTimeItemsAction.rejected, (state, { error }) => {\n state.getTopicsTreeStatus = FetchStatus.ERROR;\n state.getLessonsTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getTeachersTreeByTimeItemsAction.pending, (state) => {\n state.getTopicsTreeStatus = FetchStatus.FETCHING;\n state.getLessonsTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersTreeByTimeItemsAction.fulfilled, (state, { payload }) => {\n const { topicTree, lessonTree, selectedTopicId } = payload;\n\n state.getTopicsTreeStatus = FetchStatus.FETCHED;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n\n state.topicsTree = topicTree;\n state.lessonsTree = lessonTree;\n state.selectedTopicId = selectedTopicId;\n\n state.error = null;\n })\n .addCase(NewSubjectService.getTeachersTreeByTimeItemsAction.rejected, (state, { error }) => {\n state.getTopicsTreeStatus = FetchStatus.ERROR;\n state.getLessonsTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getLessonsBySelectedCourseAndTopicTreeAction.pending, (state) => {\n state.getLessonsTreeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getLessonsBySelectedCourseAndTopicTreeAction.fulfilled, (state, { payload }) => {\n const { lessonsTree, topic } = payload;\n state.getLessonsTreeStatus = FetchStatus.FETCHED;\n state.getTreeByURLStatus = FetchStatus.INITIAL;\n state.lessonsTree = lessonsTree;\n state.selectedTopicId = topic;\n state.error = null;\n })\n .addCase(NewSubjectService.getLessonsBySelectedCourseAndTopicTreeAction.rejected, (state, { error }) => {\n state.getLessonsTreeStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getTeacherProfileAction.pending, (state) => {\n state.getTeacherInfoStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeacherProfileAction.fulfilled, (state, { payload }) => {\n state.getTeacherInfoStatus = FetchStatus.FETCHED;\n state.teacherInfo = payload;\n state.error = null;\n })\n .addCase(NewSubjectService.getTeacherProfileAction.rejected, (state, { error }) => {\n state.getTeacherInfoStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getStudentsListAction.pending, (state) => {\n state.getStudentsListStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsListAction.fulfilled, (state, { payload }) => {\n if (payload.pagination.currentPage > 1) {\n state.studentsList.push(...payload.results);\n } else {\n state.studentsList = payload.results;\n }\n state.studentsListPaginate = payload.pagination;\n state.error = null;\n state.getStudentsListStatus = FetchStatus.FETCHED;\n })\n .addCase(NewSubjectService.getStudentsListAction.rejected, (state, { error }) => {\n state.getStudentsListStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getStudentsProgressListAction.pending, (state) => {\n state.getStudentsProgressListStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getStudentsProgressListAction.fulfilled, (state, { payload }) => {\n state.studentsProgressList = payload;\n state.error = null;\n state.getStudentsProgressListStatus = FetchStatus.FETCHED;\n })\n .addCase(NewSubjectService.getStudentsProgressListAction.rejected, (state, { error }) => {\n state.getStudentsProgressListStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.getCourseGroupsLessonsAction.pending, (state) => {\n state.getCourseGroupsLessonsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(NewSubjectService.getCourseGroupsLessonsAction.fulfilled, (state, { payload }) => {\n if (payload.pagination.currentPage > 1) {\n state.courseGroupLessonsList.push(...payload.results);\n } else {\n state.courseGroupLessonsList = payload.results;\n }\n state.courseGroupLessonsListPaginate = payload.pagination;\n state.error = null;\n state.getCourseGroupsLessonsStatus = FetchStatus.FETCHED;\n })\n .addCase(NewSubjectService.getCourseGroupsLessonsAction.rejected, (state, { error }) => {\n state.getCourseGroupsLessonsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(NewSubjectService.handleLessonScheduleAction.pending, (state) => {\n state.handleLessonScheduleStatus = FetchStatus.FETCHING;\n state.handleLessonScheduleError = null;\n })\n .addCase(NewSubjectService.handleLessonScheduleAction.fulfilled, (state, { payload }) => {\n state.handleLessonScheduleError = null;\n state.handleLessonScheduleStatus = FetchStatus.FETCHED;\n })\n .addCase(NewSubjectService.handleLessonScheduleAction.rejected, (state, { error }) => {\n state.handleLessonScheduleStatus = FetchStatus.ERROR;\n state.handleLessonScheduleError = error;\n });\n },\n});\nexport const resetNewSubjectsState = NewSubjectsSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const resetLessonHandlersErrors = NewSubjectsSlice.actions\n .resetLessonHandlersErrors as ActionCreatorWithoutPayload;\n\nexport const NewSubjectsReducer = NewSubjectsSlice.reducer;\n","import { CalendarPlan as CalendarPlanElements } from '@lms-elements/educational-plan';\nimport { ICalendarPlan } from 'types/calendarPlan';\n\nexport const getNormalizedCalendarPlan = (calendarPlan: ICalendarPlan): CalendarPlanElements => {\n return {\n id: calendarPlan.id,\n title: calendarPlan.title,\n weekCount: Number(calendarPlan.yearWeeksCount),\n dayCount: Number(calendarPlan.yearDaysCount),\n };\n};\n","import { Subject } from 'src-new/components/lms-elements/CourseTable';\nimport { convertEvaluationTypeToSelection } from 'store/normalizers/educationalPlan/getNormalizedResponseData';\nimport { EducationalPlanData } from 'store/reducers/educationalPlan';\nimport { EducationalPlan, EduCourseType } from 'types/educationalPlan';\n\nexport const getNormalizedEducationPlan = (educationPlan: EducationalPlan): EducationalPlanData => {\n const mainBasicCourses: Subject[] = [];\n const mainAdditionalCourses: Subject[] = [];\n const selectiveBasicCourses: Subject[] = [];\n const selectiveAdditionalCourses: Subject[] = [];\n\n educationPlan.educationalPlanItems.forEach((item) => {\n switch (item.type) {\n case EduCourseType.COMMON:\n mainBasicCourses.push({\n id: item.id,\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: item.yearLessonsCount !== 0 ? String(item.yearLessonsCount) : '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lessonsInYear: item.yearOnlineLessonsCount !== 0 ? String(item.yearOnlineLessonsCount) : '-',\n lecturesInYear: item.yearFlowLecturesCount !== 0 ? String(item.yearFlowLecturesCount) : '-',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n });\n break;\n case EduCourseType.NON_SUBJECT:\n mainAdditionalCourses.push({\n id: item.id,\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: item.yearLessonsCount !== 0 ? String(item.yearLessonsCount) : '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lessonsInYear: item.yearOnlineLessonsCount !== 0 ? String(item.yearOnlineLessonsCount) : '-',\n lecturesInYear: item.yearFlowLecturesCount !== 0 ? String(item.yearFlowLecturesCount) : '-',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n });\n break;\n case EduCourseType.GIA_PREPARATION:\n selectiveBasicCourses.push({\n id: item.id,\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: item.yearLessonsCount !== 0 ? String(item.yearLessonsCount) : '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lessonsInYear: item.yearOnlineLessonsCount !== 0 ? String(item.yearOnlineLessonsCount) : '-',\n lecturesInYear: item.yearFlowLecturesCount !== 0 ? String(item.yearFlowLecturesCount) : '-',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n });\n break;\n case EduCourseType.ELECTIVE:\n selectiveAdditionalCourses.push({\n id: item.id,\n courseId: item.course.id,\n name: item.course.title,\n inWeek: item.weekLessonsCount !== 0 ? String(item.weekLessonsCount) : '-',\n inYear: item.yearLessonsCount !== 0 ? String(item.yearLessonsCount) : '',\n fact: item.course.lessonCount !== 0 ? String(item.course.lessonCount) : '-',\n lessonsInWeek: item.weekOnlineLessonsCount !== 0 ? String(item.weekOnlineLessonsCount) : '-',\n lecturesInWeek: item.weekFlowLecturesCount !== 0 ? String(item.weekFlowLecturesCount) : '-',\n lessonsInYear: item.yearOnlineLessonsCount !== 0 ? String(item.yearOnlineLessonsCount) : '-',\n lecturesInYear: item.yearFlowLecturesCount !== 0 ? String(item.yearFlowLecturesCount) : '-',\n selection: convertEvaluationTypeToSelection(item.evaluationType),\n takeIntoAccount: item.takeIntoAccount,\n });\n break;\n }\n });\n\n return {\n id: educationPlan.id,\n data: {\n name: educationPlan.title,\n calendarPlan: educationPlan.calendarPlan,\n parallel: { id: educationPlan.parallel.id, title: educationPlan.parallel.title },\n minWeekHours: educationPlan.minHours || 0,\n freeWeekHours: educationPlan.freeHours || 0,\n mainBasicCourses: mainBasicCourses,\n mainAdditionalCourses: mainAdditionalCourses,\n selectiveBasicCourses: selectiveBasicCourses,\n selectiveAdditionalCourses: selectiveAdditionalCourses,\n },\n };\n};\n","export const DAY_IN_SECONDS = 86400000;\nexport const EMPTY_VALIDATORS: ((value: unknown) => undefined | string)[] = [];\n","export enum ESupportedLinkTypes {\n kinescope = 'kinescope',\n}\nexport enum ELinkSeparatingLine {\n kinescope = 'https://kinescope.io',\n}\nexport const supportedLinkTypes = Object.values(ESupportedLinkTypes).map((item) => item);\n","import { StatusLabelEnum } from '@lms-elements/atomic';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\nexport const convertAttendanceStatus = (status: AttendanceStatus): StatusLabelEnum => {\n switch (status) {\n case 'absent':\n return StatusLabelEnum.wasAbsent;\n case 'late':\n return StatusLabelEnum.isLate;\n case 'present':\n return StatusLabelEnum.wasInClass;\n case 'absent_with_reason':\n return StatusLabelEnum.seriousReason;\n case 'absent_due_illness':\n return StatusLabelEnum.illness;\n default:\n return StatusLabelEnum.wasInClass;\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\ninterface LoaderState {\n isLoading: boolean;\n}\n\nconst initialState: LoaderState = {\n isLoading: false,\n};\n\nexport const loaderSlice = createSlice({\n name: 'loader',\n initialState,\n reducers: {\n loading(state) {\n state.isLoading = true;\n },\n loaded(state) {\n state.isLoading = false;\n },\n },\n});\n\nexport const { loading, loaded } = loaderSlice.actions;\nexport const loaderReducer = loaderSlice.reducer;\n","import { MarkField } from './AttendanceMarkForm.types';\n/**\n * @description проверяет нужен ли для оценки коментарий определенной длинны\n * @param {MarkField} mark\n * @return {boolean | undefined}\n */\nconst getIsValidCommentSize = (mark: MarkField): boolean => {\n const isBadMark = mark?.selectedMark === 3 || mark?.selectedMark === 2;\n const isValidCommentSize = (mark?.comment?.length ?? 0) > 30;\n return mark && (isBadMark ? isValidCommentSize : true);\n};\n\nconst isValidComments = (marks: MarkField[]): boolean => {\n return marks?.filter((mark) => mark.valueCanChange).every((mark) => getIsValidCommentSize(mark));\n};\n\nexport { getIsValidCommentSize, isValidComments };\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Field, FieldRenderProps, Form } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { PlusCircle, Trash } from '@lms-elements/icons';\nimport { FormApi } from 'final-form';\nimport arrayMutators from 'final-form-arrays';\nimport { useRole } from 'hooks';\nimport { Mark } from 'src-new/components/lms-elements/Mark';\nimport { MarkScore } from 'types/mark';\n\nimport { Input } from 'components/Input';\n\nimport { IAttendanceMarkFormProps, MarkField } from './AttendanceMarkForm.types';\nimport { getIsValidCommentSize, isValidComments } from './AttendanceMarkForm.utils';\n\nimport './AttendanceMarkForm.scss';\n\nconst CnAttendanceMarkForm = cn('attendanceMarkAdd');\n\nexport const AttendanceMarkForm: React.FC = ({\n isChangeForm,\n initialValue,\n closeModal,\n withoutSubmitType,\n onSubmit,\n canCreateCommentOnly,\n onceMark,\n withoutComment,\n}) => {\n const [newMarks, setNewMarks] = useState(initialValue);\n const [canSubmit, setCanSubmit] = useState(false);\n const { isPrincipal: isPrincipalRole, isSupport } = useRole();\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n\n const validateCanSubmitIsChange = () => {\n const changedMarks = newMarks.filter((mark) => {\n const oldMark = initialValue.find((oldMark) => oldMark.markId === mark.markId);\n if (oldMark) {\n return oldMark.selectedMark !== mark.selectedMark;\n } else {\n return true;\n }\n });\n\n return isValidComments(changedMarks);\n };\n\n useEffect(() => {\n if (newMarks.length) {\n let isCanSubmit = true;\n\n if (withoutComment) {\n return setCanSubmit(true);\n } else if (isChangeForm) {\n isCanSubmit = validateCanSubmitIsChange();\n } else {\n isCanSubmit = isValidComments(newMarks);\n }\n\n setCanSubmit(\n isCanSubmit &&\n newMarks.every(\n (mark) => Boolean(mark.selectedMark) || (canCreateCommentOnly && Boolean(mark.comment)),\n ),\n );\n } else {\n setCanSubmit(false);\n }\n }, [canCreateCommentOnly, newMarks, withoutComment]);\n\n const makeHandlerMarkDelete = useCallback(() => {\n setCanSubmit(true);\n }, []);\n\n const makeHandlerMarkClick = useCallback(\n (\n eventHandler: (event: Record>) => void,\n mark: MarkScore,\n id: number,\n ) => {\n return () => {\n setNewMarks((prevState) => {\n eventHandler({ target: { value: mark === prevState[id]?.selectedMark ? undefined : mark } });\n\n return prevState.map((markField, idx) => {\n if (idx === id) {\n return markField.selectedMark === mark\n ? { ...markField, selectedMark: undefined }\n : { ...markField, selectedMark: mark };\n } else {\n return markField;\n }\n });\n });\n };\n },\n [],\n );\n\n const makeHandlerMarkChange = (\n eventHandler: React.ChangeEventHandler,\n id: number,\n ): React.ChangeEventHandler => {\n return (event) => {\n setNewMarks(\n newMarks.map((mark, idx) =>\n idx === id ? { ...mark, comment: event?.currentTarget?.value ?? '' } : mark,\n ),\n );\n eventHandler(event);\n };\n };\n\n const handleCancelButtonClick = useCallback(() => {\n setNewMarks(initialValue);\n closeModal();\n }, [closeModal, initialValue]);\n\n const makeHandlerFormSubmit = useCallback(\n (submitHandler: (values: { mark: MarkField[] }) => void) => {\n return (\n values: { mark: MarkField[] },\n formApi: FormApi<{ mark: MarkField[] }, Partial<{ mark: MarkField[] }>>,\n ) => {\n const { modified } = formApi.getState();\n\n setNewMarks([]);\n submitHandler({\n ...values,\n mark: values.mark.filter(\n (mark, index) =>\n mark.isDeleted ||\n ((canCreateCommentOnly || mark.selectedMark !== undefined) &&\n (modified?.[`mark[${index}].comment`] ||\n modified?.[`mark[${index}].selectedMark`] ||\n modified?.['mark'] ||\n !isChangeForm)),\n ),\n });\n };\n },\n [canCreateCommentOnly, isChangeForm],\n );\n\n const getCommentField = (\n name: string,\n index: number,\n fields: FieldArrayRenderProps['fields'],\n isNewMark?: boolean,\n ) => {\n const errorText = 'Комментарий должен быть больше 30 символов';\n const disabled = isNewMark ? !fields.value[index].valueCanChange : false;\n const isChangedMark = isChangeForm ? newMarks[index]?.selectedMark !== initialValue[index]?.selectedMark : true;\n const isInvalidCommentSize = isChangedMark && !getIsValidCommentSize(newMarks[index]);\n const isNeedComment =\n isInvalidCommentSize &&\n (isNewMark ? fields.value[index].valueCanChange && fields.value[index].teacherMark : true);\n\n return (\n
\n \n {({ input: { onChange, value } }: FieldRenderProps) => (\n \n )}\n \n {isInvalidCommentSize ? {errorText} : null}\n
\n );\n };\n\n const onCreateMarkPress = (id: number) => {\n const newMark = {\n comment: '',\n selectedMark: undefined,\n markId: id,\n valueCanChange: true,\n };\n setNewMarks((state) => {\n const newState = [...state];\n newState[id] = newMark;\n return newState;\n });\n };\n\n return (\n
\n \n {({ handleSubmit }) => (\n
\n name={'mark'}>\n {({ fields }) => {\n return fields.map((name, index) => {\n if (fields.value[index].isDeleted) {\n return null;\n }\n if (!isChangeForm && index !== Number(fields.length) - 1) {\n return (\n
\n
\n
\n \n {({\n input: { value },\n }: FieldRenderProps) => (\n \n )}\n \n {(isPrincipal || fields.value[index].teacherMark) && (\n {\n fields.remove(index);\n }}\n >\n \n
\n )}\n
\n {!withoutComment && getCommentField(name, index, fields)}\n
\n
\n );\n } else {\n return (\n
\n
\n \n {({\n input: { onChange, value },\n }: FieldRenderProps) => (\n
\n {isChangeForm ? (\n fields.value[index].teacherMark ? (\n !fields.value[index].valueCanChange ? (\n \n Оценка\n \n ) : (\n \n Редактировать оценку\n \n )\n ) : (\n \n {`Попытка №${\n fields.value[index].attemptMarkNumber ??\n ''\n }`}\n \n )\n ) : (\n \n {index >= 1\n ? `Выберите ${index + 1}-ю оценку`\n : 'Добавить оценку'}\n \n )}\n {(fields.value[index].valueCanChange || !isChangeForm\n ? ([5, 4, 3, 2] as MarkScore[])\n : value\n ? [value]\n : []\n ).map((renderMark) => (\n \n \n
\n ))}\n {canSubmit && !isChangeForm && !onceMark && (\n {\n fields.push({\n comment: '',\n selectedMark: undefined,\n markId: 0,\n valueCanChange: true,\n });\n onCreateMarkPress(fields?.length ?? 0);\n }}\n className={CnAttendanceMarkForm('headerAction')}\n >\n \n
\n )}\n {isChangeForm && fields.value[index].valueCanChange && (\n {\n fields.update(index, {\n ...fields.value[index],\n isDeleted: true,\n });\n makeHandlerMarkDelete();\n }}\n className={CnAttendanceMarkForm(\n 'headerAction',\n {\n isChangeForm,\n },\n )}\n >\n \n
\n )}\n \n )}\n \n \n {!withoutComment && getCommentField(name, index, fields, true)}\n \n );\n }\n });\n }}\n \n
\n
\n \n Сохранить\n \n
\n
\n \n
\n
\n \n )}\n \n \n );\n};\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useGetPopupsState } from 'src-new/components/layouts/Modals/Modals.utils';\nimport { isEmptyList } from 'src-new/utils';\nimport { loaded, loading } from 'store/reducers/loader';\nimport { FetchStatus } from 'types/api';\n\nexport const useLoader = (statuses: FetchStatus[]): void => {\n const dispatch = useDispatch();\n\n const { mountedPopups } = useGetPopupsState();\n\n useEffect(() => {\n const isFetching = statuses.reduce((result, status) => {\n return result || status === FetchStatus.FETCHING;\n }, false);\n\n // Если есть открытые сложные модалки, то не фетчим контент\n if (isFetching && isEmptyList(mountedPopups)) {\n dispatch(loading());\n } else {\n dispatch(loaded());\n }\n }, [statuses, dispatch]);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { Record } from 'immutable';\nimport { getLessonsAndHomeworksAction } from 'store/actions/courseLessons';\nimport {\n deleteStudentHomeworksAction,\n fetchHomework,\n getAssignedAndOnCheckHomeworkAction,\n getAssignmentProgressPreviewAction,\n getCompletedHomeworkAction,\n getHomeworkPreviewBetweenDatesAction,\n getHomeworksBetweenDatesAction,\n getProgressesStatisticsAction,\n getStudentsTasksAction,\n postDeferredAssignmentAction,\n postStudentHomeworksAction,\n putStudentHomeworksAction,\n setIsMandatoryAction,\n} from 'store/actions/homework';\nimport { FetchStatus } from 'types/api';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\nimport { FilterTypes, IHomeworkItem, ProgressesStatisticsData, TPostDeferredAssignmentResponse } from 'types/homework';\n\nexport interface HomeworkState {\n homeworks: IHomeworkItem[];\n scheduleHomeworks: Record;\n scheduleHomeworkPreview: Record;\n lessonHomeworks: Omit[];\n deferredAssignments: TPostDeferredAssignmentResponse[];\n themeHomeworks: { [lessonId: number]: AssignmentProgressPreview[] };\n completedHomeworks: AssignmentProgressPreview[];\n fetchStatus: FetchStatus;\n fetchDeferredAssignmentStatus: FetchStatus;\n fetchDeferredAssignmentChangeStatus: FetchStatus;\n fetchAssignmentProgressPreviewStatus: FetchStatus;\n scheduleHomeworksStatus: FetchStatus;\n fetchCompletedHWStatus: FetchStatus;\n // progresses statistics\n progressesStatistics: ProgressesStatisticsData[];\n homeworkPreview: AssignmentProgressPreview[];\n fetchStatisticsStatus: FetchStatus;\n isMandatory: boolean;\n error: unknown;\n}\n\nconst initialState: HomeworkState = {\n fetchStatus: FetchStatus.INITIAL,\n fetchDeferredAssignmentStatus: FetchStatus.INITIAL,\n fetchDeferredAssignmentChangeStatus: FetchStatus.INITIAL,\n fetchCompletedHWStatus: FetchStatus.INITIAL,\n scheduleHomeworksStatus: FetchStatus.INITIAL,\n lessonHomeworks: [],\n deferredAssignments: [],\n themeHomeworks: {},\n homeworks: [],\n scheduleHomeworks: {\n [FilterTypes.ASSIGNED]: [],\n [FilterTypes.DEADLINE_FOR_CHECK]: [],\n [FilterTypes.DEADLINE_FOR_COMPLETE]: [],\n },\n scheduleHomeworkPreview: {\n [FilterTypes.ASSIGNED]: [],\n [FilterTypes.DEADLINE_FOR_CHECK]: [],\n [FilterTypes.DEADLINE_FOR_COMPLETE]: [],\n },\n completedHomeworks: [],\n // progresses statistics\n progressesStatistics: [],\n fetchStatisticsStatus: FetchStatus.INITIAL,\n fetchAssignmentProgressPreviewStatus: FetchStatus.INITIAL,\n homeworkPreview: [],\n error: null,\n isMandatory: false,\n};\n\nconst homeworkSlice = createSlice>({\n name: 'homework',\n initialState,\n reducers: {\n resetHomeworkState() {\n return initialState;\n },\n resetLessonHomeworksState(state) {\n state.fetchStatus = initialState.fetchStatus;\n state.lessonHomeworks = initialState.lessonHomeworks;\n state.fetchDeferredAssignmentStatus = initialState.fetchDeferredAssignmentStatus;\n state.fetchDeferredAssignmentChangeStatus = initialState.fetchDeferredAssignmentChangeStatus;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(setIsMandatoryAction.fulfilled, (state, { payload }) => {\n state.fetchAssignmentProgressPreviewStatus = FetchStatus.FETCHING;\n state.isMandatory = payload;\n });\n builder.addCase(fetchHomework.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(fetchHomework.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.homeworks = payload || [];\n });\n builder.addCase(fetchHomework.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postStudentHomeworksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postStudentHomeworksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.lessonHomeworks = (state.lessonHomeworks || []).concat(\n payload.map((newAssignmentProgress) => ({\n ...newAssignmentProgress,\n description: newAssignmentProgress.description ?? '',\n assignment: {\n id: newAssignmentProgress.assignment.id,\n },\n selectedQuestions: [],\n marks: [],\n teacherMark: [],\n })),\n );\n });\n builder.addCase(postStudentHomeworksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(putStudentHomeworksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(putStudentHomeworksAction.fulfilled, (state) => {\n state.fetchStatus = FetchStatus.FETCHED;\n });\n builder.addCase(putStudentHomeworksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteStudentHomeworksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteStudentHomeworksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.lessonHomeworks = state.lessonHomeworks.filter(\n (homework) => !payload.map(({ id }) => id).includes(Number(homework.id)),\n );\n });\n builder.addCase(deleteStudentHomeworksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getAssignedAndOnCheckHomeworkAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAssignedAndOnCheckHomeworkAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.homeworks = payload || [];\n });\n builder.addCase(getAssignedAndOnCheckHomeworkAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getLessonsAndHomeworksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getLessonsAndHomeworksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.themeHomeworks = payload.homeworksMap;\n state.error = null;\n });\n builder.addCase(getLessonsAndHomeworksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getCompletedHomeworkAction.pending, (state) => {\n state.fetchCompletedHWStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCompletedHomeworkAction.fulfilled, (state, { payload }) => {\n state.fetchCompletedHWStatus = FetchStatus.FETCHED;\n state.completedHomeworks = payload || [];\n });\n builder.addCase(getCompletedHomeworkAction.rejected, (state, { error }) => {\n state.fetchCompletedHWStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getProgressesStatisticsAction.pending, (state) => {\n state.fetchStatisticsStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getProgressesStatisticsAction.fulfilled, (state, { payload }) => {\n state.fetchStatisticsStatus = FetchStatus.FETCHED;\n state.progressesStatistics = payload;\n });\n builder.addCase(getProgressesStatisticsAction.rejected, (state, { error }) => {\n state.fetchStatisticsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(getHomeworksBetweenDatesAction.pending, (state) => {\n state.scheduleHomeworksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getHomeworksBetweenDatesAction.fulfilled, (state, { payload }) => {\n state.scheduleHomeworksStatus = FetchStatus.FETCHED;\n state.scheduleHomeworks = {\n ...state.scheduleHomeworks,\n ...payload,\n };\n state.error = null;\n })\n .addCase(getHomeworksBetweenDatesAction.rejected, (state, { error }) => {\n state.scheduleHomeworksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getHomeworkPreviewBetweenDatesAction.pending, (state) => {\n state.scheduleHomeworksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getHomeworkPreviewBetweenDatesAction.fulfilled, (state, { payload }) => {\n state.scheduleHomeworksStatus = FetchStatus.FETCHED;\n state.scheduleHomeworkPreview = {\n ...state.scheduleHomeworkPreview,\n ...payload,\n };\n state.error = null;\n })\n .addCase(getHomeworkPreviewBetweenDatesAction.rejected, (state, { error }) => {\n state.scheduleHomeworksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getStudentsTasksAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getStudentsTasksAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.lessonHomeworks = payload || [];\n state.error = null;\n })\n .addCase(getStudentsTasksAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(postDeferredAssignmentAction.pending, (state) => {\n state.fetchDeferredAssignmentStatus = FetchStatus.FETCHING;\n state.fetchDeferredAssignmentChangeStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(postDeferredAssignmentAction.fulfilled, (state, { payload }) => {\n const { res, isGetter } = payload;\n state.fetchDeferredAssignmentStatus = FetchStatus.FETCHED;\n\n if (!isGetter) {\n state.fetchDeferredAssignmentChangeStatus = FetchStatus.FETCHED;\n }\n state.deferredAssignments = res;\n state.error = null;\n })\n .addCase(postDeferredAssignmentAction.rejected, (state, { error }) => {\n state.fetchDeferredAssignmentStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getAssignmentProgressPreviewAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.fetchAssignmentProgressPreviewStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAssignmentProgressPreviewAction.fulfilled, (state, { payload }) => {\n state.homeworkPreview = payload;\n state.fetchAssignmentProgressPreviewStatus = FetchStatus.FETCHED;\n state.fetchStatus = FetchStatus.FETCHED;\n })\n .addCase(getAssignmentProgressPreviewAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.fetchAssignmentProgressPreviewStatus = FetchStatus.ERROR;\n\n state.error = error;\n });\n },\n});\n\nconst resetHomeworkState = homeworkSlice.actions.resetHomeworkState as ActionCreatorWithoutPayload;\nconst resetLessonHomeworksState = homeworkSlice.actions\n .resetLessonHomeworksState as ActionCreatorWithoutPayload;\nexport { resetHomeworkState, resetLessonHomeworksState };\nexport const homeworkReducer = homeworkSlice.reducer;\n","import { CodifierResponseData, CodifierSkillsResponseData } from 'api/services/codifier';\nimport { ResponseQuestionDetailed } from 'api/services/questionBank';\nimport { Answer } from 'api/services/questionCreate';\nimport { QuestionSearchBarFieldsValues } from 'containers/QuestionSearchBar';\nimport { SearchPageState } from 'store/actions/questionCreate';\nimport { TestQuestionData, TextQuestionData } from 'types/question';\n\nimport { getLessonLocation, getSkillLocation } from 'components/Codifier/utils';\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nexport const optionsType = [\n 'Вопрос - верно или нет',\n 'Вопрос - тестовый, с текстовым ответом',\n 'Вопрос - тестовый',\n 'Вопрос - открытый вопрос - эссе',\n 'Вопрос - вставить слова',\n];\n\nexport const validators = {\n locationValidators: [(value: string): string | undefined => (value ? undefined : 'error')],\n complexityValidators: [\n (value: string): string | undefined => (value && value !== 'Не выбрано' ? undefined : 'error'),\n ],\n typeValidators: [(value: string): string | undefined => (value && value !== 'Не выбрано' ? undefined : 'error')],\n};\n\nexport const getAnswers = (question: ResponseQuestionDetailed): Answer[] => {\n const { answersType, data } = question;\n\n switch (answersType) {\n case AnswersTypeEnum.test:\n return (data as TestQuestionData).answerOptions?.map((option, index) => ({\n ...option,\n id: index,\n order: index,\n isCorrect: option.correct,\n acceptFile: false,\n acceptText: false,\n percentOfScore: 100,\n }));\n case AnswersTypeEnum.text:\n return (data as TextQuestionData).answerOptions?.map((option, index) => ({\n ...option,\n content: '{}',\n html: `${option.text}`,\n id: index,\n order: index,\n isCorrect: true,\n acceptFile: false,\n acceptText: false,\n percentOfScore: option.percentOfScore,\n }));\n default:\n return [];\n }\n};\n\nexport const updateFormValues = (\n codifierTree: CodifierResponseData[],\n skillsTree: CodifierSkillsResponseData[],\n formValues: SearchPageState[],\n): SearchPageState[] => {\n return formValues.map((value) => {\n const filters: QuestionSearchBarFieldsValues[] = [];\n const rightSearchBlock = value.rightSearchBlock.map((block) => {\n const location = block.filters?.location?.map(({ topicId }) => getLessonLocation(codifierTree, topicId));\n const skills = block.filters?.skills?.map(({ skillId }) => getSkillLocation(skillsTree, skillId));\n\n const newFilters = {\n ...block.filters,\n location,\n skills,\n };\n\n filters.push(newFilters);\n\n return {\n ...block,\n filters: newFilters,\n };\n });\n\n return {\n ...value,\n filters,\n rightSearchBlock,\n leftSearchBlock: rightSearchBlock,\n };\n });\n};\n","import i18next from 'i18next';\nimport { Parallel } from 'types/parallel';\n\nexport const getParallelsTitle = (parallels: Parallel[]): string => {\n if (parallels.length) {\n return [...parallels]\n .sort(\n (first, second) =>\n Number(first.titleShort ?? first.title.split(' ')[0]) -\n Number(second.titleShort ?? second.title.split(' ')[0]),\n )\n .reduce((label, parallel, index, parallels) => {\n if (parallels.length === 1) {\n return parallel.title;\n }\n\n if (index === 0) {\n return parallel.titleShort ?? parallel.title.split(' ')[0];\n }\n\n if (index === parallels.length - 1) {\n return `${label}, ${parallel.titleShort ?? parallel.title.split(' ')[0]} ${i18next.t('parallel', {\n count: parallels.length,\n })}`;\n }\n\n return `${label}, ${parallel.titleShort ?? parallel.title.split(' ')[0]}`;\n }, '');\n }\n\n return '';\n};\n\nexport const getClassTitle = (parall: Parallel[]): string => {\n const parallels = parall.slice().sort((a, b) => a.id - b.id);\n if (parallels.length) {\n return parallels.reduce((label, parallel, index, parallels) => {\n if (parallels.length === 1) {\n return parallel.title.length === 1\n ? parallel.title.slice(0, 1) + ' класс'\n : parallel.title.slice(0, 2) + ' класс';\n }\n\n if (index === 0) {\n return parallel.titleShort ?? parallel.title.split(' ')[0];\n }\n\n if (index === parallels.length - 1) {\n return `${label}, ${parallel.titleShort ?? parallel.title.split(' ')[0]} ${i18next.t('class', {\n count: parallels.length,\n })}`;\n }\n\n return `${label}, ${parallel.titleShort ?? parallel.title.split(' ')[0]}`;\n }, '');\n }\n\n return '';\n};\n","import { EventRoom } from 'api/services/proctoring';\nimport { RoomCardProps } from 'store/reducers/proctoring';\n\nimport {\n getCapitalizeMonth,\n getDateComponents,\n getDateWithoutYear,\n getWeekdayNames,\n getWeekdayNumber,\n} from 'utils/date';\nimport { getParallelsTitle } from 'utils/getParallelsTitle';\n\nexport const normalizeEventRooms = (eventRooms: EventRoom[], studentId?: number): RoomCardProps[] => {\n return eventRooms.map(({ id, datetimeStart, maxStudents, students, leaders, course, parallels, datetimeEnd }) => {\n return {\n id,\n datetimeEnd,\n datetimeStart,\n title: '',\n date: getDateWithoutYear(datetimeStart),\n dayOfWeek: getWeekdayNames()[getWeekdayNumber(datetimeStart)],\n time: getDateComponents(datetimeStart).time ?? '',\n teachers: leaders.map((proctor) => `${proctor.lastName} ${proctor.firstName} ${proctor.patronymic ?? ''}`),\n allPlace: maxStudents,\n occupiedPlace: students.length,\n course: `${course.title}${parallels ? ` - ${getParallelsTitle(parallels)}` : ''}`,\n students: students,\n isJoined: studentId ? students.some((elem) => elem.id === studentId) : undefined,\n isRejoined: studentId\n ? students.every((elem) => elem.id !== studentId) &&\n eventRooms.flatMap((el) => el.students).some((st) => st.id === studentId)\n : undefined,\n isLocked: students.length === maxStudents,\n courseId: course.id,\n dayTitle: getCapitalizeMonth(datetimeStart),\n };\n });\n};\n","import { ActionCreatorWithoutPayload, createSlice } from '@reduxjs/toolkit';\nimport { EventRoom, ProctoringEvent } from 'api/services/proctoring';\nimport {\n changeEventRoomAction,\n createEventRoomAction,\n deleteEventRoomAction,\n getEventRoomDetailsAction,\n getEventRoomsByDates,\n getEventRoomsByLessonAndTypeAction,\n getEventsByDateAction,\n getProctorsAction,\n getStudentEventsAction,\n getStudentsEventRoomsByLessonAndTypeAction,\n joinRoomAction,\n rejoinRoomAction,\n} from 'store/actions/proctoring';\nimport {\n getCourses,\n getProcotors,\n getStudentEvents,\n normalizeEventRooms,\n normalizeEventRoomsRange,\n} from 'store/normalizers/proctoring';\nimport { FetchStatus } from 'types/api';\nimport { StudentEvent } from 'types/events';\nimport { StaffProfile } from 'types/staffProfile';\nimport { User } from 'types/user';\n\nexport type RoomsMap = {\n [date: string]: {\n day: string;\n title?: string;\n rooms: RoomCardProps[];\n };\n};\n\nexport interface RoomCardProps {\n id: number;\n title?: string;\n date: string;\n dayOfWeek: string;\n time: string;\n teachers: string[];\n allPlace: number;\n occupiedPlace: number;\n isLocked?: boolean;\n isJoined?: boolean;\n isRejoined?: boolean;\n course?: string;\n isStudent?: boolean;\n needHideCourse?: boolean;\n needHideButton?: boolean;\n onJoinClick?: (id: number) => void;\n onRejoinClick?: (id: number) => void;\n onEditClick?: (id: number) => void;\n onCardClick?: (id: number) => void;\n students?: User[];\n courseId?: number;\n dayTitle: string;\n datetimeStart: string;\n datetimeEnd: string;\n}\n\ninterface ProctoringState {\n getEventsStatus: FetchStatus;\n getProctorsStatus: FetchStatus;\n getEventRoomsStatus: FetchStatus;\n createEventRoomStatus: FetchStatus;\n deleteEventRoomStatus: FetchStatus;\n changeEventRoomStatus: FetchStatus;\n getEventRoomsRangeStatus: FetchStatus;\n events: ProctoringEvent[];\n studentEvents: StudentEvent[];\n proctors: StaffProfile[];\n proctorsFromRooms: User[];\n coursesFromRooms: { id: number; title: string }[];\n eventRooms: RoomCardProps[];\n eventRoomsMap: RoomsMap;\n eventRoomDetails?: EventRoom;\n}\n\nconst initialState: ProctoringState = {\n getEventsStatus: FetchStatus.INITIAL,\n getProctorsStatus: FetchStatus.INITIAL,\n getEventRoomsStatus: FetchStatus.INITIAL,\n createEventRoomStatus: FetchStatus.INITIAL,\n changeEventRoomStatus: FetchStatus.INITIAL,\n deleteEventRoomStatus: FetchStatus.INITIAL,\n getEventRoomsRangeStatus: FetchStatus.INITIAL,\n events: [],\n studentEvents: [],\n eventRooms: [],\n proctorsFromRooms: [],\n coursesFromRooms: [],\n eventRoomsMap: {} as RoomsMap,\n proctors: [],\n};\n\nconst proctoringSlice = createSlice({\n name: 'proctoring',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getEventsByDateAction.pending, (state) => {\n state.getEventsStatus = FetchStatus.FETCHING;\n })\n .addCase(getEventsByDateAction.fulfilled, (state, { payload }) => {\n state.getEventsStatus = FetchStatus.FETCHED;\n state.events = payload;\n })\n .addCase(getEventsByDateAction.rejected, (state) => {\n state.getEventsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getProctorsAction.pending, (state) => {\n state.getProctorsStatus = FetchStatus.FETCHING;\n })\n .addCase(getProctorsAction.fulfilled, (state, { payload }) => {\n state.getProctorsStatus = FetchStatus.FETCHED;\n state.proctors = payload;\n })\n .addCase(getProctorsAction.rejected, (state) => {\n state.getProctorsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(createEventRoomAction.pending, (state) => {\n state.createEventRoomStatus = FetchStatus.FETCHING;\n })\n .addCase(createEventRoomAction.fulfilled, (state, { payload }) => {\n state.createEventRoomStatus = FetchStatus.FETCHED;\n // TODO: нужно добавить обновление state.eventRooms\n state.eventRooms = [...state.eventRooms, ...normalizeEventRooms([payload])];\n })\n .addCase(createEventRoomAction.rejected, (state) => {\n state.createEventRoomStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(deleteEventRoomAction.pending, (state) => {\n state.deleteEventRoomStatus = FetchStatus.FETCHING;\n })\n .addCase(deleteEventRoomAction.fulfilled, (state, { payload: deletedRoomId }) => {\n state.deleteEventRoomStatus = FetchStatus.FETCHED;\n state.eventRooms = state.eventRooms.filter(({ id }) => id !== deletedRoomId);\n })\n .addCase(deleteEventRoomAction.rejected, (state) => {\n state.deleteEventRoomStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getEventRoomDetailsAction.pending, (state) => {\n state.getEventRoomsStatus = FetchStatus.FETCHING;\n })\n .addCase(getEventRoomDetailsAction.fulfilled, (state, { payload }) => {\n state.getEventRoomsStatus = FetchStatus.FETCHED;\n state.eventRoomDetails = payload;\n })\n .addCase(getEventRoomDetailsAction.rejected, (state) => {\n state.getEventRoomsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getEventRoomsByLessonAndTypeAction.pending, (state) => {\n state.getEventRoomsStatus = FetchStatus.FETCHING;\n })\n .addCase(getEventRoomsByLessonAndTypeAction.fulfilled, (state, { payload }) => {\n state.getEventRoomsStatus = FetchStatus.FETCHED;\n state.eventRooms = normalizeEventRooms(payload);\n })\n .addCase(getEventRoomsByLessonAndTypeAction.rejected, (state) => {\n state.getEventRoomsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getStudentsEventRoomsByLessonAndTypeAction.pending, (state) => {\n state.getEventRoomsStatus = FetchStatus.FETCHING;\n })\n .addCase(getStudentsEventRoomsByLessonAndTypeAction.fulfilled, (state, { payload }) => {\n state.getEventRoomsStatus = FetchStatus.FETCHED;\n state.eventRooms = normalizeEventRooms(payload[0], payload[1]);\n })\n .addCase(getStudentsEventRoomsByLessonAndTypeAction.rejected, (state) => {\n state.getEventRoomsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(changeEventRoomAction.pending, (state) => {\n state.changeEventRoomStatus = FetchStatus.FETCHING;\n })\n .addCase(changeEventRoomAction.fulfilled, (state, { payload: newEventRoom }) => {\n state.changeEventRoomStatus = FetchStatus.FETCHED;\n state.eventRooms = [\n ...state.eventRooms.filter(({ id }) => id !== newEventRoom.id),\n ...normalizeEventRooms([newEventRoom]),\n ];\n })\n .addCase(changeEventRoomAction.rejected, (state) => {\n state.changeEventRoomStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(rejoinRoomAction.pending, (state) => {\n state.changeEventRoomStatus = FetchStatus.FETCHING;\n })\n .addCase(rejoinRoomAction.fulfilled, (state, { payload }) => {\n state.changeEventRoomStatus = FetchStatus.FETCHED;\n state.eventRooms = normalizeEventRooms(payload[0], payload[1]);\n })\n .addCase(rejoinRoomAction.rejected, (state) => {\n state.changeEventRoomStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(joinRoomAction.pending, (state) => {\n state.changeEventRoomStatus = FetchStatus.FETCHING;\n })\n .addCase(joinRoomAction.fulfilled, (state, { payload }) => {\n state.changeEventRoomStatus = FetchStatus.FETCHED;\n state.eventRooms = normalizeEventRooms(payload[0], payload[1]);\n })\n .addCase(joinRoomAction.rejected, (state) => {\n state.changeEventRoomStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getEventRoomsByDates.pending, (state) => {\n state.getEventRoomsRangeStatus = FetchStatus.FETCHING;\n })\n .addCase(getEventRoomsByDates.fulfilled, (state, { payload }) => {\n state.getEventRoomsRangeStatus = FetchStatus.FETCHED;\n state.eventRoomsMap = normalizeEventRoomsRange(payload);\n state.proctorsFromRooms = getProcotors(payload);\n state.coursesFromRooms = getCourses(payload);\n })\n .addCase(getEventRoomsByDates.rejected, (state) => {\n state.getEventRoomsRangeStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getStudentEventsAction.pending, (state) => {\n state.getEventsStatus = FetchStatus.FETCHING;\n })\n .addCase(getStudentEventsAction.fulfilled, (state, { payload }) => {\n state.getEventsStatus = FetchStatus.FETCHED;\n state.studentEvents = getStudentEvents(payload);\n })\n .addCase(getStudentEventsAction.rejected, (state) => {\n state.getEventsStatus = FetchStatus.ERROR;\n });\n },\n});\n\nexport const resetProctoringState = proctoringSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const proctoringReducer = proctoringSlice.reducer;\n","import { EventRoom } from 'api/services/proctoring';\nimport moment from 'moment';\nimport { RoomsMap } from 'store/reducers/proctoring';\n\nimport { normalizeEventRooms } from './normalizeEventRooms';\n\nexport const normalizeEventRoomsRange = (rooms: EventRoom[]): RoomsMap => {\n return normalizeEventRooms(rooms)\n .sort(({ date: aDate }, { date: bDate }) => moment(aDate).diff(bDate))\n .reduce((result, room) => {\n if (result[room.date]) {\n result[room.date].rooms.push(room);\n return result;\n }\n\n result[room.date] = {\n rooms: [room],\n day: room.dayTitle,\n };\n\n return result;\n }, {} as RoomsMap);\n};\n","import { EventRoom } from 'api/services/proctoring';\nimport { User } from 'types/user';\n\nexport const getProcotors = (rooms: EventRoom[]): User[] => {\n return rooms\n .flatMap((room) => room.leaders)\n .reduce((proctors, leader) => {\n if (!proctors.some(({ id }) => leader.id === id)) {\n proctors.push(leader);\n }\n return proctors;\n }, [] as User[]);\n};\n","import { EventRoom } from 'api/services/proctoring';\n\nimport { getParallelsTitle } from 'utils/getParallelsTitle';\n\ntype Course = {\n id: number;\n title: string;\n};\n\nexport const getCourses = (rooms: EventRoom[]): Course[] => {\n return rooms.reduce((courses, { course, parallels }) => {\n if (!courses.some(({ id }) => id === course.id)) {\n courses.push({\n ...course,\n title: `${course.title}${parallels ? ` - ${getParallelsTitle(parallels)}` : ''}`,\n });\n }\n\n return courses;\n }, [] as Course[]);\n};\n","import { ProctoringEvent } from 'api/services/proctoring';\nimport moment from 'moment';\nimport { StudentEvent } from 'types/events';\n\nimport { checkIsDayBefore, checkIsSameDates } from 'utils/date';\n\nexport const getStudentEvents = (events: ProctoringEvent[]): StudentEvent[] => {\n return events.map((event) => ({\n id: event.id,\n date: event.dateStart,\n course: event.course.title,\n isStarted: checkIsSameDates(moment(), event.dateStart, 'day') || checkIsDayBefore(event.dateStart),\n lessonId: event.lesson.id,\n subjectId: event.subject,\n courseGroupId: event.courseGroup,\n }));\n};\n","import { ActionCreatorWithoutPayload, createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { IMaterialFile, LearningMaterialsContent } from 'api/services/materials';\nimport { ResponseQuestion } from 'api/services/questionBank';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { ISearchBlock } from 'containers/QuestionSearchResult/types';\nimport {\n addNewQuestionForExerciseMaterialAction,\n checkExerciseAnswerAction,\n clearMaterialsFilesAction,\n createMaterialAction,\n createTempMaterials,\n deleteMaterialAction,\n deleteMaterialFileAction,\n getExercisesCorrectAnswersAction,\n getMaterialsDataAction,\n patchMaterialAction,\n patchMaterialWithOrderingAction,\n postMaterialFileAction,\n postMaterialWithOrderingAction,\n resetLastCheckedAnswerAction,\n resetMaterialsStatusesAction,\n resetPostMaterialFileStatusAction,\n} from 'store/actions/material';\nimport { FetchStatus } from 'types/api';\nimport { IUploadedFile } from 'types/file';\nimport { IMaterial } from 'types/materials';\n\nimport { StudentAnswerData } from 'utils/questions';\n\nexport interface TempMaterial extends LearningMaterialsContent {\n files?: IUploadedFile[];\n isDeleted: boolean;\n}\n\nexport interface TempMaterialsData {\n initialId: number;\n subjectId: number;\n lessonId: number;\n courseGroupId?: number;\n exerciseMaterialIndex?: number;\n exerciseMaterialId?: number;\n fromEditPage: boolean;\n materials: TempMaterial[];\n}\n\nexport interface MaterialState {\n getStatusMaterials: FetchStatus;\n postStatusMaterials: FetchStatus;\n getStatusFiles: FetchStatus;\n patchStatusMaterials: FetchStatus;\n patchStatusMaterialOrdering: FetchStatus;\n patchStatusMaterialWithOrdering: FetchStatus;\n deleteStatusMaterials: FetchStatus;\n postStatusMaterialFile: FetchStatus;\n deleteStatusMaterialFile: FetchStatus;\n getStatusExercisesCorrectAnswers: FetchStatus;\n lastCreatedFile: IUploadedFile | undefined;\n createdFiles: IUploadedFile[];\n materials: LearningMaterialsContent[];\n // selfPreparation: boolean;\n files: IMaterialFile[];\n tempMaterials: TempMaterialsData | null;\n tempFiles: IMaterialFile[];\n error: unknown;\n checkAnswerStatus: FetchStatus;\n exrciseAnswers: {\n [exerciseId: number]: StudentAnswerData;\n };\n lastCheckedAnswer: number | undefined;\n exercisesWithCorrectAnswers: number[];\n filesForDelete: number[];\n // Fetch All Materials Data\n fetchAllDataStatus: FetchStatus;\n materialsData: IMaterial[];\n questions: ResponseQuestion[];\n}\n\nexport const initialState: MaterialState = {\n getStatusMaterials: FetchStatus.INITIAL,\n postStatusMaterials: FetchStatus.INITIAL,\n getStatusFiles: FetchStatus.INITIAL,\n patchStatusMaterials: FetchStatus.INITIAL,\n patchStatusMaterialOrdering: FetchStatus.INITIAL,\n patchStatusMaterialWithOrdering: FetchStatus.INITIAL,\n deleteStatusMaterials: FetchStatus.INITIAL,\n postStatusMaterialFile: FetchStatus.INITIAL,\n deleteStatusMaterialFile: FetchStatus.INITIAL,\n getStatusExercisesCorrectAnswers: FetchStatus.INITIAL,\n lastCreatedFile: undefined,\n lastCheckedAnswer: undefined,\n createdFiles: [],\n materials: [],\n files: [],\n tempMaterials: null,\n tempFiles: [],\n error: null,\n checkAnswerStatus: FetchStatus.INITIAL,\n exrciseAnswers: {},\n exercisesWithCorrectAnswers: [],\n filesForDelete: [],\n // Fetch All Materials Data\n fetchAllDataStatus: FetchStatus.INITIAL,\n materialsData: [],\n questions: [],\n};\n\nconst materialsSlice = createSlice>({\n name: 'material',\n initialState,\n reducers: {\n resetTempMaterials(state) {\n state.tempMaterials = null;\n state.tempFiles = [];\n },\n resetMaterials(state) {\n state.materials = [];\n state.materialsData = [];\n },\n addExerciseMaterialQuestion(state, action: PayloadAction) {\n if (state.tempMaterials) {\n const { exerciseMaterialId } = state.tempMaterials;\n\n const newQuestions = [...state.questions.filter(({ id }) => id !== action.payload.id), action.payload];\n\n return {\n ...state,\n tempMaterials: {\n ...state.tempMaterials,\n materials: state.tempMaterials.materials.map((material) => {\n if (material.id === exerciseMaterialId) {\n return {\n ...material,\n content: String(action.payload.id),\n };\n }\n return material;\n }),\n },\n questions: newQuestions,\n };\n }\n },\n changeTempMaterial(\n state,\n action: PayloadAction<{\n materialId: number;\n newData: Partial<\n TempMaterialsData & {\n trainerQuestions: { singleQuestions: IQuestion[]; searchBlocks: ISearchBlock[] };\n }\n >;\n }>,\n ) {\n const { materialId, newData } = action.payload;\n\n if (state.tempMaterials) {\n const updatedTempMaterials = {\n ...state.tempMaterials,\n materials: state.tempMaterials.materials.map((material) => {\n if (material.id === materialId) {\n return {\n ...material,\n ...newData,\n };\n }\n\n return material;\n }),\n };\n\n state.tempMaterials = updatedTempMaterials;\n }\n },\n addFilesForDelete(state, action: PayloadAction) {\n state.filesForDelete = [\n ...state.filesForDelete,\n ...action.payload.filter((fileId) =>\n state.createdFiles.length\n ? state.createdFiles.some((createdFile) => createdFile.id !== fileId)\n : true,\n ),\n ];\n },\n resetFilesForDelete(state) {\n state.filesForDelete = [];\n },\n },\n extraReducers: (builder) => {\n builder.addCase(resetLastCheckedAnswerAction, (state) => {\n state.lastCheckedAnswer = undefined;\n });\n builder.addCase(createMaterialAction.pending, (state) => {\n state.postStatusMaterials = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createMaterialAction.fulfilled, (state) => {\n state.postStatusMaterials = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(createMaterialAction.rejected, (state, { error }) => {\n state.postStatusMaterials = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteMaterialAction.pending, (state) => {\n state.deleteStatusMaterials = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteMaterialAction.fulfilled, (state) => {\n state.deleteStatusMaterials = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(deleteMaterialAction.rejected, (state, { error }) => {\n state.deleteStatusMaterials = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchMaterialAction.pending, (state) => {\n state.patchStatusMaterials = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchMaterialAction.fulfilled, (state) => {\n state.patchStatusMaterials = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(patchMaterialAction.rejected, (state, { error }) => {\n state.patchStatusMaterials = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(postMaterialWithOrderingAction.pending, (state) => {\n state.patchStatusMaterialOrdering = FetchStatus.FETCHING;\n state.postStatusMaterials = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postMaterialWithOrderingAction.fulfilled, (state) => {\n state.patchStatusMaterialOrdering = FetchStatus.FETCHED;\n state.postStatusMaterials = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(postMaterialWithOrderingAction.rejected, (state, { error }) => {\n state.patchStatusMaterialOrdering = FetchStatus.ERROR;\n state.postStatusMaterials = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchMaterialWithOrderingAction.pending, (state) => {\n state.patchStatusMaterialWithOrdering = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchMaterialWithOrderingAction.fulfilled, (state) => {\n state.patchStatusMaterialWithOrdering = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(patchMaterialWithOrderingAction.rejected, (state, { error }) => {\n state.patchStatusMaterialWithOrdering = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(postMaterialFileAction.pending, (state) => {\n state.postStatusMaterialFile = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postMaterialFileAction.fulfilled, (state, { payload }) => {\n state.postStatusMaterialFile = FetchStatus.FETCHED;\n state.lastCreatedFile = payload;\n state.createdFiles = [...state.createdFiles, payload];\n state.error = null;\n });\n builder.addCase(postMaterialFileAction.rejected, (state, { error }) => {\n state.postStatusMaterialFile = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteMaterialFileAction.pending, (state) => {\n state.deleteStatusMaterialFile = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteMaterialFileAction.fulfilled, (state, { payload }) => {\n state.deleteStatusMaterialFile = FetchStatus.FETCHED;\n state.lastCreatedFile = undefined;\n state.createdFiles = state.createdFiles.filter((value) => value.id !== payload?.id);\n state.error = null;\n });\n builder.addCase(deleteMaterialFileAction.rejected, (state, { error }) => {\n state.deleteStatusMaterialFile = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(resetPostMaterialFileStatusAction, (state) => {\n state.postStatusMaterialFile = FetchStatus.INITIAL;\n });\n builder.addCase(resetMaterialsStatusesAction, (state) => {\n state.getStatusFiles = FetchStatus.INITIAL;\n state.getStatusMaterials = FetchStatus.INITIAL;\n state.postStatusMaterials = FetchStatus.INITIAL;\n state.deleteStatusMaterials = FetchStatus.INITIAL;\n state.patchStatusMaterials = FetchStatus.INITIAL;\n state.patchStatusMaterialOrdering = FetchStatus.INITIAL;\n state.postStatusMaterialFile = FetchStatus.INITIAL;\n state.deleteStatusMaterialFile = FetchStatus.INITIAL;\n state.fetchAllDataStatus = FetchStatus.INITIAL;\n state.createdFiles = [];\n state.tempMaterials = null;\n state.tempFiles = [];\n state.lastCreatedFile = undefined;\n });\n builder.addCase(clearMaterialsFilesAction.pending, (state) => {\n state.deleteStatusMaterialFile = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(clearMaterialsFilesAction.fulfilled, (state) => {\n state.deleteStatusMaterialFile = FetchStatus.INITIAL;\n state.lastCreatedFile = undefined;\n state.createdFiles = [];\n state.files = [];\n state.error = null;\n });\n builder.addCase(clearMaterialsFilesAction.rejected, (state, { error }) => {\n state.deleteStatusMaterialFile = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createTempMaterials.pending, (state) => {\n state.postStatusMaterialFile = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createTempMaterials.fulfilled, (state, { payload }) => {\n const { isEditPage, filesForTempFileset, ...tempMaterialsData } = payload;\n\n state.tempMaterials = {\n ...tempMaterialsData,\n fromEditPage: isEditPage,\n materials: tempMaterialsData.materials.map((material, index) => ({\n ...material,\n order: index,\n })),\n };\n\n filesForTempFileset.forEach((fileData) => {\n const tempFilesIndex = state.tempFiles.findIndex((fileset) => fileset.material === fileData.material);\n\n if (tempFilesIndex !== -1) {\n state.tempFiles[tempFilesIndex].files.push(fileData.file);\n } else {\n state.tempFiles.push({\n id: fileData.material,\n material: fileData.material,\n files: [fileData.file],\n });\n }\n });\n\n state.postStatusMaterialFile = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(createTempMaterials.rejected, (state, { error }) => {\n state.postStatusMaterialFile = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(checkExerciseAnswerAction.pending, (state) => {\n state.checkAnswerStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(checkExerciseAnswerAction.fulfilled, (state, { payload }) => {\n const { materialId, ...exerciseAnswerData } = payload;\n state.checkAnswerStatus = FetchStatus.FETCHED;\n state.exrciseAnswers[materialId] = { ...exerciseAnswerData };\n\n if (payload.isCorrect) {\n state.lastCheckedAnswer = payload.questionId;\n if (!state.exercisesWithCorrectAnswers.includes(materialId)) {\n state.exercisesWithCorrectAnswers = [...state.exercisesWithCorrectAnswers, materialId];\n }\n }\n state.error = null;\n });\n builder.addCase(checkExerciseAnswerAction.rejected, (state, { error }) => {\n state.checkAnswerStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getExercisesCorrectAnswersAction.pending, (state) => {\n state.getStatusExercisesCorrectAnswers = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getExercisesCorrectAnswersAction.fulfilled, (state, { payload }) => {\n state.getStatusExercisesCorrectAnswers = FetchStatus.FETCHED;\n state.exercisesWithCorrectAnswers = payload.map((correctAnswer) => correctAnswer.material);\n });\n builder.addCase(getExercisesCorrectAnswersAction.rejected, (state, { error }) => {\n state.getStatusExercisesCorrectAnswers = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getMaterialsDataAction.pending, (state) => {\n state.fetchAllDataStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getMaterialsDataAction.fulfilled, (state, { payload }) => {\n state.fetchAllDataStatus = FetchStatus.FETCHED;\n state.materials = payload.materials;\n state.files = payload.files;\n state.questions = payload.questions;\n state.error = null;\n })\n .addCase(getMaterialsDataAction.rejected, (state, { error }) => {\n state.fetchAllDataStatus = FetchStatus.ERROR;\n state.materialsData = [];\n state.error = error;\n });\n builder.addCase(addNewQuestionForExerciseMaterialAction.fulfilled, (state, { payload }) => {\n const newQuestions = [...state.questions.filter(({ id }) => id !== payload[0]?.id), payload[0]];\n\n state.questions = newQuestions;\n if (state.tempMaterials) {\n const { exerciseMaterialId } = state.tempMaterials;\n\n state.tempMaterials = {\n ...state.tempMaterials,\n materials: state.tempMaterials.materials.map((material) => {\n if (material.id === exerciseMaterialId) {\n return {\n ...material,\n content: String(payload[0]?.id),\n };\n }\n return material;\n }),\n };\n }\n });\n },\n});\nconst resetTempMaterials = materialsSlice.actions.resetTempMaterials as ActionCreatorWithoutPayload;\nconst resetMaterials = materialsSlice.actions.resetMaterials as ActionCreatorWithoutPayload;\nconst resetFilesForDeleteAction = materialsSlice.actions.resetFilesForDelete as ActionCreatorWithoutPayload;\nexport { resetFilesForDeleteAction, resetMaterials, resetTempMaterials };\nexport const { addExerciseMaterialQuestion, addFilesForDelete } = materialsSlice.actions;\nexport const materialsReducer = materialsSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { AssignmentMark, ITeacher } from 'api/services/assignment/getAssignmentMarks';\nimport { TaskProgressInterval } from 'containers/TaskBlock/TaskBlock.types';\nimport {\n deleteAssignmentAction,\n fetchAssignment,\n getAssignmentMarksAction,\n getAssignmentProgressIntervalAction,\n getAssignmentProgressTeachersListAction,\n getAssignmentsByLessonAction,\n getAssignmentStudentMarksAction,\n getAssignmentTypesAction,\n postNewAssignmentAction,\n updateAssignmentNewAction,\n} from 'store/actions/assignment';\nimport { FetchStatus } from 'types/api';\nimport { AssignmentLevels, AssignmentResponse, AssignmentType, IAssignmentItem } from 'types/assignment';\n\nexport interface AssignmentState {\n assignments: IAssignmentItem[];\n teachersList: ITeacher[];\n lessonAssignment: IAssignmentItem[];\n templateAssignments: IAssignmentItem[];\n getTemplateAssignmentStatus: FetchStatus;\n getLessonAssignmentStatus: FetchStatus;\n getAssignmentMarksStatus: FetchStatus;\n getAssignmentsProgressIntervalStatus: FetchStatus;\n fetchStatus: FetchStatus;\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n mark: AssignmentMark[];\n assignmentsProgressInterval: Record;\n getIdByPost: AssignmentResponse;\n getTypesStatus: FetchStatus;\n assignmentTypes: AssignmentType[];\n error: unknown;\n}\n\nconst initialState: AssignmentState = {\n fetchStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n getTemplateAssignmentStatus: FetchStatus.INITIAL,\n getLessonAssignmentStatus: FetchStatus.INITIAL,\n getAssignmentMarksStatus: FetchStatus.INITIAL,\n getAssignmentsProgressIntervalStatus: FetchStatus.INITIAL,\n lessonAssignment: [],\n assignments: [],\n templateAssignments: [],\n error: null,\n mark: [],\n teachersList: [],\n assignmentsProgressInterval: {},\n getIdByPost: {\n id: 0,\n lesson: 0,\n title: '',\n type: {\n id: 0,\n title: '',\n attemptsQuantity: 0,\n verificationType: [],\n executionTime: [],\n isMandatory: true,\n assignmentLevel: AssignmentLevels.ADMINISTRATIVE,\n },\n description: '',\n isTemplate: false,\n author: 0,\n },\n getTypesStatus: FetchStatus.INITIAL,\n assignmentTypes: [],\n};\n\nconst assignmentSlice = createSlice>({\n name: 'assignment',\n initialState,\n reducers: {\n resetIdByPost(state) {\n state.getIdByPost = initialState.getIdByPost;\n },\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getAssignmentProgressTeachersListAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAssignmentProgressTeachersListAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.teachersList = payload || [];\n });\n builder.addCase(getAssignmentProgressTeachersListAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(fetchAssignment.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(fetchAssignment.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.assignments = payload || [];\n });\n builder.addCase(fetchAssignment.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getAssignmentProgressIntervalAction.pending, (state) => {\n state.getAssignmentsProgressIntervalStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAssignmentProgressIntervalAction.fulfilled, (state, { payload }) => {\n state.getAssignmentsProgressIntervalStatus = FetchStatus.FETCHED;\n if (!payload.interval.datetimeEnd || !payload.interval.datetimeStart) return;\n\n state.assignmentsProgressInterval[payload.assignmentId] = {\n taskId: payload.assignmentId,\n datetimeStart: payload.interval.datetimeStart,\n datetimeEnd: payload.interval.datetimeEnd,\n };\n });\n builder.addCase(getAssignmentProgressIntervalAction.rejected, (state, { error }) => {\n state.getAssignmentsProgressIntervalStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getAssignmentMarksAction.pending, (state) => {\n state.getAssignmentMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAssignmentMarksAction.fulfilled, (state, { payload }) => {\n state.getAssignmentMarksStatus = FetchStatus.FETCHED;\n state.mark = payload;\n state.error = null;\n });\n builder.addCase(getAssignmentMarksAction.rejected, (state, { error }) => {\n state.getAssignmentMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getAssignmentStudentMarksAction.pending, (state) => {\n state.getAssignmentMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAssignmentStudentMarksAction.fulfilled, (state, { payload }) => {\n state.getAssignmentMarksStatus = FetchStatus.FETCHED;\n state.mark = payload;\n state.error = null;\n });\n builder.addCase(getAssignmentStudentMarksAction.rejected, (state, { error }) => {\n state.getAssignmentMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(postNewAssignmentAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(postNewAssignmentAction.fulfilled, (state, { payload }) => {\n state.postStatus = FetchStatus.FETCHED;\n state.getIdByPost = payload.assignment;\n })\n .addCase(postNewAssignmentAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteAssignmentAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteAssignmentAction.fulfilled, (state, { payload }) => {\n state.postStatus = FetchStatus.FETCHED;\n state.assignments = state.assignments.filter((assignment) => assignment.id !== payload.id);\n });\n builder.addCase(deleteAssignmentAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(updateAssignmentNewAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(updateAssignmentNewAction.fulfilled, (state, { payload }) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.getIdByPost = payload.assignment;\n state.error = null;\n })\n .addCase(updateAssignmentNewAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getAssignmentTypesAction.pending, (state) => {\n state.getTypesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAssignmentTypesAction.fulfilled, (state, { payload }) => {\n state.getTypesStatus = FetchStatus.FETCHED;\n state.assignmentTypes = payload;\n state.error = null;\n })\n .addCase(getAssignmentTypesAction.rejected, (state, { error }) => {\n state.getTypesStatus = FetchStatus.FETCHING;\n state.error = error;\n });\n builder\n .addCase(getAssignmentsByLessonAction.pending, (state) => {\n state.getLessonAssignmentStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAssignmentsByLessonAction.fulfilled, (state, { payload }) => {\n state.getLessonAssignmentStatus = FetchStatus.FETCHED;\n state.lessonAssignment = payload;\n state.error = null;\n })\n .addCase(getAssignmentsByLessonAction.rejected, (state, { error }) => {\n state.getLessonAssignmentStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetIdByPostAction = assignmentSlice.actions.resetIdByPost as ActionCreatorWithoutPayload;\nconst resetAssignmentState = assignmentSlice.actions.reset as ActionCreatorWithoutPayload;\nexport { resetAssignmentState };\nexport const assignmentReducer = assignmentSlice.reducer;\n","import { CodifierResponseData } from 'api/services/codifier';\n\nexport type CodifierSubjectData = {\n id: number;\n title: string;\n shortName?: string;\n parallels: number[];\n isFetched?: boolean;\n};\n\nexport type CodifierParallelData = {\n id: number;\n title: string;\n subject: number;\n sections: number[];\n};\n\nexport type CodifierSectionData = {\n id: number;\n title: string;\n order: number;\n parallel: number;\n blocks: number[];\n topics: number[];\n};\n\nexport type CodifierBlockData = {\n id: number;\n title: string;\n order: number;\n section: number;\n topics: number[];\n};\n\nexport type CodifierTopicData = {\n id: number;\n title: string;\n order: number;\n block?: number;\n section?: number;\n questionsQuantity: number;\n questionsQuantityUnpublished: number;\n questionsQuantityRevision: number;\n};\n\ninterface CodifierMap {\n subjectIds: number[];\n subjectsMap: {\n [id: number]: CodifierSubjectData;\n };\n parallelsMap: {\n [id: number]: CodifierParallelData;\n };\n sectionsMap: {\n [id: number]: CodifierSectionData;\n };\n blocksMap: {\n [id: number]: CodifierBlockData;\n };\n topicsMap: {\n [id: number]: CodifierTopicData;\n };\n}\n\nexport const getCodifierMaps = (codifier: CodifierResponseData[] = []): CodifierMap => {\n return codifier.reduce(\n (map, subject) => {\n map.subjectIds.push(subject.id);\n\n map.subjectsMap[subject.id] = {\n id: subject.id,\n title: subject.title,\n isFetched: true,\n parallels:\n subject.parallels?.map((parallel) => {\n map.parallelsMap[parallel.id] = {\n id: parallel.id,\n title: `${parallel.grade} класс`,\n subject: subject.id,\n sections:\n parallel.sections?.map((section) => {\n map.sectionsMap[section.id] = {\n ...map.sectionsMap[section.id],\n id: section.id,\n title: `Раздел ${section.order + 1}: ${section.title}`,\n order: section.order,\n parallel: parallel.id,\n blocks:\n section.blocks?.map((block) => {\n map.blocksMap[block.id] = {\n id: block.id,\n title: `Блок ${block.order + 1}: ${block.title}`,\n order: block.order,\n section: section.id,\n topics:\n block.topics?.map((topic) => {\n map.topicsMap[topic.id] = {\n ...topic,\n section: section.id,\n title: `Тема ${topic.order + 1}: ${topic.title}`,\n };\n\n return topic.id;\n }) ?? [],\n };\n\n return block.id;\n }) ?? [],\n topics: [],\n };\n return section.id;\n }) ?? [],\n };\n\n return parallel.id;\n }) ?? [],\n };\n\n return map;\n },\n {\n subjectIds: [] as number[],\n subjectsMap: {} as Record,\n parallelsMap: {} as Record,\n sectionsMap: {} as Record,\n blocksMap: {} as Record,\n topicsMap: {} as Record,\n },\n );\n};\n","import { CodifierResponseData, CodifierSubject } from 'api/services/codifier';\n\nimport { CodifierSubjectData } from './getCodifierMaps';\n\ntype SubjectsMap = {\n subjectsIds: number[];\n subjectsMap: {\n [id: number]: CodifierSubjectData;\n };\n};\n\nexport const getSubjectsMaps = (subjects: CodifierSubject[]): SubjectsMap => {\n return subjects.reduce(\n (maps, subject) => {\n maps.subjectsIds.push(subject.id);\n\n maps.subjectsMap[subject.id] = {\n ...subject,\n parallels: [],\n isFetched: false,\n };\n\n return maps;\n },\n {\n subjectsIds: [],\n subjectsMap: {},\n } as SubjectsMap,\n );\n};\n\nexport const getSubjectsInCodifier = (subjects: CodifierSubject[]): CodifierResponseData[] => {\n const data: CodifierResponseData[] = [];\n\n subjects.forEach((elem) => {\n data.push({\n id: elem.id,\n title: elem.title,\n });\n });\n\n return data;\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { CodifierResponseData, CodifierSkillsResponseData, Section, Topic } from 'api/services/codifier';\nimport { WritableDraft } from 'immer/dist/internal';\nimport {\n deleteCodifierBlockAction,\n deleteCodifierMetasubjectAction,\n deleteCodifierParallelAction,\n deleteCodifierSectionAction,\n deleteCodifierSkillAction,\n deleteCodifierTopicAction,\n fetchCodifierDataAction,\n fetchCodifierSkillsDataAction,\n getCodifierDataByTopicsAction,\n getCodifierSubjectDataAction,\n getCodifierSubjectsAction,\n getSubjectsInCodifierAction,\n patchCodifierBlockAction,\n patchCodifierMetasubjectAction,\n patchCodifierParallelAction,\n patchCodifierSectionAction,\n patchCodifierSkillAction,\n patchCodifierTopicAction,\n postCodifierBlockAction,\n postCodifierMetasubjectAction,\n postCodifierParallelAction,\n postCodifierSectionAction,\n postCodifierSkillAction,\n postCodifierTopicAction,\n} from 'store/actions/codifier';\nimport { getUserInfoAction } from 'store/actions/user';\nimport {\n CodifierBlockData,\n CodifierParallelData,\n CodifierSectionData,\n CodifierSubjectData,\n CodifierTopicData,\n getCodifierMaps,\n} from 'store/normalizers/codifier';\nimport { getSubjectsInCodifier, getSubjectsMaps } from 'store/normalizers/codifier/getSubjectsMaps';\nimport { FetchStatus } from 'types/api';\nimport { UserRoles } from 'types/user';\n\ninterface CodifierState {\n fetchStatus: FetchStatus;\n getCodifierSubjectDataStatus: FetchStatus;\n fetchStatusSkills: FetchStatus;\n postDataStatus: FetchStatus;\n postCodifierBlockStatus: FetchStatus;\n patchDataStatus: FetchStatus;\n isMethodistFlag: boolean;\n codifierData: CodifierResponseData[];\n codifierSkillsData: CodifierSkillsResponseData[];\n subjectsIds: number[];\n subjectsMap: {\n [id: number]: CodifierSubjectData;\n };\n parallelsMap: {\n [id: number]: CodifierParallelData;\n };\n sectionsMap: {\n [id: number]: CodifierSectionData;\n };\n blocksMap: {\n [id: number]: CodifierBlockData;\n };\n topicsMap: {\n [id: number]: CodifierTopicData;\n };\n getSubjectsStatus: FetchStatus;\n error: unknown;\n}\n\nconst initialState: CodifierState = {\n fetchStatus: FetchStatus.INITIAL,\n getCodifierSubjectDataStatus: FetchStatus.INITIAL,\n fetchStatusSkills: FetchStatus.INITIAL,\n postDataStatus: FetchStatus.INITIAL,\n postCodifierBlockStatus: FetchStatus.INITIAL,\n isMethodistFlag: false,\n patchDataStatus: FetchStatus.INITIAL,\n getSubjectsStatus: FetchStatus.INITIAL,\n codifierData: [],\n codifierSkillsData: [],\n subjectsIds: [],\n subjectsMap: {},\n parallelsMap: {},\n sectionsMap: {},\n blocksMap: {},\n topicsMap: {},\n error: null,\n};\n\nconst codifierSlice = createSlice>({\n name: 'codifier',\n initialState,\n reducers: {\n resetFetchStatuses(state) {\n state.fetchStatus = FetchStatus.INITIAL;\n state.fetchStatusSkills = FetchStatus.INITIAL;\n state.postDataStatus = FetchStatus.INITIAL;\n state.patchDataStatus = FetchStatus.INITIAL;\n },\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getUserInfoAction.fulfilled, (state, { payload }) => {\n state.isMethodistFlag = payload.userRoles.includes(UserRoles.METHODIST) || false;\n });\n builder.addCase(fetchCodifierDataAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(fetchCodifierDataAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n const codifierDataWithSortedParallel =\n payload?.map((subject) => {\n subject.parallels = subject.parallels?.sort((a, b) => a.grade - b.grade);\n return subject;\n }) || [];\n state.codifierData = codifierDataWithSortedParallel;\n\n const { subjectIds, subjectsMap, parallelsMap, sectionsMap, blocksMap, topicsMap } = getCodifierMaps(\n codifierDataWithSortedParallel,\n );\n\n state.subjectsIds = subjectIds;\n state.subjectsMap = subjectsMap;\n state.parallelsMap = parallelsMap;\n state.sectionsMap = sectionsMap;\n state.blocksMap = blocksMap;\n state.topicsMap = topicsMap;\n state.error = null;\n });\n builder.addCase(fetchCodifierDataAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postCodifierParallelAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postCodifierParallelAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n if (subject.id === payload.subject) {\n if (subject.parallels) {\n subject.parallels.push({\n id: payload.id,\n grade: payload.grade,\n sections: [],\n });\n subject.parallels = subject.parallels.sort((a, b) => a.grade - b.grade);\n } else {\n subject.parallels = [\n {\n id: payload.id,\n grade: payload.grade,\n sections: [],\n },\n ];\n }\n }\n\n return subject;\n });\n }\n\n if (state.fetchStatusSkills === FetchStatus.FETCHED) {\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n if (subject.id === payload.subject) {\n if (subject.parallels) {\n subject.parallels.push({\n id: payload.id,\n grade: payload.grade,\n metasubjects: [],\n });\n subject.parallels = subject.parallels.sort((a, b) => a.grade - b.grade);\n } else {\n subject.parallels = [\n {\n id: payload.id,\n grade: payload.grade,\n metasubjects: [],\n },\n ];\n }\n }\n\n return subject;\n });\n }\n state.error = null;\n });\n builder.addCase(postCodifierParallelAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierParallelAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCodifierParallelAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.filter((parallel) => parallel.id !== payload);\n\n return subject;\n });\n }\n\n if (state.fetchStatusSkills === FetchStatus.FETCHED) {\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.filter((parallel) => parallel.id !== payload);\n\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(deleteCodifierParallelAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postCodifierSectionAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n\n builder.addCase(postCodifierSectionAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n if (parallel.id === payload[1]) {\n parallel.sections = payload[0].ordering.map((elem, index) => {\n const section = parallel.sections?.find((el) => el.id === elem);\n return {\n id: section?.id ?? elem,\n title: section?.title ?? payload[2],\n order: index,\n blocks: section?.blocks,\n };\n });\n }\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(postCodifierSectionAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierSectionAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCodifierSectionAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.sections = parallel.sections\n ?.filter((section) => section.id !== payload)\n .map((section, index) => {\n return {\n ...section,\n order: index,\n };\n });\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(deleteCodifierSectionAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(postCodifierBlockAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.postCodifierBlockStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postCodifierBlockAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.postCodifierBlockStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.sections = parallel.sections?.map((section) => {\n if (section.id === payload[3]) {\n section.blocks = payload[0].ordering.map((elem, index) => {\n const block = section.blocks?.find((el) => el.id === elem);\n return {\n id: block?.id ?? elem,\n title: block?.title ?? payload[2],\n order: index,\n section: section.id,\n topics: block?.topics ?? [],\n };\n });\n }\n\n return section;\n });\n\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(postCodifierBlockAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.postCodifierBlockStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierBlockAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n\n state.error = null;\n });\n builder.addCase(deleteCodifierBlockAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.sections = parallel.sections?.map((section) => {\n section.blocks = section.blocks\n ?.filter((block) => block.id !== payload)\n .map((block, index) => {\n return {\n ...block,\n order: index,\n };\n });\n\n return section;\n });\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(deleteCodifierBlockAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postCodifierTopicAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postCodifierTopicAction.fulfilled, (state, { meta, payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.sections = parallel.sections?.map((section) => {\n if (section.id === meta.arg.section) {\n section.blocks?.map((block) => {\n if (block.id === meta.arg.block) {\n const newTopicId = payload[0]?.ordering?.[meta.arg.order - 1];\n const newTopic: WritableDraft = {\n id: newTopicId ?? 0,\n title: meta.arg.title,\n order: meta.arg.order,\n questionsQuantity: 0,\n questionsQuantityUnpublished: 0,\n questionsQuantityRevision: 0,\n };\n const topics = block.topics ?? [];\n topics.push(newTopic);\n //@ts-ignore\n block.topics = payload[0]?.ordering\n .map((order, index) => {\n const item = topics.find((topic) => topic.id === order);\n return {\n ...item,\n order: index,\n };\n })\n .sort((a, b) => a.order - b.order);\n }\n });\n }\n return section;\n });\n\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(postCodifierTopicAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierTopicAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCodifierTopicAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.sections = parallel.sections?.map((section) => {\n section.blocks?.map((block) => {\n if (block.id === payload.blockId) {\n block.topics = block.topics\n ?.filter((topic) => topic.id !== payload?.id)\n .map((topic, index) => {\n return {\n ...topic,\n order: index,\n };\n });\n }\n });\n return section;\n });\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(deleteCodifierTopicAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(fetchCodifierSkillsDataAction.pending, (state) => {\n state.fetchStatusSkills = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(fetchCodifierSkillsDataAction.fulfilled, (state, { payload }) => {\n state.fetchStatusSkills = FetchStatus.FETCHED;\n state.codifierSkillsData =\n payload?.map((subject) => {\n subject.parallels = subject.parallels?.sort((a, b) => a.grade - b.grade);\n return subject;\n }) || [];\n state.error = null;\n });\n builder.addCase(fetchCodifierSkillsDataAction.rejected, (state, { error }) => {\n state.fetchStatusSkills = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postCodifierMetasubjectAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postCodifierMetasubjectAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n if (parallel.id === payload.parallel) {\n if (parallel.metasubjects) {\n parallel.metasubjects.push({\n id: payload.id,\n title: payload.title,\n skills: [],\n });\n } else {\n parallel.metasubjects = [\n {\n id: payload.id,\n title: payload.title,\n skills: [],\n },\n ];\n }\n }\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(postCodifierMetasubjectAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierMetasubjectAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCodifierMetasubjectAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.metasubjects = parallel.metasubjects?.filter((metasubject) => metasubject.id !== payload);\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(deleteCodifierMetasubjectAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(postCodifierSkillAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postCodifierSkillAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.metasubjects = parallel.metasubjects?.map((metasubject) => {\n if (metasubject.id === payload.metasubject) {\n if (metasubject.skills) {\n metasubject.skills.push({\n id: payload.id,\n title: payload.title,\n codifier: payload.codifier,\n });\n } else {\n metasubject.skills = [\n {\n id: payload.id,\n title: payload.title,\n },\n ];\n }\n }\n\n return metasubject;\n });\n\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(postCodifierSkillAction.rejected, (state, { error }) => {\n state.postDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(deleteCodifierSkillAction.pending, (state) => {\n state.postDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCodifierSkillAction.fulfilled, (state, { payload }) => {\n state.postDataStatus = FetchStatus.FETCHED;\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.metasubjects = parallel.metasubjects?.map((metasubject) => {\n metasubject.skills = metasubject.skills?.filter((skill) => skill.id !== payload);\n\n return metasubject;\n });\n return parallel;\n });\n\n return subject;\n });\n state.error = null;\n });\n builder.addCase(patchCodifierParallelAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierParallelAction.fulfilled, (state, { meta }) => {\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels\n ?.map((parallel) => {\n if (parallel.id === meta.arg.id) {\n return { ...parallel, grade: meta.arg.grade };\n }\n return parallel;\n })\n .sort((a, b) => a.grade - b.grade);\n return subject;\n });\n }\n\n if (state.fetchStatusSkills === FetchStatus.FETCHED) {\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels\n ?.map((parallel) => {\n if (parallel.id === meta.arg.id) {\n return { ...parallel, grade: meta.arg.grade };\n }\n return parallel;\n })\n .sort((a, b) => a.grade - b.grade);\n return subject;\n });\n }\n state.error = null;\n });\n builder.addCase(patchCodifierParallelAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchCodifierSectionAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierSectionAction.fulfilled, (state, { meta, payload }) => {\n const selectedSectionBlock = state.codifierData\n .find((el) => el.id === meta.arg.subject)\n ?.parallels?.find((el) => el.id === meta.arg.oldParallel)\n ?.sections?.find((el) => el.id === meta.arg.id)?.blocks;\n\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n if (parallel.id === meta.arg.oldParallel) {\n parallel.sections = parallel.sections\n ?.filter((item) => item.id !== meta.arg.id)\n .map((section, index) => {\n return {\n ...section,\n order: index,\n };\n });\n } else if (parallel.id === meta.arg.parallel) {\n parallel.sections = payload[0].ordering.map((elem, index) => {\n const section = parallel.sections?.find((el) => el.id === elem);\n return {\n id: section?.id ?? elem,\n title:\n meta.arg.id === elem\n ? payload[1]\n : parallel.sections?.find((el) => el.id === elem)?.title ?? '',\n order: index,\n blocks: !section?.id ? selectedSectionBlock : section?.blocks,\n };\n });\n }\n\n return parallel;\n });\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(patchCodifierSectionAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchCodifierBlockAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierBlockAction.fulfilled, (state, { payload, meta }) => {\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n // темы, которые нужно перенести из одной секции в другую\n const topics: WritableDraft[] | undefined = meta.arg.oldSection\n ? parallel.sections\n ?.find(({ id }) => id === meta.arg.oldSection)\n ?.blocks?.find(({ id }) => id === meta.arg.id)?.topics\n : [];\n parallel.sections = parallel.sections?.map((section) => {\n //удаляем блок из старой секции\n if (section.id === meta.arg.oldSection) {\n section.blocks = section.blocks\n ?.filter((el) => el.id !== meta.arg.id)\n .map((block, index) => {\n return {\n ...block,\n order: index,\n };\n });\n }\n //добавляем блок в новую секцию\n if (section.id === meta.arg.section) {\n section.blocks = payload[0].ordering.map((elem, index) => {\n const block = section.blocks?.find((el) => el.id === elem);\n\n return {\n id: block?.id ?? elem,\n title:\n meta.arg.id === elem\n ? payload[1]\n : section.blocks?.find((el) => el.id === elem)?.title ?? '',\n order: index,\n section: section.id,\n topics: block?.topics ?? topics,\n };\n });\n }\n return section;\n });\n return parallel;\n });\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(patchCodifierBlockAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchCodifierTopicAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierTopicAction.fulfilled, (state, { meta, payload }) => {\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatus == FetchStatus.FETCHED) {\n state.codifierData = state.codifierData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n const topicToTransfer: WritableDraft | undefined = parallel.sections\n ?.find(({ id }) => id === meta.arg.oldSection)\n ?.blocks?.find(({ id }) => id === meta.arg.oldBlock)\n ?.topics?.find(({ id }) => id === meta.arg.id);\n\n parallel.sections = parallel.sections?.map((section) => {\n if (section.id === meta.arg.oldSection) {\n section.blocks = section.blocks?.map((block) => {\n if (block.id === meta.arg.oldBlock) {\n const list = block?.topics\n ?.filter(({ id }) => id !== meta.arg.id)\n .map((el, index) => {\n return {\n ...el,\n order: index,\n };\n });\n return {\n ...block,\n topics: list,\n };\n }\n return block;\n });\n }\n if (section.id === meta.arg.section) {\n section.blocks = section.blocks?.map((block) => {\n if (block.id === meta.arg.block) {\n //удаляем тему, если она уже существует и добавляем ее же с измененными данными\n let newBlocksTopicList =\n block.topics?.filter((item) => item.id !== meta.arg.id) ?? [];\n const newTopic: WritableDraft = {\n id: meta.arg.id ?? topicToTransfer?.id ?? 0,\n title: meta.arg.title ?? topicToTransfer?.title ?? '',\n order: meta.arg.order ?? topicToTransfer?.order ?? 0,\n questionsQuantity: topicToTransfer?.questionsQuantity ?? 0,\n questionsQuantityRevision: topicToTransfer?.questionsQuantityRevision ?? 0,\n questionsQuantityUnpublished:\n topicToTransfer?.questionsQuantityUnpublished ?? 0,\n };\n\n newBlocksTopicList?.push(newTopic);\n // @ts-ignore\n newBlocksTopicList = payload[0]?.ordering\n .map((order, index) => {\n const item = newBlocksTopicList.find((topic) => topic.id === order);\n return {\n ...item,\n order: index,\n };\n })\n .sort((a, b) => a.order - b.order);\n return {\n ...block,\n topics: newBlocksTopicList,\n };\n }\n\n return block;\n });\n }\n return section;\n });\n return parallel;\n });\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(patchCodifierTopicAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n //PatchSkills\n builder.addCase(patchCodifierMetasubjectAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierMetasubjectAction.fulfilled, (state, { meta }) => {\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatusSkills == FetchStatus.FETCHED) {\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.metasubjects = parallel.metasubjects?.map((metasubject) => {\n if (metasubject.id === meta.arg.id) {\n return { ...metasubject, title: meta.arg.title };\n }\n return metasubject;\n });\n return parallel;\n });\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(patchCodifierMetasubjectAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchCodifierSkillAction.pending, (state) => {\n state.patchDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(patchCodifierSkillAction.fulfilled, (state, { meta, payload }) => {\n state.patchDataStatus = FetchStatus.FETCHED;\n if (state.fetchStatusSkills == FetchStatus.FETCHED) {\n state.codifierSkillsData = state.codifierSkillsData.map((subject) => {\n subject.parallels = subject.parallels?.map((parallel) => {\n parallel.metasubjects = parallel.metasubjects?.map((metasubject) => {\n metasubject.skills = metasubject.skills?.map((skill) => {\n if (skill.id === meta.arg.id) {\n return { ...skill, title: meta.arg.title, codifier: payload.codifier };\n }\n return skill;\n });\n return metasubject;\n });\n return parallel;\n });\n return subject;\n });\n }\n\n state.error = null;\n });\n builder.addCase(patchCodifierSkillAction.rejected, (state, { error }) => {\n state.patchDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getCodifierSubjectsAction.pending, (state) => {\n state.getSubjectsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCodifierSubjectsAction.fulfilled, (state, { payload }) => {\n state.getSubjectsStatus = FetchStatus.FETCHED;\n const { subjectsIds, subjectsMap } = getSubjectsMaps(payload);\n state.subjectsIds = subjectsIds;\n state.subjectsMap = subjectsMap;\n state.codifierData = getSubjectsInCodifier(payload);\n state.error = null;\n })\n .addCase(getCodifierSubjectsAction.rejected, (state, { error }) => {\n state.getSubjectsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getSubjectsInCodifierAction.pending, (state) => {\n state.getSubjectsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getSubjectsInCodifierAction.fulfilled, (state, { payload }) => {\n state.getSubjectsStatus = FetchStatus.FETCHED;\n state.codifierData = getSubjectsInCodifier(payload);\n state.error = null;\n })\n .addCase(getSubjectsInCodifierAction.rejected, (state, { error }) => {\n state.getSubjectsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getCodifierSubjectDataAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.getCodifierSubjectDataStatus = FetchStatus.FETCHING;\n state.postCodifierBlockStatus = FetchStatus.INITIAL;\n state.error = null;\n })\n .addCase(getCodifierSubjectDataAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.getCodifierSubjectDataStatus = FetchStatus.FETCHED;\n\n const codifierDataWithSortedParallel =\n payload?.map((subject) => {\n subject.parallels = subject.parallels?.sort((a, b) => a.grade - b.grade);\n return subject;\n }) || [];\n const { subjectsMap, parallelsMap, sectionsMap, blocksMap, topicsMap } = getCodifierMaps(\n codifierDataWithSortedParallel,\n );\n\n state.codifierData = state.codifierData.length\n ? state.codifierData.map((elem) => {\n if (elem.id === payload[0].id) return codifierDataWithSortedParallel[0];\n else return elem;\n })\n : payload;\n\n state.subjectsMap = {\n ...state.subjectsMap,\n ...subjectsMap,\n };\n state.parallelsMap = {\n ...state.parallelsMap,\n ...parallelsMap,\n };\n state.sectionsMap = {\n ...state.sectionsMap,\n ...sectionsMap,\n };\n state.blocksMap = {\n ...state.blocksMap,\n ...blocksMap,\n };\n state.topicsMap = {\n ...state.topicsMap,\n ...topicsMap,\n };\n state.error = null;\n })\n .addCase(getCodifierSubjectDataAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.getCodifierSubjectDataStatus = FetchStatus.ERROR;\n\n state.error = error;\n });\n builder\n .addCase(getCodifierDataByTopicsAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCodifierDataByTopicsAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n const codifierDataWithSortedParallel =\n payload?.map((subject) => {\n subject.parallels = subject.parallels?.sort((a, b) => a.grade - b.grade);\n return subject;\n }) || [];\n const { subjectsMap, parallelsMap, sectionsMap, blocksMap, topicsMap } = getCodifierMaps(\n codifierDataWithSortedParallel,\n );\n\n state.codifierData = state.codifierData\n .filter((subject) => subject.id !== payload[0]?.id)\n .concat(codifierDataWithSortedParallel);\n\n state.subjectsMap = {\n ...state.subjectsMap,\n ...subjectsMap,\n };\n state.parallelsMap = {\n ...state.parallelsMap,\n ...parallelsMap,\n };\n state.sectionsMap = {\n ...state.sectionsMap,\n ...sectionsMap,\n };\n state.blocksMap = {\n ...state.blocksMap,\n ...blocksMap,\n };\n state.topicsMap = {\n ...state.topicsMap,\n ...topicsMap,\n };\n state.error = null;\n })\n .addCase(getCodifierDataByTopicsAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nconst resetFetchStatuses = codifierSlice.actions.resetFetchStatuses as ActionCreatorWithoutPayload;\nconst resetCodifierState = codifierSlice.actions.reset as ActionCreatorWithoutPayload;\nexport { resetCodifierState, resetFetchStatuses };\nexport const codifierReducer = codifierSlice.reducer;\n","import { ELinkSeparatingLine, ESupportedLinkTypes, supportedLinkTypes } from './AddKinescopeVideo.config';\nimport { TVideoValues } from './AddKinescopeVideo.types';\n\nexport const checkIsKinescopeUrlValid = (link: string): boolean =>\n !!link?.startsWith('https') && supportedLinkTypes.some((format) => link?.includes(format));\n\nexport const validateVideo = (values: TVideoValues): string | undefined =>\n checkIsKinescopeUrlValid(values?.videoData?.url) ? undefined : 'error';\n","import React, { useEffect, useState } from 'react';\nimport { useField } from 'react-final-form';\nimport { AppFontIcon, AppInput, AppText } from '@frontend-modules/ui-kit';\nimport { MonitorPlayIcon } from '@fsd-shared/assets';\nimport { KinescopeVideo } from '@fsd-shared/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TAddKinescopeVideo, TVideoValues } from './AddKinescopeVideo.types';\nimport { checkIsKinescopeUrlValid, validateVideo } from './AddKinescopeVideo.utils';\n\nimport './AddKinescopeVideo.style.scss';\nexport const AddKinescopeVideo: React.FC = (props) => {\n const { name, url, onDelete, ...videoProps } = props;\n const [videoUrl, setVideoUrl] = useState(url);\n const [isError, setIsError] = useState(!url);\n\n const { input } = useField(name, { validate: validateVideo });\n\n const onAddLink = (link: string) => {\n const isValid = checkIsKinescopeUrlValid(link);\n if (isValid) {\n setVideoUrl(link);\n setIsError(false);\n } else {\n setVideoUrl(undefined);\n setIsError(true);\n }\n };\n useEffect(() => {\n input.onChange({\n ...input.value,\n videoData: { url: videoUrl },\n });\n }, [videoUrl]);\n return (\n
\n \n
\n {videoUrl ? : }\n \n
\n \n
\n
\n
\n );\n};\n","import { RefObject, useCallback, useEffect } from 'react';\n\nexport const useOuterClick = (\n element: RefObject,\n setIsOpened: React.Dispatch>,\n): void => {\n const clickOutOfElement = useCallback(\n (event: Event) => element.current && !element.current?.contains(event.target as Node),\n [element],\n );\n\n const handleOutsideClick = useCallback(\n (event: Event) => {\n if (clickOutOfElement(event)) setIsOpened(false);\n },\n [clickOutOfElement, setIsOpened],\n );\n\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick, true);\n return () => document.removeEventListener('click', handleOutsideClick, true);\n }, [handleOutsideClick]);\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\n\nimport { AttendanceMarkForm, MarkField } from 'components/AttendanceMark/AttendanceMarkForm';\n\nimport { IRateButtonProps } from './RateButton.types';\n\nimport './RateButton.scss';\n\nconst CnRateButton = cn('studentTaskRateButton');\n\nexport const RateButton: React.FC = ({ onAddMark }) => {\n const [isAddMarkFormOpen, setIsAddMarkFormOpen] = useState(false);\n\n const handleRateButtonClick = useCallback(() => {\n setIsAddMarkFormOpen(true);\n }, []);\n\n const handleAddMarkFormClose = useCallback(() => {\n setIsAddMarkFormOpen(false);\n }, []);\n\n const handleAddMark = useCallback(\n ({ mark }: { mark: MarkField[] }) => {\n onAddMark?.(mark);\n setIsAddMarkFormOpen(false);\n },\n [onAddMark],\n );\n const addMarkInitList = useMemo(() => [{ comment: '', markId: 0, valueCanChange: true }], []);\n\n return (\n
\n {isAddMarkFormOpen &&
}\n
\n \n {isAddMarkFormOpen && (\n <>\n
\n \n
\n \n )}\n
\n
\n );\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useField } from 'react-final-form';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Answer } from '@lms-elements/test-task';\nimport { IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { useDownloadTxtFile } from 'src-new/hooks';\nimport { error } from 'store/reducers/error';\nimport { useAppSelector } from 'store/store';\n\ninterface AnswerWrapperProps {\n index: number;\n name: string;\n disabled?: boolean;\n needHideFileAddButton?: boolean;\n needValidation?: boolean;\n needHideFileDeleteButton?: boolean;\n isOnCheck?: boolean;\n needQuestionLink?: boolean;\n onDeleteFile: (questionId: number, fileId: number) => void;\n onUploadFile: (\n questionId: number,\n file: File,\n index: number,\n uploadCallback: (index: number, percent: number) => void,\n ) => void;\n isDraft?: boolean;\n onChangeFilesProgress: (progresses: number[]) => void;\n}\nconst CnAnswer = cn('student-task-answer');\n\nexport const AnswerWrapper: React.FC = ({\n index,\n name,\n disabled,\n needHideFileAddButton,\n needValidation,\n needHideFileDeleteButton,\n isOnCheck,\n needQuestionLink,\n isDraft,\n onDeleteFile,\n onUploadFile,\n onChangeFilesProgress,\n}) => {\n const containerRef = useRef(null);\n useDownloadTxtFile(containerRef);\n\n const dispatch = useDispatch();\n const questionFiles = useAppSelector((state) => state.answerAttempts.questionFiles);\n const { input } = useField(name);\n const { input: uploadProgressesInput } = useField(`${name}.uploadProgresses`, { subscription: {} });\n const [uploadProgresses, setUploadProgresses] = useState([]);\n\n useEffect(() => {\n uploadProgressesInput.onChange(uploadProgresses);\n }, [uploadProgressesInput, uploadProgresses]);\n\n const history = useHistory();\n\n const handleFileDelete = useCallback(\n (fileIndex: number) => {\n const fileId = questionFiles[input.value.id]?.files.find(({ index }) => fileIndex === index)?.id;\n\n if (fileId && onDeleteFile) {\n onDeleteFile(input.value.id, fileId);\n }\n },\n [input.value.id, onDeleteFile, questionFiles],\n );\n\n const handleUploadProgress = useCallback(\n (index: number, percent: number) => {\n let newProgresses: number[] = [];\n\n setUploadProgresses((progresses) => {\n progresses[index] = percent;\n\n const result = [...progresses];\n newProgresses = result;\n\n return result;\n });\n\n onChangeFilesProgress(newProgresses);\n },\n [onChangeFilesProgress],\n );\n\n const handleFileUpload = useCallback(\n (file: File, index: number) => {\n onChangeFilesProgress([0]);\n onUploadFile?.(input.value.id, file, index, handleUploadProgress);\n },\n [handleUploadProgress, input.value.id, onUploadFile],\n );\n\n const handleQuestionLinkClick = useCallback(\n (id: number) => {\n history.push(`/questions/edit/${id}`);\n },\n [history],\n );\n\n const handleFileOversize = useCallback(\n (errorMessage: string) => {\n dispatch(\n error({\n message: errorMessage,\n extra: {\n needHideButtons: true,\n isFrontend: false,\n },\n }),\n );\n },\n [dispatch],\n );\n\n return (\n
\n \n handleQuestionLinkClick(input.value.id)}\n onFileOversize={handleFileOversize}\n isDraft={isDraft}\n needHideCopyToClipboardButton\n />\n
\n );\n};\n","import { IDropdownValues } from '@lms-elements/atomic';\nimport { IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { ResponseStudentQuestion } from 'api/services/questionBank';\nimport i18next from 'i18next';\nimport { isTimeExpired, setMessage } from 'src-new/utils';\nimport { QuestionFiles } from 'store/reducers/answerAttempts';\nimport {\n AnswerAttemptData,\n EssayAnswerData,\n EssayAnswerDataResponse,\n InsertWordsAnswerData,\n InsertWordsAnswerDataResponse,\n TestAnswerData,\n TestAnswerDataResponse,\n TextAnswerData,\n TrueFalseAnswerData,\n} from 'types/answerAttempt';\nimport { IHomeworkItem } from 'types/homework';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\nimport { getAutoCheckAnswerData } from 'utils/answerAttempt';\nimport { normalizeQuestionData } from 'utils/questions';\n\nimport { getAttemptDropdownOptions } from './AttemptDropdown';\n\nexport interface IFormValues {\n questions: (IQuestion & { id: number })[];\n attempt?: IDropdownValues;\n}\n\nexport const getStudentAnswers = (\n type: AnswersTypeEnum,\n data:\n | EssayAnswerDataResponse\n | InsertWordsAnswerDataResponse\n | TestAnswerDataResponse\n | TextAnswerData\n | TrueFalseAnswerData,\n): TextAnswerData | TrueFalseAnswerData | InsertWordsAnswerData | TestAnswerData => {\n switch (type) {\n case AnswersTypeEnum.true_false:\n return { answer: (data as TrueFalseAnswerData)?.answer };\n case AnswersTypeEnum.test:\n return { selectedOptions: (data as TestAnswerDataResponse)?.selectedOptions?.map((option) => option.uuid) };\n case AnswersTypeEnum.text:\n return { selectedOption: (data as TextAnswerData)?.selectedOption };\n case AnswersTypeEnum.insert_words:\n return {\n selectedOptions: (data as InsertWordsAnswerDataResponse)?.selectedOptions?.map(\n ({ selectedWord, gapIndex }) => ({\n selectedWord,\n gapIndex,\n }),\n ),\n };\n default:\n return {} as TextAnswerData;\n }\n};\n\nexport const getInitValues = (\n studentQuestions: ResponseStudentQuestion[] = [],\n questionsOrder: number[],\n attempt: Pick | null,\n): IFormValues => {\n const normalizedQuestions = studentQuestions.map((question) => {\n const answer = attempt?.answers?.find((answer) => answer.questionId === question.id);\n const answerData = answer\n ? {\n data: { ...answer, file: answer.files },\n answers: getStudentAnswers(question.answersType, answer.data),\n }\n : undefined;\n\n return normalizeQuestionData(question, answerData, attempt?.isDraft);\n });\n\n const sortedQuestions = questionsOrder\n .map((id) => {\n const foundQuestion = normalizedQuestions.find((question) => question.id === id);\n if (foundQuestion) {\n return foundQuestion;\n }\n })\n .filter(Boolean) as typeof normalizedQuestions;\n\n return {\n questions: sortedQuestions,\n attempt: attempt ? getAttemptDropdownOptions(attempt) : undefined,\n };\n};\n\nexport const getAnswerAttempts = (\n values: IFormValues,\n selectedTask: IHomeworkItem,\n selectedAttempt: AnswerAttemptPostResponse | null,\n questionFiles: QuestionFiles,\n): AnswerAttemptData => {\n const answers = values.questions.reduce(\n (result, question) => {\n if (question.type !== 'detailed') {\n result.push({\n question: question.id,\n data: getAutoCheckAnswerData(question),\n });\n }\n\n if (question.type === 'detailed') {\n result.push({\n answerId: selectedAttempt?.answers.find((answer) => answer.questionId === question.id)?.id,\n question: question.id,\n data: {\n text: question.answer,\n file:\n [...(question.file ?? [])]\n ?.filter((file) => !(file instanceof File))\n .map((file) => (file instanceof File ? null : String(file.id))) ?? [],\n } as EssayAnswerData,\n files: questionFiles[question.id]?.files.map(({ id }) => id),\n isEssay: true,\n });\n }\n\n return result;\n },\n [] as {\n answerId?: number;\n question: number;\n data: EssayAnswerData | InsertWordsAnswerData | TestAnswerData | TextAnswerData | TrueFalseAnswerData;\n file?: File[];\n files?: number[];\n isEssay?: boolean;\n }[],\n );\n\n return {\n answers,\n assignmentProgress: Number(selectedTask.id),\n };\n};\n\ninterface AnswerAttemptsData {\n attempt: number;\n attemptsQuantity: number;\n}\n\nexport const getAttemptNumber = (task: IHomeworkItem, answerAttempt: AnswerAttemptsData | null): string => {\n return answerAttempt\n ? `${task.type.title}, ${answerAttempt.attempt} попытка из ${answerAttempt.attemptsQuantity}`\n : task.type.title;\n};\n\nexport const getMarkComentCallback = (questions: ResponseStudentQuestion[]) => (\n attemptData: AnswerAttemptPostResponse,\n): string => {\n const questionQuantity = questions.filter((question) => question.answersType !== AnswersTypeEnum.essay).length;\n\n if (questionQuantity === 0) {\n return '- оценка за попытку';\n }\n\n const correctAnswers = attemptData.answers.reduce((result, answer) => {\n if (answer.isCorrect) {\n result = result + 1;\n }\n\n return result;\n }, 0);\n\n return `${i18next.t('correctAnswer', { count: correctAnswers })} из ${i18next.t('question', {\n count: questionQuantity,\n })}`;\n};\n\nexport const getBestAttempt = (attemptsData: AnswerAttemptPostResponse[]): AnswerAttemptPostResponse | null => {\n return attemptsData[0] || null;\n};\n\ntype QuestionError = {\n answer?: string;\n file?: string;\n};\n\nconst validateQuestion = (question: IQuestion & { id: number }): QuestionError => {\n switch (question.type) {\n case 'single':\n case 'multiple':\n return {\n answer: Array.isArray(question.answer) && question.answer.length > 0 ? undefined : 'error',\n };\n case 'binary':\n case 'open':\n return {\n answer: typeof question.answer === 'string' && question.answer ? undefined : 'error',\n };\n case 'detailed':\n return {\n answer:\n !question.isTextAvailable ||\n (typeof question.answer === 'string' && question.answer) ||\n (Array.isArray(question.file) && question.file.length > 0)\n ? undefined\n : 'error',\n file:\n !question.isFileAvailable ||\n (typeof question.answer === 'string' && question.answer) ||\n (Array.isArray(question.file) && question.file.length > 0)\n ? undefined\n : 'error',\n };\n default:\n return {};\n }\n};\n\nexport const questionsValidation = (\n questions: (IQuestion & { id: number })[],\n): Record | undefined => {\n return questions.length\n ? questions.map(validateQuestion).reduce((result, error, index) => {\n result[`${index}`] = error;\n return result;\n }, {} as Record)\n : undefined;\n};\n\nexport const checkIsHardDeadlineLeft = (isTaskFinished: boolean, task?: IHomeworkItem): boolean =>\n !isTaskFinished && !task?.timeToComplete && !!task?.hardDeadline && isTimeExpired(task.hardDeadline);\n\nexport const showHardDeadlineLeftToast = (): void =>\n setMessage({ status: 'error', text: 'Время на выполнение задания истекло!', duration: 5, maxCount: 1 });\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { IDropdownValues } from '@lms-elements/atomic';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { getBestAttempt } from 'containers/StudentTask/utils';\n\nimport { AttendanceMark } from 'components/AttendanceMark';\n\nconst CnMarkClassName = cn('attemptDropdownMark');\n\nexport const getAttemptLabel = (attempt: Pick): string =>\n `Попытка №${attempt.attempt}, оценка`;\n\nexport const getAttemptDropdownOptions = (\n attempt: Pick,\n): IDropdownValues => ({\n id: attempt.id,\n title: getAttemptLabel(attempt),\n children: (\n \n \n \n ),\n});\n\nexport const getAttemptDropdownOptionsList = (\n attempts: Pick[],\n): IDropdownValues[] => attempts.map(getAttemptDropdownOptions);\n\nexport const getAttemptsIdsByLabels = (\n attempts: Pick[],\n): Record => {\n const attemptsIdsByLabelsAccumulator: Record = {};\n\n attempts?.forEach((attempt) => {\n attemptsIdsByLabelsAccumulator[getAttemptLabel(attempt)] = attempt.id;\n });\n\n return attemptsIdsByLabelsAccumulator;\n};\n\nexport const getAttemptByLabel = (\n attempts: AnswerAttemptPostResponse[],\n label: string,\n): AnswerAttemptPostResponse | null =>\n attempts.find((attempt) => attempt.id === getAttemptsIdsByLabels(attempts)[label]) || getBestAttempt(attempts);\n","import React, { useEffect, useMemo } from 'react';\nimport { useField } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { DropdownCustom, IDropdownType, IDropdownValues } from '@lms-elements/atomic';\nimport { EMPTY_VALIDATORS } from 'common/constants';\n\nimport { IAttemptDropdownProps } from './AttemptDropdown.types';\nimport { getAttemptByLabel, getAttemptDropdownOptionsList } from './AttemptDropdown.utils';\n\nimport './AttemptDropdown.scss';\n\nconst CnAttemptDropdown = cn('attemptDropdown');\n\nexport const AttemptDropdown: React.FC = ({ answerAttempts, name, onSelectedAttemptChange }) => {\n const { input } = useField(name);\n const attemptDropdownOptions = useMemo(() => getAttemptDropdownOptionsList(answerAttempts || []), [answerAttempts]);\n\n useEffect(() => {\n onSelectedAttemptChange?.(getAttemptByLabel(answerAttempts, input.value.title));\n }, [answerAttempts, input, onSelectedAttemptChange]);\n return (\n
\n \n
\n );\n};\n","import React, { useEffect, useMemo, useRef } from 'react';\nimport { useFormState } from 'react-final-form';\nimport { useDispatch } from 'react-redux';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { getAnswerAttempts, IFormValues } from 'containers/StudentTask/utils';\nimport { useRole } from 'hooks';\nimport { updateAttemptDraft } from 'store/actions/answerAttempt';\nimport { saveDraft } from 'store/reducers/answerAttempts';\nimport { useAppSelector } from 'store/store';\nimport { AnswerAttemptData } from 'types/answerAttempt';\nimport { FetchStatus } from 'types/api';\n\ninterface DraftComponentProps {\n studentId: number;\n selectedAttempt: AnswerAttemptPostResponse | null;\n allFilesUploaded: boolean;\n isHardDeadlineLeft?: boolean;\n}\n\ninterface PatchData {\n id: string;\n tasks: AnswerAttemptData;\n assignmentProgress: number;\n}\n\nconst THREE_MINUTES = 180000;\n\nexport const DraftComponent: React.FC = ({ studentId, selectedAttempt, isHardDeadlineLeft }) => {\n const { isStudent, isTeacher } = useRole();\n\n const dispatch = useDispatch();\n\n const { postAnswerAttemptStatus, data, questionFiles, postEvaluateStatus } = useAppSelector(\n (state) => state.answerAttempts,\n );\n const draftAttempId = useAppSelector((state) => state.answerAttempts.draftAttempId);\n\n const { task } = useAppSelector((state) => state.studentTasks);\n\n const { values } = useFormState({ subscription: { values: true } });\n\n const answerAttemptsData = useMemo(() => {\n return isTeacher ? data?.filter((attempt) => attempt.student === studentId) || [] : data;\n }, [data, isTeacher, studentId]);\n\n const patchData = useMemo(() => {\n const filteredQuestions = values.questions.filter(\n (el) =>\n el.answer || (Array.isArray(el.file) && el.file.length !== 0) || questionFiles[el.id]?.files?.length,\n );\n\n const esseyQuestion = filteredQuestions.filter(({ type }) => type === 'detailed');\n const allFilesUpload = esseyQuestion.every(({ uploadProgresses }) =>\n ((uploadProgresses as unknown) as number[])?.filter(Boolean).every((progress) => progress === 101),\n );\n\n if (isStudent && draftAttempId && task && filteredQuestions.length) {\n const answerAttempts = getAnswerAttempts(\n { attempt: values.attempt, questions: filteredQuestions },\n task,\n selectedAttempt,\n questionFiles,\n );\n\n return {\n id: String(draftAttempId),\n tasks: answerAttempts,\n assignmentProgress: answerAttempts.assignmentProgress,\n };\n }\n }, [draftAttempId, isStudent, questionFiles, selectedAttempt, task, values.attempt, values.questions]);\n\n useEffect(() => {\n const filteredQuestions = values.questions.filter(\n (el) =>\n el.answer || (Array.isArray(el.file) && el.file.length !== 0 && questionFiles[el.id]?.files?.length),\n );\n\n if (\n !values.attempt &&\n isStudent &&\n !filteredQuestions.every(({ correctAnswers }) => correctAnswers?.length) &&\n postAnswerAttemptStatus === FetchStatus.INITIAL &&\n data !== null &&\n answerAttemptsData?.every((el) => !el.mark && !el.isDraft) &&\n task\n ) {\n const answerAttempts = getAnswerAttempts(\n {\n attempt: values.attempt,\n questions: filteredQuestions,\n },\n task,\n selectedAttempt,\n questionFiles,\n );\n\n dispatch(\n saveDraft({\n assignmentProgress: answerAttempts.assignmentProgress,\n answers: answerAttempts.answers,\n }),\n );\n }\n }, [\n answerAttemptsData,\n data,\n dispatch,\n isStudent,\n postAnswerAttemptStatus,\n questionFiles,\n selectedAttempt,\n values.attempt,\n values.questions,\n task,\n ]);\n\n const saveDraftRef = useRef((patchData: PatchData) => {\n dispatch(\n saveDraft({\n assignmentProgress: patchData.assignmentProgress,\n attemptId: Number(patchData.id),\n answers: patchData.tasks.answers,\n }),\n );\n });\n\n useEffect(() => {\n if (patchData && postEvaluateStatus === FetchStatus.INITIAL) {\n saveDraftRef.current(patchData);\n }\n }, [dispatch, patchData, postEvaluateStatus]);\n\n useEffect(() => {\n const draftInterval = setInterval(() => {\n if (!isHardDeadlineLeft) {\n dispatch(updateAttemptDraft());\n }\n }, THREE_MINUTES);\n\n return () => {\n clearInterval(draftInterval);\n };\n }, [dispatch, draftAttempId, isHardDeadlineLeft]);\n\n return null;\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport './DraftTime.scss';\n\nconst cx = cn('draft-time');\n\nexport const DraftTime: React.FC = () => {\n const draftTime = useAppSelector((store) => store.answerAttempts.draftTime);\n const updateDraftStatus = useAppSelector((store) => store.answerAttempts.patchDraftStatus);\n\n if (draftTime) {\n return (\n
\n
Черновик сохранен в {draftTime}
\n {updateDraftStatus === FetchStatus.ERROR && (\n
Последняя попытка сохранения была неудачной
\n )}\n
\n );\n }\n\n return null;\n};\n","import { TIME_AFTER_END_OF_LESSON } from 'constants/date';\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Form } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { IQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Answer';\nimport { checkIsAfter } from '@lms-elements/utils';\nimport { AnswerAttemptPostResponse } from 'api/services/answerAttempt';\nimport { overdueHomework } from 'assets';\nimport arrayMutators from 'final-form-arrays';\nimport { usePreventUnload } from 'hooks';\nimport moment from 'moment';\nimport { Mark } from 'src-new/components/lms-elements/Mark';\nimport { AppSkeleton } from 'src-new/ui';\nimport { getCurrentTimeByMoscow, getDifferentInMinutes, isTimeExpired } from 'src-new/utils';\nimport {\n createQuestionFileAction,\n getAnswerAttemptByProgressAction,\n patchAnswerAttemptAction,\n postEvaluateAction,\n updateAttemptDraft,\n} from 'store/actions/answerAttempt';\nimport { setError } from 'store/actions/error';\nimport { getAssignmentProgressQuestionsAction } from 'store/actions/questionBank';\nimport { getStudentTaskById } from 'store/actions/studentTasks';\nimport { deleteQuestionFile, resetAnswerAttemptsData, resetAnswerAttemptsState } from 'store/reducers/answerAttempts';\nimport { resetQuestionBankState } from 'store/reducers/questionBank';\nimport { resetStudentTask } from 'store/reducers/studentTasks';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { MarkData } from 'types/mark';\n\nimport { AttendanceMark } from 'components/AttendanceMark';\nimport { MarkField } from 'components/AttendanceMark/AttendanceMarkForm';\nimport { addMinutes } from 'utils/date';\nimport { getStudentQuestionsData } from 'utils/questions';\nimport { isEmptyAttempts } from 'utils/studentsTasks';\n\nimport { RateButton } from './RateButton/RateButton';\nimport { AnswerWrapper } from './AnswerWrapper';\nimport { AttemptDropdown } from './AttemptDropdown';\nimport { DraftComponent } from './DraftComponent';\nimport { DraftTime } from './DraftTime';\nimport {\n checkIsHardDeadlineLeft,\n getAnswerAttempts,\n getAttemptNumber,\n getBestAttempt,\n getInitValues,\n getMarkComentCallback,\n IFormValues,\n questionsValidation,\n showHardDeadlineLeftToast,\n} from './utils';\n\nimport './StudentTask.scss';\n\nconst CnStudentTaskTab = cn('student-task');\nconst CnAnswer = cn('student-task-answer');\n\ninterface TaskCheckParams {\n mark: MarkField;\n answerAttempt: AnswerAttemptPostResponse;\n}\n\ninterface IStudetnTaskProps {\n lessonId: number;\n assignmentId: number;\n assignmentProgressId: number;\n marks?: MarkData[];\n submitChangeMark?: (values: { selectedMark?: number; comment?: string; markId: number }[]) => void;\n onTaskCheck?: (values: TaskCheckParams) => void;\n isTeacher?: boolean;\n isStudent?: boolean;\n studentId: number;\n createNewAttempt?: () => void;\n deadline?: string;\n isTimeLeft?: boolean;\n}\n\nexport const StudentTask: React.FC = ({\n lessonId,\n assignmentProgressId,\n isTeacher,\n isStudent,\n submitChangeMark,\n onTaskCheck,\n studentId,\n createNewAttempt,\n deadline,\n isTimeLeft,\n}) => {\n const dispatch = useDispatch();\n const [shouldShowLastAttempt, setShouldShowLastAttempt] = useState(isTeacher);\n const [isHardDeadlineLeft, setIsHardDeadlineLeft] = useState(false);\n const [isJustFileUploaded, setIsJustFileUploaded] = useState(false);\n\n const history = useHistory();\n const { task, taskFetchStatus } = useAppSelector((state) => state.studentTasks);\n const { fetchStatusQuestions, studentQuestions } = useAppSelector((state) => state.questions);\n const {\n fetchStatus: fetchAnswerAttemptsStatus,\n data,\n lastAttempt,\n attemptsQuantity,\n postAnswerAttemptStatus,\n questionFiles,\n postEvaluateStatus,\n patchAnswerAttemptStatus,\n patchDraftStatus,\n createQuestionFileStatus,\n } = useAppSelector((state) => state.answerAttempts);\n const { draftAttempId, draftData } = useAppSelector((state) => state.answerAttempts);\n const draftTime = useAppSelector((store) => store.answerAttempts.draftTime);\n\n const answerAttemptsData = useMemo(() => {\n return isTeacher ? data?.filter((attempt) => attempt.student === studentId) || [] : data;\n }, [data, isTeacher, studentId]);\n\n useEffect(() => {\n dispatch(getStudentTaskById(assignmentProgressId));\n }, [assignmentProgressId, dispatch]);\n\n const isDeferredAssignmentTimeExpired = useMemo(\n () =>\n !!task?.timeToComplete &&\n (isTimeLeft ||\n ((deadline || task?.hardDeadline) &&\n isTimeExpired(\n moment(deadline ?? task?.hardDeadline)\n .subtract(3, 'seconds')\n .format(),\n ))),\n [patchDraftStatus, task, deadline, isTimeLeft],\n );\n\n // Отслеживает выход со страницы,\n // и если последний черновик был сохранен более 3х минут назад, устанавливает ошибку\n useEffect(() => {\n if (isStudent) {\n const unlisten = history.listen(() => {\n const currTime = getCurrentTimeByMoscow();\n const diff = draftTime ? getDifferentInMinutes(draftTime, currTime) : -1;\n\n if (diff > 3 && !isDeferredAssignmentTimeExpired && !isEmptyAttempts(data) && !isHardDeadlineLeft) {\n dispatch(setError('Последняя попытка сохранения черновика была неудачной!'));\n }\n });\n return () => {\n unlisten();\n };\n }\n }, [history, draftTime, isStudent, isDeferredAssignmentTimeExpired]);\n\n useEffect(() => {\n if (fetchAnswerAttemptsStatus === FetchStatus.INITIAL) {\n dispatch(getAnswerAttemptByProgressAction(assignmentProgressId));\n setShowAttempt(true);\n }\n }, [dispatch, assignmentProgressId, fetchAnswerAttemptsStatus, postAnswerAttemptStatus]);\n\n const [selectedAttempt, setSelectedAttempt] = useState(null);\n\n const [showAttempt, setShowAttempt] = useState(true);\n\n useEffect(() => {\n if (fetchAnswerAttemptsStatus !== FetchStatus.FETCHED || answerAttemptsData?.length === 0) {\n return setSelectedAttempt(null);\n }\n\n if (task?.status === AssignmentProgressStatus.ON_CHECK || isTeacher) {\n return setSelectedAttempt(answerAttemptsData?.find((attempt) => attempt.attempt === lastAttempt) || null);\n }\n\n setSelectedAttempt(() => {\n if (!answerAttemptsData?.length || !showAttempt) {\n return null;\n }\n\n const draft = answerAttemptsData?.find((elem) => elem.isDraft);\n if (draft) {\n return draft;\n }\n\n return (\n answerAttemptsData?.find((attempt) => attempt.attempt === lastAttempt) ??\n getBestAttempt(answerAttemptsData)\n );\n });\n }, [\n answerAttemptsData,\n fetchAnswerAttemptsStatus,\n isTeacher,\n lastAttempt,\n postAnswerAttemptStatus,\n shouldShowLastAttempt,\n showAttempt,\n task?.status,\n ]);\n\n const needResetShowAttemptState =\n fetchAnswerAttemptsStatus === FetchStatus.FETCHED &&\n answerAttemptsData &&\n (answerAttemptsData.length === 0 ||\n (isTeacher && answerAttemptsData.filter(({ isDraft }) => !isDraft).length === 0)) &&\n showAttempt;\n\n useEffect(() => {\n if (needResetShowAttemptState) {\n setShowAttempt(false);\n }\n }, [needResetShowAttemptState]);\n\n const selectedQuestion = useMemo(() => {\n if (selectedAttempt?.selectedQuestions && showAttempt) {\n return selectedAttempt.selectedQuestions;\n }\n\n if (task?.selectedQuestions && !showAttempt) {\n return task.selectedQuestions;\n }\n }, [selectedAttempt?.selectedQuestions, showAttempt, task?.selectedQuestions]);\n const canFetchQuestion =\n fetchAnswerAttemptsStatus === FetchStatus.FETCHED && postAnswerAttemptStatus === FetchStatus.INITIAL;\n\n useEffect(() => {\n if (canFetchQuestion && selectedQuestion?.length) {\n dispatch(getAssignmentProgressQuestionsAction(selectedQuestion));\n }\n }, [canFetchQuestion, dispatch, selectedQuestion]);\n\n const studentQuestionsData = useMemo(() => getStudentQuestionsData(studentQuestions), [studentQuestions]);\n\n const initialValues = useMemo(() => {\n return getInitValues(studentQuestionsData, selectedQuestion || [], selectedAttempt);\n }, [selectedAttempt, selectedQuestion, studentQuestionsData]);\n\n const attemptNumber = useMemo(() => (task ? getAttemptNumber(task, selectedAttempt) : ''), [task, selectedAttempt]);\n\n const markComment = useCallback(\n (attemptData: AnswerAttemptPostResponse) => {\n const getComment = getMarkComentCallback(studentQuestionsData);\n\n return getComment(attemptData);\n },\n [studentQuestionsData],\n );\n\n const timeIsUp = useMemo(() => {\n return task?.hardDeadline ? isTimeExpired(task?.hardDeadline) : false;\n }, [patchDraftStatus, task]);\n const overdue = isEmptyAttempts(data) && timeIsUp;\n\n const hasAttempts = useMemo(() => {\n if (\n fetchAnswerAttemptsStatus === FetchStatus.FETCHED &&\n lastAttempt !== undefined &&\n attemptsQuantity !== undefined\n ) {\n return lastAttempt < attemptsQuantity;\n }\n\n return false;\n }, [attemptsQuantity, fetchAnswerAttemptsStatus, lastAttempt]);\n\n const isOnCheck = useMemo(\n () =>\n task?.status === AssignmentProgressStatus.ON_CHECK ||\n (selectedAttempt?.mark && task?.status !== AssignmentProgressStatus.COMPLETED),\n [selectedAttempt?.mark, task],\n );\n const isComplete = useMemo(() => task?.status === AssignmentProgressStatus.COMPLETED, [task?.status]);\n const marks = useMemo(() => {\n if (selectedAttempt?.mark) {\n return [selectedAttempt?.mark];\n }\n\n return [];\n }, [selectedAttempt]);\n\n const showDropdown = attemptsQuantity && attemptsQuantity > 1;\n\n const canReupload = initialValues.questions.some((question) => question.type === 'detailed')\n ? task?.status === AssignmentProgressStatus.ON_CHECK && !timeIsUp\n : false;\n\n const [onReapload, setOnReapload] = useState(false);\n\n const actionButtonText = useMemo(() => {\n switch (true) {\n case onReapload:\n return 'Отправить файлы';\n case canReupload:\n return 'Изменить прикрепленные файлы';\n case showAttempt && !selectedAttempt?.isDraft:\n return 'Попробовать еще раз';\n default:\n return 'Сдать';\n }\n }, [canReupload, onReapload, selectedAttempt?.isDraft, showAttempt]);\n\n const needAttemptUpdate =\n isStudent && (selectedAttempt?.isDraft || !showAttempt) && !isOnCheck && !isDeferredAssignmentTimeExpired;\n\n const needAttemptUpdateRef = useRef(needAttemptUpdate);\n\n useEffect(() => {\n needAttemptUpdateRef.current = needAttemptUpdate;\n }, [needAttemptUpdate]);\n\n useEffect(() => {\n const isLeft = checkIsHardDeadlineLeft(!!isOnCheck || isComplete, task);\n if (isLeft) {\n showHardDeadlineLeftToast();\n }\n setIsHardDeadlineLeft(isLeft);\n }, [draftData, task, patchDraftStatus, isOnCheck, isComplete]);\n\n useEffect(() => {\n if (fetchAnswerAttemptsStatus === FetchStatus.FETCHING) {\n setOnReapload(false);\n }\n }, [fetchAnswerAttemptsStatus]);\n\n const handleReuploadFiles = useCallback(() => {\n setOnReapload((prev) => !prev);\n }, []);\n\n const handleMarkAdd = useCallback(\n (marks: MarkField[]) => {\n if (answerAttemptsData && lastAttempt && marks[0] && onTaskCheck)\n onTaskCheck({\n mark: marks[0],\n answerAttempt: answerAttemptsData[lastAttempt - 1],\n });\n },\n [answerAttemptsData, lastAttempt, onTaskCheck],\n );\n\n const handleFormSubmit = useCallback(\n (values: IFormValues) => {\n if (showAttempt && !selectedAttempt?.isDraft && !(canReupload && !onReapload)) {\n setShowAttempt(false);\n dispatch(getStudentTaskById(assignmentProgressId));\n if (task?.timeToComplete) {\n createNewAttempt?.();\n } else {\n dispatch(resetAnswerAttemptsData());\n }\n return;\n }\n\n if (task) {\n const answerAttempts = getAnswerAttempts(values, task, selectedAttempt, questionFiles);\n if (\n initialValues.questions.some((question) => question.type === 'detailed')\n ? task?.status === AssignmentProgressStatus.ON_CHECK\n : false\n ) {\n dispatch(patchAnswerAttemptAction({ answersData: answerAttempts }));\n } else {\n dispatch(\n postEvaluateAction({\n lessonId,\n id: assignmentProgressId,\n }),\n );\n }\n }\n },\n [\n assignmentProgressId,\n canReupload,\n dispatch,\n initialValues.questions,\n lessonId,\n onReapload,\n questionFiles,\n selectedAttempt,\n showAttempt,\n task,\n ],\n );\n\n useEffect(() => {\n if (postEvaluateStatus === FetchStatus.FETCHED) {\n setShowAttempt(true);\n setShouldShowLastAttempt(true);\n dispatch(resetAnswerAttemptsState());\n dispatch(resetQuestionBankState());\n }\n }, [dispatch, postEvaluateStatus]);\n\n const handleFileDelete = useCallback(\n (questionId: number, fileId: number) => {\n dispatch(deleteQuestionFile({ fileId, questionId }));\n },\n [dispatch],\n );\n const handleFileUpload = useCallback(\n (\n questionId: number,\n file: File,\n index: number,\n handleUploadProgress: (index: number, percent: number) => void,\n ) => {\n const isAcceptCreation = isHardDeadlineLeft || checkIsHardDeadlineLeft(!!isOnCheck || isComplete, task);\n\n if (isAcceptCreation) {\n setIsHardDeadlineLeft(isAcceptCreation);\n showHardDeadlineLeftToast();\n } else {\n dispatch(\n createQuestionFileAction({\n file,\n questionId,\n index,\n onUploadProgress: handleUploadProgress.bind(null, index),\n }),\n );\n setIsJustFileUploaded(true);\n }\n },\n [dispatch, isHardDeadlineLeft, isOnCheck, isComplete, task],\n );\n\n const handlerPatch = useCallback(() => {\n if (needAttemptUpdate && !isHardDeadlineLeft) {\n dispatch(updateAttemptDraft());\n\n return 'Вы уверены, что хотите перезагрузить страницу?';\n }\n }, [dispatch, needAttemptUpdate, isHardDeadlineLeft]);\n\n usePreventUnload(handlerPatch);\n\n useEffect(() => {\n return () => {\n if (needAttemptUpdateRef.current && !isHardDeadlineLeft) {\n dispatch(updateAttemptDraft());\n }\n setSelectedAttempt(null);\n dispatch(resetAnswerAttemptsState());\n dispatch(resetStudentTask());\n dispatch(resetQuestionBankState());\n };\n }, [assignmentProgressId, dispatch]);\n useEffect(() => {\n if (isJustFileUploaded && createQuestionFileStatus === FetchStatus.FETCHED) {\n dispatch(updateAttemptDraft());\n setIsJustFileUploaded(false);\n }\n }, [isJustFileUploaded, createQuestionFileStatus]);\n\n const [allFilesUploaded, setAllFilesUploaded] = useState(true);\n\n const onChangeFilesProgress = (progresses: number[]) => {\n if (progresses.some((progress) => progress < 100)) {\n setAllFilesUploaded(false);\n return;\n }\n\n setAllFilesUploaded(true);\n };\n\n if (taskFetchStatus === FetchStatus.FETCHING) {\n return ;\n }\n\n if (overdue) {\n return (\n
\n \n

\n {isTeacher ? 'Задание не было выполнено в срок' : 'Вы не выполнили задание в срок'}\n

\n
\n );\n }\n\n const hasEmptyAnswers = (values: IFormValues) => {\n return values.questions?.some((item) =>\n typeof item?.answer === 'string' ? !item?.answer?.trim() : !!item?.answer?.find((text) => !text?.trim()),\n )\n ? { err: 'Необходимо ответить на все вопросы!' }\n : { err: undefined };\n };\n\n return (\n <>\n {fetchStatusQuestions === FetchStatus.FETCHED && Boolean(studentQuestions?.length) && (\n \n onSubmit={handleFormSubmit}\n mutators={{\n ...arrayMutators,\n }}\n initialValues={initialValues}\n subscription={{ invalid: true }}\n validate={hasEmptyAnswers}\n >\n {({ handleSubmit, invalid }): React.ReactElement => {\n return (\n
\n {needAttemptUpdate && (\n \n )}\n {isStudent && }\n
\n
\n {task && (\n

\n {task.description || task.title}\n

\n )}\n

{attemptNumber}

\n {task?.assignment && (\n

\n {task.assignment.description}\n

\n )}\n
\n
\n
\n {isTeacher && isOnCheck && }\n {showDropdown && isTeacher && isComplete && (\n \n )}\n {!showDropdown && isTeacher && isComplete && !!marks.length && (\n \n )}\n
\n
\n \n name=\"questions\"\n validate={\n isTeacher || (showAttempt && !selectedAttempt?.isDraft)\n ? undefined\n : questionsValidation\n }\n subscription={{}}\n >\n {({\n fields: questions,\n }: FieldArrayRenderProps) =>\n questions?.map((name, index) => {\n return (\n \n );\n })\n }\n \n
\n {isOnCheck && !isTeacher && (\n
\n Задание отправлено на проверку\n
\n )}\n
\n {((hasAttempts && !timeIsUp) || canReupload || selectedAttempt?.isDraft) &&\n !isHardDeadlineLeft &&\n (!isDeferredAssignmentTimeExpired || (showAttempt && !selectedAttempt?.isDraft)) ? (\n !isTeacher && (\n \n {actionButtonText}\n \n )\n ) : (\n \n {(timeIsUp && hasAttempts) || isHardDeadlineLeft\n ? 'Время истекло'\n : isDeferredAssignmentTimeExpired\n ? `Время на выполнение истекло, задание отправлено на проверку`\n : 'Попытки закончились'}\n \n )}\n {!isOnCheck && showAttempt && selectedAttempt && selectedAttempt.mark && (\n
\n \n
\n )}\n
\n \n );\n }}\n \n )}\n \n );\n};\n","import { TUseRemainingTimeSaveType } from './useRemainingTime.type';\n\nconst TIME_DELAY = 3 * 60 * 1000;\n\n/**\n * @description Вычисление оставшегося времени до обновления пин-кода\n * @param lastRefreshDate\n * @param delay\n */\nexport const calcRefreshTime = (lastRefreshDate: number | undefined, delay = TIME_DELAY): undefined | string => {\n if (lastRefreshDate) {\n const diff = Date.now() - lastRefreshDate;\n if (diff > delay) {\n return undefined;\n }\n const secondsLeft = Math.floor((delay - diff) / 1000);\n const minutesLeft = Math.floor(secondsLeft / 60);\n const seconds = secondsLeft - minutesLeft * 60;\n return `${minutesLeft ? `${minutesLeft} мин ` : ''}${seconds < 10 ? `0${seconds}` : seconds} сек`;\n }\n return undefined;\n};\n\nexport const getRefreshDateValue = (save: TUseRemainingTimeSaveType, key: string): number | undefined => {\n let value;\n switch (save) {\n case 'session':\n value = Number(sessionStorage.getItem(key));\n break;\n default:\n value = undefined;\n break;\n }\n return value || undefined;\n};\n\nexport const setRefreshDateValue = (save: TUseRemainingTimeSaveType, key: string): number => {\n const value = Date.now();\n switch (save) {\n case 'session':\n sessionStorage.setItem(key, String(value));\n break;\n default:\n break;\n }\n return value;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nimport { IUseRemainingTimeParams, IUseRemainingTimeReturn } from './useRemainingTime.type';\nimport { calcRefreshTime, getRefreshDateValue, setRefreshDateValue } from './useRemainingTime.utils';\n\n/**\n * @description хук для вычисления оставшегося времени\n * @param params\n * @param params.key - по этому ключу сохраняется значение времени от которого ведется исчисление\n * @param params.save - место куда сохраняется значение времени\n * @param params.delay - время задержки, т.е. то время которое будет отсчитываться до конца\n */\nconst useRemainingTime = (params: IUseRemainingTimeParams): IUseRemainingTimeReturn => {\n const { key, save = 'session', delay } = params;\n // устанавливаем время\n const [time, setTime] = useState(calcRefreshTime(getRefreshDateValue(save, key), delay));\n const timerRef = useRef(null);\n\n /**\n * @description обновляем время отсчета и устанавливаем оставшиеся время\n */\n const setTimer = () => {\n const refreshDate = setRefreshDateValue(save, key);\n setTime(calcRefreshTime(refreshDate, delay));\n };\n\n /**\n * @description обновляем значение оставшегося времени каждую секунда\n */\n useEffect(() => {\n if (key) {\n timerRef.current = setInterval(() => {\n const refreshDate = getRefreshDateValue(save, key);\n setTime(calcRefreshTime(refreshDate, delay));\n }, 1000);\n }\n\n return () => {\n if (timerRef.current) {\n clearInterval(timerRef.current);\n }\n };\n }, [key, delay]);\n\n return { time, setTimer };\n};\n\nexport default useRemainingTime;\n","import { useState } from 'react';\nimport * as Sentry from '@sentry/react';\nimport { fetchLogout } from 'store/actions/auth';\nimport { useAppDispatch } from 'store/store';\n/** */\nexport const useLogout = (): { logout: () => void; isLogoutLoading: boolean } => {\n const [isLogoutLoading, setLogoutLoading] = useState(false);\n const dispatch = useAppDispatch();\n /** */\n const logout = () => {\n setLogoutLoading(true);\n dispatch(fetchLogout()).finally(() => {\n setLogoutLoading(false);\n Sentry.setUser(null);\n window?.$chatwoot?.reset();\n window.open(`${process.env.REACT_APP_SSO_CLIENT}/?return=${window.location.origin}`, '_self');\n });\n };\n\n return { logout, isLogoutLoading };\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getAcademicYear } from 'api/services/academicYear';\n\nexport const getAcademicYearAction = createAsyncThunk('academic-year', async () => {\n return await getAcademicYear();\n});\n","import { getApiRequest } from 'api';\n\nexport interface AcademicYear {\n id: number;\n title: string;\n isCurrent: boolean;\n}\n\nexport const getAcademicYear = (): Promise => {\n return getApiRequest(`/academic-year/`);\n};\n","import { Dayjs } from 'dayjs';\nimport moment from 'moment';\n\nexport const getCurrentTime = (format?: string): string => {\n const offset = new Date().getTimezoneOffset();\n const timezone = -offset / 60;\n\n return moment()\n .utcOffset(timezone)\n .format(format || 'HH:mm');\n};\nexport const getCurrentTimeByMoscow = (format?: string): string => {\n const moscow_offset = 3 * 60;\n\n return moment()\n .utcOffset(moscow_offset)\n .format(format || 'HH:mm');\n};\n\nexport const getCurrenData = (format: 'DD MMMM YYYY' | 'YYYY-MM-DD'): string => {\n const offset = new Date().getTimezoneOffset();\n const timezone = -offset / 60;\n\n return moment().utcOffset(timezone).format(format);\n};\n\nexport const getCurrentDateByMoscow = (): string => {\n const moscow_offset = 3 * 60;\n\n return moment().utcOffset(moscow_offset).toISOString();\n};\n\nexport const getCurrentDay = (date: string): string => {\n return moment(date).format('DD MMMM YYYY');\n};\n\nexport const getCorrectDateFromDayjs = (date: Dayjs, format: 'DD MMMM YYYY' | 'YYYY-MM-DD'): string => {\n return moment(`${date}`).format(format);\n};\n\nexport const isTimeExpired = (timeEnd: string): boolean => {\n const offset = new Date().getTimezoneOffset();\n const timezone = -offset / 60;\n\n const currentDate = moment().utcOffset(timezone);\n const dateToCheck = moment(timeEnd).utcOffset(timezone);\n\n return dateToCheck.isBefore(currentDate);\n};\n\nexport const isValidInterval = (timeStart: string, timeEnd: string): boolean => {\n const start = moment(timeStart);\n const end = moment(timeEnd);\n\n return end.isSameOrAfter(start);\n};\n","import { createAction } from '@reduxjs/toolkit';\n\nexport const clearError = createAction('error/clear', () => {\n return { payload: undefined };\n});\nexport const setError = createAction('error/set', (message: string) => {\n return { payload: message };\n});\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport * as Sentry from '@sentry/react';\n\nexport const useErrorProcess = (error?: string | number | null): void => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (typeof error === 'string') {\n Sentry.captureException(error);\n }\n }, [error, dispatch]);\n};\n","import { getApiRequest } from 'api';\nimport { Student } from 'types/students';\nimport { User } from 'types/user';\n\nexport interface StudentGroupResponse {\n id: number;\n title: string;\n students: Student[];\n curators: User[];\n educationalPlan: number;\n}\n\nexport const getStudentGroups = (): Promise => {\n return getApiRequest('/student-group/');\n};\n","import { getApiRequest, patchApiRequest } from 'api';\nimport { StaffProfile } from 'types/staffProfile';\nimport { UserRoles } from 'types/user';\n\nexport type UpdateStaffProfileData = {\n subjectIds: number[];\n about: string;\n specialization: string[];\n currentPosition: string[];\n education: string[];\n achievements: string[];\n upProfessional: string[];\n};\n\nexport const getStaffProfiles = async (params: {\n userRole?: UserRoles;\n subjects?: number[];\n}): Promise => {\n return await getApiRequest('/staff-profile/', {\n params: {\n user_role: params.userRole,\n subject: params.subjects?.join(','),\n },\n });\n};\n\nexport const updateStaffProfile = async (params: {\n data: UpdateStaffProfileData;\n staffProfileId: number;\n}): Promise => {\n return await patchApiRequest(`/staff-profile/partial-update/${params.staffProfileId}/`, params.data);\n};\n\nexport const getStaffProfileById = async (staffProfileId: number): Promise => {\n return await getApiRequest(`/staff-profile/${staffProfileId}/`);\n};\n","import { TNormalizedQuestion } from 'src-new/components/lesson-task';\n\nexport const getEmptyQuestion = (number?: number): TNormalizedQuestion => {\n return {\n questionNumber: number ?? 1,\n questionsCount: 0,\n searchBlocksCount: 0,\n };\n};\n","import { getQuestionsByQuery } from 'api/services/lessonTask';\nimport { Status } from 'pages/QuestionBankPage/types';\nimport { TAssignedQuestions, TResponseQuestion, TSearchBlockGet } from 'types/lessonTask';\n\nimport { createUrlQuery } from 'utils/createUrlQuery';\n\nexport const getGroupedTasks = async (\n taskData: TSearchBlockGet[],\n allSingleQuestionsList: TResponseQuestion[],\n): Promise => {\n const assignedQuestionsList: TAssignedQuestions = {};\n\n const questionNumbersList = Array.from(new Set(taskData.map((item) => item.questionNumber)));\n\n for (const num of questionNumbersList) {\n // все вопросы, относящиеся к данному номеру в задании\n const currentNumItems = taskData.filter(({ questionNumber }) => questionNumber === num);\n\n const singleQuestionsList = currentNumItems.map((item) => {\n const { filters, single } = item;\n if (single) {\n return {\n ...item,\n questionContent: allSingleQuestionsList.find(({ id }) => id === filters.id),\n };\n }\n });\n const searchBlocksList = await Promise.all(\n currentNumItems.map(async (item) => {\n const { filters, single } = item;\n const { topics, text, difficulty, answersType, skillsAnd, skillsOr, excludeIds } = filters;\n\n if (!single) {\n const filtersQuery = createUrlQuery({\n topics: topics,\n text: text,\n difficulty: difficulty,\n answers_type: answersType,\n skills_and: skillsAnd,\n skills_or: skillsOr,\n // exclude_ids: excludeIds,\n status: Status.Published,\n all_user_questions: 'true',\n });\n const content = await getQuestionsByQuery(filtersQuery);\n\n return {\n ...item,\n questionsContentList: content\n .filter((item) => item)\n .map((content) => {\n return {\n ...item,\n questionContent: content,\n };\n }),\n };\n }\n }),\n );\n\n assignedQuestionsList[num] = {\n // @ts-ignore\n singleQuestionsList: singleQuestionsList.filter((item) => !!item),\n // @ts-ignore\n searchBlocksList: searchBlocksList.filter((item) => !!item),\n };\n }\n return assignedQuestionsList;\n};\n","import React from 'react';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { CodifierSkillsResponseData } from 'api/services/codifier';\nimport {\n TGetInitialFilters,\n TGetInitialFiltersProps,\n TQuestionComplicity,\n TQuestionDifficultyField,\n TQuestionSkill,\n TQuestionTypes,\n TQuestionTypesField,\n} from 'src-new/components/lesson-task';\nimport { E_COMPLEXITY_OPTIONS, E_QUESTION_TYPE } from 'src-new/constants';\nimport { TCodifierSubjectData } from 'types/lessonTask';\n\nconst getCurrentTreeBranch = (params: { topicsIds?: number[]; tree?: TCodifierSubjectData[] }) => {\n const { topicsIds, tree } = params;\n\n if (topicsIds && tree) {\n return tree?.find((item) =>\n item.parallels?.find((parallel) =>\n parallel?.sections?.find((section) =>\n section?.blocks?.find((block) => block?.topics?.find((topic) => topicsIds.includes(topic.id))),\n ),\n ),\n );\n }\n return undefined;\n};\nconst getTopicsValues = (params: { topicsIds?: number[]; tree?: TCodifierSubjectData }) => {\n const { topicsIds, tree } = params;\n const topicsValues = [] as string[];\n\n if (topicsIds && tree) {\n const parallels = tree?.parallels ?? [];\n\n parallels.forEach((parallel) =>\n parallel.sections?.forEach((section) =>\n section.blocks?.forEach((block) =>\n block.topics?.forEach(({ id, title }) => {\n if (topicsIds.includes(id)) {\n topicsValues.push(`parallel${parallel.id}-section${section.id}-block${block.id}-${id}`);\n }\n }),\n ),\n ),\n );\n }\n\n return topicsValues;\n};\nconst getSkillsValues = (params: { skillsList: number[]; tree?: CodifierSkillsResponseData[] }) => {\n const { skillsList, tree } = params;\n const skillsValues = [] as string[];\n\n if (!isEmptyList(skillsList) && tree) {\n tree?.forEach((subject) =>\n subject.parallels?.forEach((parallel) =>\n parallel.metasubjects?.forEach((metasubject) =>\n metasubject.skills?.forEach(({ id }) => {\n if (skillsList.includes(id)) {\n skillsValues.push(\n `subject${subject.id}-parallel${parallel.id}-metasubject${metasubject.id}-${id}`,\n );\n }\n }),\n ),\n ),\n );\n }\n\n return skillsValues;\n};\nconst getComplicityValues = (list?: TQuestionDifficultyField[]) => {\n if (list && !isEmptyList(list)) {\n return list.map((item) => E_COMPLEXITY_OPTIONS[item as TQuestionDifficultyField]);\n }\n return Object.values(E_COMPLEXITY_OPTIONS) as TQuestionComplicity[];\n};\nconst getAnswerTypesValues = (list?: TQuestionTypesField[], isShowEssayOption?: boolean) => {\n if (list && !isEmptyList(list)) {\n return list.map((item) => E_QUESTION_TYPE[item as TQuestionTypesField]);\n }\n\n return isShowEssayOption\n ? (Object.values(E_QUESTION_TYPE) as TQuestionTypes[])\n : (Object.values(E_QUESTION_TYPE) as TQuestionTypes[]).filter((item) => item !== E_QUESTION_TYPE.essay);\n};\n\nexport const getInitialFilters = (props: TGetInitialFiltersProps): TGetInitialFilters => {\n const { filters, tree, codifierSkillsData, isShowEssayOption } = props;\n const { text, topics, difficulty, answersType, skillsOr, skillsAnd } = filters;\n\n const data = getCurrentTreeBranch({ topicsIds: topics, tree });\n\n const topicsValues = getTopicsValues({ topicsIds: topics, tree: data });\n const skillsValues = getSkillsValues({ skillsList: skillsOr ?? skillsAnd ?? [], tree: codifierSkillsData });\n const complicityValues = getComplicityValues(difficulty);\n const answersTypeValue = getAnswerTypesValues(answersType, isShowEssayOption);\n const skillsUnionTypeValue: TQuestionSkill = skillsAnd ? 'Любой из нижеперечисленных' : 'Все';\n\n return {\n topicsValues: topicsValues,\n skillsValues: skillsValues,\n complicityValues,\n answersTypeValue,\n skillsUnionTypeValue,\n textValue: text ?? '',\n subjectId: data?.id ?? 0,\n };\n};\n","import { TAssignedQuestions, TQuestionItemRequest } from 'types/lessonTask';\n\nexport const getMappedQuestions = (questionsList: TAssignedQuestions): TQuestionItemRequest[] => {\n return Object.values(questionsList).flatMap(({ singleQuestionsList, searchBlocksList }) => [\n ...(singleQuestionsList\n ? singleQuestionsList?.map((item) => {\n const { assignment, questionNumber, id, filters, questionContent, single } = item;\n return {\n id: single ? id : questionContent?.id,\n assignment,\n questionNumber,\n filters: {\n text: undefined,\n topics: [],\n difficulty: [],\n answersType: [],\n skillsOr: [],\n skillsAnd: [],\n excludeIds: [],\n id: single ? filters.id : questionContent?.id,\n },\n };\n })\n : []),\n ...(searchBlocksList\n ? searchBlocksList?.map((item) => {\n const { assignment, questionNumber, id, filters } = item;\n\n return {\n id,\n assignment,\n questionNumber,\n filters,\n };\n })\n : []),\n ]);\n};\n","import {\n AssignmentLevels,\n AssignmentType,\n ExecutionTimes,\n VerificationTypes,\n} from 'src-new/components/lesson-task/LessonTaskPage.types';\nimport { ASSIGNMENT_LEVELS_MAPPING, EXECUTION_TIMES_MAPPING, VERIFICATION_TYPE_MAPPING } from 'src-new/constants';\n\nconst transformExecutionTime = (props: ExecutionTimes[]): string =>\n props.map((time) => EXECUTION_TIMES_MAPPING[time] || '')?.join(', ');\n\nconst transformAssignmentLevels = (level?: AssignmentLevels): string => (level ? ASSIGNMENT_LEVELS_MAPPING[level] : '');\n\nconst transformVerificationType = (props: VerificationTypes[]): string =>\n props.map((type) => VERIFICATION_TYPE_MAPPING[type] || '')?.join(', ');\n\nexport const getQuestionDetails = (\n currentAssignment: AssignmentType | undefined,\n): { title: string; description: string }[] => {\n return [\n {\n title: 'Тип проверки задания: ',\n description: transformVerificationType(currentAssignment?.verificationType ?? []),\n },\n {\n title: 'Время выполнения задания: ',\n description: transformExecutionTime(currentAssignment?.executionTime ?? []),\n },\n {\n title: 'Кол-во попыток выполнения задания: ',\n description: currentAssignment?.attemptsQuantity\n ? currentAssignment?.attemptsQuantity === 1\n ? '1'\n : 'неограниченно'\n : '',\n },\n {\n title: 'Вес: ',\n description: `${currentAssignment?.weight ?? ''}`,\n },\n {\n title: 'Уровень задания: ',\n description: transformAssignmentLevels(currentAssignment?.assignmentLevel),\n },\n {\n title: currentAssignment?.isMandatory ? 'Задание обязательно к выполнению' : '',\n description: '',\n },\n ];\n};\n","import { QueryParams } from 'types/lessonTask';\n\nexport const isFiltersUpdated = (first: QueryParams, second: QueryParams, considerExcludedIds = false): boolean => {\n return (\n (first?.excludeIds?.join() !== second?.excludeIds?.join() && considerExcludedIds) ||\n first?.answersType?.join() !== second?.answersType?.join() ||\n first?.difficulty?.join() !== second?.difficulty?.join() ||\n first?.text !== second?.text ||\n first?.topics?.join() !== second?.topics?.join() ||\n first?.skillsAnd?.join() !== second?.skillsAnd?.join() ||\n first?.skillsOr?.join() !== second?.skillsOr?.join()\n );\n};\nexport const isFiltersEqual = (first: QueryParams, second: QueryParams): boolean => {\n return (\n first?.answersType?.join() === second?.answersType?.join() &&\n first?.difficulty?.join() === second?.difficulty?.join() &&\n first?.text === second?.text &&\n first?.topics?.join() === second?.topics?.join() &&\n first?.skillsAnd?.join() === second?.skillsAnd?.join() &&\n first?.skillsOr?.join() === second?.skillsOr?.join()\n );\n};\n","import { TQuestionItemRequest } from 'types/lessonTask';\n\nimport { isFiltersUpdated } from './isFiltersUpdated';\n\ntype TGetUpdatedQuestions = Omit & {\n id: number;\n};\nexport const getUpdatedQuestions = (\n newList: TQuestionItemRequest[],\n oldList: TQuestionItemRequest[],\n): TGetUpdatedQuestions[] => {\n const list = newList\n ?.filter(({ id }) => !!id && !!oldList.find((item) => item.id === id))\n ?.map((newItem) => {\n const oldItem = oldList\n .filter(({ id }) => !!id)\n .find(({ id, questionNumber }) => id === newItem.id && questionNumber === newItem.questionNumber);\n\n const oldItemsByNumber = oldList.filter(\n ({ id, questionNumber }) => !!id && questionNumber === newItem.questionNumber,\n );\n\n const isUpdatedNumber = !oldItemsByNumber.map((item) => item.id).includes(newItem.id);\n\n const isUpdatedFilters =\n oldItem && newItem ? isFiltersUpdated(newItem.filters, oldItem.filters, true) : false;\n if (isUpdatedFilters || isUpdatedNumber) {\n return newItem;\n }\n });\n\n //@ts-ignore\n return list.filter(Boolean).sort((a, b) => a.questionNumber - b.questionNumber);\n};\n","import { TBlockParam, TQuestionItemRequest } from 'types/lessonTask';\n\nexport const normalizeQuestionsOrder = (questions: TQuestionItemRequest[]): TQuestionItemRequest[] => {\n const normalizedList: TBlockParam[] = [];\n\n questions\n .sort((a, b) => a.questionNumber - b.questionNumber)\n .forEach((item, index) => {\n if (index) {\n const diff = item.questionNumber - questions[index - 1].questionNumber;\n const prevNum = normalizedList[index - 1].questionNumber;\n normalizedList.push({\n ...item,\n questionNumber: diff ? prevNum + 1 : prevNum,\n });\n } else if (item.questionNumber !== 1) {\n normalizedList.push({\n ...item,\n questionNumber: 1,\n });\n } else {\n normalizedList.push({ ...item });\n }\n });\n\n return normalizedList;\n};\n","import { TAssignedQuestion, TAssignedQuestions, TSearchBlock, TSingleQuestion } from 'types/lessonTask';\n\nexport const deleteTask = (position: number, currentState?: TAssignedQuestions): TAssignedQuestions | undefined => {\n if (currentState) {\n // @ts-ignore\n const newList: TAssignedQuestion[] = Object.values(currentState)\n .map((assignment, index) => {\n if (position !== index + 1) {\n return assignment;\n }\n })\n .filter(Boolean);\n\n const newVal: TAssignedQuestions = {};\n\n newList?.forEach((item, index) => {\n newVal[index + 1] = item;\n });\n\n return newVal;\n }\n return undefined;\n};\nexport const addTask = (params: {\n position: number;\n task: TAssignedQuestion;\n currentState?: TAssignedQuestions;\n}): TAssignedQuestions => {\n const { position, task, currentState } = params;\n return currentState && Object.values(currentState).length\n ? {\n ...currentState,\n [position]: task,\n }\n : position === 1\n ? { [position]: task }\n : { 1: task, [position]: task };\n};\n\nexport const addSingleQuestion = (params: {\n position: number;\n question: TSingleQuestion;\n currentState?: TAssignedQuestions;\n}): TAssignedQuestions => {\n const { position, question, currentState } = params;\n\n return currentState\n ? {\n ...currentState,\n [position]: {\n ...currentState?.[position],\n singleQuestionsList: [question, ...(currentState?.[position]?.singleQuestionsList ?? [])],\n } as TAssignedQuestion,\n }\n : {\n [position]: {\n singleQuestionsList: [question],\n } as TAssignedQuestion,\n };\n};\n\nexport const addQuestionsBlock = (params: {\n position: number;\n blockPosition: number;\n block: TSearchBlock;\n currentState: TAssignedQuestions;\n}): TAssignedQuestions => {\n const { position, blockPosition, block, currentState } = params;\n\n return {\n ...currentState,\n [position]: {\n ...currentState[position],\n searchBlocksList: [\n ...currentState[position]?.searchBlocksList?.slice(0, blockPosition - 1),\n block,\n ...currentState[position]?.searchBlocksList.slice(blockPosition),\n ],\n },\n };\n};\n\nexport const deleteQuestionsBlock = (params: {\n position: number;\n blockPosition: number;\n currentState: TAssignedQuestions;\n}): TAssignedQuestions => {\n const { position, blockPosition, currentState } = params;\n\n return {\n ...currentState,\n [position]: {\n ...currentState[position],\n searchBlocksList: [\n ...currentState[position]?.searchBlocksList?.slice(0, blockPosition - 1),\n ...currentState[position]?.searchBlocksList.slice(blockPosition),\n ],\n },\n };\n};\n","import { isFiltersEqual, isFiltersUpdated } from 'src-new/components/lesson-task';\nimport { setMessage } from 'src-new/utils/message';\nimport { TAssignedQuestion, TSearchBlock, TSingleQuestion } from 'types/lessonTask';\n\ntype TTransferSingleQuestionProps = {\n fromObject: TAssignedQuestion;\n toObject: TAssignedQuestion;\n item: TSingleQuestion;\n};\ntype TTransferQuestionsBlockProps = {\n fromObject: TAssignedQuestion;\n toObject: TAssignedQuestion;\n item: TSearchBlock;\n};\n\ntype TTransferSingleQuestionResult = {\n filteredObject: TAssignedQuestion | undefined;\n updatedObject: TAssignedQuestion | undefined;\n};\n\n// Утилы для переноса вопроса или блока вопросов\nexport const transferSingleQuestion = (data: TTransferSingleQuestionProps): TTransferSingleQuestionResult => {\n const { fromObject, toObject, item } = data;\n\n const isAlreadyExist = toObject?.singleQuestionsList?.find(({ id }) => id === item.id);\n const isFromSearchBlock = !!item.filters.topics.length;\n // одиночные вопросы можно перетащить только вправо,\n // если это не одиночный вопрос, который перетащили из блока вопросов\n if (!isAlreadyExist) {\n const filteredObject = {\n ...fromObject,\n singleQuestionsList:\n fromObject?.singleQuestionsList?.filter(\n ({ questionContent }) => questionContent?.id !== item?.questionContent?.id,\n ) ?? [],\n };\n const updatedObject = isFromSearchBlock\n ? {\n ...toObject,\n searchBlocksList: toObject?.searchBlocksList?.map((block) => {\n if (!isFiltersUpdated(block.filters, item.filters)) {\n return {\n ...block,\n questionsContentList: [item, ...block.questionsContentList],\n };\n }\n return block;\n }),\n }\n : {\n ...toObject,\n singleQuestionsList: [item, ...toObject.singleQuestionsList],\n };\n\n return {\n filteredObject,\n updatedObject,\n };\n }\n return {\n filteredObject: undefined,\n updatedObject: undefined,\n };\n};\n\nexport const transferSingleQuestionFromBlock = (data: TTransferSingleQuestionProps): TTransferSingleQuestionResult => {\n const { fromObject, toObject, item } = data;\n\n const isAlreadyExist = toObject?.singleQuestionsList?.find(\n ({ questionContent }) => questionContent?.id === item?.questionContent?.id,\n );\n\n if (!isAlreadyExist) {\n const filteredObject = {\n ...fromObject,\n searchBlocksList: fromObject?.searchBlocksList.map((block) => {\n if (block.id === item.id) {\n return {\n ...block,\n questionsContentList: block.questionsContentList.filter(\n ({ questionContent }) => questionContent?.id !== item.questionContent?.id,\n ),\n };\n }\n return block;\n }),\n };\n const updatedObject = {\n ...toObject,\n singleQuestionsList: toObject?.singleQuestionsList?.length\n ? [item, ...toObject.singleQuestionsList]\n : [item],\n };\n\n return {\n filteredObject,\n updatedObject,\n };\n }\n return {\n filteredObject: undefined,\n updatedObject: undefined,\n };\n};\n\nexport const transferQuestionsBlock = (data: TTransferQuestionsBlockProps): TTransferSingleQuestionResult => {\n const { fromObject, toObject, item } = data;\n\n const isBlockAlreadyExist = toObject?.searchBlocksList?.some(({ filters }) =>\n isFiltersEqual(filters, item.filters),\n );\n\n if (!isBlockAlreadyExist) {\n const deletedBlockIndex = fromObject?.searchBlocksList?.findIndex(({ filters }) =>\n isFiltersEqual(filters, item.filters),\n );\n\n const filteredObject = {\n ...fromObject,\n searchBlocksList: deletedBlockIndex\n ? [\n ...fromObject?.searchBlocksList.slice(0, deletedBlockIndex),\n ...fromObject?.searchBlocksList.slice(deletedBlockIndex + 1),\n ]\n : [...fromObject?.searchBlocksList.slice(1, fromObject?.searchBlocksList.length)],\n };\n const updatedObject = {\n ...toObject,\n searchBlocksList: [item, ...(toObject?.searchBlocksList ?? [])],\n };\n\n return {\n filteredObject,\n updatedObject,\n };\n } else {\n setMessage({ text: 'Данный блок уже отобран в вопрос', status: 'warning' });\n return {\n filteredObject: undefined,\n updatedObject: undefined,\n };\n }\n};\n","import React, { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { cn } from '@bem-react/classname';\nimport { getUid, isListExist } from '@frontend-modules/frontend-utils';\nimport { AppFontIcon } from '@frontend-modules/ui-kit';\nimport { Dropdown, DropdownLabel, StatusLabelEnum } from '@lms-elements/atomic';\nimport { Expand, HwProcess, Passed } from '@lms-elements/icons';\nimport { E_COLORS } from 'src-new/constants';\nimport { patchStudentPresenceAction } from 'store/actions/attendance';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { AssignedHomeWork, AssignedTasks } from 'types/homework';\nimport { MarkData } from 'types/mark';\n\nimport { AttendanceMark } from 'components/AttendanceMark';\nimport { convertAttendanceStatus } from 'utils/convertAttandanceStatus';\nimport { getDateWithoutYear, getDateWithTime } from 'utils/date';\nimport { normalizePresenceValues } from 'utils/presence';\n\nimport './AssignedHomeworkLine.scss';\n\nconst CnAssignedHomeworkLine = cn('assignedHomeworkLine');\n\ninterface HomeworkLineProps {\n student: AssignedHomeWork;\n showCompletedTasks: boolean;\n showAssignedTasks: boolean;\n showOnCheckTasks: boolean;\n showDeferredAssignedTasks?: boolean;\n withAttendance?: boolean;\n editAttendance?: boolean;\n submitChangeMark?: (values: { selectedMark?: number; comment?: string; markId: number }[]) => void;\n onDeleteMark?: (id: number) => void;\n onHomeworkClick?: (taskId: number) => void;\n}\n\nexport const AssignedHomeworkLine: React.FC = ({\n student,\n showCompletedTasks,\n showAssignedTasks,\n showOnCheckTasks,\n showDeferredAssignedTasks,\n withAttendance = false,\n editAttendance = false,\n submitChangeMark,\n onDeleteMark,\n onHomeworkClick,\n}) => {\n const dispatch = useDispatch();\n\n const [openedMarksLists, setOpenedMarksLists] = useState([]);\n const handleExpandIconClick = (index: number) => {\n if (openedMarksLists?.includes(index)) {\n setOpenedMarksLists((prevState) => prevState?.filter((item) => item !== index));\n } else {\n setOpenedMarksLists((prevState) => [...prevState, index]);\n }\n };\n const getLatestMark = useCallback((marks?: MarkData[]): MarkData[] => {\n if (marks?.length) {\n return [\n marks.reduce((highestMark, currentMark) => {\n return highestMark.score && currentMark.score && highestMark.id > currentMark.id\n ? highestMark\n : currentMark;\n }),\n ];\n }\n return [];\n }, []);\n\n const getTaskInfo = (\n studentTask: AssignedTasks,\n isDeferredAssigned: boolean,\n hasDeferredAssignedErrors: boolean,\n ): string => {\n const startDate = studentTask?.assignedDate\n ? `${isDeferredAssigned ? 'Будет выдано:' : 'Выдано:'} ${getDateWithTime(studentTask?.assignedDate)}\\n`\n : '';\n const endDate = studentTask.deadlineForComplete\n ? `Cдать до: ${getDateWithTime(studentTask.deadlineForComplete)}\\n`\n : '';\n const timeToComplete = studentTask.timeToComplete\n ? `Время на выполнение (мин): ${\n studentTask.timeToComplete ? studentTask.timeToComplete : 'не ограничено'\n }\\n`\n : '';\n const teacherName = `${studentTask?.teacher?.lastName ?? ''} ${studentTask?.teacher?.firstName ?? ''} ${\n studentTask?.teacher?.patronymic ?? ''\n }`.trim();\n const teacher = `Преподаватель: ${teacherName ? teacherName : '-'}`;\n\n const errorList = hasDeferredAssignedErrors ? `\\nОшибки:\\n${studentTask?.errorsList?.join('\\n')}` : '';\n\n return `${startDate}${endDate}${timeToComplete}${teacher}${errorList}`;\n };\n\n const presenceSelectHandler = (id: number, values: { status: StatusLabelEnum; lateMinutes: number }) => {\n if (id) {\n const normalizedValues = normalizePresenceValues(values);\n dispatch(patchStudentPresenceAction({ id, values: normalizedValues }));\n }\n };\n return (\n <>\n {withAttendance && (\n \n {editAttendance\n ? student.status && (\n \n )\n : student.status && (\n \n )}\n \n )}\n {student.tasks.map((task, index) => {\n const isListOpened = openedMarksLists.includes(index);\n\n return (\n \n {task && (\n
\n {task.slice(0, isListOpened ? task.length : 2).map((studentTask) => {\n const isAssigned =\n studentTask?.status === AssignmentProgressStatus.ASSIGNED && showAssignedTasks;\n const isDeferredAssigned =\n studentTask?.status === AssignmentProgressStatus.DEFERRED_ASSIGNMENT &&\n showDeferredAssignedTasks;\n const isCompletedWithoutMarks =\n studentTask?.status === AssignmentProgressStatus.COMPLETED &&\n showCompletedTasks &&\n !studentTask?.marks?.length;\n const isOnCheck =\n studentTask?.status === AssignmentProgressStatus.ON_CHECK && showOnCheckTasks;\n const withMarks =\n studentTask?.status === AssignmentProgressStatus.COMPLETED &&\n showCompletedTasks &&\n (studentTask?.marks || []).length > 0;\n const hasDeferredAssignedErrors =\n isDeferredAssigned && isListExist(studentTask?.errorsList);\n\n const title = getTaskInfo(\n studentTask,\n !!isDeferredAssigned,\n !!hasDeferredAssignedErrors,\n );\n return (\n \n {(isAssigned ||\n isDeferredAssigned ||\n isCompletedWithoutMarks ||\n isOnCheck ||\n withMarks) && (\n <>\n \n {withMarks && (\n \n )}\n {isAssigned && }\n {isCompletedWithoutMarks && (\n \n )}\n {isOnCheck && showOnCheckTasks && }\n {isDeferredAssigned && showDeferredAssignedTasks && (\n \n )}\n
\n {isDeferredAssigned && studentTask?.assignedDate && (\n \n {getDateWithoutYear(studentTask?.assignedDate)}\n \n )}\n \n )}\n \n );\n })}\n 2,\n isOpened: isListOpened,\n })}\n onClick={handleExpandIconClick.bind(this, index)}\n />\n
\n )}\n \n );\n })}\n \n );\n};\n","import React, { Fragment, useCallback } from 'react';\nimport { Field } from 'react-final-form';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox, DropdownLabel, StatusLabelEnum } from '@lms-elements/atomic';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\nimport './HomeworkLine.scss';\n\ninterface HomeworkLineProps {\n name: string;\n onChange?: (data: { taskIndex: number; taskId: number; oldValue: boolean }) => void;\n repeatTask?: boolean;\n withAttendance?: boolean;\n status?: AttendanceStatus;\n needDisableCheckboxes?: boolean;\n}\n\nconst CnHomeworkLine = cn('homeworkLine');\n\nexport const HomeworkLine: React.FC = ({\n name,\n onChange,\n repeatTask,\n withAttendance,\n status,\n needDisableCheckboxes,\n}) => {\n const makeHandlerCheckboxChange = useCallback(\n (\n index: number,\n taskId: number,\n checked: boolean,\n handler: (e: React.ChangeEvent) => void,\n ): ((e: React.ChangeEvent) => void) => {\n return (e) => {\n if (onChange) {\n onChange({ taskIndex: index, taskId, oldValue: checked });\n }\n handler(e);\n };\n },\n [onChange],\n );\n\n return (\n <>\n {withAttendance && (\n \n {' '}\n {status && (\n \n )}\n \n )}\n \n {({ fields }) => {\n const fieldsValue = fields.value as {\n taskId?: number;\n blocked?: boolean;\n overdued?: boolean;\n repeatBlocked?: boolean;\n disabled?: boolean;\n }[];\n return fields.map((name, index) => {\n return (\n \n \n \n {({ input: { onChange, checked } }) => {\n const isDisabled =\n fieldsValue[index]?.disabled ||\n (!repeatTask && fieldsValue[index].blocked && !checked) ||\n (repeatTask && fieldsValue[index].repeatBlocked) ||\n needDisableCheckboxes;\n return (\n \n );\n }}\n \n \n \n );\n });\n }}\n \n \n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { FormRenderProps } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { Avatar } from '@lms-elements/atomic';\nimport { AssignmentProgress, Task } from 'types/homework';\nimport { Student } from 'types/students';\n\nimport { GroupAvatars } from 'components/GroupAvatars';\n\nimport { AssignedHomeworkLine } from './AssignedHomeWorkLine';\nimport { HomeworkLine } from './HomeworkLine';\nimport { getAssignedHomeworks } from './utils';\n\nimport './HomeworkTable.scss';\n\nconst CnHomeworkTable = cn('homeworkTable');\n\nexport interface HomeworkTableFormValues {\n selectAll: {\n taskId: number;\n checked: boolean;\n disabled: boolean;\n }[];\n students: {\n studentId: number;\n tasks: {\n taskId: number;\n checked: boolean;\n blocked?: boolean;\n repeatBlocked?: boolean;\n }[];\n }[];\n}\n\ninterface HomeworkTableProps {\n tasks: Task[];\n students: Student[];\n assignmentProgress?: AssignmentProgress[];\n hasSelectAllRow?: boolean;\n isEditForm?: boolean;\n formProps?: FormRenderProps>;\n showCompletedTasks?: boolean;\n showAssignedTasks?: boolean;\n showOnCheckTasks?: boolean;\n showDeferredAssignedTasks?: boolean;\n withAttendance?: boolean;\n submitChangeMark?: (values: { selectedMark?: number; comment?: string; markId: number }[]) => void;\n onDeleteMark?: (id: number) => void;\n onHomeworkClick?: (studentId: number, taskId: number) => void;\n onStudentClick?: (studentId: number) => void;\n repeatTask?: boolean;\n needDisableCheckboxes?: boolean;\n editAttendance?: boolean;\n}\n\nexport const HomeworkTable: React.FC = ({\n tasks,\n students,\n assignmentProgress,\n hasSelectAllRow,\n formProps,\n isEditForm = true,\n showCompletedTasks = true,\n showAssignedTasks = true,\n showOnCheckTasks = true,\n showDeferredAssignedTasks = true,\n withAttendance = false,\n editAttendance = false,\n submitChangeMark,\n onDeleteMark,\n onHomeworkClick,\n onStudentClick,\n repeatTask,\n needDisableCheckboxes,\n}) => {\n const isTaskSelected = useMemo(() => tasks.length > 0, [tasks]);\n\n const assignedHomeworks = useMemo(() => getAssignedHomeworks(students, tasks, assignmentProgress), [\n students,\n assignmentProgress,\n tasks,\n ]);\n\n const makeHandlerStudentCellClick = useCallback(\n (studentId: number) => {\n return () => {\n if (onStudentClick) {\n onStudentClick(studentId);\n }\n };\n },\n [onStudentClick],\n );\n\n const handleHomeworkClick = useCallback(\n (studentId: number, taskId: number) => {\n if (onHomeworkClick) {\n onHomeworkClick(studentId, taskId);\n }\n },\n [onHomeworkClick],\n );\n\n return (\n \n \n \n \n {withAttendance ? (\n <>\n \n {tasks.map((_, index) => (\n \n {isEditForm ? 'Выдача' : 'Статус'}\n \n ))}\n \n ) : (\n \n )}\n \n \n \n \n \n {!isTaskSelected && !withAttendance && (\n \n )}\n {withAttendance && }\n {tasks.map((task) => (\n \n
\n {task.isTemplate ? `Ш-${task.title}` : task.title}\n
\n \n ))}\n
\n {hasSelectAllRow && isEditForm && (\n \n \n status === undefined))\n }\n />\n \n )}\n {students?.map((student, index) => (\n \n \n \n \n {isEditForm && (\n \n )}\n {!isEditForm &&\n assignedHomeworks\n .filter((homework) => homework.studentId === student.id)\n .map((student) => (\n \n ))}\n \n ))}\n \n
Ученик\n Посещение\n \n Выдаем:\n
\n
Выберите задание в левой части экрана
\n
\n
\n {\n return student.photoUrl;\n })}\n />\n \n {withAttendance ? 'Выдать присутствующим' : 'Выдать всем'}\n \n
\n
\n );\n};\n","import { AssignedHomeWork, AssignedTasks, AssignmentProgress, Task } from 'types/homework';\nimport { Student } from 'types/students';\n\nexport const getAssignedHomeworks = (\n students: Student[],\n tasks: Task[],\n assignmentProgress?: AssignmentProgress[],\n): AssignedHomeWork[] => {\n return students.map((student) => {\n const studentHomeworks = assignmentProgress?.filter((task) => task.studentId === student.id) || [];\n const studentTasks = tasks.map((task) => {\n const assignedTasks = studentHomeworks\n .reduce((assignedTask, homework) => {\n if (homework.taskId === task.id) assignedTask.push(homework);\n return assignedTask;\n }, [] as AssignedTasks[])\n .sort((a, b) => a.id - b.id);\n if (assignedTasks.length > 0) {\n return assignedTasks;\n } else {\n return null;\n }\n });\n return {\n studentId: student.id,\n tasks: studentTasks || [],\n status: student.status,\n lateDuration: student.lateDuration,\n attendanceId: student?.attendanceId,\n };\n });\n};\n","/**\n * AssignmentProvider запросы связанные с выдачей заданий\n */\nimport { IAssignmentPeriodsResponse, IGetAssignmentPeriodsProps } from '@fsd-shared/models/assignment';\nimport { postApiRequest } from 'api';\n\nconst AssignmentProvider = {\n /**\n * @description Получение доступного периода для выдачи задания\n * @param params\n */\n getAssignmentPeriods: (params?: IGetAssignmentPeriodsProps): Promise => {\n return postApiRequest(`api/v2/course-group/assignment-period/`, params);\n },\n};\n\nexport { AssignmentProvider };\n","import { IGetAllAssignmentPeriodsProps, IGetAssignmentPeriodsProps } from '@fsd-shared/models/assignment';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { AssignmentProvider } from './assignment-api';\n\nexport const getAssignmentPeriodsAction = createAsyncThunk(\n 'assignment/getAssignmentPeriodsAction',\n async (props: IGetAssignmentPeriodsProps) => {\n return await AssignmentProvider.getAssignmentPeriods(props);\n },\n);\n\nexport const getAllAssignmentPeriodsAction = createAsyncThunk(\n 'assignment/getAllAssignmentPeriodsAction',\n async (props: IGetAllAssignmentPeriodsProps) => {\n const { courseGroup, assignments } = props;\n\n return await Promise.all(\n assignments.map(async (item) => {\n return {\n assignment: item,\n periodsData: await AssignmentProvider.getAssignmentPeriods({ courseGroup, assignment: item }),\n };\n }),\n );\n },\n);\n","import { IAssignmentPeriodsResponse } from '@fsd-shared/models/assignment';\nimport { createSlice } from '@reduxjs/toolkit';\nimport { FetchStatus } from 'types/api';\n\nimport { getAllAssignmentPeriodsAction, getAssignmentPeriodsAction } from './assignment-actions';\n\nexport interface IAssignmentState {\n assignmentPeriods?: {\n assignment: number;\n periodsData: IAssignmentPeriodsResponse;\n }[];\n periodsData?: IAssignmentPeriodsResponse;\n gettingPeriodsDataStatus: FetchStatus;\n}\n\nconst initialState: IAssignmentState = {\n gettingPeriodsDataStatus: FetchStatus.INITIAL,\n};\n\nconst assignmentSlice = createSlice({\n name: 'assignment',\n initialState,\n reducers: {},\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {\n builder\n .addCase(getAllAssignmentPeriodsAction.pending, (state) => {\n state.gettingPeriodsDataStatus = FetchStatus.FETCHING;\n state.assignmentPeriods = undefined;\n })\n .addCase(getAllAssignmentPeriodsAction.fulfilled, (state, { payload }) => {\n state.gettingPeriodsDataStatus = FetchStatus.FETCHED;\n state.assignmentPeriods = payload;\n })\n .addCase(getAllAssignmentPeriodsAction.rejected, (state, { error }) => {\n state.gettingPeriodsDataStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getAssignmentPeriodsAction.pending, (state) => {\n state.gettingPeriodsDataStatus = FetchStatus.FETCHING;\n state.periodsData = undefined;\n })\n .addCase(getAssignmentPeriodsAction.fulfilled, (state, { payload }) => {\n state.gettingPeriodsDataStatus = FetchStatus.FETCHED;\n state.periodsData = payload;\n })\n .addCase(getAssignmentPeriodsAction.rejected, (state, { error }) => {\n state.gettingPeriodsDataStatus = FetchStatus.ERROR;\n });\n },\n});\n\n// export const {} = assignmentSlice.actions;\n\nexport const assignmentReducer = assignmentSlice.reducer;\n","import { getApiRequest } from 'api';\n\ninterface IOnlineLessonLink {\n link: string;\n block: boolean;\n}\n\nexport const onlineLessonsProvider = {\n getOnlineLessonLink: (url: string): Promise => {\n return getApiRequest(url);\n },\n};\n","import { TMeetingNotificationData } from '@fsd-widgets/online-lesson-notifications';\nimport { createSlice } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\nexport interface IOLState {\n meetingNotificationsList?: TMeetingNotificationData[];\n collapsedNotificationsList: string[];\n}\n\nconst initialState: IOLState = {\n collapsedNotificationsList: [],\n};\n\nconst onlineLessonSlice = createSlice({\n name: 'onlineLesson',\n initialState,\n reducers: {\n setMeetingNotificationsList: (state, { payload }: { payload: TMeetingNotificationData[] }) => {\n state.meetingNotificationsList = payload?.filter(({ datetimeEnd }) => {\n return dayjs().isBefore(dayjs(datetimeEnd));\n });\n },\n deleteNotificationFromListByUrl: (state, { payload }: { payload: { url: string } }) => {\n state.meetingNotificationsList = state.meetingNotificationsList?.filter(({ url }) => url !== payload.url);\n },\n setCollapsedNotificationsList: (state, { payload }: { payload: string[] }) => {\n state.collapsedNotificationsList = payload;\n },\n },\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {},\n});\nexport const {\n setMeetingNotificationsList,\n deleteNotificationFromListByUrl,\n setCollapsedNotificationsList,\n} = onlineLessonSlice.actions;\n\nexport const onlineLessonsReducer = onlineLessonSlice.reducer;\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getAdaptationProgress } from 'api/services/adaptationProgress';\n\nexport const getAdaptationProgressAction = createAsyncThunk('adaptationProgress/getAdaptationProgress', async () => {\n return await getAdaptationProgress();\n});\n","import { getApiRequest } from 'api';\nimport { AdaptationStudent } from 'types/students';\n\nexport const getAdaptationProgress = (): Promise => getApiRequest(`/adaptation-progress/`);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getParallels } from 'api/services/edu';\n\nexport const getParallelsAction = createAsyncThunk('edu/getParallels', () => getParallels());\n","import { getApiRequest } from 'api';\nimport { Parallel } from 'types/parallel';\n\nexport const getParallels = (): Promise => getApiRequest(`/edu/parallel/`);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getStudentGroups } from 'api/services/studentGroups';\n\nexport const getStudentGroupsAction = createAsyncThunk('studentGroups/getStudentGroups', () => {\n return getStudentGroups();\n});\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { DeferredHomeworkIcon, HwProcess, Passed } from '@lms-elements/icons';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\n\nimport { AttendanceMark } from 'components/AttendanceMark';\nimport { checkOverdue, getDateWithTime, getTimeAfterDate, getTimeBeforeDate } from 'utils/date';\n\nimport { IStatusCardProps } from './StatusCard.types';\n\nimport './StatusCard.scss';\n\nconst CnInfoStatus = cn('infoStatus');\n\nexport const StatusCard: React.FC = ({\n id,\n title,\n passed = '',\n isPassed,\n marks,\n onMarkDelete,\n onMarkAdd,\n onMarkChange,\n isSelected = false,\n deadline = '',\n onCardClick,\n isStudent,\n onCancel,\n completed,\n onAcademicPerfomance,\n status,\n assignedDate = '',\n extraInfo,\n showStatusLabel = true,\n}) => {\n const needMainTitle = title?.includes('основное');\n const overdued = useMemo(() => checkOverdue(deadline), [deadline]);\n const showOverdued = showStatusLabel && overdued;\n const checked = completed && Boolean(marks?.length);\n\n const handleCardClick = useCallback(() => {\n if (onCardClick) {\n onCardClick(id);\n }\n }, [onCardClick, id]);\n\n const statusLabel = useMemo(() => {\n if (!checked && passed) {\n const timePassed = getDateWithTime(passed);\n return `Сдал ${timePassed}`;\n }\n\n if (!checked && overdued) {\n const overdueTime = getTimeAfterDate(deadline);\n return `Просрочено на ${overdueTime}`;\n }\n\n if (!checked) {\n const beforeDeadlineTime = getTimeBeforeDate(deadline);\n return `До сдачи ${beforeDeadlineTime}`;\n }\n\n return '';\n }, [passed, checked, overdued, deadline, showStatusLabel]);\n\n const handleCreateMarkSubmit = useCallback(\n (marks: { selectedMark?: number; comment?: string }[]) => {\n onMarkAdd?.(\n marks.map((mark) => ({\n score: mark.selectedMark,\n comment: mark.comment,\n assignmentProgress: id,\n })),\n );\n },\n [id, onMarkAdd],\n );\n\n const handleChangeMarkSubmit = useCallback(\n (\n newMarks: {\n selectedMark?: number;\n comment?: string;\n markId: number;\n valueCanChange?: boolean;\n teacherMark?: boolean;\n attemptMarkNumber?: number;\n }[],\n ) => {\n onMarkChange?.(\n newMarks.map((mark) => ({\n id: Number(mark.markId),\n score: mark.selectedMark,\n comment: mark.comment,\n valueCanChange: mark.valueCanChange,\n teacherMark: mark.teacherMark,\n attemptMarkNumber: mark.attemptMarkNumber,\n })),\n );\n },\n [onMarkChange],\n );\n\n const statusCardRef = useRef(null);\n\n useEffect(() => {\n if (statusCardRef.current) {\n statusCardRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [isSelected]);\n\n return (\n \n {needMainTitle &&
Выданые
}\n \n {title}\n \n {extraInfo && (\n
\n {extraInfo?.IconElement}\n {extraInfo?.label}\n
\n )}\n
\n
\n {checked && marks ? (\n \n ) : isPassed ? (\n \n ) : status === AssignmentProgressStatus.DEFERRED_ASSIGNMENT ? (\n \n \n
\n ) : (\n
\n {!!showStatusLabel && }\n
\n )}\n
\n {statusLabel && showStatusLabel &&
{statusLabel}
}\n \n \n );\n};\n","import React, { useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Task } from '@lms-elements/icons';\nimport i18next from 'i18next';\n\nimport './HomeworkStatus.scss';\n\nconst CnHomeworkStatus = cn('homeworkStatus');\n\nexport interface HomeworkStatusProps {\n id: number;\n status: 'auto' | 'notAuto' | 'homework' | 'notHomework';\n autoIssue: boolean;\n autoIssueTime: string;\n autoIssuetasks: number;\n autoIssueSetUp: boolean;\n givenHometaskTitle: string;\n autoIssuetotalTasks: number;\n passOffTasks: number;\n toCheckTasks: number;\n withoutBorder?: boolean;\n isStudent?: boolean;\n}\n\nexport const HomeworkStatus: React.FC = ({\n id,\n status,\n autoIssue,\n autoIssueSetUp,\n autoIssuetotalTasks,\n autoIssuetasks,\n givenHometaskTitle,\n passOffTasks,\n toCheckTasks,\n withoutBorder,\n isStudent,\n}) => {\n const title = useMemo(() => autoIssue || !givenHometaskTitle, [autoIssue, givenHometaskTitle]);\n\n const titleInfo = useMemo(() => {\n if (isStudent && !autoIssue) {\n return 'нет заданий';\n }\n if (isStudent && autoIssueSetUp) {\n return `Автовыдача ${i18next.t('assignedTask', { count: autoIssuetasks })}`;\n }\n if (autoIssue && !autoIssueSetUp) {\n return 'Автовыдача не настроена';\n }\n if (autoIssue && autoIssueSetUp) {\n return `Автовыдача для ${autoIssuetasks} из ${autoIssuetotalTasks} заданий`;\n }\n\n return 'ДЗ не было выдано';\n }, [autoIssuetasks, autoIssueSetUp, autoIssuetotalTasks, autoIssue, isStudent]);\n\n return (\n
\n
\n \n
\n
\n {title &&
{titleInfo}
}\n {Boolean(givenHometaskTitle) && (\n
    \n
  • {`задано: ${givenHometaskTitle}`}
  • \n {Boolean(passOffTasks) &&
  • {`сдано: ${i18next.t('task', { count: passOffTasks })}`}
  • }\n {Boolean(toCheckTasks) && !isStudent && (\n
  • {`к проверке: ${i18next.t('task', { count: toCheckTasks })}`}
  • \n )}\n
\n )}\n
\n
\n );\n};\n","export const getMaxFileSizeBytes = (sizeInMB: number): number => sizeInMB * 1024 * 1024;\n","import { createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit';\n\nexport interface FormState {\n [formName: string]: {\n errors?: Record;\n formName: string;\n };\n}\n\ninterface FormErrorPayload {\n errors: Record;\n formName: string;\n}\n\nconst initialState: FormState = {};\n\nconst formErrorSlice = createSlice>({\n name: 'formError',\n initialState,\n reducers: {\n setFormError(state, action: PayloadAction) {\n state[action.payload.formName] = action.payload;\n },\n },\n});\n\nexport const formErrorReducer = formErrorSlice.reducer;\nexport const { setFormError } = formErrorSlice.actions;\n","import { StatusLabelEnum } from '@lms-elements/atomic';\nimport { PatchAttendanceParams } from 'api/services/attendance';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\n\n/**\n * Returns normalized values for patch\n * @param values used for rendering Dropdown component\n * @returns\n */\n\nexport const normalizePresenceValues = (values: {\n status: StatusLabelEnum;\n lateMinutes: number;\n}): PatchAttendanceParams => {\n let normalizeStatus: AttendanceStatus;\n\n switch (values.status) {\n case StatusLabelEnum.isLate:\n normalizeStatus = AttendanceStatus.LATE;\n break;\n case StatusLabelEnum.wasAbsent:\n normalizeStatus = AttendanceStatus.ABSENT;\n break;\n case StatusLabelEnum.illness:\n normalizeStatus = AttendanceStatus.ABSENT_DUE_ILLNESS;\n break;\n case StatusLabelEnum.seriousReason:\n normalizeStatus = AttendanceStatus.ABSENT_WITH_REASON;\n break;\n default:\n normalizeStatus = AttendanceStatus.PRESENT;\n break;\n }\n\n const normalizeValues = {\n status: normalizeStatus,\n lateDuration: values.lateMinutes,\n };\n\n return normalizeValues;\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getLessonAttendance } from 'api/services/attendance';\nimport { getLessonSchedule } from 'api/services/lessonSchedule';\nimport { getEventRooms } from 'api/services/proctoring';\nimport { EventTypes } from 'types/events';\n\ntype getLessonScheduleAndAttendanceDataParams = {\n courseGroupId: number;\n lessonIds: number[];\n studentIds: number[];\n};\n\nexport const getLessonScheduleAndAttendanceData = createAsyncThunk(\n 'academicPerformance/getLessonScheduleAndAttendance',\n ({ courseGroupId, lessonIds, studentIds }: getLessonScheduleAndAttendanceDataParams) => {\n return Promise.all([\n getLessonSchedule(lessonIds, courseGroupId),\n getLessonAttendance({ lessonIds, studentIds }),\n getEventRooms({ lesson_ids: lessonIds.join(','), event_type: EventTypes.TEST }),\n ]).then(([lessonSchedule, lessonAttendance, eventRooms]) => ({\n lessonIds,\n lessonSchedule,\n lessonAttendance,\n studentIds,\n eventRooms,\n }));\n },\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { fetchDeleteFiles } from 'api/services/file';\n\nexport const deleteFileAction = createAsyncThunk('deleteFile/fetchDeleteFile', async (id: number) => {\n const result = await fetchDeleteFiles(id);\n return { ...result, id };\n});\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getSchoolPartners } from 'api/services/schoolPartner';\nimport { getStudentsStatistics, getStudentsStatisticsTariff } from 'api/services/student';\nimport { getStudentGroupStatisticsParallels } from 'api/services/studentGroups/getStudentGroupStatisticsParallels';\nimport { getStudentGroupStatistics } from 'api/services/studentGroups/getStudentsGroupStatistics';\nimport { getStudentGroupStatisticsTariffs } from 'api/services/studentGroups/getStudentsGroupStatisticsTariffs';\n\nexport const getActiveClassesAction = createAsyncThunk('activeClasses', () => {\n return Promise.all([\n getSchoolPartners(),\n getStudentsStatistics(),\n getStudentsStatisticsTariff(),\n getStudentGroupStatistics(),\n getStudentGroupStatisticsTariffs(),\n getStudentGroupStatisticsParallels(),\n ]);\n});\n","import { getApiRequest } from 'api';\n\nexport interface SchoolPartner {\n id: number;\n title: string;\n studentsCount: number;\n}\n\nexport const getSchoolPartners = (): Promise => {\n return getApiRequest(`/school-partner/statistics/`);\n};\n","import { getApiRequest } from 'api';\nimport { Region } from 'types/reporting';\nimport { User } from 'types/user';\n\nexport interface StudentGroupStatistics {\n id: number;\n title: string;\n region: Region;\n studentsCount: number;\n maxStudentsCount: number;\n blockedStudentsCount: number;\n tariff: number;\n dateCreate: string;\n curators: User[];\n}\n\nexport const getStudentGroupStatistics = (): Promise => {\n return getApiRequest('/student-group/statistics/');\n};\n","import { getApiRequest } from 'api';\n\nexport interface TariffsVacancies {\n id: number;\n title: string;\n vacanciesCount: number;\n}\n\nexport interface StudentGroupStatisticsTariff {\n id: number;\n title: string;\n titleShort: string;\n tariffs: TariffsVacancies[];\n}\n\nexport const getStudentGroupStatisticsTariffs = (): Promise => {\n return getApiRequest('/student-group/statistics-tariffs/');\n};\n","import { getApiRequest } from 'api';\nimport { Region } from 'types/reporting';\n\nexport interface StudentGroup {\n id: number;\n region: Region;\n studentsCount: string;\n}\n\nexport interface Parallel {\n id: number;\n studentGroup: StudentGroup[];\n}\n\nexport const getStudentGroupStatisticsParallels = (): Promise => {\n return getApiRequest('/student-group/statistics-parallels/');\n};\n","import { api } from 'api';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { AbsentStudent } from 'types/students';\nimport { Teacher } from 'types/teacher';\n\nexport interface CuratorDashboardAPI {\n id: number;\n lesson: {\n id: number;\n title: string;\n };\n subject: { id: number; title: string };\n usersInMeeting: { id: number; hasWebcam: boolean; hasMicrophone: boolean; isListeningOnly: boolean }[];\n courseGroup: {\n id: number;\n title: string;\n students: number[];\n teachers: Teacher[];\n };\n}\n\nexport interface CuratorDashboard extends Omit {\n courseGroup: {\n id: number;\n title: string;\n students: AbsentStudent[];\n teachers: Teacher[];\n };\n}\n\nexport const getMeetingStatistics = async (): Promise => {\n return await api\n .get, AxiosResponse>(`/meeting/statistics/getRealTime/`)\n .then((res) => res?.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { getMeetingStatistics } from 'api/services/curatorDashboard';\nimport { getStudentGroups } from 'api/services/studentGroups/getStudentGroups';\n\nexport const getCuratorDashboardAction = createAsyncThunk('curatorDashboard/getCuratorDashboard', async () => {\n const statistics = await getMeetingStatistics();\n const studentGroups = await getStudentGroups();\n\n return statistics.map((statistic) => {\n const { courseGroup, lesson, subject } = statistic;\n\n const studentsExtended =\n studentGroups\n .find((studentGroup) => studentGroup.title === courseGroup.title)\n ?.students.filter((student) => courseGroup.students.includes(student.id))\n .map((student) => ({\n ...student,\n subject,\n lesson,\n courseGroup: { id: courseGroup.id, title: courseGroup.title },\n })) || [];\n\n const teachersExtended = courseGroup.teachers.map((teacher) => ({\n ...teacher,\n groupName: courseGroup.title,\n studentsCount: studentsExtended.length,\n lessonName: lesson.title,\n }));\n\n return {\n ...statistic,\n courseGroup: {\n ...courseGroup,\n students: studentsExtended,\n teachers: teachersExtended,\n },\n };\n });\n});\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { oauth } from 'api/services/oauth';\n\ntype OAuthActionParams = {\n clientId: string;\n redirectUri: string;\n responseType: string;\n state: string;\n scope: string;\n csrfmiddlewaretoken?: string;\n};\n\nexport const oauthAction = createAsyncThunk('oauth/postData', (params: OAuthActionParams) => {\n return oauth(params).then(({ url }) => {\n document.location.href = url;\n });\n});\n","import { api, getApiRequest } from 'api';\nimport { AxiosError } from 'axios';\n\ninterface OAuthParams {\n clientId: string;\n redirectUri: string;\n responseType: string;\n state: string;\n scope: string;\n csrfmiddlewaretoken?: string;\n}\n\nexport const checkOAuth = ({ clientId, redirectUri, responseType, ...restParams }: OAuthParams): Promise => {\n return getApiRequest('/authorize/', {\n params: {\n ...restParams,\n client_id: clientId,\n redirect_uri: redirectUri,\n response_type: responseType,\n },\n });\n};\n\nexport const oauth = ({\n clientId,\n redirectUri,\n responseType,\n state,\n scope,\n csrfmiddlewaretoken,\n}: OAuthParams): Promise<{ url: string }> => {\n const data = new FormData();\n\n data.append('client_id', clientId);\n data.append('redirect_uri', redirectUri);\n data.append('response_type', responseType);\n data.append('state', state);\n data.append('scope', scope);\n data.append('allow', 'Authorize');\n if (csrfmiddlewaretoken) {\n data.append('csrfmiddlewaretoken', csrfmiddlewaretoken);\n }\n\n data.append('nonce', '');\n data.append('code_challenge', '');\n data.append('code_challenge_method', '');\n data.append('claims', '');\n // data.append('csrfmiddlewaretoken', 'oXbbuw7EObFNIXKMPGe21Pb7pVizchEooZOlC4GFOtNegI9QNDpnCCbemVyTi4Zs');\n\n return api\n .post<{ url: string }>(\n `/authorize/?client_id=${clientId}&scope=${scope}&state=${state}&redirect_uri=${redirectUri}&response_type=${responseType}`,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n Accept: 'application/json',\n },\n },\n )\n .then((res) => res.data)\n .catch((err: AxiosError>) => {\n throw JSON.stringify(err.response?.data);\n });\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Cam, CamDisabled, Mic, MicDisabled, UserCircle, UserCircleDisabled } from '@lms-elements/icons';\n\nimport { getMeta } from './Toolptip.utils';\nimport { ITooltipProps, PointerPosition, Position, TooltipViewEnum } from './Tooltip.types';\n\nimport './Tooltip.scss';\n\nconst CnTooltip = cn('tooltip');\n\nconst AVARAGE_COMMENT = 'Средневзвешенный балл:';\n\nexport const Tooltip: React.FC = ({\n children,\n view = TooltipViewEnum.comment,\n metaData,\n approved,\n average,\n attandanceData,\n pointerPosition = PointerPosition.CENTER,\n pointerSide = Position.bottom,\n commentLabel,\n filesLabel = 'Прикрепленные файлы:',\n files,\n withPointer = true,\n isError = false,\n listData,\n author,\n}) => {\n const showMeta = useMemo(\n () =>\n view === TooltipViewEnum.detailed ||\n view === TooltipViewEnum.semester ||\n view === TooltipViewEnum.period ||\n view === TooltipViewEnum.attendance,\n [view],\n );\n\n const meta = useMemo(() => getMeta(view, metaData), [view, metaData]);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n return (\n
\n {showMeta && meta !== '' &&
{meta}
}\n {author && (\n
\n Поставил оценку:\n
{author}
\n
\n )}\n {commentLabel &&
{commentLabel}
}\n {view !== TooltipViewEnum.semester &&
{children}
}\n {view === TooltipViewEnum.period && (\n <>\n
\n {approved ? 'Утвержденная оценка' : 'Предварительная оценка'}\n
\n
\n
{AVARAGE_COMMENT}
\n
{average}
\n
\n \n )}\n {view === TooltipViewEnum.semester && (\n
формула по которой рассчитывается оценка за период
\n )}\n {view === TooltipViewEnum.attendance && attandanceData && (\n
\n
\n {attandanceData.isCameraDisabled ? : }\n {attandanceData.cameraDescription}\n
\n
\n {attandanceData.isMicDisabled ? : }\n {attandanceData.micDescription}\n
\n
\n {attandanceData.isUserDisabled ? : }\n {attandanceData.userDescription}\n
\n
\n )}\n {view === TooltipViewEnum.list && listData && (\n
\n {listData.title &&
{listData.title}
}\n {listData?.list.map((item) => (\n
\n
\n
{item.text}
\n
\n ))}\n
\n )}\n {!!files?.length && (\n
\n
{filesLabel}
\n
\n {files.map((file) => (\n \n {file.title}\n \n ))}\n
\n
\n )}\n {withPointer &&
}\n
\n );\n};\n","import { getDateWithoutYear } from '@lms-elements/utils';\n\nimport { MarkMetaData, TooltipViewEnum } from './Tooltip.types';\n\nexport const getMeta = (tooltipView: TooltipViewEnum, metaData?: MarkMetaData): string => {\n if (tooltipView === TooltipViewEnum.semester) {\n return 'сумма(оценка * вес)/кол-во';\n }\n\n if (tooltipView === TooltipViewEnum.detailed && metaData) {\n const markDate = getDateWithoutYear(metaData.date);\n\n return `${markDate}, ${metaData.type}${metaData.isMark ? ` (вес ${metaData.weight})` : ''}`;\n }\n\n if (tooltipView === TooltipViewEnum.attendance && metaData) {\n const markDate = getDateWithoutYear(metaData.date);\n\n return `${markDate}, ${metaData.type}${metaData.isMark ? ` (вес ${metaData.weight})` : ''}`;\n }\n\n return '';\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { ITaskCreateFormValue } from 'pages/SubjectCourse/SubjectCourse';\n\nexport const addFormValuesStore = createAction('createTask/addFormValues', (formValues: ITaskCreateFormValue) => {\n return {\n payload: {\n values: formValues,\n },\n };\n});\n\nexport const resetFormValuesStore = createAction('createTask/resetFormValues', () => {\n return {\n payload: {\n values: {\n title: '',\n description: '',\n counter: 1,\n isTemplate: true,\n type: '',\n markEvaluationType: 'по среднему баллу',\n attemptQuantity: 0,\n },\n },\n };\n});\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox } from '@lms-elements/atomic';\nimport { TaskNoMark, TaskTemplate } from '@lms-elements/icons';\n\nimport './TaskView.scss';\n\nexport interface ITaskViewProps {\n title: string;\n isTemplate?: boolean;\n isPosted?: boolean;\n canRepeatTask?: boolean;\n isForMethodist?: boolean;\n handleSelect?: () => void;\n onTitleClick?: () => void;\n withCheckbox?: boolean;\n}\n\nconst CnClassTaskView = cn('task_view');\n\nexport const TaskView: React.FC = ({\n title,\n isTemplate = false,\n isPosted = false,\n canRepeatTask = false,\n isForMethodist = false,\n handleSelect,\n onTitleClick,\n withCheckbox = true,\n}) => {\n return (\n
\n {withCheckbox && (\n \n )}\n {!isTemplate && }\n {isTemplate && }\n
\n \n {title}\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { Field, FieldInputProps } from 'react-final-form';\nimport { DatePickerProps } from 'antd';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { AppDatePicker } from 'src-new/ui';\n\nimport { getTimeZoneOffsetHours } from 'components/Task/utils';\n\nimport { ITaskDatePickerProps } from './TaskDatePicker.types';\n\nconst dateFormat = 'DD.MM.YYYY';\nconst timeFormat = 'HH:mm';\n\n/**\n *\n * @param props\n * @constructor\n */\nexport const TaskDatePicker: React.FC = (props: ITaskDatePickerProps) => {\n const { value, fieldName, placeholder, status, disabledDate, disabledTime } = props;\n const offset = getTimeZoneOffsetHours();\n const handleDateChange = (input: FieldInputProps, value: Dayjs) => {\n // округляем минуты до 10 частей\n const minute = value.minute();\n const minute10 = minute / 10;\n const newMinute = minute10 !== 0 ? Math.round(minute10) * 10 : minute;\n const newValue = value.minute(newMinute).valueOf();\n // так как все относительно московского времени добавляем смещение относительного текущего часового пояса\n // (offset отрицательный\n input.onChange(dayjs(newValue).subtract(offset, 'hours').toISOString());\n };\n\n const customFormat: DatePickerProps['format'] = (value) =>\n `${value.format(dateFormat)} в ${value.format(timeFormat)}`;\n\n const dayValue = value ? dayjs(value)?.add(offset, 'hours') : undefined;\n\n return (\n \n {({ input }) => (\n // @ts-ignore\n \n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport { Field, FieldInputProps } from 'react-final-form';\nimport { AppButton, AppText } from '@frontend-modules/ui-kit';\nimport { TimePickerProps } from 'antd';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { E_COLORS } from 'src-new/constants';\nimport { AppTimePicker } from 'src-new/ui';\n\nimport { ITaskTimePickerProps } from './TaskTimePicker.types';\n\nimport './style.scss';\nconst timeFormat = 'HH:mm';\n\n/**\n *\n * @param props\n * @constructor\n */\nexport const TaskTimePicker: React.FC = (props: ITaskTimePickerProps) => {\n const { value, fieldName, placeholder, status, nullTimeText, valuePrefix = 'Через' } = props;\n const [open, setOpen] = useState(false);\n\n const handleTimeChange = (input: FieldInputProps, value: Dayjs) => {\n const formattedTime = value\n .format(timeFormat)\n .split(':')\n .map((item) => item.replace(/^0+/, ''));\n const minutes = formattedTime[1] ? +formattedTime[1] : 0;\n const hours = formattedTime[0] ? +formattedTime[0] : 0;\n input.onChange(hours * 60 + minutes);\n };\n\n const customFormat: TimePickerProps['format'] = (value) => {\n const formattedTime = value\n .format(timeFormat)\n .split(':')\n .map((item) => item.replace(/^0+/, ''));\n\n const minutes = formattedTime[1] ? `${formattedTime[1]} мин` : '';\n const hours = formattedTime[0] ? `${formattedTime[0]} ч` : '';\n const text = minutes || hours ? `${valuePrefix} ${hours} ${minutes}` : nullTimeText ?? '00:00';\n\n return text.trim();\n };\n\n const time = (): Dayjs | undefined => {\n if (value !== undefined) {\n const onlyMinutes = value < 60;\n\n const hours = onlyMinutes ? 0 : Math.round(value / 60);\n const minutes = onlyMinutes ? value : value - hours * 60;\n\n return dayjs().hour(hours).minute(minutes);\n } else {\n return undefined;\n }\n };\n\n return (\n \n {({ input }) => (\n // @ts-ignore\n (\n <>\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n \n )}\n onSelect={handleTimeChange.bind(null, input)}\n />\n )}\n
\n );\n};\n","import React, { ReactElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Field, Form, FormSpy } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { AppButton, AppModal, AppText } from '@frontend-modules/ui-kit';\nimport { Basket } from '@lms-elements/icons';\nimport { TaskProgressInterval } from 'containers/TaskBlock/TaskBlock.types';\nimport { Dayjs } from 'dayjs';\nimport { ValidationErrors } from 'final-form';\nimport { useRole } from 'hooks';\nimport { useFormError } from 'hooks/useFormError';\nimport moment, { Moment } from 'moment';\nimport { AppSelect } from 'src-new/ui';\nimport { useAppSelector } from 'store/store';\n\nimport { TaskView } from './TaskView/TaskView';\nimport { TaskDatePicker } from './TaskDatePicker';\nimport { TaskTimePicker } from './TaskTimePicker';\nimport {\n dateValidator,\n disabledDate,\n disabledHours,\n disabledMinutes,\n EDateTimeTypesList,\n getTaskDateInitialValues,\n getTimeDisableValue,\n} from './utils';\n\nimport './Task.scss';\n\nexport interface ITaskDate {\n timeStart?: string;\n timeEnd?: string;\n startTimeDelay?: number;\n endTimeDelay?: number;\n timeToComplete?: number;\n assignedType?: EDateTimeTypesList;\n deadlineType: EDateTimeTypesList;\n durationType: EDateTimeTypesList;\n}\n\ninterface ITaskProps {\n id?: number;\n title: string;\n isTemplate?: boolean;\n isForMethodist?: boolean;\n isPosted?: boolean;\n dates?: ITaskDate;\n offsetY?: number;\n handleSubmit?: (id: number, dates: ITaskDate) => void;\n handleDelete?: (id: number) => void;\n handleScroll?: (value: number) => void;\n onTitleClick?: (id: number) => void;\n onSelect?: (isSelect: boolean) => void;\n onDateSelect?: (dates: ITaskDate) => void;\n onTeacherSelect?: (id: number) => void;\n onlyDatesOptions?: boolean;\n disabledSelect?: boolean;\n canRepeatTask?: boolean;\n interval?: TaskProgressInterval;\n}\n\nconst validate = (value: string) => (value ? undefined : 'error');\n\nconst CnTask = cn('task_block');\n\nexport const Task: React.FC = ({\n id = 0,\n title,\n isTemplate = false,\n isForMethodist = false,\n isPosted = false,\n dates,\n handleSubmit,\n handleDelete,\n onTitleClick,\n onSelect,\n onDateSelect,\n onTeacherSelect,\n onlyDatesOptions,\n disabledSelect,\n canRepeatTask = false,\n interval,\n}) => {\n const { teachersList, assignmentPeriods } = useAppSelector((store) => ({\n teachersList: store.assignemnt.teachersList,\n assignmentPeriods: store.newAssignment.assignmentPeriods,\n }));\n const periodsData = useMemo(() => assignmentPeriods?.find(({ assignment }) => assignment === id)?.periodsData, [\n assignmentPeriods,\n ]);\n\n const { isPrincipal, isMethodist, isProctor } = useRole();\n const [isSelected, setIsSelected] = useState(canRepeatTask);\n const [isHovered, setIsHovered] = useState(false);\n const [isShowDeleteModal, setIsShowDeleteModal] = useState(false);\n\n const [calendarStartType, setCalendarStartType] = useState(undefined);\n const [calendarEndType, setCalendarEndType] = useState(EDateTimeTypesList.NONE);\n const [calendarDurationType, setCalendarDurationType] = useState(EDateTimeTypesList.NONE);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleDateTimeChanged = (type: 'start' | 'end' | 'duration', val: EDateTimeTypesList) => {\n switch (type) {\n case 'start':\n setCalendarStartType((prevState) => (prevState !== val ? val : EDateTimeTypesList.NONE));\n break;\n case 'end':\n setCalendarEndType(val);\n break;\n default:\n case 'duration':\n setCalendarDurationType((prevState) => (prevState !== val ? val : EDateTimeTypesList.NONE));\n break;\n }\n };\n\n const handleSelect = useCallback(() => {\n if (onSelect) {\n onSelect(isSelected);\n }\n setIsSelected(!isSelected);\n }, [isSelected, onSelect]);\n\n const options = useMemo(() => getTaskDateInitialValues(), []);\n\n const handleFormSubmit = useCallback(\n (value) => {\n if (handleSubmit) {\n handleSubmit(id, value);\n }\n },\n [handleSubmit, id],\n );\n\n const handleTitleClick = useCallback(() => onTitleClick?.(id), [onTitleClick, id]);\n\n const onCloseDeleteModal = () => {\n setIsShowDeleteModal(false);\n };\n\n const handleDeleteSubmit = useCallback(() => {\n if (handleDelete) {\n handleDelete(id);\n setIsSelected(false);\n }\n }, [handleDelete, id]);\n\n const handleFormError = useFormError('taskForm');\n\n const handleFormChange = useCallback(\n (state: { values: ITaskDate; errors: ValidationErrors }) => {\n handleFormError(state);\n const isEditableTask = isSelected && (!isPosted || canRepeatTask);\n if (onDateSelect && isEditableTask) {\n setTimeout(() => {\n onDateSelect?.({\n ...state.values,\n assignedType: calendarStartType,\n deadlineType: calendarEndType,\n durationType: calendarDurationType,\n });\n }, 0);\n }\n },\n [onDateSelect, handleFormError, calendarStartType, calendarEndType, calendarDurationType],\n );\n\n const taskBlockRef = useRef(null);\n\n const handleDropdownClick = useCallback((e: React.MouseEvent) => {\n const dropdownOptions = e.currentTarget?.querySelector('.select-suggest_focus');\n\n if (dropdownOptions) {\n dropdownOptions.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, []);\n\n useEffect(() => {\n if (isSelected) {\n taskBlockRef.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isSelected, calendarStartType, calendarEndType]);\n\n const handleTeacherSelect = (teacher: { value: string; label: ReactNode }) => {\n if (teacher) {\n onTeacherSelect?.(+teacher.value);\n } else {\n onTeacherSelect?.(0);\n }\n };\n\n const [momentDateTimeStart, momentDateTimeEnd] = useMemo<[Moment, Moment]>(\n () => [moment(interval?.datetimeStart), moment(interval?.datetimeEnd)],\n [interval],\n );\n\n const [formattedDayAndMonth, formattedDatetimeStart, formattedDatetimeEnd] = useMemo<[string, string, string]>(\n () => [\n momentDateTimeStart.format('DD.MM'),\n momentDateTimeStart.format('HH:mm'),\n momentDateTimeEnd.format('HH:mm'),\n ],\n [momentDateTimeStart, momentDateTimeEnd],\n );\n\n const teachersListNormalized = useMemo(() => {\n return teachersList.length\n ? teachersList\n .map((item) => {\n return {\n value: item.id,\n label: `${item.lastName} ${item.firstName} ${item.patronymic}`,\n };\n })\n .sort((a, b) => (a.label > b.label ? 1 : -1))\n : [];\n }, [teachersList]);\n\n return (\n <>\n dateValidator(values, interval, calendarStartType, calendarDurationType)}\n >\n {({ form, handleSubmit, errors }): ReactElement => (\n
\n
\n \n \n {isHovered && (\n
\n {(!isTemplate || isForMethodist) && !isPosted && (\n \n )}\n
\n )}\n
\n {interval && (\n

\n {formattedDayAndMonth} С {formattedDatetimeStart} по {formattedDatetimeEnd}\n

\n )}\n {isSelected && (!isPosted || canRepeatTask) && (\n <>\n
\n
\n Ученики начнут\n subscription={{ values: true }}>\n {() => {\n return (\n \n {({ input }) => (\n value === calendarStartType,\n )}\n handleSelect={({ value }) => {\n handleDateTimeChanged(\n 'start',\n value as EDateTimeTypesList,\n );\n form.change('startTimeDelay', undefined);\n form.change('timeStart', undefined);\n }}\n />\n )}\n \n );\n }}\n \n
\n {!!calendarStartType && (\n \n subscription={{ values: true }}\n >\n {({ values }) => {\n const disabledTime = (date?: Dayjs) => {\n const disableValues = getTimeDisableValue(\n date,\n interval,\n periodsData,\n );\n\n return {\n disabledHours: () =>\n disabledHours(values.timeStart, disableValues),\n disabledMinutes: (hour: number) =>\n disabledMinutes(hour, values.timeStart, disableValues),\n };\n };\n\n return calendarStartType === EDateTimeTypesList.TIME ? (\n \n ) : (\n \n disabledDate(date, interval, periodsData)\n }\n disabledTime={disabledTime}\n status={errors?.timeStart}\n />\n );\n }}\n \n )}\n
\n Должны сдать\n value === calendarEndType,\n )}\n handleSelect={({ value }) => {\n handleDateTimeChanged('end', value as EDateTimeTypesList);\n form.change('timeEnd', undefined);\n form.change('endTimeDelay', undefined);\n }}\n />\n
\n {!!calendarEndType && (\n \n subscription={{ values: true }}\n >\n {({ values }) => {\n const disabledTime = (date?: Dayjs) => {\n const disableValues = getTimeDisableValue(\n date,\n interval,\n periodsData,\n );\n\n return {\n disabledHours: () =>\n disabledHours(values.timeEnd, disableValues),\n disabledMinutes: (hour: number) =>\n disabledMinutes(hour, values.timeEnd, disableValues),\n };\n };\n\n return calendarEndType === EDateTimeTypesList.TIME ? (\n \n ) : (\n \n disabledDate(date, interval, periodsData)\n }\n disabledTime={disabledTime}\n status={errors?.timeEnd}\n />\n );\n }}\n \n )}\n
\n Время на выполнение задания\n subscription={{ values: true }}>\n {() => {\n return (\n \n {({ input }) => (\n value === calendarDurationType,\n )}\n defaultValue={options.timeToComplete?.[0]}\n handleSelect={({ value }) => {\n handleDateTimeChanged(\n 'duration',\n value as EDateTimeTypesList,\n );\n if (!value) {\n form.change('timeToComplete', undefined);\n } else {\n form.change('timeToComplete', 0);\n }\n }}\n />\n )}\n \n );\n }}\n \n
\n {!!calendarDurationType && (\n subscription={{ values: true }}>\n {({ values }) => {\n return (\n \n );\n }}\n \n )}\n
\n {(isPrincipal || isMethodist || isProctor) && (\n
\n \n \n (String(option?.label).toLowerCase() ?? '').includes(\n input.toLowerCase(),\n )\n }\n allowClear\n handleSelect={(teacher) => handleTeacherSelect(teacher)}\n />\n
\n )}\n \n )}\n \n \n \n )}\n \n {isShowDeleteModal && (\n \n
\n \n \n
\n \n )}\n \n );\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport { cn } from '@bem-react/classname';\nimport { Title } from '@lms-elements/atomic';\nimport { useCourseGroupQuery, useRole } from 'hooks';\nimport { useTaskPopup } from 'src-new/hooks';\nimport { getAssignmentProgressIntervalAction, getAssignmentProgressTeachersListAction } from 'store/actions/assignment';\nimport { useAppDispatch, useAppSelector } from 'store/store';\nimport { ExecutionTimes } from 'types/assignment';\nimport { Task as TaskData } from 'types/homework';\n\nimport { Task } from 'components/Task';\nimport { ITaskDate } from 'components/Task/Task';\nimport { getPathParts } from 'utils/url';\n\nimport './TaskBlock.scss';\n\ninterface ITaskBlockProps {\n blockTitle?: string;\n tasks?: TaskData[];\n course?: number;\n courseId?: number;\n lesson?: number;\n subject?: number;\n hasConference?: boolean;\n onSelect?: (taskId: number, isSelect: boolean) => void;\n onDateSelect?: (taskId: number, dates: ITaskDate) => void;\n onTeacherSelect?: (taskId: number, id: number) => void;\n onAssignmentDelete?: (id: number) => void;\n disabledSelect?: boolean;\n repeatTask?: boolean;\n lessonSchedule?: number;\n}\n\nconst CnTaskBlock = cn('tasks-container');\n\nconst tasksStab: TaskData[] = [];\n\nexport const TaskBlock: React.FC = ({\n tasks = tasksStab,\n course,\n courseId,\n lesson,\n subject,\n onSelect,\n onDateSelect,\n onAssignmentDelete,\n hasConference,\n blockTitle = 'Выберите те, которые хотите выдать',\n disabledSelect,\n repeatTask,\n lessonSchedule,\n onTeacherSelect,\n}) => {\n const dispatch = useAppDispatch();\n const { isTeacher } = useRole();\n\n const tasksProgressInterval = useAppSelector((state) => state.assignemnt.assignmentsProgressInterval);\n const { lessonDetails } = useAppSelector((store) => store.courseLesson);\n\n const [stateValues, setStateValues] = useState(tasks.map((task) => ({ ...task })));\n\n useEffect(() => {\n setStateValues(tasks);\n }, [tasks]);\n\n const history = useHistory();\n const TaskPopup = useTaskPopup();\n const { courseGroupId } = useCourseGroupQuery();\n const id = useMemo(() => getPathParts(history.location.pathname)[1], [history.location.pathname]);\n const courseIdFromUrl = useMemo(() => lessonDetails[Number(id)]?.course?.id, [lessonDetails, id]);\n const { isPrincipal, isMethodist, isProctor } = useRole();\n\n useEffect(() => {\n const hasAccessToTeachers = isPrincipal || isMethodist || isProctor;\n\n if ((courseIdFromUrl || courseId) && hasAccessToTeachers) {\n void dispatch(getAssignmentProgressTeachersListAction(courseId ?? courseIdFromUrl));\n }\n }, [courseIdFromUrl, courseId]);\n\n const [subjectId, conferenceId] = useMemo(() => getPathParts(history.location.pathname), [history]);\n const onClickCreate = useCallback(() => {\n if (isTeacher && course && lesson) {\n TaskPopup.openTaskPopup({\n courseGroupId: course,\n subjectId: subject,\n lessonId: lesson,\n purpose: 'create',\n });\n } else {\n history.push(\n `/subjects/${subjectId}/${conferenceId}/tasks/create${\n courseGroupId ? `?course_group=${courseGroupId}` : ''\n }`,\n );\n }\n }, [conferenceId, courseGroupId, history, subjectId]);\n\n const handleSubmit = useCallback((id: number, dates: ITaskDate) => {\n if ((dates.timeStart || dates.startTimeDelay) && (dates.timeEnd || dates.endTimeDelay)) {\n setStateValues((prev) =>\n prev.map((task) => {\n if (task.id == id) task.isPosted = true;\n return task;\n }),\n );\n }\n }, []);\n\n const handleDelete = useCallback(\n (id: number) => {\n setStateValues((prev) => prev.filter((task) => task.id !== id));\n if (onAssignmentDelete) {\n onAssignmentDelete(id);\n }\n },\n [onAssignmentDelete],\n );\n\n const handleTaskTitleClick = useCallback(\n (taskId: number) => {\n if (isTeacher && course && lesson) {\n TaskPopup.openTaskPopup({\n subjectId: subject,\n courseGroupId: course,\n lessonId: lesson,\n taskId: taskId,\n purpose: 'edit',\n });\n } else {\n history.push(\n `/subjects/${subjectId}/${conferenceId}/tasks/edit/${taskId}${\n courseGroupId ? `?course_group=${courseGroupId}` : ''\n }`,\n );\n }\n },\n [conferenceId, courseGroupId, history, subjectId, isTeacher, course, lesson],\n );\n\n const ref = useRef(document.createElement('div'));\n\n const handleScroll = useCallback(\n (value: number) => {\n setTimeout(() => {\n ref.current.scrollTo({\n top: value - 249,\n behavior: 'smooth',\n });\n }, 10);\n },\n [ref],\n );\n\n const firstRender = useRef(true);\n useEffect(() => {\n if (!lessonSchedule || !firstRender.current) return;\n\n stateValues.forEach((task) => {\n if (tasksProgressInterval[task.id]) return;\n if (!task?.type?.executionTime.includes('in_class' as ExecutionTimes)) return;\n\n void dispatch(\n getAssignmentProgressIntervalAction({\n lessonSchedule,\n assignmentId: task.id,\n }),\n );\n });\n\n firstRender.current = false;\n }, [stateValues, lessonSchedule, tasksProgressInterval]);\n\n return (\n
\n ''}\n inscription={blockTitle}\n onClickMove={onClickCreate}\n isTask={true}\n />\n
\n {stateValues\n .filter((task) => (repeatTask ? task.isPosted : true))\n .map((task) => (\n \n ))}\n
\n
\n );\n};\n","import { INavigationPageItem } from '@frontend-modules/elements';\nimport { INavigationMenuRoles } from '@fsd-shared/models/navigation';\nconst TEST = true;\n\nexport const getNavigationMenuPages = (\n roles: INavigationMenuRoles,\n hasNewNews: boolean,\n hasMeta: boolean,\n): Array => {\n const {\n isTeacher,\n isCurious,\n isMethodist: isMethodistRole,\n isPrincipal: isPrincipalRole,\n isCurator,\n isProctor,\n isTutor,\n isSupport,\n isLibrarian,\n isStudent,\n } = roles;\n\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n // TODO: изменить, когда будут известны все отличия между методистом и завучем. Сейчас завуч видит все тоже самое что и методист\n const isMethodist = isMethodistRole || isPrincipal;\n\n const showGroupActions = hasMeta && (isPrincipal || isCurator || isTutor);\n const home = {\n icon: 'home-l',\n text: `Обзор ${isStudent ? 'ученика' : ''}`,\n path: '/',\n pathMatchType: 'exact',\n };\n const news = {\n icon: 'newspaper-l',\n text: 'Новости',\n path: '/news',\n hasBadge: hasNewNews,\n };\n const library = {\n icon: 'book-l',\n text: 'Библиотека',\n path: '/library',\n };\n const subjects = {\n icon: 'files-l',\n text: 'Предметы',\n path: '/subjects',\n };\n //TODO: временная мера, перейти окончательно на newSubjects, когда туда добавятся все фичи\n const oldSubjects = {\n icon: 'files-l',\n text: 'Предметы старые',\n path: '/subjects',\n };\n const newSubjects = {\n icon: 'files-l',\n text: 'Предметы',\n path: '/new-subjects',\n };\n const schedule = {\n icon: 'calendar-l',\n text: 'Расписание',\n path: '/schedule',\n };\n const studentsSchedule = {\n icon: 'calendars-l',\n text: 'Расписание классов',\n path: '/students-schedule',\n };\n const onlineLessons = {\n icon: 'videocamera-l',\n text: 'Онлайн-занятия',\n path: '/online-lessons',\n };\n const monitoring = {\n icon: 'monitoring-l',\n text: 'Мониторинг',\n path: '/monitoring',\n };\n const homework = {\n icon: 'homework-check-l',\n text: 'Домашние задания',\n path: '/homework',\n };\n const performance = {\n icon: 'cup-l',\n text: 'Успеваемость',\n path: '/performance',\n };\n const proctoring = {\n icon: 'proktoring-l',\n text: 'Прокторинг',\n path: '/proctoring',\n };\n const reporting = {\n icon: 'clip-l',\n text: 'Отчетность',\n path: '/reporting',\n };\n const students = {\n icon: 'user-l',\n text: 'Ученики',\n path: '/students',\n };\n const codifier = {\n icon: 'variant-l',\n text: 'Кодификатор',\n path: '/codifier',\n };\n const questions = {\n icon: 'question-in-circle-l',\n text: 'Банк вопросов',\n path: '/questions',\n };\n const groupActions = {\n icon: 'tick-l',\n text: 'Групповые действия',\n path: '/group-actions',\n };\n\n if (isStudent && isCurious) {\n return [home, newSubjects, library];\n }\n\n return isCurator === undefined\n ? [home]\n : [\n home,\n news,\n ...((TEST && isCurator) || isTutor\n ? []\n : isStudent || (isTeacher && !isMethodist)\n ? [newSubjects, schedule]\n : isTeacher && isMethodist\n ? [oldSubjects, newSubjects, schedule]\n : [subjects, schedule]),\n ...(isCurator || isTutor || isPrincipal ? [studentsSchedule] : []),\n ...(isPrincipal || isTutor ? [onlineLessons] : []),\n ...(isTeacher || isPrincipal ? [monitoring] : []),\n ...((TEST && isCurator) || isTutor ? [] : [homework]),\n ...(!isCurator ? [performance] : []),\n ...((isProctor && isPrincipal) || isSupport ? [proctoring] : []),\n ...(isPrincipal ? [reporting] : []),\n ...(showGroupActions ? [groupActions] : []),\n ...(isCurator || isTutor ? [students] : []),\n ...(isLibrarian || !((TEST && isCurator) || isTutor) ? [library] : []),\n ...(isTeacher || isMethodist ? [codifier, questions] : []),\n ];\n};\n","import { INavigationIconButton } from '@frontend-modules/elements';\nimport { INavigationMenuRoles } from '@fsd-shared/models/navigation';\n\nconst handleDownloadClick = (): Document => document.open('/anydesk', '_blank', 'noopener noreferrer');\n\nconst handleSmartBoardBtnClick = (): Document =>\n document.open('https://smartboard.og1.ru/', '_blank', 'noopener noreferrer');\n\nconst downloadAnyDeskButton = { icon: 'anydesk-l', onClick: handleDownloadClick };\nconst smartBoardButton = { icon: 'pencil-l', onClick: handleSmartBoardBtnClick };\n\nexport const getNavigationOptionsButtons = (roles: INavigationMenuRoles): Array => {\n const { isCurious } = roles;\n return isCurious ? [downloadAnyDeskButton] : [downloadAnyDeskButton, smartBoardButton];\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useField } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { FieldDropdown } from '@lms-elements/atomic';\nimport { CodifierSelector } from 'containers/CodifierSelector/CodifierSelector';\nimport { SelectedElement } from 'containers/CodifierSelector/utils';\nimport { useOuterClick } from 'hooks/useOuterClick';\nimport { useWindowResize } from 'hooks/useWindowResize';\nimport { ISelectedValues } from 'pages/QuestionCreationPage/QuestionCreationPage.types';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport { Codifier } from 'components/Codifier';\nimport {\n getCodifierSelectorInitValues,\n getLessonLocation,\n getSkillLocation,\n LessonLocation,\n SkillLocation,\n} from 'components/Codifier/utils';\n\nimport { useQuestionLocationRows } from './useQuestionLocationRows';\nimport { getLocationSkillString, getLocationString } from './utils';\n\nimport './QuestionLocationDropdown.scss';\n\nconst cnQuestionLocationDropdown = cn('question_location_dropdown');\n\ninterface QuestionLocationDropdownProps {\n selectedTopics?: number[];\n topicsLocation?: string;\n selectedSkills?: { ids: number[]; location: string };\n handleSelectLesson?: (values: ISelectedValues) => void;\n handleSelectSkill?: (values: ISelectedValues) => void;\n isSkill?: boolean;\n name: string;\n placeholder?: string;\n validators?: ((value: string) => undefined | string)[];\n onMultiSelect?: (items: { lessonLocation?: LessonLocation[]; skillLocation?: SkillLocation[] }) => void;\n flagReset?: boolean;\n setFlagReset?: (value: boolean) => void;\n searchPage?: boolean;\n disableValidation?: boolean;\n isEditPage?: boolean;\n showAllSubjects?: boolean;\n selectedSubject?: number;\n codifierSelectorInitValues?: SelectedElement;\n}\n\nexport const QuestionLocationDropdown: React.FC = ({\n isSkill = false,\n handleSelectLesson,\n handleSelectSkill,\n selectedSkills = { ids: [], location: '' },\n selectedTopics,\n name,\n placeholder,\n validators = [],\n onMultiSelect,\n flagReset,\n setFlagReset,\n searchPage = false,\n disableValidation,\n showAllSubjects,\n selectedSubject,\n}) => {\n const subjects = useAppSelector((store) => store.codifier.codifierData);\n const skills = useAppSelector((store) => store.codifier.codifierSkillsData);\n const fetchStatus = useAppSelector((store) => store.codifier.fetchStatus);\n const codifierMap = useAppSelector((store) => ({\n subjectsMap: store.codifier.subjectsMap,\n parallelsMap: store.codifier.parallelsMap,\n sectionsMap: store.codifier.sectionsMap,\n blocksMap: store.codifier.blocksMap,\n topicsMap: store.codifier.topicsMap,\n }));\n const { input } = useField(name);\n\n const isTablet = useWindowResize();\n const [location, setLocation] = useState([]);\n const [locationSkill, setLocationSkill] = useState([]);\n\n const dropdownPlaceholder = useMemo(() => {\n if (placeholder) {\n return placeholder;\n }\n\n if (isSkill) {\n return 'Выберите из списка';\n }\n\n return isTablet ? 'Выберите тему для сохранения вопроса' : 'Выберите тему, подтему для сохранения вопроса';\n }, [placeholder, isSkill, isTablet]);\n\n useEffect(() => {\n if (flagReset) {\n setLocation([]);\n setLocationSkill([]);\n setFlagReset?.(false);\n }\n }, [flagReset, setFlagReset]);\n\n useEffect(() => {\n if (selectedSkills.location && !locationSkill.length) {\n setLocationSkill(selectedSkills.ids.map((s) => getSkillLocation(skills, s)));\n input.onChange(selectedSkills.location);\n }\n }, [input, locationSkill.length, selectedSkills.ids, selectedSkills.location, skills]);\n\n useEffect(() => {\n if (fetchStatus === FetchStatus.FETCHED && selectedTopics?.length && !location.length && subjects) {\n const newLocation = selectedTopics.map((l) => getLessonLocation(subjects, l));\n setLocation(newLocation);\n input.onChange(getLocationString(newLocation));\n }\n }, [fetchStatus, input, location.length, selectedTopics, subjects]);\n\n const handleSelectLessonCheckbox = useCallback(\n (topicId: number) => {\n if (subjects) {\n const data = getLessonLocation(subjects, topicId);\n setLocation((currentLocation) => {\n const newLocation = currentLocation.filter((value) => value.topicId === data.topicId).length\n ? currentLocation.filter((value) => value.topicId !== data.topicId)\n : [...currentLocation, { ...data }];\n\n if (onMultiSelect) {\n onMultiSelect({ lessonLocation: newLocation });\n }\n\n input.onChange(getLocationString(newLocation));\n if (handleSelectLesson) {\n handleSelectLesson({\n location: getLocationString(newLocation),\n ids: newLocation.map((value) => value.topicId),\n });\n }\n\n return newLocation;\n });\n }\n },\n [handleSelectLesson, input, onMultiSelect, subjects],\n );\n\n const validate = useCallback((value: string) => (value ? undefined : 'error'), []);\n\n const handleSelectSkillCheckbox = useCallback(\n (data: SkillLocation) => {\n setLocationSkill((currentLocationSkill) => {\n const newLocationSkill = currentLocationSkill.filter((value) => value.skillId === data.skillId).length\n ? currentLocationSkill.filter((value) => value.skillId !== data.skillId)\n : [...currentLocationSkill, { ...data }];\n\n if (onMultiSelect) {\n onMultiSelect({ skillLocation: newLocationSkill });\n }\n\n input.onChange(getLocationSkillString(newLocationSkill));\n if (handleSelectSkill) {\n handleSelectSkill({\n location: getLocationSkillString(newLocationSkill),\n ids: newLocationSkill.map((value) => value.skillId),\n });\n }\n\n return newLocationSkill;\n });\n },\n [handleSelectSkill, input, onMultiSelect],\n );\n\n const ref = useRef(null);\n\n const [isOpened, setIsOpened] = useState(false);\n\n useOuterClick(ref, setIsOpened);\n const rows = useQuestionLocationRows(\n ref,\n fetchStatus === FetchStatus.FETCHED ? input.value : '',\n locationSkill.length || location.length,\n isOpened,\n );\n\n const fieldValidators = useMemo(() => (searchPage || disableValidation ? [] : [validate, ...validators]), [\n disableValidation,\n searchPage,\n validate,\n validators,\n ]);\n\n const codifierSelectorInitValues = useMemo(() => {\n return getCodifierSelectorInitValues(codifierMap, selectedTopics);\n }, [codifierMap, selectedTopics]);\n\n const resetInput = useRef(() => {\n input.onChange('');\n setLocation([]);\n });\n\n useEffect(() => {\n resetInput.current();\n }, [selectedSubject]);\n\n return (\n \n {isSkill ? (\n \n \n \n }\n isTextArea={true}\n rows={rows}\n isLocationDropdown\n >\n ) : (\n \n {fetchStatus === FetchStatus.FETCHED && (\n \n )}\n \n }\n isTextArea={true}\n rows={rows}\n isLocationDropdown\n >\n )}\n \n );\n};\n","import { RefObject, useEffect, useMemo, useState } from 'react';\n\nimport { findRowsCount } from './utils';\n\nconst PX_FOR_SYMBOL = 8;\nconst PADDING = 44;\n\nexport const useQuestionLocationRows = (\n ref: RefObject,\n text: string,\n items: number,\n isOpened: boolean,\n): number => {\n const [symbols, setSymbols] = useState(1);\n const [width, setWidth] = useState(PX_FOR_SYMBOL + PADDING);\n\n useEffect(() => {\n setWidth(ref.current?.offsetWidth || PX_FOR_SYMBOL + PADDING);\n }, [isOpened, ref]);\n\n useEffect(() => {\n setSymbols(Math.floor((width - PADDING) / PX_FOR_SYMBOL));\n }, [ref, width]);\n\n const rows = useMemo(() => findRowsCount(text, items, symbols), [items, symbols, text]);\n\n return rows;\n};\n","import React, { useCallback } from 'react';\nimport { useField } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { ExpandedExerciseMaterial } from '@lms-elements/materials-exercise';\nimport { IQuestionForStudent } from '@lms-elements/test-task';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { IMaterial } from 'types/materials';\n\ninterface ExpandedMaterialExerciseContentProps {\n name: string;\n onCheckAnswer?: (answer: IQuestionForStudent, id: number) => void;\n onDelete?: (index?: number) => void;\n isStudentView?: boolean;\n onCreateQuestion?: (index?: number) => void;\n onSelectQuestion?: (index?: number) => void;\n onChangeQuestion?: (index?: number) => void;\n onEditQuestion?: (index?: number) => void;\n}\n\nconst cnExercise = cn('expanded-material-exercise');\n\nconst functionStab = () => undefined;\n\nexport const ExpandedMaterialExerciseContent: React.FC = ({\n name,\n onCheckAnswer,\n onDelete = functionStab,\n isStudentView,\n onCreateQuestion,\n onSelectQuestion,\n onChangeQuestion,\n onEditQuestion,\n}) => {\n const { input: materialInput } = useField(name);\n\n const materialId = materialInput.value.id;\n\n const { checkAnswerStatus } = useAppSelector((store) => store.materials);\n\n const handleCheckExercise = useCallback(\n (answer: IQuestionForStudent) => {\n onCheckAnswer?.(answer, materialId);\n },\n [materialId, onCheckAnswer],\n );\n\n return (\n \n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { KinescopeVideoCard } from '@fsd-widgets/kinescope-video';\nimport { ExpandedDocumentMaterialStudent, ExpandedDocumentMaterialTeacher } from '@lms-elements/materials-document';\nimport { ExpandedHeaderMaterial } from '@lms-elements/materials-header';\nimport { ExpandedImageMaterial } from '@lms-elements/materials-image';\nimport { ExpandedAudioMaterial, ExpandedVideoMaterial } from '@lms-elements/materials-media';\nimport { ExpandedTableMaterial } from '@lms-elements/materials-table';\nimport { ExpandedTextMaterial } from '@lms-elements/materials-text';\nimport { AppText } from 'src-new/ui';\nimport { ContentMaterialTypeEnum } from 'types/materials';\n\nimport { ExpandedMaterialExerciseContent } from './ExpandedMaterialExerciseContent/ExpandedMaterialExerciseContent';\nimport { IExpandedMaterialContentProps } from './types';\n\nimport './ExpandedMaterialContent.scss';\n\nconst cnTable = cn('expanded-material-table-cell');\nconst cnText = cn('expanded-material-text');\nconst cnPreview = cn('expanded-material-preview');\n\nconst functionStab = () => undefined;\n\nexport const ExpandedMaterialContent: React.FC = ({\n name,\n type,\n onDelete = functionStab,\n isEditorOnText,\n areDragging,\n isStudentView,\n url,\n editorFieldName,\n htmlFieldName,\n videoUrl,\n percent,\n isLastQuestion,\n handleUploadImage,\n handleDeleteImage,\n onCreateQuestion,\n onSelectQuestion,\n onChangeQuestion,\n onEditQuestion,\n onCheckAnswer,\n isPreview,\n}) => {\n switch (type) {\n case ContentMaterialTypeEnum.audio:\n return (\n \n );\n case ContentMaterialTypeEnum.video:\n return (\n \n );\n case ContentMaterialTypeEnum.kinescope:\n return ;\n case ContentMaterialTypeEnum.text:\n return (\n \n );\n case ContentMaterialTypeEnum.photo:\n return (\n \n );\n case ContentMaterialTypeEnum.document:\n return isStudentView ? (\n \n ) : (\n \n );\n case ContentMaterialTypeEnum.header:\n return (\n \n );\n case ContentMaterialTypeEnum.table:\n return (\n \n );\n case ContentMaterialTypeEnum.exercise:\n return (\n
\n {Number(percent) < 100 && isLastQuestion && (\n <>\n \n \n )}\n \n {Number(percent) === 100 && isLastQuestion && (\n \n )}\n
\n );\n default:\n return null;\n }\n};\n","import {\n TCriteriaGroup,\n TCriteriaSettingState,\n TMonitoringStaff,\n TMonitoringStaffList,\n TMonitoringSubject,\n TMonitoringSubjectsList,\n TQuestionsCreatedDiagramData,\n TQuestionsCreatedProgressInfo,\n TQuestionsCreatedTableData,\n TSummaryChartDataItem,\n TSummaryTableData,\n TTeacherInfo,\n TTeacherProgress,\n TTeachersMonitoringData,\n TTeachersQuestionsCreatedDiagram,\n TTeachersWorkDays,\n} from '@fsd-shared/models/statisticsMonitoring';\nimport { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { FetchStatus } from 'types/api';\n\nimport {\n getCriteriaGroupsListAction,\n getCriteriaSettingAction,\n getMonitoringStaffListAction,\n getMonitoringSubjectsListAction,\n getQuestionsCreatedDiagramDataAction,\n getQuestionsCreatedProgressAction,\n getQuestionsCreatedTableDataAction,\n getSummaryChartDataAction,\n getSummaryTableDataAction,\n getTeacherMonitoringDataAction,\n getTeachersCriteriaStatisticAction,\n getTeachersQuestionsCreatedDiagramAction,\n getTeachesInfoAction,\n getTeachesWorkDaysAction,\n updateTeachesWorkDaysAction,\n} from './statisticsMonitoringActions';\n\nexport interface IStatisticsMonitoringState {\n getStaffProfilesStatus: FetchStatus;\n getSubjectsListStatus: FetchStatus;\n getCriteriaGroupsListStatus: FetchStatus;\n getChartDataStatus: FetchStatus;\n staffProfiles?: TMonitoringStaffList & { isLoading: boolean; isLoadingMore: boolean };\n subjectsList?: TMonitoringSubjectsList & { isLoading: boolean; isLoadingMore: boolean };\n criteriaGroups?: TCriteriaGroup[];\n criteriaSettings?: TCriteriaSettingState;\n criteriaSettingsErrors?: { [key: string]: string[] };\n summaryTableData?: TSummaryTableData & { isLoading: boolean; isLoadingMore: boolean };\n questionsCreatedTableData?: TQuestionsCreatedTableData & { isLoading: boolean; isLoadingMore: boolean };\n questionsCreatedDiagramData?: TQuestionsCreatedDiagramData;\n summaryChartData?: TSummaryChartDataItem[];\n summaryCriteriaList?: string[];\n teacherMonitoringData?: TTeachersMonitoringData;\n getTeacherMonitoringDataStatus: FetchStatus;\n getTeacherProgressStatus: FetchStatus;\n getTeacherInfoStatus: FetchStatus;\n getTeachesWorkDaysStatus: FetchStatus;\n selectedTeacherWorkDays?: TTeachersWorkDays;\n selectedTeacherId?: string;\n selectedTeacherInfo?: TTeacherInfo;\n selectedTeacherProgress?: TTeacherProgress[];\n selectedTeacherQuestionsCreatedInfo?: TQuestionsCreatedProgressInfo;\n selectedTeacherQuestionsCreatedInfoError?: string[];\n teacherQuestionsCreatedDiagram?: TTeachersQuestionsCreatedDiagram;\n}\n\nexport const initialState: IStatisticsMonitoringState = {\n getStaffProfilesStatus: FetchStatus.INITIAL,\n getSubjectsListStatus: FetchStatus.INITIAL,\n getCriteriaGroupsListStatus: FetchStatus.INITIAL,\n getTeacherProgressStatus: FetchStatus.INITIAL,\n getChartDataStatus: FetchStatus.INITIAL,\n getTeacherInfoStatus: FetchStatus.INITIAL,\n getTeachesWorkDaysStatus: FetchStatus.INITIAL,\n selectedTeacherWorkDays: undefined,\n questionsCreatedDiagramData: undefined,\n staffProfiles: undefined,\n subjectsList: undefined,\n selectedTeacherId: undefined,\n criteriaGroups: undefined,\n teacherMonitoringData: undefined,\n criteriaSettings: undefined,\n criteriaSettingsErrors: undefined,\n summaryTableData: undefined,\n summaryChartData: undefined,\n questionsCreatedTableData: undefined,\n summaryCriteriaList: undefined,\n getTeacherMonitoringDataStatus: FetchStatus.INITIAL,\n selectedTeacherInfo: undefined,\n selectedTeacherProgress: undefined,\n selectedTeacherQuestionsCreatedInfo: undefined,\n selectedTeacherQuestionsCreatedInfoError: undefined,\n teacherQuestionsCreatedDiagram: undefined,\n};\n\nconst statisticsMonitoringSlice = createSlice<\n IStatisticsMonitoringState,\n SliceCaseReducers\n>({\n name: 'StatisticsMonitoring',\n initialState,\n reducers: {\n setSelectedTeacher(state, action) {\n state.selectedTeacherId = action.payload;\n if (!action.payload) {\n state.selectedTeacherWorkDays = undefined;\n state.selectedTeacherQuestionsCreatedInfo = undefined;\n }\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getMonitoringStaffListAction.pending, (state, { meta }) => {\n const isFirstLoading = meta.arg?.currentPage === 1;\n state.staffProfiles = {\n ...state.staffProfiles,\n isLoading: isFirstLoading,\n isLoadingMore: !isFirstLoading,\n };\n })\n .addCase(getMonitoringStaffListAction.fulfilled, (state, { payload }) => {\n const { pagination, results = [] as TMonitoringStaff[], search } = payload;\n const list = state.staffProfiles?.results ?? ([] as TMonitoringStaff[]);\n\n if (search) {\n state.staffProfiles = {\n results: list,\n searchResults: results,\n pagination,\n search,\n isLoading: false,\n isLoadingMore: false,\n };\n } else {\n state.staffProfiles = {\n pagination,\n results: pagination?.currentPage === 1 ? results : [...list, ...results],\n isLoading: false,\n isLoadingMore: false,\n };\n }\n })\n .addCase(getMonitoringStaffListAction.rejected, (state, { error }) => {\n state.staffProfiles = {\n ...state.staffProfiles,\n isLoading: false,\n isLoadingMore: false,\n };\n });\n builder\n .addCase(getMonitoringSubjectsListAction.pending, (state, { meta }) => {\n const isFirstLoading = meta.arg?.currentPage === 1;\n state.subjectsList = {\n ...state.subjectsList,\n isLoading: isFirstLoading,\n isLoadingMore: !isFirstLoading,\n };\n })\n .addCase(getMonitoringSubjectsListAction.fulfilled, (state, { payload }) => {\n const { pagination, results = [] as TMonitoringSubject[], search } = payload;\n const list = state.subjectsList?.results ?? ([] as TMonitoringSubject[]);\n\n if (search) {\n state.subjectsList = {\n results: list,\n searchResults: results,\n pagination,\n search,\n isLoading: false,\n isLoadingMore: false,\n };\n } else {\n state.subjectsList = {\n pagination,\n results: pagination?.currentPage === 1 ? results : [...list, ...results],\n isLoading: false,\n isLoadingMore: false,\n };\n }\n })\n .addCase(getMonitoringSubjectsListAction.rejected, (state, { error }) => {\n state.subjectsList = {\n ...state.subjectsList,\n isLoading: false,\n isLoadingMore: false,\n };\n });\n builder\n .addCase(getTeachersCriteriaStatisticAction.pending, (state, { meta }) => {\n state.getTeacherProgressStatus = FetchStatus.FETCHING;\n })\n .addCase(getTeachersCriteriaStatisticAction.fulfilled, (state, { payload }) => {\n state.getTeacherProgressStatus = FetchStatus.FETCHED;\n\n state.selectedTeacherInfo = payload.user;\n state.selectedTeacherProgress = payload.progress;\n })\n .addCase(getTeachersCriteriaStatisticAction.rejected, (state) => {\n state.getTeacherProgressStatus = FetchStatus.ERROR;\n state.selectedTeacherProgress = undefined;\n state.selectedTeacherInfo = undefined;\n });\n builder\n .addCase(getQuestionsCreatedProgressAction.pending, (state, { meta }) => {\n state.getTeacherProgressStatus = FetchStatus.FETCHING;\n state.selectedTeacherQuestionsCreatedInfoError = undefined;\n })\n .addCase(getQuestionsCreatedProgressAction.fulfilled, (state, { payload }) => {\n state.getTeacherProgressStatus = FetchStatus.FETCHED;\n const { user, ...rest } = payload;\n state.selectedTeacherQuestionsCreatedInfo = rest;\n })\n .addCase(getQuestionsCreatedProgressAction.rejected, (state, { error, meta }) => {\n const parsedErrors = JSON.parse(error?.message ?? '')?.extra?.fields?.questionsCount?.value;\n\n state.selectedTeacherQuestionsCreatedInfo = {\n ...state.selectedTeacherQuestionsCreatedInfo,\n questionsCount: {\n ...state.selectedTeacherQuestionsCreatedInfo?.questionsCount,\n month:\n meta.arg?.questionsCount?.value ??\n state.selectedTeacherQuestionsCreatedInfo?.questionsCount?.month ??\n 0,\n },\n };\n state.selectedTeacherQuestionsCreatedInfoError = parsedErrors;\n state.getTeacherProgressStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getTeachesInfoAction.pending, (state, { meta }) => {\n state.getTeacherInfoStatus = FetchStatus.FETCHING;\n })\n .addCase(getTeachesInfoAction.fulfilled, (state, { payload }) => {\n state.getTeacherInfoStatus = FetchStatus.FETCHED;\n state.selectedTeacherInfo = payload;\n })\n .addCase(getTeachesInfoAction.rejected, (state) => {\n state.getTeacherInfoStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getTeachesWorkDaysAction.pending, (state, { meta }) => {\n state.getTeachesWorkDaysStatus = FetchStatus.FETCHING;\n })\n .addCase(getTeachesWorkDaysAction.fulfilled, (state, { payload }) => {\n state.getTeachesWorkDaysStatus = FetchStatus.FETCHED;\n const { user, ...rest } = payload;\n state.selectedTeacherWorkDays = rest;\n })\n .addCase(getTeachesWorkDaysAction.rejected, (state) => {\n state.getTeachesWorkDaysStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(updateTeachesWorkDaysAction.pending, (state, { meta }) => {\n state.getTeachesWorkDaysStatus = FetchStatus.FETCHING;\n state.getTeacherProgressStatus = FetchStatus.FETCHING;\n })\n .addCase(updateTeachesWorkDaysAction.fulfilled, (state, { payload }) => {\n const { workDays, questionsCreated } = payload;\n state.getTeachesWorkDaysStatus = FetchStatus.FETCHED;\n state.getTeacherProgressStatus = FetchStatus.FETCHED;\n const { user: userWorkDays, ...restWorkDays } = workDays;\n state.selectedTeacherWorkDays = restWorkDays;\n const { user, ...restQuestionsCreated } = questionsCreated;\n state.selectedTeacherQuestionsCreatedInfo = restQuestionsCreated;\n })\n .addCase(updateTeachesWorkDaysAction.rejected, (state) => {\n state.getTeachesWorkDaysStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getTeacherMonitoringDataAction.pending, (state, { meta }) => {\n state.getTeacherMonitoringDataStatus = FetchStatus.FETCHING;\n })\n .addCase(getTeacherMonitoringDataAction.fulfilled, (state, { payload }) => {\n state.getTeacherMonitoringDataStatus = FetchStatus.FETCHED;\n\n state.teacherMonitoringData = payload;\n })\n .addCase(getTeacherMonitoringDataAction.rejected, (state) => {\n state.getTeacherMonitoringDataStatus = FetchStatus.ERROR;\n state.teacherMonitoringData = undefined;\n });\n builder\n .addCase(getCriteriaGroupsListAction.pending, (state, { meta }) => {\n state.getCriteriaGroupsListStatus = FetchStatus.FETCHING;\n })\n .addCase(getCriteriaGroupsListAction.fulfilled, (state, { payload }) => {\n state.getCriteriaGroupsListStatus = FetchStatus.FETCHED;\n\n state.criteriaGroups = payload;\n })\n .addCase(getCriteriaGroupsListAction.rejected, (state) => {\n state.getCriteriaGroupsListStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getCriteriaSettingAction.pending, (state, { meta }) => {\n const isSavingLoading = !!meta.arg.update;\n state.criteriaSettingsErrors = undefined;\n state.criteriaSettings = {\n ...state.criteriaSettings,\n isLoading: !isSavingLoading,\n isSaving: isSavingLoading,\n };\n })\n .addCase(getCriteriaSettingAction.fulfilled, (state, { payload }) => {\n state.criteriaSettings = {\n ...payload,\n isLoading: false,\n isSaving: false,\n };\n })\n .addCase(getCriteriaSettingAction.rejected, (state, { error, meta }) => {\n const parsedErrors = JSON.parse(error?.message ?? '')?.extra?.fields;\n const val = meta.arg.update;\n state.criteriaSettings = {\n ...val,\n isLoading: false,\n isSaving: false,\n };\n state.criteriaSettingsErrors = parsedErrors ?? undefined;\n });\n builder\n .addCase(getSummaryTableDataAction.pending, (state, { meta }) => {\n state.summaryTableData = {\n ...state.summaryTableData,\n isLoading: meta.arg.currentPage === 1,\n isLoadingMore: meta.arg.currentPage !== 1,\n };\n })\n .addCase(getSummaryTableDataAction.fulfilled, (state, { payload }) => {\n state.summaryTableData = {\n ...payload,\n isLoading: false,\n isLoadingMore: false,\n };\n })\n .addCase(getSummaryTableDataAction.rejected, (state) => {\n state.summaryTableData = undefined;\n });\n builder\n .addCase(getSummaryChartDataAction.pending, (state, { meta }) => {\n state.getChartDataStatus = FetchStatus.FETCHING;\n })\n .addCase(getSummaryChartDataAction.fulfilled, (state, { payload }) => {\n state.getChartDataStatus = FetchStatus.FETCHED;\n state.summaryChartData = payload?.diagram?.data;\n state.summaryCriteriaList = payload?.diagram?.data?.[0]?.points.map(({ label }) => label);\n })\n .addCase(getSummaryChartDataAction.rejected, (state) => {\n state.getChartDataStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getTeachersQuestionsCreatedDiagramAction.pending, (state, { meta }) => {\n state.getChartDataStatus = FetchStatus.FETCHING;\n })\n .addCase(getTeachersQuestionsCreatedDiagramAction.fulfilled, (state, { payload }) => {\n state.getChartDataStatus = FetchStatus.FETCHED;\n state.teacherQuestionsCreatedDiagram = payload;\n })\n .addCase(getTeachersQuestionsCreatedDiagramAction.rejected, (state) => {\n state.getChartDataStatus = FetchStatus.ERROR;\n state.teacherQuestionsCreatedDiagram = undefined;\n });\n builder\n .addCase(getQuestionsCreatedTableDataAction.pending, (state, { meta }) => {\n const isFirstLoading = meta.arg?.currentPage === 1;\n state.questionsCreatedTableData = {\n ...state.questionsCreatedTableData,\n isLoading: isFirstLoading,\n isLoadingMore: !isFirstLoading,\n };\n })\n .addCase(getQuestionsCreatedTableDataAction.fulfilled, (state, { payload }) => {\n state.questionsCreatedTableData = {\n ...payload,\n isLoading: false,\n isLoadingMore: false,\n };\n })\n .addCase(getQuestionsCreatedTableDataAction.rejected, (state) => {\n state.questionsCreatedTableData = {\n ...state.questionsCreatedTableData,\n isLoading: false,\n isLoadingMore: false,\n };\n });\n builder\n .addCase(getQuestionsCreatedDiagramDataAction.pending, (state, { meta }) => {\n state.getChartDataStatus = FetchStatus.FETCHING;\n })\n .addCase(getQuestionsCreatedDiagramDataAction.fulfilled, (state, { payload }) => {\n state.getChartDataStatus = FetchStatus.FETCHED;\n state.questionsCreatedDiagramData = payload;\n })\n .addCase(getQuestionsCreatedDiagramDataAction.rejected, (state) => {\n state.getChartDataStatus = FetchStatus.ERROR;\n state.questionsCreatedDiagramData = undefined;\n });\n },\n});\nexport const statisticsMonitoringReducer = statisticsMonitoringSlice.reducer;\nexport const { setSelectedTeacher } = statisticsMonitoringSlice.actions;\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { TCriteriaGroup } from '@fsd-shared/models/statisticsMonitoring';\nimport { TGroupSelectorItem } from '@fsd-shared/ui-kit';\n\nexport const getCriteriaOptionsList = (\n criteriaGroups?: TCriteriaGroup[],\n withSummary?: boolean,\n): TGroupSelectorItem[] => {\n const criteriaDefaultOption = {\n label:
,\n options: [\n {\n label: 'Сводная таблица по всем показателям',\n value: `summary`,\n },\n ],\n key: `group-summary`,\n };\n\n const mainList = criteriaGroups\n ? criteriaGroups.map(({ title, criteria, id }) => {\n return {\n label: (\n
\n \n
\n ),\n options: criteria.map(({ type, title, id }) => {\n return { label: title, value: type, key: id };\n }),\n key: `group-${id}`,\n };\n })\n : [];\n\n return withSummary ? [criteriaDefaultOption, ...mainList] : mainList;\n};\n","/**\n * ProfileProvider запросы связанные с профилем\n */\nimport { IChangePasswordRequest } from '@fsd-shared/models/profile/password';\nimport {\n IParentInviteRequest,\n IParentInviteResponse,\n IStudentCardRequest,\n IStudentCardResponse,\n IStudentContactResponse,\n IStudentEmailRequest,\n IStudentPhoneRequest,\n} from '@fsd-shared/models/profile/student';\nimport { postApiSsoRequest } from 'api';\n\nconst ProfileProvider = {\n /**\n * @description Получение и редактирование информации о себе учеником\n * @param params\n */\n postStudentCard: (params?: IStudentCardRequest): Promise => {\n return postApiSsoRequest(`sso/v1/student/card/`, params);\n },\n /**\n * @description Редактирование учеником email\n * @param params\n */\n changeMail: (params: IStudentEmailRequest): Promise => {\n return postApiSsoRequest(`sso/v1/student/email/`, params);\n },\n /**\n * @description Редактирование учеником телефона\n * @param params\n */\n changePhone: (params?: IStudentPhoneRequest): Promise => {\n return postApiSsoRequest(`sso/v1/student/phone/`, params);\n },\n /**\n * @description Отправка ссылки для приглашения родителя на email или телефон\n * @param params\n */\n inviteParent: (params?: IParentInviteRequest): Promise => {\n return postApiSsoRequest(`sso/v1/student/invite-parent/`, params);\n },\n /**\n * @description Смена пароля пользователя\n * @param params\n */\n changePassword: (params?: IChangePasswordRequest): Promise => {\n return postApiSsoRequest(`sso/v1/password/change/`, params);\n },\n};\n\nexport { ProfileProvider };\n","import { IChangePasswordRequest } from '@fsd-shared/models/profile/password';\nimport {\n IParentInviteRequest,\n IStudentCardRequest,\n IStudentEmailRequest,\n IStudentPhoneRequest,\n} from '@fsd-shared/models/profile/student';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nimport { ProfileProvider } from './profile-api';\n\nexport const getStudentCardAction = createAsyncThunk('profile/getStudentCardAction', async () => {\n return await ProfileProvider.postStudentCard();\n});\n\nexport const updateStudentCardAction = createAsyncThunk(\n 'profile/updateStudentCardAction',\n async (params: IStudentCardRequest) => {\n return await ProfileProvider.postStudentCard(params);\n },\n);\n\nexport const updateStudentEmailAction = createAsyncThunk(\n 'profile/updateStudentEmailAction',\n async (params: IStudentEmailRequest) => {\n return await ProfileProvider.changeMail(params);\n },\n);\n\nexport const updateStudentPhoneAction = createAsyncThunk(\n 'profile/updateStudentPhoneAction',\n async (params: IStudentPhoneRequest) => {\n return await ProfileProvider.changePhone(params);\n },\n);\n\nexport const postParentInviteAction = createAsyncThunk(\n 'profile/postParentInviteAction',\n async (params: IParentInviteRequest) => {\n return await ProfileProvider.inviteParent(params);\n },\n);\n\nexport const changePasswordAction = createAsyncThunk(\n 'profile/changePasswordAction',\n async (params: IChangePasswordRequest) => {\n return await ProfileProvider.changePassword(params);\n },\n);\n","import { getFieldsError } from '@fsd-entities/profile/utils';\nimport { IStudentCardResponse } from '@fsd-shared/models/profile/student';\nimport { createSlice } from '@reduxjs/toolkit';\nimport { FetchStatus } from 'types/api';\n\nimport {\n changePasswordAction,\n getStudentCardAction,\n postParentInviteAction,\n updateStudentCardAction,\n updateStudentEmailAction,\n updateStudentPhoneAction,\n} from './profile-actions';\n\nexport interface IProfileState {\n student?: IStudentCardResponse;\n isCanEdit: boolean;\n isStudentCardLoading?: boolean;\n changePasswordStatus: FetchStatus;\n isEmailUpdating?: boolean;\n isPhoneUpdating?: boolean;\n isInviteSending?: boolean;\n changePasswordErrors?: { [key: string]: string[] };\n}\n\nconst initialState: IProfileState = {\n isCanEdit: true,\n changePasswordStatus: FetchStatus.INITIAL,\n};\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState,\n reducers: {},\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {\n builder\n .addCase(changePasswordAction.pending, (state) => {\n state.changePasswordStatus = FetchStatus.FETCHING;\n state.changePasswordErrors = undefined;\n })\n .addCase(changePasswordAction.fulfilled, (state) => {\n state.changePasswordStatus = FetchStatus.FETCHED;\n })\n .addCase(changePasswordAction.rejected, (state, { error }) => {\n const errorData = getFieldsError(error);\n state.changePasswordErrors = errorData;\n state.changePasswordStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getStudentCardAction.pending, (state) => {\n state.isStudentCardLoading = true;\n })\n .addCase(getStudentCardAction.fulfilled, (state, { payload }) => {\n state.isStudentCardLoading = false;\n state.isCanEdit = !payload.parents?.length;\n state.student = payload;\n })\n .addCase(getStudentCardAction.rejected, (state, error) => {\n state.isStudentCardLoading = false;\n });\n builder.addCase(updateStudentCardAction.fulfilled, (state, { payload }) => {\n state.student = payload;\n });\n builder\n .addCase(updateStudentEmailAction.pending, (state) => {\n state.isEmailUpdating = true;\n })\n .addCase(updateStudentEmailAction.fulfilled, (state, { payload }) => {\n state.isEmailUpdating = false;\n })\n .addCase(updateStudentEmailAction.rejected, (state, error) => {\n state.isEmailUpdating = false;\n });\n builder\n .addCase(updateStudentPhoneAction.pending, (state) => {\n state.isPhoneUpdating = true;\n })\n .addCase(updateStudentPhoneAction.fulfilled, (state, { payload }) => {\n state.isPhoneUpdating = false;\n })\n .addCase(updateStudentPhoneAction.rejected, (state, error) => {\n state.isPhoneUpdating = false;\n });\n builder\n .addCase(postParentInviteAction.pending, (state) => {\n state.isInviteSending = true;\n })\n .addCase(postParentInviteAction.fulfilled, (state, { payload }) => {\n state.isInviteSending = false;\n })\n .addCase(postParentInviteAction.rejected, (state, error) => {\n state.isInviteSending = false;\n });\n },\n});\n\n// export const {} = profileSlice.actions;\n\nexport const profileReducer = profileSlice.reducer;\n","import { useMemo } from 'react';\nimport { useQuery } from 'hooks/useQuery';\nimport { HomeworkEnum } from 'types/homework';\n\nexport enum HomeworkDisplay {\n CHECKED = 'checked',\n PENDING_CHECK = 'pending_check',\n OVERDUE = 'overdue',\n TOMORROW = 'tomorrow',\n ARCHIVE = 'archive',\n ALL = 'all',\n AVAILABLE_FOR_EXECUTION = 'available_for_execution',\n}\n\ninterface HomeworkFiltersParams {\n display: HomeworkDisplay;\n filterCourses: string | null;\n filterTypes: HomeworkEnum | null;\n}\n\nexport function useGetHomeworkFilters(isStudent: boolean): HomeworkFiltersParams {\n const query = useQuery();\n\n const display = useMemo((): HomeworkDisplay => {\n const displayQuery = query.get('display');\n switch (true) {\n case isStudent && displayQuery === 'overdue':\n return HomeworkDisplay.OVERDUE;\n case isStudent && displayQuery === 'tomorrow':\n return HomeworkDisplay.TOMORROW;\n case isStudent && displayQuery === 'archive':\n return HomeworkDisplay.ARCHIVE;\n case isStudent && displayQuery === 'available_for_execution':\n return HomeworkDisplay.AVAILABLE_FOR_EXECUTION;\n case isStudent:\n return HomeworkDisplay.ALL;\n case displayQuery === 'checked':\n return HomeworkDisplay.CHECKED;\n default:\n return HomeworkDisplay.PENDING_CHECK;\n }\n }, [query, isStudent]);\n const filterCourses = useMemo(() => query.get('filterCourses'), [query]);\n const filterTypes = useMemo(() => query.get('filterTypes') as HomeworkEnum, [query]);\n\n return {\n display,\n filterCourses,\n filterTypes,\n };\n}\n","import { RefObject, useCallback, useMemo, useState } from 'react';\n\nexport const useGetScrollPosition = (\n element: RefObject,\n horizontal?: boolean,\n): { isScrollEnd: boolean; isScrollStart: boolean; onScroll: () => void } => {\n const [scroll, setScroll] = useState(0);\n\n const onScroll = useCallback(() => {\n const scrollTop = horizontal ? element.current?.scrollLeft : element.current?.scrollTop;\n setScroll(scrollTop ? scrollTop : 0);\n }, [element, horizontal]);\n\n const isScrollEnd = useMemo(\n () =>\n !(\n ((horizontal ? element.current?.scrollWidth : element.current?.scrollHeight) ?? 0) - scroll - 20 <=\n ((horizontal ? element.current?.clientWidth : element.current?.clientHeight) ?? 0) &&\n (horizontal ? element.current?.clientWidth : element.current?.clientHeight) !== 0\n ),\n [horizontal, element, scroll],\n );\n\n const isScrollStart = useMemo(\n () => scroll - 40 >= 0 && (horizontal ? element.current?.scrollWidth : element.current?.scrollHeight) !== 0,\n [element, horizontal, scroll],\n );\n\n return { isScrollEnd, isScrollStart, onScroll };\n};\n","export enum AssignmentLevels {\n ADMINISTRATIVE = 'administrative',\n TEACHER = 'teacher',\n}\n\nexport enum ExecutionTimes {\n IN_CLASS = 'in_class',\n AT_HOME = 'at_home',\n}\n\nexport enum VerificationTypes {\n MANUAL = 'manual',\n AUTO = 'auto',\n}\n\nexport interface AssignmentType {\n id: number;\n title: string;\n attemptsQuantity: number;\n verificationType: VerificationTypes[]; // тип проверки: ручная или автоматическая\n executionTime: ExecutionTimes[]; // время выполнения задания: дома или на уроке\n isMandatory: boolean; // обязательный или необязательный\n assignmentLevel: AssignmentLevels;\n weight?: number;\n delayAutoCompletion?: number; // количество минут после soft-deadline для отправки ДЗ\n}\n\nexport interface IAssignmentItem {\n id: number;\n title: string;\n description?: string;\n topic: {\n id: number;\n title: string;\n };\n isTemplate: boolean;\n type?: AssignmentType;\n lesson: {\n id: number;\n };\n author: number;\n}\n\nexport interface AssignmentResponse {\n id: number;\n lesson: number;\n type: AssignmentType;\n author: number;\n title: string;\n description: string;\n isTemplate: boolean;\n courseGroup?: number;\n}\n","import React from 'react';\nimport { AddKinescopeVideo } from '@fsd-features/AddKinescopeVideo';\nimport { KinescopeVideo } from '@fsd-shared/ui-kit';\n\nimport { TKinescopeVideoCard } from './KinescopeVideoCard.types';\n\nexport const KinescopeVideoCard: React.FC = (props) => {\n const { isEditable, name, onDelete, ...videoProps } = props;\n\n return isEditable ? (\n \n ) : (\n \n );\n};\n","import React from 'react';\nimport { AppMultipleMonthpicker } from '@frontend-modules/ui-kit';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { TComparativeMonthsSelector } from './ComparativeMonthsSelector.types';\n\nexport const ComparativeMonthsSelector: React.FC = (props) => {\n const { selectedDate, onMonthSelected, defaultDates } = props;\n const currentDate = dayjs();\n\n const onMonthSelectedLocal = (date?: Dayjs[]) => {\n const list = date ? date.map((item) => item.date(1).format('YYYY-MM-DD')) : [];\n onMonthSelected(list);\n };\n const getDisabledDate = (current: Dayjs) => {\n return (\n current > currentDate || current < currentDate.subtract(5, 'years') || current.isSame(selectedDate, 'month')\n );\n };\n\n return (\n //TODO: решить проблему с гигантским типом у компонента\n // @ts-ignore\n dayjs(item))}\n onChange={(_, dayjs) => onMonthSelectedLocal(dayjs)}\n label={'Сравнить с'}\n deprecatedValue={selectedDate}\n disabledDate={getDisabledDate}\n />\n );\n};\n","import { E_COLORS } from 'src-new/constants';\n\nexport const chartOptions = {\n legend: 'none',\n chartArea: { width: '90%', height: '90%', top: 5 },\n focusTarget: 'category',\n vAxis: {\n gridlines: {\n color: E_COLORS.light_grey_color_3,\n },\n baselineColor: E_COLORS.light_grey_color_3,\n textStyle: {\n color: E_COLORS.light_grey_color_1,\n fontSize: 13,\n },\n format: '####',\n },\n hAxis: {\n gridlines: {\n color: E_COLORS.light_grey_color_3,\n },\n baselineColor: E_COLORS.light_grey_color_3,\n textStyle: {\n color: E_COLORS.light_grey_color_1,\n fontSize: 13,\n },\n },\n seriesType: 'area',\n tooltip: {\n isHtml: true,\n trigger: 'focus',\n ignoreBounds: true,\n },\n};\n","export enum ESegmentTitle {\n easy = 'Легкие',\n medium = 'Средние',\n hard = 'Тяжелые',\n all = 'Всего',\n}\n","import { ChartWrapperOptions } from 'react-google-charts';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { TTeachersQuestionsCreatedDiagram } from '@fsd-shared/models/statisticsMonitoring';\nimport { getDaysInMonth, transformHexColor } from '@fsd-shared/utils';\nimport { Dayjs } from 'dayjs';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { chartOptions } from './CriteriaChart.config';\nimport { ESegmentTitle } from './CriteriaChart.constants';\nimport {\n TChartData,\n TChartLegendItem,\n TChartRow,\n TChartSegmentObject,\n TGetChartData,\n TGetChartDataProps,\n TGetDataProps,\n TGetOptionsProps,\n} from './CriteriaChart.types';\n\nexport const getSortedData = (data: TTeachersQuestionsCreatedDiagram): TChartData[] => {\n const lineDiagram = data.diagramProgress.data,\n stepDiagram = data.diagramMin.data;\n const diagramTransformed = lineDiagram.map((lineItem) => {\n const stepItem = stepDiagram.find(({ label }) => label === lineItem.label);\n\n return {\n name: lineItem.label,\n color: lineItem.color,\n target: {\n list: stepItem?.points ?? [],\n count:\n stepItem?.points.reduce((acc, res): number => {\n acc += res.value;\n return acc;\n }, 0) ?? 0,\n },\n current: {\n list: lineItem.points,\n count:\n lineItem.points.reduce((acc, res): number => {\n acc += res.value;\n return acc;\n }, 0) ?? 0,\n },\n };\n });\n return diagramTransformed.sort((a, b) => b.target.count - a.target.count);\n};\nexport const getLegendListInitial = (data: TTeachersQuestionsCreatedDiagram): TChartLegendItem[] => {\n const diagramData = data.diagramProgress.data;\n return diagramData.map(({ label, color, info }) => {\n return {\n name: label,\n title: `${label} ${info}`,\n color: color,\n isSelected: label === ESegmentTitle.all,\n key: `legend-${label}`,\n };\n });\n};\nexport const getChartData = (props: TGetChartDataProps): TGetChartData => {\n const { selectedSegmentList, currentDate, data, showAllHorizontalTicks = true } = props;\n\n const daysCountInMonth = getDaysInMonth(currentDate);\n const maxValue = getMaxQuestionsCount(data);\n\n const filteredData = data.filter(({ name }) => selectedSegmentList.includes(name));\n const duplicatedSegments = getDuplicatedSegments(filteredData);\n const graySegment = duplicatedSegments.slice(-1)[0];\n const segmentToDelete = duplicatedSegments.filter((item) => item !== graySegment);\n\n const needShowOnlyLines = selectedSegmentList.includes(ESegmentTitle.all);\n const needShowSplitSegment =\n selectedSegmentList.length > 1 &&\n !selectedSegmentList.includes(ESegmentTitle.all) &&\n !isEmptyList(segmentToDelete);\n\n const renderOptions = getOptions({\n data,\n selectedSegmentList,\n daysCountInMonth,\n maxValue,\n segmentToDelete,\n graySegment,\n needShowOnlyLines,\n needShowSplitSegment,\n showAllHorizontalTicks,\n });\n\n const renderData = getData({\n selectedSegmentList,\n daysCountInMonth,\n data,\n segmentToDelete,\n needShowOnlyLines,\n currentDate,\n needShowSplitSegment,\n });\n\n return {\n renderOptions,\n renderData,\n };\n};\n\nconst getMaxQuestionsCount = (data: TChartData[]) => {\n return data.reduce((acc: number, res): number => {\n const maxTargetVal = Math.max(...res.target.list.map(({ value }) => value));\n const maxCurrentVal = Math.max(...res.current.list.map(({ value }) => value));\n const maxVal = maxTargetVal < maxCurrentVal ? maxCurrentVal : maxTargetVal;\n\n if (acc < maxVal) {\n acc = maxVal;\n }\n return acc;\n }, 0);\n};\nconst getOptions = (props: TGetOptionsProps): ChartWrapperOptions['options'] => {\n const {\n data,\n selectedSegmentList,\n daysCountInMonth,\n maxValue,\n segmentToDelete,\n graySegment,\n needShowOnlyLines,\n needShowSplitSegment,\n showAllHorizontalTicks,\n } = props;\n\n const seriesList = selectedSegmentList.reduce((acc: TChartSegmentObject[], res): TChartSegmentObject[] => {\n const color = data.find(({ name }) => name === res)?.color ?? E_COLORS.light_grey_color_3;\n const segmentOpt = {\n areaOpacity: 0.9,\n color: transformHexColor(color, 90, 0.99),\n lineWidth: 0,\n enableInteractivity: false,\n };\n const lineOpt = {\n color: color,\n type: 'line',\n };\n\n let seriesOpt;\n\n if (needShowOnlyLines) {\n seriesOpt = res === ESegmentTitle.all ? [segmentOpt, lineOpt] : [lineOpt];\n } else if (needShowSplitSegment) {\n seriesOpt = segmentToDelete.includes(res)\n ? [lineOpt]\n : graySegment === res\n ? [{ ...segmentOpt, color: E_COLORS.light_grey_color_3, areaOpacity: 1 }, lineOpt]\n : [segmentOpt, lineOpt];\n } else {\n seriesOpt = [segmentOpt, lineOpt];\n }\n\n acc.push(...seriesOpt);\n return acc;\n }, [] as TChartSegmentObject[]);\n //@ts-ignore\n const verticalPoints: number[] = [...Array(maxValue + 1)]\n .map((_, index) => (!index || index % 5 === 0 || index === maxValue ? index : undefined))\n .filter((item) => item !== undefined);\n const horizontalPoints: number[] = [...Array(daysCountInMonth)]\n .map((_, index) => index + 1)\n .filter((val) => (showAllHorizontalTicks ? val : val % 2 !== 0));\n\n return {\n ...chartOptions,\n vAxis: {\n ...chartOptions.vAxis,\n ticks: verticalPoints,\n },\n hAxis: {\n ...chartOptions.hAxis,\n ticks: horizontalPoints,\n },\n tooltip: {\n ...chartOptions.tooltip,\n ignoreBounds: showAllHorizontalTicks,\n },\n series: seriesList,\n };\n};\nconst getData = (props: TGetDataProps): (string | number | null | { [key: string]: any })[][] => {\n const {\n selectedSegmentList,\n daysCountInMonth,\n data,\n segmentToDelete,\n needShowOnlyLines,\n needShowSplitSegment,\n currentDate,\n } = props;\n\n const arr: (string | number | null | { [key: string]: any })[][] = [\n [\n { type: 'number', role: 'domain' },\n { type: 'string', role: 'tooltip', p: { html: true } },\n ...selectedSegmentList.reduce((acc, res): string[] => {\n let colsArr;\n\n if (needShowOnlyLines) {\n colsArr = res === ESegmentTitle.all ? [res, `${res}Line`] : [`${res}Line`];\n } else if (needShowSplitSegment) {\n colsArr = segmentToDelete.includes(res) ? [`${res}Line`] : [res, `${res}Line`];\n } else {\n colsArr = [res, `${res}Line`];\n }\n\n acc.push(...colsArr);\n return acc;\n }, [] as string[]),\n ],\n ];\n\n const filteredData = data.filter(({ name }) => selectedSegmentList.includes(name));\n [...Array(daysCountInMonth)].forEach((_, index) => {\n const points = filteredData.reduce((acc, { name, target, current }): TChartRow[] => {\n let rowsArr;\n\n const areaValue = target.list.find(({ label }) => label === `${index + 1}`)?.value ?? null;\n const lineValue = current.list.find(({ label }) => label === `${index + 1}`)?.value ?? null;\n\n if (needShowOnlyLines) {\n rowsArr = name === ESegmentTitle.all ? [areaValue, lineValue] : [lineValue];\n } else if (needShowSplitSegment) {\n rowsArr = segmentToDelete.includes(name) ? [lineValue] : [areaValue, lineValue];\n } else {\n rowsArr = [areaValue, lineValue];\n }\n\n acc.push({\n name,\n chart: rowsArr,\n tooltip: lineValue,\n });\n return acc;\n }, [] as TChartRow[]);\n\n const chartPoints = points.map(({ chart }) => chart).flat();\n const tooltipContent = getTooltipContent(points, index + 1, currentDate);\n\n arr.push([index + 1, tooltipContent, ...chartPoints]);\n });\n return arr;\n};\nconst getDuplicatedSegments = (data: TChartData[]): string[] => {\n const dupls = data.filter((item, index, list) => {\n const listString = list.map(({ target }) => target.list.map(({ value }) => value).join());\n delete listString[index];\n const target = item.target.list.map(({ value }) => value).join();\n\n return listString.some((item) => item === target);\n });\n\n return dupls.map(({ name }) => name);\n};\nconst getTooltipContent = (row: TChartRow[], dayNum: number, date?: Dayjs) => {\n const tooltipContentDate = date ? getDateString(date, dayNum) : '-';\n const tooltipData = row.map(({ name, tooltip }) => {\n return {\n text: name === ESegmentTitle.all ? 'Создано вопросов' : `${name} вопросы`,\n value: tooltip ?? 0,\n };\n });\n\n return `
\n
${tooltipContentDate}
\n ${tooltipData\n .map(\n ({ text, value }) =>\n `
${text}
${value}
`,\n )\n .join('')}\n
`;\n};\nconst getDateString = (date: Dayjs, day: number) => {\n return `${date.date(day).format('DD.MM.YYYY')} г.`;\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { isEmptyList, useWindowWidth } from '@frontend-modules/frontend-utils';\nimport { AppCheckbox, AppSkeleton, AppText } from '@frontend-modules/ui-kit';\nimport { ChartsLegendItem, GoogleChartWrapper } from '@fsd-shared/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TChartLegendItem, TCriteriaChartProps } from './CriteriaChart.types';\nimport { getChartData, getLegendListInitial, getSortedData } from './CriteriaChart.utils';\n\nimport './CriteriaChart.style.scss';\nexport const CriteriaChart: React.FC = (props) => {\n const { chartData, currentDate, isLoading } = props;\n const sortedChartData = chartData ? getSortedData(chartData) : [];\n const isTablet = useWindowWidth(1256);\n const [legendList, setLegendList] = useState([] as TChartLegendItem[]);\n\n useEffect(() => {\n if (chartData) {\n setLegendList(getLegendListInitial(chartData));\n }\n }, [chartData]);\n const selectedSegmentList: string[] = legendList\n .filter(({ isSelected }) => isSelected)\n .map(({ name }) => name)\n .sort((a, b) => {\n const first = sortedChartData.find(({ name }) => name === a);\n const second = sortedChartData.find(({ name }) => name === b);\n\n return (second?.target?.count ?? 0) - (first?.target?.count ?? 0);\n });\n\n const isNoData = isEmptyList(selectedSegmentList);\n\n const { renderOptions, renderData } = useMemo(\n () =>\n getChartData({\n selectedSegmentList,\n currentDate,\n data: sortedChartData,\n showAllHorizontalTicks: !isTablet,\n }),\n [selectedSegmentList, sortedChartData, currentDate],\n );\n\n const onCheckboxChange = (state: boolean, legendKey: string) => {\n setLegendList((prevState) =>\n prevState.map((item) => {\n if (item.key === legendKey) {\n return {\n ...item,\n isSelected: state,\n };\n }\n return item;\n }),\n );\n };\n const isInvalidData = useMemo(() => {\n const columnsToCheck = [...Array(renderData[0].length - 2)].map((_, index) => {\n return 2 + index;\n });\n\n return renderData.slice(1).every((row) => {\n return columnsToCheck.every((index) => row[index] === null);\n });\n }, [renderData]);\n return (\n
\n {isLoading ? (\n <>\n \n \n ) : (\n <>\n
\n {legendList.map(({ key, isSelected, name, color, title }) => {\n return (\n \n onCheckboxChange(val, key)}\n defaultValue={isSelected}\n label={}\n />\n \n );\n })}\n
\n
\n {isNoData ? (\n \n ) : (\n \n )}\n
\n \n )}\n
\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppCollapse, AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { TCriteriaType } from '@fsd-shared/models/statisticsMonitoring';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TCriteriaCollapseProps } from './CriteriaCollapse.types';\n\nimport './CriteriaCollapse.style.scss';\n\nexport const CriteriaCollapse: React.FC = (props) => {\n const { criteriaList, needCloseAll, onOpenCollapseItem } = props;\n const [openedCriteria, setOpenedCriteria] = useState([]);\n\n useEffect(() => {\n if (needCloseAll) {\n setOpenedCriteria([]);\n }\n }, [needCloseAll]);\n const renderItems = useMemo(() => {\n return criteriaList.map(({ label, content, isCompleted, value }) => {\n return {\n key: value,\n title: (\n
\n \n \n
\n ),\n content: content,\n };\n });\n }, [criteriaList]);\n\n const onChangeLocal = (key: string | string[]) => {\n //TODO: поправить AppCollapse, чтобы можно было передать key\n if (Array.isArray(key)) {\n if (isEmptyList(key)) {\n setOpenedCriteria([]);\n } else {\n const types = key.map((item) => criteriaList[+item]?.value as TCriteriaType);\n const type = types[types.length - 1];\n const newKey = key[key.length - 1];\n\n if (!openedCriteria.includes(newKey)) {\n onOpenCollapseItem?.(type);\n setOpenedCriteria((prevState) => [...prevState, newKey]);\n } else {\n setOpenedCriteria(key);\n }\n }\n } else if (key) {\n const type = criteriaList[+key]?.value as TCriteriaType;\n if (!openedCriteria.includes(type)) {\n onOpenCollapseItem?.(type);\n setOpenedCriteria((prevState) => [...prevState, `${key}`]);\n } else {\n setOpenedCriteria((prevState) => prevState.filter((item) => item !== `${key}`));\n }\n }\n };\n return (\n
\n (\n
\n \n
\n )}\n expandIconPosition={'end'}\n bordered={false}\n items={renderItems}\n onChange={onChangeLocal}\n />\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Table } from 'antd';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TTableComponent, TTableData } from './CriteriaTableContent.types';\n\nimport './CriteriaTableContent.style.scss';\nexport const CriteriaTableContent = (props: TTableComponent>): JSX.Element => {\n const { columns, tableData, summaryList, childrenOnTop, loading, onRowClick } = props;\n\n return (\n
\n {childrenOnTop}\n (\n \n \n {summaryList?.map((item, index) => {\n return (\n \n {item !== '-' && (\n \n )}\n \n );\n })}\n \n \n )}\n onRow={(record, rowIndex) => {\n return {\n onClick: () => onRowClick?.(record.teacherId),\n };\n }}\n sticky={{ offsetScroll: 0 }}\n />\n
\n );\n};\n","import { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { TQuestionsCreatedDiagramData } from '@fsd-shared/models/statisticsMonitoring';\nimport { TChartDataItem } from '@fsd-shared/ui-kit';\nimport { getDaysInMonth } from '@fsd-shared/utils';\nimport dayjs from 'dayjs';\n\nimport { TParsedCriteriaData } from './QuestionsCreatedContent.types';\n\nexport const getParsedCriteriaData = (\n selectedMonth: string[] = [],\n showFullAxis: boolean,\n criteriaData?: TQuestionsCreatedDiagramData,\n): TParsedCriteriaData => {\n const maxDaysCount = getMaxDaysInMonths(selectedMonth);\n\n const tableData = criteriaData?.table?.map((item) => {\n const { month, currentEasy, minEasy, currentHard, minHard, currentMedium, minMedium } = item;\n\n const allCurrentItem =\n currentEasy === null || currentMedium === null || currentHard === null\n ? '-'\n : currentEasy + currentMedium + currentHard;\n const allMinItem =\n minEasy === null || minMedium === null || minHard === null ? '-' : minEasy + minMedium + minHard;\n\n const formattedMonth = dayjs(month).format('MMMM, YYYY');\n return {\n month: formattedMonth[0].toUpperCase() + formattedMonth.slice(1),\n easy: `${currentEasy ?? '-'}/${minEasy ?? '-'}`,\n medium: `${currentMedium ?? '-'}/${minMedium ?? '-'}`,\n hard: `${currentHard ?? '-'}/${minHard ?? '-'}`,\n all: `${allCurrentItem}/${allMinItem}`,\n };\n });\n const tableColumns = [\n {\n title: 'Месяц',\n name: 'month',\n },\n {\n title: 'Лёгкие',\n name: 'easy',\n },\n {\n title: 'Средние',\n name: 'medium',\n },\n {\n title: 'Тяжелые',\n name: 'hard',\n },\n {\n title: 'Всего',\n name: 'all',\n },\n ];\n\n const chartData = criteriaData ? getChartData(criteriaData, maxDaysCount, selectedMonth) : undefined;\n const chartOptions = criteriaData ? getChartOptions(criteriaData, maxDaysCount, showFullAxis) : undefined;\n return {\n tableData,\n tableColumns,\n chartData,\n chartOptions,\n };\n};\nconst getChartData = (\n criteriaData: TQuestionsCreatedDiagramData,\n daysCountInMonth: number,\n selectedMonth: string[],\n) => {\n const filteredData = criteriaData.diagram.data.filter(({ points }) => !isEmptyList(points));\n\n const dataStartValue: TChartDataItem[][] = [\n [\n { type: 'number', role: 'domain' },\n { type: 'string', role: 'tooltip', p: { html: true } },\n ...filteredData?.map(({ label }) => label),\n ],\n ];\n\n [...Array(daysCountInMonth)].forEach((_, index) => {\n const chartPoints = filteredData?.reduce((acc, res): {\n month: string;\n value: number | null;\n color: string;\n }[] => {\n const point = res.points.find((item) => item.label === `${index + 1}`);\n acc.push({\n month: res.label,\n value: point ? point.value : null,\n color: res.color,\n });\n return acc;\n }, [] as { month: string; value: number | null; color: string }[]);\n\n const tooltip = getTooltipContent(index + 1, chartPoints);\n dataStartValue.push([index + 1, tooltip, ...chartPoints.map(({ value }) => value)]);\n });\n return dataStartValue;\n};\nconst getChartOptions = (\n criteriaData: TQuestionsCreatedDiagramData,\n daysCountInMonth: number,\n showAllHorizontalTicks: boolean,\n) => {\n const horizontalPoints: number[] = [...Array(daysCountInMonth)]\n .map((_, index) => index + 1)\n .filter((val) => (showAllHorizontalTicks ? val : val % 2 !== 0));\n const filteredData = criteriaData.diagram.data.filter(({ points }) => !isEmptyList(points));\n\n const maxValue = filteredData.reduce((acc, res): number => {\n const values = res.points.map(({ value }) => value);\n const currMaxValue = Math.max(...values);\n if (currMaxValue > acc) {\n acc = currMaxValue;\n }\n return acc;\n }, 2);\n\n return {\n vAxis: {\n minValue: 0,\n maxValue: maxValue ?? 2,\n },\n hAxis: {\n ticks: horizontalPoints,\n minValue: 1,\n },\n tooltip: {\n ignoreBounds: showAllHorizontalTicks,\n },\n series: filteredData.map(({ color }) => {\n return {\n color: color,\n type: 'line',\n };\n }),\n };\n};\nconst getMaxDaysInMonths = (selectedMonth: string[]): number => {\n return selectedMonth.reduce((acc, res): number => {\n const count = getDaysInMonth(dayjs(res));\n acc = acc > count ? acc : count;\n return acc;\n }, 0);\n};\nconst getTooltipContent = (dayNum: number, data: { month: string; value: number | null; color: string }[]) => {\n const tooltipContentTitle = `${dayNum}-е число месяца`;\n\n return `
\n
${tooltipContentTitle}
\n ${data\n .map(({ month, value, color }, index) => {\n const style = `color:${color};`;\n return value !== null\n ? `
${month}
${value}
`\n : null;\n })\n .join('')}\n
`;\n};\n","import React, { useMemo } from 'react';\nimport { useWindowWidth } from '@frontend-modules/frontend-utils';\nimport { AppSkeleton, AppText } from '@frontend-modules/ui-kit';\nimport { ChartsLegendItem, EmptyData, GoogleChartWrapper, TableBorderless } from '@fsd-shared/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TQuestionsCreatedCriterionContent } from './QuestionsCreatedContent.types';\nimport { getParsedCriteriaData } from './QuestionsCreatedContent.utils';\n\nimport './QuestionsCreatedContent.style.scss';\nexport const QuestionsCreatedContent: React.FC = (props) => {\n const { monthList, questionsCreatedDiagramData, isLoading } = props;\n const isTablet = useWindowWidth(1256);\n\n const { tableColumns, tableData, chartData, chartOptions } = useMemo(\n () => getParsedCriteriaData(monthList, !isTablet, questionsCreatedDiagramData),\n [monthList, questionsCreatedDiagramData],\n );\n\n const isInvalidData = useMemo(() => {\n if (chartData) {\n const columnsToCheck = [...Array(chartData[0].length - 2)].map((_, index) => {\n return 2 + index;\n });\n\n return chartData.slice(1).every((row) => {\n return columnsToCheck.every((index) => row[index] === null);\n });\n }\n }, [chartData]);\n\n return (\n
\n {questionsCreatedDiagramData || isLoading ? (\n <>\n \n
\n {isLoading ? (\n \n ) : (\n
\n {questionsCreatedDiagramData?.diagram?.data?.map(({ label, info, color }, index) => {\n const name = info ? `${label} (${info})` : label;\n\n return ;\n })}\n
\n )}\n \n
\n \n ) : (\n \n )}\n
\n );\n};\n","import React from 'react';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TChartTooltip } from './SummaryCriteriaChart.types';\n\nexport const ChartTooltip: React.FC = (props) => {\n const { payload, label, radarList, criteriaList, isPositive } = props;\n\n const title = `Количество учителей ${isPositive ? '' : 'не'} выполнивших критерий \"${criteriaList[label - 1]}\"`;\n if (payload && payload.length) {\n return (\n
\n \n {payload.map(({ name, value }, index) => {\n const color = radarList.find(({ title }) => title === name)?.color ?? E_COLORS.firm_blue_color;\n return (\n
\n \n \n
\n );\n })}\n
\n );\n }\n\n return null;\n};\n","import React from 'react';\nimport { PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart, Tooltip } from 'recharts';\n\nimport { ChartTooltip } from './ChartTooltip';\nimport { TSummaryCriteriaChart } from './SummaryCriteriaChart.types';\nimport { getRadarChartData, getRadarList } from './SummaryCriteriaChart.utils';\n\nimport './SummaryCriteriaChart.style.scss';\nexport const SummaryCriteriaChart: React.FC = (props) => {\n const { isPositive, criteriaList, chartData } = props;\n\n const radarList = getRadarList(chartData);\n const { data, key, ticksCount } = getRadarChartData(chartData, isPositive);\n\n return (\n \n \n (\n \n )}\n />\n \n \n {radarList.map(({ title, color }, index) => {\n return ;\n })}\n \n );\n};\n","import { TSummaryChartDataItem } from '@fsd-shared/models/statisticsMonitoring';\n\nimport { TRadarChartItem, TRadarData, TRadarItem } from './SummaryCriteriaChart.types';\n\nexport const getRadarList = (chartData?: TSummaryChartDataItem[]): TRadarItem[] => {\n return chartData\n ? chartData?.map(({ label, color }) => {\n return {\n title: label,\n color: color,\n };\n })\n : [];\n};\n\nexport const getRadarChartData = (chartData?: TSummaryChartDataItem[], isPositive?: boolean): TRadarData => {\n const criterias = chartData?.[0]?.points?.map(({ label }) => label);\n\n const radarData = criterias\n ? criterias?.map((criteria, index) => {\n const data: TRadarChartItem = {\n criteriaNum: index + 1,\n };\n chartData?.forEach(({ label, points }, index) => {\n const target = points.find(({ label }) => label === criteria);\n\n data[label] = isPositive\n ? target?.value.current ?? 0\n : (target?.value.max ?? 0) - (target?.value.current ?? 0);\n });\n return data;\n })\n : [];\n\n const maxVal = radarData.reduce((acc, res): number => {\n const { criteriaNum, ...points } = res;\n const max = Math.max(...Object.values({ ...points }));\n acc = max > acc ? max : acc;\n\n return acc;\n }, 20);\n const ticksStep = maxVal <= 100 ? 10 : maxVal <= 200 ? 20 : 50;\n\n return {\n data: radarData,\n key: 'criteriaNum',\n ticksCount: Math.trunc(maxVal / ticksStep) + 1,\n };\n};\n","import React, { useState } from 'react';\nimport { AppButton, AppFontIcon, AppNumberInput, AppSelect, AppText, AppTextareaInput } from '@frontend-modules/ui-kit';\nimport { EReasonsTitles, TReason } from '@fsd-shared/models/statisticsMonitoring';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { TTeacherWorkingSettings } from './TeacherWorkingSettings.types';\n\nimport './TeacherWorkingSettings.style.scss';\nexport const TeacherWorkingSettings: React.FC = (props) => {\n const {\n defaultValue = 0,\n maxValue = 22,\n minValue = 0,\n defaultReasonValue,\n error,\n defaultCustomReason,\n onApply,\n } = props;\n\n const [selectedReason, setSelectedReason] = useState(defaultReasonValue);\n const [value, setValue] = useState(defaultValue);\n const [customReason, setCustomReason] = useState(defaultCustomReason);\n\n const reasonsOptions = ['medical_certificate', 'not_month_start', 'teacher_vacation', 'other'].map((item) => {\n return {\n label: EReasonsTitles[item as TReason],\n value: item,\n };\n });\n\n const isButtonDisabled = selectedReason === 'other' ? !customReason : !selectedReason;\n\n const onApplySettings = () => {\n if (selectedReason) {\n onApply({\n value: value,\n changeReason: selectedReason,\n comment: selectedReason === 'other' ? customReason : undefined,\n });\n }\n };\n\n return (\n
\n
\n
\n \n prevState - 1)}\n />\n }\n addonAfter={\n maxValue || value === maxValue) ? 'disabled' : ''\n }`}\n icon={'plus-s'}\n size={20}\n onClick={setValue.bind(this, (prevState) => prevState + 1)}\n />\n }\n min={minValue}\n onChange={setValue}\n max={maxValue}\n parser={(value) => value.replace(/\\D/g, '')} // Удаляет все нецифровые символы\n precision={0}\n />\n
\n setSelectedReason(value)}\n />\n {selectedReason === 'other' && (\n
\n \n
\n )}\n
\n {error?.map((err, index) => (\n \n ))}\n \n
\n );\n};\n","import { convertError } from 'utils/convertError';\ntype TError = { message?: string };\n\nexport const getFieldsError = (error: TError): { [key: string]: string[] } => {\n const errorData = convertError(error as TError);\n\n if (typeof errorData === 'string') {\n return { message: [errorData] };\n }\n\n const extraFields = errorData.extra?.fields;\n\n if (extraFields) {\n const result: { [key: string]: string[] } = {};\n\n // Проверяем, является ли extra.fields массивом строк\n if (isArrayOfStrings(extraFields)) {\n result['message'] = extraFields as string[];\n } else {\n Object.entries(extraFields as { [key: string]: string | string[] }).forEach(([key, values]) => {\n if (typeof values === 'string') {\n result[key] = [values];\n } else {\n const isArray = isArrayOfStrings(values);\n\n result[key] = isArray ? values : values.map((item) => JSON.stringify(item));\n }\n });\n }\n return result;\n }\n\n if (errorData.error) {\n return { message: [errorData.error] };\n }\n\n return { message: ['Что-то пошло не так, попробуйте снова'] };\n};\n\nconst isArrayOfStrings = (data: any) => {\n return Array.isArray(data) && data.every((item) => typeof item === 'string');\n};\n","export const convertError = (error: {\n message?: string;\n}): { error?: string | null; extra?: Record | null } | string => {\n if (error.message) {\n try {\n const errorData = JSON.parse(error.message) as {\n message: string;\n extra: Record;\n error?: string;\n };\n\n let errorText = 'Ой, что-то пошло не так!';\n switch (errorData.message) {\n case 'Validation error':\n errorText = 'Ошибка поверки данных!';\n break;\n case 'Page not found':\n case 'Страница не найдена.':\n errorText = 'Данные не найдены!';\n break;\n default:\n break;\n }\n return {\n error: errorText,\n extra: errorData.extra ?? errorData,\n };\n } catch (e) {\n return {\n error: error.message === 'Rejected' ? 'Ой, что-то пошло не так!' : error.message,\n extra: {\n error: error.message,\n },\n };\n }\n }\n\n return JSON.stringify(error);\n};\n","export const getUpdatingErrors = (error: string): string[] => {\n try {\n const errorData = JSON.parse(error) as {\n message: string;\n extra: any;\n };\n if (errorData.extra) {\n const validationErr = errorData.extra?.fields;\n\n if (typeof errorData.extra === 'string') {\n return [errorData.extra];\n }\n if (Array.isArray(validationErr)) {\n return validationErr;\n }\n return Object.values(validationErr).map((item) => {\n if (Array.isArray(item)) {\n return item.join(', ');\n }\n return typeof item === 'string' ? item : JSON.stringify(item);\n });\n } else {\n return errorData.message ? [errorData.message] : ['Что-то пошло не так. Попробуйте еще раз!'];\n }\n } catch (e) {\n return [error];\n }\n};\n","export const MILLISECONDS_IN_HOUR = 1000 * 60 * 60;\nexport const TIME_AFTER_END_OF_LESSON = 10;\nexport const MINUTES_IN_DAY = 60 * 24;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { CourseDetails, ResponseCourse, ResponseCourseWithAssignments } from 'api/services/course';\nimport { ResponseTheme } from 'api/services/courseThemes';\nimport {\n blockCourseAction,\n changeCourseAction,\n CourseHoursWeekWithField,\n createCourseAction,\n deleteCourseAction,\n getAllCoursesForParallel,\n getCanFillCourseListAction,\n getCourseBySubjectAction,\n getCourseDetailsAction,\n getCoursesAction,\n getCoursesBySubject,\n getCourseWithThemesAction,\n publishCourseAction,\n} from 'store/actions/course';\nimport { patchCourseGroupsAction } from 'store/actions/courseGroup';\nimport { changeThemeAction } from 'store/actions/courseThemes';\nimport { FetchStatus } from 'types/api';\nimport { CanFillCourse, CourseData } from 'types/course';\nimport { CourseGroup } from 'types/courseGroup';\n\nexport type AllCoursesCalendarData = { [calendarPlanId: number]: { courses: CourseData[] } };\n\nexport type AllCoursesParallelsData = {\n [parallelId: number]: AllCoursesCalendarData;\n};\n\nexport type AllCourseHoursWeekData = { [courseId: number]: { hoursPerWeek: number } };\n\nexport type AllCalendarCourseHoursWeekData = { [calendarPlanId: number]: AllCourseHoursWeekData };\n\nexport interface CourseState {\n getStatus: FetchStatus;\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n deleteStatus: FetchStatus;\n publishStatus: FetchStatus;\n getAllCoursesStatus: FetchStatus;\n getCourseDetailStatus: FetchStatus;\n getCoursesHoursWeekStatus: FetchStatus;\n data: ResponseCourseWithAssignments[];\n allCoursesParallelsData: AllCoursesParallelsData;\n allCoursesCalendarData: AllCoursesCalendarData;\n courseHoursWeekWithField: CourseHoursWeekWithField;\n canFillCourse: CanFillCourse[];\n getStudCourses: FetchStatus;\n courses: ResponseCourse[];\n themes: ResponseTheme[];\n courseGroups: CourseGroup[];\n courseDetail: CourseDetails;\n error: unknown;\n}\n\nexport const initialState: CourseState = {\n getStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n publishStatus: FetchStatus.INITIAL,\n deleteStatus: FetchStatus.INITIAL,\n getStudCourses: FetchStatus.INITIAL,\n getAllCoursesStatus: FetchStatus.INITIAL,\n getCoursesHoursWeekStatus: FetchStatus.INITIAL,\n courses: [],\n data: [],\n themes: [],\n courseGroups: [],\n allCoursesParallelsData: {} as AllCoursesParallelsData,\n allCoursesCalendarData: {} as AllCoursesCalendarData,\n courseHoursWeekWithField: {} as CourseHoursWeekWithField,\n canFillCourse: [],\n getCourseDetailStatus: FetchStatus.INITIAL,\n courseDetail: {} as CourseDetails,\n error: null,\n};\n\nconst courseSlice = createSlice>({\n name: 'course',\n initialState,\n reducers: {\n reset: () => initialState,\n resetCourseCalendarParallelState: (state) => {\n state.allCoursesParallelsData = {} as AllCoursesParallelsData;\n state.allCoursesCalendarData = {} as AllCoursesCalendarData;\n state.courseHoursWeekWithField = {} as CourseHoursWeekWithField;\n state.getCoursesHoursWeekStatus = FetchStatus.INITIAL;\n state.getAllCoursesStatus = FetchStatus.INITIAL;\n },\n resetGetAllCoursesStatus: (state) => {\n state.getAllCoursesStatus = FetchStatus.INITIAL;\n },\n resetGetCoursesHoursWeekStatus: (state) => {\n state.getCoursesHoursWeekStatus = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getCoursesAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCoursesAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.data = payload[0];\n state.canFillCourse = payload[1];\n state.error = null;\n });\n builder.addCase(getCoursesAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(getCourseWithThemesAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCourseWithThemesAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.courseDetail = payload[0];\n state.themes = payload[1];\n state.error = null;\n });\n builder.addCase(getCourseWithThemesAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getCanFillCourseListAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCanFillCourseListAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.canFillCourse = payload;\n state.error = null;\n });\n builder.addCase(getCanFillCourseListAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getCoursesBySubject.fulfilled, (state, { payload }) => {\n state.data = payload.courses;\n state.courseGroups = payload.courseGroups;\n state.getStatus = FetchStatus.FETCHED;\n });\n builder.addCase(patchCourseGroupsAction.fulfilled, (state, { payload }) => {\n state.courseGroups = state.courseGroups.map((courseGroup) =>\n courseGroup.id === payload.id ? payload : courseGroup,\n );\n });\n\n builder.addCase(publishCourseAction.pending, (state) => {\n state.publishStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(publishCourseAction.fulfilled, (state) => {\n state.publishStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(publishCourseAction.rejected, (state, { error }) => {\n state.publishStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createCourseAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createCourseAction.fulfilled, (state, { payload }) => {\n state.postStatus = FetchStatus.FETCHED;\n state.data.push(payload);\n state.error = null;\n });\n builder.addCase(createCourseAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(changeCourseAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(changeCourseAction.fulfilled, (state, { payload }) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.data = state.data.map((course) => {\n if (course.id === payload?.id) {\n return {\n ...payload,\n };\n }\n\n return course;\n });\n state.error = null;\n });\n builder.addCase(changeCourseAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteCourseAction.pending, (state) => {\n state.deleteStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteCourseAction.fulfilled, (state, { payload }) => {\n state.deleteStatus = FetchStatus.FETCHED;\n state.data = state.data.filter((course) => course.id !== payload);\n state.error = null;\n });\n builder.addCase(deleteCourseAction.rejected, (state, { error }) => {\n state.deleteStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getCourseDetailsAction.pending, (state) => {\n state.getCourseDetailStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getCourseDetailsAction.fulfilled, (state, { payload }) => {\n state.getCourseDetailStatus = FetchStatus.FETCHED;\n state.courseDetail = payload;\n state.error = null;\n });\n builder.addCase(getCourseDetailsAction.rejected, (state, { error }) => {\n state.getCourseDetailStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(changeThemeAction.fulfilled, (state, { payload }) => {\n state.courses = state.courses.map((stateCourse) => {\n if (stateCourse.id === payload.course.id) {\n return {\n ...stateCourse,\n endToEndGeneralLessonOrdering: payload.course.endToEndGeneralLessonOrdering,\n };\n }\n\n return stateCourse;\n });\n });\n builder\n .addCase(getCourseBySubjectAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseBySubjectAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.data = payload;\n state.error = null;\n })\n .addCase(getCourseBySubjectAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(blockCourseAction.fulfilled, (state, { payload }) => {\n if (state.courseDetail.id === payload.id) {\n state.courseDetail = {\n ...state.courseDetail,\n isBlockEdit: payload.isBlockEdit,\n };\n }\n });\n\n builder\n .addCase(getAllCoursesForParallel.pending, (state) => {\n state.getAllCoursesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAllCoursesForParallel.fulfilled, (state, { payload }) => {\n state.getAllCoursesStatus = FetchStatus.FETCHED;\n state.allCoursesCalendarData[payload.calendarPlanId] = {\n courses: payload.courses,\n };\n state.allCoursesParallelsData[payload.parallelId] = state.allCoursesCalendarData;\n state.error = null;\n })\n .addCase(getAllCoursesForParallel.rejected, (state, { error }) => {\n state.getAllCoursesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetCourseState = courseSlice.actions.reset as ActionCreatorWithoutPayload;\n\nexport const resetCourseCalendarParallelState = courseSlice.actions\n .resetCourseCalendarParallelState as ActionCreatorWithoutPayload;\n\nexport const resetGetAllCoursesStatus = courseSlice.actions\n .resetGetAllCoursesStatus as ActionCreatorWithoutPayload;\n\nexport const resetGetCoursesHoursWeekStatus = courseSlice.actions\n .resetGetCoursesHoursWeekStatus as ActionCreatorWithoutPayload;\n\nexport const courseReducer = courseSlice.reducer;\n","import { IControl, IFormData } from '@frontend-modules/form-generator/dist/config/formGenerator.types';\nimport { createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { IGroupActionFilters, TGroupActionTableItem } from 'src-new/components/group-actions';\nimport {\n actionDetailsAction,\n createActionProgressAction,\n getActionCreateAction,\n getActionsListAction,\n getActionStudentsAction,\n getMoreActionsListAction,\n} from 'store/actions/groupActions';\nimport {\n getUpdatedActionList,\n getUpdatedDetailsItem,\n normalizeActionsList,\n normalizeTableData,\n} from 'store/normalizers/groupActions';\nimport { FetchStatus } from 'types/api';\nimport {\n IAction,\n IActionDetailsResponse,\n IActionStudentsResponsePagination,\n IGetActionCreateResponse,\n} from 'types/groupActions';\n\nexport interface IActionsDetailsItem extends IActionDetailsResponse {\n savedData?: IActionDetailsResponse['data'];\n}\n\nexport interface IActionsDetails {\n items?: {\n [key: string]: IActionsDetailsItem;\n };\n actionsDetailsStatus: FetchStatus;\n actionsDetailsError?: any;\n}\n\ninterface ICurrentModalData extends Omit {\n controls?: Array;\n}\ninterface IGroupActionsState {\n actionStudents?: {\n tableData?: Array;\n tablePagination?: IActionStudentsResponsePagination;\n tableDataStatus: FetchStatus;\n tableDataError: any;\n };\n actionsHistory?: {\n historyListData?: Array;\n actionsHistoryPagination?: IActionStudentsResponsePagination;\n actionsHistoryStatus?: FetchStatus;\n actionsHistoryMoreStatus?: FetchStatus;\n actionsHistoryError?: any;\n };\n actionsPlanned?: {\n plannedListData?: Array;\n actionsPlannedPagination?: IActionStudentsResponsePagination;\n actionsPlannedStatus?: FetchStatus;\n actionsPlannedMoreStatus?: FetchStatus;\n actionsPlannedError?: any;\n };\n createActionModal?: {\n currentModalData?: ICurrentModalData;\n nextStepModalData?: IGetActionCreateResponse['actions'];\n createActionModalStatus?: FetchStatus;\n createActionModalError?: any;\n };\n actionsDetails?: IActionsDetails;\n query?: IGroupActionFilters;\n}\n\nconst initialState = {\n tableData: undefined,\n actionsHistory: undefined,\n actionsPlanned: undefined,\n actionsDetails: undefined,\n createActionModal: undefined,\n query: undefined,\n};\n\nconst groupActionsSlice = createSlice>({\n name: 'groupActions',\n initialState,\n reducers: {\n setActionsQuery(state, action: PayloadAction) {\n state.query = action.payload;\n },\n clearDetails(state) {\n state.actionsDetails = undefined;\n },\n clearModalData(state) {\n state.createActionModal = undefined;\n },\n changeCurrentModalData(state, action: PayloadAction) {\n if (state.createActionModal) {\n state.createActionModal.currentModalData = action.payload;\n }\n },\n clearTableError(state) {\n if (state.actionStudents) {\n state.actionStudents.tableDataError = undefined;\n }\n },\n changeNextStepModalData(state, action: PayloadAction) {\n if (state.createActionModal) {\n state.createActionModal.nextStepModalData = action.payload;\n }\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getActionStudentsAction.pending, (state) => {\n const newData = {\n tableDataStatus: FetchStatus.FETCHING,\n tableDataError: null,\n };\n state.actionStudents = newData;\n })\n .addCase(getActionStudentsAction.fulfilled, (state, { payload }) => {\n if (payload) {\n const newData = {\n tableDataStatus: FetchStatus.FETCHED,\n tableDataError: null,\n tablePagination: payload.pagination,\n tableData: normalizeTableData(payload.results),\n };\n\n state.actionStudents = newData;\n }\n })\n .addCase(getActionStudentsAction.rejected, (state, { error }) => {\n let errorText;\n try {\n const errorFields = JSON.parse(error?.message ?? '')?.extra?.fields;\n errorText = Array.isArray(errorFields) ? errorFields.join('\\n') : 'Что то пошло не так';\n } catch (e) {\n errorText = 'Что то пошло не так';\n }\n const newData = {\n tableDataStatus: FetchStatus.ERROR,\n tableDataError: errorText,\n };\n state.actionStudents = newData;\n })\n .addCase(getActionsListAction.pending, (state, { meta }) => {\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n ...state.actionsHistory,\n actionsHistoryStatus: FetchStatus.FETCHING,\n actionsHistoryError: null,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n ...state.actionsPlanned,\n actionsPlannedStatus: FetchStatus.FETCHING,\n actionsPlannedError: null,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(getActionsListAction.fulfilled, (state, { payload, meta }) => {\n const normalizedPayloadResult = normalizeActionsList(payload.results);\n\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n actionsHistoryStatus: FetchStatus.FETCHED,\n actionsHistoryError: null,\n historyListData: normalizedPayloadResult,\n actionsHistoryPagination: payload.pagination,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n actionsPlannedStatus: FetchStatus.FETCHED,\n actionsPlannedError: null,\n plannedListData: normalizedPayloadResult,\n actionsPlannedPagination: payload.pagination,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(getActionsListAction.rejected, (state, { error, meta }) => {\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n actionsHistoryStatus: FetchStatus.ERROR,\n actionsHistoryError: error,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n actionsPlannedStatus: FetchStatus.ERROR,\n actionsPlannedError: error,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(getMoreActionsListAction.pending, (state, { meta }) => {\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n ...state.actionsHistory,\n actionsHistoryMoreStatus: FetchStatus.FETCHING,\n actionsHistoryError: null,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n ...state.actionsPlanned,\n actionsPlannedMoreStatus: FetchStatus.FETCHING,\n actionsPlannedError: null,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(getMoreActionsListAction.fulfilled, (state, { payload, meta }) => {\n const normalizedPayloadResult = normalizeActionsList(payload.results);\n\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n actionsHistoryMoreStatus: FetchStatus.FETCHED,\n actionsHistoryError: null,\n historyListData: [...(state.actionsHistory?.historyListData ?? []), ...normalizedPayloadResult],\n actionsHistoryPagination: payload.pagination,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n actionsPlannedMoreStatus: FetchStatus.FETCHED,\n actionsPlannedError: null,\n plannedListData: [...(state.actionsPlanned?.plannedListData ?? []), ...normalizedPayloadResult],\n actionsPlannedPagination: payload.pagination,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(getMoreActionsListAction.rejected, (state, { error, meta }) => {\n if (meta.arg.type === 'history') {\n const newHistoryData = {\n actionsHistoryMoreStatus: FetchStatus.ERROR,\n actionsHistoryError: error,\n };\n state.actionsHistory = newHistoryData;\n } else {\n const newPlannedData = {\n actionsPlannedMoreStatus: FetchStatus.ERROR,\n actionsPlannedError: error,\n };\n state.actionsPlanned = newPlannedData;\n }\n })\n .addCase(actionDetailsAction.pending, (state) => {\n const newDetailsData = {\n ...state.actionsDetails,\n actionsDetailsStatus: FetchStatus.FETCHING,\n actionsDetailsError: null,\n };\n state.actionsDetails = newDetailsData;\n })\n .addCase(actionDetailsAction.fulfilled, (state, { payload, meta }) => {\n const oldItems = state.actionsDetails?.items;\n const { type, id: targetId, cancel, filters } = meta.arg;\n const { historyListData } = state.actionsHistory || {};\n const { plannedListData } = state.actionsPlanned || {};\n const isHistory = type === 'history';\n // если данные были запрошены без фильтров или сортировки, то вернуться те данные, для которых сохранены фильтры\n const isSavedData = !filters;\n\n if (isHistory) {\n const newList = getUpdatedActionList(historyListData, targetId, 'updateItem', payload);\n state.actionsHistory = {\n ...state.actionsHistory,\n historyListData: newList,\n };\n } else {\n const updateType = cancel ? 'removeItem' : 'updateItem';\n const newList = getUpdatedActionList(plannedListData, targetId, updateType, payload);\n state.actionsPlanned = {\n ...state.actionsPlanned,\n plannedListData: newList,\n };\n }\n\n state.actionsDetails = {\n items: getUpdatedDetailsItem(oldItems, payload, isSavedData),\n actionsDetailsStatus: FetchStatus.FETCHED,\n actionsDetailsError: null,\n };\n })\n .addCase(actionDetailsAction.rejected, (state, { error }) => {\n const newDetailsData = {\n ...state.actionsDetails,\n actionsDetailsStatus: FetchStatus.ERROR,\n actionsDetailsError: error,\n };\n state.actionsDetails = newDetailsData;\n })\n .addCase(getActionCreateAction.pending, (state) => {\n const newData = {\n createActionModalStatus: FetchStatus.FETCHING,\n createActionModalError: null,\n };\n state.createActionModal = newData;\n })\n .addCase(getActionCreateAction.fulfilled, (state, { payload }) => {\n const { actions, ...currentModalData } = payload;\n const newData = {\n currentModalData: currentModalData,\n nextStepModalData: actions,\n createActionModalStatus: FetchStatus.FETCHED,\n createActionModalError: null,\n };\n state.createActionModal = newData;\n })\n .addCase(getActionCreateAction.rejected, (state, { error }) => {\n const newData = {\n ...state.createActionModal,\n createActionModalStatus: FetchStatus.ERROR,\n createActionModalError: error,\n };\n state.createActionModal = newData;\n })\n .addCase(createActionProgressAction.pending, (state) => {\n const loadingControls = [\n {\n actionType: 'loading',\n label: 'Загрузка',\n method: 'post',\n isLoading: true,\n type: 'main_button',\n url: '',\n },\n ];\n\n const newData = {\n ...state.createActionModal,\n currentModalData: { ...state.createActionModal?.currentModalData, controls: loadingControls },\n createActionModalError: null,\n };\n // @ts-ignore\n state.createActionModal = newData;\n })\n .addCase(createActionProgressAction.fulfilled, (state, { payload }) => {\n const creatingControls = [\n {\n actionType: 'success',\n label: 'Успешно',\n method: 'post',\n type: 'main_button',\n url: '',\n },\n ];\n const newData = {\n ...state.createActionModal,\n currentModalData: { ...state.createActionModal?.currentModalData, controls: creatingControls },\n createActionModalError: null,\n };\n // @ts-ignore\n state.createActionModal = newData;\n })\n .addCase(createActionProgressAction.rejected, (state, { error }) => {\n const creatingControls = [\n {\n actionType: 'error',\n label: 'Закрыть',\n method: 'post',\n type: 'main_button',\n url: '',\n },\n ];\n let errorText;\n try {\n const errorFields = JSON.parse(error?.message ?? '')?.extra?.fields;\n errorText = Array.isArray(errorFields) ? errorFields.join('\\n') : errorFields?.avgScoreFilters;\n } catch (e) {\n errorText = 'Что то пошло не так';\n }\n const newData = {\n ...state.createActionModal,\n currentModalData: {\n label: 'Ошибка',\n url: '',\n widgetList: [\n {\n value: errorText ?? 'Что то пошло не так',\n field: 'info_field',\n name: 'error',\n type: 'info_field',\n textColor: '#ea5959',\n mainColor: '#ea5959',\n backgroundColor: '#FFFFFF',\n },\n ],\n controls: creatingControls,\n },\n createActionModalError: errorText,\n };\n // @ts-ignore\n state.createActionModal = newData;\n });\n },\n});\nexport const groupActionsReducer = groupActionsSlice.reducer;\nexport const {\n setActionsQuery,\n changeNextStepModalData,\n clearDetails,\n changeCurrentModalData,\n clearModalData,\n clearTableError,\n} = groupActionsSlice.actions;\n","export const getNoun = (number: number, one: string, two: string, five: string): string => {\n let num = Math.abs(number);\n num %= 100;\n if (num >= 5 && num <= 20) {\n return five;\n }\n num %= 10;\n if (num === 1) {\n return one;\n }\n if (num >= 2 && num <= 4) {\n return two;\n }\n return five;\n};\nexport const getNumbersNoun = (val: number): string => {\n const isTens = val > 10 && val < 90 && val % 10 === 0;\n\n if (val === 0) {\n return `0`;\n } else if (isTens) {\n return `${val}-ти`;\n } else if (val === 90) {\n return `90-та`;\n } else if (val < 20) {\n return `${val}${getNumberEnding(val)}`;\n } else {\n const lastNam = val % 10;\n return `${val}${getNumberEnding(lastNam)}`;\n }\n};\nconst getNumberEnding = (val: number): string => {\n switch (val) {\n case 1:\n return `-го`;\n case 2:\n case 3:\n case 4:\n return `-x`;\n case 7:\n case 8:\n return `-ми`;\n default:\n return `-ти`;\n }\n};\n","import { useCallback, useMemo } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\n\nexport const useGetThemeQuery = (initValue: number): [number, (themeId: number | ((id: number) => number)) => void] => {\n const history = useHistory();\n const location = useLocation();\n\n const themeId = useMemo(() => {\n const theme = new URLSearchParams(location.search).get('theme');\n const themeId = Number(theme);\n\n if (!theme || isNaN(themeId)) {\n return initValue;\n }\n\n return themeId;\n }, [initValue, location]);\n\n const setThemeId = useCallback(\n (callback: number | ((id: number) => number)) => {\n const searchParams = new URLSearchParams(location.search);\n\n searchParams.set('theme', String(typeof callback === 'number' ? callback : callback(themeId)));\n\n history.replace(`${location.pathname}?${searchParams.toString()}`);\n },\n [history, location.pathname, location.search, themeId],\n );\n\n return [themeId, setThemeId];\n};\n","export const getFileTitle = (title: string, ext: string): string => {\n const arr = title.split('_');\n return arr.slice(0, arr.length).join('_') + ext;\n};\n","import { TARIFF_CURIOUS_TITLE } from 'App/constants';\nimport { useAppSelector } from 'store/store';\nimport { UserRoles } from 'types/user';\n\ninterface ReturnType {\n userId?: number;\n isMethodist?: boolean;\n isStudent?: boolean;\n isTeacher?: boolean;\n isCurator?: boolean;\n isPrincipal?: boolean;\n isLibrarian?: boolean;\n isProctor?: boolean;\n isStaff?: boolean;\n isSupport?: boolean;\n isAppUsed?: boolean;\n isTutor?: boolean;\n datetimeStartUsedApp?: null | string;\n isOlBlocked?: boolean;\n isNewsEditor?: boolean;\n isCurious?: boolean;\n}\n\nexport const useRole = (): ReturnType => {\n const { info } = useAppSelector((state) => state.user);\n return {\n userId: info?.id,\n isCurious: info?.tariffTitle === TARIFF_CURIOUS_TITLE,\n isTeacher: info?.userRoles?.includes(UserRoles.TEACHER),\n isMethodist: info?.userRoles?.includes(UserRoles.METHODIST),\n isStudent: info?.userRoles?.includes(UserRoles.STUDENT),\n isCurator: info?.userRoles?.includes(UserRoles.CURATOR),\n isTutor: info?.userRoles?.includes(UserRoles.TUTOR),\n isPrincipal: info?.userRoles?.includes(UserRoles.PRINCIPAL),\n isSupport: info?.userRoles?.includes(UserRoles.SUPPORT),\n isProctor: info?.userRoles?.includes(UserRoles.PROCTOR),\n isNewsEditor: info?.userRoles?.includes(UserRoles.NEWS_EDITOR),\n isLibrarian: info?.userRoles?.includes(UserRoles.LIBRARIAN),\n isStaff:\n info?.userRoles?.includes(UserRoles.TEACHER) ||\n info?.userRoles?.includes(UserRoles.METHODIST) ||\n info?.userRoles?.includes(UserRoles.PRINCIPAL) ||\n info?.userRoles?.includes(UserRoles.SUPPORT),\n isAppUsed: info?.isAppUsed,\n datetimeStartUsedApp: info?.datetimeStartUsedApp,\n isOlBlocked: info?.isOlBlocked,\n };\n};\n","import { HomeworkItemProps, LessonHomeworkItemProps } from '@lms-elements/atomic';\nimport moment from 'moment';\nimport { AssignmentProgressPreview } from 'types/assignmentProgress';\nimport { FilterTypes, IHomeworkItem } from 'types/homework';\nimport { LessonTypes, ScheduleEvent } from 'types/schedule';\n\nimport { combineHomeworks } from './homework';\n\nconst normalizeHomeworkItem = (\n homework: IHomeworkItem | AssignmentProgressPreview,\n): HomeworkItemProps & { courseId?: number } => {\n const homeworkItem = Object.keys(homework).includes('type');\n const isMandatory = homeworkItem\n ? (homework as IHomeworkItem).type.isMandatory\n : (homework as AssignmentProgressPreview).assignment.type.isMandatory;\n return {\n ...homework,\n assignedDate: homework.assignedDate ?? '',\n title: homework.title ?? '',\n courseGroupId: homework.courseGroup?.id,\n courseId: homework.course?.id,\n lessonId: typeof homework.lesson === 'number' ? homework.lesson : homework.lesson?.id ?? 0,\n subjectId: typeof homework.subject === 'number' ? homework.subject : homework.subject?.id ?? 0,\n description: 'description' in homework ? homework.description ?? '' : '',\n taskId: Number(homework.id),\n extraInfo: {\n label: isMandatory ? 'Обязательное' : 'Рекомендованное',\n },\n };\n};\n\nexport interface HomeworkObject {\n [key: string]: {\n date: string;\n data: HomeworkItemProps[];\n assigned: HomeworkItemProps[];\n };\n}\n\nexport const getHomeworksObject = (\n homeworks: Record,\n isStudent?: boolean,\n): HomeworkObject => {\n const {\n [FilterTypes.ASSIGNED]: assignedTasks,\n [FilterTypes.DEADLINE_FOR_COMPLETE]: studentTasks,\n [FilterTypes.DEADLINE_FOR_CHECK]: teacherTasks,\n } = homeworks;\n\n const data = (isStudent\n ? studentTasks\n : combineHomeworks(teacherTasks)\n ).reduce((result, homework) => {\n const date = moment(homework.deadlineForComplete).format('YYYY-MM-DD');\n if (result[date]) {\n result[date].data.push(normalizeHomeworkItem(homework));\n } else {\n result[date] = {\n data: [normalizeHomeworkItem(homework)],\n assigned: [],\n date,\n };\n }\n\n return result;\n }, {} as HomeworkObject);\n\n assignedTasks.forEach((task) => {\n const assignedDate = moment(task.assignedDate).format('YYYY-MM-DD');\n\n if (data[assignedDate]) {\n data[assignedDate].assigned.push(normalizeHomeworkItem(task));\n } else {\n data[assignedDate] = {\n assigned: [normalizeHomeworkItem(task)],\n data: [],\n date: assignedDate,\n };\n }\n });\n\n return data;\n};\n\nexport const getLinkToLesson = (\n lesson: ScheduleEvent | LessonHomeworkItemProps,\n isEventRoom?: boolean,\n isProctor?: boolean,\n isAssembly?: boolean,\n): string => {\n if (isAssembly) return '';\n const lessonTab = isEventRoom\n ? 'online_lesson'\n : moment(lesson.datetimeEnd).isBefore()\n ? 'attendance'\n : 'materials';\n return isProctor && isEventRoom\n ? `/proctoring/event-room/${lesson.id}`\n : `/subjects/${lesson.subject.id}/${lesson.lesson.id}/${lessonTab}?course_group=${lesson.courseGroup.id}`;\n};\n\nexport const getLabelByScheduleType = (type: LessonTypes): string => {\n switch (type) {\n case LessonTypes.ONLINE:\n return 'Онлайн-занятие';\n case LessonTypes.SELFPREPARATION:\n return 'Самоподготовка';\n case LessonTypes.TEST:\n return 'Контрольная работа';\n case LessonTypes.PARENT_MEETING:\n return 'Встреча с родителем';\n default:\n return 'Онлайн-занятие';\n }\n};\n","import { CalendarPlan } from '@lms-elements/educational-plan';\nimport { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { EducationPlanValues } from 'src-new/components/lms-elements/EducationPlan/EducationalPlan.types';\nimport {\n deleteEducationalPlanAction,\n getAllCalendarPlansAction,\n getAllEducationalPlanAction,\n getEducationalParallelsAction,\n getEducationalPlanAction,\n getEducationPLanWithParallelsAndCalendar,\n patchEducationalPlanAction,\n postEducationalPlanAction,\n} from 'store/actions/educationalPlan';\nimport { getNormalizedCalendarPlan, getNormalizedEducationPlan } from 'store/normalizers/educationalPlan';\nimport { getNormalizedResponseData } from 'store/normalizers/educationalPlan/getNormalizedResponseData';\nimport { FetchStatus } from 'types/api';\nimport { EducationalPlan } from 'types/educationalPlan';\nimport { Parallel } from 'types/parallel';\n\nexport interface EducationalPlanData {\n id: number;\n data: EducationPlanValues;\n}\n\ninterface EducationalPlanState {\n getAllEducationalPlansStatus: FetchStatus;\n getEducationalPlanStatus: FetchStatus;\n postEducationalPlanStatus: FetchStatus;\n patchEducationalPlanStatus: FetchStatus;\n deleteEducationalPlanStatus: FetchStatus;\n getEducationalParallelsStatus: FetchStatus;\n getAllCalendarPlansStatus: FetchStatus;\n educationalPlan: EducationalPlanData;\n educationalPlansData: EducationalPlanData[];\n parallels: Parallel[];\n calendarPlansData: CalendarPlan[];\n calendarPlan: CalendarPlan;\n educationalPlans: EducationalPlan[];\n error: unknown;\n}\n\nconst initialState = {\n getAllEducationalPlansStatus: FetchStatus.INITIAL,\n getEducationalPlanStatus: FetchStatus.INITIAL,\n postEducationalPlanStatus: FetchStatus.INITIAL,\n patchEducationalPlanStatus: FetchStatus.INITIAL,\n deleteEducationalPlanStatus: FetchStatus.INITIAL,\n getEducationalParallelsStatus: FetchStatus.INITIAL,\n getAllCalendarPlansStatus: FetchStatus.INITIAL,\n educationalPlan: {} as EducationalPlanData,\n educationalPlansData: [],\n parallels: [],\n educationalPlans: [],\n calendarPlansData: [],\n calendarPlan: {} as CalendarPlan,\n error: null,\n};\n\nconst educationalPlanSlice = createSlice>({\n name: 'educationalPlan',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getEducationalPlanAction.pending, (state) => {\n state.getEducationalPlanStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getEducationalPlanAction.fulfilled, (state, { payload }) => {\n state.getEducationalPlanStatus = FetchStatus.FETCHED;\n state.educationalPlan = getNormalizedResponseData(payload[0]);\n state.calendarPlansData = payload[1].map((value) => getNormalizedCalendarPlan(value));\n state.parallels = payload[2];\n state.error = null;\n })\n .addCase(getEducationalPlanAction.rejected, (state, { error }) => {\n state.getEducationalPlanStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(postEducationalPlanAction.pending, (state) => {\n state.postEducationalPlanStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(postEducationalPlanAction.fulfilled, (state, { payload }) => {\n state.postEducationalPlanStatus = FetchStatus.FETCHED;\n state.educationalPlan = getNormalizedResponseData(payload);\n state.educationalPlansData.push(state.educationalPlan);\n state.error = null;\n })\n .addCase(postEducationalPlanAction.rejected, (state, { error }) => {\n state.postEducationalPlanStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(patchEducationalPlanAction.pending, (state) => {\n state.patchEducationalPlanStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchEducationalPlanAction.fulfilled, (state, { payload }) => {\n state.patchEducationalPlanStatus = FetchStatus.FETCHED;\n state.educationalPlan = getNormalizedResponseData(payload);\n state.educationalPlansData = state.educationalPlansData.map((value) => {\n if (value.id === payload.id) {\n return state.educationalPlan;\n }\n return value;\n });\n state.error = null;\n })\n .addCase(patchEducationalPlanAction.rejected, (state, { error }) => {\n state.patchEducationalPlanStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(deleteEducationalPlanAction.pending, (state, { meta }) => {\n state.deleteEducationalPlanStatus = FetchStatus.FETCHING;\n state.educationalPlansData = state.educationalPlansData.filter((value) => value.id !== meta.arg);\n state.error = null;\n })\n .addCase(deleteEducationalPlanAction.fulfilled, (state, { payload }) => {\n state.deleteEducationalPlanStatus = FetchStatus.FETCHED;\n state.educationalPlansData = state.educationalPlansData.filter((value) => value.id !== payload);\n state.error = null;\n })\n .addCase(deleteEducationalPlanAction.rejected, (state, { error }) => {\n state.deleteEducationalPlanStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(getEducationalParallelsAction.pending, (state) => {\n state.getEducationalParallelsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getEducationalParallelsAction.fulfilled, (state, { payload }) => {\n state.getEducationalParallelsStatus = FetchStatus.FETCHED;\n state.parallels = payload;\n state.error = null;\n })\n .addCase(getEducationalParallelsAction.rejected, (state, { error }) => {\n state.getEducationalParallelsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(getAllCalendarPlansAction.pending, (state) => {\n state.getAllCalendarPlansStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAllCalendarPlansAction.fulfilled, (state, { payload }) => {\n state.getAllCalendarPlansStatus = FetchStatus.FETCHED;\n state.calendarPlansData = payload.map((value) => getNormalizedCalendarPlan(value));\n state.error = null;\n })\n .addCase(getAllCalendarPlansAction.rejected, (state, { error }) => {\n state.getAllCalendarPlansStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getEducationPLanWithParallelsAndCalendar.pending, (state) => {\n state.getAllEducationalPlansStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getEducationPLanWithParallelsAndCalendar.fulfilled, (state, { payload }) => {\n state.getAllEducationalPlansStatus = FetchStatus.FETCHED;\n state.educationalPlansData = payload[0].map((value) => getNormalizedEducationPlan(value));\n state.calendarPlansData = payload[1].map((value) => getNormalizedCalendarPlan(value));\n state.parallels = payload[2];\n state.error = null;\n })\n .addCase(getEducationPLanWithParallelsAndCalendar.rejected, (state, { error }) => {\n state.getAllEducationalPlansStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getAllEducationalPlanAction.pending, (state) => {\n state.getAllEducationalPlansStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAllEducationalPlanAction.fulfilled, (state, { payload }) => {\n state.getAllEducationalPlansStatus = FetchStatus.FETCHED;\n state.educationalPlans = payload;\n state.error = null;\n })\n .addCase(getAllEducationalPlanAction.rejected, (state, { error }) => {\n state.getAllEducationalPlansStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetEducationalPlanState = educationalPlanSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const deleteEducationPlan = educationalPlanSlice.actions.deleteEducationPlan;\nexport const educationalPlanReducer = educationalPlanSlice.reducer;\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { PreloaderArrows, PreloaderLogo } from '@lms-elements/icons';\n\nimport './Loader.scss';\n\nconst CnLoader = cn('loader');\n\nexport const Loader: React.FC = () => {\n return (\n
\n
\n \n
\n
\n \n
\n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\n\nimport './GroupAvatars.scss';\n\ninterface IClassBadgeProps {\n avatars: string[];\n}\n\nconst CnGroupAvatars = cn('groupAvatars');\n\nexport const GroupAvatars: React.FC = ({ avatars }) => {\n return (\n
\n {avatars.slice(0, 4).map((avatar, index) => (\n
\n \"user\n
\n ))}\n
\n );\n};\n","export default __webpack_public_path__ + \"static/media/user-avatar.ad20e5b6.png\";","import { useMemo } from 'react';\nimport { useQuery } from 'hooks/useQuery';\nimport moment from 'moment';\n\ninterface SchedulePeriodParams {\n periodTime: 'day' | 'week' | 'month';\n periodLabel: string;\n currentDate: string;\n}\n\nexport const useGetSchedulePeriod = (): SchedulePeriodParams => {\n const query = useQuery(); // period: 'month' | 'week' | 'day'; currentDay: string;\n const [periodTime, periodLabel] = useMemo((): ['day' | 'week' | 'month', string] => {\n switch (query.get('period')) {\n case 'month':\n return ['month', 'Месяц'];\n case 'week':\n return ['week', 'Неделя'];\n default:\n return ['day', 'День'];\n }\n }, [query]);\n const currentDate = useMemo(() => query.get('date') || moment().format('YYYY-MM-DD'), [query]);\n\n return {\n periodTime,\n periodLabel,\n currentDate,\n };\n};\n","import { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\nexport const checkIsMaterialChanged = (material: IMaterial, initialMaterial: IMaterial): boolean => {\n switch (material.type) {\n case ContentMaterialTypeEnum.header:\n return (\n JSON.stringify(material.headerData) !== JSON.stringify(initialMaterial.headerData) ||\n material.html !== initialMaterial.html\n );\n case ContentMaterialTypeEnum.audio:\n case ContentMaterialTypeEnum.video:\n return (\n JSON.stringify(material.audioData) !== JSON.stringify(initialMaterial.audioData) ||\n JSON.stringify(material.videoData) !== JSON.stringify(initialMaterial.videoData) ||\n material.url !== initialMaterial.url\n );\n case ContentMaterialTypeEnum.text:\n return (\n JSON.stringify(material.textData) !== JSON.stringify(initialMaterial.textData) ||\n material.html !== initialMaterial.html\n );\n case ContentMaterialTypeEnum.photo:\n return JSON.stringify(material.imageData) !== JSON.stringify(initialMaterial.imageData);\n case ContentMaterialTypeEnum.exercise:\n return JSON.stringify(material.exerciseData) !== JSON.stringify(initialMaterial.exerciseData);\n case ContentMaterialTypeEnum.table:\n return JSON.stringify(material.tableData) !== JSON.stringify(initialMaterial.tableData);\n default:\n return true;\n }\n};\n","import { ContentState, convertToRaw, EditorState } from 'draft-js';\nimport { ContentMaterialTypeEnum, IMaterial } from 'types/materials';\n\ninterface Params {\n material: IMaterial;\n isEditor: boolean;\n materialType: ContentMaterialTypeEnum;\n markup?: string;\n}\n\ninterface MaterialsData {\n id: number;\n content: string;\n html: string;\n typeOfContent: ContentMaterialTypeEnum;\n}\n\nconst getMaterialsDataForNewsElement = ({ material, isEditor, materialType, markup = '' }: Params): MaterialsData => {\n let content = '.';\n let urls: { name: string; url: string }[] = [];\n\n if (materialType === ContentMaterialTypeEnum.document || Array.isArray(material.documentData)) {\n urls = material.documentData\n .map((document) => {\n if (typeof document === 'string') {\n return { name: document, url: document };\n }\n\n if (!(document instanceof File)) {\n return document;\n }\n })\n .filter(Boolean) as { name: string; url: string }[];\n }\n\n switch (materialType) {\n case ContentMaterialTypeEnum.text:\n if (isEditor) {\n content = JSON.stringify(convertToRaw((material.textData as EditorState).getCurrentContent()));\n } else {\n content = material.textData as string;\n }\n break;\n case ContentMaterialTypeEnum.audio:\n content = JSON.stringify({\n url: typeof material.audioData === 'string' ? material.audioData : material.url,\n songName: material.audioData.songName || (material.audioData.file as File)?.name,\n });\n break;\n case ContentMaterialTypeEnum.video:\n case ContentMaterialTypeEnum.kinescope:\n content = JSON.stringify({\n url: typeof material.videoData.url === 'string' ? material.videoData.url : '',\n });\n break;\n case ContentMaterialTypeEnum.photo:\n content = JSON.stringify({\n data: material.imageData?.data ?? [],\n description: material.imageData.description || '',\n });\n break;\n case ContentMaterialTypeEnum.document:\n content = JSON.stringify({\n data: urls,\n });\n break;\n case ContentMaterialTypeEnum.header:\n content = JSON.stringify(material.headerData);\n break;\n case ContentMaterialTypeEnum.table:\n content = JSON.stringify({\n ...material.tableData,\n table: {\n ...material.tableData.table,\n table: material.tableData.table.table?.map((row) =>\n row.map((cell) =>\n typeof cell === 'string'\n ? convertToRaw(ContentState.createFromText(cell))\n : convertToRaw(cell?.getCurrentContent()),\n ),\n ),\n editorBuffer: convertToRaw(\n typeof material.tableData.table.editorBuffer === 'string'\n ? ContentState.createFromText(material.tableData.table.editorBuffer)\n : material.tableData.table.editorBuffer.getCurrentContent(),\n ),\n },\n });\n break;\n case ContentMaterialTypeEnum.exercise:\n break;\n }\n const typeOfContent =\n material.type === ContentMaterialTypeEnum.kinescope ? ContentMaterialTypeEnum.video : material.type;\n\n return {\n id: material.id,\n typeOfContent: typeOfContent,\n content,\n html: materialType === ContentMaterialTypeEnum.text ? markup : '.',\n };\n};\n\ninterface PostNewsElementsParams {\n materials: MaterialsData[];\n files: {\n [materialOrder: number]: File[] | undefined;\n };\n}\n\nexport const getMaterialsDataForPostNews = (materials: IMaterial[]): PostNewsElementsParams => {\n return materials.reduce(\n (data, material, index) => {\n data.materials.push(\n getMaterialsDataForNewsElement({\n material,\n isEditor: true,\n materialType: material.type,\n markup: material.html,\n }),\n );\n\n switch (material.type) {\n case ContentMaterialTypeEnum.audio:\n data.files[index] = material.audioData.file instanceof File ? [material.audioData.file] : undefined;\n break;\n case ContentMaterialTypeEnum.video:\n data.files[index] = material.videoData.file instanceof File ? [material.videoData.file] : undefined;\n break;\n case ContentMaterialTypeEnum.document:\n data.files[index] =\n Array.isArray(material.documentData) &&\n material.documentData.some((value) => value instanceof File)\n ? (material.documentData.filter((value) => value instanceof File) as File[])\n : undefined;\n break;\n case ContentMaterialTypeEnum.photo:\n data.files[index] = material.imageData.data.some(({ data }) => data instanceof File)\n ? (material.imageData.data\n .filter(({ data }) => data instanceof File)\n .map(({ data }) => data) as File[])\n : undefined;\n break;\n default:\n break;\n }\n\n return data;\n },\n {\n materials: [],\n files: [],\n } as PostNewsElementsParams,\n );\n};\n","import { ContentMaterialTypeEnum, IMaterial, IMaterialDocument } from 'types/materials';\n\nexport const getMaterialsFilesDeleteArray = (\n oldMaterial: IMaterial | undefined,\n newMaterial: IMaterial,\n): number[] | undefined => {\n if (!oldMaterial) {\n return;\n }\n\n if (oldMaterial.type === ContentMaterialTypeEnum.document) {\n const oldFiltered = oldMaterial.documentData.filter(\n (value) => !(typeof value === 'string' || value instanceof File),\n ) as IMaterialDocument[];\n const newFiltered = newMaterial.documentData.filter(\n (value) => !(typeof value === 'string' || value instanceof File),\n ) as IMaterialDocument[];\n const deleted = oldFiltered\n .filter(\n (value: IMaterialDocument) =>\n value.id && !newFiltered.some((newValue: IMaterialDocument) => value.id === newValue.id),\n )\n .map((value) => value.id) as number[];\n return deleted;\n }\n\n if (oldMaterial.type === ContentMaterialTypeEnum.video) {\n const newVideoFile = newMaterial.videoData.file;\n if (newVideoFile || newMaterial.videoData.url) {\n // удалить все прошлые файлы\n return newMaterial.files.map((file) => file.id);\n }\n }\n};\n","import moment from 'moment';\nimport { AssignmentProgressPreview, AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { IHomeworkItem } from 'types/homework';\n\nimport { HomeworkStatusProps } from 'components/HomeworkStatus';\n\nexport const getHomeworksStatusFromAssignmentProgress = (\n assignmentProgress: Omit[] | null,\n): HomeworkStatusProps => {\n if (assignmentProgress && assignmentProgress.length) {\n const id = assignmentProgress[0].assignment.id;\n const totalTasks = assignmentProgress.length;\n const autoIssuetasks = assignmentProgress\n .filter((homework) => homework.status === AssignmentProgressStatus.DEFERRED_ASSIGNMENT)\n .sort((a, b) => moment(a.assignedDate).diff(b.assignedDate));\n const autoIssue = autoIssuetasks.length > 0;\n const givenHometaskTitle = !autoIssue ? `${totalTasks}ДЗ` : '';\n const passOffTasks = assignmentProgress.filter(\n (homework) => homework.status === AssignmentProgressStatus.COMPLETED,\n ).length;\n const toCheckTasks = assignmentProgress.filter(\n (homework) => homework.status === AssignmentProgressStatus.ON_CHECK,\n ).length;\n\n let status: 'auto' | 'notAuto' | 'homework' | 'notHomework';\n if (autoIssue) {\n status = autoIssue ? 'auto' : 'notAuto';\n } else {\n status = givenHometaskTitle ? 'homework' : 'notHomework';\n }\n\n return {\n autoIssueSetUp: autoIssue,\n autoIssuetotalTasks: totalTasks,\n autoIssuetasks: autoIssuetasks.length,\n autoIssueTime: autoIssuetasks[0]?.assignedDate || '',\n toCheckTasks,\n id,\n status,\n autoIssue,\n givenHometaskTitle,\n passOffTasks,\n };\n }\n\n return {\n id: 1,\n status: 'homework',\n autoIssue: false,\n autoIssueSetUp: false,\n autoIssuetotalTasks: 0,\n autoIssuetasks: 0,\n autoIssueTime: '',\n givenHometaskTitle: '',\n passOffTasks: 0,\n toCheckTasks: 0,\n };\n};\n","import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { ChangeAdaptationParams } from 'api/services/adaptation';\nimport { changeAdaptationAction } from 'store/actions/adaptation';\nimport { getAdaptationProgressAction } from 'store/actions/adaptationProgress';\nimport { FetchStatus } from 'types/api';\nimport { AdaptationStudent } from 'types/students';\n\ninterface ISetAdaptationItemProgressPayload extends ChangeAdaptationParams {\n studentId?: number;\n}\nexport interface AdaptationProgressState {\n getAdaptationProgressStatus: FetchStatus;\n adaptationProgressStudents: AdaptationStudent[];\n error: unknown;\n}\n\nexport const initialState: AdaptationProgressState = {\n getAdaptationProgressStatus: FetchStatus.INITIAL,\n adaptationProgressStudents: [],\n error: null,\n};\n\nconst adaptationProgressSlice = createSlice>({\n name: 'adaptationProgress',\n initialState,\n reducers: {\n setAdaptationItemProgress: (state, { payload }: { payload: ISetAdaptationItemProgressPayload }) => {\n const { id, done, studentId } = payload;\n\n state.adaptationProgressStudents = state.adaptationProgressStudents.map((progress) => {\n const { student, adaptationSkills } = progress;\n\n if (student?.id === studentId) {\n return {\n ...progress,\n adaptationSkills: adaptationSkills?.map((skill) => {\n if (skill.id === id) {\n return {\n ...skill,\n done,\n };\n }\n return skill;\n }),\n };\n }\n return progress;\n });\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getAdaptationProgressAction.pending, (state) => {\n state.getAdaptationProgressStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getAdaptationProgressAction.fulfilled, (state, { payload }) => {\n state.getAdaptationProgressStatus = FetchStatus.FETCHED;\n state.adaptationProgressStudents = payload;\n state.error = null;\n })\n .addCase(getAdaptationProgressAction.rejected, (state, { error }) => {\n state.getAdaptationProgressStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(changeAdaptationAction.fulfilled, (state, action) => {\n state.adaptationProgressStudents = state.adaptationProgressStudents.map((adaptationProgress) => {\n if (adaptationProgress.student.id === action.meta.arg.studentId) {\n return {\n ...adaptationProgress,\n adaptationSkills: adaptationProgress.adaptationSkills?.map((skill) => {\n const adaptation = action.payload.find((item) => skill.id === item.id);\n if (adaptation) {\n return {\n ...adaptation,\n title: adaptation.adaptation,\n };\n }\n\n return skill;\n }),\n };\n }\n\n return adaptationProgress;\n });\n });\n },\n});\nexport const { setAdaptationItemProgress } = adaptationProgressSlice.actions;\n\nexport const adaptationProgressReducer = adaptationProgressSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n createCalendarPlanAction,\n createCalendarPlanPeriodAction,\n createSchoolHolidaysAction,\n deleteCalendarPlanAction,\n getCalendarPlanAction,\n getCalendarPlanListAction,\n patchCalendarPlanAction,\n patchCalendarPlanPeriodAction,\n patchSchoolHolidaysAction,\n} from 'store/actions/calendarPlan';\nimport { FetchStatus } from 'types/api';\nimport { ICalendarPlan } from 'types/calendarPlan';\n\ninterface CalendarPlanState {\n calendarPlan?: ICalendarPlan;\n createdPlanId?: number;\n calendarPlanStatus: FetchStatus;\n calendarPlanList?: Array;\n calendarPlanListStatus: FetchStatus;\n createCalendarPlanStatus: FetchStatus;\n createCalendarPlanPeriodStatus: FetchStatus;\n createSchoolHolidaysStatus: FetchStatus;\n deleteCalendarPlanStatus: FetchStatus;\n patchCalendarPlanPeriodStatus: FetchStatus;\n patchCalendarPlanStatus: FetchStatus;\n patchSchoolHolidaysStatus: FetchStatus;\n isEditCalendarPlan?: boolean;\n error?: unknown;\n}\n\nconst initialState = {\n calendarPlanStatus: FetchStatus.INITIAL,\n calendarPlanListStatus: FetchStatus.INITIAL,\n createCalendarPlanStatus: FetchStatus.INITIAL,\n createCalendarPlanPeriodStatus: FetchStatus.INITIAL,\n createSchoolHolidaysStatus: FetchStatus.INITIAL,\n deleteCalendarPlanStatus: FetchStatus.INITIAL,\n patchCalendarPlanPeriodStatus: FetchStatus.INITIAL,\n patchCalendarPlanStatus: FetchStatus.INITIAL,\n patchSchoolHolidaysStatus: FetchStatus.INITIAL,\n};\n\nconst calendarPlanSlice = createSlice>({\n name: 'calendarPlan',\n initialState,\n reducers: {\n reset: () => initialState,\n editCalendarPlan: (state) => {\n state.isEditCalendarPlan = true;\n },\n resetCreatedPlanId: (state) => {\n state.createdPlanId = undefined;\n },\n resetCalendarPlan: (state) => {\n state.calendarPlan = undefined;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(createCalendarPlanAction.pending, (state) => {\n state.createCalendarPlanStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createCalendarPlanAction.fulfilled, (state, { payload }) => {\n state.createCalendarPlanStatus = FetchStatus.FETCHED;\n state.calendarPlan = payload;\n state.createdPlanId = payload.id;\n state.error = null;\n })\n .addCase(createCalendarPlanAction.rejected, (state, { error }) => {\n state.createCalendarPlanStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(createCalendarPlanPeriodAction.pending, (state) => {\n state.createCalendarPlanPeriodStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createCalendarPlanPeriodAction.fulfilled, (state) => {\n state.createCalendarPlanPeriodStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(createCalendarPlanPeriodAction.rejected, (state, { error }) => {\n state.createCalendarPlanPeriodStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(createSchoolHolidaysAction.pending, (state) => {\n state.createSchoolHolidaysStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createSchoolHolidaysAction.fulfilled, (state) => {\n state.createSchoolHolidaysStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(createSchoolHolidaysAction.rejected, (state, { error }) => {\n state.createSchoolHolidaysStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(deleteCalendarPlanAction.pending, (state, action) => {\n state.deleteCalendarPlanStatus = FetchStatus.FETCHING;\n state.calendarPlanList = state.calendarPlanList?.filter((item) => item.id !== action.meta.arg);\n state.error = null;\n })\n .addCase(deleteCalendarPlanAction.fulfilled, (state) => {\n state.deleteCalendarPlanStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(deleteCalendarPlanAction.rejected, (state, { error }) => {\n state.deleteCalendarPlanStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(getCalendarPlanAction.pending, (state) => {\n state.calendarPlanListStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCalendarPlanAction.fulfilled, (state, { payload }) => {\n state.calendarPlanListStatus = FetchStatus.FETCHED;\n state.calendarPlan = payload;\n state.isEditCalendarPlan = false;\n state.error = null;\n })\n .addCase(getCalendarPlanAction.rejected, (state, { error }) => {\n state.calendarPlanListStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(getCalendarPlanListAction.pending, (state) => {\n state.calendarPlanListStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCalendarPlanListAction.fulfilled, (state, { payload }) => {\n state.calendarPlanListStatus = FetchStatus.FETCHED;\n state.calendarPlanList = payload;\n state.error = null;\n })\n .addCase(getCalendarPlanListAction.rejected, (state, { error }) => {\n state.calendarPlanListStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(patchCalendarPlanAction.pending, (state) => {\n state.patchCalendarPlanStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchCalendarPlanAction.fulfilled, (state) => {\n state.patchCalendarPlanStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(patchCalendarPlanAction.rejected, (state, { error }) => {\n state.patchCalendarPlanStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(patchCalendarPlanPeriodAction.pending, (state) => {\n state.patchCalendarPlanPeriodStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchCalendarPlanPeriodAction.fulfilled, (state) => {\n state.patchCalendarPlanPeriodStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(patchCalendarPlanPeriodAction.rejected, (state, { error }) => {\n state.patchCalendarPlanPeriodStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(patchSchoolHolidaysAction.pending, (state) => {\n state.patchSchoolHolidaysStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchSchoolHolidaysAction.fulfilled, (state) => {\n state.patchSchoolHolidaysStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(patchSchoolHolidaysAction.rejected, (state, { error }) => {\n state.patchSchoolHolidaysStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const editCalendarPlan = calendarPlanSlice.actions.editCalendarPlan as ActionCreatorWithoutPayload;\nexport const resetCalendarPlanState = calendarPlanSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const resetCalendarPlan = calendarPlanSlice.actions.resetCalendarPlan as ActionCreatorWithoutPayload;\nexport const resetCreatedPlanId = calendarPlanSlice.actions.resetCreatedPlanId as ActionCreatorWithoutPayload;\nexport const calendarPlanReducer = calendarPlanSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { News, NewsElement } from 'api/services/news';\nimport {\n createNewsAction,\n deleteNewsAction,\n getNewsByDatesAction,\n getNewsByIdAction,\n getUnreadNewsStatusAction,\n updateNewsAction,\n updateNewsLikesAction,\n} from 'store/actions/news';\n// import { normalizeNewsElements } from 'store/normalizers/news';\nimport { FetchStatus } from 'types/api';\n\ninterface NewsState {\n allDataFetchStatus: FetchStatus;\n createNewsStatus: FetchStatus;\n updateNewsStatus: FetchStatus;\n updateNewsLikesStatus: FetchStatus;\n getNewsByIdStatus: FetchStatus;\n getNewsStatus: FetchStatus;\n deleteNewsStatus: FetchStatus;\n seletedNews: News;\n elements: NewsElement[];\n error: unknown;\n news: News[];\n hasUnreadNews: boolean;\n}\n\nconst initialState: NewsState = {\n allDataFetchStatus: FetchStatus.INITIAL,\n getNewsStatus: FetchStatus.INITIAL,\n updateNewsLikesStatus: FetchStatus.INITIAL,\n createNewsStatus: FetchStatus.INITIAL,\n updateNewsStatus: FetchStatus.INITIAL,\n getNewsByIdStatus: FetchStatus.INITIAL,\n deleteNewsStatus: FetchStatus.INITIAL,\n error: null,\n elements: [],\n seletedNews: {} as News,\n news: [],\n hasUnreadNews: false,\n};\n\nconst newsSlice = createSlice>({\n name: 'news',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getUnreadNewsStatusAction.fulfilled, (state, { payload }) => {\n state.hasUnreadNews = payload.unreadNewsExists;\n });\n builder\n .addCase(createNewsAction.pending, (state) => {\n state.createNewsStatus = FetchStatus.FETCHING;\n })\n .addCase(createNewsAction.fulfilled, (state) => {\n state.createNewsStatus = FetchStatus.FETCHED;\n })\n .addCase(createNewsAction.rejected, (state) => {\n state.createNewsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getNewsByIdAction.pending, (state) => {\n state.getNewsByIdStatus = FetchStatus.FETCHING;\n })\n .addCase(getNewsByIdAction.fulfilled, (state, { payload }) => {\n state.getNewsByIdStatus = FetchStatus.FETCHED;\n state.seletedNews = payload;\n state.elements = payload.elements;\n })\n .addCase(getNewsByIdAction.rejected, (state) => {\n state.getNewsByIdStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(updateNewsAction.pending, (state) => {\n state.updateNewsStatus = FetchStatus.FETCHING;\n })\n .addCase(updateNewsAction.fulfilled, (state) => {\n state.updateNewsStatus = FetchStatus.FETCHED;\n })\n .addCase(updateNewsAction.rejected, (state) => {\n state.updateNewsStatus = FetchStatus.ERROR;\n });\n builder\n .addCase(getNewsByDatesAction.pending, (state) => {\n state.getNewsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getNewsByDatesAction.fulfilled, (state, { payload }) => {\n state.getNewsStatus = FetchStatus.FETCHED;\n state.news = payload;\n state.error = null;\n })\n .addCase(getNewsByDatesAction.rejected, (state, { error }) => {\n state.getNewsStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(updateNewsLikesAction.pending, (state) => {\n state.updateNewsLikesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(updateNewsLikesAction.fulfilled, (state, { payload }) => {\n state.updateNewsLikesStatus = FetchStatus.FETCHED;\n state.news = state.news.map((el) => {\n if (el.id === payload.id) {\n return {\n ...el,\n like: payload.like,\n likesCount: payload.likesCount,\n };\n }\n return el;\n });\n\n state.seletedNews = { ...state.seletedNews, like: payload.like, likesCount: payload.likesCount };\n\n state.error = null;\n })\n .addCase(updateNewsLikesAction.rejected, (state, { error }) => {\n state.updateNewsLikesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(deleteNewsAction.pending, (state) => {\n state.deleteNewsStatus = FetchStatus.FETCHING;\n })\n .addCase(deleteNewsAction.fulfilled, (state) => {\n state.deleteNewsStatus = FetchStatus.FETCHED;\n })\n .addCase(deleteNewsAction.rejected, (state) => {\n state.deleteNewsStatus = FetchStatus.ERROR;\n });\n },\n});\n\nexport const resetNewsState = newsSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const newsReducer = newsSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { PeriodMark } from 'api/services/periodMark';\nimport { PeriodMarkFinal } from 'api/services/periodMark/getPeriodMarkFinal';\nimport { IQuarterMark } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { getPeriodMarkAction, getPeriodStudentMarkAction, patchPeriodMarkAction } from 'store/actions/periodMark';\nimport { FetchStatus } from 'types/api';\n\ninterface PeriodMarkState {\n getPeriodMarkStatus: FetchStatus;\n patchPeriodMarkStatus: FetchStatus;\n getPeriodMarkFinalStatus: FetchStatus;\n periodMark: PeriodMark[];\n quarterMarks: IQuarterMark[];\n quarterStudentMarks: IQuarterMark[];\n periodsCache: number[];\n courseGroupCache: number;\n periodMarkFinal: PeriodMarkFinal[];\n mark: PeriodMark;\n error: unknown;\n}\n\nconst initialState = {\n getPeriodMarkStatus: FetchStatus.INITIAL,\n patchPeriodMarkStatus: FetchStatus.INITIAL,\n getPeriodMarkFinalStatus: FetchStatus.INITIAL,\n periodMark: [],\n quarterMarks: [],\n periodsCache: [],\n courseGroupCache: -1,\n periodMarkFinal: [],\n quarterStudentMarks: [],\n mark: {\n id: 0,\n score: 0,\n student: 0,\n period: 0,\n course: 0,\n avgScore: 0,\n passed: null,\n notCertified: false,\n },\n error: null,\n};\n\nconst periodMarkSlice = createSlice>({\n name: 'periodMark',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n\n .addCase(getPeriodMarkAction.fulfilled, (state, { payload }) => {\n state.getPeriodMarkStatus = FetchStatus.FETCHED;\n const { periodMarks, needRewrite } = payload;\n if (needRewrite) state.quarterMarks = periodMarks;\n else state.quarterMarks = state.quarterMarks.concat(periodMarks);\n state.error = null;\n })\n .addCase(getPeriodMarkAction.rejected, (state, { error }) => {\n state.getPeriodMarkStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getPeriodStudentMarkAction.fulfilled, (state, { payload }) => {\n state.getPeriodMarkStatus = FetchStatus.FETCHED;\n state.quarterStudentMarks = state.quarterStudentMarks.concat(payload);\n state.error = null;\n })\n .addCase(getPeriodStudentMarkAction.rejected, (state, { error }) => {\n state.getPeriodMarkStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(patchPeriodMarkAction.pending, (state) => {\n state.patchPeriodMarkStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchPeriodMarkAction.fulfilled, (state, { payload }) => {\n state.patchPeriodMarkStatus = FetchStatus.FETCHED;\n state.mark = payload;\n state.quarterMarks = state.quarterMarks.map((periodMark) => {\n if (periodMark.id === payload.id) {\n return {\n ...periodMark,\n score: payload.notCertified ? -1 : payload.score !== null ? payload.score : undefined,\n testApproved: payload.passed !== null ? payload.passed : undefined,\n };\n }\n return periodMark;\n });\n state.error = null;\n })\n .addCase(patchPeriodMarkAction.rejected, (state, { error }) => {\n state.patchPeriodMarkStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetPeriodMarkState = periodMarkSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const periodMarkReducer = periodMarkSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { QuestionsReviewData, QuestionsRevisionData } from 'api/services/question';\nimport { getQuestionsForReviewAction, getQuestionsOnRevisionAction } from 'store/actions/question';\nimport { FetchStatus } from 'types/api';\n\ninterface QuestionsReviewRevisionState {\n questionsFetchStatus: FetchStatus;\n questionsForReviewData?: QuestionsReviewData;\n questionsOnRevisionData?: QuestionsRevisionData;\n}\n\nconst initialState: QuestionsReviewRevisionState = {\n questionsFetchStatus: FetchStatus.INITIAL,\n questionsForReviewData: {} as QuestionsReviewData,\n questionsOnRevisionData: {} as QuestionsRevisionData,\n};\n\nconst questionsReviewRevisionSlice = createSlice<\n QuestionsReviewRevisionState,\n SliceCaseReducers\n>({\n name: 'formError',\n initialState,\n reducers: {\n reset(state) {\n state.questionsFetchStatus = FetchStatus.INITIAL;\n state.questionsForReviewData = {} as QuestionsReviewData;\n state.questionsOnRevisionData = {} as QuestionsRevisionData;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getQuestionsForReviewAction.pending, (state) => {\n state.questionsFetchStatus = FetchStatus.FETCHING;\n })\n .addCase(getQuestionsForReviewAction.fulfilled, (state, { payload }) => {\n state.questionsFetchStatus = FetchStatus.FETCHED;\n state.questionsForReviewData = payload;\n })\n .addCase(getQuestionsForReviewAction.rejected, (state) => {\n state.questionsFetchStatus = FetchStatus.ERROR;\n });\n\n builder\n .addCase(getQuestionsOnRevisionAction.pending, (state) => {\n state.questionsFetchStatus = FetchStatus.FETCHING;\n })\n .addCase(getQuestionsOnRevisionAction.fulfilled, (state, { payload }) => {\n state.questionsFetchStatus = FetchStatus.FETCHED;\n state.questionsOnRevisionData = payload;\n })\n .addCase(getQuestionsOnRevisionAction.rejected, (state) => {\n state.questionsFetchStatus = FetchStatus.ERROR;\n });\n },\n});\n\nexport const questionsReviewRevisionReducer = questionsReviewRevisionSlice.reducer;\nexport const resetQuestionReviewState = questionsReviewRevisionSlice.actions\n .reset as ActionCreatorWithoutPayload;\n","import { AttendanceResponseData } from 'api/services/attendance';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { AttendanceData } from 'types/attendance';\nimport { MarkData } from 'types/mark';\n\nconst LESSON_DURATION = 40;\n\n/**\n *\n * @param minutes - time in minutes\n * @param typeOfInfo - attendance status\n */\nconst getInfoDescription = (minutes: number, typeOfInfo?: 'camera'): string => {\n const percent = Math.round((minutes / LESSON_DURATION) * 100);\n if (!typeOfInfo) {\n return `Присутствовал ${percent}% - ${minutes}м урока`;\n }\n\n return `Камера была включена ${percent}% - ${minutes ?? 0}м урока`;\n};\n\n/**\n *\n * @param minutes - time in minutes\n * @param status - attendance status\n */\nfunction getInfo(minutes: number, status: AttendanceStatus): { isRecognizedFace: boolean; description?: string };\nfunction getInfo(\n minutes: number,\n status: AttendanceStatus,\n typeOfInfo: 'camera',\n): { isTurnedOn: boolean; description?: string };\nfunction getInfo(\n minutes: number,\n status: AttendanceStatus,\n typeOfInfo?: 'camera',\n): { isRecognizedFace: boolean; description?: string } | { isTurnedOn: boolean; description?: string } {\n const description = getInfoDescription(minutes, typeOfInfo);\n\n if (!typeOfInfo) {\n if (status === AttendanceStatus.ABSENT) {\n return {\n isRecognizedFace: false,\n description: 'Отсутствовал на уроке',\n };\n }\n\n if (minutes < 5) {\n return {\n isRecognizedFace: false,\n description,\n };\n }\n\n return { isRecognizedFace: true, description };\n }\n\n if (status === AttendanceStatus.ABSENT) {\n return {\n isTurnedOn: false,\n description: 'Отсутствовал на уроке',\n };\n }\n\n if (minutes < 5) {\n return {\n description,\n isTurnedOn: false,\n };\n }\n\n return {\n description,\n isTurnedOn: true,\n };\n}\n\nexport const normalizeAttendanceData = (data: AttendanceResponseData[] = []): Record => {\n return data.reduce((attendanceMap, attendance) => {\n const { id, student: studentInfo, status, lateDuration, cameraDuration, presenceDuration, marks } = attendance;\n\n attendanceMap[id] = {\n id,\n studentId: studentInfo.id,\n studentImage: studentInfo?.photoUrl || '',\n studentFirstName: studentInfo.firstName,\n studentLastName: studentInfo.lastName,\n isAdaptation: studentInfo?.isAdaptation,\n presenceInfo: { status, lateMinutes: lateDuration },\n cameraInfo: getInfo(cameraDuration, status, 'camera'),\n faceInfo: getInfo(presenceDuration || 0, status),\n marks: marks.reduce((marks, mark) => {\n marks.push({\n id: mark.id,\n score: mark.score,\n comment: mark.comment,\n weight: mark.weight,\n author: mark.author?.id,\n authorFirstName: mark.author?.firstName,\n authorLastName: mark.author?.lastName,\n authorPatronymic: mark.author?.patronymic,\n });\n return marks;\n }, [] as MarkData[]),\n };\n\n return attendanceMap;\n }, {} as Record);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { AssignmentMark } from 'api/services/assignment/getAssignmentMarks';\nimport { AttendanceMark } from 'api/services/attendance/getAttendanceMarks';\nimport { IMark, IStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport {\n changeAttendanceMarkAction,\n createAttendanceMarkAction,\n deleteAttendanceMarkAction,\n getAttendanceMarksAction,\n getLessonAttendanceDataAction,\n getMarksAction,\n getStudentMarksAction,\n patchStudentPresenceAction,\n} from 'store/actions/attendance';\nimport { normalizeAttendanceData } from 'store/normalizers/attendance';\nimport { FetchStatus } from 'types/api';\nimport { AttendanceData } from 'types/attendance';\nimport { MarkData } from 'types/mark';\n\nexport interface AttendanceState {\n fetchStatus: FetchStatus;\n getAttendMarksStatus: FetchStatus;\n getMarksStatus: FetchStatus;\n marks: IMark[];\n mark: AssignmentMark[];\n dataMap: Record;\n status: IStatus[];\n attendMark: AttendanceMark[];\n error: unknown;\n}\n\nconst initialState: AttendanceState = {\n fetchStatus: FetchStatus.INITIAL,\n getMarksStatus: FetchStatus.INITIAL,\n getAttendMarksStatus: FetchStatus.INITIAL,\n status: [],\n mark: [],\n dataMap: {},\n marks: [],\n attendMark: [],\n error: null,\n};\n\nconst attendanceSlice = createSlice>({\n name: 'attendance',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getLessonAttendanceDataAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonAttendanceDataAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.dataMap = normalizeAttendanceData(payload);\n state.error = null;\n })\n .addCase(getLessonAttendanceDataAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(patchStudentPresenceAction.fulfilled, (state, { payload }) => {\n state.dataMap[payload.id] = {\n ...state.dataMap[payload.id],\n ...payload,\n marks: payload.marks.reduce((marks, mark) => {\n marks.push({\n id: mark.id,\n score: mark.score,\n comment: mark.comment,\n weight: mark.weight,\n author: mark.author?.id,\n authorFirstName: mark.author?.firstName,\n authorLastName: mark.author?.lastName,\n authorPatronymic: mark.author?.patronymic,\n });\n return marks;\n }, [] as MarkData[]),\n };\n });\n builder.addCase(createAttendanceMarkAction.fulfilled, (state, { payload }) => {\n if (payload) {\n const { attendanceLesson, ...markData } = payload;\n state.dataMap[attendanceLesson] = {\n ...state.dataMap[attendanceLesson],\n marks: state.dataMap[attendanceLesson].marks.concat([markData]),\n };\n }\n });\n builder.addCase(changeAttendanceMarkAction.fulfilled, (state, { payload }) => {\n const { attendanceLesson, ...markData } = payload;\n state.dataMap[attendanceLesson] = {\n ...state.dataMap[attendanceLesson],\n marks: state.dataMap[attendanceLesson].marks.map((mark) => {\n if (mark.id === markData.id) {\n return markData;\n }\n\n return mark;\n }),\n };\n });\n builder.addCase(deleteAttendanceMarkAction.fulfilled, (state, { payload }) => {\n const { attendanceLesson, markId } = payload;\n state.dataMap[attendanceLesson] = {\n ...state.dataMap[attendanceLesson],\n marks: state.dataMap[attendanceLesson].marks.filter((mark) => mark.id !== markId),\n };\n });\n\n builder.addCase(getAttendanceMarksAction.pending, (state) => {\n state.getAttendMarksStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getAttendanceMarksAction.fulfilled, (state, { payload }) => {\n state.getAttendMarksStatus = FetchStatus.FETCHED;\n state.attendMark = payload;\n state.error = null;\n });\n builder.addCase(getAttendanceMarksAction.rejected, (state, { error }) => {\n state.getAttendMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getMarksAction.pending, (state) => {\n state.getMarksStatus = FetchStatus.FETCHING;\n });\n builder.addCase(getMarksAction.fulfilled, (state, { payload }) => {\n const { marks, stats } = payload;\n state.marks = state.marks.filter(({ id }) => !marks.some(({ id: markId }) => markId === id)).concat(marks);\n state.status = state.status\n .filter(({ id }) => !stats.some(({ id: statId }) => statId === id))\n .concat(stats);\n state.getMarksStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(getMarksAction.rejected, (state, { error }) => {\n state.getMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder.addCase(getStudentMarksAction.pending, (state) => {\n state.getMarksStatus = FetchStatus.FETCHING;\n state.status = [];\n });\n builder.addCase(getStudentMarksAction.fulfilled, (state, { payload }) => {\n const { marks, stats } = payload;\n state.marks = state.marks.filter(({ id }) => !marks.some(({ id: markId }) => markId === id)).concat(marks);\n state.status = state.status\n .filter(({ id }) => !stats.some(({ id: statId }) => statId === id))\n .concat(stats);\n state.getMarksStatus = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(getStudentMarksAction.rejected, (state, { error }) => {\n state.getMarksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const attendanceReducer = attendanceSlice.reducer;\nexport const resetAttendanceState = attendanceSlice.actions.reset as ActionCreatorWithoutPayload;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { GroupStatistics } from 'api/services/courseGroups/getGroupStatistics';\nimport { Period } from 'api/services/courseGroups/getPeriods';\nimport { Topic } from 'api/services/courseGroups/getTopics';\nimport { PatchCourseGroupsParams } from 'api/services/courseGroups/patchCourseGroups';\nimport {\n getAllEducationalPlanWithCourseGroupsAction,\n getCourseGroupDetailsAction,\n getCourseGroupDetailsWithStudentsAction,\n getCourseGroupExpelledStudentsAction,\n getCourseGroupsAction,\n getCourseGroupsByAcademicYearAction,\n getCourseGroupsByCourseAction,\n getCourseGroupsBySubjectAndYearAction,\n getCourseGroupStudentsAction,\n getEducationalPlanWithCourseGroupsAction,\n getGroupStatisticsAction,\n getPeriodsAction,\n getPeriodTopicsAction,\n getPeriodTopicsWithStudentAction,\n getTopicsAction,\n patchCourseGroupsAction,\n PeriodTopics,\n resetCourseGroupDataAction,\n} from 'store/actions/courseGroup';\nimport { createLessonAction, deleteLessonAction, handleLessonScheduleAction } from 'store/actions/courseLessons';\nimport { getCourseGroupsMap } from 'store/normalizers/courseGroup/getCourseGroupMap';\nimport { FetchStatus } from 'types/api';\nimport { CourseGroup, CourseGroupExpelledStudents } from 'types/courseGroup';\nimport { EducationalPlan, ResponseEducationPlan } from 'types/educationalPlan';\nimport { Student } from 'types/students';\n\nimport { insertItemIntoArray } from 'utils/insertItemIntoArray';\n\ninterface CourseGroupState {\n fetchGroupsStatus: FetchStatus;\n fetchGroupDetailsStatus: FetchStatus;\n fetchCourseGroupStudentStatus: FetchStatus;\n fetchPeriodTopicsStatus: FetchStatus;\n fetchPeriodStatus: FetchStatus;\n getGroupsWithEduPlanStatus: FetchStatus;\n getPeriodTopicsWithStudentStatus: FetchStatus;\n getGroupStatistics: FetchStatus;\n groupStatistics: GroupStatistics;\n patchStatus: FetchStatus;\n courseGroups: (CourseGroup & { endToEndLessonOrdering?: number[]; students?: Student[] })[];\n courseGroupExpelledStudents: CourseGroupExpelledStudents | null;\n fetchGroupsExpelledStudentsStatus: FetchStatus;\n courseGroupsMap: {\n [groupId: number]: CourseGroup & { endToEndLessonOrdering?: number[]; students?: Student[] };\n };\n periods: Period[];\n periodTopics: PeriodTopics[];\n topics: Topic[];\n educationalPlans: EducationalPlan[];\n eduPlan: ResponseEducationPlan;\n error: unknown;\n patchParams: PatchCourseGroupsParams;\n selectedCourseGroup?: number;\n}\n\nconst initialState = {\n fetchGroupsStatus: FetchStatus.INITIAL,\n fetchPeriodTopicsStatus: FetchStatus.INITIAL,\n fetchGroupDetailsStatus: FetchStatus.INITIAL,\n fetchCourseGroupStudentStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n fetchPeriodStatus: FetchStatus.INITIAL,\n getGroupsWithEduPlanStatus: FetchStatus.INITIAL,\n getPeriodTopicsWithStudentStatus: FetchStatus.INITIAL,\n getGroupStatistics: FetchStatus.INITIAL,\n fetchGroupsExpelledStudentsStatus: FetchStatus.INITIAL,\n courseGroups: [],\n courseGroupExpelledStudents: null,\n courseGroupsMap: {},\n periods: [],\n topics: [],\n periodTopics: [],\n groupStatistics: {\n allLessonsCount: 0,\n allOlLessonsCount: 0,\n allSpLessonsCount: 0,\n passedLessonsCount: 0,\n passedOlLessonsCount: 0,\n passedSpLessonsCount: 0,\n reserveLessonsAvailable: 0,\n reserveLessonsCurrent: 0,\n currentTopic: 0,\n },\n eduPlan: {\n id: 0,\n title: '',\n parallel: {\n id: 0,\n title: '',\n },\n calendarPlan: {\n id: 0,\n title: '',\n },\n educationalPlanItems: [],\n },\n educationalPlans: [],\n patchParams: {\n id: 0,\n teachers: [],\n },\n error: null,\n};\n\nconst courseGroupSlice = createSlice>({\n name: 'courseGroup',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(resetCourseGroupDataAction, (state) => {\n state.courseGroups = [];\n })\n .addCase(getCourseGroupsAction.pending, (state) => {\n state.fetchGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupsAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsStatus = FetchStatus.FETCHED;\n state.courseGroups = payload;\n state.error = null;\n })\n .addCase(getCourseGroupsAction.rejected, (state, { error }) => {\n state.fetchGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(getCourseGroupExpelledStudentsAction.pending, (state) => {\n state.fetchGroupsExpelledStudentsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupExpelledStudentsAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsExpelledStudentsStatus = FetchStatus.FETCHED;\n state.courseGroupExpelledStudents = payload;\n state.error = null;\n })\n .addCase(getCourseGroupExpelledStudentsAction.rejected, (state, { error }) => {\n state.fetchGroupsExpelledStudentsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(getCourseGroupsByAcademicYearAction.pending, (state) => {\n state.fetchGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupsByAcademicYearAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsStatus = FetchStatus.FETCHED;\n state.courseGroups = payload;\n state.error = null;\n })\n .addCase(getCourseGroupsByAcademicYearAction.rejected, (state, { error }) => {\n state.fetchGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getPeriodsAction.pending, (state) => {\n state.fetchPeriodStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getPeriodsAction.fulfilled, (state, { payload }) => {\n state.fetchPeriodStatus = FetchStatus.FETCHED;\n state.periods = payload;\n state.error = null;\n })\n\n .addCase(getPeriodsAction.rejected, (state, { error }) => {\n state.fetchPeriodStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getTopicsAction.pending, (state) => {\n state.fetchGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getTopicsAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsStatus = FetchStatus.FETCHED;\n state.topics = payload;\n state.error = null;\n })\n .addCase(getTopicsAction.rejected, (state, { error }) => {\n state.fetchGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getPeriodTopicsAction.pending, (state) => {\n state.fetchPeriodTopicsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getPeriodTopicsAction.fulfilled, (state, { payload }) => {\n state.fetchPeriodTopicsStatus = FetchStatus.FETCHED;\n state.periodTopics = payload;\n state.error = null;\n })\n .addCase(getPeriodTopicsAction.rejected, (state, { error }) => {\n state.fetchPeriodTopicsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getCourseGroupsBySubjectAndYearAction.pending, (state) => {\n state.fetchGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupsBySubjectAndYearAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsStatus = FetchStatus.FETCHED;\n state.courseGroups = payload;\n state.error = null;\n })\n .addCase(getCourseGroupsBySubjectAndYearAction.rejected, (state, { error }) => {\n state.fetchGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getCourseGroupsByCourseAction.pending, (state) => {\n state.fetchGroupsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupsByCourseAction.fulfilled, (state, { payload }) => {\n state.fetchGroupsStatus = FetchStatus.FETCHED;\n state.courseGroups = payload;\n state.error = null;\n })\n\n .addCase(getCourseGroupsByCourseAction.rejected, (state, { error }) => {\n state.fetchGroupsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getCourseGroupDetailsAction.pending, (state) => {\n state.fetchGroupDetailsStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupDetailsAction.fulfilled, (state, { payload }) => {\n state.fetchGroupDetailsStatus = FetchStatus.FETCHED;\n state.courseGroups = state.courseGroups.find((group) => group.id === payload.id)\n ? state.courseGroups.map((group) => {\n if (payload.id === group.id) {\n return {\n ...group,\n ...payload,\n };\n }\n return group;\n })\n : [payload];\n state.error = null;\n })\n .addCase(getCourseGroupDetailsAction.rejected, (state, { error }) => {\n state.fetchGroupDetailsStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(createLessonAction.fulfilled, (state, { payload }) => {\n const { order, courseId, id } = payload;\n state.courseGroups = state.courseGroups.map((courseGroup) => {\n if (courseGroup.course.id === courseId) {\n const newOrdering = insertItemIntoArray(courseGroup.endToEndLessonOrdering ?? [], id, order);\n\n return {\n ...courseGroup,\n endToEndLessonOrdering: newOrdering,\n };\n }\n\n return courseGroup;\n });\n })\n .addCase(deleteLessonAction.fulfilled, (state, { payload }) => {\n const { lessonId, courseId } = payload;\n\n state.courseGroups = state.courseGroups.map((courseGroup) => {\n if (courseGroup.course.id === courseId) {\n const newOrdering = courseGroup.endToEndLessonOrdering?.filter((id) => lessonId !== id) ?? [];\n\n return {\n ...courseGroup,\n endToEndLessonOrdering: newOrdering,\n };\n }\n\n return courseGroup;\n });\n })\n .addCase(getCourseGroupStudentsAction.pending, (state) => {\n state.fetchCourseGroupStudentStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getCourseGroupStudentsAction.fulfilled, (state, { payload }) => {\n const { id, students } = payload;\n state.fetchCourseGroupStudentStatus = FetchStatus.FETCHED;\n state.courseGroups = state.courseGroups.map((courseGroup) => {\n if (courseGroup.id === id) {\n return {\n ...courseGroup,\n students,\n };\n }\n\n return courseGroup;\n });\n state.error = null;\n })\n .addCase(getCourseGroupStudentsAction.rejected, (state, { error }) => {\n state.fetchCourseGroupStudentStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(getCourseGroupDetailsWithStudentsAction.pending, (state) => {\n state.fetchGroupDetailsStatus = FetchStatus.FETCHING;\n })\n .addCase(getCourseGroupDetailsWithStudentsAction.fulfilled, (state, { payload }) => {\n state.fetchGroupDetailsStatus = FetchStatus.FETCHED;\n state.courseGroupsMap = getCourseGroupsMap([payload[0]], payload[1]);\n })\n .addCase(patchCourseGroupsAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n })\n .addCase(patchCourseGroupsAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchCourseGroupsAction.fulfilled, (state, { payload }) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.patchParams = {\n id: payload.id,\n teachers: payload.teachers.map((item) => item.id),\n };\n state.error = null;\n })\n .addCase(getAllEducationalPlanWithCourseGroupsAction.rejected, (state, { error }) => {\n state.getGroupsWithEduPlanStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getAllEducationalPlanWithCourseGroupsAction.fulfilled, (state, { payload }) => {\n state.getGroupsWithEduPlanStatus = FetchStatus.FETCHED;\n state.courseGroups = payload[0];\n state.educationalPlans = payload[1];\n state.error = null;\n })\n\n .addCase(getEducationalPlanWithCourseGroupsAction.rejected, (state, { error }) => {\n state.getGroupsWithEduPlanStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getEducationalPlanWithCourseGroupsAction.fulfilled, (state, { payload }) => {\n state.getGroupsWithEduPlanStatus = FetchStatus.FETCHED;\n state.courseGroups = payload[0];\n state.eduPlan = payload[1];\n state.error = null;\n })\n\n .addCase(getPeriodTopicsWithStudentAction.rejected, (state, { error }) => {\n state.getPeriodTopicsWithStudentStatus = FetchStatus.ERROR;\n state.error = error;\n })\n\n .addCase(getPeriodTopicsWithStudentAction.fulfilled, (state, { payload }) => {\n state.getPeriodTopicsWithStudentStatus = FetchStatus.FETCHED;\n const {\n groupId,\n periodTopics,\n periods,\n students: { id, students },\n } = payload;\n state.periodTopics = periodTopics;\n state.periods = periods;\n state.selectedCourseGroup = groupId;\n\n state.courseGroups = state.courseGroups.map((courseGroup) => {\n if (courseGroup.id === id) {\n return {\n ...courseGroup,\n students,\n };\n }\n\n return courseGroup;\n });\n state.error = null;\n })\n\n .addCase(getGroupStatisticsAction.pending, (state) => {\n state.getGroupStatistics = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getGroupStatisticsAction.fulfilled, (state, { payload }) => {\n state.getGroupStatistics = FetchStatus.FETCHED;\n state.groupStatistics = payload;\n state.error = null;\n })\n\n .addCase(getGroupStatisticsAction.rejected, (state, { error }) => {\n state.getGroupStatistics = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetCourseGroupState = courseGroupSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const courseGroupReducer = courseGroupSlice.reducer;\n","import { CourseGroup } from 'types/courseGroup';\nimport { Student } from 'types/students';\n\ntype CourseGroupsMap = {\n [groupId: number]: CourseGroup & { endToEndLessonOrdering?: number[]; students?: Student[] };\n};\n\nexport const getCourseGroupsMap = (\n courseGroups: (CourseGroup & { endToEndLessonOrdering?: number[]; students?: Student[] })[],\n studentsData?: { id: number; students: Student[] },\n): CourseGroupsMap => {\n return courseGroups.reduce((groupsMap, group) => {\n if (studentsData?.id === group.id) {\n groupsMap[group.id] = {\n ...group,\n students: studentsData.students,\n };\n } else {\n groupsMap[group.id] = group;\n }\n\n return groupsMap;\n }, {} as CourseGroupsMap);\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n changeLessonTopicAction,\n createLessonAction,\n deleteLessonAction,\n getLessonDataAction,\n getLessonsAction,\n getLessonsAndHomeworksAction,\n handleLessonScheduleAction,\n} from 'store/actions/courseLessons';\nimport { blockEditMaterialsAction } from 'store/actions/material';\nimport { normalizeCourseLesson } from 'store/normalizers/lesson/normalizeCourseLesson';\nimport { FetchStatus } from 'types/api';\nimport { CourseLesson, LessonDetails } from 'types/lesson';\nimport { LessonTypes } from 'types/schedule';\n\nimport { insertItemIntoArray } from 'utils/insertItemIntoArray';\n\nexport interface LessonState {\n getStatusLessons: FetchStatus;\n postStatusLessons: FetchStatus;\n patchStatusLessons: FetchStatus;\n deleteStatusLessons: FetchStatus;\n publishStatusLesson: FetchStatus;\n lessons: CourseLesson[];\n lessonDetails: {\n [lessonId: number]: LessonDetails;\n };\n error: unknown;\n}\n\nexport const initialState: LessonState = {\n getStatusLessons: FetchStatus.INITIAL,\n postStatusLessons: FetchStatus.INITIAL,\n patchStatusLessons: FetchStatus.INITIAL,\n deleteStatusLessons: FetchStatus.INITIAL,\n publishStatusLesson: FetchStatus.INITIAL,\n lessons: [],\n lessonDetails: {},\n error: null,\n};\n\nconst lessonSlice = createSlice>({\n name: 'Lesson',\n initialState,\n reducers: {\n resetCourseLessonState(state) {\n state.getStatusLessons = FetchStatus.INITIAL;\n state.postStatusLessons = FetchStatus.INITIAL;\n state.patchStatusLessons = FetchStatus.INITIAL;\n state.deleteStatusLessons = FetchStatus.INITIAL;\n state.lessons = [];\n state.error = null;\n },\n resetStatuses(state) {\n state.getStatusLessons = FetchStatus.INITIAL;\n state.patchStatusLessons = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(createLessonAction.pending, (state) => {\n state.postStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(createLessonAction.fulfilled, (state, { payload }) => {\n state.postStatusLessons = FetchStatus.FETCHED;\n\n state.lessons = insertItemIntoArray(\n state.lessons.filter((item) => item.id !== payload.id),\n { ...payload, type: 'common', isPublished: true },\n payload.order,\n );\n state.error = null;\n })\n .addCase(createLessonAction.rejected, (state, { error }) => {\n state.postStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(handleLessonScheduleAction.pending, (state) => {\n state.patchStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(handleLessonScheduleAction.fulfilled, (state, { payload }) => {\n const { lessonSchedule, lesson } = payload;\n if (lessonSchedule) {\n const { updatedLessonSchedules, createdLessonSchedules, deletedLessonSchedules } = lessonSchedule;\n\n if (updatedLessonSchedules) {\n const lessonSchedule = {\n ...updatedLessonSchedules,\n order:\n updatedLessonSchedules.order ??\n state.lessons.find(({ id }) => id === updatedLessonSchedules.id)?.order ??\n 1,\n };\n state.lessons = insertItemIntoArray(\n state.lessons.filter((item) => item.id !== lessonSchedule.id),\n lessonSchedule,\n lessonSchedule.order,\n );\n }\n if (createdLessonSchedules) {\n const lessonSchedule = {\n ...createdLessonSchedules,\n order: createdLessonSchedules.order ? createdLessonSchedules.order : state.lessons.length,\n };\n state.lessons = insertItemIntoArray(\n state.lessons.filter((item) => item.id !== lessonSchedule.id),\n lessonSchedule,\n lessonSchedule.order,\n );\n }\n if (deletedLessonSchedules) {\n state.lessons = state.lessons.filter((item) => item.id !== deletedLessonSchedules.id);\n }\n } else if (lesson) {\n const newLesson = {\n ...lesson,\n order: lesson.order ?? state.lessons.find(({ id }) => id === lesson.id)?.order ?? 1,\n };\n state.lessons = insertItemIntoArray(\n state.lessons.filter((item) => item.id !== newLesson.id),\n { ...newLesson, type: 'common' },\n newLesson.order,\n );\n }\n\n state.patchStatusLessons = FetchStatus.FETCHED;\n state.getStatusLessons = FetchStatus.INITIAL;\n state.error = null;\n })\n .addCase(handleLessonScheduleAction.rejected, (state, { error }) => {\n state.patchStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(deleteLessonAction.pending, (state) => {\n state.deleteStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(deleteLessonAction.fulfilled, (state, { payload }) => {\n state.deleteStatusLessons = FetchStatus.FETCHED;\n state.lessons = state.lessons.filter((lesson) => lesson.id !== payload.lessonId);\n state.error = null;\n })\n .addCase(deleteLessonAction.rejected, (state, { error }) => {\n state.deleteStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getLessonDataAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonDataAction.fulfilled, (state, { payload }) => {\n state.getStatusLessons = FetchStatus.FETCHED;\n state.lessonDetails[payload.id] = payload;\n state.error = null;\n })\n .addCase(getLessonDataAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getLessonsAndHomeworksAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonsAndHomeworksAction.fulfilled, (state, { payload }) => {\n const { lessons = [], lessonSchedules = [] } = payload;\n state.getStatusLessons = FetchStatus.FETCHED;\n state.lessons = normalizeCourseLesson(lessons, lessonSchedules);\n state.error = null;\n })\n .addCase(getLessonsAndHomeworksAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n\n builder\n .addCase(getLessonsAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonsAction.fulfilled, (state, { payload }) => {\n state.getStatusLessons = FetchStatus.FETCHED;\n state.publishStatusLesson = FetchStatus.INITIAL;\n state.lessons = payload.map((lesson) => ({\n ...lesson,\n lessonItems: [\n {\n type: LessonTypes.TEST,\n label: 'Контрольная',\n datetimeStart: '',\n datetimeEnd: '',\n checked: lesson?.isTest,\n canEdit: true,\n },\n ],\n }));\n state.error = null;\n })\n .addCase(getLessonsAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(blockEditMaterialsAction.fulfilled, (state, { payload }) => {\n if (state.lessonDetails[payload.update.id]) {\n state.lessonDetails[payload.update.id] = {\n ...state.lessonDetails[payload.update.id],\n isBlockEdit: payload.update.isBlockEdit,\n };\n }\n });\n\n builder\n .addCase(changeLessonTopicAction.pending, (state) => {\n state.getStatusLessons = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(changeLessonTopicAction.fulfilled, (state, { payload }) => {\n state.lessons = state.lessons.filter((lesson) => lesson.id !== payload.update.id);\n state.getStatusLessons = FetchStatus.FETCHED;\n })\n .addCase(changeLessonTopicAction.rejected, (state, { error }) => {\n state.getStatusLessons = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\nexport const resetCourseLessonState = lessonSlice.actions.resetCourseLessonState as ActionCreatorWithoutPayload;\nexport const resetStatuses = lessonSlice.actions.resetStatuses as ActionCreatorWithoutPayload;\nexport const courseLessonReducer = lessonSlice.reducer;\n","import { LessonScheduleResponse } from 'api/services/lessonSchedule';\nimport { CourseLesson, ResponseLesson } from 'types/lesson';\nimport { LessonTypes } from 'types/schedule';\n\nimport { getLabelByScheduleType } from 'utils/schedule';\n\nexport const normalizeCourseLesson = (\n lessons: ResponseLesson[],\n lessonSchedules: LessonScheduleResponse[],\n): CourseLesson[] => {\n return lessons.map((lesson) => {\n const lessonSchedule = lessonSchedules.filter((schedule) => schedule.lesson === lesson.id);\n\n return {\n ...lesson,\n lessonItems:\n lesson?.isTest && !lessonSchedule.some(({ type }) => type === LessonTypes.TEST)\n ? [\n {\n type: LessonTypes.TEST,\n label: 'Контрольная',\n datetimeStart: '',\n datetimeEnd: '',\n checked: true,\n canEdit: true,\n },\n ]\n : lessonSchedule.map(({ type, id, datetimeStart = '', datetimeEnd = '' }) => ({\n id,\n type,\n datetimeStart,\n datetimeEnd,\n label: getLabelByScheduleType(type),\n checked: true,\n canEditEndData: type === LessonTypes.SELFPREPARATION,\n })),\n };\n });\n};\n","import React from 'react';\nimport { EditFile, User } from '@lms-elements/icons';\nimport { ScheduleResponseData } from 'api/services/schedule';\nimport moment from 'moment';\nimport { EventTypes } from 'types/events';\nimport { AssemblyTypes, ScheduleData, ScheduleEvent } from 'types/schedule';\n\nexport const normalizeScheduleEvents = (data: ScheduleResponseData): ScheduleData => {\n const { lessonSchedule = [], assemblySchedule = [], eventRoomSchedule = [] } = data;\n const normalizeLessonSchedule = (lessonSchedule.map((event) => {\n return {\n ...event,\n subject: { id: event.subject.id, title: event.course.title },\n date: moment(event.datetimeStart).format('YYYY-MM-DD'),\n };\n }) as unknown) as ScheduleEvent[];\n const normalizeEventRooms = (eventRoomSchedule.map((event) => {\n return {\n ...event,\n date: moment(event.datetimeStart).format('YYYY-MM-DD'),\n subject: { id: event.subject.id, title: event.course.title },\n IconElement: ,\n isEventRoom: true,\n customTitle: `${event.type === EventTypes.TEST ? 'Контрольная' : event.course.title}`,\n };\n }) as unknown) as ScheduleEvent[];\n\n const normalizeAssemblies = (assemblySchedule.map((event) => {\n return {\n ...event,\n type: AssemblyTypes.PARENT_MEETING,\n date: moment(event.datetimeStart).format('YYYY-MM-DD'),\n IconElement: ,\n isAssembly: true,\n customTitle: 'Встреча с родителем',\n subject: { title: event.parentName },\n lesson: {\n title: `Ученик: ${event.student.lastName} ${event.student.firstName}, ${event.studentGroup.title}`,\n },\n courseGroup: {\n title: `${event.parentName}, ученик - ${event.student.lastName} ${event.student.firstName}, ${event.studentGroup.title}`,\n },\n };\n }) as unknown) as ScheduleEvent[];\n\n return [...normalizeLessonSchedule, ...normalizeEventRooms, ...normalizeAssemblies]\n .sort((a, b) => moment(a.datetimeStart).diff(b.datetimeStart))\n .reduce((result, lesson) => {\n if (!result[lesson.date]) {\n result[lesson.date] = {\n date: lesson.date,\n data: [lesson],\n };\n } else {\n result[lesson.date].data.push(lesson);\n }\n\n return result;\n }, {} as ScheduleData);\n};\n\nexport const normalizeScheduleDayEvents = (data: ScheduleResponseData, date: string): ScheduleEvent[] => {\n const { lessonSchedule = [], assemblySchedule = [], eventRoomSchedule = [] } = data;\n const normalizeLessonSchedule = (lessonSchedule.map((event) => {\n return {\n ...event,\n date: date,\n };\n }) as unknown) as ScheduleEvent[];\n const normalizeEventRooms = (eventRoomSchedule.map((event) => {\n return {\n ...event,\n date: date,\n IconElement: ,\n isEventRoom: true,\n };\n }) as unknown) as ScheduleEvent[];\n const normalizeAssemblies = (assemblySchedule.map((event) => {\n return {\n ...event,\n type: AssemblyTypes.PARENT_MEETING,\n date: date,\n IconElement: ,\n isAssembly: true,\n customTitle: 'Встреча с родителем',\n subject: { title: event.parentName },\n lesson: {\n title: `Ученик: ${event.student.lastName} ${event.student.firstName}, ${event.studentGroup.title}`,\n },\n courseGroup: {\n title: `${event.parentName}, ученик - ${event.student.lastName} ${event.student.firstName}, ${event.studentGroup.title}`,\n },\n };\n }) as unknown) as ScheduleEvent[];\n\n return [...normalizeLessonSchedule, ...normalizeEventRooms, ...normalizeAssemblies].sort((a, b) =>\n moment(a.datetimeStart).diff(b.datetimeStart),\n );\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { MissedLesson } from 'api/services/lesson/patchMissedLesson';\nimport { LessonScheduleResponse } from 'api/services/lessonSchedule';\nimport {\n getLessonScheduleAction,\n getMeetingJoinRedirectAction,\n getMeetingWithCheckAction,\n getMissedLessonAction,\n patchMissedLessonAction,\n} from 'store/actions/lessonSchedule';\nimport { fetchSchedule, getScheduleByDateRangeAction, getUserScheduleAction } from 'store/actions/schedule';\nimport {\n normalizeScheduleDayEvents,\n normalizeScheduleEvents,\n} from 'store/normalizers/schedule/normalizeScheduleEvents';\nimport { FetchStatus } from 'types/api';\nimport { ScheduleData, ScheduleEvent } from 'types/schedule';\n\nexport interface ScheduleState {\n schedule: Array;\n sheduleDateRange: ScheduleData;\n lessonSchedule: LessonScheduleResponse[];\n userSchedule: ScheduleData;\n userScheduleStatus: FetchStatus;\n getMissedLessonStatus: FetchStatus;\n getMeetingJoinRedirectStatus: FetchStatus;\n getMeetingUserStatus: FetchStatus;\n patchMissedLessonStatus: FetchStatus;\n date: string | null;\n missedLesson: MissedLesson;\n missedLessons: MissedLesson[];\n isAppUsed: boolean;\n isOlBlocked: boolean;\n fetchStatus: FetchStatus;\n lesson: number;\n datetimeStartUsedApp: string | null;\n error: unknown;\n}\n\nconst initialState: ScheduleState = {\n fetchStatus: FetchStatus.INITIAL,\n schedule: [],\n lessonSchedule: [],\n missedLessons: [],\n sheduleDateRange: {},\n userSchedule: {},\n missedLesson: {} as MissedLesson,\n isAppUsed: false,\n getMissedLessonStatus: FetchStatus.INITIAL,\n getMeetingUserStatus: FetchStatus.INITIAL,\n patchMissedLessonStatus: FetchStatus.INITIAL,\n datetimeStartUsedApp: null,\n lesson: 0,\n isOlBlocked: false,\n userScheduleStatus: FetchStatus.INITIAL,\n getMeetingJoinRedirectStatus: FetchStatus.INITIAL,\n date: null,\n error: null,\n};\n\nconst scheduleSlice = createSlice>({\n name: 'schedule',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(fetchSchedule.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(fetchSchedule.fulfilled, (state, { payload }) => {\n const { scheduleData, date } = payload;\n\n state.fetchStatus = FetchStatus.FETCHED;\n state.schedule =\n normalizeScheduleDayEvents(\n {\n lessonSchedule: scheduleData.lessonSchedule,\n assemblySchedule: scheduleData.assemblySchedule,\n eventRoomSchedule: scheduleData.eventRoomSchedule,\n },\n date,\n ) || [];\n state.sheduleDateRange = {\n ...state.sheduleDateRange,\n [date]: {\n date,\n data:\n normalizeScheduleDayEvents(\n {\n lessonSchedule: scheduleData.lessonSchedule,\n assemblySchedule: scheduleData.assemblySchedule,\n eventRoomSchedule: scheduleData.eventRoomSchedule,\n },\n date,\n ) || [],\n },\n };\n })\n .addCase(fetchSchedule.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getScheduleByDateRangeAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getScheduleByDateRangeAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.sheduleDateRange = normalizeScheduleEvents({\n lessonSchedule: payload.lessonSchedule,\n assemblySchedule: payload.assemblySchedule,\n eventRoomSchedule: payload.eventRoomSchedule,\n });\n state.error = null;\n })\n .addCase(getScheduleByDateRangeAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getLessonScheduleAction.pending, (state) => {\n state.fetchStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getLessonScheduleAction.fulfilled, (state, { payload }) => {\n state.fetchStatus = FetchStatus.FETCHED;\n state.lessonSchedule = payload || [];\n state.error = null;\n })\n .addCase(getLessonScheduleAction.rejected, (state, { error }) => {\n state.fetchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getUserScheduleAction.pending, (state) => {\n state.userScheduleStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getUserScheduleAction.fulfilled, (state, { payload }) => {\n state.userScheduleStatus = FetchStatus.FETCHED;\n state.userSchedule = normalizeScheduleEvents(payload);\n state.error = null;\n })\n .addCase(getUserScheduleAction.rejected, (state, { error }) => {\n state.userScheduleStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(patchMissedLessonAction.pending, (state) => {\n state.patchMissedLessonStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(patchMissedLessonAction.fulfilled, (state, { payload }) => {\n state.patchMissedLessonStatus = FetchStatus.FETCHED;\n state.missedLesson = payload;\n state.error = null;\n })\n .addCase(patchMissedLessonAction.rejected, (state, { error }) => {\n state.patchMissedLessonStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getMissedLessonAction.pending, (state) => {\n state.getMissedLessonStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getMissedLessonAction.fulfilled, (state, { payload }) => {\n state.getMissedLessonStatus = FetchStatus.FETCHED;\n state.missedLessons = payload.flatMap((el) => el);\n state.error = null;\n })\n .addCase(getMissedLessonAction.rejected, (state, { error }) => {\n state.patchMissedLessonStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getMeetingJoinRedirectAction.pending, (state) => {\n state.getMeetingJoinRedirectStatus = FetchStatus.FETCHING;\n })\n .addCase(getMeetingJoinRedirectAction.fulfilled, (state) => {\n state.getMeetingJoinRedirectStatus = FetchStatus.FETCHED;\n });\n builder\n .addCase(getMeetingWithCheckAction.pending, (state) => {\n state.getMeetingUserStatus = FetchStatus.FETCHING;\n })\n .addCase(getMeetingWithCheckAction.fulfilled, (state) => {\n state.getMeetingUserStatus = FetchStatus.FETCHED;\n });\n },\n});\n\nconst resetScheduleState = scheduleSlice.actions.reset as ActionCreatorWithoutPayload;\nexport { resetScheduleState };\nexport const scheduleReducer = scheduleSlice.reducer;\n","import React, { useCallback, useMemo } from 'react';\nimport { Form, FormSpy } from 'react-final-form';\nimport { ValidationErrors } from 'final-form';\nimport arrayMutators from 'final-form-arrays';\nimport { useFormError } from 'hooks/useFormError';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { getAllTasks } from 'src-new/utils';\nimport { AssignmentProgress, Task } from 'types/homework';\n\nimport { HomeworkTable, HomeworkTableFormValues } from 'components/HomeworkTable';\n\ninterface AssigningHomeworkFormProps {\n tasks: Task[];\n assignmentProgress?: AssignmentProgress[];\n students: {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n status?: AttendanceStatus;\n }[];\n initialValues?: HomeworkTableFormValues;\n onSubmit?: (values: HomeworkTableFormValues) => void;\n onChange?: (values: HomeworkTableFormValues, pristine: boolean) => void;\n onStudentCellClick?: (studentId: number) => void;\n repeatTaskForm?: boolean;\n withAttendance?: boolean;\n needDisableCheckboxes?: boolean;\n}\n\nexport const AssigningHomeworkForm: React.FC = ({\n tasks,\n students,\n initialValues,\n onSubmit,\n onChange,\n onStudentCellClick,\n repeatTaskForm,\n assignmentProgress,\n withAttendance,\n needDisableCheckboxes,\n}) => {\n const handleFormSubmit = useCallback(\n (values) => {\n if (onSubmit) {\n onSubmit(values);\n }\n },\n [onSubmit],\n );\n\n const hasSelectAllRow = useMemo(\n () => initialValues && Object.prototype.hasOwnProperty.call(initialValues, 'selectAll'),\n [initialValues],\n );\n\n const allTasks = useMemo(() => getAllTasks(tasks, assignmentProgress), [assignmentProgress, tasks]);\n\n const handleFormError = useFormError('assigningHomeworkForm');\n const handleFormChange = useCallback(\n (state: { values: HomeworkTableFormValues; pristine: boolean; errors: ValidationErrors }) => {\n handleFormError(state);\n if (onChange) {\n setTimeout(() => onChange(state.values, state.pristine), 0);\n }\n },\n [onChange, handleFormError],\n );\n\n const validateCheckboxes = useCallback((values: HomeworkTableFormValues) => {\n if (values.students) {\n const taskCheckboxes = values.students.reduce((result, student) => {\n student.tasks.forEach((task) => {\n if (result[task.taskId]) {\n result[task.taskId].push(task.checked);\n } else {\n result[task.taskId] = [task.checked];\n }\n });\n\n return result;\n }, {} as { [taskId: number]: boolean[] });\n\n const isAnyChecked = Object.entries(taskCheckboxes).reduce((result, entry) => {\n const isChecked = entry[1].reduce((result, value) => result || value, false);\n\n return result || isChecked;\n }, false);\n\n if (!isAnyChecked) {\n return { tasks: 'not assigned' };\n }\n }\n\n return undefined;\n }, []);\n\n return (\n {\n if (!task[0].oldValue) {\n students\n .map((_, index) => {\n return `students[${index}].tasks[${task[0].taskIndex}].checked`;\n })\n .forEach((field, index) => {\n const student = students[index];\n const currentCheckbox = initialValues?.students\n .find((student) => student.studentId === students[index].id)\n ?.tasks.find((studentTask) => studentTask.taskId === task[0].taskId);\n tools.changeValue(state, field, () => {\n return (\n !currentCheckbox?.repeatBlocked ||\n (withAttendance && student.status && student.status !== AttendanceStatus.ABSENT)\n );\n });\n });\n }\n },\n resetCheckbox: (task: [{ taskIndex: number; oldValue: boolean }], state, tools) => {\n if (task[0].oldValue) {\n tools.changeValue(state, `selectAll[${task[0].taskIndex}].checked`, () => {\n return false;\n });\n }\n },\n }}\n validate={validateCheckboxes}\n >\n {(formProps) => (\n
\n \n \n \n )}\n \n );\n};\n","export { Codifier } from './Codifier';\n","import { PatchAssignmentMarkParams } from 'api/services/marks';\n\nexport const getChangeAttemptMarkParams = (\n mark: { score: number; comment?: string },\n attemptMark: { id: number },\n): PatchAssignmentMarkParams => {\n return {\n id: attemptMark.id,\n score: mark.score,\n comment: mark.comment,\n };\n};\n","import React from 'react';\nimport { IPagination } from '@fsd-shared/models/app';\nimport { Dayjs } from 'dayjs';\n\nexport type TSelectedMonth = {\n date: Dayjs;\n formattedDate: string;\n isCurrent: boolean;\n};\nexport type TCriteriaType =\n | 'questionsCreated'\n | 'summary'\n | 'marksComments'\n | 'allMessagesReplied'\n | 'timelyTrainingCompletion'\n | 'timelyHomeworkAssigned'\n | 'timelyHomeworkChecked'\n | 'marksAccumulation'\n | 'suitableAppearance'\n | 'timelyLessonStartEnd'\n | 'positionInFrame'\n | 'allCamerasOn'\n | 'smartPenHomeworkPercent'\n | 'presentationsQuality'\n | 'questionsApproved'\n | 'orderInWorkplace'\n | 'complyPublicRules'\n | '';\nexport type TSelectedFilters = {\n criteriaType: TCriteriaType;\n showCriteriaContent: boolean;\n teachersIds?: string[];\n subjectsIds?: number[];\n isChartView: boolean;\n};\nexport type TCriteria = TMonitoringProgress & {\n content: React.ReactNode;\n};\n\nexport type TCriteriaListItem = {\n id: number;\n title: string;\n type: TCriteriaType;\n isActive: boolean;\n isComplete?: boolean;\n};\nexport type TCriteriaGroup = {\n id: number;\n title: string;\n criteria: TCriteriaListItem[];\n};\nexport type TTeachersProgressLevel = {\n label: string;\n value: number;\n bonus: number;\n};\nexport type TTeacherStatistics = {\n completedCount: number;\n completedPercent: number;\n activeCount: number;\n activePercent: number;\n isCompleted: boolean;\n previousCount: number;\n level: number;\n};\nexport type TTeacherProgress = {\n id: number;\n title: string;\n criteria: TMonitoringProgress[];\n};\nexport type TTeachersMonitoringData = {\n progressLevels: TTeachersProgressLevel[];\n statistics: TTeacherStatistics;\n progress: TTeacherProgress[];\n};\nexport type TTeachersProfileData = {\n criteriaGroups: TCriteriaGroup[];\n};\nexport type TCriteriaSettingCommon = {\n isActive?: boolean;\n updateNext?: boolean;\n};\nexport type TQuestionCreatedSettings = {\n dayEasy?: number;\n dayMedium?: number;\n dayHard?: number;\n};\nexport type TCriteriaSetting = TCriteriaSettingCommon & TQuestionCreatedSettings;\nexport type TCriteriaSettingState = TCriteriaSetting & { isLoading: boolean; isSaving: boolean };\nexport type TPagination = {\n maxPage: number;\n currentPage: number;\n limit: number;\n count: number;\n};\nexport type TMonitoringSubjectsList = {\n pagination?: TPagination;\n results?: TMonitoringSubject[];\n searchResults?: TMonitoringSubject[];\n search?: string;\n};\nexport type TMonitoringSubject = {\n id: number;\n title: string;\n};\nexport type TMonitoringStaffList = {\n pagination?: TPagination;\n results?: TMonitoringStaff[];\n searchResults?: TMonitoringStaff[];\n search?: string;\n subjects?: number[];\n};\nexport type TMonitoringStaff = {\n id: string;\n lastName: string;\n firstName: string;\n patronymic: string;\n photoUrl: string;\n};\n//ACTIONS\nexport type TGetCriteriaGroupsProps = {\n date?: string;\n isActive?: boolean;\n};\nexport type TGetMonitoringSubjectsListProps = {\n search?: string;\n currentPage?: number;\n limit?: number;\n};\nexport type TGetMonitoringStaffListProps = {\n roles?: string[];\n subjects?: number[];\n ids?: string[];\n search?: string;\n currentPage?: number;\n limit?: number;\n};\nexport type TGetCriteriaSettingProps = {\n criterion: TCriteriaType;\n date: string;\n update?: TCriteriaSetting;\n};\n\nexport type TMonitoringProgress = {\n label: string;\n value: string;\n isCompleted: boolean;\n};\nexport type TSummaryTableDataItem = {\n user: TMonitoringStaff;\n progress: TMonitoringProgress[];\n};\n\nexport type QuestionsCreatedCriterionTableProgress = {\n minEasy: number;\n minMedium: number;\n minHard: number;\n currentEasy: number;\n currentMedium: number;\n currentHard: number;\n};\nexport type TQuestionsCreatedCriterionTableDataItem = {\n user: TMonitoringStaff;\n progress: QuestionsCreatedCriterionTableProgress;\n};\nexport type TReason = 'medical_certificate' | 'not_month_start' | 'teacher_vacation' | 'other';\nexport type TApplyingProps = {\n value: number;\n changeReason: TReason;\n comment?: string;\n};\nexport enum EReasonsTitles {\n 'medical_certificate' = 'Больничный лист',\n 'not_month_start' = 'Работа не с начала месяца',\n 'teacher_vacation' = 'Отпуск',\n 'other' = 'Другое',\n}\nexport type TSummaryTableData = {\n results?: TSummaryTableDataItem[];\n pagination?: IPagination;\n};\nexport type TTeacherDetailedInfoProgress = {\n id: number;\n title: string;\n criteria: TMonitoringProgress[];\n};\nexport type TTeacherInfo = TMonitoringStaff & { subjects: TMonitoringSubject[] };\nexport type TTeachersWorkDaysRes = { user: string } & TTeachersWorkDays;\nexport type TTeachersCriteriaStatistic = {\n user: TTeacherInfo;\n progress: TTeacherProgress[];\n};\nexport type TTeachersWorkDaysValue = {\n month: number;\n teacher: number;\n};\nexport type TTeacherQuestionsCountValue = {\n current: number;\n month: number;\n};\nexport type TChangeHistory = {\n date: string;\n oldValue: number;\n newValue: number;\n changeReason: string;\n comment: string;\n author: {\n id: string;\n lastName: string;\n firstName: string;\n patronymic: string;\n };\n};\n\nexport type TTeachersWorkDays = {\n workDays?: TTeachersWorkDaysValue;\n workDaysHistory?: TChangeHistory[];\n};\nexport type TQuestionsCreatedProgressInfo = {\n questionsCount?: TTeacherQuestionsCountValue;\n questionsCountHistory?: TChangeHistory[];\n};\nexport type TQuestionsCreatedProgress = {\n user: string;\n} & TQuestionsCreatedProgressInfo;\nexport type TSummaryChartDataPoint = {\n label: string;\n value: {\n current: number;\n max: number;\n };\n};\nexport type TSummaryChartDataItem = {\n label: string;\n info: string;\n color: string;\n points: TSummaryChartDataPoint[];\n};\nexport type TDiagram = {\n type: string;\n titleX: string;\n titleY: string;\n};\n\nexport type TSummaryChartData = {\n diagram: TDiagram & {\n data: TSummaryChartDataItem[];\n };\n};\nexport type TSummaryTableDataFilters = {\n date: string;\n subjects?: number[];\n users?: string[];\n completed?: string[];\n failed?: string[];\n};\nexport type TGetSummaryTableDataProps = {\n filters: TSummaryTableDataFilters;\n currentPage?: number;\n limit?: number;\n};\nexport type TGetTeachersCriteriaStatisticProps = {\n user: string;\n date?: string;\n};\n\nexport type TGetTeachesWorkDaysProps = {\n user: string;\n date?: string;\n workDays?: {\n value: number;\n changeReason: string;\n comment?: string;\n };\n};\nexport type TGetQuestionsCreatedProgressProps = {\n user: string;\n date?: string;\n questionsCount?: {\n value: number;\n changeReason: string;\n comment?: string;\n };\n};\nexport type TQuestionsCreatedTableDataFilters = {\n date: string;\n subjects?: number[];\n users?: string[];\n isCompleted?: boolean;\n};\nexport type TQuestionsCreatedTableDataProps = {\n filters: TQuestionsCreatedTableDataFilters;\n currentPage?: number;\n limit?: number;\n};\nexport type TQuestionsCreatedDiagramDataFilters = {\n months: string[];\n subjects?: number[];\n users?: string[];\n};\n\nexport type TSummaryChartDataFilters = {\n months: string[];\n subjects?: number[];\n users?: string[];\n};\nexport type TQuestionsCreatedTableData = {\n results?: TQuestionsCreatedCriterionTableDataItem[];\n pagination?: TPagination;\n};\n\nexport type TQuestionsCreatedDiagramTableItem = {\n month: string;\n minEasy: number;\n minMedium: number;\n minHard: number;\n currentEasy: number;\n currentMedium: number;\n currentHard: number;\n};\nexport type TQuestionsCreatedDiagramItem = {\n label: string;\n info: string;\n color: string;\n points: {\n label: string;\n value: number;\n }[];\n};\nexport type TTeachersQuestionsCreatedDiagramData = TDiagram & {\n data: TQuestionsCreatedDiagramItem[];\n};\nexport type TQuestionsCreatedDiagramData = {\n table: TQuestionsCreatedDiagramTableItem[];\n diagram: TTeachersQuestionsCreatedDiagramData;\n};\nexport type TQuestionApprovalData = {\n date: string;\n criteria: TQuestionsCreatedProgress & {\n approved: number;\n approvedTotal: number;\n };\n};\nexport type TTeachersQuestionsCreatedDiagram = {\n diagramProgress: TTeachersQuestionsCreatedDiagramData;\n diagramMin: TTeachersQuestionsCreatedDiagramData;\n};\n","import moment from 'moment';\n\nimport { getEarliestDate } from './date';\n\ntype Progress = {\n id: number | string;\n title?: string;\n assignment: {\n id: number;\n };\n courseGroup: {\n id: number;\n };\n deadlineForComplete?: string;\n};\n\n/**\n *\n * @param assignmentProgresses assignemnt-progresses from server\n * @returns combined homeworks for render in pages\n */\nexport function combineHomeworks(\n assignmentProgresses: Array,\n): Array {\n return assignmentProgresses\n .reduce((homeworkItems, hwProgress) => {\n const hwProgressIndex = homeworkItems.findIndex(\n (item) =>\n item.assignment.id === hwProgress.assignment.id &&\n item.courseGroup?.id === hwProgress.courseGroup?.id,\n );\n\n if (hwProgressIndex >= 0) {\n const currentItem = { ...homeworkItems[hwProgressIndex] };\n const deadline = getEarliestDate([\n currentItem.deadlineForComplete || '',\n hwProgress.deadlineForComplete || '',\n ]);\n homeworkItems[hwProgressIndex] = {\n ...currentItem,\n id: `${currentItem.id}`,\n deadlineForComplete: deadline,\n assignmentCount: currentItem?.assignmentCount ? currentItem.assignmentCount + 1 : 1,\n };\n } else {\n homeworkItems.push({\n ...hwProgress,\n id: `${hwProgress.id}`,\n title: hwProgress.title,\n assignmentCount: 1,\n });\n }\n\n return homeworkItems;\n }, [] as Array)\n .slice()\n .sort((a, b) => moment(a.deadlineForComplete).diff(b.deadlineForComplete));\n}\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { ResponseTheme } from 'api/services/courseThemes';\nimport {\n changeThemeAction,\n createThemeAction,\n deleteThemeAction,\n getThemesAction,\n publishThemeAction,\n} from 'store/actions/courseThemes';\nimport { FetchStatus } from 'types/api';\n\nexport interface ThemeState {\n getStatusThemes: FetchStatus;\n postStatusThemes: FetchStatus;\n patchStatusThemes: FetchStatus;\n deleteStatusThemes: FetchStatus;\n publishStatusTheme: FetchStatus;\n themes: ResponseTheme[];\n error: unknown;\n}\n\nexport const initialState: ThemeState = {\n getStatusThemes: FetchStatus.INITIAL,\n postStatusThemes: FetchStatus.INITIAL,\n patchStatusThemes: FetchStatus.INITIAL,\n deleteStatusThemes: FetchStatus.INITIAL,\n publishStatusTheme: FetchStatus.INITIAL,\n themes: [],\n error: null,\n};\n\nconst themeSlice = createSlice>({\n name: 'theme',\n initialState,\n reducers: {\n resetCourseThemesState(state) {\n state.getStatusThemes = FetchStatus.INITIAL;\n state.postStatusThemes = FetchStatus.INITIAL;\n state.patchStatusThemes = FetchStatus.INITIAL;\n state.deleteStatusThemes = FetchStatus.INITIAL;\n state.themes = [];\n state.error = null;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getThemesAction.pending, (state) => {\n state.getStatusThemes = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getThemesAction.fulfilled, (state, { payload }) => {\n state.getStatusThemes = FetchStatus.FETCHED;\n state.publishStatusTheme = FetchStatus.INITIAL;\n state.themes = payload.sort((a, b) => a.order - b.order) || [];\n state.error = null;\n });\n builder.addCase(getThemesAction.rejected, (state, { error }) => {\n state.getStatusThemes = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(publishThemeAction.pending, (state) => {\n state.publishStatusTheme = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(publishThemeAction.fulfilled, (state) => {\n state.publishStatusTheme = FetchStatus.FETCHED;\n state.error = null;\n });\n builder.addCase(publishThemeAction.rejected, (state, { error }) => {\n state.publishStatusTheme = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createThemeAction.pending, (state) => {\n state.postStatusThemes = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createThemeAction.fulfilled, (state, { payload }) => {\n state.postStatusThemes = FetchStatus.FETCHED;\n const { newTheme, ordering } = payload;\n const newState =\n ordering?.map((themeId, index) => {\n if (themeId === newTheme.id) {\n return {\n ...newTheme,\n isPublished: newTheme.isPublished ?? true,\n };\n }\n\n return {\n ...(state.themes.find((theme) => theme.id === themeId) as ResponseTheme),\n order: index,\n };\n }) || [];\n state.themes = newState;\n state.error = null;\n });\n builder.addCase(createThemeAction.rejected, (state, { error }) => {\n state.postStatusThemes = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(changeThemeAction.pending, (state) => {\n state.patchStatusThemes = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(changeThemeAction.fulfilled, (state, { payload }) => {\n state.patchStatusThemes = FetchStatus.FETCHED;\n const { newTheme, ordering } = payload;\n const newState =\n ordering?.map((themeId, index) => {\n if (themeId === newTheme.id) {\n return {\n ...newTheme,\n isPublished: newTheme.isPublished ?? true,\n };\n }\n\n return {\n ...(state.themes.find((theme) => theme.id === themeId) as ResponseTheme),\n order: index,\n };\n }) || [];\n state.themes = newState;\n state.error = null;\n });\n builder.addCase(changeThemeAction.rejected, (state, { error }) => {\n state.patchStatusThemes = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteThemeAction.pending, (state) => {\n state.deleteStatusThemes = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteThemeAction.fulfilled, (state, { payload }) => {\n state.deleteStatusThemes = FetchStatus.FETCHED;\n const { ordering } = payload;\n state.themes = ordering.map((themeId, order) => ({\n ...(state.themes.find((theme) => theme.id === themeId) as ResponseTheme),\n order,\n }));\n state.error = null;\n });\n builder.addCase(deleteThemeAction.rejected, (state, { error }) => {\n state.deleteStatusThemes = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetCourseThemesState = themeSlice.actions.resetCourseThemesState as ActionCreatorWithoutPayload;\nexport const courseThemeReducer = themeSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { MeetingData, MeetingFileData } from 'api/services/meeting';\nimport {\n changeMeetingFileAction,\n createMeetingFileAction,\n deleteMeetingFileAction,\n getMeetingFilesAction,\n getMeetingRecordingsAction,\n postMeetingRecordingAction,\n} from 'store/actions/meeting';\nimport { FetchStatus } from 'types/api';\n\ninterface MeetingState {\n fetchMeetingStatus: FetchStatus;\n fetchMeetingFilesStatus: FetchStatus;\n meeting: {\n [scheduleLesson: number]: MeetingData;\n };\n meetingFiles: MeetingFileData[];\n error: unknown;\n}\n\nconst initialState: MeetingState = {\n fetchMeetingStatus: FetchStatus.INITIAL,\n fetchMeetingFilesStatus: FetchStatus.INITIAL,\n meeting: {},\n meetingFiles: [],\n error: null,\n};\n\nexport const meetingSlice = createSlice>({\n name: 'meeting',\n initialState,\n reducers: {\n reset: () => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getMeetingRecordingsAction.pending, (state) => {\n state.fetchMeetingStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getMeetingRecordingsAction.fulfilled, (state, { payload }) => {\n const { lessonSchedule, eventRoom, ...meetingData } = payload;\n\n if (meetingData.error) {\n state.fetchMeetingStatus = FetchStatus.ERROR;\n state.error = meetingData.error;\n } else {\n state.fetchMeetingStatus = FetchStatus.FETCHED;\n if (eventRoom) state.meeting[eventRoom] = meetingData as MeetingData;\n if (lessonSchedule) state.meeting[lessonSchedule] = meetingData as MeetingData;\n }\n })\n .addCase(getMeetingRecordingsAction.rejected, (state, { error }) => {\n state.fetchMeetingStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(postMeetingRecordingAction.pending, (state) => {\n state.error = null;\n })\n .addCase(postMeetingRecordingAction.fulfilled, (state, { payload }) => {\n const { lessonSchedule, ...meetingData } = payload;\n state.meeting[lessonSchedule] = {\n ...state.meeting[lessonSchedule],\n ...meetingData,\n };\n })\n .addCase(postMeetingRecordingAction.rejected, (state, { error }) => {\n state.error = error;\n });\n\n builder\n .addCase(getMeetingFilesAction.pending, (state) => {\n state.fetchMeetingFilesStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getMeetingFilesAction.fulfilled, (state, { payload }) => {\n state.fetchMeetingFilesStatus = FetchStatus.FETCHED;\n state.meetingFiles = payload;\n })\n .addCase(getMeetingFilesAction.rejected, (state, { error }) => {\n state.fetchMeetingFilesStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createMeetingFileAction.fulfilled, (state, { payload }) => {\n state.meetingFiles = [...state.meetingFiles, payload];\n });\n builder.addCase(deleteMeetingFileAction.fulfilled, (state, { payload }) => {\n const { fileId } = payload;\n\n state.meetingFiles = state.meetingFiles.filter((file) => file.id !== fileId);\n });\n builder.addCase(changeMeetingFileAction.fulfilled, (state, { payload }) => {\n state.meetingFiles = state.meetingFiles.map((file) => {\n if (file.id === payload.id) {\n return payload;\n }\n\n return file;\n });\n });\n },\n});\n\nexport const resetMeetingState = meetingSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const meetingReducer = meetingSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport moment from 'moment';\nimport { getMonitoringInfoAction, getNextMonitoringInfoAction } from 'store/actions/monitoring';\nimport { FetchStatus } from 'types/api';\nimport { MonitoringProps } from 'types/monitoring';\n\nexport interface MonitoringState {\n getMonitoringInfoStatus: FetchStatus;\n getNextMonitoringInfoStatus: FetchStatus;\n monitoringInfo: MonitoringProps | null;\n nextMonitoringInfo: string | null;\n error: unknown;\n}\n\nconst initialState: MonitoringState = {\n getMonitoringInfoStatus: FetchStatus.INITIAL,\n getNextMonitoringInfoStatus: FetchStatus.INITIAL,\n nextMonitoringInfo: null,\n monitoringInfo: null,\n error: null,\n};\n\nconst monitoringSlice = createSlice>({\n name: 'monitoring',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getMonitoringInfoAction.pending, (state) => {\n state.getMonitoringInfoStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getMonitoringInfoAction.fulfilled, (state, { payload }) => {\n state.getMonitoringInfoStatus = FetchStatus.FETCHED;\n state.monitoringInfo = {\n ...payload,\n data: payload.data.sort((a, b) => moment(a.datetimeStart).diff(b.datetimeStart)),\n };\n state.nextMonitoringInfo = payload.next;\n state.error = null;\n });\n builder.addCase(getMonitoringInfoAction.rejected, (state, { error }) => {\n state.getMonitoringInfoStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getNextMonitoringInfoAction.pending, (state) => {\n state.getMonitoringInfoStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getNextMonitoringInfoAction.fulfilled, (state, { payload }) => {\n if (payload === null) {\n state.getMonitoringInfoStatus = FetchStatus.FETCHED;\n state.error = null;\n return;\n }\n state.monitoringInfo = {\n ...payload,\n data:\n state.monitoringInfo?.data.concat(\n payload.data.sort((a, b) => moment(a.datetimeStart).diff(b.datetimeStart)),\n ) ?? [],\n };\n state.nextMonitoringInfo = payload.next;\n state.getMonitoringInfoStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getNextMonitoringInfoAction.rejected, (state, { error }) => {\n state.getMonitoringInfoStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetMonitoringState = monitoringSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const monitoringReducer = monitoringSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { Note } from 'api/services/notes';\nimport { changeNoteAction, createNoteAction, deleteNoteAction, getNotesAction } from 'store/actions/notes';\nimport { FetchStatus } from 'types/api';\n\nexport interface NoteState {\n getStatus: FetchStatus;\n postStatus: FetchStatus;\n patchStatus: FetchStatus;\n deleteStatus: FetchStatus;\n notes: Note[];\n error: unknown;\n}\n\nexport const initialState: NoteState = {\n getStatus: FetchStatus.INITIAL,\n postStatus: FetchStatus.INITIAL,\n patchStatus: FetchStatus.INITIAL,\n deleteStatus: FetchStatus.INITIAL,\n notes: [],\n error: null,\n};\n\nconst noteSlice = createSlice>({\n name: 'note',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getNotesAction.pending, (state) => {\n state.getStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getNotesAction.fulfilled, (state, { payload }) => {\n state.getStatus = FetchStatus.FETCHED;\n state.notes = payload ?? [];\n state.error = null;\n });\n builder.addCase(getNotesAction.rejected, (state, { error }) => {\n state.getStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(createNoteAction.pending, (state) => {\n state.postStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(createNoteAction.fulfilled, (state, { payload }) => {\n state.postStatus = FetchStatus.FETCHED;\n state.notes = [...state.notes, payload];\n state.error = null;\n });\n builder.addCase(createNoteAction.rejected, (state, { error }) => {\n state.postStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(changeNoteAction.pending, (state) => {\n state.patchStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(changeNoteAction.fulfilled, (state, { payload }) => {\n state.patchStatus = FetchStatus.FETCHED;\n state.notes = [...state.notes.filter((note) => note.id !== payload.id), payload];\n state.error = null;\n });\n builder.addCase(changeNoteAction.rejected, (state, { error }) => {\n state.patchStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(deleteNoteAction.pending, (state) => {\n state.deleteStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(deleteNoteAction.fulfilled, (state, { payload }) => {\n state.deleteStatus = FetchStatus.FETCHED;\n if (state.notes) {\n state.notes = state.notes.filter(({ id }) => id !== payload.id);\n }\n state.error = null;\n });\n builder.addCase(deleteNoteAction.rejected, (state, { error }) => {\n state.deleteStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetNotesState = noteSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const noteReducer = noteSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { QuestionStatus, ResponseQuestionDetailed } from 'api/services/questionBank';\nimport { DifficultyEnum, GetSearchQuestions, SearchBlockGet } from 'api/services/questionCreate';\nimport { IQuestion } from 'containers/QuestionSearchResult/QuestionSearchResult';\nimport { postNewAssignmentAction, updateAssignmentNewAction } from 'store/actions/assignment';\nimport {\n addEmptyFormValuesStore,\n addEmptyQuestionsStore,\n fetchAssignmentSearchBlocksAction,\n postSearchQuestionAction,\n questionBlockAction,\n questionDetailAction,\n resetSearchBlocksStore,\n saveCreateQuestionsStore,\n saveStateSearchPageStore,\n SearchPageState,\n SingleQuestions,\n} from 'store/actions/questionCreate';\nimport { FetchStatus } from 'types/api';\nimport { TrueFalseQuestionData } from 'types/question';\n\nimport { AnswersTypeEnum } from 'components/QuestionPopUp/QuestionPopUp.types';\n\nexport interface QuestionSearchBlockState {\n postSearchBlock: FetchStatus;\n patchSearchBlock: FetchStatus;\n getDetailQuestion: FetchStatus;\n questionBlockStatus: FetchStatus;\n fetchAssignmentSearchBlocksStatus: FetchStatus;\n questionDetail: ResponseQuestionDetailed;\n searchQuestionBlock: SearchBlockGet;\n searchQuestionBlocksArray: SearchBlockGet[];\n assignmentSearchBlocks: SearchBlockGet[];\n questionBlock: GetSearchQuestions[];\n formValues: SearchPageState[];\n questions: SingleQuestions[];\n createdQuestions: SingleQuestions[];\n error: unknown;\n isUpdate: boolean;\n stateUpdated: boolean;\n}\n\nexport const initialState: QuestionSearchBlockState = {\n postSearchBlock: FetchStatus.INITIAL,\n patchSearchBlock: FetchStatus.INITIAL,\n getDetailQuestion: FetchStatus.INITIAL,\n questionBlockStatus: FetchStatus.INITIAL,\n fetchAssignmentSearchBlocksStatus: FetchStatus.INITIAL,\n questionDetail: {\n id: 0,\n text: '',\n difficulty: DifficultyEnum.easy,\n answersType: AnswersTypeEnum.test,\n status: QuestionStatus.NotPublished,\n timestamp: '',\n author: {\n firstName: '',\n lastName: '',\n patronymic: '',\n mainRole: '',\n },\n topics: [],\n skills: [],\n data: {} as TrueFalseQuestionData,\n },\n searchQuestionBlock: {\n assignment: 0,\n questionNumber: 0,\n single: false,\n filters: {\n text: '',\n topics: [],\n difficulty: [DifficultyEnum.easy],\n answersType: [AnswersTypeEnum.test],\n skillsOr: [],\n skillsAnd: [],\n excludeIds: [],\n id: 0,\n },\n quantity: 0,\n },\n searchQuestionBlocksArray: [],\n assignmentSearchBlocks: [],\n questionBlock: [],\n formValues: [\n {\n filters: [],\n rightSearchBlock: [],\n leftSearchBlock: [],\n questionNum: 1,\n excludesIds: [],\n },\n ],\n questions: [\n {\n questions: [],\n questionNum: 1,\n },\n ],\n createdQuestions: [\n {\n questions: [],\n questionNum: 1,\n },\n ],\n error: null,\n isUpdate: false,\n stateUpdated: false,\n};\n\nconst questionsSearchBlockSlice = createSlice>({\n name: 'questionsSearchBlock',\n initialState,\n reducers: {\n deleteFormValuesStore: (state, action: PayloadAction) => {\n const formValues = state.formValues\n .filter((_, index) => index !== action.payload - 1)\n .map((value, index) => ({\n ...value,\n questionNum: index + 1,\n }));\n const questions = state.questions\n .filter((_, index) => index !== action.payload - 1)\n .map((value, index) => ({\n ...value,\n questionNum: index + 1,\n }));\n\n return {\n ...state,\n formValues,\n questions,\n stateUpdated: false,\n };\n },\n updateFormValuesAction: (state, action: PayloadAction) => {\n return {\n ...state,\n formValues: action.payload,\n stateUpdated: true,\n };\n },\n setUpdateFlag: (state) => {\n return {\n ...state,\n isUpdate: true,\n };\n },\n resetUpdateFlag: (state) => {\n return {\n ...state,\n isUpdate: false,\n };\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(postSearchQuestionAction.pending, (state) => {\n state.postSearchBlock = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(postSearchQuestionAction.fulfilled, (state, { payload }) => {\n state.postSearchBlock = FetchStatus.FETCHED;\n state.searchQuestionBlock = payload;\n state.error = null;\n })\n .addCase(postSearchQuestionAction.rejected, (state, { error }) => {\n state.postSearchBlock = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(questionDetailAction.pending, (state) => {\n state.getDetailQuestion = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(questionDetailAction.fulfilled, (state, { payload }) => {\n state.getDetailQuestion = FetchStatus.FETCHED;\n state.questionDetail = payload;\n state.error = null;\n })\n .addCase(questionDetailAction.rejected, (state, { error }) => {\n state.getDetailQuestion = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(questionBlockAction.pending, (state) => {\n state.questionBlockStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(questionBlockAction.fulfilled, (state, { payload }) => {\n state.questionBlockStatus = FetchStatus.FETCHED;\n state.questionBlock = payload;\n state.error = null;\n })\n .addCase(questionBlockAction.rejected, (state, { error }) => {\n state.questionBlockStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(fetchAssignmentSearchBlocksAction.pending, (state) => {\n state.fetchAssignmentSearchBlocksStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(fetchAssignmentSearchBlocksAction.fulfilled, (state, { payload }) => {\n state.fetchAssignmentSearchBlocksStatus = FetchStatus.FETCHED;\n state.formValues = payload.formValues;\n state.questions = payload.questions;\n state.assignmentSearchBlocks = payload.assignmentSearchBlocks;\n state.error = null;\n })\n .addCase(fetchAssignmentSearchBlocksAction.rejected, (state, { error }) => {\n state.fetchAssignmentSearchBlocksStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(saveStateSearchPageStore, (state, { payload }) => {\n const filterArray = payload.values.leftSearchBlock.filter((question) =>\n question.questions.filter((item) => !payload.values.excludesIds.includes(item.id)),\n );\n payload.values.leftSearchBlock = filterArray;\n state.formValues = [\n ...state.formValues.filter((item) => item.questionNum !== payload.values.questionNum),\n payload.values,\n ].sort((a, b) => a.questionNum - b.questionNum);\n });\n builder.addCase(resetSearchBlocksStore, () => ({ ...initialState }));\n builder.addCase(saveCreateQuestionsStore, (state, { payload }) => {\n const oldQuestions = state.questions\n .filter((question) => question.questionNum === payload.questions.questionNum)\n .pop()?.questions;\n const newValue = {\n questionNum: payload.questions.questionNum,\n questions: payload.questions.questions.concat(oldQuestions ? (oldQuestions as IQuestion[]) : []),\n };\n state.questions = [\n ...state.questions.filter((question) => question.questionNum !== payload.questions.questionNum),\n payload.action === 'create' ? newValue : payload.questions,\n ].sort((a, b) => a.questionNum - b.questionNum);\n if (payload.action === 'create') {\n const oldCreatedQuestions = state.createdQuestions\n .filter((question) => question.questionNum === payload.questions.questionNum)\n .pop()?.questions;\n const newCreatedValue = {\n questionNum: payload.questions.questionNum,\n questions: payload.questions.questions.concat(\n oldCreatedQuestions ? (oldCreatedQuestions as IQuestion[]) : [],\n ),\n };\n state.createdQuestions = [\n ...state.createdQuestions.filter(\n (question) => question.questionNum !== payload.questions.questionNum,\n ),\n newCreatedValue,\n ].sort((a, b) => a.questionNum - b.questionNum);\n }\n });\n builder.addCase(addEmptyFormValuesStore, (state) => {\n state.formValues = [\n ...state.formValues,\n {\n filters: [],\n rightSearchBlock: [],\n leftSearchBlock: [],\n questionNum: state.formValues.length + 1,\n excludesIds: [],\n },\n ];\n });\n builder.addCase(addEmptyQuestionsStore, (state) => {\n state.questions = [...state.questions, { questions: [], questionNum: state.questions.length + 1 }];\n state.createdQuestions = [\n ...state.createdQuestions,\n { questions: [], questionNum: state.createdQuestions.length + 1 },\n ];\n });\n builder\n .addCase(postNewAssignmentAction.fulfilled, (state, { payload }) => {\n state.postSearchBlock = FetchStatus.FETCHED;\n state.assignmentSearchBlocks = [...state.assignmentSearchBlocks, ...payload.postedSearchBlocks];\n state.error = null;\n })\n .addCase(updateAssignmentNewAction.fulfilled, (state, { payload }) => {\n state.assignmentSearchBlocks = [\n ...state.assignmentSearchBlocks,\n ...payload.postedSearchBlocks,\n ...payload.patchedSearchBlocks,\n ].filter((searchBlock) => !(searchBlock.id && payload.deletedSearchBlocks.includes(searchBlock.id)));\n });\n },\n});\n\nexport const { deleteFormValuesStore, updateFormValuesAction } = questionsSearchBlockSlice.actions;\nexport const setUpdateFlag = questionsSearchBlockSlice.actions.setUpdateFlag as ActionCreatorWithoutPayload;\nexport const resetUpdateFlag = questionsSearchBlockSlice.actions.resetUpdateFlag as ActionCreatorWithoutPayload;\n\nexport const questionsSearchBlockReducer = questionsSearchBlockSlice.reducer;\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport { getStudentDataAction, postStudentProfileData } from 'store/actions/student';\nimport { FetchStatus } from 'types/api';\nimport { StudentProfile } from 'types/students';\n\nexport interface StudentState {\n getStudentDataStatus: FetchStatus;\n postStudentProfileData: FetchStatus;\n studentData: StudentProfile | null;\n error: unknown;\n}\n\nconst initialState: StudentState = {\n getStudentDataStatus: FetchStatus.INITIAL,\n postStudentProfileData: FetchStatus.INITIAL,\n studentData: null,\n error: null,\n};\n\nconst studentSlice = createSlice>({\n name: 'student',\n initialState,\n reducers: {\n reset() {\n return initialState;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getStudentDataAction.pending, (state) => {\n state.getStudentDataStatus = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(getStudentDataAction.fulfilled, (state, { payload }) => {\n state.getStudentDataStatus = FetchStatus.FETCHED;\n state.studentData = payload;\n state.error = null;\n });\n builder.addCase(getStudentDataAction.rejected, (state, { error }) => {\n state.getStudentDataStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder.addCase(postStudentProfileData.pending, (state) => {\n state.postStudentProfileData = FetchStatus.FETCHING;\n state.error = null;\n });\n builder.addCase(postStudentProfileData.fulfilled, (state, { payload }) => {\n state.postStudentProfileData = FetchStatus.FETCHED;\n state.studentData = payload;\n state.error = null;\n });\n builder.addCase(postStudentProfileData.rejected, (state, { error }) => {\n state.postStudentProfileData = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nexport const resetStudentDataState = studentSlice.actions.reset as ActionCreatorWithoutPayload;\nexport const studentReducer = studentSlice.reducer;\n","import React from 'react';\nimport { Field, FieldRenderProps } from 'react-final-form';\nimport { Checkbox } from '@lms-elements/atomic';\nimport { composeValidators } from '@lms-elements/utils';\n\nimport { ICheckboxFieldProps } from './CheckboxField.types';\n\nexport const CheckboxField: React.FC = ({ name, validators = [], isError, className }) => {\n return (\n
\n (isError ? 'error' : undefined))}\n >\n {({ input }: FieldRenderProps) => {\n return (\n input.onChange(e)}\n onFocus={(e) => input.onFocus(e)}\n onBlur={(e) => input.onBlur(e)}\n isError={isError}\n />\n );\n }}\n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormState } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\nimport { CheckboxField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/CheckboxField';\n\nimport { IDetailedAnswerFieldsProps, IDetailedAnswerOption } from './DetailedAnswerFields.types';\n\nimport './DetailedAnswerFields.scss';\n\nconst DetailedCn = cn('detailed-question');\n\nconst DetailedAnswerFields: React.FC = ({\n name,\n checkboxesValidators = [],\n needHideSmartBoardToggle,\n}) => {\n const { values } = useFormState();\n\n const answerOption = getObjectPropertyByString(values, name);\n\n const [checkboxError, setCheckboxError] = useState(false);\n\n useEffect(() => {\n setCheckboxError(!(answerOption?.isFileAvailable || answerOption?.isTextAvailable));\n }, [values, answerOption]);\n\n return (\n
\n

Принимать ответы в виде:

\n\n
\n
\n (checkboxError ? 'error' : undefined), ...checkboxesValidators]}\n />\n
Файла
\n
\n\n
\n (checkboxError ? 'error' : undefined), ...checkboxesValidators]}\n />\n
Текстового поля
\n
\n\n {!needHideSmartBoardToggle && (\n
\n (checkboxError ? 'error' : undefined), ...checkboxesValidators]}\n />\n
Использование SmartBoard
\n
\n )}\n
\n
\n );\n};\n\nexport default DetailedAnswerFields;\n","import { ContentBlock, ContentState, EditorState } from 'draft-js';\n\nexport enum InlineStyles {\n BOLD = 'BOLD',\n ITALIC = 'ITALIC',\n UNDERLINE = 'UNDERLINE',\n STRIKETHROUGH = 'STRIKETHROUGH',\n}\n\nexport enum CommonBlocks {\n UNSTYLED = 'unstyled',\n H1 = 'header-one',\n H2 = 'header-two',\n H3 = 'header-three',\n H4 = 'header-four',\n H5 = 'header-five',\n H6 = 'header-six',\n BLOCKQUOTE = 'blockquote',\n CODE = 'pre',\n}\n\nexport enum ListTypes {\n ORDERED_LIST_ITEM = 'ordered-list-item',\n UNORDERED_LIST_ITEM = 'unordered-list-item',\n}\n\nexport enum ActionBlockTypes {\n INFO_BLOCK = 'INFO_BLOCK',\n WARNING_BLOCK = 'WARNING_BLOCK',\n THEOREM_BLOCK = 'THEOREM_BLOCK',\n QUOTE_BLOCK = 'QUOTE_BLOCK',\n DEFINITION_BLOCK = 'DEFINITION_BLOCK',\n CODE_BLOCK = 'CODE_BLOCK',\n}\n\nexport type BlockTypes = CommonBlocks | ListTypes | ActionBlockTypes;\n\nexport interface ICustomOptionProps {\n onChange: React.Dispatch>;\n editorState: EditorState;\n}\n\nexport enum EntityTypes {\n LATEX = 'LATEX',\n LINK = 'LINK',\n INSERT_WORD = 'INSERT_WORD',\n MENTION = 'MENTION',\n IMAGE = 'IMAGE',\n EMBEDDED_LINK = 'EMBEDDED_LINK',\n}\n\nexport const INSERT_WORD_REPLACE = '';\nexport const NEW_LINE_DELIMETER = '';\n\nexport interface IBlockProps> {\n block: ContentBlock;\n contentState: ContentState;\n blockProps: T;\n}\n\nexport interface IBlockRendererObject> {\n component: React.FC>;\n editable?: boolean;\n props?: T;\n}\n","import React, { useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Definition, Info, Quote, Theorem, WarningTriangle } from '@lms-elements/icons';\nimport { EditorBlock } from 'draft-js';\nimport { ActionBlockTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { ActionBlockComponentProps } from './ActionBlockComponent.types';\n\nimport './ActionBlockComponent.scss';\n\nconst ActionBlockComponentCn = cn('action-block-component');\n\nexport const ActionBlockComponent: React.FC = ({ blockProps: { type }, ...props }) => {\n const ActionIcon = useMemo(() => {\n switch (type) {\n case ActionBlockTypes.INFO_BLOCK:\n return Info;\n case ActionBlockTypes.WARNING_BLOCK:\n return WarningTriangle;\n case ActionBlockTypes.THEOREM_BLOCK:\n return Theorem;\n case ActionBlockTypes.QUOTE_BLOCK:\n return Quote;\n case ActionBlockTypes.DEFINITION_BLOCK:\n return Definition;\n }\n }, [type]);\n\n return (\n <>\n {type === ActionBlockTypes.CODE_BLOCK ? (\n \n ) : (\n
\n {ActionIcon && }\n
\n \n
\n
\n )}\n \n );\n};\n","import {\n ActionBlockTypes,\n IBlockRendererObject,\n} from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { ActionBlockComponentBlockProps } from './ActionBlockComponent/ActionBlockComponent.types';\nimport { ActionBlockComponent } from './ActionBlockComponent';\n\nexport const getActionBlockRenderer = (\n type: ActionBlockTypes,\n): IBlockRendererObject => ({\n component: ActionBlockComponent,\n props: {\n type,\n },\n});\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\n\nimport { IOptionButtonProps } from './OptionButton.types';\n\nimport './OptionButton.scss';\n\nconst CnOptionButton = cn('option-button');\n\nexport const OptionButton: React.FC = ({ children, active = false, ...props }) => {\n return (\n \n );\n};\n","import { DraftEntityMutability, EditorState, Modifier } from 'draft-js';\nimport { getEntityRange, getSelectionEntity } from 'draftjs-utils';\nimport { EntityTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\ninterface IAddEntityProps {\n editorState: EditorState;\n onChange: (editorState: EditorState) => void;\n text: string;\n entityType: EntityTypes;\n mutability: DraftEntityMutability;\n entityData?: Record;\n selectAfterCreate?: boolean;\n insertSpaceAfter?: boolean;\n}\n\nexport const addEntity = ({\n editorState,\n onChange,\n text,\n entityType,\n mutability,\n entityData,\n selectAfterCreate = false,\n insertSpaceAfter = true,\n}: IAddEntityProps): void => {\n const currentEntity = getSelectionEntity(editorState);\n let selection = editorState.getSelection();\n\n if (currentEntity) {\n const entityRange = getEntityRange(editorState, currentEntity);\n const isBackward = selection.getIsBackward();\n if (isBackward) {\n selection = selection.merge({\n anchorOffset: entityRange.end,\n focusOffset: entityRange.start,\n });\n } else {\n selection = selection.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n });\n }\n }\n const entityKey = editorState\n .getCurrentContent()\n .createEntity(entityType, mutability, entityData)\n .getLastCreatedEntityKey();\n\n let contentState = Modifier.replaceText(\n editorState.getCurrentContent(),\n selection,\n text,\n editorState.getCurrentInlineStyle(),\n entityKey,\n );\n let newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n\n selection = newEditorState.getSelection().merge({\n anchorOffset: selection.getAnchorOffset() + text.length,\n focusOffset: selection.getAnchorOffset() + text.length,\n });\n newEditorState = EditorState.acceptSelection(newEditorState, selection);\n\n if (insertSpaceAfter) {\n contentState = Modifier.insertText(\n newEditorState.getCurrentContent(),\n selection,\n ' ',\n newEditorState.getCurrentInlineStyle(),\n undefined,\n );\n }\n\n if (selectAfterCreate) {\n newEditorState = EditorState.push(newEditorState, contentState, 'insert-characters');\n\n selection = newEditorState.getSelection().merge({\n anchorOffset: selection.getAnchorOffset() - text.length,\n focusOffset: selection.getAnchorOffset(),\n });\n newEditorState = EditorState.acceptSelection(newEditorState, selection);\n }\n\n onChange(EditorState.push(newEditorState, contentState, 'insert-characters'));\n};\n","import { ContentBlock, ContentState, EditorState, genKey } from 'draft-js';\nimport { Map } from 'immutable';\nimport { BlockTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nexport const addNewBlockAt = (\n editorState: EditorState,\n pivotBlockKey: string,\n newBlockType: BlockTypes,\n initialData = Map({}),\n initialText = '',\n): EditorState => {\n const content = editorState.getCurrentContent();\n const blockMap = content.getBlockMap();\n const block = blockMap.get(pivotBlockKey);\n\n if (!block) {\n throw new Error(`The pivot key - ${pivotBlockKey} is not present in blockMap.`);\n }\n\n const blocksBefore = blockMap.toSeq().takeUntil((value) => value === block);\n const blocksAfter = blockMap\n .toSeq()\n .skipUntil((value) => value === block)\n .rest();\n const newBlockKey = genKey();\n\n const newBlock = new ContentBlock({\n key: newBlockKey,\n type: newBlockType,\n text: initialText,\n depth: 0,\n data: initialData,\n });\n\n const newBlockMap = blocksBefore\n .concat(\n [\n [pivotBlockKey, block],\n [newBlockKey, newBlock],\n ],\n blocksAfter,\n )\n .toOrderedMap();\n\n const selection = editorState.getSelection();\n\n const newContent = content.merge({\n blockMap: newBlockMap,\n selectionBefore: selection,\n selectionAfter: selection.merge({\n anchorKey: newBlockKey,\n anchorOffset: 0,\n focusKey: newBlockKey,\n focusOffset: 0,\n isBackward: false,\n }),\n }) as ContentState;\n\n return EditorState.push(editorState, newContent, 'split-block');\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\n\nimport './CodeBlockWrapper.scss';\n\nexport const CnCodeBlockComponent = cn('code-block-component');\n\nexport const CodeBlockWrapper: React.FC = ({ children }) =>
    {children}
;\n","import { BlockMap, EditorState, Modifier } from 'draft-js';\nimport { getSelectedBlock } from 'draftjs-utils';\n// @ts-ignore\nimport htmlToDraft from 'html-to-draftjs';\nimport { List, Map } from 'immutable';\nimport { ActionBlockTypes, CommonBlocks } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nconst shouldUseText = (blockType: string) =>\n blockType === CommonBlocks.CODE ||\n blockType === ActionBlockTypes.INFO_BLOCK ||\n blockType === ActionBlockTypes.WARNING_BLOCK ||\n blockType === ActionBlockTypes.THEOREM_BLOCK ||\n blockType === ActionBlockTypes.QUOTE_BLOCK ||\n blockType === ActionBlockTypes.DEFINITION_BLOCK;\n\nexport const handlePastedText = (\n text: string,\n html: string,\n editorState: EditorState,\n onChange: (state: EditorState) => void,\n savePastedStyles: boolean,\n): boolean => {\n const selectedBlock = getSelectedBlock(editorState);\n const blockType = selectedBlock?.getType();\n if (shouldUseText(blockType)) {\n const contentState = Modifier.replaceText(\n editorState.getCurrentContent(),\n editorState.getSelection(),\n text,\n editorState.getCurrentInlineStyle(),\n );\n\n onChange(EditorState.push(editorState, contentState, 'insert-characters'));\n return true;\n }\n\n if (html && savePastedStyles) {\n const contentBlock = htmlToDraft(html);\n let contentState = editorState.getCurrentContent();\n (contentBlock.entityMap as Map>).forEach((value, key) => {\n if (key && value) {\n contentState = contentState.mergeEntityData(key, value);\n }\n });\n contentState = Modifier.replaceWithFragment(\n contentState,\n editorState.getSelection(),\n (List(contentBlock.contentBlocks) as unknown) as BlockMap,\n );\n onChange(EditorState.push(editorState, contentState, 'insert-characters'));\n return true;\n }\n\n if (!savePastedStyles) {\n const contentState = Modifier.replaceText(\n editorState.getCurrentContent(),\n editorState.getSelection(),\n text,\n editorState.getCurrentInlineStyle(),\n );\n\n onChange(EditorState.push(editorState, contentState, 'insert-characters'));\n return true;\n }\n\n return false;\n};\n","import { EditorState } from 'draft-js';\nimport { getSelectedBlock } from 'draftjs-utils';\n\nconst PHRASE_REGEX = /^[^\\s,.](.*[^\\s,.])?$/;\nconst NOT_AVAILABLE_CHAR_REGEX = /[\\s,.]/;\n\nexport const isPhraseSelected = (editorState: EditorState): boolean => {\n const selection = editorState.getSelection();\n const plainText = getSelectedBlock(editorState).getText();\n const startOffset = selection.getStartOffset();\n const endOffset = selection.getEndOffset();\n\n return (\n !NOT_AVAILABLE_CHAR_REGEX.test(plainText.slice(startOffset, endOffset)) &&\n PHRASE_REGEX.test(plainText.slice(startOffset, endOffset))\n );\n};\n","import React, { SetStateAction } from 'react';\nimport { EditorState, Modifier } from 'draft-js';\n\ninterface IremoveEntityFromSelectionProps {\n editorState: EditorState;\n onChange: React.Dispatch>;\n}\n\nexport const removeEntityFromSelection = ({ editorState, onChange }: IremoveEntityFromSelectionProps): void => {\n let selection = editorState.getSelection();\n const contentState = Modifier.applyEntity(editorState.getCurrentContent(), selection, null);\n let newEditorState = EditorState.push(editorState, contentState, 'apply-entity');\n selection = newEditorState.getSelection().merge({\n anchorOffset: selection.getAnchorOffset(),\n focusOffset: selection.getAnchorOffset(),\n });\n newEditorState = EditorState.acceptSelection(newEditorState, selection);\n\n onChange(newEditorState);\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { CodeIcon, Definition, Info, Quote, TheoremSmall, WarningTriangle } from '@lms-elements/icons';\nimport { getSelectedBlock } from 'draftjs-utils';\nimport { OptionButton } from 'src-new/components/lms-elements/CustomEditor/components/OptionButton';\nimport { ActionBlockTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\nimport { addNewBlockAt } from 'src-new/components/lms-elements/CustomEditor/utils';\n\nimport { IActionBlockOptionProps } from './ActionBlockOption.types';\n\nimport './ActionBlockOption.scss';\n\nconst ActionBlockOptionCn = cn('action-block-option');\n\nexport const ActionBlockOption: React.FC = ({ editorState, onChange, type }) => {\n const onClick = useCallback(\n () => onChange(addNewBlockAt(editorState, editorState.getSelection().getAnchorKey(), type)),\n [type, editorState, onChange],\n );\n\n const active = useMemo(() => (getSelectedBlock(editorState).get('type') as string) === type, [editorState, type]);\n\n const { ActionIcon, title } = useMemo(() => {\n switch (type) {\n case ActionBlockTypes.INFO_BLOCK:\n return { ActionIcon: Info, title: 'Информация' };\n case ActionBlockTypes.WARNING_BLOCK:\n return { ActionIcon: WarningTriangle, title: 'Важное' };\n case ActionBlockTypes.THEOREM_BLOCK:\n return { ActionIcon: TheoremSmall, title: 'Теорема' };\n case ActionBlockTypes.QUOTE_BLOCK:\n return { ActionIcon: Quote, title: 'Цитата' };\n case ActionBlockTypes.DEFINITION_BLOCK:\n return { ActionIcon: Definition, title: 'Определение' };\n case ActionBlockTypes.CODE_BLOCK:\n return { ActionIcon: CodeIcon, title: 'Код' };\n }\n }, [type]);\n\n return (\n
\n \n \n \n
\n );\n};\n","import React, { useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { OrderedListIcon, UnorderedListIcon } from '@lms-elements/icons';\nimport { RichUtils } from 'draft-js';\nimport { getSelectedBlock } from 'draftjs-utils';\nimport { OptionButton } from 'src-new/components/lms-elements/CustomEditor/components/OptionButton';\nimport { ListTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { IBlockOptionProps } from './BlockOption.types';\n\nimport './BlockOption.scss';\n\nconst CnBlockOption = cn('block-option');\n\nexport const BlockOption: React.FC = ({ editorState, onChange, type }) => {\n const toggleBlockType = () => {\n const newState = RichUtils.toggleBlockType(editorState, type);\n if (newState) {\n onChange(newState);\n }\n };\n\n const active = useMemo(() => (getSelectedBlock(editorState).get('type') as string) === type, [editorState, type]);\n\n const Icon = useMemo(() => {\n switch (type) {\n case ListTypes.ORDERED_LIST_ITEM:\n return OrderedListIcon;\n case ListTypes.UNORDERED_LIST_ITEM:\n return UnorderedListIcon;\n default:\n return OrderedListIcon;\n }\n }, [type]);\n\n return (\n \n \n \n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { BoldTextIcon, ItalicTextIcon, StrikethroughTextIcon, UnderlinedTextIcon } from '@lms-elements/icons';\nimport { RichUtils } from 'draft-js';\nimport { getSelectionInlineStyle } from 'draftjs-utils';\nimport { OptionButton } from 'src-new/components/lms-elements/CustomEditor/components/OptionButton';\nimport { InlineStyles } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { IInlineOptionProps } from './InlineOption.types';\n\nimport './InlineOption.scss';\n\nconst CnInlineOption = cn('inline-option');\n\nexport const InlineOption: React.FC = ({ editorState, onChange, type }) => {\n const toggleInlineStyle = useCallback(() => {\n const newState = RichUtils.toggleInlineStyle(editorState, type);\n if (newState) {\n onChange(newState);\n }\n }, [editorState, onChange, type]);\n\n const active = useMemo(() => !!getSelectionInlineStyle(editorState)[type], [editorState, type]);\n\n const Icon = useMemo(() => {\n switch (type) {\n case InlineStyles.BOLD:\n return BoldTextIcon;\n case InlineStyles.ITALIC:\n return ItalicTextIcon;\n case InlineStyles.STRIKETHROUGH:\n return StrikethroughTextIcon;\n case InlineStyles.UNDERLINE:\n return UnderlinedTextIcon;\n default:\n return BoldTextIcon;\n }\n }, [type]);\n\n return (\n \n \n \n );\n};\n","import React, { ClipboardEvent, useCallback } from 'react';\n\ntype CopyCutHandler = (event: ClipboardEvent) => void;\nexport const useHandleCopyCut = (text: string): CopyCutHandler => {\n const handleCopyCut = useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault();\n navigator.clipboard\n .writeText(text)\n .then(() => false)\n .catch((err) => console.error(err));\n },\n [text],\n );\n\n return handleCopyCut;\n};\n","import React from 'react';\nimport { DraftDecorator } from 'draft-js';\nimport { useHandleCopyCut } from 'src-new/components/lms-elements/CustomEditor/hooks/useHandleCopyCut';\nimport { EntityTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { IInsertWordWrapperProps } from './InsertWordDecorator.types';\n\nimport './InsertWordDecorator.scss';\n\nconst findInsertWordEntities: DraftDecorator['strategy'] = (contentBlock, callback, contentState) => {\n contentBlock.findEntityRanges((character) => {\n const entityKey = character.getEntity();\n return entityKey !== null && contentState.getEntity(entityKey).getType() === EntityTypes.INSERT_WORD;\n }, callback);\n};\n\nconst InsertWordWrapper: React.FC = ({ decoratedText, children }) => {\n const handleCopyCut = useHandleCopyCut(decoratedText);\n\n return children ? (\n \n {children}\n \n ) : null;\n};\n\nexport const insertWordDecorator = {\n strategy: findInsertWordEntities,\n component: InsertWordWrapper,\n};\n","import React, { CSSProperties, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\n\nimport { IAddInsertionPopUpProps } from './AddInsertionPopUp.types';\n\nimport './AddInsertionPopUp.scss';\n\nconst cx = cn('custom-editor-add-insertion-popup');\n\nexport const AddInsertionPopUp = React.forwardRef(\n ({ top, left, ...props }, ref) => {\n const style: CSSProperties = useMemo(() => ({ top, left }), [left, top]);\n\n return (\n
\n \n
\n );\n },\n);\n","import React, { useCallback } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Basket } from '@lms-elements/icons';\n\nimport { IInsertWordOptionProps } from './InsertWordOption.types';\n\nimport './InsertWordOption.scss';\n\nconst cx = cn('insert-word-popup-option');\n\nexport const InsertWordOption = React.forwardRef(\n ({ onEnter, onDelete, onSave, startValue, ...props }, ref) => {\n const onChange = useCallback((e: React.ChangeEvent) => onSave(e.target.value), [onSave]);\n\n return (\n
\n \n \n
\n );\n },\n);\n","import React, { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { useOuterClick } from '@lms-elements/hooks';\n\nimport { INSERT_WORD_POPUP_WIDTH } from './constants';\nimport { InsertWordOption } from './InsertWordOption';\nimport { IInsertWordPopUpProps } from './InsertWordPopUp.types';\n\nimport './InsertWordPopUp.scss';\n\nconst cx = cn('custom-editor-insert-word-popup');\n\nexport const InsertWordPopUp: React.FC = ({\n options,\n setOptions,\n onSave,\n onCancel,\n setInPopup,\n left,\n top,\n}) => {\n const onOptionEnter = useCallback(\n (index: number) => (e: React.KeyboardEvent) => {\n if (e.key.toLowerCase() === 'enter') {\n e.preventDefault();\n setOptions((prev) => [...prev.slice(0, index + 1), '', ...prev.slice(index + 1)]);\n setActiveIndex(index + 1);\n }\n },\n [setOptions],\n );\n\n const onOptionSave = useCallback(\n (index: number) => (option: string) =>\n setOptions((prev) => prev.map((_option, _index) => (_index === index ? option : _option))),\n [setOptions],\n );\n\n const onOptionDelete = useCallback(\n (index: number) => () =>\n options.length > 1 ? setOptions((prev) => prev.filter((_, _index) => _index !== index)) : setOptions(['']),\n [options.length, setOptions],\n );\n\n const style: CSSProperties = useMemo(() => ({ left, top }), [left, top]);\n\n const [position, setPosition] = useState<'left' | 'right'>('right');\n\n const ref = useRef(null);\n\n useEffect(() => {\n const handlePopUpStyles = () => {\n if (ref.current) {\n if (left + INSERT_WORD_POPUP_WIDTH < window.innerWidth) {\n setPosition('right');\n } else {\n setPosition('left');\n }\n }\n };\n window.addEventListener('resize', handlePopUpStyles, { passive: true });\n handlePopUpStyles();\n return () => window.removeEventListener('resize', handlePopUpStyles);\n }, [left, top]);\n\n const onPopupClick = useCallback(() => setInPopup(true), [setInPopup]);\n\n useOuterClick(ref, setInPopup);\n\n const [activeIndex, setActiveIndex] = useState(undefined);\n\n const activeInputRef = useRef(null);\n\n useEffect(() => {\n if (activeInputRef.current && activeIndex !== undefined) {\n activeInputRef.current.focus();\n }\n }, [activeIndex]);\n\n const onOptionFocus = useCallback((index: number) => () => setActiveIndex(index), []);\n\n useEffect(() => () => setActiveIndex(undefined), []);\n\n return (\n
\n
\n

Трансформировать в пропуск

\n {options.map((option, index) => (\n
\n \n {index === 0 && (\n *enter с новой строки - новый вариант ответа\n )}\n
\n ))}\n
\n \n \n
\n
\n
\n );\n};\n","export const INSERT_WORD_POPUP_WIDTH = 360;\n","import React, { RefObject } from 'react';\nimport { EditorState } from 'draft-js';\n\nexport interface IInsertWordProviderProps {\n editorState: EditorState;\n onChange: React.Dispatch>;\n editorRect: DOMRect | undefined;\n containerRef: RefObject;\n}\n\nexport type Position = {\n top: number;\n left: number;\n};\n\nexport enum PopupType {\n CREATE = 'CREATE',\n UPDATE = 'UPDATE',\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Entity } from 'draft-js';\nimport { getSelectionEntity, getSelectionText } from 'draftjs-utils';\nimport { AddInsertionPopUp } from 'src-new/components/lms-elements/CustomEditor/components/InsertWord/AddInsertionPopUp';\nimport { InsertWordPopUp } from 'src-new/components/lms-elements/CustomEditor/components/InsertWord/InsertWordPopUp';\nimport { InsertWordData } from 'src-new/components/lms-elements/CustomEditor/types/entities.types';\nimport { EntityTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\nimport {\n addEntity,\n createRectRelativeToScroll,\n isPhraseSelected,\n isRectAInRectB,\n removeEntityFromSelection,\n} from 'src-new/components/lms-elements/CustomEditor/utils';\n\nimport { IInsertWordProviderProps, PopupType, Position } from './InsertWordProvider.types';\n\nexport const InsertWordProvider: React.FC = ({\n editorState,\n onChange,\n editorRect,\n containerRef,\n}) => {\n const [popupPosition, setPopupPosition] = useState(undefined);\n const [popupType, setPopupType] = useState(PopupType.CREATE);\n const [currentInsertationOptions, setCurrentInsertationOptions] = useState(['']);\n const [selectedText, setSelectedText] = useState('');\n const [inPopup, setInPopup] = useState(false);\n\n const discardChanges = useCallback(() => {\n setPopupType(PopupType.CREATE);\n setCurrentInsertationOptions(['']);\n setSelectedText('');\n setPopupPosition(undefined);\n setInPopup(() => false);\n }, []);\n\n const handlePopupPosition = useCallback(\n (scrollTop: number, scrollLeft: number, top: number, left: number) => {\n if (inPopup) {\n return;\n }\n\n if (!isPhraseSelected(editorState) && !getSelectionEntity(editorState)) {\n discardChanges();\n return;\n }\n\n const winSelection = window.getSelection();\n if (!winSelection?.rangeCount || winSelection?.rangeCount <= 0 || winSelection.type === 'Caret') {\n return;\n }\n\n const selectionRect = window.getSelection()?.getRangeAt?.(0).getBoundingClientRect();\n\n if (!selectionRect || !editorRect || !isRectAInRectB(selectionRect, editorRect)) {\n discardChanges();\n return;\n }\n\n setSelectedText(getSelectionText(editorState));\n\n const selectionRectRelativeToScroll = createRectRelativeToScroll(selectionRect, scrollTop, scrollLeft);\n\n setPopupPosition({\n left: selectionRectRelativeToScroll.left - left + selectionRectRelativeToScroll.width / 2,\n top: selectionRectRelativeToScroll.top - top + selectionRectRelativeToScroll.height,\n });\n },\n [discardChanges, editorRect, editorState, inPopup],\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const handleResize = () =>\n handlePopupPosition(\n container.scrollTop,\n container.scrollLeft,\n container.getBoundingClientRect().top,\n container.getBoundingClientRect().left,\n );\n\n window.addEventListener('resize', handleResize, { passive: true });\n container.addEventListener('scroll', handleResize, { passive: true });\n\n handleResize();\n container.style.position = 'relative';\n\n return () => {\n window.removeEventListener('resize', handleResize);\n container.removeEventListener('scroll', handleResize);\n };\n }, [containerRef, handlePopupPosition]);\n\n useEffect(() => {\n const selectedEntity = getSelectionEntity(editorState);\n\n if (!selectedEntity) {\n setPopupType(PopupType.CREATE);\n setCurrentInsertationOptions(['']);\n return;\n }\n\n const currentEntity = editorState.getCurrentContent().getEntity(selectedEntity);\n\n if (currentEntity.getType() === EntityTypes.INSERT_WORD && popupType !== PopupType.UPDATE) {\n const { options } = currentEntity.getData() as InsertWordData;\n setCurrentInsertationOptions(options);\n setPopupType(PopupType.UPDATE);\n }\n }, [editorState, popupType]);\n\n const createWordInsertEntity = useCallback(() => {\n addEntity({\n editorState,\n onChange,\n entityType: EntityTypes.INSERT_WORD,\n mutability: 'IMMUTABLE',\n text: selectedText,\n entityData: { text: selectedText, options: [getSelectionText(editorState)] },\n selectAfterCreate: true,\n insertSpaceAfter: false,\n });\n }, [editorState, onChange, selectedText]);\n\n const onSave = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n const selectedEntity = getSelectionEntity(editorState);\n\n const filteredOptions = currentInsertationOptions.filter(Boolean);\n\n if (filteredOptions.length) {\n Entity.mergeData(selectedEntity, { options: filteredOptions } as InsertWordData);\n } else {\n removeEntityFromSelection({ editorState, onChange });\n }\n\n discardChanges();\n },\n [currentInsertationOptions, discardChanges, editorState, onChange],\n );\n\n const onCancel = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n const selectedEntity = getSelectionEntity(editorState);\n const currentEntity = editorState.getCurrentContent().getEntity(selectedEntity);\n\n if (currentEntity.getType() === EntityTypes.INSERT_WORD) {\n const { options } = currentEntity.getData() as InsertWordData;\n if (!options.find(Boolean)) {\n removeEntityFromSelection({ editorState, onChange });\n }\n }\n discardChanges();\n },\n [discardChanges, editorState, onChange],\n );\n\n useEffect(() => {\n if (!isPhraseSelected(editorState)) {\n setInPopup(false);\n }\n }, [editorState]);\n\n return containerRef.current\n ? ReactDOM.createPortal(\n <>\n {popupPosition ? (\n popupType === PopupType.CREATE ? (\n \n ) : (\n \n )\n ) : null}\n ,\n containerRef.current,\n )\n : null;\n};\n","export const isRectAInRectB = (a: DOMRect, b: DOMRect): boolean =>\n a.left >= b.left && a.top >= b.top && a.bottom <= b.bottom && a.right <= b.right;\n","export const createRectRelativeToScroll = (\n rect: DOMRect,\n scrollTop?: number,\n scrollLeft?: number,\n): Pick => {\n const left = scrollLeft ?? (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft);\n const top = scrollTop ?? (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n\n return {\n left: rect.left + left,\n top: rect.top + top,\n width: rect.width,\n height: rect.height,\n };\n};\n","import React from 'react';\nimport Latex from 'react-latex-next';\nimport { DraftDecorator } from 'draft-js';\nimport { useHandleCopyCut } from 'src-new/components/lms-elements/CustomEditor/hooks/useHandleCopyCut';\nimport { EntityTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { ILatexWrapperProps } from './LatexDecorator.types';\n\nconst findLatexEntities: DraftDecorator['strategy'] = (contentBlock, callback, contentState) => {\n contentBlock.findEntityRanges((character) => {\n const entityKey = character.getEntity();\n return entityKey !== null && contentState.getEntity(entityKey).getType() === EntityTypes.LATEX;\n }, callback);\n};\n\nconst LatexWrapper: React.FC = ({ decoratedText, children }) => {\n const handleCopyCut = useHandleCopyCut(decoratedText);\n\n return children ? (\n \n {children}\n {decoratedText}\n \n ) : (\n <>\n );\n};\n\nexport const latexDecorator = {\n strategy: findLatexEntities,\n component: LatexWrapper,\n};\n","import React, { useCallback, useRef } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { useOuterClick } from '@lms-elements/hooks';\n\nimport { IOptionPopUpWrapperProps } from './OptionPopUpWrapper.types';\n\nimport './OptionPopUpWrapper.scss';\n\nconst OptionPopUpWrapperCn = cn('option-popup-wrapper');\n\nexport const OptionPopUpWrapper: React.FC = ({\n setIsShown,\n onSaveClick,\n onCancelClick,\n onOutsideClick,\n children,\n isUseOuterClickRequired = true,\n isSaveDisabled = false,\n}) => {\n const ref = useRef(null);\n useOuterClick(ref, onOutsideClick || setIsShown);\n\n const handleSaveClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n onSaveClick();\n },\n [onSaveClick],\n );\n\n const handleCancel = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (onCancelClick) {\n onCancelClick();\n }\n setIsShown(false);\n },\n [onCancelClick, setIsShown],\n );\n\n return (\n
\n
\n
{children}
\n
\n \n Сохранить\n \n \n Отмена\n \n
\n
\n
\n );\n};\n","const LATEX_REGEX = new RegExp(/^\\$.*\\$$/g);\n\nexport const isLatex = (str: string): boolean => Boolean(str.match(LATEX_REGEX));\n","import React, { useCallback, useMemo } from 'react';\nimport Latex from 'react-latex-next';\nimport { cn } from '@bem-react/classname';\nimport { OptionPopUpWrapper } from 'src-new/components/lms-elements/CustomEditor/components/OptionPopUpWrapper';\n\nimport { ILatexPopUpProps } from './LatexPopUp.types';\nimport { isLatex } from './utils';\n\nimport './LatexPopUp.scss';\n\nconst LatexPopUpCn = cn('latex-popup');\n\nexport const LatexPopUp = React.forwardRef(\n ({ latex, setLatex, setIsShown, onSaveClick, onCancelClick, onOutsideClick, entity }, ref) => {\n const handleCancelClick = useCallback(() => {\n onCancelClick();\n setLatex('');\n }, [setLatex, onCancelClick]);\n\n const isSaveDisabled = useMemo(() => !isLatex(latex) && latex !== '', [latex]);\n\n const onInputChange = useCallback((e: React.ChangeEvent) => setLatex(e.target.value), [\n setLatex,\n ]);\n\n const handleSaveBtnClick = useCallback(() => {\n onSaveClick(entity);\n }, [entity, onSaveClick]);\n\n return (\n \n
\n
Вставка формулы
\n \n
\n {latex}\n
\n
\n \n );\n },\n);\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { FormulasIcon } from '@lms-elements/icons';\nimport { EditorState } from 'draft-js';\nimport { getEntityRange, getSelectionEntity } from 'draftjs-utils';\nimport { LatexPopUp } from 'src-new/components/lms-elements/CustomEditor/components/Latex/LatexPopUp';\nimport { OptionButton } from 'src-new/components/lms-elements/CustomEditor/components/OptionButton';\nimport { EntityTypes, ICustomOptionProps } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\nimport { addEntity, removeLatexEntity } from 'src-new/components/lms-elements/CustomEditor/utils';\n\nimport './LatexOption.scss';\n\nconst LatexOptionCn = cn('latex-option');\n\nexport const LatexOption: React.FC = ({ editorState, onChange }) => {\n const [isPopUpShown, setIsPopUpShown] = useState(false);\n\n const togglePopup = useCallback(() => setIsPopUpShown((prev) => !prev), []);\n\n const [latex, setLatex] = useState('');\n\n const insertLatex = useCallback(\n () =>\n addEntity({\n editorState,\n onChange,\n text: latex,\n entityType: EntityTypes.LATEX,\n mutability: 'MUTABLE',\n }),\n [editorState, latex, onChange],\n );\n\n const [entity, setEntity] = useState();\n\n useEffect(() => {\n const selectionState = editorState.getSelection();\n const startOffset = selectionState.getStartOffset();\n const currentEntity = getSelectionEntity(editorState);\n\n if (selectionState.getHasFocus() && startOffset !== 0 && currentEntity) {\n const contentState = editorState.getCurrentContent();\n const range = getEntityRange(editorState, currentEntity);\n\n if (startOffset !== range.start) {\n setTimeout(() => {\n setIsPopUpShown((prev) => {\n if (!currentEntity) {\n return prev;\n }\n\n if (contentState.getEntity(currentEntity).getType() === EntityTypes.LATEX) {\n const entityRange = getEntityRange(editorState, currentEntity);\n setEntity(currentEntity);\n setLatex(entityRange.text);\n return true;\n }\n\n setLatex('');\n return false;\n });\n });\n }\n }\n }, [editorState, isPopUpShown]);\n\n const ref = useRef(null);\n\n const focusPopupInput = useCallback(\n () =>\n setTimeout(() => {\n ref.current?.focus();\n }),\n [],\n );\n\n useEffect(() => {\n if (isPopUpShown) {\n focusPopupInput();\n }\n }, [isPopUpShown, focusPopupInput]);\n\n const handleSave = useCallback(\n (entity?: string) => {\n if (latex === '' && entity) {\n removeLatexEntity({ editorState, onChange, entity });\n setIsPopUpShown(false);\n setEntity(undefined);\n return;\n }\n\n insertLatex();\n setIsPopUpShown(false);\n setEntity(undefined);\n setLatex('');\n },\n [editorState, insertLatex, latex, onChange],\n );\n\n const handleCancelClick = useCallback(() => {\n const currentEntity = getSelectionEntity(editorState);\n const contentState = editorState.getCurrentContent();\n const selection = editorState.getSelection();\n\n if (currentEntity && contentState.getEntity(currentEntity).getType() === EntityTypes.LATEX) {\n const entityRange = getEntityRange(editorState, currentEntity);\n const selectionWithOffset = selection.merge({\n focusOffset: entityRange.end + 1,\n anchorOffset: entityRange.end + 1,\n });\n onChange(EditorState.acceptSelection(editorState, selectionWithOffset));\n }\n\n setIsPopUpShown(false);\n setEntity(undefined);\n }, [editorState, onChange]);\n\n const handlePopupOutsideClick = useCallback(() => {\n const currentEntity = getSelectionEntity(editorState);\n const contentState = editorState.getCurrentContent();\n const isOnLatex = currentEntity && contentState.getEntity(currentEntity).getType() === EntityTypes.LATEX;\n\n if (!isOnLatex) {\n setIsPopUpShown(false);\n setEntity(undefined);\n }\n }, [editorState]);\n\n return (\n
\n \n \n \n {isPopUpShown && (\n
\n \n
\n )}\n
\n );\n};\n","import React, { SetStateAction } from 'react';\nimport { EditorState, Modifier } from 'draft-js';\nimport { getEntityRange } from 'draftjs-utils';\n\ninterface IremoveEntityFromSelectionProps {\n entity: string;\n editorState: EditorState;\n onChange: React.Dispatch>;\n}\n\nexport const removeLatexEntity = ({ entity, editorState, onChange }: IremoveEntityFromSelectionProps): void => {\n let selection = editorState.getSelection();\n const entityRange = getEntityRange(editorState, entity);\n const isBackward = selection.getIsBackward();\n if (isBackward) {\n selection = selection.merge({\n anchorOffset: entityRange.end,\n focusOffset: entityRange.start,\n });\n } else {\n selection = selection.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n });\n }\n let contentState = Modifier.applyEntity(editorState.getCurrentContent(), selection, null);\n let newEditorState = EditorState.push(editorState, contentState, 'apply-entity');\n\n contentState = Modifier.removeRange(\n newEditorState.getCurrentContent(),\n selection,\n isBackward ? 'backward' : 'forward',\n );\n newEditorState = EditorState.push(newEditorState, contentState, 'delete-character');\n selection = newEditorState.getSelection().merge({\n anchorOffset: selection.getAnchorOffset(),\n focusOffset: selection.getAnchorOffset(),\n });\n newEditorState = EditorState.acceptSelection(newEditorState, selection);\n\n onChange(newEditorState);\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { OpenLinkIcon } from '@lms-elements/icons';\nimport { LinkData } from 'src-new/components/lms-elements/CustomEditor/types/entities.types';\nimport { downloadTxtFileFromUrlByLink } from 'src-new/utils';\n\nimport { ILinkWrapperProps } from './LinkWrapper.types';\n\nimport './LinkWrapper.scss';\n\nconst LinkWrapperCn = cn('link-wrapper');\n\nconst POPUP_SIZE = 34;\n\n/**\n *\n * @param prm\n * @param prm.entityKey\n * @param prm.contentState\n * @param prm.children\n */\nexport const LinkWrapper: React.FC = ({ entityKey, contentState, children }) => {\n const [isPopUpShown, setIsPopUpShown] = useState(false);\n const [popUpStyles, setPopUpStyles] = useState({\n top: -9999,\n left: -9999,\n });\n\n const handleDocumentScroll = useCallback(() => {\n setIsPopUpShown(false);\n }, []);\n\n const handleLinkMouseEnter = useCallback(\n (e: React.MouseEvent | React.TouchEvent) => {\n const link = e.currentTarget as HTMLDivElement;\n\n const { x, y } = link.getBoundingClientRect();\n setPopUpStyles({\n top: y + POPUP_SIZE / 3,\n left: x - POPUP_SIZE + 2,\n });\n\n document.addEventListener('touchmove', handleDocumentScroll);\n document.addEventListener('mousewheel', handleDocumentScroll);\n document.addEventListener('scroll', handleDocumentScroll);\n\n setIsPopUpShown(true);\n },\n [handleDocumentScroll],\n );\n\n const handleLinkMouseLeave = useCallback(() => {\n setPopUpStyles({ top: -9999, left: -9999 });\n\n document.removeEventListener('touchmove', handleDocumentScroll);\n document.removeEventListener('mousewheel', handleDocumentScroll);\n document.removeEventListener('scroll', handleDocumentScroll);\n\n setIsPopUpShown(false);\n }, [handleDocumentScroll]);\n\n const { url, target } = useMemo(() => contentState.getEntity(entityKey).getData() as LinkData, [\n contentState,\n entityKey,\n ]);\n\n const openLink = useCallback(() => {\n if (url.includes('.txt')) {\n void downloadTxtFileFromUrlByLink(url);\n } else {\n const linkTab = window.open(url, target);\n if (linkTab) {\n linkTab.focus();\n }\n }\n }, [target, url]);\n\n return (\n \n \n {children}\n \n {isPopUpShown && (\n
\n \n
\n )}\n
\n );\n};\n","import { DraftDecorator } from 'draft-js';\nimport { EntityTypes } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nimport { LinkWrapper } from './LinkWrapper';\n\nconst findLinkEntities: DraftDecorator['strategy'] = (contentBlock, callback, contentState) => {\n contentBlock.findEntityRanges((character) => {\n const entityKey = character.getEntity();\n return entityKey !== null && contentState.getEntity(entityKey).getType() === EntityTypes.LINK;\n }, callback);\n};\n\nexport const linkDecorator = {\n strategy: findLinkEntities,\n component: LinkWrapper,\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox } from '@lms-elements/atomic';\nimport { isURL } from '@lms-elements/utils';\nimport { OptionPopUpWrapper } from 'src-new/components/lms-elements/CustomEditor/components/OptionPopUpWrapper';\n\nimport { ILinkPopUpProps } from './LinkPopUp.types';\n\nimport './LinkPopUp.scss';\n\nconst LinkPopUpCn = cn('link-popup');\n\nexport const LinkPopUp: React.FC = ({\n url,\n setUrl,\n text,\n setText,\n isBlank,\n setIsBlank,\n onSaveClick,\n setIsShown,\n}) => {\n const [isUrlCorrect, setIsUrlCorrect] = useState(url.length !== 0 && !isURL(url, true) ? false : isURL(url, true));\n const onCancelClick = useCallback(() => {\n setUrl('');\n setText('');\n setIsBlank(true);\n }, [setIsBlank, setText, setUrl]);\n\n const handleCheckboxChange = useCallback(() => setIsBlank((prev) => !prev), [setIsBlank]);\n\n const onUrlChange = useCallback(\n (e: React.ChangeEvent) => {\n const newUrl = e.target.value;\n\n setIsUrlCorrect(isURL(newUrl, true));\n\n setUrl(newUrl);\n },\n [setUrl, setIsUrlCorrect],\n );\n\n const onTextChange = useCallback((e: React.ChangeEvent) => setText(e.target.value), [setText]);\n\n const isSaveDisabled = useMemo(() => text.length === 0 || !isUrlCorrect, [text.length, isUrlCorrect]);\n\n return (\n \n
\n
\n
Вставка ссылки
\n \n
\n \n \n
\n \n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { LinkIcon } from '@lms-elements/icons';\nimport { getEntityRange, getSelectionEntity, getSelectionText } from 'draftjs-utils';\nimport { LinkPopUp } from 'src-new/components/lms-elements/CustomEditor/components/Link/LinkPopUp';\nimport { OptionButton } from 'src-new/components/lms-elements/CustomEditor/components/OptionButton';\nimport { LinkData } from 'src-new/components/lms-elements/CustomEditor/types/entities.types';\nimport { EntityTypes, ICustomOptionProps } from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\nimport { addEntity } from 'src-new/components/lms-elements/CustomEditor/utils';\n\nimport './LinkOption.scss';\n\nconst LinkOptionCn = cn('link-option');\n\nexport const LinkOption: React.FC = ({ editorState, onChange }) => {\n const [isPopUpShown, setIsPopUpShown] = useState(false);\n const [url, setUrl] = useState('');\n const [text, setText] = useState('');\n const [isBlank, setIsBlank] = useState(true);\n\n const togglePopup = useCallback(() => setIsPopUpShown((prev) => !prev), []);\n\n const addLink = useCallback(\n () =>\n addEntity({\n editorState,\n onChange,\n text,\n entityType: EntityTypes.LINK,\n mutability: 'MUTABLE',\n entityData: { url, target: isBlank ? '_blank' : '_self' },\n insertSpaceAfter: false,\n }),\n [editorState, isBlank, onChange, text, url],\n );\n\n const handleSave = useCallback(() => {\n addLink();\n setText('');\n setUrl('');\n setIsBlank(true);\n setIsPopUpShown(false);\n }, [addLink]);\n\n useEffect(() => {\n const currentEntity = getSelectionEntity(editorState);\n const contentState = editorState.getCurrentContent();\n if (currentEntity && contentState.getEntity(currentEntity).getType() === EntityTypes.LINK) {\n const entityRange = getEntityRange(editorState, currentEntity);\n const { url, target } = contentState.getEntity(currentEntity).getData() as LinkData;\n setText(entityRange.text);\n setUrl(url);\n setIsBlank(target === '_blank');\n } else {\n setText(getSelectionText(editorState));\n setUrl('');\n setIsBlank(true);\n }\n }, [editorState]);\n\n return (\n
\n \n \n \n
\n \n
\n
\n );\n};\n","import React from 'react';\n\nimport './OptionsGroupWrapper.scss';\n\nexport const OptionsGroupWrapper: React.FC = ({ children }) => {\n return
{children}
;\n};\n","import React from 'react';\nimport { blockRenderMap } from 'draftjs-utils';\nimport { Map } from 'immutable';\nimport { CodeBlockWrapper } from 'src-new/components/lms-elements/CustomEditor/components/CodeBlockWrapper';\n\nexport const customBlockRenderMap = Map({\n CODE_BLOCK: {\n element: 'li',\n wrapper: ,\n },\n});\n\nexport const customRenderMap = blockRenderMap.merge(customBlockRenderMap);\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Editor } from 'react-draft-wysiwyg';\nimport { cn } from '@bem-react/classname';\nimport { ContentBlock, ContentState, EditorState, Modifier } from 'draft-js';\nimport { Map } from 'immutable';\nimport { ActionBlockOption } from 'src-new/components/lms-elements/CustomEditor/components/ActionBlock';\nimport { BlockOption } from 'src-new/components/lms-elements/CustomEditor/components/BlockOption';\nimport { InlineOption } from 'src-new/components/lms-elements/CustomEditor/components/InlineOption';\nimport {\n insertWordDecorator,\n InsertWordProvider,\n} from 'src-new/components/lms-elements/CustomEditor/components/InsertWord';\nimport { latexDecorator, LatexOption } from 'src-new/components/lms-elements/CustomEditor/components/Latex';\nimport { linkDecorator, LinkOption } from 'src-new/components/lms-elements/CustomEditor/components/Link';\nimport { OptionsGroupWrapper } from 'src-new/components/lms-elements/CustomEditor/components/OptionsGroupWrapper';\nimport {\n ActionBlockTypes,\n CommonBlocks,\n EntityTypes,\n InlineStyles,\n ListTypes,\n} from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\nimport { addNewBlockAt, handlePastedText } from 'src-new/components/lms-elements/CustomEditor/utils';\n\nimport { customRenderMap } from './CustomEditor.constants';\nimport { ICustomEditorProps } from './CustomEditor.types';\nimport { getBlockRenderer } from './getBlockRenderer';\n\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'katex/dist/katex.min.css';\nimport './CustomEditor.scss';\n\nconst CnCustomEditor = cn('editor');\n\nexport const CustomEditor: React.FC = ({\n editorState,\n setEditorState,\n toolbarHidden = false,\n isError = false,\n insertWords = false,\n insertWordContainerRef,\n savePastedStyles = false,\n disableActionBlocks = false,\n needLimitHeight,\n ...props\n}) => {\n const [editorRect, setEditorRect] = useState(undefined);\n\n const decorators = useMemo(() => [latexDecorator, linkDecorator].concat(insertWords ? [insertWordDecorator] : []), [\n insertWords,\n ]);\n\n const ref = useRef(null);\n\n const handleRect = useCallback(() => {\n if (!ref.current) {\n return;\n }\n setEditorRect(ref.current.getBoundingClientRect());\n }, []);\n\n useEffect(() => {\n handleRect();\n\n document.addEventListener('resize', handleRect, { passive: true });\n document.addEventListener('scroll', handleRect, { passive: true });\n\n return () => {\n document.removeEventListener('resize', handleRect);\n document.removeEventListener('scroll', handleRect);\n };\n }, [handleRect]);\n\n useEffect(() => {\n handleRect();\n }, [handleRect, editorState]);\n\n const onTextPaste = useCallback(\n (text: string, html: string, editorState: EditorState, onChange: (state: EditorState) => void) =>\n handlePastedText(text, html, editorState, onChange, savePastedStyles),\n [savePastedStyles],\n );\n\n const handleEditorStateChange = useCallback(\n (newState: EditorState) => {\n setEditorState((state) => {\n const blockKey = state.getSelection().getAnchorKey();\n const currentBlockMap = state.getCurrentContent().getBlockMap();\n const currentBlock = currentBlockMap.get(blockKey);\n\n const newBlockKey = newState.getSelection().getAnchorKey();\n const newContent = newState.getCurrentContent();\n const newBlockMap = newContent.getBlockMap();\n const newBlock = newBlockMap.get(newBlockKey);\n\n const changedBlock = newBlockMap.get(blockKey);\n\n if (\n currentBlock !== newBlock &&\n Object.prototype.hasOwnProperty.call(ActionBlockTypes, currentBlock.getType()) &&\n currentBlock.getType() === newBlock.getType() &&\n newBlockMap.count() > currentBlockMap.count() &&\n changedBlock.getText().length === 0\n ) {\n const newMap = newBlockMap.update(blockKey, (block) => {\n return new ContentBlock({\n key: blockKey,\n type:\n currentBlock.getType() === ActionBlockTypes.CODE_BLOCK\n ? ActionBlockTypes.CODE_BLOCK\n : CommonBlocks.UNSTYLED,\n text: block.getText(),\n characterList: block.getCharacterList(),\n depth: block.getDepth(),\n data: block.getData(),\n });\n });\n\n const content = newContent.merge({\n blockMap: newMap,\n }) as ContentState;\n\n return EditorState.push(newState, content, 'split-block');\n }\n\n if (\n changedBlock &&\n changedBlock.getType() === ActionBlockTypes.CODE_BLOCK &&\n changedBlock.getText().includes('\\n')\n ) {\n const textParts = changedBlock.getText().split('\\n');\n\n let newBlockState = newState;\n textParts.slice(1).map((textLine) => {\n newBlockState = addNewBlockAt(\n newBlockState,\n newBlockState.getSelection().getAnchorKey(),\n ActionBlockTypes.CODE_BLOCK,\n Map({}),\n textLine,\n );\n });\n\n const newBlockStateMap = newBlockState.getCurrentContent().getBlockMap();\n const nreBlockContent = newBlockState.getCurrentContent();\n\n const newBlockMap = newBlockStateMap.update(blockKey, (block) => {\n return new ContentBlock({\n key: blockKey,\n type: block.getType(),\n text: textParts[0],\n depth: block.getDepth(),\n data: block.getData(),\n });\n });\n\n const content = nreBlockContent.merge({\n blockMap: newBlockMap,\n }) as ContentState;\n\n return EditorState.push(newBlockState, content, 'split-block');\n }\n\n return newState;\n });\n },\n [setEditorState],\n );\n\n const TabPress = useCallback(\n (event: KeyboardEvent) => {\n const selection = editorState.getSelection();\n const blockKey = editorState.getSelection().getAnchorKey();\n const newContent = editorState.getCurrentContent();\n const newBlockMap = newContent.getBlockMap();\n const changedBlock = newBlockMap.get(blockKey);\n\n if (event.key === 'Tab' && changedBlock.getType() === ActionBlockTypes.CODE_BLOCK) {\n setEditorState(() => {\n event.preventDefault();\n let content: ContentState;\n\n if (selection.getAnchorOffset() !== selection.getFocusOffset()) {\n content = Modifier.replaceText(\n newContent,\n selection,\n ' ',\n editorState.getCurrentInlineStyle(),\n undefined,\n );\n } else {\n content = Modifier.insertText(\n newContent,\n selection,\n ' ',\n editorState.getCurrentInlineStyle(),\n undefined,\n );\n }\n\n return EditorState.push(editorState, content, 'insert-characters');\n });\n }\n },\n [editorState, setEditorState],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', TabPress);\n return () => {\n document.removeEventListener('keydown', TabPress);\n };\n }, [TabPress]);\n\n return (\n
\n \n \n \n ,\n \n \n \n ,\n ...(insertWords\n ? []\n : [\n \n \n \n {!disableActionBlocks && (\n \n )}\n {!disableActionBlocks && (\n \n )}\n {!disableActionBlocks && (\n \n )}\n {!disableActionBlocks && (\n \n )}\n {!disableActionBlocks && (\n \n )}\n {!disableActionBlocks && (\n \n )}\n ,\n \n \n \n ,\n ]),\n insertWords ? (\n \n ) : (\n <>\n ),\n ]}\n />\n
\n );\n};\n","import { ContentBlock } from 'draft-js';\nimport { getActionBlockRenderer } from 'src-new/components/lms-elements/CustomEditor/components/ActionBlock';\nimport { ActionBlockComponentBlockProps } from 'src-new/components/lms-elements/CustomEditor/components/ActionBlock/ActionBlockComponent/ActionBlockComponent.types';\nimport {\n ActionBlockTypes,\n IBlockRendererObject,\n} from 'src-new/components/lms-elements/CustomEditor/types/shared.types';\n\nexport const getBlockRenderer = () => (\n block: ContentBlock,\n): IBlockRendererObject | undefined => {\n switch (block.getType()) {\n case ActionBlockTypes.INFO_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.INFO_BLOCK);\n case ActionBlockTypes.WARNING_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.WARNING_BLOCK);\n case ActionBlockTypes.THEOREM_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.THEOREM_BLOCK);\n case ActionBlockTypes.QUOTE_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.QUOTE_BLOCK);\n case ActionBlockTypes.DEFINITION_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.DEFINITION_BLOCK);\n case ActionBlockTypes.CODE_BLOCK:\n return getActionBlockRenderer(ActionBlockTypes.CODE_BLOCK);\n default:\n return undefined;\n }\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { Field, useField, useForm } from 'react-final-form';\nimport { EditorState } from 'draft-js';\nimport debounce from 'lodash.debounce';\nimport { CustomEditor } from 'src-new/components/lms-elements/CustomEditor';\n\nimport { IEditorFieldProps } from './EditorField.types';\n\nexport const EditorField: React.FC = ({\n name,\n placeholder,\n isBlocked,\n insertWords = false,\n disableActionBlocks = false,\n savePastedStyles,\n}) => {\n const { input } = useField(name);\n const { change } = useForm();\n const [editorState, setEditorState] = useState(input.value || EditorState.createEmpty());\n\n const [isError, setIsError] = useState(false);\n\n const ref = useRef(null);\n\n // !!! DONT TOUCH\n useEffect(() => {\n setEditorState(() => input.value || EditorState.createEmpty());\n }, [input.value, name]);\n\n const updateFormState = useMemo(\n () =>\n debounce(\n (\n editorState: EditorState,\n name: string,\n isBlocked: boolean,\n change: (name: string, value: EditorState) => void,\n ) => {\n if (!isBlocked) {\n change(name, editorState);\n }\n },\n 5,\n ),\n [],\n );\n\n useEffect(() => {\n updateFormState(editorState, name, isBlocked, change);\n }, [change, editorState, isBlocked, name, updateFormState]);\n\n useEffect(() => {\n setIsError(() => editorState.getCurrentContent().getPlainText().trim().length === 0);\n }, [editorState]);\n\n return (\n name={name}>\n {({ meta }) => (\n
\n \n
\n )}\n \n );\n};\n","import React from 'react';\nimport { Plus } from '@lms-elements/icons';\n\nimport './AddOptionButton.scss';\n\ninterface IAddOptionButtonProps {\n text: string;\n onClick: () => void;\n}\n\nconst AddOptionButton: React.FC = ({ text, onClick }) => {\n return (\n \n );\n};\n\nexport default AddOptionButton;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Field, useForm, useFormState } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { useTouched } from '@lms-elements/hooks';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\n\nimport { ITextInputFieldProps } from './TextInputField.types';\n\nconst TextInputFieldCn = cn('expanded-question-input');\n\nexport const TextInputField: React.FC = ({ name, placeholder }) => {\n const { values } = useFormState();\n const { change } = useForm();\n\n const [value, setValue] = useState(getObjectPropertyByString(values, name) || '');\n\n // !!! DONT TOUCH\n useEffect(() => {\n setValue(() => getObjectPropertyByString(values, name) || '');\n }, [name, values]);\n\n const [isError, setIsError] = useState(false);\n\n useEffect(() => {\n setIsError(() => value.trim().length === 0);\n }, [value]);\n\n const ref = useRef(null);\n const touched = useTouched(ref);\n\n return (\n (value ? undefined : 'error')}>\n {() => (\n setValue(e.target.value)}\n onBlur={() => change(name, value)}\n />\n )}\n \n );\n};\n","import { EditorState } from 'draft-js';\n\nexport interface IMultipleAnswerOption {\n answer: string | EditorState;\n isCorrect: boolean;\n}\n\nexport interface IMultipleAnswerFieldsProps {\n name: string;\n option: IMultipleAnswerOption;\n onOptionDelete: () => void;\n onOptionCopy: () => void;\n moveFieldsHandler: (dragIndex: number, hoverIndex: number) => void;\n index: number;\n checkboxesValidators?: ((value: boolean) => undefined | string)[];\n isBlocked: boolean;\n disableActionBlocks?: boolean;\n savePastedStyles?: boolean;\n}\n\nexport const itemTypes = {\n MULTIPLE_ANSWER_FIELDS: 'MULTIPLE_ANSWER_FIELDS',\n};\n\nexport interface IDragItem {\n index: number;\n name: string;\n type: string;\n}\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { DropTargetMonitor, useDrag, useDrop } from 'react-dnd';\nimport { useFormState } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { useDropdownDots, useRefForDrag } from '@lms-elements/hooks';\nimport { Basket, DropdownDots, NoteBlanks } from '@lms-elements/icons';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\nimport { XYCoord } from 'dnd-core';\nimport { CheckboxField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/CheckboxField';\nimport { EditorField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/EditorField';\nimport { TextInputField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/TextInputField';\n\nimport { IDragItem, IMultipleAnswerFieldsProps, IMultipleAnswerOption, itemTypes } from './MultipleAnswerFields.types';\n\nimport './MultipleAnswerFields.scss';\n\nconst MultipleCn = cn('multiple-question');\nconst BtnGroupCn = cn(MultipleCn(), 'btn-group');\n\nconst ARRAY_ELEM_CALL_REGEXP = /(\\[\\d\\]){1}$/g;\n\nconst MultipleAnswerFields: React.FC = ({\n name,\n option,\n onOptionCopy,\n onOptionDelete,\n moveFieldsHandler,\n index,\n checkboxesValidators = [],\n isBlocked,\n disableActionBlocks = false,\n savePastedStyles,\n}) => {\n const { canDrag, handleDropdownDotsMouseEnter, handleDropdownDotsMouseLeave } = useDropdownDots();\n\n const ref = useRef(null);\n const [{ handlerId }, drop] = useDrop(\n () => ({\n accept: itemTypes.MULTIPLE_ANSWER_FIELDS,\n collect: (monitor) => ({\n handlerId: monitor.getHandlerId(),\n }),\n hover: (item: IDragItem, monitor: DropTargetMonitor) => {\n if (!ref.current) {\n return;\n }\n const dragIndex = item.index;\n const hoverIndex = index;\n if (dragIndex === hoverIndex) {\n return;\n }\n const hoverBoundingRect = ref.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n const hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top;\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n moveFieldsHandler(dragIndex, hoverIndex);\n item.index = hoverIndex;\n },\n }),\n [index, moveFieldsHandler],\n );\n\n const [{ isDragging }, drag] = useDrag({\n type: itemTypes.MULTIPLE_ANSWER_FIELDS,\n item: () => ({ name, index }),\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag,\n });\n\n const { element, handleContainerBlur, handleContainerFocus } = useRefForDrag(ref.current);\n\n drag(drop(element));\n\n const { values } = useFormState();\n\n const options = getObjectPropertyByString(\n values,\n name.replace(ARRAY_ELEM_CALL_REGEXP, ''),\n );\n\n const [checkboxError, setCheckboxError] = useState(false);\n\n useEffect(() => {\n if (Array.isArray(options)) {\n setCheckboxError(!options?.some((q) => q.isCorrect));\n }\n }, [values, options]);\n\n const isEditor = useMemo(() => typeof getObjectPropertyByString(values, `${name}.answer`) === 'object', [\n name,\n values,\n ]);\n\n const placeholder = useMemo(() => (option.isCorrect ? 'Введите правильный ответ' : 'Введите неправильный ответ'), [\n option.isCorrect,\n ]);\n\n return (\n \n
\n (checkboxError ? 'error' : undefined)]}\n className={MultipleCn('checkbox-wrapper', { isEditor })}\n isError={checkboxError}\n />\n {isEditor ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n \n \n \n \n \n
\n
\n );\n};\n\nexport default MultipleAnswerFields;\n","import { EditorState } from 'draft-js';\n\nexport const truthfulnessArr = ['100 % от оценки', '75 % от оценки', '50 % от оценки', '25 % от оценки'] as const;\n\nexport interface IOpenAnswerOption {\n answer: string | EditorState;\n truthfulness: typeof truthfulnessArr[number];\n}\n\nexport interface IOpenAnswerFieldsProps {\n name: string;\n option: IOpenAnswerOption;\n onOptionDelete: () => void;\n isBlocked: boolean;\n disableActionBlocks?: boolean;\n savePastedStyles?: boolean;\n}\n","import React, { useMemo } from 'react';\nimport { useFormState } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { FieldDropdown } from '@lms-elements/atomic';\nimport { Basket } from '@lms-elements/icons';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\nimport { EditorField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/EditorField';\nimport { TextInputField } from 'src-new/components/lms-elements/TestTask/Question/Expanded/TextInputField';\n\nimport { IOpenAnswerFieldsProps, truthfulnessArr } from './OpenAnswerFields.types';\n\nimport './OpenAnswerFields.scss';\n\nconst OpenCn = cn('open-question');\n\nconst OpenAnswerFields: React.FC = ({\n name,\n option,\n onOptionDelete,\n isBlocked,\n disableActionBlocks,\n savePastedStyles,\n}) => {\n const { values } = useFormState();\n\n const isEditor = useMemo(() => typeof getObjectPropertyByString(values, `${name}.answer`) === 'object', [\n name,\n values,\n ]);\n\n const placeholder = useMemo(\n () => (option.truthfulness === '100 % от оценки' ? 'Введите правильный ответ' : 'Добавить вариант написания'),\n [option.truthfulness],\n );\n\n return (\n
\n
\n {isEditor ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n elem)}\n name={`${name}.truthfulness`}\n placeholder={'Правильность ответа'}\n validators={[(value: string) => (value ? undefined : 'error')]}\n />\n \n
\n
\n );\n};\n\nexport default OpenAnswerFields;\n","import React, { useEffect, useState } from 'react';\nimport { Field, useForm, useFormState } from 'react-final-form';\nimport { cn } from '@bem-react/classname';\nimport { TextareaField } from '@lms-elements/atomic';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\n\nimport { ITextareaFieldWrapperProps } from './TextareaFieldWrapper.types';\n\nimport './TextareaFieldWrapper.scss';\n\nconst TextareaFieldWrapperCn = cn('expanded-question-textarea');\n\nexport const TextareaFieldWrapper: React.FC = ({ name, placeholder }) => {\n const { values } = useFormState();\n const { change } = useForm();\n\n const [value, setValue] = useState(getObjectPropertyByString(values, name) || '');\n\n // !!! DONT TOUCH\n useEffect(() => {\n setValue(() => getObjectPropertyByString(values, name) || '');\n }, [name, values]);\n\n return (\n (value ? undefined : 'error')}>\n {() => (\n setValue(e.target.value)}\n onBlur={() => change(name, value)}\n isError={value.trim().length === 0}\n onClear={() => {\n setValue('');\n change(name, '');\n }}\n />\n )}\n \n );\n};\n","import { EditorState } from 'draft-js';\n\nimport { IDetailedAnswerOption } from './DetailedAnswerFields';\nimport { IAnswerOption, IQuestion, questionType } from './ExpandedQuestion.types';\nimport { IMultipleAnswerOption } from './MultipleAnswerFields';\nimport { IOpenAnswerOption } from './OpenAnswerFields';\n\nexport const chooseAddOptionButtonText = (type: questionType): string => {\n switch (type) {\n case 'multiple':\n return 'Добавить вариант ответа';\n case 'open':\n return 'Добавить вариант написания';\n case 'binary':\n return 'Добавить такой же вопрос';\n default:\n return '';\n }\n};\n\nexport const createNewAnswerOption = (type: questionType, isEditor = false): IAnswerOption => {\n switch (type) {\n case 'multiple':\n return { answer: isEditor ? EditorState.createEmpty() : '', isCorrect: false } as IMultipleAnswerOption;\n case 'open':\n return {\n answer: isEditor ? EditorState.createEmpty() : '',\n truthfulness: '100 % от оценки',\n } as IOpenAnswerOption;\n case 'detailed':\n return { isFileAvailable: true, isTextAvailable: true } as IDetailedAnswerOption;\n default:\n return { answer: isEditor ? EditorState.createEmpty() : '', isCorrect: false };\n }\n};\n\nexport const createDefaultQuestion = (type: questionType, isEditor = false): IQuestion => {\n switch (type) {\n case 'multiple':\n return {\n question: isEditor ? EditorState.createEmpty() : '',\n randomOrder: false,\n type: 'multiple',\n answerOptions: [\n {\n answer: isEditor ? EditorState.createEmpty() : '',\n isCorrect: true,\n } as IMultipleAnswerOption,\n {\n answer: isEditor ? EditorState.createEmpty() : '',\n isCorrect: false,\n } as IMultipleAnswerOption,\n ],\n };\n case 'open':\n return {\n question: isEditor ? EditorState.createEmpty() : '',\n type: 'open',\n answerOptions: [\n {\n answer: isEditor ? EditorState.createEmpty() : '',\n truthfulness: '100 % от оценки',\n } as IOpenAnswerOption,\n ],\n };\n case 'detailed':\n return {\n question: isEditor ? EditorState.createEmpty() : '',\n type: 'detailed',\n answerOptions: [\n {\n isFileAvailable: true,\n isTextAvailable: true,\n } as IDetailedAnswerOption,\n ],\n };\n case 'binary':\n return {\n question: isEditor ? EditorState.createEmpty() : '',\n type: 'binary',\n rightAnswer: 'Верно',\n };\n case 'insert-words':\n return {\n question: EditorState.createEmpty(),\n type: 'insert-words',\n };\n }\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { Field, FieldRenderProps, useFormState } from 'react-final-form';\nimport { useFieldArray } from 'react-final-form-arrays';\nimport { cn } from '@bem-react/classname';\nimport { RadioField, Toggle } from '@lms-elements/atomic';\nimport { Basket } from '@lms-elements/icons';\nimport { getObjectPropertyByString } from '@lms-elements/utils';\n\nimport { DetailedAnswerFields } from './DetailedAnswerFields';\nimport { EditorField } from './EditorField';\nimport { binaryAnswer, IAnswerOption, IExpandedQuestionProps } from './ExpandedQuestion.types';\nimport { AddOptionButton, IMultipleAnswerOption, MultipleAnswerFields } from './MultipleAnswerFields';\nimport { IOpenAnswerOption, OpenAnswerFields } from './OpenAnswerFields';\nimport { TextareaFieldWrapper } from './TextareaFieldWrapper';\nimport { chooseAddOptionButtonText, createNewAnswerOption } from './utils';\n\nimport './ExpandedQuestion.scss';\n\nconst QuestionCn = cn('expanded-question');\n\nconst ARRAY_ELEM_CALL_REGEXP = /(\\[\\d\\]){1}$/g;\n\nconst SQUARE_BRACKETS_REGEXP = /\\[|\\]/g;\n\nconst Question: React.FC = ({\n name,\n type,\n onDelete,\n detailedCheckboxesValidators = [],\n multipleCheckboxesValidators = [],\n isBlocked = false,\n disableActionBlocks = false,\n needHideSmartBoardToggle,\n savePastedStyles,\n}) => {\n const { values } = useFormState();\n\n const isEditor = useMemo(() => typeof getObjectPropertyByString(values, `${name}.question`) === 'object', [\n name,\n values,\n ]);\n\n const QuestionField = useMemo(\n () =>\n isEditor ? (\n
\n \n
\n ) : (\n \n ),\n [disableActionBlocks, isBlocked, isEditor, name, savePastedStyles, type],\n );\n\n const { fields: questionsFields } = useFieldArray(name.replace(ARRAY_ELEM_CALL_REGEXP, ''));\n\n const { fields: answerOptionsFields } = useFieldArray(`${name}.answerOptions`);\n\n const moveMultipleFieldsHandler = useCallback(\n (dragIndex: number, hoverIndex: number) => answerOptionsFields.swap(dragIndex, hoverIndex),\n [answerOptionsFields],\n );\n\n const index = useMemo(\n () => Number(name.match(ARRAY_ELEM_CALL_REGEXP)?.pop()?.replace(SQUARE_BRACKETS_REGEXP, '')),\n [name],\n );\n\n const handleDeleteCard = useCallback(() => {\n void questionsFields.remove(index);\n if (onDelete) {\n onDelete();\n }\n }, [index, onDelete, questionsFields]);\n\n return (\n
\n
\n {type === 'multiple' && (\n
\n \n {({ input }: FieldRenderProps) => (\n
\n input.onChange(e)}\n />\n Случайный порядок\n
\n )}\n
\n
\n )}\n {QuestionField}\n
\n\n
\n {answerOptionsFields.map((fieldName, index) => {\n switch (type) {\n case 'multiple':\n return (\n answerOptionsFields.push(answerOptionsFields.value[index])}\n onOptionDelete={() => answerOptionsFields.remove(index)}\n moveFieldsHandler={moveMultipleFieldsHandler}\n index={index}\n checkboxesValidators={multipleCheckboxesValidators}\n isBlocked={isBlocked}\n disableActionBlocks={disableActionBlocks}\n savePastedStyles={savePastedStyles}\n />\n );\n case 'open':\n return (\n answerOptionsFields.remove(index)}\n isBlocked={isBlocked}\n disableActionBlocks={disableActionBlocks}\n savePastedStyles={savePastedStyles}\n />\n );\n case 'detailed':\n return (\n \n );\n default:\n return <>;\n }\n })}\n {(() => {\n switch (type) {\n case 'binary':\n return (\n
\n \n \n
\n );\n case 'multiple':\n case 'open':\n return (\n answerOptionsFields.push(createNewAnswerOption(type, isEditor))}\n />\n );\n default:\n return <>;\n }\n })()}\n
\n \n
\n );\n};\n\nexport default Question;\n","import React, { useCallback } from 'react';\nimport { FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { questionType } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/ExpandedQuestion.types';\nimport { IQuestionForTeacher } from 'src-new/components/lms-elements/TestTask';\nimport { ExpandedQuestion } from 'src-new/components/lms-elements/TestTask/Question';\n\ninterface QuestionsListProps {\n props: FieldArrayRenderProps;\n questionType: questionType;\n onDelete: (props: FieldArrayRenderProps) => void;\n}\n\nexport const QuestionsList: React.FC = ({ props, questionType, onDelete }) => {\n const handleQuestionDelete = useCallback(() => {\n onDelete(props);\n }, [onDelete, props]);\n\n return (\n
\n {props.fields.map((name, index) => (\n \n ))}\n
\n );\n};\n","import React, { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { cn } from '@bem-react/classname';\nimport { createDefaultQuestion, IQuestionForTeacher } from '@lms-elements/test-task';\nimport { questionType } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/ExpandedQuestion.types';\nimport { IFormValuesCreateQuestions } from 'pages/QuestionCreationPage/QuestionCreationPage.types';\nimport { QuestionsList } from 'pages/QuestionCreationPage/QuestionsList';\n\nimport { getHeaderForForm } from 'utils/questions';\n\nconst cnQuestionCreationPage = cn('question_creation_page');\n\ninterface QuestionsProps {\n canDrop: boolean;\n setCanDrop: (value: React.SetStateAction) => void;\n questionType: questionType;\n onDelete: (props: FieldArrayRenderProps) => void;\n isTextEditor: boolean;\n flagDelete: boolean;\n}\n\nexport const Questions: React.FC = ({\n canDrop,\n setCanDrop,\n questionType,\n onDelete,\n isTextEditor,\n flagDelete,\n}) => {\n const formApi = useForm();\n\n const state = formApi.getState();\n\n useEffect(() => {\n const questions = [createDefaultQuestion(questionType, isTextEditor || flagDelete)].map((value) => value);\n\n if (!canDrop && !state.values.questions.length && isTextEditor !== null && questions[0]) {\n formApi.change(\n 'questions',\n [createDefaultQuestion(questionType, isTextEditor || flagDelete)].map((value) => value),\n );\n }\n }, [canDrop, flagDelete, formApi, isTextEditor, questionType, state?.values?.questions?.length]);\n\n const handleQuestionDelete = useCallback(\n (fieldsProps: FieldArrayRenderProps) => {\n if (fieldsProps.fields.length === 1) {\n setCanDrop(true);\n }\n\n formApi.change('questions', []);\n\n onDelete(fieldsProps);\n },\n [formApi, onDelete, setCanDrop],\n );\n\n return (\n
\n
\n
{getHeaderForForm(questionType)}
\n \n {(props: FieldArrayRenderProps) => (\n \n )}\n \n
\n
\n );\n};\n","import React, { FC } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { BigOgLogoSvg, ContentLoaderSvg } from '@fsd-shared/assets';\n\nimport { IContentLoaderProps } from './ContentLoader.types';\n\nimport './ContentLoader.styles.scss';\n\nconst CnContentLoader = cn('loaders-content-loader');\nexport const ContentLoader: FC = (props) => {\n const { height } = props;\n return (\n
\n
\n \n
\n
\n \n
\n
\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Skeleton } from 'antd';\n\nimport { IAppSkeleton } from './AppSkeletonCard.types';\n\nimport './AppSkeletonCard.styles.scss';\n\nconst CnAppSkeletonCard = cn('app-skeleton-card');\n\n/**\n * @description AppSkeletonCard\n * @param props\n */\nexport const AppSkeletonCard: React.FC = (props) => {\n const { width = '100%', height = 22, borderRadius, margin } = props;\n\n const styleItem = { height, width, margin };\n const skeletonButtonStyle = { borderRadius };\n\n return (\n
\n \n
\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { isEmpty } from '@frontend-modules/frontend-utils';\nimport { AppButton, AppText } from '@frontend-modules/ui-kit';\nimport {\n getTrainingCountAction,\n getTrainingSearchBlocksQuestionsAction,\n initTrainerData,\n} from '@fsd-entities/materials';\nimport { ContentLoader } from '@fsd-shared/ui';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { IMethodistTrainerCardProps } from './MethodistTrainerCard.types';\n\nimport './MethodistTrainerCard.styles.scss';\n\nconst CnMethodistTrainerCard = cn('methodist-trainer-card');\nexport const MethodistTrainerCard: FC = (props) => {\n const { lessonId, subjectId, courseGroupId } = props;\n const { info, isLoading } = useAppSelector((state) => state.newMaterials?.training?.trainingCountInfo) || {};\n const { isLoading: isSearchBlocksLoading } =\n useAppSelector((state) => state.newMaterials?.training?.trainingSearchBlocksData) || {};\n const { questionsCount, searchBlocksCount, id: trainerId } = info || {};\n const dispatch = useAppDispatch();\n const [isTrainingLoading, setIsTrainingLoading] = useState(false);\n const history = useHistory();\n const isQuestionsNotExist = isEmpty(info);\n const isButtonLoading = isTrainingLoading || isSearchBlocksLoading;\n\n const onEditTraining = async () => {\n try {\n if (lessonId) {\n setIsTrainingLoading(true);\n const action = isQuestionsNotExist ? 'create' : 'edit';\n const editOrCreateTrainerPath = `/subjects/${subjectId}/${lessonId}/task/search-questions/fill-trainer/${trainerId}/${action}${\n courseGroupId ? `?course_group=${courseGroupId}` : ''\n }`;\n if (trainerId) {\n await dispatch(getTrainingSearchBlocksQuestionsAction({ training: trainerId })).then(() => {\n history.push(editOrCreateTrainerPath);\n });\n } else {\n dispatch(initTrainerData());\n history.push(editOrCreateTrainerPath);\n }\n setIsTrainingLoading(false);\n }\n } catch (e) {\n setIsTrainingLoading(false);\n console.log(e);\n }\n };\n\n useEffect(() => {\n if (lessonId) {\n void dispatch(getTrainingCountAction({ lesson: lessonId }));\n }\n }, [lessonId]);\n\n if (isLoading) {\n return ;\n }\n\n return isQuestionsNotExist ? (\n \n ) : (\n
\n
\n \n \n
\n
\n \n \n
\n \n
\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { AppButton } from '@frontend-modules/ui-kit';\nimport { getTrainingProgressAction } from '@fsd-entities/materials';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { ICheckTrainingQuestionButtonProps } from './CheckTrainingQuestionButton.types';\nimport { checkInsertWordAnswerSend } from './CheckTrainingQuestionButton.utils';\n\nexport const CheckTrainingQuestionButton: FC = (props) => {\n const { lessonId, courseGroupId, questionId, answer } = props;\n const dispatch = useAppDispatch();\n const { isCheckQuestionLoading, question } =\n useAppSelector((store) => store.newMaterials?.training?.exercise) || {};\n const isCanSendInsertWordsAnswer = useMemo(() => checkInsertWordAnswerSend(answer, question), [answer, question]);\n const isDisableCheckButton = !answer || !!question?.answerData?.correctness || !isCanSendInsertWordsAnswer;\n\n const onCheckExerciseClick = () => {\n if (lessonId && courseGroupId && answer && questionId) {\n const params = {\n lesson: lessonId,\n courseGroup: courseGroupId,\n check: { data: answer, question: questionId },\n };\n void dispatch(getTrainingProgressAction(params));\n }\n };\n\n return (\n \n );\n};\n","import { IExercise, IInsertWordsQuestionAnswer, TTrainingQuestionAnswer } from '@fsd-shared/models/materials';\n\n/**\n * @description если тип вопроса insert_words проверяем что бы все поля были заполнены\n * @param answer\n * @param exercise\n */\nexport const checkInsertWordAnswerSend = (\n answer: TTrainingQuestionAnswer | undefined,\n exercise: IExercise | undefined,\n): boolean => {\n const { type, question } = exercise || {};\n if (type === 'insert_words' && Array.isArray(question)) {\n const { selectedOptions } = (answer as IInsertWordsQuestionAnswer | undefined) || {};\n // считаем сколько полей нужно было заполнить\n const expectedAnswerLength = question.filter((part) => typeof part === 'number').length;\n // считаем введенные ответы проверяя их на пустоту и обрезаем лишние пробелы\n const filteredAnswer = selectedOptions?.filter((item) => !!item?.selectedWord?.trim());\n const currentAnswerLength = filteredAnswer?.length;\n return expectedAnswerLength === currentAnswerLength;\n }\n return true;\n};\n","import React, { FC } from 'react';\nimport { AppButton } from '@frontend-modules/ui-kit';\nimport { getTrainingProgressAction } from '@fsd-entities/materials';\nimport { showErrorToast } from '@fsd-shared/utils';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { INextTrainingQuestionButtonProps } from './NextTrainingQuestionButton.types';\n\nexport const NextTrainingQuestionButton: FC = (props) => {\n const { lessonId, courseGroupId, setLocalAnswerValue } = props;\n const dispatch = useAppDispatch();\n const { isCheckQuestionLoading, question } =\n useAppSelector((store) => store.newMaterials?.training?.exercise) || {};\n\n const isDisableNextButton = isCheckQuestionLoading || !question?.answerData?.correctness;\n const onNextQuestionClick = () => {\n setLocalAnswerValue(undefined);\n if (lessonId && courseGroupId) {\n const params = {\n lesson: lessonId,\n courseGroup: courseGroupId,\n next: true,\n };\n void dispatch(getTrainingProgressAction(params)).then((resp) => {\n // @ts-ignore\n const errorData = resp?.error?.message;\n if (errorData) {\n const errorText = JSON.parse(errorData)?.extra?.fields;\n if (errorText) {\n showErrorToast(errorText);\n }\n }\n });\n }\n };\n\n return (\n \n );\n};\n","import { E_COLORS } from 'src-new/constants';\n\ntype TProgressStatus = 'correct' | 'incorrect' | 'unknown';\n\nconst E_STATISTIC_COLORS = {\n correct: E_COLORS.firm_blue_color,\n incorrect: E_COLORS.coral_color,\n unknown: E_COLORS.grey_2,\n};\n\nconst formatProgressStatus = (progress?: Array): Array => {\n return progress?.map((item) => (item ? 'correct' : 'incorrect')) ?? [];\n};\n\nconst getLastTenProgress = (progress?: Array): Array => {\n const array = Array(10).fill('unknown') as Array;\n return [...formatProgressStatus(progress), ...array].slice(0, 10).map((item) => E_STATISTIC_COLORS[item]);\n};\n\nexport { getLastTenProgress };\n","import React, { FC } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { IStudentTrainerStatisticProps } from './StudentTrainerStatistic.types';\nimport { getLastTenProgress } from './StudentTrainerStatistic.utils';\n\nimport './StudentTrainerStatistic.styles.scss';\nconst CnStudentTrainerStatistic = cn('student-trainer-statistic');\n\nexport const StudentTrainerStatistic: FC = (props) => {\n const { statistics } = props;\n const { completedCount, correctCount, incorrectCount, progress } = statistics || {};\n\n const lastTenProgressColors = getLastTenProgress(progress);\n\n return (\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n Последние 10 ответов\n
\n {lastTenProgressColors.map((item, index) => {\n return (\n \n );\n })}\n
\n
\n
\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport {\n checkAnswerData,\n EmptyTrainerCard,\n Exercise,\n getTrainingProgressAction,\n IExerciseLocalValue,\n resetExercise,\n} from '@fsd-entities/materials';\nimport { CheckTrainingQuestionButton } from '@fsd-features/materials/checkTrainingQuestion';\nimport { NextTrainingQuestionButton } from '@fsd-features/materials/getNextTrainingQuestion';\nimport { TQuestionType, TTrainingQuestionAnswer } from '@fsd-shared/models/materials';\nimport { AppSkeletonCard } from '@fsd-shared/ui';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { IStudentContentProps } from './StudentContent.types';\nimport { StudentTrainerStatistic } from './StudentTrainerStatistic';\n\nimport './StudentContent.styles.scss';\n\nconst CnStudentContent = cn('trainer-tab-student-content');\n\nexport const StudentContent: FC = (props) => {\n const { lessonId, courseGroupId } = props;\n const dispatch = useAppDispatch();\n const { question, isQuestionLoading, statistics } =\n useAppSelector((store) => store.newMaterials?.training?.exercise) || {};\n\n const [localAnswerValue, setLocalAnswerValue] = useState();\n const isShowSkeleton = isQuestionLoading === undefined || (isQuestionLoading && !question);\n const isEmptyData = isQuestionLoading === false && !question;\n\n const changeLocalAnswer = (type: TQuestionType, value: IExerciseLocalValue) => {\n setLocalAnswerValue(checkAnswerData(type, value));\n };\n\n useEffect(() => {\n if (lessonId && courseGroupId) {\n void dispatch(getTrainingProgressAction({ lesson: lessonId, courseGroup: courseGroupId }));\n }\n }, [lessonId && courseGroupId]);\n\n useEffect(() => {\n return () => void dispatch(resetExercise());\n }, []);\n\n if (isEmptyData) {\n return ;\n }\n\n if (isShowSkeleton) {\n return (\n
\n \n \n
\n );\n }\n\n return (\n
\n {!!question && (\n
\n \n
\n \n \n
\n
\n )}\n \n
\n );\n};\n","export interface IQuestionResponse {\n id: number;\n text: string;\n content?: string;\n html?: string;\n isActual: boolean;\n difficulty: EQuestionDifficulty;\n status: TQuestionStatusType;\n author: IQuestionAuthor;\n topics: { id: number }[];\n skills: {\n id: number;\n title: string;\n }[];\n multiply?: boolean | null;\n answersType: TQuestionType;\n timestamp: string;\n data: ITestQuestionResponse;\n revisions?: {\n id: number;\n comment: string;\n dateCreate: string;\n }[];\n}\n\nexport interface ITestQuestionResponseOption {\n content: string;\n html: string;\n text: string;\n uuid?: string;\n}\n\nexport type ITestQuestionResponse = {\n randomAnswerOrder: boolean;\n answerOptions: Array;\n};\n\nexport interface IQuestionAuthor {\n id?: number;\n firstName: string;\n lastName: string;\n patronymic: string | null;\n online?: boolean;\n lastSeen?: string;\n mainRole: string;\n}\n\nexport enum EQuestionDifficulty {\n easy = 'easy',\n medium = 'medium',\n hard = 'hard',\n}\n\nexport type TQuestionStatusType = 'published' | 'not_published' | 'on_revision';\n\nexport enum EQuestionStatus {\n published = 'Утверждено',\n on_revision = 'На доработке',\n not_published = 'Не утверждено',\n}\n\nexport type TQuestionType = 'test' | 'text' | 'true_false' | 'insert_words';\n\n// данные для проверки правильности ответа\nexport interface ITrueFalseQuestionAnswer {\n answer: boolean;\n}\nexport interface ITestQuestionAnswer {\n selectedOptions: Array;\n}\nexport interface ITextQuestionAnswer {\n selectedOption: string;\n}\nexport interface IInsertWordsQuestionAnswer {\n selectedOptions: Array<{ gapIndex: number; selectedWord: string }>;\n}\n\n// проверенный ответ\n\nexport interface ITrueFalseCheckedAnswer {\n data: { answer: boolean };\n isCorrect: boolean;\n}\nexport interface ITestCheckedAnswer {\n data: { selectedOptions: Array<{ uuid: string; isCorrect: boolean }> };\n incomplete: boolean;\n isCorrect: boolean;\n}\nexport interface ITextCheckedAnswer {\n data: { selectedOption: string };\n isCorrect: boolean;\n}\nexport interface IInsertWordsCheckedAnswer {\n data: { selectedOptions: Array<{ selectedWord: string; isCorrect: boolean; gapIndex: number }> };\n incomplete: boolean;\n isCorrect: boolean;\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppFontIcon, AppModal, AppText } from '@frontend-modules/ui-kit';\nimport { getInsertWordsPreviewHtml, getQuestionData } from '@fsd-entities/materials';\nimport { EQuestionStatus, ITrainingQuestionDataResponse } from '@fsd-shared/models/materials';\nimport { AppSkeletonCard } from '@fsd-shared/ui';\nimport { getUserName } from '@fsd-shared/utils';\nimport { Skeleton } from 'antd';\nimport { E_COLORS } from 'src-new/constants';\n\nimport { IExerciseInfoModalProps } from './ExerciseInfoModal.types';\nimport { getQuestionMeta } from './ExerciseInfoModal.utils';\n\nimport './ExerciseInfoModal.styles.scss';\nconst LOADER_LIST = ['25%', '35%', '22%', '40%'];\n\nconst CnExerciseInfoModal = cn('exercise-info-modal');\n\nexport const ExerciseInfoModal: FC = (props) => {\n const { questionId, ...rest } = props;\n const [questionData, setQuestionData] = useState();\n const [metaInfoList, setMetaInfoList] = useState | undefined>();\n const { author, text, answersType, content, html, status } = questionData || {};\n const { firstName, lastName, patronymic, avatar } = author || {};\n const fullName = getUserName({ name: firstName, surname: lastName, patronymic }, 'NN:_:PP:_:SS');\n const isShowLoader = !questionData;\n const isShowStatus = status && status === 'published';\n const questionTitle =\n answersType === 'insert_words' ? getInsertWordsPreviewHtml(content, html, text) : html || text;\n\n useEffect(() => {\n if (questionId) {\n void getQuestionData(questionId).then((res) => {\n setQuestionData(res);\n setMetaInfoList(getQuestionMeta(res));\n });\n }\n }, [questionId]);\n\n const metaInfoItems = isShowLoader ? LOADER_LIST : metaInfoList;\n\n return (\n \n
\n
\n {metaInfoItems?.map((item) =>\n isShowLoader ? (\n \n ) : (\n
\n \n
\n ),\n )}\n
\n {isShowLoader ? (\n \n ) : isShowStatus && status ? (\n
\n \n \n
\n ) : null}\n {isShowLoader ? (\n \n ) : (\n \n )}\n
\n \n
\n {isShowLoader ? (\n <>\n \n \n \n ) : (\n <>\n {'avatar'}\n \n \n )}\n
\n
\n
\n
\n );\n};\n","import { ITrainingQuestionDataResponse } from '@fsd-shared/models/materials';\nimport { E_ANSWERS_TYPE, E_QUESTION_TYPE_INFO, E_QUESTIONS_DIFFICULTY } from 'src-new/constants';\nimport { getAnswersCountText, getCorrectAnswersCountText } from 'src-new/utils';\n\nexport const getQuestionMeta = (question?: ITrainingQuestionDataResponse): Array => {\n const { difficulty, answersType, data } = question || {};\n const difficultyText = difficulty ? E_QUESTIONS_DIFFICULTY[difficulty] : undefined;\n const answersTypeText = answersType ? E_QUESTION_TYPE_INFO[answersType] : undefined;\n const totalAnswersCount =\n answersType === 'test' ? data?.answerOptions.length : answersType === E_ANSWERS_TYPE.true_false ? 2 : undefined;\n const correctAnswersCount = answersType === 'test' || answersType === 'true_false' ? 1 : undefined;\n const totalAnswersCountText = totalAnswersCount ? getAnswersCountText(totalAnswersCount) : undefined;\n const correctAnswersCountText = correctAnswersCount ? getCorrectAnswersCountText(correctAnswersCount) : undefined;\n return [difficultyText, answersTypeText, totalAnswersCountText, correctAnswersCountText].filter(\n Boolean,\n ) as Array;\n};\n","import React, { FC } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { getInsertWordsPreviewHtml } from '@fsd-entities/materials';\n\nimport { ITeacherTrainingItemProps } from './TeacherTrainingItem.types';\n\nimport './TeacherTrainingItem.styles.scss';\nconst CnTeacherTrainingItem = cn('teacher-training-item');\n\nexport const TeacherTrainingItem: FC = (props) => {\n const { text, html, content, answersType, onClick } = props;\n const questionTitle =\n answersType === 'insert_words' ? getInsertWordsPreviewHtml(content, html, text) : html || text;\n return (\n
\n \n
\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { isEmptyList } from '@frontend-modules/frontend-utils';\nimport { AppFontIcon, AppText } from '@frontend-modules/ui-kit';\nimport { EmptyTrainerCard, getTrainingQuestionsAction } from '@fsd-entities/materials';\nimport { ITrainingQuestionInfo } from '@fsd-shared/models/materials';\nimport { AppSkeletonCard } from '@fsd-shared/ui';\nimport { ExerciseInfoModal } from '@fsd-widgets/materials/TeacherTrainingList/ExerciseInfoModal';\nimport { E_COLORS } from 'src-new/constants';\nimport { ScrollPaginateContainer } from 'src-new/ui';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { TeacherTrainingItem } from './TeacherTrainingItem';\nimport { ITeacherTrainingListProps } from './TeacherTrainingList.types';\n\nimport './TeacherTrainingList.styles.scss';\n\nconst CnTeacherTrainingList = cn('teacher-training-list');\n\nexport const TeacherTrainingList: FC = (props) => {\n const { lessonId, courseGroupId } = props;\n const dispatch = useAppDispatch();\n const { list, pagination, isLoadingMore, isLoading } =\n useAppSelector((store) => store.newMaterials?.training?.questionList) || {};\n const { currentPage, maxPage } = pagination || {};\n const [isShowModal, setIsShowModal] = useState(false);\n const [selectedQuestionId, setSelectedQuestionId] = useState();\n\n const isShowSkeleton = isLoading && isEmptyList(list);\n const isEmptyData = isLoading === false && isEmptyList(list);\n const itemsList = isShowSkeleton ? Array(7).fill({}) : list;\n\n const onExerciseClick = (item: ITrainingQuestionInfo) => {\n setSelectedQuestionId(item.id);\n setIsShowModal(true);\n };\n\n const loadQuestionList = (page: number, isMore?: boolean) => {\n if (lessonId && courseGroupId) {\n const params = {\n filters: {\n lesson: lessonId,\n courseGroup: courseGroupId,\n },\n currentPage: page,\n limit: 50,\n isLoadingMore: isMore,\n };\n void dispatch(getTrainingQuestionsAction(params));\n }\n };\n\n const onLoadMore = () => {\n if (currentPage && maxPage && currentPage < maxPage && !isLoadingMore) {\n loadQuestionList(currentPage + 1, true);\n }\n };\n\n useEffect(() => {\n loadQuestionList(1);\n }, [lessonId, courseGroupId]);\n\n if (isEmptyData) {\n return ;\n }\n\n return (\n <>\n
\n {!isShowSkeleton && (\n
\n \n
\n \n \n
\n
\n )}\n
\n \n {itemsList?.map((item, index) =>\n isShowSkeleton ? (\n \n ) : (\n onExerciseClick(item)} />\n ),\n )}\n {isLoadingMore ? (\n
\n \n
\n ) : null}\n \n
\n
\n {isShowModal && (\n \n )}\n \n );\n};\n","import React, { FC } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { EmptyTrainerCard } from '@fsd-entities/materials';\nimport { ContentLoader } from '@fsd-shared/ui';\nimport { MethodistTrainerCard, StudentContent, TeacherTrainingList } from '@fsd-widgets/materials';\nimport { useAppSelector } from 'store/store';\n\nimport { ITrainerTabProps } from './TrainerTab.types';\n\nimport './TrainerTab.styles.scss';\n\nconst CnTrainerTab = cn('trainer-tab');\n\nexport const TrainerTab: FC = (props) => {\n const { lessonId, courseGroupId, subjectId, subjectPageType } = props;\n const { roles } = useAppSelector((state) => state.newMaterials?.meta) || {};\n const { isStudent, isTeacher, isMethodist } = roles || {};\n const isShowLoading = roles === undefined;\n const isOld = subjectPageType === 'old';\n\n if (isShowLoading) {\n return (\n
\n \n
\n );\n }\n\n return isOld ? (\n
\n {isMethodist ? (\n \n ) : (\n \n )}\n
\n ) : (\n
\n {isStudent && }\n {isTeacher && }\n
\n );\n};\n","import { APP_ON_BOARDING } from './app';\nimport { HOME_ON_BOARDING } from './home';\nimport { HOMEWORKS_ON_BOARDING } from './homeworks';\nimport { LIBRARY_ON_BOARDING } from './library';\nimport { NEWS_ON_BOARDING } from './news';\nimport { PERFORMANCE_ON_BOARDING } from './performance';\nimport { SCHEDULE_ON_BOARDING } from './schedule';\nimport { SUBJECTS_ON_BOARDING } from './subjects';\n\nexport const ONBOARDING_STEPS = [\n ...APP_ON_BOARDING,\n ...HOME_ON_BOARDING,\n ...NEWS_ON_BOARDING,\n ...LIBRARY_ON_BOARDING,\n ...PERFORMANCE_ON_BOARDING,\n ...SUBJECTS_ON_BOARDING,\n ...SCHEDULE_ON_BOARDING,\n ...HOMEWORKS_ON_BOARDING,\n];\n","/**\n *\n * @param ctx\n */\nexport const APP_ON_BOARDING = [\n {\n target: '[data-onboarding=\"privateLayout\"]',\n title: 'Мы рады приветствовать вас в \\n Онлайн Гимназии №1!',\n placement: 'center',\n key: 'app_1',\n isStartStep: true,\n },\n {\n target: '[data-onboarding=\"onboardingButton\"]', //Кнопка онбординга\n key: 'app_2',\n },\n {\n target: '[data-onboarding=\"burgerMenu\"]:not(.header-burger-menu_opened)',\n key: 'app_3',\n showNextAfterClick: true,\n },\n {\n target: '.chat-widget-icon', // Кнопка чата\n key: 'app_4',\n placement: 'top',\n },\n {\n target: '[data-onboarding=\"pagesList\"]', //навигация\n key: 'app_5',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/\"]', // обзор\n key: 'app_6',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/news\"]', //новости\n key: 'app_7',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/new-subjects\"]', //предметы\n key: 'app_8',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/schedule\"]', //Раcписание\n key: 'app_9',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/homework\"]', //Домашки\n key: 'app_10',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/performance\"]', //Успеваемость\n key: 'app_11',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"/library\"]', //Библиотека\n key: 'app_12',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n {\n target: '[data-onboarding=\"notificationButton\"]', //Уведомления\n key: 'app_13',\n parentForVisibilityChecking: '.header-mobile-menu',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const HOME_ON_BOARDING = [\n {\n target: '[data-onboarding=\"privateLayout\"]',\n placement: 'center',\n key: 'home_1',\n },\n {\n target: '[data-onboarding=\"scheduleBlock\"]', //Блок с расписанием (слева)\n key: 'home_2',\n },\n {\n target: '[data-onboarding=\"lessonsCount\"]', //Счетчик прошедших уроков\n key: 'home_3',\n },\n {\n //class=\"schedule-item-statusLabel schedule-item-statusLabel_status_future\"\n target: '.schedule-item-statusLabel_status_future', //'[data-onboarding=\"lessonsStartTime\"]', //Время начала урока\n key: 'home_4',\n },\n {\n target: '.schedule-item-list-link button.button.button_view_action', //'[data-onboarding=\"lessonEntryButton\"]', // Кнопка входа на урок\n key: 'home_5',\n },\n {\n target: '.schedule-item-list-link:nth-child(1) .schedule-item.schedule-item_status_future button', // Время до начала урока\n key: 'home_6',\n },\n {\n target: '[data-onboarding=\"scheduleCalendar\"]', // Календарь в расписании\n key: 'home_7',\n },\n {\n target: '[data-onboarding=\"homeworkBlock\"]', //Блок с домашками (справа)\n key: 'home_8',\n },\n {\n target: '[data-onboarding=\"homeworkFilter\"]', //Фильтр (скрыть рекомендуемые)\n key: 'home_9',\n },\n {\n target: '[data-onboarding=\"timeBeforeTasksPass\"]', //Время до сдачи домашки\n key: 'home_10',\n },\n {\n target: '[data-onboarding=\"overdueTask\"]', // Карточка просроченного дз\n key: 'home_11',\n },\n {\n target: '[data-onboarding=\"archive\"]', //архив\n key: 'home_12',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const NEWS_ON_BOARDING = [\n {\n target: '[data-onboarding=\"privateLayout\"]',\n placement: 'center',\n key: 'news_1',\n },\n {\n target: '[data-onboarding=\"newsCard\"]', //карточка с новостью\n key: 'news_2',\n },\n {\n target: '.news-page .dateSlider', //'[data-onboarding=\"newsDateFilter\"]', //Выбор даты\n key: 'news_3',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const LIBRARY_ON_BOARDING = [\n {\n target: '[data-onboarding=\"libraryContainer\"]',\n key: 'library_1',\n },\n {\n target: '[data-onboarding=\"subjectSelector\"]', // выбор предмета\n key: 'library_2',\n },\n {\n target: '.app-collapse-item-active [data-onboarding=\"booksCategoriesFilter\"]', // фильтр по категориям\n key: 'library_3',\n },\n {\n target: '[data-onboarding=\"booksSearchingInput\"]', // поиск\n key: 'library_4',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const PERFORMANCE_ON_BOARDING = [\n {\n target: '[data-onboarding=\"performanceContainer\"]', //вся таблица\n key: 'performance_1',\n },\n {\n target: '[data-onboarding=\"performanceTable\"] .tabs-header', // табы с учебными периодами\n key: 'performance_2',\n },\n {\n target: '[data-onboarding=\"performanceDatePicker\"]', // выбор дат\n key: 'performance_4',\n },\n {\n target: '.performance-table-container .mark_hoverable', // кружок с оценкой\n key: 'performance_5',\n },\n {\n target: '[data-onboarding=\"markComment\"]', // комментарий/оценка с комментом\n key: 'performance_6',\n },\n {\n target: '[data-onboarding=\"marksOverflowContainer\"]', // более трех оценок за урок (со стрелочкой для разворота)\n key: 'performance_7',\n },\n {\n target: '.pt-table-quarter-marks .mark_notApproved', // предварительная оценка за период (в пунктире)\n key: 'performance_8',\n },\n {\n target: '.pt-table-quarter-marks .mark_accept', // итоговая оценка за период (в пунктире)\n key: 'performance_9',\n },\n {\n target: '[data-onboarding=\"weightedPeriodMark\"]', // средневзвешенная оценка за период (в пунктире)\n key: 'performance_10',\n },\n {\n target: '[data-onboarding=\"absentLabel\"]', // н-ка\n key: 'performance_11',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const SUBJECTS_ON_BOARDING = [\n {\n target: '[data-onboarding=\"subjectsContainer\"]',\n key: 'subjects_1',\n },\n {\n target: '[data-onboarding=\"teacherButton\"]', //кнопка учитель\n key: 'subjects_2',\n },\n {\n target:\n '[data-onboarding=\"NewSubjectsCard\"]:first-child .subject-course-card [data-onboarding=\"progressesBars\"]', //прогрессы у предмета/темы/урока\n key: 'subjects_3',\n multiple: true,\n placement: 'bottom',\n },\n {\n target: '[data-onboarding=\"lessonTypeLabel\"]', // тэг типа урока\n key: 'subjects_4',\n },\n {\n target: '[data-onboarding=\"lessonsColFilters\"]', //фильтры уроков (Контрольная, Онлайн, Самоподготовка)\n key: 'subjects_5',\n multiple: true,\n placement: 'bottom',\n },\n {\n target: '[data-onboarding=\"needAttentionFilter\"]', // фильтр \"Требующие внимания\"\n key: 'subjects_6',\n },\n {\n target: '[data-onboarding=\"pastLessonToggle\"]', //свитчер \"прошедшие уроки\"\n key: 'subjects_7',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const SCHEDULE_ON_BOARDING = [\n {\n target: '[data-onboarding=\"privateLayout\"]',\n placement: 'center',\n key: 'schedule_1',\n },\n {\n target: '[data-onboarding=\"schedulePeriodsTab\"]', // день/месяц/год\n key: 'schedule_2',\n },\n {\n target: '[data-onboarding=\"scheduleDateSwitcher\"]', // переключатель даты\n key: 'schedule_3',\n },\n {\n target: '[data-onboarding=\"selectedDaySummary\"]', // информация с количеством уроков и заданий\n key: 'schedule_4',\n },\n {\n target: '[data-onboarding=\"lessonCard\"] .lesson-date-card', // первый урок в расписании\n key: 'schedule_5',\n },\n {\n target: '[data-onboarding=\"timeToLessonStarts\"]', // время до начала урока\n key: 'schedule_6',\n },\n {\n target: '[data-onboarding=\"enterLessonButton\"]', // кнопка входа на урок\n key: 'schedule_7',\n },\n {\n target: '[data-onboarding=\"lessonHomework\"]', // карточка с домашкой\n key: 'schedule_8',\n },\n {\n target: '[data-onboarding=\"homeworksToPass\"]', // блок с заданными домашками\n key: 'schedule_9',\n },\n {\n target: '[data-onboarding=\"weekScheduleHeader\"]', // дни недели в расписании на неделю\n key: 'schedule_10',\n },\n {\n target: '[data-onboarding=\"weekScheduleLessonTime\"]', // урок и его время в расписании на неделю\n key: 'schedule_11',\n },\n {\n target: '[data-onboarding=\"monthScheduleTable\"]', // таблица с месячным расписанием\n key: 'schedule_12',\n },\n];\n","/**\n *\n * @param ctx\n */\nexport const HOMEWORKS_ON_BOARDING = [\n {\n target: '[data-onboarding=\"privateLayout\"]',\n placement: 'center',\n key: 'homework_1',\n },\n {\n target: '[data-onboarding=\"homeworkTabs\"] .tabs-header', // табы\n key: 'homework_2',\n },\n {\n target: '[data-onboarding=\"courseSelector\"]', //Выбор курса\n key: 'homework_3',\n },\n {\n target: '[data-onboarding=\"timeToPassTask\"]', // Время до сдачи\n key: 'homework_4',\n },\n {\n target: '[data-onboarding=\"overdueTask\"]', // просроченное задание\n key: 'homework_5',\n },\n {\n target: '[data-onboarding=\"overdueLessonWithTask\"]', // просроченный урок, на котором выдали задание\n key: 'homework_6',\n },\n {\n target: '[data-onboarding=\"hiddenOverdueTasksOption\"]', // чекбокс скрытия рекомендованных заданий\n key: 'homework_7',\n },\n];\n","/**\n * @description - получаем ключ онбординга в зависимости от страницы\n * @param router\n */\nexport const getOnboardingKey = (router: string): string => {\n switch (router) {\n case '/': {\n return 'home';\n }\n case '/news':\n case '/news/': {\n return 'news';\n }\n case '/new-subjects':\n case '/new-subjects/': {\n return 'subjects';\n }\n case '/schedule':\n case '/schedule/': {\n return 'schedule';\n }\n case '/performance':\n case '/performance/': {\n return 'performance';\n }\n case '/library':\n case '/library/': {\n return 'library';\n }\n case '/homework':\n case '/homework/': {\n return 'homework';\n }\n default:\n return '';\n }\n};\n/**\n * @description - получаем задержку на запрос шагов в зависимости от страницы\n * (нужно для медленных страниц)\n * @param router\n */\nexport const getOnboardingDelay = (router: string): number => {\n switch (router) {\n case '/performance': {\n return 1000;\n }\n default:\n return 0;\n }\n};\n","import React, { createContext, useContext, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { TTourType } from '@frontend-modules/og-onboarding';\nimport { useRole } from 'hooks';\nimport { useAppSelector } from 'store/store';\n\nimport { TUseOnboarding, useOnboarding } from './useOnboarding';\n\nconst OnboardingContext = createContext({\n hasViewedSteps: false,\n newStepsCount: 0,\n hasActiveStep: false,\n isFetching: false,\n startAutoTour: (key: string, isMobile: boolean) => {},\n getPageSteps: (isMobile: boolean) => {},\n startPageTour: (type?: TTourType) => {},\n stopActiveTour: () => {},\n});\n\nexport const OnboardingProvider: React.FC<{ isReAuth: boolean; isMobile: boolean }> = (props) => {\n const { isReAuth, isMobile, children } = props;\n\n const onboarding = useOnboarding();\n const history = useHistory();\n const { startAutoTour, stopActiveTour, hasActiveStep } = onboarding;\n\n const { isStudent } = useRole();\n const { isMobileMenuOpened } = useAppSelector((store) => ({\n isMobileMenuOpened: store.newNavigation.isMobileMenuOpened,\n }));\n const canStartAutoOnboarding = isStudent && !hasActiveStep;\n const path = history?.location?.pathname ?? '/';\n\n useEffect(() => {\n if (isReAuth) {\n stopActiveTour();\n }\n }, [isReAuth]);\n\n useEffect(() => {\n if (canStartAutoOnboarding) {\n //Запускаем автотур при первом рендере, если нет других отображаемых шагов\n startAutoTour('app', isMobile);\n }\n }, [isStudent, isMobile]);\n\n useEffect(() => {\n if (isMobileMenuOpened && canStartAutoOnboarding) {\n startAutoTour('app', isMobileMenuOpened);\n }\n }, [isMobileMenuOpened]);\n\n useEffect(() => {\n // таймаут нужен, так возможно уже был запрошен онбординг для предыдущей страницы,\n // нужно подождать, пока он посчитается, потом останавливать\n setTimeout(() => {\n stopActiveTour();\n }, 500);\n }, [path]);\n\n return {children};\n};\n\nexport const useOnboardingContext = (): TUseOnboarding => {\n const context = useContext(OnboardingContext);\n\n if (!context) {\n throw new Error('useOnboardingContext must be used within an OnboardingProvider');\n }\n\n return context;\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport $Onboarding, { TTourType } from '@frontend-modules/og-onboarding';\nimport { ONBOARDING_STEPS } from '@fsd-features/onboarding/config';\nimport { getOnboardingDelay, getOnboardingKey } from '@fsd-features/onboarding/utils';\n\nexport type TUseOnboarding = {\n hasViewedSteps: boolean;\n newStepsCount: number;\n hasActiveStep: boolean;\n isFetching: boolean;\n startAutoTour: (key: string, isMobile: boolean) => void;\n getPageSteps: (isMobile: boolean) => void;\n startPageTour: (type?: TTourType) => void;\n stopActiveTour: () => void;\n};\nexport const useOnboarding = (): TUseOnboarding => {\n const history = useHistory();\n const EXOnboarding = useRef<$Onboarding>();\n const SEARCH_TIMEOUT = 1000;\n // состояние для нового количества шагов\n const [newStepsCount, setNewStepsCount] = useState(0);\n const [hasViewedSteps, setHasViewedSteps] = useState(false);\n const [isFetching, setIsFetching] = useState(false);\n\n const [activeStep, setActiveStep] = useState(undefined);\n\n // const delay = useMemo(() => getOnboardingDelay(history.location.pathname), [history]);\n // автоматический онбординг\n const startAutoTour = useCallback(\n (key: string, isMobile: boolean) => {\n if (EXOnboarding.current) {\n EXOnboarding.current?.startAutoTour({ page: key, isMobile, searchTimeout: SEARCH_TIMEOUT });\n }\n },\n [EXOnboarding.current],\n );\n // конфигурация шагов для онбординга страницы\n const getPageSteps = (isMobile: boolean) => {\n const pageKey = getOnboardingKey(history?.location?.pathname);\n const data = { page: pageKey, isMobile, searchTimeout: SEARCH_TIMEOUT };\n if (pageKey) {\n void EXOnboarding.current?.getStepsOnPage(data);\n } else {\n setNewStepsCount(0);\n setHasViewedSteps(false);\n }\n };\n\n // старт онбординга страницы\n const startPageTour = (type?: TTourType) => {\n const pageKey = getOnboardingKey(history?.location?.pathname);\n\n if (pageKey) {\n void EXOnboarding.current?.startTour(pageKey, type);\n }\n };\n // остановка текущего онбординга\n const stopActiveTour = () => {\n setTimeout(() => {\n void EXOnboarding.current?.stopActiveTour();\n }, 500);\n };\n\n //создаем экземпляры классов\n useEffect(() => {\n EXOnboarding.current = new $Onboarding({\n initialStepsList: ONBOARDING_STEPS,\n project: 'lms',\n });\n\n return () => {\n EXOnboarding.current?.removeListeners();\n };\n }, []);\n\n // Подписываемся на изменения кол-ва непросмотренных шагов\n useEffect(() => {\n if (EXOnboarding.current) {\n //подписываемся на обновления уведомлений\n EXOnboarding.current.eventEmitter.on('stepsCountUpdated', setNewStepsCount);\n //подписываемся на обновления активного шага\n EXOnboarding.current.eventEmitter.on('activeStepUpdated', setActiveStep);\n //обновления состояния фетча (пока грузится апи)\n EXOnboarding.current.eventEmitter.on('isOnboardingFetching', setIsFetching);\n //подписываемся на обновления статуса просмотренности тура\n EXOnboarding.current.eventEmitter.on('tourViewedStatusUpdated', setHasViewedSteps);\n\n // Очистка подписки\n return () => {\n EXOnboarding.current?.eventEmitter.off('stepsCountUpdated', setNewStepsCount);\n };\n }\n }, [EXOnboarding.current]);\n\n return {\n hasViewedSteps,\n newStepsCount,\n startAutoTour,\n isFetching,\n stopActiveTour,\n getPageSteps,\n startPageTour,\n hasActiveStep: !!activeStep,\n };\n};\n","import React, { useContext } from 'react';\nimport { SelectedElement } from 'containers/CodifierSelector/utils';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\ninterface Context {\n onElementClick: (type: CodifierEventType, id: number) => void;\n selectedElement: SelectedElement;\n withCheckboxes?: boolean;\n}\n\nexport const CodifierContext = React.createContext({} as Context);\n\nexport function useCodifierContext(): Context {\n return useContext(CodifierContext);\n}\n","import { questionsBankPageData } from 'constants/cypress/question-bank-page';\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox } from '@lms-elements/atomic';\nimport { useCodifierContext } from 'containers/CodifierSelector/context';\nimport i18next from 'i18next';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport './TopicElement.scss';\n\nconst cx = cn('topic-element');\n\ninterface TopicElementProps {\n topicId: number;\n topicIndex?: number;\n}\n\nexport const TopicElement: React.FC = React.memo(({ topicId, topicIndex }) => {\n const topicData = useAppSelector((store) => store.codifier.topicsMap[topicId]);\n\n const {\n onElementClick,\n selectedElement: { topics },\n withCheckboxes,\n } = useCodifierContext();\n\n const [isSelected, setIsSelected] = useState(\n withCheckboxes ? Boolean(topics?.includes(topicId)) : Boolean(topics?.length) && topics?.[0] === topicId,\n );\n\n useEffect(() => {\n setIsSelected(\n withCheckboxes ? Boolean(topics?.includes(topicId)) : Boolean(topics?.length) && topics?.[0] === topicId,\n );\n }, [topics?.length, withCheckboxes, topics, topicId]);\n\n const handleSubjectClick = useCallback(\n (e: React.MouseEvent | React.ChangeEvent) => {\n e.stopPropagation();\n if ((!isSelected || withCheckboxes) && onElementClick) {\n onElementClick(CodifierEventType.TOPIC, topicId);\n }\n },\n [isSelected, onElementClick, topicId, withCheckboxes],\n );\n\n const questionsInfo = useMemo(\n () =>\n topicData.questionsQuantity\n ? `${i18next.t('questions', {\n count: topicData.questionsQuantity,\n })}`\n : 'нет вопросов',\n [topicData.questionsQuantity],\n );\n\n const revisionQuestions = `${topicData.questionsQuantityRevision} на доработке`;\n\n const unpublishedQuestions = i18next.t('unpublished', { count: topicData.questionsQuantityUnpublished });\n\n const questionUnpublished = useMemo(() => {\n if (topicData.questionsQuantityUnpublished && topicData.questionsQuantityRevision) {\n return `(${unpublishedQuestions}, ${revisionQuestions})`;\n }\n if (topicData.questionsQuantityUnpublished) {\n return `(${unpublishedQuestions})`;\n }\n if (topicData.questionsQuantityRevision) {\n return `(${revisionQuestions})`;\n }\n return '';\n }, [topicData.questionsQuantityUnpublished, topicData.questionsQuantityRevision]);\n\n return (\n \n
\n {withCheckboxes && (\n \n )}\n {!withCheckboxes && (\n <>\n
\n
{topicData.title}
\n
\n
\n
\n {questionsInfo}\n
\n \n {questionUnpublished}\n
\n
\n \n )}\n \n \n );\n});\n","import { questionsBankPageData } from 'constants/cypress/question-bank-page';\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { LittleArrow } from '@lms-elements/icons';\nimport { useCodifierContext } from 'containers/CodifierSelector/context';\nimport { TopicElement } from 'containers/CodifierSelector/TopicElement';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport './BlockElement.scss';\n\nconst cx = cn('block-element');\n\ninterface BlockElementProps {\n blockId: number;\n blockIndex?: number;\n}\n\nexport const BlockElement: React.FC = ({ blockId, blockIndex }) => {\n const blockData = useAppSelector((store) => store.codifier.blocksMap[blockId]);\n\n const {\n onElementClick,\n selectedElement: { blocks, topics },\n withCheckboxes,\n } = useCodifierContext();\n\n const [isSelected, setIsSelected] = useState(false);\n const [isOpened, setIsOpened] = useState(false);\n\n useEffect(() => {\n setIsSelected(!withCheckboxes && !topics?.length && blocks?.[0] === blockId);\n setIsOpened(\n Boolean(\n blocks?.includes(blockId) ||\n (withCheckboxes && blockData?.topics.some((topic) => topics?.includes(topic))),\n ),\n );\n }, [blocks, blockId, topics?.length, withCheckboxes, topics, blockData.topics]);\n\n const isDisabled = blockData.topics.length === 0;\n\n const handleSubjectClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isDisabled && !isSelected) {\n onElementClick(CodifierEventType.BLOCK, blockId);\n }\n },\n [isDisabled, isSelected, onElementClick, blockId],\n );\n\n return (\n
\n \n \n
\n \n
\n
{blockData.title}
\n
\n \n {isOpened && !isDisabled && (\n
\n {blockData.topics.map((topicId, topicIndex) => (\n \n ))}\n
\n )}\n \n );\n};\n","import { questionsBankPageData } from 'constants/cypress/question-bank-page';\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { LittleArrow } from '@lms-elements/icons';\nimport { BlockElement } from 'containers/CodifierSelector/BlockElement';\nimport { useCodifierContext } from 'containers/CodifierSelector/context';\nimport { TopicElement } from 'containers/CodifierSelector/TopicElement';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport './SectionElement.scss';\n\nconst cx = cn('section-element');\n\ninterface SectionElementProps {\n sectionId: number;\n sectionIndex?: number;\n}\n\nexport const SectionElement: React.FC = ({ sectionId, sectionIndex }) => {\n const sectionData = useAppSelector((store) => store.codifier.sectionsMap[sectionId]);\n\n const {\n onElementClick,\n selectedElement: { sections, blocks, topics },\n withCheckboxes,\n } = useCodifierContext();\n\n const [isSelected, setIsSelected] = useState(false);\n const [isOpened, setIsOpened] = useState(false);\n\n useEffect(() => {\n setIsSelected(!withCheckboxes && !blocks?.length && !topics?.length && sections?.[0] === sectionId);\n setIsOpened(Boolean(sections?.includes(sectionId)));\n }, [blocks?.length, sectionId, sections, topics?.length, withCheckboxes]);\n\n const isDisabled = sectionData.blocks.length === 0 && sectionData.topics.length === 0;\n\n const handleSubjectClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isDisabled && !isSelected) {\n onElementClick(CodifierEventType.SECTION, sectionId);\n }\n },\n [isDisabled, isSelected, onElementClick, sectionId],\n );\n\n return (\n
\n \n \n
\n \n
\n
{sectionData.title}
\n
\n \n {isOpened && !isDisabled && (\n
\n {sectionData.blocks.map((blockId, blockIndex) => (\n \n ))}\n {sectionData.topics.map((topicId) => (\n \n ))}\n
\n )}\n \n );\n};\n","import { questionsBankPageData } from 'constants/cypress/question-bank-page';\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Folders, LittleArrow } from '@lms-elements/icons';\nimport { useCodifierContext } from 'containers/CodifierSelector/context';\nimport { SectionElement } from 'containers/CodifierSelector/SectionElement';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport './ParallelElement.scss';\n\nconst cx = cn('parallel-element');\n\ninterface ParallelElementProps {\n parallelId: number;\n parallelIndex?: number;\n}\n\nexport const ParallelElement: React.FC = ({ parallelId, parallelIndex }) => {\n const parallelData = useAppSelector((store) => store.codifier.parallelsMap[parallelId]);\n\n const {\n onElementClick,\n selectedElement: { parallels, sections },\n } = useCodifierContext();\n\n const [isSelected, setIsSelected] = useState(false);\n const [isOpened, setIsOpened] = useState(false);\n\n useEffect(() => {\n setIsSelected(!sections?.length && parallels?.[0] === parallelId);\n setIsOpened(Boolean(parallels?.includes(parallelId)));\n }, [parallelId, parallels, sections]);\n\n const isDisabled = parallelData.sections.length === 0;\n\n const handleSubjectClick = useCallback(() => {\n if (!isDisabled && !isSelected) {\n onElementClick(CodifierEventType.PARALLEL, parallelId);\n }\n }, [isDisabled, isSelected, onElementClick, parallelId]);\n\n return (\n
\n \n \n
\n \n
\n \n
{parallelData.title}
\n
\n \n {isOpened && !isDisabled && (\n
\n {parallelData.sections.map((sectionId, sectionIndex) => (\n \n ))}\n
\n )}\n \n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { LittleArrow } from '@lms-elements/icons';\nimport { useCodifierContext } from 'containers/CodifierSelector/context';\nimport { ParallelElement } from 'containers/CodifierSelector/ParallelElement';\nimport { getCodifierSubjectDataAction } from 'store/actions/codifier';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport './SubjectElement.scss';\n\nconst cx = cn('subject-element');\n\ninterface SubjectElementProps {\n subjectId: number;\n isOpened?: boolean;\n isShowHeader?: boolean;\n}\n\nexport const SubjectElement: React.FC = ({\n subjectId,\n isOpened: isOpenedProp,\n isShowHeader = true,\n}) => {\n const dispatch = useDispatch();\n const subjectData = useAppSelector((store) => store.codifier.subjectsMap[subjectId]);\n const { fetchStatus } = useAppSelector((store) => store.codifier);\n const history = useHistory();\n\n const { onElementClick, selectedElement, withCheckboxes } = useCodifierContext();\n\n const [isSelected, setIsSelected] = useState(false);\n const [isOpened, setIsOpened] = useState(isOpenedProp);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(history.location.search);\n\n if (searchParams.get('subjects') && fetchStatus === FetchStatus.INITIAL) {\n dispatch(getCodifierSubjectDataAction(Number(searchParams.get('subjects'))));\n }\n }, [dispatch, fetchStatus, history.location.search]);\n\n useEffect(() => {\n setIsSelected(\n !withCheckboxes && !selectedElement.parallels?.length && selectedElement.subjects?.[0] === subjectId,\n );\n setIsOpened(Boolean(selectedElement.subjects?.includes(subjectId)) || isOpenedProp);\n }, [selectedElement.parallels?.length, subjectId, selectedElement.subjects, withCheckboxes, isOpenedProp]);\n\n const isDisabled = subjectData.parallels.length === 0;\n\n const handleSubjectClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isDisabled && !isSelected) {\n onElementClick(CodifierEventType.SUBJECT, subjectId);\n }\n },\n [isDisabled, isSelected, onElementClick, subjectId],\n );\n\n return (\n
\n {isShowHeader && (\n
\n
\n
\n \n
\n
{subjectData.title}
\n
\n
\n )}\n\n {isOpened && !isDisabled && (\n
\n {subjectData.parallels.map((parallelId, parallelIndex) => (\n \n ))}\n
\n )}\n
\n );\n};\n","import { CodifierEventType } from 'components/Codifier/Codifier';\n\nexport type SelectedElement = {\n subjects?: number[];\n parallels?: number[];\n sections?: number[];\n blocks?: number[];\n topics?: number[];\n};\n\nconst getElementsIds = (elements: number[] = [], id: number, withCheckboxes?: boolean): number[] =>\n withCheckboxes\n ? elements.includes(id)\n ? elements.filter((elementId) => elementId !== id)\n : [...elements, id]\n : [id];\n\nexport const getSelectedElements = (\n currentElements: SelectedElement,\n type: CodifierEventType,\n id: number,\n withCheckboxes?: boolean,\n): SelectedElement => {\n const { subjects, parallels, sections, blocks, topics } = currentElements;\n switch (type) {\n case CodifierEventType.SUBJECT:\n return {\n subjects: getElementsIds(subjects, id, withCheckboxes),\n topics: withCheckboxes ? topics : [],\n };\n case CodifierEventType.PARALLEL:\n return {\n subjects,\n parallels: getElementsIds(parallels, id, withCheckboxes),\n topics: withCheckboxes ? topics : [],\n };\n case CodifierEventType.SECTION:\n return {\n subjects,\n parallels,\n sections: getElementsIds(sections, id, withCheckboxes),\n topics: withCheckboxes ? topics : [],\n };\n case CodifierEventType.BLOCK:\n return {\n subjects,\n parallels,\n sections,\n blocks: getElementsIds(blocks, id, withCheckboxes),\n topics: withCheckboxes ? topics : [],\n };\n case CodifierEventType.TOPIC:\n return {\n subjects,\n parallels,\n sections,\n blocks,\n topics: getElementsIds(topics, id, withCheckboxes),\n };\n default:\n return currentElements;\n }\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useAppSelector } from 'store/store';\n\nimport { CodifierEventType } from 'components/Codifier/Codifier';\n\nimport { CodifierContext } from './context';\nimport { SubjectElement } from './SubjectElement';\nimport { getSelectedElements, SelectedElement } from './utils';\n\ninterface CodifierSelectorProps {\n onElementSelect?: (type: CodifierEventType, id: number) => void;\n onTopicCheckboxSelect?: (topicId: number) => void;\n initValues?: SelectedElement;\n withCheckboxes?: boolean;\n showSelectSubject?: boolean;\n selectedSubject?: number;\n isShowHeader?: boolean;\n}\n\nexport const CodifierSelector: React.FC = ({\n onElementSelect,\n withCheckboxes,\n onTopicCheckboxSelect,\n initValues,\n showSelectSubject,\n selectedSubject,\n isShowHeader = true,\n}) => {\n const { subjectsIds } = useAppSelector((store) => store.codifier);\n\n const onElementClick = useCallback(\n (type: CodifierEventType, id: number) => {\n setCodifierContext((prev) => {\n return {\n ...prev,\n selectedElement: getSelectedElements(prev.selectedElement, type, id, withCheckboxes),\n };\n });\n\n onElementSelect?.(type, id);\n\n if (onTopicCheckboxSelect && withCheckboxes && type === CodifierEventType.TOPIC) {\n onTopicCheckboxSelect(id);\n }\n },\n [onElementSelect, onTopicCheckboxSelect, withCheckboxes],\n );\n\n const [codifierContext, setCodifierContext] = useState({\n onElementClick,\n selectedElement: initValues ?? {},\n withCheckboxes,\n });\n\n const [isSubjectUpdates, setIsSubjectUpdates] = useState(false);\n\n useEffect(() => {\n setIsSubjectUpdates(true);\n }, [selectedSubject]);\n\n useEffect(() => {\n if (isSubjectUpdates && selectedSubject && withCheckboxes) {\n setCodifierContext((prev) => ({\n ...prev,\n selectedElement: initValues ?? {\n subjects: [selectedSubject],\n parallels: [],\n sections: [],\n blocks: [],\n topics: [],\n },\n }));\n\n setIsSubjectUpdates(false);\n }\n }, [initValues, withCheckboxes, isSubjectUpdates, selectedSubject]);\n\n return (\n \n {subjectsIds\n .filter((subjectId) => (showSelectSubject ? subjectId === selectedSubject : true))\n .map((subjectId) => (\n \n ))}\n \n );\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Basket, CopyIcon, EditFile, NoteBlank, NoteBlankTemplate, Send } from '@lms-elements/icons';\n\nimport { IFileProps } from './File.types';\n\nimport './File.scss';\n\nconst CnFile = cn('file');\n\nexport const File: React.FC = ({\n name,\n isTemplate,\n url,\n id,\n deleteFile,\n needHideDeleteButton,\n needHideSendButton,\n needHideEditButton,\n needHideCopyToClipboardButton,\n canEdit,\n editFile,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => setIsHovered(true), []);\n const handleMouseLeave = useCallback(() => setIsHovered(false), []);\n\n const isEditable = useMemo(() => (!isTemplate || canEdit) && isHovered, [isTemplate, isHovered, canEdit]);\n\n const copyFile = useCallback(() => navigator.clipboard.writeText(url), [url]);\n\n return (\n
\n
\n {isTemplate ? : }\n \n {name}\n \n
\n {isEditable &&\n (!needHideSendButton ||\n !needHideDeleteButton ||\n !needHideEditButton ||\n !needHideCopyToClipboardButton) && (\n
\n {!needHideSendButton && (\n \n )}\n {!needHideCopyToClipboardButton && (\n \n )}\n {!needHideDeleteButton && (\n \n )}\n {!needHideEditButton && (\n \n )}\n
\n )}\n
\n );\n};\n","import React, { useCallback } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Title } from '@lms-elements/atomic';\nimport { TFile } from 'containers/OnlineLessonTab/FilesContainer/FilesContainer.types';\nimport { File } from 'src-new/components/lms-elements/File';\n\nimport './AddFiles.scss';\n\nconst CnAddFiles = cn('addFile');\n\nexport type FileProps = {\n files: TFile[];\n className?: string;\n canUpload?: boolean;\n canEdit?: boolean;\n onUpload?: (file: File) => void;\n onDeleteFile?: (fileId: number) => void;\n};\n\nconst MAX_FILE_SIZE_MB = 100;\nconst maxFileSizeInBytes = MAX_FILE_SIZE_MB * 1024 * 1024;\n\nexport const AddFiles: React.FC = ({\n files = [],\n className = '',\n canUpload,\n canEdit,\n onUpload,\n onDeleteFile,\n}: FileProps) => {\n const handleAddClick = useCallback(\n (e: React.ChangeEvent) => {\n e.preventDefault();\n\n if (onUpload && e.target.files) {\n const file = e.target.files[0];\n\n if (file && file.size < maxFileSizeInBytes) {\n onUpload(file);\n }\n }\n },\n [onUpload],\n );\n\n const deleteFile = useCallback(\n (e: React.MouseEvent) => {\n const fileId = e.currentTarget.id;\n\n if (onDeleteFile) {\n onDeleteFile(Number(fileId));\n }\n },\n [onDeleteFile],\n );\n\n return (\n
\n {canUpload ? (\n \n ) : (\n <h3 className={CnAddFiles('header')}>Файлы</h3>\n )}\n {files.map((item, index) => {\n const fileName = `${item.title}.${item.extension}`;\n\n return (\n <div\n className={CnAddFiles('file-wrapper', { hasAttr: fileName.length > 55 })}\n key={index}\n data-title={fileName}\n >\n <File\n key={index}\n name={fileName.length > 55 ? `${fileName.slice(0, 30)}...${fileName.slice(-10)}` : fileName}\n url={item.fileUrl}\n id={String(item.id)}\n deleteFile={deleteFile}\n isTemplate={item.isTemplate}\n canEdit={canEdit}\n needHideSendButton\n needHideEditButton\n />\n </div>\n );\n })}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { cn } from '@bem-react/classname';\nimport { AppText } from '@frontend-modules/ui-kit';\nimport { Checkbox, File } from '@lms-elements/atomic';\nimport { useRole } from 'hooks';\nimport {\n createMeetingFileAction,\n deleteMeetingFileAction,\n getCourseGroupMeetingFilesAction,\n getCourseMeetingFilesAction,\n updateMeetingFileAction,\n} from 'store/actions/meetingFiles';\nimport { resetMeetingFilesState } from 'store/reducers/meetingFiles';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport {\n TCreateCourseGroupMeetingFilePayload,\n TCreateCourseMeetingFilePayload,\n TUpdateCourseGroupMeetingFilePayload,\n TUpdateCourseMeetingFilePayload,\n} from 'types/meetingFiles';\n\nimport { AddFiles } from 'components/AddFiles';\n\nimport { IFilesContainerProps, TFile } from './FilesContainer.types';\n\nimport './FilesContainer.scss';\n\nconst cx = cn('files-container');\n\nexport const FilesContainer: React.FC<IFilesContainerProps> = ({\n lessonScheduleId,\n courseGroupId,\n lessonId,\n isOvered,\n isTest,\n}) => {\n const dispatch = useDispatch();\n const { courseMeetingFiles, courseGroupMeetingFiles, getMeetingFilesStatus } = useAppSelector(\n (store) => store.meetingFiles,\n );\n const { fetchStatus } = useAppSelector((store) => store.schedule);\n const { info } = useAppSelector((store) => store.user);\n\n const { isStudent, isTeacher, isMethodist: isMethodistRole, isPrincipal: isPrincipalRole, isSupport } = useRole();\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n\n const isMethodist = isMethodistRole || isPrincipal;\n\n const isCourseGroup = !!courseGroupId && !!lessonScheduleId;\n\n const needfetchFiles =\n (!lessonScheduleId && !courseGroupId) ||\n fetchStatus === FetchStatus.FETCHED ||\n getMeetingFilesStatus === FetchStatus.INITIAL;\n\n useEffect(() => {\n if (needfetchFiles) {\n if (isCourseGroup) {\n //@ts-ignore\n dispatch(getCourseGroupMeetingFilesAction({ lessonSchedule: lessonScheduleId }));\n } else if (lessonId && !courseGroupId) {\n dispatch(getCourseMeetingFilesAction({ lesson: lessonId }));\n }\n }\n }, [dispatch, needfetchFiles, lessonId, lessonScheduleId]);\n\n useEffect(() => {\n return () => {\n dispatch(resetMeetingFilesState());\n };\n }, [dispatch]);\n const files: TFile[] = useMemo(() => {\n if (courseGroupMeetingFiles.length) {\n return courseGroupMeetingFiles.map((file) => {\n const { id, isAvailableToStudents, meetingFile, useOnMeeting } = file;\n const { id: meetingFileId, fileUrl, isTemplate, title, extension, uploadedBy } = meetingFile;\n return {\n id,\n isAvailableToStudents,\n useOnMeeting,\n isTemplate,\n meetingFileId,\n fileUrl,\n title,\n extension,\n uploadedBy,\n };\n });\n }\n if (courseMeetingFiles.length) {\n return courseMeetingFiles;\n }\n return [];\n }, [courseMeetingFiles, courseGroupMeetingFiles]);\n\n const isCanUpload = (isMethodist && !courseGroupId) || ((isMethodist || isTeacher) && isCourseGroup);\n const isShowContent = !!files.length || isCanUpload;\n\n const handleFilesCheckboxChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const checkbox = e.target;\n const params: TUpdateCourseMeetingFilePayload | TUpdateCourseGroupMeetingFilePayload = {\n id: Number(checkbox.id),\n };\n\n if (checkbox.name === 'useOnMeeting') {\n params.useOnMeeting = checkbox.checked;\n } else if (checkbox.name === 'isAvailableToStudents') {\n params.isAvailableToStudents = checkbox.checked;\n } else {\n params.isTemplate = checkbox.checked;\n }\n\n dispatch(\n updateMeetingFileAction({\n params,\n isCourseGroup,\n lessonScheduleId,\n }),\n );\n },\n [dispatch, files, lessonId, lessonScheduleId],\n );\n\n const handleUploadFile = useCallback(\n (file: File) => {\n const params: TCreateCourseMeetingFilePayload | TCreateCourseGroupMeetingFilePayload = lessonScheduleId\n ? {\n file,\n lessonSchedule: lessonScheduleId,\n }\n : {\n file,\n lesson: lessonId,\n };\n\n if (file) {\n dispatch(\n createMeetingFileAction({\n params,\n isCourseGroup,\n userInfo: info,\n }),\n );\n }\n },\n [dispatch, isMethodist, isTeacher, lessonId, lessonScheduleId],\n );\n\n const handleDeleteFile = useCallback(\n (fileId: number) => {\n dispatch(\n deleteMeetingFileAction({\n id: fileId,\n isCourseGroup,\n }),\n );\n },\n [dispatch, files, isMethodist],\n );\n\n return (\n <div className={cx({ student_view: isStudent, isTest })}>\n {isStudent ? (\n <>\n <h2 className={cx('filesTitle')}>Файлы</h2>\n {!files.length && (\n <AppText text={'Список файлов пуст'} color={'#919399'} textStyle={'DesktopFootNotes'} />\n )}\n {files?.map((item, index) => (\n <File\n key={index}\n name={`${item.title}.${item.extension}`}\n url={item.fileUrl}\n id={String(item.id)}\n isTemplate={item.isTemplate}\n needHideSendButton\n needHideDeleteButton\n needHideEditButton\n />\n ))}\n </>\n ) : isShowContent ? (\n <>\n <div className={cx('files')}>\n <AddFiles\n files={files}\n onUpload={handleUploadFile}\n onDeleteFile={handleDeleteFile}\n canUpload={isCanUpload}\n canEdit={isMethodist && isCourseGroup}\n />\n </div>\n {isCourseGroup && !!files.length && !isOvered && (\n <div className={cx('filesUseOnConference')}>\n <div className={cx('filesUseOnConferenceTitle')}>Использовать во время занятия</div>\n {files?.map((file) => (\n <div key={file.id} className={cx('filesUseOnConferenceCheckbox')}>\n <Checkbox\n id={String(file.id)}\n checked={file.useOnMeeting}\n disabled={getMeetingFilesStatus === FetchStatus.FETCHING}\n handleCheckboxChange={handleFilesCheckboxChange}\n name=\"useOnMeeting\"\n />\n </div>\n ))}\n </div>\n )}\n {isCourseGroup && !!files.length && (\n <div className={cx('filesAvailability')}>\n <div className={cx('filesAvailabilityTitle')}>Доступно ученикам</div>\n {files?.map((file) => (\n <div key={file.id} className={cx('filesAvailabilityCheckbox')}>\n <Checkbox\n id={String(file.id)}\n checked={file.isAvailableToStudents}\n disabled={getMeetingFilesStatus === FetchStatus.FETCHING}\n handleCheckboxChange={handleFilesCheckboxChange}\n name=\"isAvailableToStudents\"\n />\n </div>\n ))}\n </div>\n )}\n {isMethodist && !!files.length && (\n <div className={cx('filesIsTemplate')}>\n <div className={cx('filesIsTemplateTitle')}>Использовать как шаблон</div>\n {files?.map((file) => {\n return (\n <div key={file.id} className={cx('filesIsTemplateCheckbox')}>\n <Checkbox\n id={String(file.id)}\n checked={file.isTemplate}\n handleCheckboxChange={handleFilesCheckboxChange}\n name=\"isTemplate\"\n disabled={\n (file.isTemplate && !isCourseGroup) ||\n getMeetingFilesStatus === FetchStatus.FETCHING\n }\n />\n </div>\n );\n })}\n </div>\n )}\n {isMethodist && !!files.length && !isCourseGroup && (\n <div className={cx('filesAuthor')}>\n <div className={cx('filesIsTemplateTitle')}>Автор файла</div>\n {files?.map((file) => {\n return (\n <div key={file.id} className={cx('filesIsTemplateCheckbox')}>\n <AppText\n text={`${file?.uploadedBy?.lastName} ${file?.uploadedBy?.firstName} ${file?.uploadedBy?.patronymic}`}\n textStyle={'DesktopFootNotes'}\n color={'#919399'}\n />\n </div>\n );\n })}\n </div>\n )}\n </>\n ) : (\n <></>\n )}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { Checkbox, RoomCard } from '@lms-elements/atomic';\nimport { checkIsBeetween, decreaseDate } from '@lms-elements/utils';\nimport { PageLoader } from 'containers/PageLoader';\nimport { useRole } from 'hooks';\nimport { patchMissedLessonAction } from 'store/actions/lessonSchedule';\nimport { getMeetingRecordingsAction, postMeetingRecordingAction } from 'store/actions/meeting';\nimport { joinRoomAction, rejoinRoomAction } from 'store/actions/proctoring';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { EventTypes } from 'types/events';\n\nimport { FilesContainer } from './FilesContainer';\nimport { getFiles } from './utils';\n\nimport './OnlineLessonTab.scss';\n\nconst CnOnlineLessonTab = cn('onlineLessonTab');\n\ninterface IOnlineLessonTabProps {\n lessonScheduleId?: number;\n lessonId: number;\n isOvered?: boolean;\n isStarted?: boolean;\n isTest?: boolean;\n courseGroupId?: number;\n}\n\nexport const OnlineLessonTab: React.FC<IOnlineLessonTabProps> = ({\n lessonScheduleId,\n lessonId,\n isOvered,\n isStarted,\n isTest,\n courseGroupId,\n}) => {\n const dispatch = useDispatch();\n const { isStudent } = useRole();\n const history = useHistory();\n\n const { fetchMeetingStatus, meeting, meetingFiles, fetchMeetingFilesStatus } = useAppSelector(\n (store) => store.meeting,\n );\n const { eventRooms, getEventRoomsStatus, changeEventRoomStatus } = useAppSelector((store) => store.proctoring);\n\n const { info } = useAppSelector((store) => store.user);\n\n const currentEventRoom = useMemo(() => eventRooms.find(({ isJoined }) => isJoined), [eventRooms]);\n\n const isLoading =\n fetchMeetingStatus === FetchStatus.FETCHING ||\n fetchMeetingFilesStatus === FetchStatus.FETCHING ||\n changeEventRoomStatus === FetchStatus.FETCHING ||\n getEventRoomsStatus === FetchStatus.FETCHING;\n\n useEffect(() => {\n if (isOvered && lessonScheduleId && !meeting[lessonScheduleId]) {\n dispatch(getMeetingRecordingsAction({ lessonSchedule: lessonScheduleId }));\n }\n }, [isOvered, dispatch, lessonScheduleId, meeting]);\n\n const selectedMeeting = useMemo(() => {\n if (lessonScheduleId) {\n return meeting[lessonScheduleId];\n }\n }, [lessonScheduleId, meeting]);\n\n const handleVideoCheckboxChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>, id: number) => {\n const isActive = e.target.checked;\n if (lessonScheduleId && selectedMeeting) {\n dispatch(\n postMeetingRecordingAction({\n lessonSchedule: lessonScheduleId,\n id: id,\n isPublished: isActive,\n }),\n );\n }\n },\n [lessonScheduleId, selectedMeeting, dispatch],\n );\n\n const files = useMemo(() => getFiles(meetingFiles), [meetingFiles]);\n\n const records = useMemo(() => {\n if (selectedMeeting) {\n return selectedMeeting.recordings;\n }\n }, [selectedMeeting]);\n\n const isEmpty = !records?.length && !files?.length && !eventRooms?.length && !lessonScheduleId;\n\n const handleJoinClick = useCallback(\n (id: number) => {\n dispatch(joinRoomAction({ newId: id, lesson: lessonId, studentId: info?.id, event_type: EventTypes.TEST }));\n },\n [dispatch, info?.id, lessonId],\n );\n\n const handleRecordClick = useCallback(\n (id: number) => () => {\n if (isStudent) dispatch(patchMissedLessonAction({ id: id, recordViewed: true }));\n },\n [dispatch, isStudent],\n );\n\n const handleRejoinClick = useCallback(\n (id: number) => {\n const leaveId = eventRooms.find((el) => el.students?.some((el) => el.id === info?.id))?.id;\n if (leaveId !== undefined) {\n dispatch(\n rejoinRoomAction({\n leaveId: leaveId,\n newId: id,\n studentId: info?.id,\n lesson: lessonId,\n event_type: EventTypes.TEST,\n }),\n );\n }\n },\n [dispatch, eventRooms, info?.id, lessonId],\n );\n\n const handleRoomClick = useCallback(\n (id: number) => {\n history.push(`/proctoring/event-room/${id}`);\n },\n [history],\n );\n\n const needHideButton =\n !isStudent ||\n checkIsBeetween(\n decreaseDate({ date: currentEventRoom?.datetimeStart ?? '', amount: 10, unit: 'm' }),\n currentEventRoom?.datetimeEnd ?? '',\n );\n\n if (isLoading) {\n return <PageLoader showLoading={isLoading} />;\n }\n if (isStudent && isEmpty && !isLoading) {\n return (\n <div className={CnOnlineLessonTab('empty')}>\n {!isStarted ? (\n <h2 className={CnOnlineLessonTab('empty-title')}>\n {isTest && !lessonScheduleId ? 'Комнаты еще не созданы!' : 'Онлайн-занятие будет позже!'}\n </h2>\n ) : (\n <h2 className={CnOnlineLessonTab('empty-title')}>Запись онлайн занятия будет позже!</h2>\n )}\n </div>\n );\n }\n\n return (\n <div className={CnOnlineLessonTab({ isOvered, isStudent })}>\n {isTest && eventRooms.length !== 0 && (\n <>\n <div className={CnOnlineLessonTab('roomsContainer')}>\n <div className={CnOnlineLessonTab('rooms')}>\n {eventRooms.map((el) => (\n <RoomCard\n {...el}\n key={el.id}\n onJoinClick={el.isJoined ? undefined : handleJoinClick}\n onRejoinClick={handleRejoinClick}\n onCardClick={isStudent ? undefined : handleRoomClick}\n needHideButton={needHideButton}\n isStudent\n />\n ))}\n </div>\n </div>\n </>\n )}\n {isOvered && (\n <>\n {Boolean(records?.length) && (\n <div className={CnOnlineLessonTab('videoContainer')}>\n {fetchMeetingStatus === FetchStatus.FETCHED &&\n records?.map((record, index) => {\n return (\n <div key={`${record.id}-${index}`}>\n <div className={CnOnlineLessonTab('videoAvailability')}>\n <h2 className={CnOnlineLessonTab('videoAvailabilityTitle')}>\n Запись занятия\n </h2>\n {!isStudent && (\n <Checkbox\n label=\"доступна\"\n defaultChecked={record?.isPublished}\n handleCheckboxChange={(e) =>\n handleVideoCheckboxChange(e, record.id)\n }\n />\n )}\n </div>\n <a\n className={CnOnlineLessonTab('record-wrapper')}\n key={record.link}\n href={record.link}\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={handleRecordClick(lessonId)}\n >\n <img\n className={CnOnlineLessonTab('record-preview')}\n src={record.preview}\n alt=\"record\"\n />\n <div className={CnOnlineLessonTab('duration-title')}>\n {record.duration}\n </div>\n </a>\n </div>\n );\n })}\n </div>\n )}\n </>\n )}\n {isTest && eventRooms.length !== 0 ? (\n <FilesContainer\n lessonScheduleId={lessonScheduleId}\n courseGroupId={courseGroupId}\n lessonId={lessonId}\n isOvered={isOvered}\n isTest\n />\n ) : (\n <FilesContainer\n lessonScheduleId={lessonScheduleId}\n courseGroupId={courseGroupId}\n lessonId={lessonId}\n isOvered={isOvered}\n />\n )}\n </div>\n );\n};\n","import { MeetingFileData } from 'api/services/meeting';\nimport { IFile } from 'types/file';\n\nexport type OnlineLessonTabFile = IFile & { isTemplate?: boolean; fileName: string };\n\nexport const getFiles = (meetingFiles?: MeetingFileData[]): OnlineLessonTabFile[] => {\n return (\n meetingFiles?.map((file) => ({\n id: file.id,\n title: file.title ?? '',\n fileExtension: file.title ? file.title?.split('.')[file.title?.split('.').length - 1] : '',\n fileUrl: file.fileUrl,\n isAvailableToStudents: file.isAvailableToStudents,\n shouldUseOnConference: file.useOnMeeting,\n fileName: file.title ?? '',\n isTemplate: file.lesson !== null,\n })) ?? []\n );\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Tooltip, TooltipViewEnum } from '@lms-elements/atomic';\nimport { Cam, CamDisabled, UserCircle, UserCircleDisabled } from '@lms-elements/icons';\n\nimport './AttendanceGarnitureStatus.scss';\n\nconst CnAttendanceGarnitureStatus = cn('attendanceGarnitureStatus');\n\ninterface IAttendanceGarnitureStatusProps {\n isCameraDisabled: boolean;\n isUserDisabled: boolean;\n\n cameraDescription?: string;\n userDescription?: string;\n\n showDescriptions?: boolean;\n}\n\nexport const AttendanceGarnitureStatus: React.FC<IAttendanceGarnitureStatusProps> = ({\n isCameraDisabled,\n isUserDisabled,\n cameraDescription,\n userDescription,\n showDescriptions,\n}) => {\n return (\n <div className={CnAttendanceGarnitureStatus()}>\n <div className={CnAttendanceGarnitureStatus('device')}>\n {isCameraDisabled ? <CamDisabled /> : <Cam />}\n {cameraDescription && showDescriptions && (\n <Tooltip view={TooltipViewEnum.comment}>\n <span>{cameraDescription}</span>\n </Tooltip>\n )}\n </div>\n <div className={CnAttendanceGarnitureStatus('device')}>\n {isUserDisabled ? <UserCircleDisabled /> : <UserCircle />}\n {userDescription && showDescriptions && (\n <Tooltip view={TooltipViewEnum.comment}>\n <span>{userDescription}</span>\n </Tooltip>\n )}\n </div>\n </div>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Avatar, Dropdown, DropdownLabel, StatusLabelEnum } from '@lms-elements/atomic';\nimport { useRole } from 'hooks';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { AttendanceData } from 'types/attendance';\nimport { MarkScore } from 'types/mark';\n\nimport { AttendanceGarnitureStatus } from 'components/AttendanceGarnitureStatus';\nimport { AttendanceMark } from 'components/AttendanceMark';\nimport { convertAttendanceStatus } from 'utils/convertAttandanceStatus';\n\nimport './AttendanceLine.scss';\n\nconst CnAttendanceLine = cn('attendanceLine');\n\nexport interface IAttendanceLineProps extends AttendanceData {\n teacherId?: number;\n presenceSelectHandler?: (id: number, values: { status: StatusLabelEnum; lateMinutes: number }) => void;\n changeMark?: (studentId: number, values: { score?: MarkScore; comment?: string; markId: number }[]) => void;\n createMark?: (attendanceId: number, values: { score?: MarkScore; comment?: string }[]) => void;\n onDeleteMark?: (id: number, attendanceId: number) => void;\n onAvatarClick?: () => void;\n isOvered?: boolean;\n isStudent?: boolean;\n}\n\nexport const AttendanceLine: React.FC<IAttendanceLineProps> = ({\n id,\n studentId,\n studentFirstName,\n studentLastName,\n studentImage,\n presenceInfo,\n cameraInfo,\n faceInfo,\n isOnline,\n marks,\n teacherId,\n presenceSelectHandler,\n changeMark,\n createMark,\n onDeleteMark,\n onAvatarClick,\n isAdaptation,\n isOvered,\n isStudent,\n}) => {\n const { isPrincipal: isPrincipalRole, isSupport, isTutor } = useRole();\n // TODO: изменить, когда будут известны все отличия между support и завучем. Сейчас support видит все тоже самое что завуч\n const isPrincipal = isPrincipalRole || isSupport;\n const studentName = `${studentLastName} ${studentFirstName}`;\n const dropDownStatus = useMemo(() => convertAttendanceStatus(presenceInfo.status), [presenceInfo.status]);\n\n const submitChangeMark = useCallback(\n (values: { selectedMark?: MarkScore; comment?: string; markId: number }[]) => {\n if (changeMark) {\n const newValues = values.map((value) => {\n return {\n score: value.selectedMark,\n comment: value.comment,\n markId: value.markId,\n };\n });\n\n changeMark(Number(studentId), newValues);\n }\n },\n [studentId, changeMark],\n );\n\n const submitCreateMark = useCallback(\n (values: { selectedMark?: MarkScore; comment?: string }[]) => {\n if (createMark) {\n const newValues = values.map((value) => {\n return {\n score: value.selectedMark,\n comment: value.comment,\n };\n });\n\n createMark(id, newValues);\n }\n },\n [id, createMark],\n );\n\n const handleDeleteMark = useCallback(\n (markId: number) => {\n onDeleteMark?.(markId, id);\n },\n [id, onDeleteMark],\n );\n\n return (\n <tr className={CnAttendanceLine()}>\n <td className={CnAttendanceLine('avatar')}>\n <Avatar\n name={studentName}\n source={studentImage}\n alt={'Фото'}\n onAvatarClick={onAvatarClick}\n isOnAdaptation={isAdaptation}\n isOnline={isOnline}\n />\n </td>\n <td className={CnAttendanceLine('presence')}>\n {isStudent ||\n (!isPrincipal &&\n !isTutor &&\n (presenceInfo.status === AttendanceStatus.ABSENT_DUE_ILLNESS ||\n presenceInfo.status === AttendanceStatus.ABSENT_WITH_REASON)) ? (\n <DropdownLabel status={dropDownStatus} lateTime={presenceInfo.lateMinutes} needHideIcon />\n ) : (\n <Dropdown\n status={dropDownStatus}\n lateTime={presenceInfo.lateMinutes}\n selectHandler={presenceSelectHandler?.bind(null, Number(id))}\n needHideAbsentReasonOptions={!isPrincipal && !isTutor}\n />\n )}\n </td>\n <td className={CnAttendanceLine('garniture')}>\n <AttendanceGarnitureStatus\n isCameraDisabled={!cameraInfo.isTurnedOn}\n isUserDisabled={!faceInfo.isRecognizedFace}\n cameraDescription={cameraInfo.description}\n userDescription={faceInfo.description}\n showDescriptions={isOvered}\n />\n </td>\n <td className={CnAttendanceLine('marks')}>\n <AttendanceMark\n teacherId={teacherId}\n marks={marks}\n submitChangeMark={submitChangeMark}\n submitCreateMark={submitCreateMark}\n onDeleteMark={handleDeleteMark}\n canCreateCommentOnly\n isStudent={isStudent}\n isAbsolutionPosition\n />\n </td>\n </tr>\n );\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { cn } from '@bem-react/classname';\nimport { StatusLabelEnum } from '@lms-elements/atomic';\nimport { AttendanceLine, IAttendanceLineProps } from 'containers/AttendanceLine';\nimport { PageLoader } from 'containers/PageLoader';\nimport {\n changeAttendanceMarkAction,\n createAttendanceMarkAction,\n deleteAttendanceMarkAction,\n getLessonAttendanceDataAction,\n patchStudentPresenceAction,\n} from 'store/actions/attendance';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { MarkScore } from 'types/mark';\n\nimport { normalizePresenceValues } from 'utils/presence';\n\nimport './AttendanceTab.scss';\n\nconst CnAttendanceTab = cn('attendanceTab');\nexport interface IAttendanceTabProps {\n lessonId: number;\n courseGroupId?: number;\n eventRoomId?: number;\n subjectId?: number;\n onStudentAvatarClick?: (studetnId: number) => void;\n isOvered?: boolean;\n isStudent?: boolean;\n}\n\nexport const AttendanceTab: React.FC<IAttendanceTabProps> = ({\n lessonId,\n courseGroupId,\n eventRoomId,\n onStudentAvatarClick,\n isOvered,\n isStudent,\n}) => {\n const dispatch = useDispatch();\n const { fetchStatus, dataMap: studentsAttendanceMap } = useAppSelector((store) => store.attendance);\n const { info } = useAppSelector((store) => store.user);\n\n const studentsAttendance = useMemo(\n () =>\n Object.values(studentsAttendanceMap).sort((first, second) =>\n `${first.studentLastName} ${first.studentFirstName}` >\n `${second.studentLastName} ${second.studentFirstName}`\n ? 1\n : -1,\n ),\n [studentsAttendanceMap],\n );\n\n // TODO: need changed logic edit marks?\n const teacherId = useMemo(() => info?.id, [info?.id]);\n\n const isLoading = fetchStatus === FetchStatus.FETCHING;\n\n useEffect(() => {\n dispatch(getLessonAttendanceDataAction({ lessonId, courseGroupId, eventRoom: eventRoomId }));\n }, [dispatch, lessonId, courseGroupId, eventRoomId]);\n\n const presenceSelectHandler = useCallback(\n (id: number, values: { status: StatusLabelEnum; lateMinutes: number }) => {\n const normalizedValues = normalizePresenceValues(values);\n\n dispatch(patchStudentPresenceAction({ id, values: normalizedValues }));\n },\n [dispatch],\n );\n\n const createMark = useCallback(\n (attendanceLesson: number, values: { score?: MarkScore; comment?: string }[]) => {\n values.forEach((value) => {\n const newMark = {\n score: value.score,\n comment: value.comment || undefined,\n attendanceLesson,\n };\n dispatch(createAttendanceMarkAction(newMark));\n });\n },\n [dispatch],\n );\n\n const changeMark = useCallback(\n (studentId: number, values: { score?: MarkScore; comment?: string; markId: number }[]) => {\n values.forEach((value) => {\n const newMark = {\n markId: value.markId,\n score: value.score || null,\n comment: value.comment || undefined,\n };\n dispatch(changeAttendanceMarkAction(newMark));\n });\n },\n [dispatch],\n );\n\n const deleteMark = useCallback(\n (markId: number, attendanceLesson: number) => {\n dispatch(deleteAttendanceMarkAction({ markId, attendanceLesson }));\n },\n [dispatch],\n );\n\n const handleAvatarClick = useCallback(\n (studetnId: number) => {\n if (onStudentAvatarClick) {\n onStudentAvatarClick(studetnId);\n }\n },\n [onStudentAvatarClick],\n );\n\n return (\n <div className={CnAttendanceTab()}>\n <PageLoader showLoading={isLoading} />\n <table className={CnAttendanceTab('table')}>\n <thead className={CnAttendanceTab('tableHead')}>\n <tr>\n <th className={CnAttendanceTab('studentsHeader')}>Ученик</th>\n <th className={CnAttendanceTab('attendanceHeader')}>Посещение урока</th>\n <th className={CnAttendanceTab('garnituresHeader')}>Камера</th>\n <th className={CnAttendanceTab('marksHeader')}>Оценки и комментарии</th>\n </tr>\n </thead>\n <tbody>\n {fetchStatus === FetchStatus.FETCHED &&\n studentsAttendance.map((student: IAttendanceLineProps) => (\n <AttendanceLine\n key={student.id}\n {...student}\n teacherId={teacherId}\n presenceSelectHandler={presenceSelectHandler}\n createMark={createMark}\n changeMark={changeMark}\n onDeleteMark={deleteMark}\n onAvatarClick={handleAvatarClick.bind(null, Number(student.studentId))}\n isOvered={isOvered}\n isStudent={isStudent}\n isOnline={student.isOnline}\n />\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n","import { INewNotification, INotification } from '@lms-elements/atomic';\n\nexport enum NotificationType {\n ASSIGNMENTPROGRESS_OVERDUE = 'ASSIGNMENTPROGRESS_OVERDUE',\n ASSIGNMENTPROGRESS_CHECK = 'ASSIGNMENTPROGRESS_CHECK',\n ASSIGNMENTPROGRESS_ASSIGNMENT = 'ASSIGNMENTPROGRESS_ASSIGNMENT',\n ASSIGNMENTPROGRESS_COMPLETED = 'ASSIGNMENTPROGRESS_COMPLETED',\n ASSIGNMENTPROGRESS_DEADLINE = 'ASSIGNMENTPROGRESS_DEADLINE',\n}\n\nexport interface NotificationExtraInfo {\n subjectId: number;\n lessonId: number;\n courseGroupId?: number;\n type: NotificationType;\n}\n\nexport type NewNotificationWithExtraInfo = INewNotification & NotificationExtraInfo;\n\nexport type ViewedNotificationWithExtraInfo = INotification & NotificationExtraInfo;\n","import { INotification, INotificationMessageProps, StyledNumberColor } from '@lms-elements/atomic';\nimport { Notification } from 'api/services/notifications';\nimport i18next from 'i18next';\nimport moment from 'moment';\nimport { NotificationType } from 'types/notifications';\n\ntype InfoForConverters = Pick<Notification, 'timeCreate' | 'data'> & {\n subjectTitle: string;\n courseGroupTitle?: string;\n};\n\nconst convertToOverdueNotificationMessageProps = ({\n timeCreate,\n data,\n}: InfoForConverters): INotificationMessageProps => {\n const tasksCount = data.count ?? 1;\n\n return {\n message: `${i18next.t('task', { count: tasksCount })}. Просрочен срок проверки`,\n time: moment(timeCreate).format('HH:mm'),\n number: {\n value: tasksCount,\n color: StyledNumberColor.red,\n },\n };\n};\n\nconst convertToCheckNotificationMessageProps = ({ timeCreate, data }: InfoForConverters): INotificationMessageProps => {\n const tasksCount = data.count ?? 1;\n\n return {\n message: `${i18next.t('task', { count: tasksCount })} сдано в проверку`,\n time: moment(timeCreate).format('HH.mm'),\n number: {\n value: tasksCount,\n color: StyledNumberColor.green,\n },\n };\n};\n\nconst convertToDeadlineNotificationMessageProps = ({\n timeCreate,\n subjectTitle,\n courseGroupTitle,\n}: InfoForConverters): INotificationMessageProps => {\n return {\n message: `Необходимо проверить задание по предмету ${subjectTitle}${\n courseGroupTitle ? `, ${courseGroupTitle}` : ''\n }`,\n time: moment(timeCreate).format('HH.mm'),\n };\n};\n\nconst convertToAssignmentNotificationMessageProps = ({\n timeCreate,\n subjectTitle,\n}: InfoForConverters): INotificationMessageProps => {\n return {\n message: `У вас появилось задание${subjectTitle ? ` по предмету ${subjectTitle}` : ''}`,\n time: moment(timeCreate).format('HH.mm'),\n };\n};\n\nconst convertToCompletedNotificationMessageProps = ({\n timeCreate,\n subjectTitle,\n}: InfoForConverters): INotificationMessageProps => {\n return {\n message: `Ваше задание${subjectTitle ? ` по предмету ${subjectTitle}` : ''} проверили`,\n time: moment(timeCreate).format('HH.mm'),\n };\n};\n\nconst notificationConvertersByType: Record<\n NotificationType,\n (notification: InfoForConverters) => INotificationMessageProps\n> = {\n [NotificationType.ASSIGNMENTPROGRESS_OVERDUE]: convertToOverdueNotificationMessageProps,\n [NotificationType.ASSIGNMENTPROGRESS_CHECK]: convertToCheckNotificationMessageProps,\n [NotificationType.ASSIGNMENTPROGRESS_DEADLINE]: convertToDeadlineNotificationMessageProps,\n [NotificationType.ASSIGNMENTPROGRESS_ASSIGNMENT]: convertToAssignmentNotificationMessageProps,\n [NotificationType.ASSIGNMENTPROGRESS_COMPLETED]: convertToCompletedNotificationMessageProps,\n};\n\nexport const normalizeNotification = (notification: Notification): INotification | null => {\n const { type, id, timeCreate, data } = notification;\n const notificationMessageProps = notificationConvertersByType[type]?.({\n ...notification,\n subjectTitle: data.subject.title,\n courseGroupTitle: data.courseGroup?.title,\n });\n\n if (notificationMessageProps === null) {\n return null;\n }\n\n return {\n id: String(id),\n date: moment(timeCreate).format(),\n notificationMessageProps: notificationMessageProps,\n };\n};\n","import { Notification } from 'api/services/notifications';\nimport { ViewedNotificationWithExtraInfo } from 'types/notifications';\n\nimport { normalizeNotification } from './normalizeNotification';\n\nexport const normalizeViewedNotifications = (notifications: Notification[]): ViewedNotificationWithExtraInfo[] => {\n const baseNormalizedNotifications: ViewedNotificationWithExtraInfo[] = [];\n\n notifications.forEach((notification) => {\n const normalizedNotification = normalizeNotification(notification);\n if (normalizedNotification) {\n baseNormalizedNotifications.push({\n ...normalizedNotification,\n lessonId: notification.data.lesson,\n subjectId: notification.data.subject.id,\n courseGroupId: notification.data.courseGroup?.id,\n type: notification.type,\n });\n }\n });\n\n return baseNormalizedNotifications;\n};\n","import { ActionCreatorWithoutPayload, createSlice, SliceCaseReducers } from '@reduxjs/toolkit';\nimport {\n getFirstArchiveNotificationsPageAction,\n getNextArchiveNotificationsPageAction,\n getNotificationsPageAction,\n getUnreadMessagesCountAction,\n getUnreadNotificationsCountAction,\n} from 'store/actions/notifications';\nimport { normalizeViewedNotifications } from 'store/normalizers/notifications/normalizeArchiveNotifications';\nimport { normalizeNewNotifications } from 'store/normalizers/notifications/normalizeNewNotifications';\nimport { FetchStatus } from 'types/api';\nimport { NewNotificationWithExtraInfo, ViewedNotificationWithExtraInfo } from 'types/notifications';\n\nexport interface NotificationsState {\n unreadNotificationsCount: number;\n unreadMessagesCount: number;\n getUnreadNotificationsCountStatus: FetchStatus;\n getUnreadMessagesCountStatus: FetchStatus;\n newNotifications: NewNotificationWithExtraInfo[];\n getNotificationsPageStatus: FetchStatus;\n viewedNotifications: ViewedNotificationWithExtraInfo[];\n nextArchiveNotificationsPageLink: string | null;\n getArchiveNotificationsPageStatus: FetchStatus;\n error: unknown;\n}\n\nexport const initialState: NotificationsState = {\n unreadNotificationsCount: 0,\n unreadMessagesCount: 0,\n getUnreadNotificationsCountStatus: FetchStatus.INITIAL,\n getUnreadMessagesCountStatus: FetchStatus.INITIAL,\n newNotifications: [],\n getNotificationsPageStatus: FetchStatus.INITIAL,\n viewedNotifications: [],\n nextArchiveNotificationsPageLink: null,\n getArchiveNotificationsPageStatus: FetchStatus.INITIAL,\n error: null,\n};\n\nconst notificationsSlice = createSlice<NotificationsState, SliceCaseReducers<NotificationsState>>({\n name: 'notifications',\n initialState,\n reducers: {\n clearNotifications(state) {\n state.newNotifications = [];\n state.getNotificationsPageStatus = FetchStatus.INITIAL;\n state.viewedNotifications = [];\n state.getArchiveNotificationsPageStatus = FetchStatus.INITIAL;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(getUnreadNotificationsCountAction.pending, (state) => {\n state.getUnreadNotificationsCountStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getUnreadNotificationsCountAction.fulfilled, (state, { payload }) => {\n state.unreadNotificationsCount = payload.count;\n state.getUnreadNotificationsCountStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getUnreadNotificationsCountAction.rejected, (state, { error }) => {\n state.getUnreadNotificationsCountStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getUnreadMessagesCountAction.pending, (state) => {\n state.getUnreadMessagesCountStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getUnreadMessagesCountAction.fulfilled, (state, { payload }) => {\n state.getUnreadMessagesCountStatus = FetchStatus.FETCHED;\n\n state.unreadMessagesCount = payload.unreadMessagesCount;\n state.error = null;\n })\n .addCase(getUnreadMessagesCountAction.rejected, (state, { error }) => {\n state.getUnreadMessagesCountStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getNotificationsPageAction.pending, (state) => {\n state.getNotificationsPageStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getNotificationsPageAction.fulfilled, (state, { payload }) => {\n state.newNotifications = [...state.newNotifications, ...normalizeNewNotifications(payload)];\n state.getNotificationsPageStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getNotificationsPageAction.rejected, (state, { error }) => {\n state.getNotificationsPageStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getFirstArchiveNotificationsPageAction.pending, (state) => {\n state.getArchiveNotificationsPageStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getFirstArchiveNotificationsPageAction.fulfilled, (state, { payload }) => {\n state.viewedNotifications = [...state.newNotifications, ...normalizeViewedNotifications(payload.data)];\n state.nextArchiveNotificationsPageLink = payload.next;\n state.getArchiveNotificationsPageStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getFirstArchiveNotificationsPageAction.rejected, (state, { error }) => {\n state.getArchiveNotificationsPageStatus = FetchStatus.ERROR;\n state.error = error;\n });\n builder\n .addCase(getNextArchiveNotificationsPageAction.pending, (state) => {\n state.getArchiveNotificationsPageStatus = FetchStatus.FETCHING;\n state.error = null;\n })\n .addCase(getNextArchiveNotificationsPageAction.fulfilled, (state, { payload }) => {\n if (payload === null) {\n state.getArchiveNotificationsPageStatus = FetchStatus.FETCHED;\n state.error = null;\n return;\n }\n state.viewedNotifications = [...state.newNotifications, ...normalizeViewedNotifications(payload.data)];\n state.nextArchiveNotificationsPageLink = payload.next;\n state.getArchiveNotificationsPageStatus = FetchStatus.FETCHED;\n state.error = null;\n })\n .addCase(getNextArchiveNotificationsPageAction.rejected, (state, { error }) => {\n state.getArchiveNotificationsPageStatus = FetchStatus.ERROR;\n state.error = error;\n });\n },\n});\n\nconst { clearNotifications } = notificationsSlice.actions as Record<string, ActionCreatorWithoutPayload<string>>;\nexport { clearNotifications };\nexport const notificationsReducer = notificationsSlice.reducer;\n","import { NotificationViewType } from '@lms-elements/atomic';\nimport { Notification } from 'api/services/notifications';\nimport { NewNotificationWithExtraInfo, ViewedNotificationWithExtraInfo } from 'types/notifications';\n\nimport { normalizeNotification } from './normalizeNotification';\n\nexport const normalizeNewNotifications = (notifications: Notification[]): NewNotificationWithExtraInfo[] => {\n const baseNormalizedNotifications: ViewedNotificationWithExtraInfo[] = [];\n\n notifications.forEach((notification) => {\n const normalizedNotification = normalizeNotification(notification);\n if (normalizedNotification) {\n baseNormalizedNotifications.push({\n ...normalizedNotification,\n lessonId: notification.data.lesson,\n subjectId: notification.data.subject.id,\n courseGroupId: notification.data.courseGroup?.id,\n type: notification.type,\n });\n }\n });\n\n return baseNormalizedNotifications.map((notification) => ({\n ...notification,\n makeViewedOn: NotificationViewType.click,\n }));\n};\n","export const typeQuestions = [\n {\n title: 'Вопрос-тестовый',\n description: 'автопроверка',\n type: 'multiple',\n },\n {\n title: 'Тестовый, с текстовым ответом',\n description: 'автопроверка',\n type: 'open',\n },\n {\n title: 'Открытый вопрос - эссе',\n description: 'ручная проверка',\n type: 'detailed',\n },\n {\n title: 'Верно или нет',\n description: 'автопроверка',\n type: 'binary',\n },\n {\n title: 'Заполните пробелы',\n description: 'автопроверка',\n type: 'insert-words',\n },\n // {\n // title: 'Классификация',\n // description: 'автопроверка',\n // type: 'binary',\n // },\n];\n","import React, { useCallback, useMemo } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { CodifierElement, CodifierElementIconEnum } from '@lms-elements/atomic';\n\nimport { getDateWithTime } from 'utils/date';\n\nimport { IRefs, QuestionPoolProps } from './QuestionPool.types';\nimport { typeQuestions } from './utils';\n\nimport './QuestionPool.scss';\n\nconst cnQuestionPool = cn('question_pool');\n\nconst Refs: React.FC<IRefs> = React.memo(({ title, description, type, setIsQuestionType, setCanDrop }) => {\n const handleElementClick = useCallback(() => {\n setIsQuestionType(type);\n setCanDrop?.(false);\n }, [setCanDrop, setIsQuestionType, type]);\n\n return (\n <div>\n <div className={cnQuestionPool('codifier-element-wrapper')} onClick={handleElementClick}>\n <CodifierElement title={title} description={description} icon={CodifierElementIconEnum.question} />\n </div>\n </div>\n );\n});\n\nconst FUNC_STAB = () => undefined;\n\nexport const QuestionPool: React.FC<QuestionPoolProps> = ({\n setIsQuestionType = FUNC_STAB,\n isDisabled = false,\n autoCheckOnly = false,\n setCanDrop,\n revisions = [],\n}) => {\n const filteredQuestionTypes = useMemo(\n () => typeQuestions.filter((type) => (autoCheckOnly ? type.description === 'автопроверка' : true)),\n [autoCheckOnly],\n );\n\n const handleSelectQuestionType = useCallback(\n (type: string) => {\n if (!isDisabled) {\n setIsQuestionType(type);\n }\n },\n [isDisabled, setIsQuestionType],\n );\n\n return (\n <div className={cnQuestionPool()}>\n <div className={cnQuestionPool('head')}>\n <div className={cnQuestionPool('header')}>\n <span>Выберите нужный тип вопроса</span>\n </div>\n <div className={cnQuestionPool('questions', { disabled: isDisabled })}>\n {filteredQuestionTypes.map((value, index) => (\n <Refs\n title={value.title}\n description={value.description}\n key={`QuestionType_${index + 1}`}\n type={value.type}\n setIsQuestionType={handleSelectQuestionType}\n setCanDrop={setCanDrop}\n />\n ))}\n </div>\n </div>\n {revisions.length !== 0 && (\n <div className={cnQuestionPool('comment')}>\n <div className={cnQuestionPool('commentHeader')}>Комментарии:</div>\n <div className={cnQuestionPool('commentText')} id=\"scroll-bar\">\n {[...revisions].reverse().map((revision, index) => (\n <div className={cnQuestionPool('revision')} key={index}>\n <div className={cnQuestionPool('revision-date')}>\n {getDateWithTime(revision.dateCreate)}\n </div>\n <div className={cnQuestionPool('revision-comment')}>{revision.comment}</div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n","const IMAGE_ALLOWED_EXTENSIONS = [\n '.png',\n '.jpeg',\n '.gif',\n '.odg',\n '.otg',\n '.svg',\n '.jpg',\n '.heic',\n '.tif',\n '.tiff',\n '.bmp',\n];\nconst VIDEO_ALLOWED_EXTENSIONS = ['.mp4', '.webm', '.avi', '.mkv', '.mov'];\nconst DOCUMENT_ALLOWED_EXTENSIONS = [\n '.pdf',\n '.odt',\n '.ott',\n '.sxw',\n '.rtf',\n '.doc',\n '.docx',\n '.wpd',\n '.txt',\n '.html',\n '.ods',\n '.ots',\n '.sxc',\n '.xls',\n '.xlsx',\n '.csv',\n '.tsv',\n '.odp',\n '.otp',\n '.sxi',\n '.ppt',\n '.pages',\n '.pptx',\n '.numbers',\n];\nconst AUDIO_ALLOWED_EXTENSIONS = [\n '.aac',\n '.ac3',\n '.aif',\n '.aiff',\n '.amr',\n '.aob',\n '.ape',\n '.asf',\n '.aud',\n '.aud',\n '.awb',\n '.bin',\n '.bwg',\n '.cdr',\n '.flac',\n '.gpx',\n '.ics',\n '.iff',\n '.m',\n '.m3u',\n '.m3u8',\n '.m4a',\n '.m4b',\n '.m4p',\n '.m4r',\n '.mid',\n '.midi',\n '.mod',\n '.mp3',\n '.mpa',\n '.mpp',\n '.msc',\n '.msv',\n '.mts',\n '.nkc',\n '.ogg',\n '.ps',\n '.ra',\n '.ram',\n '.sdf',\n '.sib',\n '.sln',\n '.spl',\n '.srt',\n '.srt',\n '.vb',\n '.wav',\n '.wav',\n '.wave',\n '.wm',\n '.wma',\n '.wpd',\n '.xsb',\n '.xwb',\n];\nconst ARCHIVE_ALLOWED_EXTENSIONS = ['.zip', '.rar', '.7zip'];\nconst CUSTOM_ALLOWED_EXTENSIONS = ['.sb3'];\n\nexport const ACCEPT_FILE_TYPES = [\n ...IMAGE_ALLOWED_EXTENSIONS,\n ...VIDEO_ALLOWED_EXTENSIONS,\n ...DOCUMENT_ALLOWED_EXTENSIONS,\n ...AUDIO_ALLOWED_EXTENSIONS,\n ...ARCHIVE_ALLOWED_EXTENSIONS,\n ...CUSTOM_ALLOWED_EXTENSIONS,\n];\n\nexport const MAX_FILE_SIZE_MB = 200;\n\nexport const INPUT_ACCEPT_FILE_TYPES = ACCEPT_FILE_TYPES.concat(\n ACCEPT_FILE_TYPES.map((type) => type.toUpperCase()),\n).join(',');\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Field } from 'react-final-form';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport {\n Button,\n ButtonViewEnum,\n DropdownCustom,\n FieldDropdown,\n IDropdownType,\n Toggle,\n Tooltip,\n} from '@lms-elements/atomic';\nimport { Basket, DeleteIcon, Loading, NoteBlanks, Questions } from '@lms-elements/icons';\nimport { HistoryIcon } from 'assets';\nimport { ISelectedValues } from 'pages/QuestionCreationPage/QuestionCreationPage.types';\nimport { postQuestionFileAction } from 'store/actions/questionBank';\nimport { error } from 'store/reducers/error';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\nimport { UserRoles } from 'types/user';\n\nimport { getSubject } from 'components/Codifier/utils';\nimport { QuestionLocationDropdown } from 'components/QuestionLocationDropdown';\nimport { getDateWithTime } from 'utils/date';\nimport { getMaxFileSizeBytes } from 'utils/getMaxFileSizeBytes';\n\nimport { INPUT_ACCEPT_FILE_TYPES, MAX_FILE_SIZE_MB } from './PropertyMenu.constants';\n\nimport './PropertyMenu.scss';\n\nconst CnPropertyMenu = cn('propertyMenu');\n\nconst FILE_INPUT_PLACEHOLDER = 'Здесь появится ссылка на файл';\n\ninterface PropertyMenuProps {\n isMethodist?: boolean;\n onClickCancel: () => void;\n handleSelectLesson?: (values: ISelectedValues) => void;\n handleSelectSkills?: (values: ISelectedValues) => void;\n isForMaterials: boolean;\n isEditPage?: boolean;\n handleClickDelete?: () => void;\n toggleChecked?: boolean;\n selectedTopics?: number[];\n topicsLocation?: string;\n selectedSkills?: { ids: number[]; location: string };\n isDisabledButton?: boolean;\n canEdit?: boolean;\n isDisabledCancelButton?: boolean;\n onSelectSubject?: (subjectId: number) => void;\n initSelectedSubject?: number;\n isSearchPage?: boolean;\n onHistoryClick?: () => void;\n}\n\nconst LOCATION_PLACEHOLDER = 'Выберите тему';\n\nexport const PropertyMenu: React.FC<PropertyMenuProps> = ({\n isMethodist,\n isForMaterials,\n onClickCancel,\n handleSelectSkills,\n isEditPage = false,\n handleClickDelete = () => '',\n toggleChecked = true,\n handleSelectLesson,\n isDisabledButton,\n selectedTopics,\n topicsLocation,\n selectedSkills = { ids: [], location: '' },\n canEdit,\n isDisabledCancelButton,\n onSelectSubject,\n initSelectedSubject,\n isSearchPage,\n onHistoryClick,\n}) => {\n const dispatch = useDispatch();\n const history = useHistory();\n const validate = useCallback((value: string) => (value ? undefined : 'error'), []);\n\n const showButton = useMemo(() => !isEditPage || canEdit, [canEdit, isEditPage]);\n\n const codifierData = useAppSelector((store) => store.codifier.codifierData);\n const { detailedQuestion, fileLink, historyQuestion, postStatusQuestionFile } = useAppSelector(\n (store) => store.questions,\n );\n const subjectsMap = useAppSelector((store) => store.codifier.subjectsMap);\n\n const [historyVisible, setHistoryVisible] = useState(false);\n\n const handleHistoryClick = useCallback(() => {\n onHistoryClick?.();\n setHistoryVisible(true);\n }, [onHistoryClick]);\n\n const subjectDropdownOptions = useMemo(\n () =>\n Object.values(subjectsMap)\n .map((subject) => ({ id: subject.id, title: subject.title }))\n .sort((a, b) => (a.title > b.title ? 1 : -1)),\n [subjectsMap],\n );\n\n const [selectedSubject, setSelectedSubject] = useState<number>(\n initSelectedSubject ??\n detailedQuestion?.subjects?.[0].id ??\n Number(new URLSearchParams(history.location.search).get('subjects')),\n );\n\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n const length = fileLink.length;\n if (length) {\n setInputValue(fileLink[length - 1].url);\n }\n }, [fileLink, fileLink.length]);\n\n useEffect(() => {\n if (isEditPage && codifierData.length && detailedQuestion && initSelectedSubject === undefined) {\n setSelectedSubject(getSubject(codifierData, detailedQuestion.topics?.[0]?.id));\n }\n }, [codifierData, detailedQuestion, detailedQuestion.topics, initSelectedSubject, isEditPage]);\n\n const handleSelectSubject = useCallback(\n (value: { id: number }) => {\n onSelectSubject?.(value.id);\n setSelectedSubject(value.id);\n\n handleSelectLesson?.({\n location: '',\n ids: [],\n });\n\n const searchParams = new URLSearchParams(history.location.search);\n searchParams.set('subjects', String(value.id));\n history.push(`${history.location.pathname}?${searchParams.toString()}`);\n },\n [handleSelectLesson, history, onSelectSubject],\n );\n\n const [uploadProgress, setUploadProgress] = useState(0);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target?.files?.[0];\n const maxFileSizeInBytes = getMaxFileSizeBytes(MAX_FILE_SIZE_MB);\n\n if (file && file.size > maxFileSizeInBytes) {\n return dispatch(\n error({\n message: `${file.name} слишком большой! Размер файла не должен превышать ${MAX_FILE_SIZE_MB}МБ`,\n extra: {\n needHideButtons: true,\n isFrontend: false,\n },\n }),\n );\n }\n\n if (file) {\n dispatch(\n postQuestionFileAction({\n file: file,\n question: isEditPage ? detailedQuestion.id : undefined,\n onUploadProgress: setUploadProgress,\n }),\n );\n }\n };\n\n const handleClick = useCallback(() => {\n if (inputValue) {\n void navigator.clipboard.writeText(inputValue);\n }\n }, [inputValue]);\n\n const [hovered, setHovered] = useState(false);\n const [tooltipState, setTooltipState] = useState({\n top: -9999,\n left: -9999,\n });\n\n const handleDocumentScroll = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleInfoMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>) => {\n const info = e.currentTarget as HTMLDivElement;\n\n const { x, y, height, width } = info.getBoundingClientRect();\n setTooltipState({\n top: y + height,\n left: x + width,\n });\n\n document.addEventListener('touchmove', handleDocumentScroll);\n document.addEventListener('mousewheel', handleDocumentScroll);\n document.addEventListener('scroll', handleDocumentScroll);\n\n setHovered(true);\n },\n [handleDocumentScroll],\n );\n\n const handleInfoMouseLeave = useCallback(() => {\n setTooltipState({ top: -9999, left: -9999 });\n\n document.removeEventListener('touchmove', handleDocumentScroll);\n document.removeEventListener('mousewheel', handleDocumentScroll);\n document.removeEventListener('scroll', handleDocumentScroll);\n\n setHovered(false);\n }, [handleDocumentScroll]);\n\n const convertRole = (el: UserRoles) => {\n if (el === UserRoles.TEACHER) return 'Учитель';\n if (el === UserRoles.METHODIST) return 'Методист';\n if (el === UserRoles.PRINCIPAL) return 'Завуч';\n if (el === UserRoles.SUPPORT) return 'Поддержка';\n };\n\n return (\n <div className={CnPropertyMenu()}>\n <div className={CnPropertyMenu('header')}>\n <div className={CnPropertyMenu('title')}>Свойства</div>\n {historyVisible && (\n <div className={CnPropertyMenu('modal')}>\n <div className={CnPropertyMenu('window')}>\n <DeleteIcon className={CnPropertyMenu('del')} onClick={() => setHistoryVisible(false)} />\n <div className={CnPropertyMenu('titl')}>История изменений задания</div>\n <div className={CnPropertyMenu('flex-title')}>\n <div className={CnPropertyMenu('flex-date')}>Дата и время</div>\n <div className={CnPropertyMenu('flex-fio')}>ФИО</div>\n <div className={CnPropertyMenu('flex-date')}>Роль пользователя</div>\n <div className={CnPropertyMenu('flex-date')}>Действие</div>\n </div>\n <div className={CnPropertyMenu('flex-container')} id=\"scroll-bar\">\n {historyQuestion.map((element) => (\n <div key={element.datetime} className={CnPropertyMenu('flex')}>\n <div className={CnPropertyMenu('flex-date')}>\n {getDateWithTime(element.datetime)}\n </div>\n <div className={CnPropertyMenu('flex-fio')}>{element.user}</div>\n <div className={CnPropertyMenu('flex-date')}>\n {convertRole(element.userRoles[0])}\n </div>\n <div className={CnPropertyMenu('flex-date')}>\n {element.action === 'create' ? 'Создал' : 'Отредактировал'}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n <div className={CnPropertyMenu('buttons')}>\n {isEditPage && <HistoryIcon className={CnPropertyMenu('history')} onClick={handleHistoryClick} />}\n {showButton && (\n <Button\n type=\"submit\"\n view={ButtonViewEnum.action}\n size=\"l\"\n customClasses={CnPropertyMenu('save', { disabled: isDisabledButton })}\n disabled={isDisabledButton}\n >\n {isEditPage ? 'Редактировать' : 'Сохранить'}\n </Button>\n )}\n <Button\n view={ButtonViewEnum.bordered}\n size=\"l\"\n customClasses={CnPropertyMenu('cancel')}\n onClick={onClickCancel}\n disabled={isDisabledCancelButton}\n >\n {showButton ? 'Отмена' : 'Назад'}\n </Button>\n {isEditPage && canEdit && (\n <Button\n view={ButtonViewEnum.bordered}\n size={'l'}\n disabled={false}\n icon={<Basket />}\n onClick={handleClickDelete}\n customClasses={CnPropertyMenu('delete')}\n />\n )}\n </div>\n </div>\n <div className={CnPropertyMenu('row')}>\n <div className={CnPropertyMenu('name')}>Утвержден</div>\n <div className={CnPropertyMenu('toggle')}>\n <Field type=\"checkbox\" name=\"toggle\">\n {({ input }) => (\n <Toggle\n {...input}\n defaultChecked={toggleChecked}\n disabled={!isMethodist || isForMaterials || isSearchPage}\n handleToggleChange={input.onChange}\n />\n )}\n </Field>\n <div className={CnPropertyMenu('note')}>*будет доступен всем преподавателям</div>\n </div>\n </div>\n <div className={CnPropertyMenu('row')}>\n <div className={CnPropertyMenu('name')}>Расположение</div>\n <div className={CnPropertyMenu('location')}>\n <div className={CnPropertyMenu('location-subject-dropdown')}>\n <DropdownCustom\n name=\"subject\"\n options={subjectDropdownOptions}\n initValue={subjectsMap[selectedSubject]}\n validators={[]}\n placeholder={'Выберите предмет'}\n isField={false}\n type={IDropdownType.optionWithId}\n getValue={handleSelectSubject}\n isNeedSearch\n />\n </div>\n {Boolean(selectedSubject) && (\n <QuestionLocationDropdown\n handleSelectLesson={handleSelectLesson}\n selectedTopics={selectedTopics}\n topicsLocation={topicsLocation}\n name={'topicsLocation'}\n isEditPage={isEditPage}\n placeholder={LOCATION_PLACEHOLDER}\n selectedSubject={selectedSubject}\n />\n )}\n </div>\n </div>\n <div className={CnPropertyMenu('row')}>\n <div className={CnPropertyMenu('name')}>Сложность</div>\n <div className={CnPropertyMenu('complexity')}>\n <FieldDropdown\n validators={[validate]}\n name={'complexity'}\n options={['Лёгкая', 'Средняя', 'Тяжёлая']}\n needBlueIcon={true}\n placeholder={'Выберите из списка'}\n />\n </div>\n </div>\n <div className={CnPropertyMenu('row')}>\n <div className={CnPropertyMenu('name')}>Навыки</div>\n <div className={CnPropertyMenu('location')}>\n <QuestionLocationDropdown\n handleSelectSkill={handleSelectSkills}\n isSkill\n selectedSkills={selectedSkills}\n name={'skillsLocation'}\n disableValidation\n />\n </div>\n </div>\n <div className={CnPropertyMenu('row')}>\n <div className={CnPropertyMenu('name')} />\n <div className={CnPropertyMenu('file-container')}>\n <label className={CnPropertyMenu('file-input-label')}>\n {postStatusQuestionFile === FetchStatus.FETCHING ? (\n <div className={CnPropertyMenu('loading-icon')}>\n <Loading />\n </div>\n ) : (\n <>\n <span>Добавить файл</span>\n <input type=\"file\" accept={INPUT_ACCEPT_FILE_TYPES} onChange={handleChange} />\n </>\n )}\n </label>\n {postStatusQuestionFile === FetchStatus.FETCHING && (\n <progress className={CnPropertyMenu('upload-progress')} max={100} value={uploadProgress} />\n )}\n {postStatusQuestionFile === FetchStatus.FETCHED && (\n <div className={CnPropertyMenu('input-container')}>\n <input\n className={CnPropertyMenu('input')}\n type=\"text\"\n placeholder={FILE_INPUT_PLACEHOLDER}\n value={inputValue}\n title={FILE_INPUT_PLACEHOLDER}\n />\n <div className={CnPropertyMenu('icon', { copy: true })}>\n <NoteBlanks onClick={handleClick} />\n </div>\n <div\n className={CnPropertyMenu('icon')}\n onMouseEnter={handleInfoMouseEnter}\n onMouseLeave={handleInfoMouseLeave}\n onTouchStart={handleInfoMouseEnter}\n >\n <Questions />\n {hovered && (\n <>\n <div className={CnPropertyMenu('tooltip')} style={tooltipState}>\n <Tooltip withPointer={false}>\n Используйте ссылку, полученную после добавления файла, чтобы добавить\n его в ваш вопрос\n </Tooltip>\n </div>\n <div className={CnPropertyMenu('tooltip-pointer')} />\n </>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import { createSlice } from '@reduxjs/toolkit';\nexport interface INavigationState {\n isMobileMenuOpened: boolean;\n}\n\nconst initialState: INavigationState = {\n isMobileMenuOpened: false,\n};\n\nconst navigationSlice = createSlice({\n name: 'navigation',\n initialState,\n reducers: {\n setIsMobileMenuOpened: (state, { payload }) => {\n state.isMobileMenuOpened = payload;\n },\n },\n /**\n *\n * @param builder\n */\n extraReducers: (builder) => {},\n});\nexport const { setIsMobileMenuOpened } = navigationSlice.actions;\n\nexport const navigationReducer = navigationSlice.reducer;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport Latex from 'react-latex-next';\nimport { INSERT_WORD_REPLACE } from '@lms-elements/custom-editor';\nimport { IMultipleAnswerOption } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Expanded/MultipleAnswerFields';\nimport { questionType as typeOfQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Minimized/MinimizedQuestion.types';\nimport { convertToRaw, EditorState } from 'draft-js';\nimport convertToHtml from 'draftjs-to-html';\n\nimport { IFormValuesCreateQuestions, QuestionMarkup } from './QuestionCreationPage.types';\n\nenum EntityTypes {\n LATEX = 'LATEX',\n LINK = 'LINK',\n INSERT_WORD = 'INSERT_WORD',\n}\n\ninterface QuestionMarkupProps extends QuestionMarkup {\n id: number;\n}\n\nconst HiddenQuestionMarkup: React.FC<QuestionMarkupProps> = ({ questionHTML, answersHTML, id }) => {\n return (\n <div>\n <div id={`question-${id}_hidden-markup`}>\n <Latex>\n {questionHTML\n .replaceAll('< ', '< ')\n .replaceAll('>', '>')\n .replaceAll('<', '< ')\n .replaceAll('&', '& ')}\n </Latex>\n </div>\n <div id={`answers-${id}`}>\n {answersHTML.map((answerHTML, index) => (\n <div key={`answer-${index}`} id={`answer-${id}-${index}hidden-markup`}>\n <Latex>\n {answerHTML\n .replaceAll('< ', '< ')\n .replaceAll('>', '>')\n .replaceAll('<', '< ')\n .replaceAll('&', '& ')}\n </Latex>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const useEditorsToHTML = (\n values: IFormValuesCreateQuestions,\n questionType: typeOfQuestion,\n): {\n getMarkup: () => Omit<QuestionMarkup, 'id'>[];\n render: () => React.ReactPortal | undefined;\n} => {\n // Creation hiddenDiv\n const [hiddenNode, setHiddenNode] = useState<HTMLDivElement | undefined>(undefined);\n\n useEffect(() => {\n const hiddenDiv = document.createElement('div');\n hiddenDiv.style.display = 'none';\n setHiddenNode(hiddenDiv);\n document.querySelector('html')?.appendChild(hiddenDiv);\n\n return () => {\n document.querySelector('html')?.removeChild(hiddenDiv);\n };\n }, []);\n\n // render markups\n const questionEditors: {\n question: EditorState | null;\n answers?: (EditorState | null)[];\n }[] = useMemo(() => {\n return values.questions\n .map((question) => {\n const questionEditor = typeof question.question === 'object' ? question.question : null;\n let answerEditors = [] as (EditorState | null)[];\n if (question.answerOptions) {\n switch (questionType) {\n case 'multiple':\n case 'open':\n answerEditors = (question.answerOptions as IMultipleAnswerOption[])?.map(({ answer }) =>\n typeof answer === 'object' ? answer : null,\n );\n break;\n default:\n answerEditors = [] as EditorState[];\n break;\n }\n }\n\n return {\n question: questionEditor,\n answers: answerEditors,\n };\n })\n .filter(Boolean);\n }, [values.questions, questionType]);\n\n const render = useCallback(() => {\n const questionHtml = questionEditors.map((questionEditor) =>\n Object.entries(questionEditor).reduce((result, [key, value]) => {\n if (key === 'question') {\n if (value) {\n const editorState = value as EditorState;\n result.question = convertToHtml(\n convertToRaw(editorState.getCurrentContent()),\n undefined,\n undefined,\n ({ type, data }, text) => {\n if (type === EntityTypes.LATEX && hiddenNode) {\n return text as string;\n }\n if (type === EntityTypes.INSERT_WORD) {\n return INSERT_WORD_REPLACE;\n }\n\n if (type === EntityTypes.LINK) {\n const { url, target } = data as { url: string; target: string };\n const isTXT = url.includes('.txt');\n return `<a href=\"${url}\" target=\"${target}\" class=\"${\n isTXT ? 'download_txt_file' : ''\n }\">${text as string}</a>`;\n }\n return undefined;\n },\n );\n\n return result;\n }\n\n result.question = '<p></p>';\n\n return result;\n }\n\n if (key === 'answers' && Array.isArray(value)) {\n const editorStates = value;\n\n result.answers = editorStates.map((state) => {\n if (state) {\n return convertToHtml(\n convertToRaw(state.getCurrentContent()),\n undefined,\n undefined,\n ({ type }, text) => {\n if (type === EntityTypes.LATEX && hiddenNode) {\n return text as string;\n }\n\n return undefined;\n },\n );\n }\n\n return '<p></p>';\n });\n\n return result;\n }\n\n return result;\n }, {} as { question: string; answers: string[] }),\n );\n\n return (\n hiddenNode &&\n ReactDOM.createPortal(\n questionHtml.map((question, index) => (\n <HiddenQuestionMarkup\n key={index}\n questionHTML={question.question}\n answersHTML={question.answers}\n id={index}\n />\n )),\n hiddenNode,\n )\n );\n }, [hiddenNode, questionEditors]);\n\n // get markups\n const getMarkup = useCallback(() => {\n if (hiddenNode) {\n const hiddenChilden = Array.from(hiddenNode.children);\n\n const markups = hiddenChilden.map((markup) => {\n const [questionMarkup, answersMarkup] = Array.from(markup.children) as [HTMLDivElement, HTMLDivElement];\n\n const answersHTML = Array.from(answersMarkup.children).map((answer) => answer.innerHTML);\n\n return {\n answersHTML,\n questionHTML: questionMarkup.innerHTML,\n };\n });\n\n return markups;\n }\n\n return [] as Omit<QuestionMarkup, 'id'>[];\n }, [hiddenNode]);\n\n return {\n getMarkup,\n render,\n };\n};\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { IQuestionForTeacher } from '@lms-elements/test-task';\nimport { questionType as typeOfQuestion } from '@lms-elements/test-task/build/@types/packages/TestTask/src/Question/Minimized/MinimizedQuestion.types';\nimport { patchQuestionAction, postQuestionAction } from 'store/actions/questionBank';\n\nimport { IFormValuesCreateQuestions, ISelectedValues, QuestionMarkup } from './QuestionCreationPage.types';\nimport { useEditorsToHTML } from './useEditorsToHtml';\nimport { getPostQuestionData } from './utils';\n\ninterface SubmitParams {\n isEditPage: boolean;\n questionType: typeOfQuestion;\n idPath: number | undefined;\n selectedTopics: number[];\n selectedSkills: ISelectedValues;\n formValuesState: IFormValuesCreateQuestions;\n redirectPath?: string;\n fileIds: number[];\n materialIdToEdit: number;\n}\n\nexport enum EntityTypes {\n LATEX = 'LATEX',\n LINK = 'LINK',\n}\n\ninterface ReturnType {\n handleSubmitForm: (value: IFormValuesCreateQuestions) => void;\n getMarkup: () => QuestionMarkup[];\n render: () => React.ReactPortal | undefined;\n}\n\nexport const useSubmit = (params: SubmitParams): ReturnType => {\n const {\n isEditPage,\n questionType,\n idPath,\n selectedTopics,\n selectedSkills,\n formValuesState,\n redirectPath,\n fileIds,\n materialIdToEdit,\n } = params;\n const dispatch = useDispatch();\n\n const history = useHistory();\n\n const { getMarkup, render } = useEditorsToHTML(formValuesState, questionType);\n\n const handleSubmitForm = useCallback(\n (value: IFormValuesCreateQuestions) => {\n const markups = getMarkup();\n if (!isEditPage) {\n value.questions.forEach((question: IQuestionForTeacher, index) => {\n dispatch(\n postQuestionAction(\n getPostQuestionData(\n value,\n question,\n selectedTopics,\n selectedSkills.ids,\n questionType,\n markups[index],\n fileIds,\n ),\n ),\n );\n });\n } else {\n // @ts-ignore\n value.questions.forEach((question: IQuestionForTeacher, index) => {\n if (idPath) {\n dispatch(\n patchQuestionAction({\n id: idPath,\n materialId: materialIdToEdit,\n isFromMaterials: formValuesState.isFromMaterials,\n question: getPostQuestionData(\n value,\n question,\n selectedTopics,\n selectedSkills.ids,\n questionType,\n markups[index],\n ),\n }),\n );\n }\n });\n\n if (redirectPath) {\n history.push(redirectPath);\n }\n }\n },\n [\n getMarkup,\n isEditPage,\n dispatch,\n selectedTopics,\n selectedSkills.ids,\n questionType,\n fileIds,\n history,\n redirectPath,\n idPath,\n ],\n );\n\n return {\n handleSubmitForm,\n render,\n getMarkup,\n };\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\n\nimport './Input.scss';\n\nconst CnInput = cn('input');\n\ninterface IInputProps extends React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> {\n error?: boolean;\n as: 'textarea' | 'input';\n className?: string;\n}\n\nexport const Input: React.FC<IInputProps> = ({ error, as, className, ...props }) => {\n return React.createElement(as, { ...props, className: `${CnInput({ error })} ${className ? className : ''}` });\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Avatar } from '@lms-elements/atomic';\nimport { PatchTeacherMarkParams, PostAssignmentMark } from 'api/services/marks';\n\nimport { IStatusCardProps, StatusCard } from 'components/StatusCard';\n\nimport './StudentTab.scss';\n\nconst CnStudentTab = cn('studentTab');\n\ninterface IStudentTabProps {\n name: string;\n source: string;\n tabs: IStatusCardProps[];\n selectedTask: number;\n isAdaptation?: boolean;\n isOnline?: boolean;\n onTabChange?: (id: number) => void;\n onStudentClick?: () => void;\n onAcademicPerfomance?: () => void;\n onMarkDelete?: (markId: number, attemptMarkNumber?: number, teacherMark?: boolean) => void;\n onMarkChange?: (\n changeMarksOptions: (PatchTeacherMarkParams & {\n valueCanChange?: boolean;\n teacherMark?: boolean;\n attemptMarkNumber?: number;\n })[],\n ) => void;\n onMarkAdd?: (addMarksOptions: PostAssignmentMark[]) => void;\n onCancel?: () => void;\n}\n\nexport const StudentTab: React.FC<IStudentTabProps> = ({\n name,\n tabs,\n selectedTask,\n onTabChange,\n source,\n onStudentClick,\n onAcademicPerfomance,\n onMarkDelete,\n onMarkAdd,\n onMarkChange,\n isAdaptation,\n isOnline,\n onCancel,\n}) => {\n const [selected, setSelected] = useState(selectedTask);\n const handleCardClick = useCallback(\n (id: number) => {\n setSelected((prev) => {\n if (prev === id) {\n return prev;\n }\n\n onTabChange?.(id);\n\n return id;\n });\n },\n [onTabChange],\n );\n\n return (\n <div className={CnStudentTab()}>\n <div className={CnStudentTab('student')}>\n <div className={CnStudentTab('title')}>Ученик</div>\n <Avatar\n source={source}\n alt={'Фото'}\n name={name}\n onAvatarClick={onStudentClick}\n isOnAdaptation={isAdaptation}\n isOnline={isOnline}\n />\n </div>\n <div className={CnStudentTab('tabs')} id=\"scroll-bar\">\n {tabs.map((item) => (\n <div key={item.id} className={CnStudentTab('tab')}>\n <StatusCard\n {...item}\n isSelected={item.id === selected}\n onCardClick={handleCardClick}\n onMarkDelete={onMarkDelete}\n onMarkAdd={onMarkAdd}\n onMarkChange={onMarkChange}\n onCancel={onCancel}\n onAcademicPerfomance={onAcademicPerfomance}\n />\n </div>\n ))}\n </div>\n </div>\n );\n};\n","export const getPdfViewerUrl = (url: string): string => {\n const encodedUrl = btoa(url);\n return `/library/book-view/${encodedUrl}`;\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport moment from 'moment';\n\nimport './Timer.scss';\n\nconst CnTimer = cn('timer');\n\nexport interface TimerProps {\n deadline: string;\n timeToFinish?: number;\n onTimeIsLeft?: () => void;\n}\n\nconst TEN_MINUTES = 600;\nconst RADIUS = 54;\n\nexport const Timer: React.FC<TimerProps> = ({ deadline, onTimeIsLeft, timeToFinish = TEN_MINUTES }) => {\n const initialTime = useRef(moment(deadline).diff(moment(new Date()).format(), 'second'));\n const [time, setTime] = useState(moment(deadline).diff(moment(new Date()).format(), 'second'));\n\n useEffect(() => {\n const timer = setInterval(() => {\n setTime(moment(deadline).diff(moment(new Date()).format(), 'second'));\n }, 1000);\n\n initialTime.current = moment(deadline).diff(moment(new Date()).format(), 'second');\n\n return () => {\n clearInterval(timer);\n };\n }, [deadline]);\n\n const timeIsLeft = time <= 0;\n\n useEffect(() => {\n if (timeIsLeft) {\n onTimeIsLeft?.();\n }\n }, [timeIsLeft, onTimeIsLeft]);\n\n const seconds = Math.floor(time % 60) >= 0 ? Math.floor(time % 60) : 0;\n const minutes = Math.floor(time / 60) >= 0 ? Math.floor(time / 60) : 0;\n\n const percent = ((timeToFinish - minutes * 60 - seconds) / timeToFinish) * 100;\n\n // Показываем таймер, если осталось еще время и это последние 10 минут либо время на выполнение задания\n return initialTime.current > 0 && time <= timeToFinish ? (\n <div className={CnTimer()}>\n <svg>\n <circle\n className={CnTimer('circle')}\n cx=\"60\"\n cy=\"60\"\n r={RADIUS}\n strokeWidth={2}\n fill=\"none\"\n stroke=\"#EEF4FB\"\n />\n <circle\n r={RADIUS}\n cx=\"60\"\n cy=\"60\"\n strokeWidth={2}\n fill=\"none\"\n stroke={seconds <= 59 && minutes === 0 ? 'red' : '#0088E9'}\n strokeLinecap=\"round\"\n transform=\"rotate(-90 60 60)\"\n strokeDashoffset={`${(percent / 100) * 2 * Math.PI * RADIUS}`}\n strokeDasharray={2 * Math.PI * RADIUS}\n />\n </svg>\n <div className={CnTimer('text')}>\n {minutes === 0 && seconds === 0 ? (\n <div className={CnTimer('time', { isEnd: minutes === 0 && seconds === 0 })}>время вышло</div>\n ) : (\n <div className={CnTimer('time')}>\n {minutes >= 1 ? `${minutes} мин ` : ''} {minutes >= 1 && <br />} {seconds < 10 ? '0' : ''}\n {seconds} сек\n </div>\n )}\n {minutes === 0 && seconds === 0 ? '' : 'осталось'}\n </div>\n </div>\n ) : null;\n};\n","import React, { useCallback, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum, Checkbox } from '@lms-elements/atomic';\nimport { AttendanceStatus } from 'src-new/components/lms-elements/PerformanceTable/types';\nimport { AssignmentProgressStatus } from 'types/assignmentProgress';\nimport { AssignmentProgress, Task } from 'types/homework';\n\nimport { HomeworkStatus, HomeworkStatusProps } from 'components/HomeworkStatus';\nimport { HomeworkTable } from 'components/HomeworkTable';\n\nimport './AssignedHomeworkTable.scss';\n\nconst CnAssignedHomeworkTable = cn('assignedHomeworkTable');\n\ninterface AssignedHomeworkTableProps {\n homeworkStatus: HomeworkStatusProps;\n tasks: Task[];\n students: {\n id: number;\n firstName: string;\n lastName: string;\n photoUrl: string;\n status?: AttendanceStatus;\n }[];\n assignmentProgress?: AssignmentProgress[];\n withAttendance?: boolean;\n disabledButton?: boolean;\n onEditTaskButtonClick?: () => void;\n onRepeatTaskButtonClick?: () => void;\n onStudentCellClick?: (studentId: number) => void;\n onHomeworkClick?: (studentId: number, taskId: number) => void;\n}\n\nexport const AssignedHomeworkTable: React.FC<AssignedHomeworkTableProps> = ({\n homeworkStatus,\n tasks,\n students,\n assignmentProgress,\n withAttendance,\n disabledButton,\n onEditTaskButtonClick,\n onRepeatTaskButtonClick,\n onStudentCellClick,\n onHomeworkClick,\n}) => {\n const [showCompletedTasks, setShowCompletedTasks] = useState(true);\n const [showAssignedTasks, setShowAssignedTasks] = useState(true);\n const [showOnCheckTasks, setShowOnCheckTasks] = useState(true);\n const [showDeferredAssignedTasks, setShowDeferredAssignedTasks] = useState(true);\n\n const handleCheckboxChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const checkbox = e.target;\n const { name, checked } = checkbox;\n\n switch (name) {\n case AssignmentProgressStatus.COMPLETED:\n setShowCompletedTasks(checked);\n break;\n case AssignmentProgressStatus.ASSIGNED:\n setShowAssignedTasks(checked);\n break;\n case AssignmentProgressStatus.ON_CHECK:\n setShowOnCheckTasks(checked);\n break;\n case AssignmentProgressStatus.DEFERRED_ASSIGNMENT:\n setShowDeferredAssignedTasks(checked);\n break;\n default:\n break;\n }\n }, []);\n\n return (\n <section className={CnAssignedHomeworkTable()}>\n <header className={CnAssignedHomeworkTable('header')}>\n <div className={CnAssignedHomeworkTable('up-part')}>\n <div className={CnAssignedHomeworkTable('homeworkStatus')}>\n <HomeworkStatus {...homeworkStatus} withoutBorder={true} />\n </div>\n <div className={CnAssignedHomeworkTable('headerActionButtons')}>\n <Button\n view={ButtonViewEnum.bordered}\n size=\"l\"\n onClick={onRepeatTaskButtonClick}\n disabled={disabledButton}\n >\n Повторная выдача\n </Button>\n <Button\n view={ButtonViewEnum.action}\n size=\"l\"\n onClick={onEditTaskButtonClick}\n disabled={disabledButton}\n >\n Редактировать выдачу\n </Button>\n </div>\n </div>\n\n <div className={CnAssignedHomeworkTable('filterCheckboxes')}>\n <Checkbox\n label=\"Проверить\"\n name={AssignmentProgressStatus.ON_CHECK}\n onChange={handleCheckboxChange}\n defaultChecked\n />\n <Checkbox\n label=\"Не сдано\"\n name={AssignmentProgressStatus.ASSIGNED}\n onChange={handleCheckboxChange}\n defaultChecked\n />\n <Checkbox\n label=\"Оценено\"\n name={AssignmentProgressStatus.COMPLETED}\n onChange={handleCheckboxChange}\n defaultChecked\n />\n <Checkbox\n label=\"Автовыдача\"\n name={AssignmentProgressStatus.DEFERRED_ASSIGNMENT}\n onChange={handleCheckboxChange}\n defaultChecked\n />\n </div>\n </header>\n <div className={CnAssignedHomeworkTable('table-wrapper')}>\n <HomeworkTable\n tasks={tasks}\n students={students}\n assignmentProgress={assignmentProgress}\n isEditForm={false}\n showCompletedTasks={showCompletedTasks}\n showAssignedTasks={showAssignedTasks}\n showOnCheckTasks={showOnCheckTasks}\n showDeferredAssignedTasks={showDeferredAssignedTasks}\n withAttendance={withAttendance}\n onStudentClick={onStudentCellClick}\n onHomeworkClick={onHomeworkClick}\n />\n </div>\n </section>\n );\n};\n","export enum ENotificationEvents {\n 'TOAST_NOTIFICATION' = 'toast_notification',\n 'MODALS_NOTIFICATION' = 'modals_notification',\n 'DISCONNECTED' = 'disconnect',\n 'CONNECT_ERROR' = 'connect_error',\n 'CONNECTED' = 'connect',\n}\nexport const NOTIFICATION_PATH = '/notifier/ws';\nexport const MAX_RECONNECT_ATTEMPTS = 5;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useToaster } from '@frontend-modules/ui-kit';\nimport { setMeetingNotificationsList } from '@fsd-entities/online-lessons/model';\nimport { useAppSelector } from 'store/store';\n\nimport { getAccessToken } from 'utils/token';\n\nimport { ENotificationEvents, MAX_RECONNECT_ATTEMPTS, NOTIFICATION_PATH } from './AppSocketNotifications.config';\nimport { TModalsNotification, TToastNotificationData } from './AppSocketNotifications.types';\nimport { createSocket, Socket } from './AppSocketNotifications.utils';\n\nexport const AppSocketNotifications: React.FC = () => {\n const { id: uuid } = useAppSelector((state) => state?.user?.info) || {};\n const [notificationSocket, setNotificationSocket] = useState<Socket | null>(null);\n const [reconnectAttempts, setReconnectAttempts] = useState(0);\n\n const dispatch = useDispatch();\n const { showToast } = useToaster({\n showDuration: 3,\n });\n\n const addSocketEventHandlers = (socket: Socket) => {\n socket.on(ENotificationEvents.TOAST_NOTIFICATION, (data: TToastNotificationData) => {\n const toastConfig = {\n message: data.title,\n description: data.description,\n };\n showToast(toastConfig, data.status);\n });\n socket.on(ENotificationEvents.MODALS_NOTIFICATION, (data: TModalsNotification) => {\n dispatch(setMeetingNotificationsList(data.meetings_modals));\n });\n socket.on(ENotificationEvents.DISCONNECTED, () => {\n reconnectSocket();\n });\n socket.on(ENotificationEvents.CONNECT_ERROR, (err) => {\n if (reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {\n console.error('WS connection error: ', err);\n return;\n }\n reconnectSocket();\n });\n };\n const removeSocketEventHandlers = () => {\n if (notificationSocket) {\n notificationSocket.off(ENotificationEvents.TOAST_NOTIFICATION);\n notificationSocket.off(ENotificationEvents.MODALS_NOTIFICATION);\n notificationSocket.off(ENotificationEvents.DISCONNECTED);\n notificationSocket.off(ENotificationEvents.CONNECT_ERROR);\n }\n };\n\n const connectSocket = () => {\n const token = getAccessToken();\n\n if (notificationSocket && notificationSocket.connected) {\n return;\n }\n\n const socket = createSocket(NOTIFICATION_PATH, { token });\n setNotificationSocket(socket);\n\n addSocketEventHandlers(socket);\n socket.connect();\n setReconnectAttempts(0);\n };\n const disconnectSocket = () => {\n if (notificationSocket) {\n removeSocketEventHandlers();\n notificationSocket.disconnect();\n setNotificationSocket(null);\n }\n };\n const reconnectSocket = () => {\n if (notificationSocket) {\n setReconnectAttempts((prev) => prev + 1);\n disconnectSocket();\n connectSocket();\n }\n };\n\n useEffect(() => {\n if (uuid) {\n disconnectSocket();\n connectSocket();\n }\n\n return () => disconnectSocket();\n }, [uuid]);\n\n return null;\n};\n","import { socketHost } from 'constants/apiMethods';\n\nimport { io, Socket } from 'socket.io-client';\n\nexport const createSocket = (path: string, query: { token: string }): Socket => {\n return io(socketHost, {\n path: path,\n transports: ['websocket'],\n reconnection: false,\n query: query,\n });\n};\nexport { Socket };\n","import React, { useEffect, useState } from 'react';\nimport { NotificationCard, NotificationTimeIndicator } from '@fsd-entities/online-lessons';\nimport { useNotificationTimer } from '@fsd-features/online-lessons';\n\nimport { INotificationItemProps } from './NotificationItem.types';\n\nimport './NotificationItem.style.scss';\nexport const NotificationItem = React.memo<INotificationItemProps>((props) => {\n const { notification, isCollapsed, handleMeetingFinished, handleCollapseNotification } = props;\n const [isNotificationCollapsed, setIsNotificationCollapsed] = useState(isCollapsed);\n const [isCollapsedByClickOnce, setIsCollapsedByClickOnce] = useState(false);\n let timer: NodeJS.Timeout;\n const { isMeetingStarted, isMeetingFinished, time } = useNotificationTimer({\n startTime: notification.datetimeStart,\n endTime: notification.datetimeEnd,\n });\n\n const handleMouseEnter = () => {\n if (timer) {\n clearTimeout(timer);\n }\n if (isCollapsedByClickOnce) {\n setIsNotificationCollapsed(false);\n }\n };\n\n const handleMouseLeave = () => {\n if (isCollapsedByClickOnce) {\n timer = setTimeout(() => {\n setIsNotificationCollapsed(true);\n }, 100);\n }\n };\n\n const handleClickLocal = () => {\n if (!isCollapsedByClickOnce) {\n setIsCollapsedByClickOnce(true);\n handleCollapseNotification();\n }\n };\n\n useEffect(() => {\n if (isMeetingFinished) {\n handleMeetingFinished();\n }\n }, [isMeetingFinished]);\n\n useEffect(() => {\n setIsNotificationCollapsed(isCollapsed);\n if (isCollapsed) {\n setIsCollapsedByClickOnce(true);\n }\n }, [isCollapsed]);\n return (\n <div\n className={'notification-item'}\n onMouseEnter={isCollapsedByClickOnce ? handleMouseEnter : undefined}\n onMouseLeave={isCollapsedByClickOnce ? handleMouseLeave : undefined}\n >\n <NotificationTimeIndicator\n isCollapsed={isNotificationCollapsed}\n isMeetingStarted={isMeetingStarted}\n isMeetingFinished={isMeetingFinished}\n time={time}\n />\n <NotificationCard\n data={notification}\n isCollapsed={isNotificationCollapsed}\n isMeetingStarted={isMeetingStarted}\n handleCollapseBtnClick={handleClickLocal}\n />\n </div>\n );\n});\n","import { useEffect, useRef, useState } from 'react';\nimport dayjs from 'dayjs';\n\ntype TUseNotificationTimer = {\n isMeetingStarted: boolean;\n isMeetingFinished: boolean;\n time: string;\n};\ninterface IUseNotificationTimer {\n startTime: string;\n endTime: string;\n}\n\nexport const useNotificationTimer = ({ startTime, endTime }: IUseNotificationTimer): TUseNotificationTimer => {\n const [meetingTimeOffset, setMeetingTimeOffset] = useState(0);\n const [isMeetingStarted, setIsMeetingStarted] = useState(false);\n const [isMeetingFinished, setIsMeetingFinished] = useState(false);\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (timerRef.current) {\n clearInterval(timerRef.current); // очистка интервала в начале\n }\n\n const lessonStartTime = dayjs(startTime);\n const lessonEndTime = dayjs(endTime);\n\n const updateTimer = () => {\n const currentTime = dayjs();\n const timeBeforeStart = lessonStartTime.diff(currentTime, 'milliseconds');\n const timeAfterStart = currentTime.diff(lessonStartTime, 'milliseconds');\n\n // нужно округлять вручную в большую сторону, так как dayjs секунды округляет в меньшую,\n // что приводит к появлению двух нулей подряд в момент lessonStartTime\n const roundedTimeBeforeStart = Math.ceil(timeBeforeStart / 1000);\n const roundedTimeAfterStart = Math.floor(timeAfterStart / 1000);\n\n if (roundedTimeBeforeStart > 0) {\n // Отображаем время до начала встречи\n setMeetingTimeOffset(roundedTimeBeforeStart);\n setIsMeetingStarted(false);\n } else if (roundedTimeBeforeStart <= 0 && !isMeetingStarted) {\n // Когда встреча начинается, сразу же начинаем отсчёт с 0\n setIsMeetingStarted(true);\n setMeetingTimeOffset(roundedTimeAfterStart);\n } else if (isMeetingStarted && roundedTimeAfterStart >= 0) {\n // Отсчёт времени от начала встречи\n setMeetingTimeOffset(roundedTimeAfterStart);\n }\n\n // После окончания, останавливаем таймер\n if (currentTime.isAfter(lessonEndTime)) {\n setIsMeetingFinished(true);\n if (timerRef.current) {\n clearInterval(timerRef.current);\n }\n }\n };\n\n updateTimer();\n timerRef.current = setInterval(updateTimer, 1000); // обновление каждую секунду\n\n return () => {\n if (timerRef.current) {\n clearInterval(timerRef.current); // очистка интервала при размонтировании\n }\n };\n }, [startTime, endTime]);\n\n const formatTime = (totalSeconds: number) => {\n if (totalSeconds >= 0) {\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n\n return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n }\n\n return `--:--`;\n };\n\n return {\n isMeetingStarted,\n isMeetingFinished,\n time: formatTime(meetingTimeOffset),\n };\n};\n","import React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { deleteNotificationFromListByUrl, setCollapsedNotificationsList } from '@fsd-entities/online-lessons';\nimport { useRole } from 'hooks';\nimport { useAppSelector } from 'store/store';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport './OnlineLessonNotifications.style.scss';\nexport const OnlineLessonNotifications: React.FC = () => {\n const { meetingNotificationsList, collapsedNotificationsList } = useAppSelector((state) => state.onlineLessons);\n\n const dispatch = useDispatch();\n const { isTeacher, isStudent } = useRole();\n\n const hasOnlineLessons = !!meetingNotificationsList?.length;\n const showNotificationWindow = (isTeacher || isStudent) && hasOnlineLessons;\n\n const hasOverlay = useMemo(() => {\n const hasNotificationWithNoHideOption = meetingNotificationsList?.some(({ canHide }) => !canHide);\n const hasUncollapsedNotification = meetingNotificationsList?.some(\n ({ url }) => !collapsedNotificationsList.includes(url),\n );\n\n return hasNotificationWithNoHideOption || hasUncollapsedNotification;\n }, [collapsedNotificationsList, meetingNotificationsList]);\n\n const handleMeetingFinished = (url: string) => {\n dispatch(deleteNotificationFromListByUrl({ url }));\n };\n const handleCollapseNotification = (url: string) => {\n dispatch(setCollapsedNotificationsList([...collapsedNotificationsList, url]));\n };\n\n if (showNotificationWindow) {\n return (\n <div className={`online-lesson-notifications ${hasOverlay && 'with-overlay'}`}>\n <div className={'online-lesson-notifications__list'}>\n {meetingNotificationsList?.map((meetingNotification) => {\n const isNotificationItemCollapsed = collapsedNotificationsList.includes(\n meetingNotification.url,\n );\n return (\n <NotificationItem\n key={meetingNotification.url}\n isCollapsed={isNotificationItemCollapsed}\n notification={meetingNotification}\n handleCollapseNotification={handleCollapseNotification.bind(\n this,\n meetingNotification.url,\n )}\n handleMeetingFinished={handleMeetingFinished.bind(this, meetingNotification.url)}\n />\n );\n })}\n </div>\n </div>\n );\n } else {\n return null;\n }\n};\n","import React from 'react';\nimport { cn } from '@bem-react/classname';\nimport { Button, ButtonViewEnum } from '@lms-elements/atomic';\nimport { CloseBlue, Warning } from '@lms-elements/icons';\n\nimport './Alert.scss';\n\ninterface IAlertProps {\n errorInfo: string;\n errorDescriptions?: string[];\n errorExtra?: string;\n actionText: string;\n cancelText: string;\n actionCallback: React.MouseEventHandler<HTMLButtonElement>;\n cancelCallback: React.MouseEventHandler<HTMLButtonElement>;\n closeCallback?: React.MouseEventHandler<HTMLButtonElement>;\n withCloseButton?: boolean;\n showExtra?: boolean;\n showCancelButton?: boolean;\n needHideButtons?: boolean;\n needHideErrorIcon?: boolean;\n isBlockLesson?: boolean;\n isLastAttempt?: boolean;\n createCertificate?: boolean;\n}\n\nconst CnAlert = cn('alert');\nconst CnButton = cn('button');\n\nexport const Alert: React.FC<IAlertProps> = ({\n errorInfo,\n errorDescriptions,\n errorExtra,\n actionText,\n cancelText,\n actionCallback,\n cancelCallback,\n withCloseButton,\n closeCallback,\n showExtra,\n needHideErrorIcon,\n showCancelButton = true,\n needHideButtons,\n isBlockLesson,\n isLastAttempt,\n createCertificate,\n}) => {\n return (\n <div className={CnAlert({ modalWarning: isBlockLesson || isLastAttempt || createCertificate })}>\n {!needHideErrorIcon && <Warning className={CnAlert('icon')} />}\n <div className={CnAlert('info', { modalWarning: isBlockLesson || isLastAttempt || createCertificate })}>\n {errorInfo}\n </div>\n {errorDescriptions && errorDescriptions.length > 0 && (\n <div className={CnAlert('descriptions-wrapper')} key=\"error-descriptions\">\n {errorDescriptions.map((description, index) => (\n <p\n key={index}\n className={CnAlert('description', {\n modalWarning: isBlockLesson || isLastAttempt || createCertificate,\n })}\n >\n {description}\n </p>\n ))}\n </div>\n )}\n {showExtra && errorExtra && (\n <React.Fragment key={'extra'}>\n <div className={CnAlert('extra-label')}>Подробнее:</div>\n <div className={CnAlert('extra-wrapper')}>\n <pre className={CnAlert('extra')}>{errorExtra}</pre>\n </div>\n </React.Fragment>\n )}\n {!needHideButtons && (\n <div key=\"buttons\" className={CnAlert('buttons', { withoutCancelButton: !showCancelButton })}>\n <Button\n view={ButtonViewEnum.action}\n size=\"m\"\n onClick={actionCallback}\n customClasses={CnButton('action-button', { isLastAttempt: isLastAttempt })}\n >\n {actionText}\n </Button>\n {showCancelButton && (\n <Button view={ButtonViewEnum.bordered} size=\"m\" onClick={cancelCallback}>\n {cancelText}\n </Button>\n )}\n </div>\n )}\n {withCloseButton && (\n <button key=\"close-button\" className={CnAlert('close-button')} onClick={closeCallback}>\n <CloseBlue />\n </button>\n )}\n </div>\n );\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { useErrorProcess } from 'hooks/useErrorProcess';\nimport { clearError } from 'store/reducers/error';\nimport { useAppSelector } from 'store/store';\n\nimport { Alert } from 'components/Alert';\n\nimport './ErrorModal.scss';\n\nconst CnModal = cn('modal');\n\nexport const ErrorModal: React.FC = () => {\n const {\n descriptions,\n error,\n extra,\n isFrontend,\n needHideButtons,\n needHideErrorIcon,\n isBlockLesson,\n isOlBlocked,\n disableCancelButton = false,\n isLastAttemptDeliting,\n isCourseDeleting,\n customDescription,\n createCertificate,\n isTimezoneError,\n actionButtonClick,\n cancelButtonClick,\n } = useAppSelector((store) => store.error);\n\n const dispatch = useDispatch();\n const history = useHistory();\n\n const [showExtra, setShowExtra] = useState(false);\n\n useErrorProcess(error);\n\n const handleActionButtonClick = useCallback(() => {\n dispatch(clearError());\n\n if (actionButtonClick) {\n return actionButtonClick();\n }\n\n if (isFrontend) {\n return history.goBack();\n }\n\n document.location.reload();\n }, [actionButtonClick, dispatch, history, isFrontend]);\n\n const handleModalClose = useCallback(() => {\n dispatch(clearError());\n\n if (isFrontend) {\n history.goBack();\n }\n }, [dispatch, history, isFrontend]);\n\n const handleShowExtra = useCallback(() => {\n if (cancelButtonClick) cancelButtonClick();\n else setShowExtra(true);\n }, [cancelButtonClick]);\n\n const extraInfo = useMemo(() => (extra ? JSON.stringify(extra, null, 2) : undefined), [extra]);\n\n const actionText = useMemo(() => {\n switch (true) {\n case isTimezoneError:\n return 'Понятно';\n case createCertificate:\n return 'Утвердить';\n case isLastAttemptDeliting || isCourseDeleting:\n return 'Удалить';\n case !isBlockLesson:\n return 'Перезагрузить';\n case isOlBlocked:\n return 'Вернуться';\n default:\n return 'Скачать';\n }\n }, [createCertificate, isBlockLesson, isCourseDeleting, isTimezoneError, isLastAttemptDeliting, isOlBlocked]);\n\n const cancelText = useMemo(() => {\n switch (true) {\n case isLastAttemptDeliting || createCertificate || isCourseDeleting:\n return 'Отмена';\n case isBlockLesson:\n return 'Продолжить';\n default:\n return 'Подробнее';\n }\n }, [createCertificate, isBlockLesson, isCourseDeleting, isLastAttemptDeliting]);\n\n return (\n <>\n {error && (\n <div className={CnModal()}>\n <Alert\n errorInfo={error}\n errorDescriptions={customDescription ? [customDescription] : descriptions}\n errorExtra={extraInfo}\n actionText={actionText}\n cancelText={cancelText}\n actionCallback={handleActionButtonClick}\n cancelCallback={handleShowExtra}\n withCloseButton={!isFrontend}\n closeCallback={handleModalClose}\n showExtra={showExtra}\n needHideErrorIcon={needHideErrorIcon}\n showCancelButton={!showExtra && !disableCancelButton && !isTimezoneError}\n needHideButtons={needHideButtons}\n isBlockLesson={isBlockLesson}\n isLastAttempt={isLastAttemptDeliting || isCourseDeleting}\n createCertificate={createCertificate}\n />\n </div>\n )}\n </>\n );\n};\n","import { useEffect, useState } from 'react';\nconst CHAT_URI = process.env.REACT_APP_CHAT_TEST_HOST;\n/**\n *\n * @param isShow\n */\nexport const useOGChatWidget = (isShow: boolean | undefined): void => {\n const [isChatLoad, setChatLoad] = useState(false);\n\n const onChangeHasUnread = (value: boolean) => {\n const icoFavicon = document.getElementById('ico-favicon') as HTMLLinkElement;\n const svgFavicon = document.getElementById('svg-favicon') as HTMLLinkElement;\n const data = value ? 'unread_' : '';\n const ico = `/${data}favicon.ico`;\n const svg = `/${data}favicon.svg`;\n if (icoFavicon) icoFavicon.href = ico;\n if (svgFavicon) svgFavicon.href = svg;\n };\n\n useEffect(() => {\n const script = document.createElement('script');\n script.src = CHAT_URI ?? '';\n script.onload = () => setChatLoad(true);\n script.onerror = (e) => console.error('Script loading error:', e);\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script); // Удаляем скрипт при размонтировании компонента\n };\n }, []);\n\n useEffect(() => {\n if (isChatLoad) {\n const chatWidgetContainer = document.getElementById('chatWidgetContainer');\n if (chatWidgetContainer) {\n chatWidgetContainer?.remove();\n }\n const cont = document.createElement('div');\n cont.id = 'chatWidgetContainer';\n cont.style.position = 'fixed';\n cont.style.bottom = '0';\n cont.style.right = '0';\n cont.style.zIndex = '100';\n document.body.appendChild(cont);\n\n // @ts-ignore\n window?.ChatWidget?.startWidget({\n elementId: 'chatWidgetContainer',\n chatType: 'chat',\n isHide: !isShow,\n onChangeHasUnread,\n iconPlacement: {\n bottom: 20,\n right: 100,\n position: 'absolute',\n },\n });\n }\n }, [isChatLoad]);\n\n useEffect(() => {\n const isHide = !isShow;\n if (isChatLoad) {\n // @ts-ignore\n window?.ChatWidget?.updateWidgetConfig({\n onChangeHasUnread,\n isHide: isHide,\n });\n }\n\n if (isHide) {\n onChangeHasUnread(false);\n }\n }, [isChatLoad, isShow]);\n};\n","import { UserInfo } from 'api/services/user';\nimport { UserRoles } from 'types/user';\n\nconst getLink = (user_id: number | string, type: string, path: string) => {\n const url = new URL(`https://erp.og1.ru/${path}`);\n url.searchParams.set('modals', `[{\"type\":\"user_card\",\"id\":${user_id},\"userType\":\"${type}\",\"layer\":1}]`);\n return url.toString();\n};\n\nexport const gteUserLink = (userInfo: UserInfo): string | undefined => {\n const isStudent = userInfo?.userRoles?.includes(UserRoles.STUDENT);\n if (isStudent && userInfo.externalId) {\n return getLink(`\"${userInfo.externalId}\"`, 'student', 'choose/student');\n }\n return undefined;\n};\n","import React, { useEffect } from 'react';\nimport { useOGChatWidget } from '@fsd-shared/hooks/use-og-chat-widget';\nimport * as Sentry from '@sentry/react';\nimport { TARIFF_CURIOUS_TITLE } from 'App/constants';\nimport { useCheckPackageVersion } from 'hooks';\nimport { useAppSelector } from 'store/store';\n\nimport { gteUserLink } from './WithChatwoot.utils';\n\nexport const WithChatwoot: React.FC = ({ children }) => {\n const { userInfo } = useAppSelector((store) => ({\n userInfo: store.user.info,\n userInfofetchStatus: store.user.fetchStatus,\n logoutStatus: store.auth.logoutFetchStatus,\n }));\n\n useCheckPackageVersion();\n\n useEffect(() => {\n if (userInfo) {\n const { externalId, email, userRoles, firstName, lastName, patronymic, photoUrl } = userInfo;\n\n const link = gteUserLink(userInfo);\n if (externalId) {\n window.$chatwoot?.setUser(String(externalId), {\n name: `${lastName} ${firstName} ${patronymic}`,\n email: email || '',\n avatar_url: photoUrl,\n custom_attributes: {\n role: userRoles || [],\n userLink: link,\n },\n });\n Sentry.setUser({\n id: String(userInfo.externalId),\n email: userInfo.email,\n username: `${userInfo?.lastName ?? ''} ${userInfo?.firstName ?? ''}`,\n });\n }\n }\n }, [userInfo]);\n\n useOGChatWidget(userInfo && userInfo?.tariffTitle !== TARIFF_CURIOUS_TITLE);\n return <>{children}</>;\n};\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { SidebarMenu } from '@frontend-modules/elements';\nimport { useWindowResize } from '@frontend-modules/frontend-utils';\nimport { useShowSidebar } from '@fsd-entities/navigation/hooks';\nimport { getNavigationMenuPages, getNavigationOptionsButtons } from '@fsd-entities/navigation/utils';\nimport { useRole } from 'hooks';\nimport { getUnreadNewsStatusAction } from 'store/actions/news';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\n/**\n * @description меню навигации\n */\nexport const NavigationMenu: FC = () => {\n const history = useHistory();\n const location = useLocation();\n const { isTablet } = useWindowResize();\n const dispatch = useAppDispatch();\n const { hasUnreadNews, entities } = useAppSelector((store) => ({\n hasUnreadNews: store.news.hasUnreadNews,\n entities: store.meta.entities,\n }));\n const [isOpened, setIsOpened] = useState(true);\n const { userId, ...roles } = useRole();\n const isShowSideBar = useShowSidebar();\n\n const hasMeta = !!entities && Object.keys(entities).length > 0;\n const navbarItems = useMemo(() => (userId ? getNavigationMenuPages(roles, hasUnreadNews, hasMeta) : []), [\n roles,\n hasUnreadNews,\n userId,\n hasMeta,\n ]);\n\n const footerButtons = useMemo(() => getNavigationOptionsButtons(roles), [roles]);\n\n useEffect(() => {\n if (isTablet) {\n setIsOpened(false);\n }\n }, [isTablet]);\n\n useEffect(() => {\n if (userId) {\n void dispatch(getUnreadNewsStatusAction());\n }\n }, [userId]);\n\n return isShowSideBar ? (\n <SidebarMenu\n items={navbarItems}\n currentPath={location.pathname}\n onItemClick={(path) => {\n history.push(path);\n }}\n isOpen={isOpened}\n setIsOpen={setIsOpened}\n footerButtons={footerButtons}\n isTablet={isTablet}\n onLogoClick={() => history.push('/')}\n />\n ) : null;\n};\n","import { useLocation } from 'react-router-dom';\nimport { useWindowResize } from '@frontend-modules/frontend-utils';\n\nexport const useShowSidebar = (): boolean => {\n const { isMobile } = useWindowResize();\n const location = useLocation();\n\n const isNeedHideSideBar =\n isMobile ||\n location.pathname === '/signin' ||\n location.pathname === '/restore' ||\n location.pathname.includes('/question-edit') ||\n location.pathname.includes('/question-create') ||\n location.pathname.includes('/search-questions') ||\n location.pathname.includes('/materials/edit') ||\n location.pathname.includes('/materials/create') ||\n location.pathname.includes('/create-question') ||\n location.pathname.startsWith('/questions/edit') ||\n location.pathname.startsWith('/questions/create') ||\n location.pathname.startsWith('/o/auth') ||\n location.pathname.startsWith('/news/create') ||\n location.pathname.startsWith('/news/edit') ||\n location.pathname.includes('/anydesk');\n\n return !isNeedHideSideBar;\n};\n","import React, { FC, useLayoutEffect } from 'react';\n/** */\nexport const Login: FC = () => {\n useLayoutEffect(() => {\n window.open(`${process.env.REACT_APP_SSO_CLIENT}/?return=${window.location.origin}`, '_self');\n }, []);\n\n return null;\n};\n","import React, { FC, useLayoutEffect } from 'react';\n/** */\nexport const PasswordRecovery: FC = () => {\n useLayoutEffect(() => {\n window.open(`${process.env.REACT_APP_SSO_CLIENT}/restore/?return=${window.location.origin}`, '_self');\n }, []);\n return null;\n};\n","import React, { FC, useEffect } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppButton, AppModal } from '@frontend-modules/ui-kit';\nimport { useLogout } from '@fsd-shared/hooks';\n\nimport { INotAllowedModalProps } from './NotAllowedModal.types';\n\nimport './NotAllowedModal.styles.scss';\n\nconst CnReAuthModal = cn('re-auth-modal');\n\n/**\n * @param props\n */\nconst NotAllowedModal: FC<INotAllowedModalProps> = (props) => {\n const { isShowModal, setIsShowModal } = props;\n const { logout, isLogoutLoading } = useLogout();\n\n const onCloseModal = () => {\n setIsShowModal(false);\n // метод нативный так как компонент вне Router\n history.back();\n };\n\n const onReAuthClick = () => {\n logout();\n };\n\n return (\n <AppModal\n style={{ marginTop: 200 }}\n isShow={isShowModal}\n setShow={onCloseModal}\n title={'Недостаточно прав'}\n description={'У текущего аккаунта недостаточно прав для использования сервиса'}\n className={CnReAuthModal()}\n footer={\n <div className={CnReAuthModal('footer')}>\n <AppButton type={'outline'} label={'Назад'} onClick={onCloseModal} disabled={isLogoutLoading} />\n <AppButton\n type={'primary'}\n label={'Сменить аккаунт'}\n onClick={onReAuthClick}\n isLoading={isLogoutLoading}\n />\n </div>\n }\n />\n );\n};\n\nexport default NotAllowedModal;\n","import NotAllowedModal from './NotAllowedModal';\n\nexport default NotAllowedModal;\n","import React, { FC, useEffect, useState } from 'react';\nimport { cn } from '@bem-react/classname';\nimport { AppButton, AppInput, AppModal, AppText } from '@frontend-modules/ui-kit';\nimport { E_COLORS } from 'src-new/constants';\nimport { fetchLogin } from 'store/actions/auth';\nimport { useAppDispatch, useAppSelector } from 'store/store';\n\nimport { IReAuthModalProps } from './ReAuthModal.types';\n\nimport './ReAuthModal.styles.scss';\nconst CnReAuthModal = cn('re-auth-modal');\n\n/**\n * @description - модальное окно, ре-авторизации\n * если у пользователя сдохли токены - мы сначала предложим\n * ему заново авторизоваться - и только потом уже выкидываем.\n * @param props\n */\nconst ReAuthModal: FC<IReAuthModalProps> = (props) => {\n const { onLogin, onLogout, isShowReAuthModal, setIsShowReAuthModal } = props;\n const reAuthEmail = useAppSelector((state) => state?.auth.reAuthEmail);\n const dispatch = useAppDispatch();\n const isShowModal = isShowReAuthModal && !!reAuthEmail;\n\n const [password, setPassword] = useState('');\n const [isUpdating, setIsUpdating] = useState(false);\n const [isShowError, setShowError] = useState(false);\n const [unSuccessLoginCount, setUnSuccessLoginCount] = useState(3);\n\n const onCloseModal = () => {\n onLogout();\n setIsShowReAuthModal(false);\n };\n\n const onPasswordChange = (e: string) => {\n setPassword(e);\n };\n\n /** */\n const onLoginClick = () => {\n setShowError(false);\n if (reAuthEmail && password) {\n const authParams = { username: reAuthEmail, password };\n setIsUpdating(true);\n void dispatch(fetchLogin(authParams)).then((actionData) => {\n const { requestStatus } = actionData.meta;\n setIsUpdating(false);\n if (requestStatus === 'rejected') {\n setShowError(true);\n setUnSuccessLoginCount((prevState) => {\n const newCount = prevState - 1;\n if (newCount === 0) {\n onCloseModal();\n }\n return newCount;\n });\n }\n if (requestStatus === 'fulfilled') {\n setIsShowReAuthModal(false);\n // @ts-ignore\n onLogin(actionData.payload?.access);\n }\n });\n }\n };\n\n useEffect(() => {\n if (isShowReAuthModal) {\n if (!reAuthEmail) {\n onCloseModal();\n }\n }\n }, [isShowReAuthModal]);\n\n return (\n <AppModal\n isShow={isShowModal}\n setShow={onCloseModal}\n title={'Время сессии истекло'}\n className={CnReAuthModal()}\n description={'Пожалуйста, введите пароль, чтобы продолжить работу'}\n footer={\n <AppButton\n isLoading={isUpdating}\n type={'primary'}\n label={'Продолжить'}\n disabled={!password.length}\n onClick={onLoginClick}\n />\n }\n >\n <div className={CnReAuthModal('content')}>\n <AppInput\n type=\"password\"\n placeholder={'Введите пароль'}\n label={'Пароль'}\n errors={isShowError ? ['Проверьте введенный пароль'] : null}\n onChange={onPasswordChange}\n />\n {unSuccessLoginCount < 3 && isShowError && (\n <AppText\n color={E_COLORS.coral_color}\n textStyle={'Little'}\n text={`Осталось попыток: ${unSuccessLoginCount}`}\n />\n )}\n </div>\n </AppModal>\n );\n};\n\nexport default ReAuthModal;\n","import ReAuthModal from './ReAuthModal';\n\nexport default ReAuthModal;\n","import HttpInterceptor from './HttpInterceptor';\n\nexport default HttpInterceptor;\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport { useLogout } from '@fsd-shared/hooks';\nimport { authSsoStateResponder, authStateResponder } from 'api';\nimport NotAllowedModal from 'src-new/components/auth/NotAllowedModal';\nimport ReAuthModal from 'src-new/components/auth/ReAuthModal';\n\nimport { removeAllTokens } from 'utils/token';\n\nimport { IHttpInterceptorProps } from './HttpInterceptor.types';\n\nconst HttpInterceptor: FC<IHttpInterceptorProps> = (props) => {\n const { onReLoginStart } = props;\n const [isShowReAuthModal, setIsShowReAuthModal] = useState(false);\n const [isShowNotAllowedModal, setIsShowNotAllowedModal] = useState(false);\n // здесь хранятся экземпляры resolve для запоминания упавших в 401 запросов\n const [reAuthResolve, setReAuthResolve] = useState<Array<Function | null> | null>([]);\n const { logout } = useLogout();\n\n /**\n * @description - перезапрашиваем упавшие запросы\n */\n const onReAuthResolve = (accessToken?: string) => {\n if (reAuthResolve?.length) {\n reAuthResolve.forEach((resolve) => resolve?.(accessToken));\n setReAuthResolve(null); // Сбрасываем переменную состояния после использования\n }\n };\n\n /**\n * @description разлогиниваем пользователя\n */\n const onLogout = () => {\n logout();\n removeAllTokens();\n };\n\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n const on403Logout = () => {\n if (timerRef?.current) {\n clearInterval(timerRef?.current);\n }\n timerRef.current = setTimeout(() => {\n setIsShowNotAllowedModal(true);\n onReLoginStart();\n }, 500);\n };\n\n /**\n * @description обработка упавшего рефреша\n */\n const onRefreshError = () => {\n onReLoginStart();\n setIsShowReAuthModal(true);\n };\n\n /**\n * @description сохраняем упавшие запросы\n * @param resolve\n */\n const collectCallback = (resolve: Function) => {\n setReAuthResolve((prevState) => [...(prevState || []), resolve]);\n };\n\n useEffect(() => {\n authSsoStateResponder(onRefreshError);\n authStateResponder(collectCallback, on403Logout, false);\n }, []);\n\n return (\n <>\n {isShowReAuthModal ? (\n <ReAuthModal\n onLogin={onReAuthResolve}\n onLogout={onLogout}\n setIsShowReAuthModal={setIsShowReAuthModal}\n isShowReAuthModal={isShowReAuthModal}\n />\n ) : null}\n {isShowNotAllowedModal ? (\n <NotAllowedModal setIsShowModal={setIsShowNotAllowedModal} isShowModal={isShowNotAllowedModal} />\n ) : null}\n </>\n );\n};\n\nexport default HttpInterceptor;\n","import Modals from './Modals';\n\nexport default Modals;\n","import React, { useEffect, useState } from 'react';\nimport { mappedPopups } from 'src-new/components/layouts/Modals/Modals.config';\n\nimport { TMountedItem } from './Modals.types';\nimport { useGetPopupsState } from './Modals.utils';\n\n/**\n * @description - Слой рендера модалок\n * @constructor\n */\nconst Modals: React.FC = () => {\n const { mountedPopups, popups } = useGetPopupsState();\n\n const [currentComponentList, setCurrentComponentList] = useState<TMountedItem[]>([]);\n\n useEffect(() => {\n const mountedList: TMountedItem[] = mountedPopups?.map((item) => {\n return {\n component: mappedPopups[item.type],\n key: item.type,\n urlProps: item,\n } as TMountedItem;\n });\n setCurrentComponentList(mountedList);\n }, [mountedPopups]);\n\n return (\n <>\n {currentComponentList?.map((component, index) => {\n // @ts-ignore\n if (component.component && !component.urlProps?.['isHide']) {\n return React.createElement(component.component, {\n isOpen: !!popups.find((popup) => popup?.type === component?.key),\n key: `${component.key}-${index}`,\n // @ts-ignore\n layer: component.urlProps?.['layer'] || currentComponentList.length - index,\n // @ts-ignore\n urlProps: component.urlProps,\n // @ts-ignore\n zIndex: 1000 - component.urlProps?.['layer'] || 0,\n });\n }\n return null;\n })}\n </>\n );\n};\n\nexport default Modals;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Loader } from '@lms-elements/atomic';\nimport { AppButton, AppExpandableText, AppModal, AppText } from 'src-new/ui';\nimport { setAlertReadAction } from 'store/actions/alerts';\nimport { useAppSelector } from 'store/store';\nimport { FetchStatus } from 'types/api';\n\nimport './style.scss';\n\nexport const AlertModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const { alertsList, patchStatus, getStatus } = useAppSelector((store) => store.alerts);\n const [isShow, setIsShow] = useState(false);\n\n useEffect(() => {\n if (getStatus !== FetchStatus.FETCHING && patchStatus !== FetchStatus.FETCHING) {\n setIsShow(!!alertsList.length);\n }\n }, [alertsList, getStatus]);\n\n const setAlertRead = (id: number) => {\n dispatch(setAlertReadAction(id));\n };\n\n return (\n <AppModal isShow={isShow} closable={false} maskClosable={false} confirmLoading={true}>\n <div className={'alert-modal'}>\n <div className={'alert-modal__header'}>\n <AppText text={'Список уведомлений:'} fontStyle={'H2'} />\n </div>\n <div className={'alert-modal__list'}>\n {alertsList.map((alert) => (\n <div className={'alert-modal__list_alert'} key={`Alert${alert.id}`}>\n <div className={'alert-modal__list_alert-text'}>\n <AppText text={alert.title} fontStyle={'main'} />\n <AppExpandableText text={alert.text} />\n </div>\n <AppButton text={'Закрыть'} size={'middle'} onButtonClick={() => setAlertRead(alert.id)} />\n </div>\n ))}\n {(patchStatus === FetchStatus.FETCHING || getStatus === FetchStatus.FETCHING) && (\n <div className={'alert-modal__list-loader'}>\n <Loader />\n </div>\n )}\n </div>\n </div>\n </AppModal>\n );\n};\n","import React from 'react';\nimport { Route } from 'react-router-dom';\n\nexport const PrivateRoute: React.FC<{ path: string | string[]; isExact?: boolean }> = ({ path, children, isExact }) => {\n return (\n <Route exact={isExact} path={path}>\n {children}\n </Route>\n );\n};\n","import i18next from 'i18next';\n\nvoid i18next.init({\n i18nFormat: {\n localeData: 'ru',\n },\n lng: 'ru',\n debug: true,\n resources: {\n ru: {\n translation: {\n task_0: '{{count}} задание',\n task_1: '{{count}} задания',\n task_2: '{{count}} заданий',\n\n teacher_0: '{{count}} учитель',\n teacher_1: '{{count}} учителя',\n teacher_2: '{{count}} учителей',\n\n lesson_0: '{{count}} уроку',\n lesson_1: '{{count}} урокам',\n lesson_2: '{{count}} урокам',\n\n lessons_0: '{{count}} урок',\n lessons_1: '{{count}} урока',\n lessons_2: '{{count}} уроков',\n\n subject_0: '{{count}} предмета',\n subject_1: '{{count}} предметов',\n subject_2: '{{count}} предметов',\n\n calendarLesson_0: '{{count}} занятие',\n calendarLesson_1: '{{count}} занятия',\n calendarLesson_2: '{{count}} занятий',\n\n scheduleLesson_0: '{{count}} урок',\n scheduleLesson_1: '{{count}} урока',\n scheduleLesson_2: '{{count}} уроков',\n\n lessonWithoutCount_0: 'урок',\n lessonWithoutCount_1: 'урока',\n lessonWithoutCount_2: 'уроков',\n\n meeting_0: '{{count}} собрание',\n meeting_1: '{{count}} собрания',\n meeting_2: '{{count}} собраний',\n\n hours_0: '{{count}} час',\n hours_1: '{{count}} часа',\n hours_2: '{{count}} часов',\n\n hoursWithoutCount_0: 'час',\n hoursWithoutCount_1: 'часа',\n hoursWithoutCount_2: 'часов',\n\n minutesWithoutCount_0: 'минута',\n minutesWithoutCount_1: 'минуты',\n minutesWithoutCount_2: 'минут',\n\n questions_0: '{{count}} вопрос',\n questions_1: '{{count}} вопроса',\n questions_2: '{{count}} вопросов',\n\n unpublished_0: '{{count}} не утвержден',\n unpublished_1: '{{count}} не утверждено',\n unpublished_2: '{{count}} не утверждено',\n\n skill_0: '{{count}} навык',\n skill_1: '{{count}} навыка',\n skill_2: '{{count}} навыков',\n\n group_0: '{{count}} группа',\n group_1: '{{count}} группы',\n group_2: '{{count}} групп',\n\n student_0: '{{count}} ученик',\n student_1: '{{count}} ученика',\n student_2: '{{count}} учеников',\n\n topic_0: '{{count}} тема',\n topic_1: '{{count}} темы',\n topic_2: '{{count}} тем',\n\n selectedTypes_0: '{{count}} тип выбран',\n selectedTypes_1: '{{count}} типа выбраны',\n selectedTypes_2: '{{count}} типов выбраны',\n\n correctAnswers_0: '{{count}} правильным ответом',\n correctAnswers_1: '{{count}} правильными ответами',\n correctAnswers_2: '{{count}} правильными ответами',\n\n variableAnswers_0: '{{count}} вариант',\n variableAnswers_1: '{{count}} варианта',\n variableAnswers_2: '{{count}} вариантов',\n\n search_0: '{{count}} поиск',\n search_1: '{{count}} поиска',\n search_2: '{{count}} поисков',\n\n selectedQuestions_0: '{{count}} отобранный вопрос',\n selectedQuestions_1: '{{count}} отобранных вопроса',\n selectedQuestions_2: '{{count}} отобранных вопросов',\n\n attempt_0: '{{count}} попытка',\n attempt_1: '{{count}} попытки',\n attempt_2: '{{count}} попыток',\n\n correctAnswer_0: '{{count}} правильный ответ',\n correctAnswer_1: '{{count}} правильных ответа',\n correctAnswer_2: '{{count}} правильных ответов',\n\n question_0: '{{count}} вопроса',\n question_1: '{{count}} вопросов',\n question_2: '{{count}} вопросов',\n\n parallel_0: 'параллель',\n parallel_1: 'параллели',\n parallel_2: 'параллелей',\n\n class_0: 'класс',\n class_1: 'классы',\n class_2: 'классов',\n\n assignedTask_0: 'для {{count}} задания',\n assignedTask_1: 'для {{count}} заданий',\n assignedTask_2: 'для {{count}} заданий',\n\n studyWeeks_0: '{{count}} учебная неделя',\n studyWeeks_1: '{{count}} учебные недели',\n studyWeeks_2: '{{count}} учебных недель',\n\n studyDays_0: '{{count}} учебный день',\n studyDays_1: '{{count}} учебных дня',\n studyDays_2: '{{count}} учебных дней',\n\n rooms_0: '{{count}} комната',\n rooms_1: '{{count}} комнаты',\n rooms_2: '{{count}} комнат',\n },\n },\n },\n});\n","import React, { Suspense, useEffect, useRef, useState } from 'react';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';\nimport { useDispatch } from 'react-redux';\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\nimport { cn } from '@bem-react/classname';\nimport { ErrorBoundary } from '@frontend-modules/error-handler';\nimport { customEventEmitter, useWindowResize } from '@frontend-modules/frontend-utils';\nimport { AppSizeProvider } from '@frontend-modules/ui-kit';\nimport { AppSocketNotifications } from '@fsd-app/notification';\nimport { OnboardingProvider } from '@fsd-features/onboarding/hooks';\nimport { OnlineLessonNotifications } from '@fsd-widgets/online-lesson-notifications';\nimport { ErrorModal } from 'containers/ErrorModal';\nimport { PageLoader } from 'containers/PageLoader';\nimport { WithChatwoot } from 'containers/WithChatwoot';\nimport { NavigationMenu } from 'fsd/widgets/navigation';\nimport { useRole } from 'hooks';\nimport moment from 'moment';\nimport { Login } from 'pages/Login';\nimport { PasswordRecovery } from 'pages/PasswordRecovery';\nimport HttpInterceptor from 'src-new/components/auth/HttpInterceptor';\nimport { Modals } from 'src-new/components/layouts';\nimport { AlertModal } from 'src-new/containers/AlertModal';\nimport { getUid, parseQueryString } from 'src-new/utils';\nimport { getAlertsListAction } from 'store/actions/alerts';\nimport { setIsLoggedInAction } from 'store/actions/auth';\nimport { useAppSelector } from 'store/store';\n\nimport { PrivateRoute } from 'components/PrivateRoute';\nimport { getAccessToken, setAccessToken, setRefreshToken } from 'utils/token';\n\nimport 'moment-timezone';\nimport 'moment/locale/ru';\nimport 'i18n';\n\nimport { reCaptchaKey } from './constants';\n\nimport 'react-quill/dist/quill.snow.css';\nimport '@frontend-modules/error-handler/assets/styles/error-handler-styles.scss';\nimport 'root.scss';\nimport './App.scss';\n\nmoment.locale('ru');\nmoment.tz.load({\n version: '2021e',\n zones: [\n 'Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6',\n ],\n links: ['Europe/Moscow|W-SU'],\n});\nmoment.tz.setDefault('Europe/Moscow');\n\nconst CnApp = cn('app-page');\n\nconst StudentsSchedulePage = React.lazy(() => import('pages/StudentsSchedule'));\nconst QuestionBankPage = React.lazy(() => import('pages/QuestionBankPage'));\nconst QuestionCreationPage = React.lazy(() => import('pages/QuestionCreationPage'));\nconst QuestionSearchPage = React.lazy(() => import('pages/QuestionSearchPage'));\nconst TrainingQuestionSearchPage = React.lazy(() => import('pages/QuestionSearchPage/TrainingQuestionSearchPage'));\nconst SchedulePage = React.lazy(() => import('pages/SchedulePage'));\nconst NewSubjectsPage = React.lazy(() => import('pages/NewSubjects'));\nconst Settings = React.lazy(() => import('pages/Settings'));\nconst StudentTasks = React.lazy(() => import('pages/StudentTasks'));\nconst SubjectCoursePage = React.lazy(() => import('pages/SubjectCourse'));\nconst Subjects = React.lazy(() => import('pages/Subjects'));\nconst HomeworkPage = React.lazy(() => import('pages/HomeworkPage'));\nconst LessonCard = React.lazy(() => import('pages/LessonCard'));\nconst MaterialsCreationPage = React.lazy(() => import('pages/MaterialsCreationPage'));\nconst Person = React.lazy(() => import('pages/Person'));\nconst AcademicPerformance = React.lazy(() => import('pages/AcademicPerformance'));\nconst CodifierPage = React.lazy(() => import('pages/CodifierPage'));\nconst Proctoring = React.lazy(() => import('pages/ProctoringPage'));\nconst ProctoringRoom = React.lazy(() => import('pages/ProctoringRoom'));\nconst Course = React.lazy(() => import('pages/Course'));\nconst CourseChangingPage = React.lazy(() => import('pages/CourseChangingPage'));\nconst CourseCreationPage = React.lazy(() => import('pages/CourseCreationPage'));\nconst CourseEditor = React.lazy(() => import('pages/CourseEditor'));\nconst Courses = React.lazy(() => import('pages/Courses'));\nconst StudentsPage = React.lazy(() => import('pages/Students'));\nconst EventRoomCreationPage = React.lazy(() => import('pages/EventRoomCreationPage'));\nconst ReportingPage = React.lazy(() => import('pages/ReportingPage'));\nconst SingleNewsPage = React.lazy(() => import('pages/SingleNewsPage'));\nconst DownloadAnyDeskPage = React.lazy(() => import('@fsd-pages/DownloadAnyDesk'));\nconst Dashboard = React.lazy(() => import('pages/Dashboard'));\nconst AuthenticationPage = React.lazy(() => import('pages/OAuth'));\nconst OnlineLessonsPage = React.lazy(() => import('pages/OnlineLessonsPage'));\nconst StatisticsMonitoring = React.lazy(() => import('@fsd-pages/StatisticsMonitoring'));\nconst LibraryPage = React.lazy(() => import('pages/LibraryPage'));\nconst EditLibraryPage = React.lazy(() => import('pages/EditLibraryPage'));\nconst NewsPage = React.lazy(() => import('pages/NewsPage'));\nconst NewsCreationPage = React.lazy(() => import('pages/NewsCreationPage'));\nconst PDFViewer = React.lazy(() => import('pages/PDFViewer'));\nconst GroupActionsPage = React.lazy(() => import('pages/GroupActionsPage'));\n\nexport const App: React.FC = () => {\n const dispatch = useDispatch();\n const { isMobile } = useWindowResize();\n const { isLoggedIn } = useAppSelector((store) => ({\n isLoggedIn: store.auth.isLoggedIn,\n }));\n\n const intervalId = useRef<any>(null);\n const [isReAuth, setReAuth] = useState(false);\n\n const getAlerts = () => {\n dispatch(getAlertsListAction());\n };\n const { isStudent } = useRole();\n const clearAlertInterval = () => {\n clearInterval(intervalId.current);\n };\n\n // отключаем алерты при перелогине\n const onReLoginStart = () => {\n setReAuth(true);\n clearAlertInterval?.();\n };\n\n useEffect(() => {\n setReAuth(!isLoggedIn);\n if (isLoggedIn) {\n getAlerts();\n intervalId.current = setInterval(() => getAlerts(), 60 * 1000);\n }\n\n return () => {\n clearAlertInterval();\n };\n }, [isLoggedIn]);\n\n // нужно для авторизации через login as\n useEffect(() => {\n const { access, refresh } = parseQueryString(window.location.search);\n if (access) {\n setAccessToken(access);\n setRefreshToken(refresh ?? access);\n window.open('/', '_self');\n } else {\n const oldAccess = getAccessToken();\n if (oldAccess && !isLoggedIn) {\n dispatch(setIsLoggedInAction(true));\n }\n }\n }, []);\n\n useEffect(() => {\n const observer = customEventEmitter.Instance;\n const changeFavicon = (data: string) => {\n const icoFavicon = document.getElementById('ico-favicon') as HTMLLinkElement;\n const svgFavicon = document.getElementById('svg-favicon') as HTMLLinkElement;\n const ico = `${data}_favicon.ico`;\n const svg = `${data}_favicon.svg`;\n if (icoFavicon) icoFavicon.href = ico;\n if (svgFavicon) svgFavicon.href = svg;\n };\n\n void observer.listen('chat_unread_messages', changeFavicon);\n\n return () => {\n void observer.removeListen('chat_unread_messages');\n };\n }, []);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <HttpInterceptor onReLoginStart={onReLoginStart} />\n <AppSocketNotifications />\n <OnlineLessonNotifications />\n <WithChatwoot>\n <AppSizeProvider>\n <Router>\n {process.env.REACT_APP_IS_DEV === 'dev' && (\n <a href={'/storybook/index.html'} target=\"_blank\" rel=\"noreferrer\">\n <div className=\"storybook-logo\" />\n </a>\n )}\n {/*isReAuth нужен, что бы не показывать ошибки при перелогине */}\n {!isReAuth && <ErrorModal />}\n <AlertModal />\n <OnboardingProvider isReAuth={isReAuth} isMobile={isMobile}>\n <div className={CnApp('container', { isMobile })} data-onboarding={'privateLayout'}>\n <ErrorBoundary\n key={`NavigationMenu-element`}\n errorMessage=\"NavigationMenu has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <NavigationMenu />\n </ErrorBoundary>\n <div className={CnApp('content', { isMobile })}>\n <Modals />\n <Switch>\n <PrivateRoute path=\"/group-actions\" isExact>\n <ErrorBoundary\n key={`/group-actions`}\n errorMessage=\"GroupActionsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <GroupActionsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/news/edit/:newsId\" isExact>\n <ErrorBoundary\n key={`/news/edit/:newsId`}\n errorMessage=\"NewsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <NewsCreationPage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/news/create\" isExact>\n <ErrorBoundary\n key={`/news/create`}\n errorMessage=\"NewsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <NewsCreationPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/news/:newsId\">\n <ErrorBoundary\n key={`/news/:newsId`}\n errorMessage=\"SingleNewsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <SingleNewsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/news\">\n <ErrorBoundary\n key={`/news`}\n errorMessage=\"NewsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <NewsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/library/book-view/*\" isExact>\n <ErrorBoundary\n key={`/library/book-view/*`}\n errorMessage=\"PDFViewer has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <PDFViewer />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/library/create\" isExact>\n <ErrorBoundary\n key={`/library/create`}\n errorMessage=\"EditLibraryPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <EditLibraryPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/library/edit/:id\" isExact>\n <ErrorBoundary\n key={`/library/edit/:id`}\n errorMessage=\"EditLibraryPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <EditLibraryPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/library\" isExact>\n <ErrorBoundary\n key={`/library`}\n errorMessage=\"LibraryPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <LibraryPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/proctoring/edit/:roomId\">\n <ErrorBoundary\n key={`/proctoring/edit/:roomId`}\n errorMessage=\"EventRoomCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <EventRoomCreationPage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute path=\"/proctoring/create\">\n <ErrorBoundary\n key={`/proctoring/create`}\n errorMessage=\"EventRoomCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <EventRoomCreationPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/proctoring/event-room/:roomId\">\n <ErrorBoundary\n key={`/proctoring/event-room/:roomId`}\n errorMessage=\"ProctoringRoom has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <ProctoringRoom />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact\n path={[\n '/reporting/:reportingType/:mode/:id',\n '/reporting/:reportingType/:mode',\n '/reporting/:reportingType',\n '/reporting',\n ]}\n >\n <ErrorBoundary\n key={`/reporting/...`}\n errorMessage=\"ReportingPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <ReportingPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/students\">\n <ErrorBoundary\n key={`/students`}\n errorMessage=\"StudentsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <StudentsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/settings\">\n <ErrorBoundary\n key={`/settings`}\n errorMessage=\"Settings has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Settings />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/homework\">\n <ErrorBoundary\n key={`/homework`}\n errorMessage=\"HomeworkPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <HomeworkPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/students-schedule\">\n <ErrorBoundary\n key={`/students-schedule`}\n errorMessage=\"StudentsSchedulePage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <StudentsSchedulePage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/online-lessons\">\n <ErrorBoundary\n key={`/online-lessons`}\n errorMessage=\"OnlineLessonsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <OnlineLessonsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path={['/monitoring/:teacherId', '/monitoring']}>\n <ErrorBoundary\n key={`/monitoring`}\n errorMessage=\"StatisticsMonitoring has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <StatisticsMonitoring />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/schedule\">\n <ErrorBoundary\n key={`/schedule`}\n errorMessage=\"SchedulePage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <SchedulePage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/courses/:courseId/course-editor\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/courses/:courseId/course-editor`}\n errorMessage=\"CourseEditor has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <CourseEditor />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/materials/:editOrCreate/question-edit/:questionId\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/materials/:editOrCreate/question-edit/:questionId`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isFromMaterials isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/materials/:editOrCreate/question-create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/materials/:editOrCreate/question-create`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isFromMaterials />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/materials/:editOrCreate/fill-trainer/:materialIndex/question-create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/materials/:editOrCreate/fill-trainer/:materialIndex/question-create`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isFillTrainer />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path={[\n '/subjects/:subjectId/:lessonId/task/search-questions/:questionNum/create',\n '/subjects/:subjectId/:lessonId/task/edit/search-questions/:questionNum/:assignmentId/create',\n ]}\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/task/search-questions/:questionNum/...`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isSearchPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/task/search-questions/fill-trainer/:trainerId/create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/task/search-questions/fill-trainer/:trainerId/create`}\n errorMessage=\"TrainingQuestionSearchPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <TrainingQuestionSearchPage isFillTrainer />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/task/search-questions/fill-trainer/:trainerId/edit\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/task/search-questions/fill-trainer/:trainerId/edit`}\n errorMessage=\"TrainingQuestionSearchPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <TrainingQuestionSearchPage isFillTrainer isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/task/search-questions/:questionNum\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/task/search-questions/:questionNum`}\n errorMessage=\"QuestionSearchPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionSearchPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/task/edit/search-questions/:questionNum/:assignmentId\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/task/edit/search-questions/:questionNum/:assignmentId`}\n errorMessage=\"QuestionSearchPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionSearchPage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/tasks/create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/tasks/create`}\n errorMessage=\"SubjectCoursePage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <SubjectCoursePage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/tasks/edit/:assignmentId\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/tasks/edit/:assignmentId`}\n errorMessage=\"SubjectCoursePage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <SubjectCoursePage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/subjects/:subjectId/courses/create-course\">\n <ErrorBoundary\n key={`/subjects/:subjectId/courses/create-course`}\n errorMessage=\"CourseCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <CourseCreationPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/subjects/:subjectId/courses/edit-courses\">\n <ErrorBoundary\n key={`/subjects/:subjectId/courses/edit-courses`}\n errorMessage=\"CourseChangingPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <CourseChangingPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/subjects/:subjectId/courses/:courseId\">\n <ErrorBoundary\n key={`/subjects/:subjectId/courses/:courseId`}\n errorMessage=\"Course has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Course />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/anydesk\">\n <Suspense fallback={<PageLoader />}>\n <DownloadAnyDeskPage />\n </Suspense>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path={[\n '/event-room/:roomId/lessons/:lessonId/tasks/students/:studentId/:taskId',\n '/subjects/:subjectId/lessons/:lessonId/tasks/students/:studentId/:taskId',\n '/subjects/:subjectId/lessons/:lessonId/tasks/students/:studentId',\n ]}\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/lessons/:lessonId/tasks/students/:studentId`}\n errorMessage=\"StudentTasks has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <StudentTasks />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/subjects/:subjectId/courses\">\n <ErrorBoundary\n key={`/subjects/:subjectId/courses`}\n errorMessage=\"Courses has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Courses />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/materials/edit\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/materials/edit`}\n errorMessage=\"MaterialsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <MaterialsCreationPage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/materials/create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/materials/create`}\n errorMessage=\"MaterialsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <MaterialsCreationPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/additional_materials/edit\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/additional_materials/edit`}\n errorMessage=\"MaterialsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <MaterialsCreationPage isEditPage isAdditional />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path=\"/subjects/:subjectId/:lessonId/additional_materials/create\"\n >\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId/additional_materials/create`}\n errorMessage=\"MaterialsCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <MaterialsCreationPage isAdditional />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n\n <PrivateRoute isExact={false} path=\"/subjects/:subjectId/:lessonId\">\n <ErrorBoundary\n key={`/subjects/:subjectId/:lessonId`}\n errorMessage=\"LessonCard has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <LessonCard />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute\n isExact={false}\n path={['/profile/:role/:personId/:tab', '/profile/:role/:personId']}\n >\n <ErrorBoundary\n key={`/profile/:role/:personId/`}\n errorMessage=\"Person has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Person />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/codifier/create-question/:lessonId\">\n <ErrorBoundary\n key={`/codifier/create-question/:lessonId`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isFromCodifier />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/codifier\">\n <ErrorBoundary\n key={`/codifier`}\n errorMessage=\"CodifierPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <CodifierPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/questions/edit/:questionId\">\n <ErrorBoundary\n key={`/questions/edit/:questionId`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage isEditPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact={false} path=\"/questions/create\">\n <ErrorBoundary\n key={`/questions/create`}\n errorMessage=\"QuestionCreationPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionCreationPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/questions/select\">\n <ErrorBoundary\n key={`/questions/select`}\n errorMessage=\"QuestionBankPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionBankPage isSelectQuestion />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/questions\">\n <ErrorBoundary\n key={`/questions`}\n errorMessage=\"QuestionBankPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <QuestionBankPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/subjects\">\n <ErrorBoundary\n key={`/subjects`}\n errorMessage=\"Suspense has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Subjects />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/performance\">\n <ErrorBoundary\n key={`/performance`}\n errorMessage=\"AcademicPerformance has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <AcademicPerformance />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/proctoring\">\n <ErrorBoundary\n key={`/proctoring`}\n errorMessage=\"Proctoring has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <Proctoring />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <Route exact path=\"/signin\">\n <Suspense fallback={<PageLoader />}>\n <Login />\n </Suspense>\n </Route>\n <Route exact path=\"/restore\">\n <GoogleReCaptchaProvider reCaptchaKey={reCaptchaKey} language=\"ru\">\n <PasswordRecovery />\n </GoogleReCaptchaProvider>\n </Route>\n <PrivateRoute isExact path=\"/o/authentication\">\n <Suspense fallback={<PageLoader />}>\n <AuthenticationPage />\n </Suspense>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/new-subjects\">\n <ErrorBoundary\n key={`/new-subjects`}\n errorMessage=\"NewSubjectsPage has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <NewSubjectsPage />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n <PrivateRoute isExact path=\"/\">\n <ErrorBoundary\n key={`Dashboard page`}\n errorMessage=\"Dashboard has crashed\"\n showAlertReportBtn={!isStudent}\n >\n <Suspense fallback={<PageLoader />}>\n <PageLoader />\n <Dashboard />\n </Suspense>\n </ErrorBoundary>\n </PrivateRoute>\n </Switch>\n </div>\n </div>\n </OnboardingProvider>\n </Router>\n </AppSizeProvider>\n </WithChatwoot>\n </DndProvider>\n );\n};\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler): void => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals')\n .then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n })\n .catch(console.error);\n }\n};\n\nexport default reportWebVitals;\n","import { currentEnvironment, dsn, isLocalHost } from 'constants/apiMethods';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport * as Sentry from '@sentry/react';\nimport { App } from 'App';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { persistor, store } from 'store/store';\n\nimport reportWebVitals from './reportWebVitals';\n\nimport './root.scss';\nimport './index.scss';\n\nif (process.env.REACT_APP_IS_DEV !== 'dev' && !isLocalHost) {\n Sentry.init({\n dsn,\n tracesSampleRate: 1,\n replaysSessionSampleRate: 0.1,\n replaysOnErrorSampleRate: 1.0,\n integrations: [\n new Sentry.BrowserTracing(),\n new Sentry.Replay({\n maskAllText: false,\n maskAllInputs: false,\n blockAllMedia: false,\n }),\n ],\n environment: currentEnvironment,\n });\n}\n\nReactDOM.render(\n <React.StrictMode>\n <Provider store={store}>\n <PersistGate loading={null} persistor={persistor}>\n <App />\n </PersistGate>\n </Provider>\n </React.StrictMode>,\n document.getElementById('root'),\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}