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.
package/dist/index.js CHANGED
@@ -1532,6 +1532,8 @@ var admin_to_admin = "관리자에서 관리자에게";
1532
1532
  var teacher_to_admin = "교사에서 관리자에게";
1533
1533
  var admin_to_teachers = "관리자에서 교사들에게";
1534
1534
  var teacher_to_teachers = "교사에서 교사들에게";
1535
+ var student_required = "학생은 필수입니다";
1536
+ var teachers_required = "교사가 필요합니다";
1535
1537
  var lang_ko = {
1536
1538
  problem_solving: problem_solving,
1537
1539
  my_story: my_story,
@@ -2699,7 +2701,9 @@ var lang_ko = {
2699
2701
  admin_to_admin: admin_to_admin,
2700
2702
  teacher_to_admin: teacher_to_admin,
2701
2703
  admin_to_teachers: admin_to_teachers,
2702
- teacher_to_teachers: teacher_to_teachers
2704
+ teacher_to_teachers: teacher_to_teachers,
2705
+ student_required: student_required,
2706
+ teachers_required: teachers_required
2703
2707
  };
2704
2708
 
2705
2709
  var problem_solving$1 = "Problem Solving";
@@ -3890,6 +3894,8 @@ var admin_to_admin$1 = "Admin to admin";
3890
3894
  var teacher_to_admin$1 = "Teacher to admin";
3891
3895
  var admin_to_teachers$1 = "Admin to teachers";
3892
3896
  var teacher_to_teachers$1 = "Teacher to teachers";
3897
+ var student_required$1 = "Student is required";
3898
+ var teachers_required$1 = "Teachers are required";
3893
3899
  var lang_en = {
3894
3900
  problem_solving: problem_solving$1,
3895
3901
  my_story: my_story$1,
@@ -5059,7 +5065,9 @@ var lang_en = {
5059
5065
  admin_to_admin: admin_to_admin$1,
5060
5066
  teacher_to_admin: teacher_to_admin$1,
5061
5067
  admin_to_teachers: admin_to_teachers$1,
5062
- teacher_to_teachers: teacher_to_teachers$1
5068
+ teacher_to_teachers: teacher_to_teachers$1,
5069
+ student_required: student_required$1,
5070
+ teachers_required: teachers_required$1
5063
5071
  };
5064
5072
 
5065
5073
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -6456,6 +6464,28 @@ var formatPhoneNumber = function formatPhoneNumber(phoneNumberString) {
6456
6464
  return phoneNumberString;
6457
6465
  };
6458
6466
 
6467
+ var cleanRichText = function cleanRichText(html, fontSize) {
6468
+ if (fontSize === void 0) {
6469
+ fontSize = "1rem";
6470
+ }
6471
+ var container = document.createElement('div');
6472
+ container.innerHTML = html;
6473
+ var tagsToRemove = ['script', 'style', 'img', 'video', 'audio', 'iframe', 'canvas', 'object', 'embed', 'table'];
6474
+ tagsToRemove.forEach(function (tag) {
6475
+ container.querySelectorAll(tag).forEach(function (el) {
6476
+ return el.remove();
6477
+ });
6478
+ });
6479
+ 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'];
6480
+ container.querySelectorAll('*').forEach(function (el) {
6481
+ if (textTags.includes(el.tagName)) {
6482
+ el.style.fontSize = fontSize;
6483
+ el.style.lineHeight = "1";
6484
+ }
6485
+ });
6486
+ return container.innerHTML;
6487
+ };
6488
+
6459
6489
  var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
6460
6490
  var currentDayOfWeek = moment.utc(utcDateTime).weekday();
6461
6491
  var diff = dayOfWeek - currentDayOfWeek;
@@ -15760,15 +15790,18 @@ var NoteItem = function NoteItem(_ref) {
15760
15790
  var handleItemClick = function handleItemClick() {
15761
15791
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(data);
15762
15792
  };
15793
+ var cleanedRichText = React.useMemo(function () {
15794
+ return cleanRichText(data.content);
15795
+ }, [data.content]);
15763
15796
  React.useEffect(function () {
15764
15797
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
15765
- }, []);
15798
+ }, [cleanedRichText, JSON.stringify(data)]);
15766
15799
  React.useEffect(function () {
15767
15800
  if (window.MathJax) {
15768
15801
  var _window$MathJax;
15769
15802
  (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
15770
15803
  }
15771
- }, [data.content]);
15804
+ }, [cleanedRichText]);
15772
15805
  return React__default.createElement(material.Box, Object.assign({}, NoteItemStyles.root, {
15773
15806
  onClick: handleItemClick,
15774
15807
  sx: {
@@ -15800,7 +15833,7 @@ var NoteItem = function NoteItem(_ref) {
15800
15833
  overflow: "hidden"
15801
15834
  },
15802
15835
  dangerouslySetInnerHTML: {
15803
- __html: data.content || ""
15836
+ __html: cleanedRichText
15804
15837
  }
15805
15838
  }))), React__default.createElement(material.Box, null, (isAdmin || data.isOwned) && React__default.createElement(material.ClickAwayListener, {
15806
15839
  onClickAway: onClose
@@ -15913,6 +15946,9 @@ var NoteItemList = function NoteItemList(_ref) {
15913
15946
  onView(data);
15914
15947
  };
15915
15948
  var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == exports.NoteType.TeacherToAllAdmin || data.type == exports.NoteType.TeacherToTeachers);
15949
+ var cleanedRichText = React.useMemo(function () {
15950
+ return cleanRichText(data.content);
15951
+ }, [data.content]);
15916
15952
  React.useEffect(function () {
15917
15953
  if (window.MathJax) {
15918
15954
  var _window$MathJax;
@@ -15947,7 +15983,7 @@ var NoteItemList = function NoteItemList(_ref) {
15947
15983
  overflow: "hidden"
15948
15984
  },
15949
15985
  dangerouslySetInnerHTML: {
15950
- __html: data.content
15986
+ __html: cleanedRichText
15951
15987
  }
15952
15988
  })), React__default.createElement(TableCell, {
15953
15989
  className: "text-nowrap"
@@ -16424,9 +16460,14 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16424
16460
  var field = _ref3.field;
16425
16461
  return React__default.createElement(StudentSelector, {
16426
16462
  value: field.value,
16427
- onChange: function onChange(val) {
16428
- setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value);
16429
- setFieldValue("student", val);
16463
+ onChange: function (val) {
16464
+ try {
16465
+ return Promise.resolve(setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value)).then(function () {
16466
+ return Promise.resolve(setFieldValue("student", val)).then(function () {});
16467
+ });
16468
+ } catch (e) {
16469
+ return Promise.reject(e);
16470
+ }
16430
16471
  },
16431
16472
  isMulti: false
16432
16473
  });
@@ -16437,7 +16478,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16437
16478
  lineHeight: "11.93px",
16438
16479
  mt: 1,
16439
16480
  color: "#F34B4B"
16440
- }, errors.studentId)), (type === exports.NoteType.AdminToAllAdmin || type === exports.NoteType.AdminToAllTeacher) && React__default.createElement(material.FormControl, {
16481
+ }, t(errors.studentId))), (type === exports.NoteType.AdminToAllAdmin || type === exports.NoteType.AdminToAllTeacher) && React__default.createElement(material.FormControl, {
16441
16482
  className: "w-100"
16442
16483
  }, React__default.createElement(material.FormLabel, {
16443
16484
  className: "fw-medium",
@@ -16474,12 +16515,17 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16474
16515
  var field = _ref4.field;
16475
16516
  return React__default.createElement(TeacherSelector$1, {
16476
16517
  value: field.value,
16477
- onChange: function onChange(val) {
16478
- var _val$map, _val$map2;
16479
- 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) {
16480
- return i.value;
16481
- })) != null ? _val$map : []);
16482
- setFieldValue("users", val != null ? val : []);
16518
+ onChange: function (val) {
16519
+ try {
16520
+ var _val$map, _val$map2;
16521
+ 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) {
16522
+ return i.value;
16523
+ })) != null ? _val$map : [])).then(function () {
16524
+ return Promise.resolve(setFieldValue("users", val != null ? val : [])).then(function () {});
16525
+ });
16526
+ } catch (e) {
16527
+ return Promise.reject(e);
16528
+ }
16483
16529
  },
