touchstudy-core 0.1.169 → 0.1.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1536,6 +1536,8 @@ var admin_to_admin = "관리자에서 관리자에게";
1536
1536
  var teacher_to_admin = "교사에서 관리자에게";
1537
1537
  var admin_to_teachers = "관리자에서 교사들에게";
1538
1538
  var teacher_to_teachers = "교사에서 교사들에게";
1539
+ var student_required = "학생은 필수입니다";
1540
+ var teachers_required = "교사가 필요합니다";
1539
1541
  var lang_ko = {
1540
1542
  problem_solving: problem_solving,
1541
1543
  my_story: my_story,
@@ -2703,7 +2705,9 @@ var lang_ko = {
2703
2705
  admin_to_admin: admin_to_admin,
2704
2706
  teacher_to_admin: teacher_to_admin,
2705
2707
  admin_to_teachers: admin_to_teachers,
2706
- teacher_to_teachers: teacher_to_teachers
2708
+ teacher_to_teachers: teacher_to_teachers,
2709
+ student_required: student_required,
2710
+ teachers_required: teachers_required
2707
2711
  };
2708
2712
 
2709
2713
  var problem_solving$1 = "Problem Solving";
@@ -3894,6 +3898,8 @@ var admin_to_admin$1 = "Admin to admin";
3894
3898
  var teacher_to_admin$1 = "Teacher to admin";
3895
3899
  var admin_to_teachers$1 = "Admin to teachers";
3896
3900
  var teacher_to_teachers$1 = "Teacher to teachers";
3901
+ var student_required$1 = "Student is required";
3902
+ var teachers_required$1 = "Teachers are required";
3897
3903
  var lang_en = {
3898
3904
  problem_solving: problem_solving$1,
3899
3905
  my_story: my_story$1,
@@ -5063,7 +5069,9 @@ var lang_en = {
5063
5069
  admin_to_admin: admin_to_admin$1,
5064
5070
  teacher_to_admin: teacher_to_admin$1,
5065
5071
  admin_to_teachers: admin_to_teachers$1,
5066
- teacher_to_teachers: teacher_to_teachers$1
5072
+ teacher_to_teachers: teacher_to_teachers$1,
5073
+ student_required: student_required$1,
5074
+ teachers_required: teachers_required$1
5067
5075
  };
5068
5076
 
5069
5077
  i18n.use(initReactI18next).init({
@@ -6472,6 +6480,28 @@ var formatPhoneNumber = function formatPhoneNumber(phoneNumberString) {
6472
6480
  return phoneNumberString;
6473
6481
  };
6474
6482
 
6483
+ var cleanRichText = function cleanRichText(html, fontSize) {
6484
+ if (fontSize === void 0) {
6485
+ fontSize = "1rem";
6486
+ }
6487
+ var container = document.createElement('div');
6488
+ container.innerHTML = html;
6489
+ var tagsToRemove = ['script', 'style', 'img', 'video', 'audio', 'iframe', 'canvas', 'object', 'embed', 'table'];
6490
+ tagsToRemove.forEach(function (tag) {
6491
+ container.querySelectorAll(tag).forEach(function (el) {
6492
+ return el.remove();
6493
+ });
6494
+ });
6495
+ var textTags = ['p', 'div', 'section', 'article', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'address', 'aside', 'span', 'a', 'strong', 'b', 'em', 'i', 'u', 'small', 'abbr', 'cite', 'code', 'mark', 'sub', 'sup', 'time', 'kbd', 'samp', 'var', 'q', 'dfn', 'br', 'label', 'legend', 'summary', 'dt', 'dd', 'caption', 'figcaption', 'title'];
6496
+ container.querySelectorAll('*').forEach(function (el) {
6497
+ if (textTags.includes(el.tagName)) {
6498
+ el.style.fontSize = fontSize;
6499
+ el.style.lineHeight = "1";
6500
+ }
6501
+ });
6502
+ return container.innerHTML;
6503
+ };
6504
+
6475
6505
  var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
6476
6506
  var currentDayOfWeek = moment.utc(utcDateTime).weekday();
6477
6507
  var diff = dayOfWeek - currentDayOfWeek;
@@ -15778,15 +15808,18 @@ var NoteItem = function NoteItem(_ref) {
15778
15808
  var handleItemClick = function handleItemClick() {
15779
15809
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(data);
15780
15810
  };
15811
+ var cleanedRichText = useMemo(function () {
15812
+ return cleanRichText(data.content);
15813
+ }, [data.content]);
15781
15814
  useEffect(function () {
15782
15815
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
15783
- }, []);
15816
+ }, [cleanedRichText, JSON.stringify(data)]);
15784
15817
  useEffect(function () {
15785
15818
  if (window.MathJax) {
15786
15819
  var _window$MathJax;
15787
15820
  (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
15788
15821
  }
15789
- }, [data.content]);
15822
+ }, [cleanedRichText]);
15790
15823
  return React__default.createElement(Box, Object.assign({}, NoteItemStyles.root, {
15791
15824
  onClick: handleItemClick,
15792
15825
  sx: {
@@ -15818,7 +15851,7 @@ var NoteItem = function NoteItem(_ref) {
15818
15851
  overflow: "hidden"
15819
15852
  },
15820
15853
  dangerouslySetInnerHTML: {
15821
- __html: data.content || ""
15854
+ __html: cleanedRichText
15822
15855
  }
15823
15856
  }))), React__default.createElement(Box, null, (isAdmin || data.isOwned) && React__default.createElement(ClickAwayListener, {
15824
15857
  onClickAway: onClose
@@ -15931,6 +15964,9 @@ var NoteItemList = function NoteItemList(_ref) {
15931
15964
  onView(data);
15932
15965
  };
15933
15966
  var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == NoteType.TeacherToAllAdmin || data.type == NoteType.TeacherToTeachers);
15967
+ var cleanedRichText = useMemo(function () {
15968
+ return cleanRichText(data.content);
15969
+ }, [data.content]);
15934
15970
  useEffect(function () {
15935
15971
  if (window.MathJax) {
15936
15972
  var _window$MathJax;
@@ -15965,7 +16001,7 @@ var NoteItemList = function NoteItemList(_ref) {
15965
16001
  overflow: "hidden"
15966
16002
  },
15967
16003
  dangerouslySetInnerHTML: {
15968
- __html: data.content
16004
+ __html: cleanedRichText
15969
16005
  }
15970
16006
  })), React__default.createElement(TableCell$1, {
15971
16007
  className: "text-nowrap"
@@ -16442,9 +16478,14 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16442
16478
  var field = _ref3.field;
16443
16479
  return React__default.createElement(StudentSelector, {
16444
16480
  value: field.value,
16445
- onChange: function onChange(val) {
16446
- setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value);
16447
- setFieldValue("student", val);
16481
+ onChange: function (val) {
16482
+ try {
16483
+ return Promise.resolve(setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value)).then(function () {
16484
+ return Promise.resolve(setFieldValue("student", val)).then(function () {});
16485
+ });
16486
+ } catch (e) {
16487
+ return Promise.reject(e);
16488
+ }
16448
16489
  },
16449
16490
  isMulti: false
16450
16491
  });
@@ -16455,7 +16496,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16455
16496
  lineHeight: "11.93px",
16456
16497
  mt: 1,
16457
16498
  color: "#F34B4B"
16458
- }, errors.studentId)), (type === NoteType.AdminToAllAdmin || type === NoteType.AdminToAllTeacher) && React__default.createElement(FormControl, {
16499
+ }, t(errors.studentId))), (type === NoteType.AdminToAllAdmin || type === NoteType.AdminToAllTeacher) && React__default.createElement(FormControl, {
16459
16500
  className: "w-100"
16460
16501
  }, React__default.createElement(FormLabel, {
16461
16502
  className: "fw-medium",
@@ -16492,12 +16533,17 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16492
16533
  var field = _ref4.field;
16493
16534
  return React__default.createElement(TeacherSelector$1, {
16494
16535
  value: field.value,
16495
- onChange: function onChange(val) {
16496
- var _val$map, _val$map2;
16497
- setFieldValue("userIds", (_val$map = val === null || val === void 0 ? void 0 : (_val$map2 = val.map) === null || _val$map2 === void 0 ? void 0 : _val$map2.call(val, function (i) {
16498
- return i.value;
16499
- })) != null ? _val$map : []);
16500
- setFieldValue("users", val != null ? val : []);
16536
+ onChange: function (val) {
16537
+ try {
16538
+ var _val$map, _val$map2;
16539
+ return Promise.resolve(setFieldValue("userIds", (_val$map = val === null || val === void 0 ? void 0 : (_val$map2 = val.map) === null || _val$map2 === void 0 ? void 0 : _val$map2.call(val, function (i) {
16540
+ return i.value;
16541
+ })) != null ? _val$map : [])).then(function () {
16542
+ return Promise.resolve(setFieldValue("users", val != null ? val : [])).then(function () {});
16543
+ });
16544
+ } catch (e) {
16545
+ return Promise.reject(e);
16546
+ }
16501
16547
  },
16502
16548
  isDisabled: !!selectedNote,
16503
16549
  exceptMe: true,
@@ -16511,7 +16557,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16511
16557
  lineHeight: "11.93px",
16512
16558
  mt: 1,
16513
16559
  color: "#F34B4B"
16514
- }, errors.userIds)), React__default.createElement(Stack, null, React__default.createElement("label", {
16560
+ }, t(errors.userIds))), React__default.createElement(Stack, null, React__default.createElement("label", {
16515
16561
  htmlFor: "content-question",
16516
16562
  className: styles["form-label"] + " " + styles$5["form-label-dialog"]
16517
16563
  }, t("incorrect_answer_note_contents")), React__default.createElement(Box, {
@@ -16542,7 +16588,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16542
16588
  lineHeight: "11.93px",
16543
16589
  mt: 1,
16544
16590
  color: "#F34B4B"
16545
- }, errors.content), React__default.createElement(Box, {
16591
+ }, t(errors.content)), React__default.createElement(Box, {
16546
16592
  marginBottom: "4px"
16547
16593
  })))), React__default.createElement(DialogActions$1, {
16548
16594
  sx: {
@@ -16807,7 +16853,8 @@ var NoteList = function NoteList(_ref) {
16807
16853
  open: openConfirmNote,
16808
16854
  toggle: handleCloseConfirmStudentNoteDialog,
16809
16855
  onConfirm: handleSaveStudentNote,
16810
- text: t("are_you_sure_to_create_student_parent_note")
16856
+ text: t("are_you_sure_to_create_student_parent_note"),
16857
+ zIndex: 1300
16811
16858
  }), React__default.createElement(ConfirmDeleteDialog, {
16812
16859
  open: openDeleteNoteDialog,
16813
16860
  toggle: handleCloseDeleteDialog,
@@ -17667,7 +17714,7 @@ var ExamResultItem = function ExamResultItem(_ref) {
17667
17714
  };
17668
17715
  useEffect(function () {
17669
17716
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
17670
- }, []);
17717
+ }, [JSON.stringify(data)]);
17671
17718
  var examTime = useMemo(function () {
17672
17719
  return utcToLocalTime(data.startTime, "HH:mm") + " ~ " + utcToLocalTime(data.endTime, "HH:mm");
17673
17720
  }, [data.startTime, data.endTime]);
@@ -23228,7 +23275,7 @@ var TextbookResultItem = function TextbookResultItem(_ref) {
23228
23275
  };
23229
23276
  useEffect(function () {
23230
23277
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
23231
- }, []);
23278
+ }, [JSON.stringify(data)]);
23232
23279
  return React__default.createElement(Stack, {
23233
23280
  height: "100%",
23234
23281
  direction: "column",
@@ -26174,7 +26221,7 @@ var CourseAttendanceItem = function CourseAttendanceItem(_ref) {
26174
26221
  var lastAttendance = timAgo(data.lastAttendanceDate, t);
26175
26222
  useEffect(function () {
26176
26223
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
26177
- }, []);
26224
+ }, [JSON.stringify(data)]);
26178
26225
  return React__default.createElement(Stack, {
26179
26226
  direction: "column",
26180
26227
  px: 2,
@@ -39114,10 +39161,19 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39114
39161
  onLoad = _ref.onLoad;
39115
39162
  var _useTranslation = useTranslation(),
39116
39163
  t = _useTranslation.t;
39164
+ var announcementData = convertAnnouncementData(t, role, data);
39165
+ var cleanedRichText = useMemo(function () {
39166
+ return cleanRichText(announcementData.content);
39167
+ }, [announcementData.content]);
39168
+ useEffect(function () {
39169
+ if (window.MathJax) {
39170
+ var _window$MathJax;
39171
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
39172
+ }
39173
+ }, [cleanedRichText]);
39117
39174
  useEffect(function () {
39118
39175
  onLoad();
39119
- }, []);
39120
- var announcementData = convertAnnouncementData(t, role, data);
39176
+ }, [cleanedRichText, data.createdAt, announcementData.action, announcementData.name]);
39121
39177
  return React__default.createElement(Fragment$1, null, renderLink(React__default.createElement(ListItemButton, {
39122
39178
  sx: _extends({
39123
39179
  py: 1.5,
@@ -39140,14 +39196,18 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39140
39196
  sx: {
39141
39197
  marginBlock: 0
39142
39198
  },
39143
- primary: React__default.createElement(Typography, null, React__default.createElement(Typography, {
39199
+ primary: React__default.createElement(Box, null, React__default.createElement(Typography, {
39144
39200
  fontWeight: 600,
39145
39201
  display: "inline-block"
39146
39202
  }, announcementData.name), announcementData.action && React__default.createElement(Typography, {
39147
39203
  display: "inline-block",
39148
39204
  px: "4px"
39149
- }, announcementData.action + ":"), React__default.createElement(Typography, {
39205
+ }, announcementData.action + ":"), React__default.createElement(Box, {
39150
39206
  display: "inline-block",
39207
+ sx: {
39208
+ verticalAlign: "middle"
39209
+ }
39210
+ }, React__default.createElement(Box, {
39151
39211
  sx: {
39152
39212
  display: "-webkit-box",
39153
39213
  lineClamp: 2,
@@ -39157,9 +39217,9 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39157
39217
  overflow: "hidden"
39158
39218
  },
39159
39219
  dangerouslySetInnerHTML: {
39160
- __html: announcementData.content || ""
39220
+ __html: cleanedRichText
39161
39221
  }
39162
- })),
39222
+ }))),
39163
39223
  secondary: React__default.createElement(Typography, {
39164
39224
  variant: "caption",
39165
39225
  sx: {
@@ -40511,5 +40571,5 @@ var LayoutContext = function LayoutContext(_ref) {
40511
40571
  });else return React__default.createElement(Fragment$1, null, children);
40512
40572
  };
40513
40573
 
40514
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
40574
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
40515
40575
  //# sourceMappingURL=index.modern.js.map