16484
16530
  isDisabled: !!selectedNote,
16485
16531
  exceptMe: true,
@@ -16493,7 +16539,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16493
16539
  lineHeight: "11.93px",
16494
16540
  mt: 1,
16495
16541
  color: "#F34B4B"
16496
- }, errors.userIds)), React__default.createElement(material.Stack, null, React__default.createElement("label", {
16542
+ }, t(errors.userIds))), React__default.createElement(material.Stack, null, React__default.createElement("label", {
16497
16543
  htmlFor: "content-question",
16498
16544
  className: styles["form-label"] + " " + styles$5["form-label-dialog"]
16499
16545
  }, t("incorrect_answer_note_contents")), React__default.createElement(material.Box, {
@@ -16524,7 +16570,7 @@ var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
16524
16570
  lineHeight: "11.93px",
16525
16571
  mt: 1,
16526
16572
  color: "#F34B4B"
16527
- }, errors.content), React__default.createElement(material.Box, {
16573
+ }, t(errors.content)), React__default.createElement(material.Box, {
16528
16574
  marginBottom: "4px"
16529
16575
  })))), React__default.createElement(DialogActions, {
16530
16576
  sx: {
@@ -16789,7 +16835,8 @@ var NoteList = function NoteList(_ref) {
16789
16835
  open: openConfirmNote,
16790
16836
  toggle: handleCloseConfirmStudentNoteDialog,
16791
16837
  onConfirm: handleSaveStudentNote,
16792
- text: t("are_you_sure_to_create_student_parent_note")
16838
+ text: t("are_you_sure_to_create_student_parent_note"),
16839
+ zIndex: 1300
16793
16840
  }), React__default.createElement(ConfirmDeleteDialog, {
16794
16841
  open: openDeleteNoteDialog,
16795
16842
  toggle: handleCloseDeleteDialog,
@@ -17649,7 +17696,7 @@ var ExamResultItem = function ExamResultItem(_ref) {
17649
17696
  };
17650
17697
  React.useEffect(function () {
17651
17698
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
17652
- }, []);
17699
+ }, [JSON.stringify(data)]);
17653
17700
  var examTime = React.useMemo(function () {
17654
17701
  return utcToLocalTime(data.startTime, "HH:mm") + " ~ " + utcToLocalTime(data.endTime, "HH:mm");
17655
17702
  }, [data.startTime, data.endTime]);
@@ -23210,7 +23257,7 @@ var TextbookResultItem = function TextbookResultItem(_ref) {
23210
23257
  };
23211
23258
  React.useEffect(function () {
23212
23259
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
23213
- }, []);
23260
+ }, [JSON.stringify(data)]);
23214
23261
  return React__default.createElement(material.Stack, {
23215
23262
  height: "100%",
23216
23263
  direction: "column",
@@ -26156,7 +26203,7 @@ var CourseAttendanceItem = function CourseAttendanceItem(_ref) {
26156
26203
  var lastAttendance = timAgo(data.lastAttendanceDate, t);
26157
26204
  React.useEffect(function () {
26158
26205
  onLoad === null || onLoad === void 0 ? void 0 : onLoad();
26159
- }, []);
26206
+ }, [JSON.stringify(data)]);
26160
26207
  return React__default.createElement(material.Stack, {
26161
26208
  direction: "column",
26162
26209
  px: 2,
@@ -39095,10 +39142,19 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39095
39142
  onLoad = _ref.onLoad;
39096
39143
  var _useTranslation = reactI18next.useTranslation(),
39097
39144
  t = _useTranslation.t;
39145
+ var announcementData = convertAnnouncementData(t, role, data);
39146
+ var cleanedRichText = React.useMemo(function () {
39147
+ return cleanRichText(announcementData.content);
39148
+ }, [announcementData.content]);
39149
+ React.useEffect(function () {
39150
+ if (window.MathJax) {
39151
+ var _window$MathJax;
39152
+ (_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
39153
+ }
39154
+ }, [cleanedRichText]);
39098
39155
  React.useEffect(function () {
39099
39156
  onLoad();
39100
- }, []);
39101
- var announcementData = convertAnnouncementData(t, role, data);
39157
+ }, [cleanedRichText, data.createdAt, announcementData.action, announcementData.name]);
39102
39158
  return React__default.createElement(React.Fragment, null, renderLink(React__default.createElement(material.ListItemButton, {
39103
39159
  sx: _extends({
39104
39160
  py: 1.5,
@@ -39121,14 +39177,18 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39121
39177
  sx: {
39122
39178
  marginBlock: 0
39123
39179
  },
39124
- primary: React__default.createElement(material.Typography, null, React__default.createElement(material.Typography, {
39180
+ primary: React__default.createElement(material.Box, null, React__default.createElement(material.Typography, {
39125
39181
  fontWeight: 600,
39126
39182
  display: "inline-block"
39127
39183
  }, announcementData.name), announcementData.action && React__default.createElement(material.Typography, {
39128
39184
  display: "inline-block",
39129
39185
  px: "4px"
39130
- }, announcementData.action + ":"), React__default.createElement(material.Typography, {
39186
+ }, announcementData.action + ":"), React__default.createElement(material.Box, {
39131
39187
  display: "inline-block",
39188
+ sx: {
39189
+ verticalAlign: "middle"
39190
+ }
39191
+ }, React__default.createElement(material.Box, {
39132
39192
  sx: {
39133
39193
  display: "-webkit-box",
39134
39194
  lineClamp: 2,
@@ -39138,9 +39198,9 @@ var AnnouncementItem = function AnnouncementItem(_ref) {
39138
39198
  overflow: "hidden"
39139
39199
  },
39140
39200
  dangerouslySetInnerHTML: {
39141
- __html: announcementData.content || ""
39201
+ __html: cleanedRichText
39142
39202
  }
39143
- })),
39203
+ }))),
39144
39204
  secondary: React__default.createElement(material.Typography, {
39145
39205
  variant: "caption",
39146
39206
  sx: {
@@ -40697,6 +40757,7 @@ exports.VirtualTableView = VirtualTableView;
40697
40757
  exports.api = api;
40698
40758
  exports.apiUpload = apiUpload;
40699
40759
  exports.canAccessRoute = canAccess;
40760
+ exports.cleanRichText = cleanRichText;
40700
40761
  exports.convertHHMMSStoSeconds = convertHHMMSStoSeconds;
40701
40762
  exports.createRecentUserActionListApi = createRecentUserActionListApi;
40702
40763
  exports.diffFromNow = diffFromNow;