touchstudy-core 0.1.52 → 0.1.54

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
@@ -44,6 +44,10 @@ var TextField = _interopDefault(require('@mui/material/TextField'));
44
44
  var Paper = _interopDefault(require('@mui/material/Paper'));
45
45
  var Grid = _interopDefault(require('@mui/material/Grid'));
46
46
  var reactRouterDom = require('react-router-dom');
47
+ var Card = _interopDefault(require('@mui/material/Card'));
48
+ var CardActions = _interopDefault(require('@mui/material/CardActions'));
49
+ var CardContent = _interopDefault(require('@mui/material/CardContent'));
50
+ var CardMedia = _interopDefault(require('@mui/material/CardMedia'));
47
51
 
48
52
  var setLoading = toolkit.createAction("common/setLoading");
49
53
  var setAlert = toolkit.createAction("common/setAlert");
@@ -483,14 +487,16 @@ var useGoogleSignOut = function useGoogleSignOut(props) {
483
487
  };
484
488
  };
485
489
 
490
+ var pushTo = function pushTo(history, data) {
491
+ if (history.push) history.push(data);else history(data);
492
+ };
493
+
486
494
  var ERROR_MESSAGE = "request_login_fail";
487
- var useLogin = function useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUrl) {
495
+ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl) {
488
496
  var dispatch = reactRedux.useDispatch();
489
497
  var _useTranslation = reactI18next.useTranslation(),
490
498
  t = _useTranslation.t;
491
- var _useGoogleSignOut = useGoogleSignOut({
492
- onNavigate: onNavigate
493
- }),
499
+ var _useGoogleSignOut = useGoogleSignOut({}),
494
500
  handleSignOut = _useGoogleSignOut.handleSignOut;
495
501
  var searchParams = new URLSearchParams(window.location.search);
496
502
  var paramDomain = searchParams.get('domain');
@@ -586,9 +592,7 @@ var useLogin = function useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUr
586
592
  !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
587
593
  !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
588
594
  dispatch(setUser(_extends({}, data)));
589
- if (redirectUrl) {
590
- onNavigate(redirectUrl);
591
- }
595
+ if (redirectUrl) pushTo(history, redirectUrl);
592
596
  };
593
597
  return {
594
598
  handleLoginGoogle: handleLoginGoogle,
@@ -821,6 +825,8 @@ var LANGUAGES = [{
821
825
  }];
822
826
 
823
827
  var useLanguage = function useLanguage() {
828
+ var searchParams = new URLSearchParams(window.location.search);
829
+ var langParam = searchParams.get("lang");
824
830
  var defaultLanguage = !!localStorage.getItem("language") ? localStorage.getItem("language") : navigator.language || LANGUAGES[DEFAULT_LANGUAGE_INDEX].code;
825
831
  var dispatch = reactRedux.useDispatch();
826
832
  var _useTranslation = reactI18next.useTranslation(),
@@ -844,12 +850,23 @@ var useLanguage = function useLanguage() {
844
850
  i18n.changeLanguage(language.code);
845
851
  moment.locale(language.momentLangCode);
846
852
  localStorage.setItem("language", language.code);
847
- setItemLanguage(language.code);
848
853
  dispatch(setLanguage(language.code));
854
+ searchParams.set("lang", language.code);
849
855
  };
856
+ var handleChangeLangParam = React.useCallback(function () {
857
+ if (!langParam) return;
858
+ var languageItem = LANGUAGES.find(function (i) {
859
+ return i.code === langParam.toLowerCase();
860
+ });
861
+ if (!languageItem) languageItem = LANGUAGES[DEFAULT_LANGUAGE_INDEX];
862
+ setItemLanguage(languageItem.code);
863
+ }, [searchParams.toString(), language]);
850
864
  React.useEffect(function () {
851
865
  changeLanguageApp(language);
852
866
  }, [language]);
867
+ React.useEffect(function () {
868
+ handleChangeLangParam();
869
+ }, [langParam]);
853
870
  var currentLanguage = React.useMemo(function () {
854
871
  var currentLang = LANGUAGES.find(function (i) {
855
872
  return i.code === language;
@@ -873,7 +890,7 @@ var schema = yup.object({
873
890
  });
874
891
  var BlockLogin = function BlockLogin(_ref) {
875
892
  var defaultInfo = _ref.defaultInfo,
876
- onNavigate = _ref.onNavigate,
893
+ history = _ref.history,
877
894
  _ref$role = _ref.role,
878
895
  role = _ref$role === void 0 ? exports.Role.Student : _ref$role,
879
896
  homeAcademyUrl = _ref.homeAcademyUrl,
@@ -883,7 +900,7 @@ var BlockLogin = function BlockLogin(_ref) {
883
900
  currentLanguage = _useLanguage.currentLanguage;
884
901
  var _useTranslation = reactI18next.useTranslation(),
885
902
  t = _useTranslation.t;
886
- var _useLogin = useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUrl),
903
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
887
904
  handleLoginGoogle = _useLogin.handleLoginGoogle;
888
905
  var onSuccessGoogle = function onSuccessGoogle(res) {
889
906
  try {
@@ -911,7 +928,7 @@ var BlockLogin = function BlockLogin(_ref) {
911
928
  };
912
929
  var onFailureGoogle = function onFailureGoogle(err) {
913
930
  console.log("error: login google", err);
914
- onNavigate("/login");
931
+ pushTo(history, "/login");
915
932
  };
916
933
  return React__default.createElement(material.Paper, {
917
934
  elevation: 3,
@@ -971,7 +988,7 @@ var defaultInfo = {
971
988
  captcha: "",
972
989
  rememberMe: false
973
990
  };
974
- var useLogin$1 = function useLogin(onNavigate) {
991
+ var useLogin$1 = function useLogin(history) {
975
992
  var _useState = React.useState(false),
976
993
  openLogin = _useState[0],
977
994
  setOpenLogin = _useState[1];
@@ -988,14 +1005,14 @@ var useLogin$1 = function useLogin(onNavigate) {
988
1005
  var start = function start() {
989
1006
  gapiScript.gapi.client.init({
990
1007
  clientId: GOOGLE_CLIENT_ID,
991
- scope: 'email'
1008
+ scope: "email"
992
1009
  });
993
1010
  };
994
- !!gapiScript.gapi && gapiScript.gapi.load('client:auth2', start);
1011
+ !!gapiScript.gapi && gapiScript.gapi.load("client:auth2", start);
995
1012
  }, [gapiScript.gapi]);
996
1013
  React.useEffect(function () {
997
1014
  var token = getAccessToken$1();
998
- if (!!token) onNavigate("/");
1015
+ if (!!token) pushTo(history, "/");
999
1016
  }, []);
1000
1017
  return {
1001
1018
  defaultInfo: defaultInfo,
@@ -1008,11 +1025,11 @@ var useLogin$1 = function useLogin(onNavigate) {
1008
1025
  };
1009
1026
  };
1010
1027
 
1011
- var _excluded = ["onNavigate"];
1028
+ var _excluded = ["history"];
1012
1029
  var Login = function Login(_ref) {
1013
- var onNavigate = _ref.onNavigate,
1030
+ var history = _ref.history,
1014
1031
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1015
- var _useLogin = useLogin$1(onNavigate),
1032
+ var _useLogin = useLogin$1(history),
1016
1033
  defaultInfo = _useLogin.defaultInfo;
1017
1034
  return React__default.createElement("div", {
1018
1035
  className: styles["login"] + " font-family-lato"
@@ -1026,7 +1043,7 @@ var Login = function Login(_ref) {
1026
1043
  className: "d-flex justify-content-center h-100 align-items-center"
1027
1044
  }, React__default.createElement(BlockLogin, Object.assign({
1028
1045
  defaultInfo: defaultInfo,
1029
- onNavigate: onNavigate
1046
+ history: history
1030
1047
  }, rest)))));
1031
1048
  };
1032
1049
 
@@ -1278,6 +1295,8 @@ var store = toolkit.configureStore({
1278
1295
 
1279
1296
  var TITLE = "Not found";
1280
1297
  var NotFound = function NotFound() {
1298
+ var _useTranslation = reactI18next.useTranslation(),
1299
+ t = _useTranslation.t;
1281
1300
  React.useEffect(function () {
1282
1301
  document.title = TITLE;
1283
1302
  });
@@ -1291,9 +1310,9 @@ var NotFound = function NotFound() {
1291
1310
  className: "float-left"
1292
1311
  }, React__default.createElement("h4", {
1293
1312
  className: "pt-3"
1294
- }, "Oops! You are lost."), React__default.createElement("p", {
1313
+ }, t('oops')), React__default.createElement("p", {
1295
1314
  className: "text-muted mb-2"
1296
- }, "The page you are looking for was not found."), React__default.createElement("div", null))));
1315
+ }, t('the_page_you_are_looking_for_was_not_found')), React__default.createElement("div", null))));
1297
1316
  };
1298
1317
 
1299
1318
  var loadingStyle = {
@@ -1351,11 +1370,8 @@ var LayoutContext = function LayoutContext(_ref) {
1351
1370
  var children = _ref.children,
1352
1371
  role = _ref.role,
1353
1372
  _ref$pusherRegisterUr = _ref.pusherRegisterUrls,
1354
- pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr,
1355
- onNavigate = _ref.onNavigate;
1356
- var _useGoogleSignOut = useGoogleSignOut({
1357
- onNavigate: onNavigate
1358
- }),
1373
+ pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr;
1374
+ var _useGoogleSignOut = useGoogleSignOut({}),
1359
1375
  handleSignOut = _useGoogleSignOut.handleSignOut;
1360
1376
  var _useTranslation = reactI18next.useTranslation(),
1361
1377
  t = _useTranslation.t;
@@ -1504,13 +1520,10 @@ var LayoutContext = function LayoutContext(_ref) {
1504
1520
  var ConfirmDialog = function ConfirmDialog(_ref) {
1505
1521
  var open = _ref.open,
1506
1522
  text = _ref.text,
1507
- _ref$cancelText = _ref.cancelText,
1508
- cancelText = _ref$cancelText === void 0 ? "아니요" : _ref$cancelText,
1509
- _ref$okText = _ref.okText,
1510
- okText = _ref$okText === void 0 ? "예" : _ref$okText,
1523
+ cancelText = _ref.cancelText,
1524
+ okText = _ref.okText,
1511
1525
  isDelete = _ref.isDelete,
1512
- _ref$title = _ref.title,
1513
- title = _ref$title === void 0 ? "확인" : _ref$title,
1526
+ title = _ref.title,
1514
1527
  confirmText = _ref.confirmText,
1515
1528
  titleClassName = _ref.titleClassName,
1516
1529
  toggle = _ref.toggle,
@@ -1518,6 +1531,10 @@ var ConfirmDialog = function ConfirmDialog(_ref) {
1518
1531
  var _useState = React.useState(),
1519
1532
  confirmTextValue = _useState[0],
1520
1533
  setConfirmTextValue = _useState[1];
1534
+ var _useTranslation = reactI18next.useTranslation(),
1535
+ t = _useTranslation.t;
1536
+ var _useLanguage = useLanguage(),
1537
+ currentLanguage = _useLanguage.currentLanguage;
1521
1538
  var handleConfirm = function handleConfirm() {
1522
1539
  onConfirm();
1523
1540
  };
@@ -1542,7 +1559,7 @@ var ConfirmDialog = function ConfirmDialog(_ref) {
1542
1559
  sx: {
1543
1560
  fontSize: "16px!important"
1544
1561
  }
1545
- }, title), React__default.createElement(material.IconButton, {
1562
+ }, title || t('confirmation')), React__default.createElement(material.IconButton, {
1546
1563
  "aria-label": "close",
1547
1564
  onClick: toggle,
1548
1565
  sx: {
@@ -1557,7 +1574,7 @@ var ConfirmDialog = function ConfirmDialog(_ref) {
1557
1574
  className: "pt-2"
1558
1575
  }, React__default.createElement("p", null, React__default.createElement("strong", null, text)), !!confirmText && React__default.createElement("div", {
1559
1576
  className: "w-100"
1560
- }, React__default.createElement("p", null, "Enter \"", React__default.createElement("strong", null, confirmText), "\" to confirm delete"), React__default.createElement(material.TextField, {
1577
+ }, (currentLanguage === null || currentLanguage === void 0 ? void 0 : currentLanguage.code) === 'en' ? React__default.createElement("p", null, "Enter ", React__default.createElement("strong", null, confirmText), " to confirm delete") : React__default.createElement("p", null, "\uC785\uB825\uD558\uB2E4 ", React__default.createElement("strong", null, confirmText), " \uC0AD\uC81C\uB97C \uD655\uC778\uD558\uB824\uBA74"), React__default.createElement(material.TextField, {
1561
1578
  className: "w-100",
1562
1579
  sx: {
1563
1580
  "& input": {
@@ -1566,7 +1583,7 @@ var ConfirmDialog = function ConfirmDialog(_ref) {
1566
1583
  },
1567
1584
  value: confirmTextValue,
1568
1585
  onChange: handleChangeConfirmText,
1569
- placeholder: "Please enter...",
1586
+ placeholder: t('please_enter'),
1570
1587
  onPaste: handlePaste,
1571
1588
  error: !isValid && confirmTextValue !== undefined,
1572
1589
  color: isValid ? "success" : confirmTextValue !== undefined ? "error" : undefined
@@ -1577,13 +1594,13 @@ var ConfirmDialog = function ConfirmDialog(_ref) {
1577
1594
  color: "secondary",
1578
1595
  className: "px-3 bg-secondary",
1579
1596
  onClick: toggle
1580
- }, cancelText), React__default.createElement(material.Button, {
1597
+ }, cancelText || t("no")), React__default.createElement(material.Button, {
1581
1598
  variant: "contained",
1582
1599
  color: isDelete ? "error" : "primary",
1583
1600
  className: "px-3",
1584
1601
  disabled: !!confirmText && (confirmTextValue === null || confirmTextValue === void 0 ? void 0 : confirmTextValue.trim()) !== confirmText.trim(),
1585
1602
  onClick: handleConfirm
1586
- }, okText)));
1603
+ }, okText || t('yes'))));
1587
1604
  };
1588
1605
 
1589
1606
  var CommonDialog = function CommonDialog(_ref) {
@@ -2193,6 +2210,95 @@ var update_category = "카테고리 업데이트";
2193
2210
  var create_new_category = "새 카테고리 만들기";
2194
2211
  var parent_category = "상위 카테고리:";
2195
2212
  var enter_category_name = "카테고리 이름을 입력하세요";
2213
+ var new_class = "새로운 수업";
2214
+ var classes = "클래스";
2215
+ var confirm_delete_class = "수업을 삭제하시겠습니까:";
2216
+ var new_exam = "새로운 시험";
2217
+ var are_you_sure_to_delete_exam = "시험을 삭제하시겠습니까:";
2218
+ var question_type = "질문 유형";
2219
+ var question_category = "질문 카테고리";
2220
+ var select_article = "기사 선택";
2221
+ var create_social = "소셜 만들기";
2222
+ var update_social = "소셜 업데이트";
2223
+ var new_social = "뉴소셜";
2224
+ var are_you_sure_to_delete_social_link = "소셜 링크를 삭제하시겠습니까:";
2225
+ var update_subject = "업데이트 제목";
2226
+ var create_new_subject = "새 주제 만들기";
2227
+ var subject_name = "주체 이름";
2228
+ var are_you_sure_to_delete_subject = "제목을 삭제하시겠습니까:";
2229
+ var drop_a_file_here_or_click_to_browse = "여기에 파일을 놓거나 클릭하여 찾아보세요.";
2230
+ var delete_users_csv = "사용자 CSV 삭제";
2231
+ var are_you_sure_to_delete_user = "사용자를 삭제하시겠습니까:";
2232
+ var enter_phone_number = "전화번호를 입력하세요";
2233
+ var enter_school_name = "학교 이름을 입력하세요";
2234
+ var enter_grade = "성적 입력";
2235
+ var enter_major_name = "주요 이름을 입력하세요";
2236
+ var enter_parent_name = "부모 이름을 입력하세요";
2237
+ var enter_parent_phone_number = "부모 전화번호를 입력하세요";
2238
+ var select_role = "역할 선택";
2239
+ var import_users = "사용자 가져오기";
2240
+ var remove_users = "사용자 제거";
2241
+ var download_template = "템플릿 다운로드";
2242
+ var export_csv = "CSV 내보내기";
2243
+ var select_type = "유형 선택";
2244
+ var no_message = "메시지 없음";
2245
+ var this_is_the_guidance_text = "안내 텍스트입니다.";
2246
+ var oops = "이런! 당신이졌다.";
2247
+ var please_enter = "들어 오세요...";
2248
+ var hint = "힌트";
2249
+ var save_and_add_next_question = "저장하고 다음 질문 추가";
2250
+ var question_text = "질문 텍스트";
2251
+ var article = "기사";
2252
+ var notifications = "알림";
2253
+ var exams = "시험";
2254
+ var questions = "질문";
2255
+ var dashboard = "계기반";
2256
+ var question_bank = "문제 은행";
2257
+ var exam_categories = "시험 카테고리";
2258
+ var social_link = "소셜 링크";
2259
+ var created_date = "생성 날짜";
2260
+ var are_you_sure_to_delete_academy = "아카데미를 삭제하시겠습니까:";
2261
+ var action = "행동";
2262
+ var number_of_questions = "질문 수";
2263
+ var are_you_sure_to_delete_category = "카테고리를 삭제하시겠습니까:";
2264
+ var add_new_lesson = "새 강의 추가";
2265
+ var update_lesson = "강의 업데이트:";
2266
+ var are_you_sure_to_remove_lesson = "강의를 삭제하시겠습니까:";
2267
+ var clear = "분명한";
2268
+ var add_to_list = "목록에 추가";
2269
+ var add_students = "학생 추가";
2270
+ var are_you_sure_to_remove_student = "학생을 삭제하시겠습니까:";
2271
+ var add_teachers = "교사 추가";
2272
+ var please_enter_a_title = "제목을 입력하세요";
2273
+ var questions_required_at_least_one_question = "질문에는 하나 이상의 질문이 필요합니다.";
2274
+ var please_enter_number_of_answers_for_question_number = "질문 번호 {{number}} 에 대한 답변 수를 입력하십시오.";
2275
+ var number_of_answers_must_be_greater_than_1_for_question_number = "질문 번호 {{number}} 에 대한 답변 수는 1보다 커야 합니다.";
2276
+ var correct_answer_must_be_less_than_for_question_number = "질문 번호 {{number}} 에 대한 정답은 {{question}} 보다 작아야 합니다.";
2277
+ var update_exam_successfully = "시험을 성공적으로 업데이트했습니다.";
2278
+ var create_exam_successfully = "시험을 성공적으로 만들었습니다.";
2279
+ var create_notification = "알림 생성";
2280
+ var update_notification = "업데이트 알림";
2281
+ var new_notification = "새로운 알림";
2282
+ var are_you_sure_to_delete_notification = "알림을 삭제하시겠습니까:";
2283
+ var answer_list = "답변 목록";
2284
+ var are_you_sure_to_delete_question = "질문을 삭제하시겠습니까:";
2285
+ var school_name_is_required = "학교 이름은 필수 항목입니다.";
2286
+ var phone_number_is_not_valid = "전화번호가 유효하지 않습니다.";
2287
+ var role_is_required = "역할은 필수입니다.";
2288
+ var student_grade_is_required = "학생 성적은 필수 항목입니다.";
2289
+ var major_is_required = "전공은 필수입니다";
2290
+ var phone_number_is_required = "전화번호는 필수 항목입니다.";
2291
+ var parent_name_is_required = "부모 이름이 필요합니다";
2292
+ var category_name = "카테고리 이름";
2293
+ var categories = "카테고리";
2294
+ var teacher = "선생님";
2295
+ var role = "역할";
2296
+ var total_uses = "총 사용량";
2297
+ var create_question = "질문 만들기";
2298
+ var articles = "조항";
2299
+ var add_lesson = "레슨 추가";
2300
+ var date = "날짜";
2301
+ var the_code_has_been_copied_to_your_clipboard = "코드가 클립보드에 복사되었습니다.";
2196
2302
  var lang_ko = {
2197
2303
  problem_solving: problem_solving,
2198
2304
  my_story: my_story,
@@ -2613,7 +2719,98 @@ var lang_ko = {
2613
2719
  update_category: update_category,
2614
2720
  create_new_category: create_new_category,
2615
2721
  parent_category: parent_category,
2616
- enter_category_name: enter_category_name
2722
+ enter_category_name: enter_category_name,
2723
+ new_class: new_class,
2724
+ classes: classes,
2725
+ confirm_delete_class: confirm_delete_class,
2726
+ new_exam: new_exam,
2727
+ are_you_sure_to_delete_exam: are_you_sure_to_delete_exam,
2728
+ question_type: question_type,
2729
+ question_category: question_category,
2730
+ select_article: select_article,
2731
+ create_social: create_social,
2732
+ update_social: update_social,
2733
+ new_social: new_social,
2734
+ are_you_sure_to_delete_social_link: are_you_sure_to_delete_social_link,
2735
+ update_subject: update_subject,
2736
+ create_new_subject: create_new_subject,
2737
+ subject_name: subject_name,
2738
+ are_you_sure_to_delete_subject: are_you_sure_to_delete_subject,
2739
+ drop_a_file_here_or_click_to_browse: drop_a_file_here_or_click_to_browse,
2740
+ delete_users_csv: delete_users_csv,
2741
+ are_you_sure_to_delete_user: are_you_sure_to_delete_user,
2742
+ enter_phone_number: enter_phone_number,
2743
+ enter_school_name: enter_school_name,
2744
+ enter_grade: enter_grade,
2745
+ enter_major_name: enter_major_name,
2746
+ enter_parent_name: enter_parent_name,
2747
+ enter_parent_phone_number: enter_parent_phone_number,
2748
+ select_role: select_role,
2749
+ import_users: import_users,
2750
+ remove_users: remove_users,
2751
+ download_template: download_template,
2752
+ export_csv: export_csv,
2753
+ select_type: select_type,
2754
+ no_message: no_message,
2755
+ this_is_the_guidance_text: this_is_the_guidance_text,
2756
+ "the_page_you_are_looking_for_was_not_found.": "찾으시는 페이지를 찾을 수 없습니다.",
2757
+ oops: oops,
2758
+ please_enter: please_enter,
2759
+ hint: hint,
2760
+ save_and_add_next_question: save_and_add_next_question,
2761
+ question_text: question_text,
2762
+ article: article,
2763
+ notifications: notifications,
2764
+ exams: exams,
2765
+ questions: questions,
2766
+ dashboard: dashboard,
2767
+ question_bank: question_bank,
2768
+ exam_categories: exam_categories,
2769
+ social_link: social_link,
2770
+ created_date: created_date,
2771
+ are_you_sure_to_delete_academy: are_you_sure_to_delete_academy,
2772
+ action: action,
2773
+ number_of_questions: number_of_questions,
2774
+ are_you_sure_to_delete_category: are_you_sure_to_delete_category,
2775
+ add_new_lesson: add_new_lesson,
2776
+ update_lesson: update_lesson,
2777
+ are_you_sure_to_remove_lesson: are_you_sure_to_remove_lesson,
2778
+ clear: clear,
2779
+ add_to_list: add_to_list,
2780
+ add_students: add_students,
2781
+ are_you_sure_to_remove_student: are_you_sure_to_remove_student,
2782
+ add_teachers: add_teachers,
2783
+ please_enter_a_title: please_enter_a_title,
2784
+ questions_required_at_least_one_question: questions_required_at_least_one_question,
2785
+ please_enter_number_of_answers_for_question_number: please_enter_number_of_answers_for_question_number,
2786
+ number_of_answers_must_be_greater_than_1_for_question_number: number_of_answers_must_be_greater_than_1_for_question_number,
2787
+ "please_choose_at_least_one_answer_for_question_number ": "질문 번호 {{number}}에 대해 하나 이상의 답변을 선택하십시오.",
2788
+ correct_answer_must_be_less_than_for_question_number: correct_answer_must_be_less_than_for_question_number,
2789
+ update_exam_successfully: update_exam_successfully,
2790
+ create_exam_successfully: create_exam_successfully,
2791
+ create_notification: create_notification,
2792
+ update_notification: update_notification,
2793
+ new_notification: new_notification,
2794
+ are_you_sure_to_delete_notification: are_you_sure_to_delete_notification,
2795
+ answer_list: answer_list,
2796
+ are_you_sure_to_delete_question: are_you_sure_to_delete_question,
2797
+ school_name_is_required: school_name_is_required,
2798
+ phone_number_is_not_valid: phone_number_is_not_valid,
2799
+ role_is_required: role_is_required,
2800
+ student_grade_is_required: student_grade_is_required,
2801
+ major_is_required: major_is_required,
2802
+ phone_number_is_required: phone_number_is_required,
2803
+ parent_name_is_required: parent_name_is_required,
2804
+ category_name: category_name,
2805
+ categories: categories,
2806
+ teacher: teacher,
2807
+ role: role,
2808
+ total_uses: total_uses,
2809
+ create_question: create_question,
2810
+ articles: articles,
2811
+ add_lesson: add_lesson,
2812
+ date: date,
2813
+ the_code_has_been_copied_to_your_clipboard: the_code_has_been_copied_to_your_clipboard
2617
2814
  };
2618
2815
 
2619
2816
  var problem_solving$1 = "Problem Solving";
@@ -2687,19 +2884,19 @@ var correct_rate$1 = "Correct rate";
2687
2884
  var difficult_level = "Difficult level";
2688
2885
  var difficulty_explain = "(The Difficulty Level provides an indication of the difficulty level of each test question)";
2689
2886
  var explain_your_answer = "Explain your answer";
2690
- var hint = "Hint";
2691
- var save_and_add_next_question = "Save and add next question";
2887
+ var hint$1 = "Hint";
2888
+ var save_and_add_next_question$1 = "Save and add next question";
2692
2889
  var save_and_exit$1 = "Save and exit";
2693
- var question_text = "Question text";
2890
+ var question_text$1 = "Question text";
2694
2891
  var title$1 = "Title";
2695
- var create_question = "Create question";
2892
+ var create_question$1 = "Create question";
2696
2893
  var parent_question = "Parent question";
2697
2894
  var edit_question = "Edit question";
2698
2895
  var edit$1 = "Edit";
2699
2896
  var easy = "Easy";
2700
2897
  var intermediate = "Intermediate";
2701
2898
  var difficult = "Difficult";
2702
- var article = "Article";
2899
+ var article$1 = "Article";
2703
2900
  var correct_answer = "Correct answer";
2704
2901
  var mark = "Mark";
2705
2902
  var answer$1 = "Answer";
@@ -2761,11 +2958,11 @@ var friday$1 = "Friday";
2761
2958
  var saturday$1 = "Saturday";
2762
2959
  var total_lessons$1 = "Total lessons";
2763
2960
  var is_cancelled = "Is cancelled";
2764
- var date = "Date";
2961
+ var date$1 = "Date";
2765
2962
  var weekly_days_required$1 = "Weekly days are required";
2766
2963
  var main_teacher$1 = "Main teacher";
2767
2964
  var main_teacher_required = "Main teacher is required";
2768
- var teacher = "Teacher";
2965
+ var teacher$1 = "Teacher";
2769
2966
  var the_first$1 = "The first";
2770
2967
  var the_second$1 = "The second";
2771
2968
  var the_third$1 = "The third";
@@ -3077,6 +3274,88 @@ var update_category$1 = "Update Category";
3077
3274
  var create_new_category$1 = "Create New Category";
3078
3275
  var parent_category$1 = "Parent Category:";
3079
3276
  var enter_category_name$1 = "Enter Category Name";
3277
+ var new_class$1 = "New class";
3278
+ var classes$1 = "Classes";
3279
+ var confirm_delete_class$1 = "Are you sure to delete class:";
3280
+ var new_exam$1 = "New Exam";
3281
+ var are_you_sure_to_delete_exam$1 = "Are you sure to delete exam:";
3282
+ var question_type$1 = "Question Type";
3283
+ var question_category$1 = "Question Category";
3284
+ var select_article$1 = "Select Article";
3285
+ var create_social$1 = "Create Social";
3286
+ var update_social$1 = "Update Social";
3287
+ var new_social$1 = "New Social";
3288
+ var are_you_sure_to_delete_social_link$1 = "Are you sure to delete social link:";
3289
+ var update_subject$1 = "Update Subject";
3290
+ var create_new_subject$1 = "Create New Subject";
3291
+ var subject_name$1 = "Subject name";
3292
+ var are_you_sure_to_delete_subject$1 = "Are you sure to delete subject:";
3293
+ var drop_a_file_here_or_click_to_browse$1 = "Drop a file here or click to browse";
3294
+ var delete_users_csv$1 = "Delete users csv";
3295
+ var are_you_sure_to_delete_user$1 = "Are you sure to delete user:";
3296
+ var enter_phone_number$1 = "Enter phone number";
3297
+ var enter_school_name$1 = "Enter school name";
3298
+ var enter_grade$1 = "Enter grade";
3299
+ var enter_major_name$1 = "Enter major name";
3300
+ var enter_parent_name$1 = "Enter parent name";
3301
+ var enter_parent_phone_number$1 = "Enter parent phone number";
3302
+ var select_role$1 = "Select role";
3303
+ var import_users$1 = "Import users";
3304
+ var remove_users$1 = "Remove users";
3305
+ var download_template$1 = "Download template";
3306
+ var export_csv$1 = "Export csv";
3307
+ var select_type$1 = "Select type";
3308
+ var no_message$1 = "No message";
3309
+ var this_is_the_guidance_text$1 = "This is the guidance text.";
3310
+ var oops$1 = "Oops! You are lost.";
3311
+ var please_enter$1 = "Please enter...";
3312
+ var notifications$1 = "Notifications";
3313
+ var exams$1 = "Exams";
3314
+ var questions$1 = "Questions";
3315
+ var dashboard$1 = "Dashboard";
3316
+ var question_bank$1 = "Question Bank";
3317
+ var exam_categories$1 = "Exam Categories";
3318
+ var social_link$1 = "Social Link";
3319
+ var created_date$1 = "Created Date";
3320
+ var are_you_sure_to_delete_academy$1 = "Are you sure to delete academy:";
3321
+ var action$1 = "Action";
3322
+ var number_of_questions$1 = "Number Of Questions";
3323
+ var are_you_sure_to_delete_category$1 = "Are you sure to delete category:";
3324
+ var add_new_lesson$1 = "Add new lesson";
3325
+ var update_lesson$1 = "Update lesson:";
3326
+ var are_you_sure_to_remove_lesson$1 = "Are you sure to remove lesson:";
3327
+ var clear$1 = "Clear";
3328
+ var add_to_list$1 = "Add to list";
3329
+ var add_students$1 = "Add students";
3330
+ var are_you_sure_to_remove_student$1 = "Are you sure to remove student:";
3331
+ var add_teachers$1 = "Add teachers";
3332
+ var please_enter_a_title$1 = "Please enter a title";
3333
+ var questions_required_at_least_one_question$1 = "Questions required at least one question";
3334
+ var please_enter_number_of_answers_for_question_number$1 = "Please enter number of answers for question number {{number}}";
3335
+ var number_of_answers_must_be_greater_than_1_for_question_number$1 = "Number of answers must be greater than 1 for question number {{number}}";
3336
+ var correct_answer_must_be_less_than_for_question_number$1 = "Correct answer must be less than {{question}} for question number {{number}}";
3337
+ var update_exam_successfully$1 = "Update exam successfully";
3338
+ var create_exam_successfully$1 = "Create exam successfully";
3339
+ var create_notification$1 = "Create Notification";
3340
+ var update_notification$1 = "Update Notification";
3341
+ var new_notification$1 = "New Notification";
3342
+ var are_you_sure_to_delete_notification$1 = "Are you sure to delete notification:";
3343
+ var answer_list$1 = "Answer List";
3344
+ var are_you_sure_to_delete_question$1 = "Are you sure to delete question:";
3345
+ var school_name_is_required$1 = "School name is required";
3346
+ var phone_number_is_not_valid$1 = "Phone number is not valid";
3347
+ var role_is_required$1 = "Role is required";
3348
+ var student_grade_is_required$1 = "Student grade is required";
3349
+ var major_is_required$1 = "Major is required";
3350
+ var phone_number_is_required$1 = "Phone number is required";
3351
+ var parent_name_is_required$1 = "Parent name is required";
3352
+ var category_name$1 = "Category Name";
3353
+ var categories$1 = "Categories";
3354
+ var role$1 = "Role";
3355
+ var total_uses$1 = "Total Uses";
3356
+ var articles$1 = "Articles";
3357
+ var add_lesson$1 = "Add Lesson";
3358
+ var the_code_has_been_copied_to_your_clipboard$1 = "The code has been copied to your clipboard";
3080
3359
  var lang_en = {
3081
3360
  problem_solving: problem_solving$1,
3082
3361
  my_story: my_story$1,
@@ -3151,12 +3430,12 @@ var lang_en = {
3151
3430
  difficult_level: difficult_level,
3152
3431
  difficulty_explain: difficulty_explain,
3153
3432
  explain_your_answer: explain_your_answer,
3154
- hint: hint,
3155
- save_and_add_next_question: save_and_add_next_question,
3433
+ hint: hint$1,
3434
+ save_and_add_next_question: save_and_add_next_question$1,
3156
3435
  save_and_exit: save_and_exit$1,
3157
- question_text: question_text,
3436
+ question_text: question_text$1,
3158
3437
  title: title$1,
3159
- create_question: create_question,
3438
+ create_question: create_question$1,
3160
3439
  parent_question: parent_question,
3161
3440
  edit_question: edit_question,
3162
3441
  edit: edit$1,
@@ -3164,7 +3443,7 @@ var lang_en = {
3164
3443
  easy: easy,
3165
3444
  intermediate: intermediate,
3166
3445
  difficult: difficult,
3167
- article: article,
3446
+ article: article$1,
3168
3447
  correct_answer: correct_answer,
3169
3448
  mark: mark,
3170
3449
  answer: answer$1,
@@ -3226,11 +3505,11 @@ var lang_en = {
3226
3505
  saturday: saturday$1,
3227
3506
  total_lessons: total_lessons$1,
3228
3507
  is_cancelled: is_cancelled,
3229
- date: date,
3508
+ date: date$1,
3230
3509
  weekly_days_required: weekly_days_required$1,
3231
3510
  main_teacher: main_teacher$1,
3232
3511
  main_teacher_required: main_teacher_required,
3233
- teacher: teacher,
3512
+ teacher: teacher$1,
3234
3513
  the_first: the_first$1,
3235
3514
  the_second: the_second$1,
3236
3515
  the_third: the_third$1,
@@ -3531,7 +3810,91 @@ var lang_en = {
3531
3810
  update_category: update_category$1,
3532
3811
  create_new_category: create_new_category$1,
3533
3812
  parent_category: parent_category$1,
3534
- enter_category_name: enter_category_name$1
3813
+ enter_category_name: enter_category_name$1,
3814
+ new_class: new_class$1,
3815
+ classes: classes$1,
3816
+ confirm_delete_class: confirm_delete_class$1,
3817
+ new_exam: new_exam$1,
3818
+ are_you_sure_to_delete_exam: are_you_sure_to_delete_exam$1,
3819
+ question_type: question_type$1,
3820
+ question_category: question_category$1,
3821
+ select_article: select_article$1,
3822
+ create_social: create_social$1,
3823
+ update_social: update_social$1,
3824
+ new_social: new_social$1,
3825
+ are_you_sure_to_delete_social_link: are_you_sure_to_delete_social_link$1,
3826
+ update_subject: update_subject$1,
3827
+ create_new_subject: create_new_subject$1,
3828
+ subject_name: subject_name$1,
3829
+ are_you_sure_to_delete_subject: are_you_sure_to_delete_subject$1,
3830
+ drop_a_file_here_or_click_to_browse: drop_a_file_here_or_click_to_browse$1,
3831
+ delete_users_csv: delete_users_csv$1,
3832
+ are_you_sure_to_delete_user: are_you_sure_to_delete_user$1,
3833
+ enter_phone_number: enter_phone_number$1,
3834
+ enter_school_name: enter_school_name$1,
3835
+ enter_grade: enter_grade$1,
3836
+ enter_major_name: enter_major_name$1,
3837
+ enter_parent_name: enter_parent_name$1,
3838
+ enter_parent_phone_number: enter_parent_phone_number$1,
3839
+ select_role: select_role$1,
3840
+ import_users: import_users$1,
3841
+ remove_users: remove_users$1,
3842
+ download_template: download_template$1,
3843
+ export_csv: export_csv$1,
3844
+ select_type: select_type$1,
3845
+ no_message: no_message$1,
3846
+ this_is_the_guidance_text: this_is_the_guidance_text$1,
3847
+ "the_page_you_are_looking_for_was_not_found.": "The page you are looking for was not found.",
3848
+ oops: oops$1,
3849
+ please_enter: please_enter$1,
3850
+ notifications: notifications$1,
3851
+ exams: exams$1,
3852
+ questions: questions$1,
3853
+ dashboard: dashboard$1,
3854
+ question_bank: question_bank$1,
3855
+ exam_categories: exam_categories$1,
3856
+ social_link: social_link$1,
3857
+ created_date: created_date$1,
3858
+ are_you_sure_to_delete_academy: are_you_sure_to_delete_academy$1,
3859
+ action: action$1,
3860
+ number_of_questions: number_of_questions$1,
3861
+ are_you_sure_to_delete_category: are_you_sure_to_delete_category$1,
3862
+ add_new_lesson: add_new_lesson$1,
3863
+ update_lesson: update_lesson$1,
3864
+ are_you_sure_to_remove_lesson: are_you_sure_to_remove_lesson$1,
3865
+ clear: clear$1,
3866
+ add_to_list: add_to_list$1,
3867
+ add_students: add_students$1,
3868
+ are_you_sure_to_remove_student: are_you_sure_to_remove_student$1,
3869
+ add_teachers: add_teachers$1,
3870
+ please_enter_a_title: please_enter_a_title$1,
3871
+ questions_required_at_least_one_question: questions_required_at_least_one_question$1,
3872
+ please_enter_number_of_answers_for_question_number: please_enter_number_of_answers_for_question_number$1,
3873
+ number_of_answers_must_be_greater_than_1_for_question_number: number_of_answers_must_be_greater_than_1_for_question_number$1,
3874
+ "please_choose_at_least_one_answer_for_question_number ": "Please choose at least one answer for question number {{number}}",
3875
+ correct_answer_must_be_less_than_for_question_number: correct_answer_must_be_less_than_for_question_number$1,
3876
+ update_exam_successfully: update_exam_successfully$1,
3877
+ create_exam_successfully: create_exam_successfully$1,
3878
+ create_notification: create_notification$1,
3879
+ update_notification: update_notification$1,
3880
+ new_notification: new_notification$1,
3881
+ are_you_sure_to_delete_notification: are_you_sure_to_delete_notification$1,
3882
+ answer_list: answer_list$1,
3883
+ are_you_sure_to_delete_question: are_you_sure_to_delete_question$1,
3884
+ school_name_is_required: school_name_is_required$1,
3885
+ phone_number_is_not_valid: phone_number_is_not_valid$1,
3886
+ role_is_required: role_is_required$1,
3887
+ student_grade_is_required: student_grade_is_required$1,
3888
+ major_is_required: major_is_required$1,
3889
+ phone_number_is_required: phone_number_is_required$1,
3890
+ parent_name_is_required: parent_name_is_required$1,
3891
+ category_name: category_name$1,
3892
+ categories: categories$1,
3893
+ role: role$1,
3894
+ total_uses: total_uses$1,
3895
+ articles: articles$1,
3896
+ add_lesson: add_lesson$1,
3897
+ the_code_has_been_copied_to_your_clipboard: the_code_has_been_copied_to_your_clipboard$1
3535
3898
  };
3536
3899
 
3537
3900
  i18n.use(reactI18next.initReactI18next).init({
@@ -3625,12 +3988,12 @@ var TheLanguageDropdown = function TheLanguageDropdown() {
3625
3988
  })));
3626
3989
  };
3627
3990
 
3628
- var useSwitchAcademy = function useSwitchAcademy(role, navigate, homeAcademyUrl, homeUrl) {
3991
+ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl, homeUrl) {
3629
3992
  if (role === void 0) {
3630
3993
  role = exports.Role.Student;
3631
3994
  }
3632
3995
  var dispatch = reactRedux.useDispatch();
3633
- var _useLogin = useLogin(navigate, homeAcademyUrl, homeUrl),
3996
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl),
3634
3997
  handleLoginAccessToken = _useLogin.handleLoginAccessToken;
3635
3998
  var _useState = React.useState(false),
3636
3999
  dropdownOpen = _useState[0],
@@ -3752,11 +4115,11 @@ var MenuItemCustom = material.styled(MenuItem)(function () {
3752
4115
  var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
3753
4116
  var _user$roles, _selectedAcademy$name, _selectedAcademy$name2;
3754
4117
  var role = _ref.role,
3755
- navigate = _ref.navigate,
4118
+ history = _ref.history,
3756
4119
  homeAcademyUrl = _ref.homeAcademyUrl,
3757
4120
  homeUrl = _ref.homeUrl,
3758
4121
  hideAcademyName = _ref.hideAcademyName;
3759
- var _useSwitchAcademy = useSwitchAcademy(role, navigate, homeAcademyUrl, homeUrl),
4122
+ var _useSwitchAcademy = useSwitchAcademy(role, history, homeAcademyUrl, homeUrl),
3760
4123
  academyList = _useSwitchAcademy.academyList,
3761
4124
  handleSwitchAcademy = _useSwitchAcademy.handleSwitchAcademy,
3762
4125
  selectedAcademy = _useSwitchAcademy.selectedAcademy;
@@ -4473,14 +4836,14 @@ var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
4473
4836
  return React__default.createElement(formik.Form, null, React__default.createElement("label", {
4474
4837
  htmlFor: "content",
4475
4838
  className: styles$1['form-label'] + " " + styles$1['form-label-dialog']
4476
- }, "\uC9C8\uBB38\uD560 \uBB38\uC81C"), React__default.createElement(formik.Field, {
4839
+ }, t('questions_to_ask')), React__default.createElement(formik.Field, {
4477
4840
  id: "content",
4478
4841
  style: {
4479
4842
  paddingRight: '40px'
4480
4843
  },
4481
4844
  name: "content",
4482
4845
  validate: validate,
4483
- placeholder: "\uBB38\uC81C\uAC00 \uC5B4\uB824\uC6CC\uC694",
4846
+ placeholder: t('the_problem_is_difficult'),
4484
4847
  className: styles$1['form-control']
4485
4848
  }), React__default.createElement(material.DialogActions, {
4486
4849
  sx: {
@@ -4499,7 +4862,7 @@ var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
4499
4862
  fontWeight: 700,
4500
4863
  fontSize: '14px',
4501
4864
  lineHeight: '16.71px'
4502
- }, "\uCDE8\uC18C")), React__default.createElement(material.Button, {
4865
+ }, t('cancel'))), React__default.createElement(material.Button, {
4503
4866
  variant: 'contained',
4504
4867
  sx: {
4505
4868
  bgcolor: styles.dark
@@ -4511,7 +4874,7 @@ var UpdateMessageDialog = function UpdateMessageDialog(_ref) {
4511
4874
  fontSize: '14px',
4512
4875
  lineHeight: '16.71px',
4513
4876
  color: '#FFFFFF'
4514
- }, "\uB4F1\uB85D\uD558\uAE30"))));
4877
+ }, t('registration')))));
4515
4878
  }) : React__default.createElement(material.Box, null, React__default.createElement(material.Stack, {
4516
4879
  display: "flex",
4517
4880
  flexDirection: "column",
@@ -4647,6 +5010,8 @@ var ChatList = function ChatList(_ref) {
4647
5010
  handleUpdateMessage = _ref.handleUpdateMessage,
4648
5011
  handleDeleteMessage = _ref.handleDeleteMessage,
4649
5012
  listItemRef = _ref.listItemRef;
5013
+ var _useTranslation = reactI18next.useTranslation(),
5014
+ t = _useTranslation.t;
4650
5015
  var filterMessage = React.useMemo(function () {
4651
5016
  var prevTime = 0;
4652
5017
  var prevSender;
@@ -4669,7 +5034,7 @@ var ChatList = function ChatList(_ref) {
4669
5034
  className: styles$1["list"] + " " + styles$1["padding-content"] + " d-flex h-100 flex-column mb-0 " + (!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) ? 'justify-content-center' : '')
4670
5035
  }, !(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && React__default.createElement("li", {
4671
5036
  className: "text-muted text-center fst-italic fs-6"
4672
- }, "No message"), !!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && filterMessage.map(function (message) {
5037
+ }, t('no_message')), !!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && filterMessage.map(function (message) {
4673
5038
  return React__default.createElement(ChatItem, Object.assign({
4674
5039
  key: message.id
4675
5040
  }, message, {
@@ -4789,7 +5154,7 @@ var InputChat = function InputChat(_ref) {
4789
5154
  fontSize: "10px",
4790
5155
  lineHeight: "11.93px",
4791
5156
  color: "#97A1AF"
4792
- }, "\uC548\uB0B4 \uD14D\uC2A4\uD2B8\uC785\uB2C8\uB2E4.")), React__default.createElement(material.Box, {
5157
+ }, t('this_is_the_guidance_text'))), React__default.createElement(material.Box, {
4793
5158
  display: "flex",
4794
5159
  flexDirection: "column",
4795
5160
  justifyContent: "flex-end",
@@ -5103,7 +5468,7 @@ var ChatHeader = function ChatHeader(_ref) {
5103
5468
  fontSize: "13px",
5104
5469
  lineHeight: "15.51px",
5105
5470
  color: styles.dark
5106
- }, "\uC644\uB8CC \uCC98\uB9AC"))) : React__default.createElement("div", null));
5471
+ }, t('complete_processing')))) : React__default.createElement("div", null));
5107
5472
  };
5108
5473
  return React__default.createElement(material.Grid, {
5109
5474
  container: true
@@ -7840,10 +8205,13 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
7840
8205
  var initialValues = defaultValue !== null && typeof defaultValue !== "undefined" ? options.find(function (option) {
7841
8206
  return option.value === defaultValue;
7842
8207
  }) || null : null;
8208
+ var optionValue = value !== null && typeof value !== "undefined" ? options.find(function (option) {
8209
+ return option.value === value;
8210
+ }) || null : null;
7843
8211
  return React__default.createElement(Select__default, Object.assign({
7844
8212
  isDisabled: isDisabled,
7845
8213
  options: options,
7846
- value: value,
8214
+ value: optionValue,
7847
8215
  defaultValue: initialValues,
7848
8216
  menuPlacement: scrollBottom ? "top" : "auto",
7849
8217
  isMulti: isMulti,
@@ -7866,7 +8234,6 @@ var SubjectSelector = function SubjectSelector(_ref) {
7866
8234
  title = _ref.title,
7867
8235
  isMulti = _ref.isMulti,
7868
8236
  minimumTextSearchLength = _ref.minimumTextSearchLength,
7869
- placeholder = _ref.placeholder,
7870
8237
  defaultValueAtFirst = _ref.defaultValueAtFirst,
7871
8238
  isDisabled = _ref.isDisabled;
7872
8239
  var _useState = React.useState([]),
@@ -7952,7 +8319,6 @@ var SubjectSelector = function SubjectSelector(_ref) {
7952
8319
  return setSearchString(inputValue);
7953
8320
  },
7954
8321
  isLoading: isLoading,
7955
- placeholder: (placeholder != null ? placeholder : minimumTextSearchLength) ? "Type at least " + minimumTextSearchLength + " characters to search" : undefined,
7956
8322
  isMulti: isMulti,
7957
8323
  value: value,
7958
8324
  onChange: handleChange,
@@ -8176,12 +8542,16 @@ var useExamDetailView = function useExamDetailView(props) {
8176
8542
  var durationOptions = React.useMemo(function () {
8177
8543
  var options = DURATION_OPTIONS.map(function (i) {
8178
8544
  return {
8179
- label: i + "\uBD84",
8545
+ label: t('mins_mins', {
8546
+ mins: i
8547
+ }),
8180
8548
  value: i
8181
8549
  };
8182
8550
  });
8183
8551
  if (!!exam.duration && exam.duration > DURATION_OPTIONS[DURATION_OPTIONS.length - 1]) return [].concat(options, [{
8184
- label: exam.duration + "\uBD84",
8552
+ label: t('mins_mins', {
8553
+ mins: exam.duration
8554
+ }),
8185
8555
  value: exam.duration
8186
8556
  }]);
8187
8557
  return options;
@@ -8311,7 +8681,7 @@ var ExamDetailView = function ExamDetailView(_ref) {
8311
8681
  onClick: handleAddArticle
8312
8682
  }, React__default.createElement(fa.FaPlusCircle, {
8313
8683
  className: "me-2"
8314
- }), "\uBB38\uD56D \uCD94\uAC00\uD558\uAE30")));
8684
+ }), t('add_questions'))));
8315
8685
  };
8316
8686
 
8317
8687
  var _excluded$4 = ["isOpen", "onClose", "handleSaveExam"];
@@ -8570,18 +8940,28 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8570
8940
  var _state$common;
8571
8941
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
8572
8942
  });
8943
+ var language = reactRedux.useSelector(function (state) {
8944
+ var _state$common2;
8945
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
8946
+ });
8573
8947
  var initialAcademySearchParam = function initialAcademySearchParam() {
8574
8948
  var paramAcademyDomain = searchParams.get("domain");
8949
+ var paramLang = searchParams.get("lang");
8575
8950
  var domain = getAcademyDomain();
8576
8951
  var pathname = window.location.pathname.toLowerCase();
8952
+ var isUpdateSearchParam = false;
8953
+ if ((!paramLang || paramLang.toLowerCase() !== language) && language) {
8954
+ searchParams.set("lang", language);
8955
+ isUpdateSearchParam = true;
8956
+ }
8577
8957
  if (!!user !== isAuthPage) return;
8578
8958
  var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
8579
8959
  if (!academyDomain) {
8580
8960
  if (!superUrls.some(function (i) {
8581
8961
  return pathname.startsWith(i);
8582
8962
  })) {
8583
- !paramAcademyDomain && domain && searchParams.append("domain", domain);
8584
- pushTo({
8963
+ !paramAcademyDomain && domain && searchParams.set("domain", domain);
8964
+ pushTo(history, {
8585
8965
  pathname: homeUrl,
8586
8966
  search: searchParams.toString()
8587
8967
  });
@@ -8589,16 +8969,17 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8589
8969
  }
8590
8970
  if (paramAcademyDomain) {
8591
8971
  searchParams["delete"]("domain");
8592
- pushTo(_extends({}, window.location, {
8972
+ pushTo(history, _extends({}, window.location, {
8593
8973
  search: searchParams.toString()
8594
8974
  }));
8975
+ return;
8595
8976
  }
8596
8977
  } else {
8597
8978
  if (superUrls.some(function (i) {
8598
8979
  return pathname.startsWith(i);
8599
8980
  })) {
8600
8981
  searchParams["delete"]("domain");
8601
- pushTo({
8982
+ pushTo(history, {
8602
8983
  pathname: homeAcademyUrl,
8603
8984
  search: searchParams.toString()
8604
8985
  });
@@ -8609,19 +8990,20 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8609
8990
  return;
8610
8991
  }
8611
8992
  if (!paramAcademyDomain) {
8612
- !paramAcademyDomain && searchParams.append("domain", academyDomain);
8613
- pushTo(_extends({}, window.location, {
8993
+ !paramAcademyDomain && searchParams.set("domain", academyDomain);
8994
+ pushTo(history, _extends({}, window.location, {
8614
8995
  search: searchParams.toString()
8615
8996
  }));
8997
+ return;
8616
8998
  }
8617
8999
  }
8618
- };
8619
- var pushTo = function pushTo(data) {
8620
- if (history.push) history.push(data);else history(data);
9000
+ if (isUpdateSearchParam) pushTo(history, _extends({}, window.location, {
9001
+ search: searchParams.toString()
9002
+ }));
8621
9003
  };
8622
9004
  React.useEffect(function () {
8623
9005
  initialAcademySearchParam();
8624
- }, [window.location.pathname, user === null || user === void 0 ? void 0 : user.academyDomain, window.location.search]);
9006
+ }, [window.location.pathname, window.location.search, user === null || user === void 0 ? void 0 : user.academyDomain, language]);
8625
9007
  };
8626
9008
 
8627
9009
  var DEFAULT_PAGING_RESPONSE = {
@@ -9049,6 +9431,8 @@ var CustomCreatable = function CustomCreatable(_ref) {
9049
9431
  }) : options.find(function (i) {
9050
9432
  return i.value == value;
9051
9433
  });
9434
+ var _useTranslation = reactI18next.useTranslation(),
9435
+ t = _useTranslation.t;
9052
9436
  return React__default.createElement(CreatableSelect, Object.assign({
9053
9437
  isClearable: true,
9054
9438
  isDisabled: isDisabled,
@@ -9063,7 +9447,8 @@ var CustomCreatable = function CustomCreatable(_ref) {
9063
9447
  DropdownIndicator: DropdownIndicator,
9064
9448
  Option: CustomOption
9065
9449
  },
9066
- styles: customStyles
9450
+ styles: customStyles,
9451
+ placeholder: t("select_placeholder")
9067
9452
  }, rest));
9068
9453
  };
9069
9454
 
@@ -9083,6 +9468,8 @@ var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
9083
9468
  }) : options.find(function (i) {
9084
9469
  return i.value == value;
9085
9470
  });
9471
+ var _useTranslation = reactI18next.useTranslation(),
9472
+ t = _useTranslation.t;
9086
9473
  return React__default.createElement(Select__default, Object.assign({
9087
9474
  isDisabled: isDisabled,
9088
9475
  options: options,
@@ -9097,7 +9484,8 @@ var CustomAsyncSelect = function CustomAsyncSelect(_ref) {
9097
9484
  DropdownIndicator: DropdownIndicator,
9098
9485
  Option: CustomOption
9099
9486
  },
9100
- styles: customStyles
9487
+ styles: customStyles,
9488
+ placeholder: t("select_placeholder")
9101
9489
  }, rest));
9102
9490
  };
9103
9491
 
@@ -9927,7 +10315,7 @@ var defaultSeries = function defaultSeries(t) {
9927
10315
  }];
9928
10316
  };
9929
10317
 
9930
- var useExamResult = function useExamResult(searchParam, navigate, examSessionId, studentId, code, handleChangeTab, selectedTab) {
10318
+ var useExamResult = function useExamResult(searchParam, history, examSessionId, studentId, code, handleChangeTab, selectedTab) {
9931
10319
  var _allSeries$dataChartI;
9932
10320
  if (examSessionId === void 0) {
9933
10321
  examSessionId = 0;
@@ -10082,7 +10470,7 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
10082
10470
  }
10083
10471
  };
10084
10472
  var handleExit = function handleExit() {
10085
- navigate("/student/my-story/live-main");
10473
+ pushTo(history, "/student/my-story/live-main");
10086
10474
  };
10087
10475
  var totalTime = React.useMemo(function () {
10088
10476
  var _resultData$questions;
@@ -11790,7 +12178,7 @@ function CreateNewQuestionDialog(_ref) {
11790
12178
  fontSize: '16px',
11791
12179
  lineHeight: '19.09px',
11792
12180
  color: '#202B37'
11793
- }, "\uBB38\uC81C \uC9C8\uBB38\uD558\uAE30")), React__default.createElement(IconButton, {
12181
+ }, t('ask_a_question'))), React__default.createElement(IconButton, {
11794
12182
  "aria-label": "close",
11795
12183
  sx: {
11796
12184
  position: 'absolute',
@@ -11827,7 +12215,7 @@ function CreateNewQuestionDialog(_ref) {
11827
12215
  }, React__default.createElement(material.Stack, null, React__default.createElement("label", {
11828
12216
  htmlFor: "questions",
11829
12217
  className: styles['form-label'] + " " + styles$4['form-label-dialog']
11830
- }, "\uC9C8\uBB38\uD560 \uBB38\uC81C"), React__default.createElement(formik.Field, {
12218
+ }, t('questions_to_ask')), React__default.createElement(formik.Field, {
11831
12219
  as: "select",
11832
12220
  id: "questions",
11833
12221
  name: "questionId",
@@ -11844,7 +12232,7 @@ function CreateNewQuestionDialog(_ref) {
11844
12232
  }))), React__default.createElement(material.Stack, null, React__default.createElement("label", {
11845
12233
  htmlFor: "content-question",
11846
12234
  className: styles['form-label'] + " " + styles$4['form-label-dialog']
11847
- }, "\uC9C8\uBB38 \uB0B4\uC6A9"), React__default.createElement(material.Box, {
12235
+ }, t('question_content')), React__default.createElement(material.Box, {
11848
12236
  position: 'relative',
11849
12237
  display: 'flex',
11850
12238
  flexDirection: 'row',
@@ -11855,7 +12243,7 @@ function CreateNewQuestionDialog(_ref) {
11855
12243
  paddingRight: '40px'
11856
12244
  },
11857
12245
  name: "content",
11858
- placeholder: "\uBB38\uC81C\uAC00 \uC5B4\uB824\uC6CC\uC694",
12246
+ placeholder: t('the_problem_is_difficult'),
11859
12247
  className: styles['form-control']
11860
12248
  }), (errors === null || errors === void 0 ? void 0 : errors.content) && React__default.createElement(material.Box, {
11861
12249
  position: 'absolute',
@@ -11870,7 +12258,7 @@ function CreateNewQuestionDialog(_ref) {
11870
12258
  fontSize: '10px',
11871
12259
  lineHeight: '11.93px',
11872
12260
  color: !(errors !== null && errors !== void 0 && errors.content) ? '#97A1AF' : '#F34B4B'
11873
- }, !(errors !== null && errors !== void 0 && errors.content) ? '질문 내용이 상담사에게 전달됩니다.' : '질문할 내용을 입력해주세요.'))), React__default.createElement(DialogActions, {
12261
+ }, !(errors !== null && errors !== void 0 && errors.content) ? t('your_questions_will_be_sent_to_the_counselor') : t('please_enter_your_question')))), React__default.createElement(DialogActions, {
11874
12262
  sx: {
11875
12263
  display: 'flex',
11876
12264
  justifyContent: 'space-between',
@@ -11888,7 +12276,7 @@ function CreateNewQuestionDialog(_ref) {
11888
12276
  fontWeight: 700,
11889
12277
  fontSize: '14px',
11890
12278
  lineHeight: '16.71px'
11891
- }, "\uCDE8\uC18C")), React__default.createElement(Button, {
12279
+ }, t('cancel'))), React__default.createElement(Button, {
11892
12280
  variant: 'contained',
11893
12281
  sx: {
11894
12282
  bgcolor: styles.dark
@@ -11900,7 +12288,7 @@ function CreateNewQuestionDialog(_ref) {
11900
12288
  fontSize: '14px',
11901
12289
  lineHeight: '16.71px',
11902
12290
  color: '#FFFFFF'
11903
- }, "\uB4F1\uB85D\uD558\uAE30"))));
12291
+ }, t('registration')))));
11904
12292
  })));
11905
12293
  }
11906
12294
 
@@ -12711,6 +13099,8 @@ function CreateNewQuestionDialog$1(_ref) {
12711
13099
  openCreateQuestionDialog = _ref.openCreateQuestionDialog,
12712
13100
  toggleCreateQuestion = _ref.toggleCreateQuestion,
12713
13101
  examSessionId = _ref.examSessionId;
13102
+ var _useTranslation = reactI18next.useTranslation(),
13103
+ t = _useTranslation.t;
12714
13104
  return React__default.createElement(material.Dialog, {
12715
13105
  onClose: toggleCreateQuestion,
12716
13106
  open: openCreateQuestionDialog,
@@ -12726,7 +13116,7 @@ function CreateNewQuestionDialog$1(_ref) {
12726
13116
  fontSize: '16px',
12727
13117
  lineHeight: '19.09px',
12728
13118
  color: '#202B37'
12729
- }, "\uBB38\uC81C \uC9C8\uBB38\uD558\uAE30")), React__default.createElement(IconButton, {
13119
+ }, t('ask_a_question'))), React__default.createElement(IconButton, {
12730
13120
  "aria-label": "close",
12731
13121
  sx: {
12732
13122
  position: 'absolute',
@@ -12754,7 +13144,7 @@ function CreateNewQuestionDialog$1(_ref) {
12754
13144
  return React__default.createElement(formik.Form, null, React__default.createElement("label", {
12755
13145
  htmlFor: "content-question",
12756
13146
  className: styles['form-label'] + " " + styles$4['form-label-dialog']
12757
- }, "\uC9C8\uBB38 \uB0B4\uC6A9"), React__default.createElement(material.Box, {
13147
+ }, t('question_content')), React__default.createElement(material.Box, {
12758
13148
  position: 'relative',
12759
13149
  display: 'flex',
12760
13150
  flexDirection: 'row',
@@ -12765,7 +13155,7 @@ function CreateNewQuestionDialog$1(_ref) {
12765
13155
  paddingRight: '40px'
12766
13156
  },
12767
13157
  name: "content",
12768
- placeholder: "\uBB38\uC81C\uAC00 \uC5B4\uB824\uC6CC\uC694",
13158
+ placeholder: t('the_problem_is_difficult'),
12769
13159
  className: styles['form-control']
12770
13160
  }), (errors === null || errors === void 0 ? void 0 : errors.content) && React__default.createElement(material.Box, {
12771
13161
  position: 'absolute',
@@ -12780,7 +13170,7 @@ function CreateNewQuestionDialog$1(_ref) {
12780
13170
  fontSize: '10px',
12781
13171
  lineHeight: '11.93px',
12782
13172
  color: !(errors !== null && errors !== void 0 && errors.content) ? '#97A1AF' : '#F34B4B'
12783
- }, !(errors !== null && errors !== void 0 && errors.content) ? '질문 내용이 상담사에게 전달됩니다.' : '질문할 내용을 입력해주세요.'), React__default.createElement(DialogActions, {
13173
+ }, !(errors !== null && errors !== void 0 && errors.content) ? t('your_questions_will_be_sent_to_the_counselor') : t('please_enter_your_question')), React__default.createElement(DialogActions, {
12784
13174
  sx: {
12785
13175
  display: 'flex',
12786
13176
  justifyContent: 'space-between',
@@ -12797,7 +13187,7 @@ function CreateNewQuestionDialog$1(_ref) {
12797
13187
  fontWeight: 700,
12798
13188
  fontSize: '14px',
12799
13189
  lineHeight: '16.71px'
12800
- }, "\uCDE8\uC18C")), React__default.createElement(Button, {
13190
+ }, t('cancel'))), React__default.createElement(Button, {
12801
13191
  variant: 'contained',
12802
13192
  sx: {
12803
13193
  bgcolor: styles.dark
@@ -12809,7 +13199,7 @@ function CreateNewQuestionDialog$1(_ref) {
12809
13199
  fontSize: '14px',
12810
13200
  lineHeight: '16.71px',
12811
13201
  color: '#FFFFFF'
12812
- }, "\uB4F1\uB85D\uD558\uAE30"))));
13202
+ }, t('registration')))));
12813
13203
  })));
12814
13204
  }
12815
13205
 
@@ -12863,14 +13253,14 @@ var useTab = function useTab() {
12863
13253
 
12864
13254
  var ExamResultV2 = function ExamResultV2(_ref) {
12865
13255
  var searchParams = _ref.searchParams,
12866
- onNavigate = _ref.onNavigate,
13256
+ history = _ref.history,
12867
13257
  examSessionId = _ref.examSessionId,
12868
13258
  studentId = _ref.studentId,
12869
13259
  code = _ref.code;
12870
13260
  var _useTab = useTab(),
12871
13261
  selected = _useTab.selected,
12872
13262
  handleChangeTab = _useTab.handleChangeTab;
12873
- var _useExamResult = useExamResult(searchParams, onNavigate, examSessionId, studentId, code, handleChangeTab, selected),
13263
+ var _useExamResult = useExamResult(searchParams, history, examSessionId, studentId, code, handleChangeTab, selected),
12874
13264
  examTime = _useExamResult.examTime,
12875
13265
  series = _useExamResult.series,
12876
13266
  allSeries = _useExamResult.allSeries,
@@ -13378,7 +13768,7 @@ var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
13378
13768
  };
13379
13769
 
13380
13770
  var useLogin$2 = function useLogin(_ref) {
13381
- var onNavigate = _ref.onNavigate,
13771
+ var history = _ref.history,
13382
13772
  _ref$role = _ref.role,
13383
13773
  role = _ref$role === void 0 ? exports.Role.Student : _ref$role,
13384
13774
  homeAcademyUrl = _ref.homeAcademyUrl,
@@ -13398,7 +13788,7 @@ var useLogin$2 = function useLogin(_ref) {
13398
13788
  var academyDomain = paramDomain || getAcademyDomain();
13399
13789
  var handleClearAcademyDomain = function handleClearAcademyDomain() {
13400
13790
  localStorage.removeItem(ACADEMY_DOMAIN);
13401
- onNavigate("/login-with-account");
13791
+ pushTo(history, "/login-with-account");
13402
13792
  };
13403
13793
  var handleValidateForm = function handleValidateForm(_ref2) {
13404
13794
  var email = _ref2.email,
@@ -13463,13 +13853,11 @@ var useLogin$2 = function useLogin(_ref) {
13463
13853
  !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
13464
13854
  !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
13465
13855
  dispatch(setUser(_extends({}, data)));
13466
- if (redirectUrl) {
13467
- onNavigate(redirectUrl);
13468
- }
13856
+ if (redirectUrl) pushTo(history, redirectUrl);
13469
13857
  };
13470
13858
  React.useEffect(function () {
13471
13859
  var token = getAccessToken$1();
13472
- if (!!token) onNavigate("/");
13860
+ if (!!token) pushTo(history, "/");
13473
13861
  }, []);
13474
13862
  return {
13475
13863
  handleSubmit: handleSubmit,
@@ -13481,7 +13869,7 @@ var useLogin$2 = function useLogin(_ref) {
13481
13869
  };
13482
13870
 
13483
13871
  function SignIn(_ref) {
13484
- var onNavigate = _ref.onNavigate,
13872
+ var history = _ref.history,
13485
13873
  role = _ref.role,
13486
13874
  homeAcademyUrl = _ref.homeAcademyUrl,
13487
13875
  homeUrl = _ref.homeUrl,
@@ -13490,7 +13878,7 @@ function SignIn(_ref) {
13490
13878
  var _useTranslation = reactI18next.useTranslation(),
13491
13879
  t = _useTranslation.t;
13492
13880
  var _useLoginWithPassword = useLogin$2({
13493
- onNavigate: onNavigate,
13881
+ history: history,
13494
13882
  role: role,
13495
13883
  homeAcademyUrl: homeAcademyUrl,
13496
13884
  homeUrl: homeUrl,
@@ -13595,7 +13983,7 @@ var studentFullLogoEn = function studentFullLogoEn(_ref) {
13595
13983
  fill: "none",
13596
13984
  xmlns: "http://www.w3.org/2000/svg"
13597
13985
  }, React__default.createElement("g", {
13598
- "clip-path": "url(#clip0_3233_11779)"
13986
+ clipPath: "url(#clip0_3233_11779)"
13599
13987
  }, React__default.createElement("path", {
13600
13988
  d: "M9.24216 15.5417C9.24216 16.4045 9.73435 16.87 11.5816 17.5104C16.6013 19.2835 16.972 20.9321 16.972 24.4278V26.0764C16.972 29.5721 13.9684 30.8263 10.4489 30.8263C6.92944 30.8263 4 29.5721 4 26.0764V23.1973H9.29256V25.2165C9.29256 25.9785 9.83516 26.3729 10.5468 26.3729C11.2584 26.3729 11.8039 25.9785 11.8039 25.2165V24.6028C11.8039 21.9698 11.4096 21.7237 7.51948 20.173C4.69085 19.0374 4.07413 17.1902 4.07413 15.7136V13.3505C4.07413 9.85772 6.97985 8.60352 10.4964 8.60352C14.0129 8.60352 16.9216 9.85772 16.9216 13.3535V15.3964H11.7535V14.1896C11.7535 13.4513 11.2376 13.057 10.523 13.057C9.76103 13.057 9.24216 13.3535 9.24216 14.1392V15.5417Z",
13601
13989
  fill: "#2BBA84"
@@ -13657,7 +14045,7 @@ var studentFullLogoKo = function studentFullLogoKo(_ref) {
13657
14045
  fill: "none",
13658
14046
  xmlns: "http://www.w3.org/2000/svg"
13659
14047
  }, React__default.createElement("g", {
13660
- "clip-path": "url(#clip0_3233_7642)"
14048
+ clipPath: "url(#clip0_3233_7642)"
13661
14049
  }, React__default.createElement("path", {
13662
14050
  d: "M0 24.4625H20.5166V30.0272H0V24.4625ZM0.282173 21.434L5.84688 6.177H12.0777L11.4116 7.97175H16.7729C18.8498 7.97175 19.8505 9.0217 19.8505 11.0494V21.4373H13.6952V13.2805H9.48888L6.53919 21.4373H0.282173V21.434Z",
13663
14051
  fill: "#2BBA84"
@@ -13710,7 +14098,7 @@ var teacherFullLogoKo = function teacherFullLogoKo(_ref) {
13710
14098
  fill: "none",
13711
14099
  xmlns: "http://www.w3.org/2000/svg"
13712
14100
  }, React__default.createElement("g", {
13713
- "clip-path": "url(#clip0_3233_7868)"
14101
+ clipPath: "url(#clip0_3233_7868)"
13714
14102
  }, React__default.createElement("path", {
13715
14103
  d: "M0 38.9726H20.5175V44.5391H0V38.9726ZM0.284008 35.9458L5.85056 20.6865H12.0825L11.4171 22.4798H16.7767C18.8541 22.4798 19.8521 23.5307 19.8521 25.5552V35.9418H13.6973V27.7867H9.48991L6.54029 35.9418H0.284008V35.9458Z",
13716
14104
  fill: "#2BBA84"
@@ -13875,32 +14263,32 @@ var singleLogo = function singleLogo(_ref) {
13875
14263
  }, React__default.createElement("defs", null, React__default.createElement("clipPath", {
13876
14264
  id: "1"
13877
14265
  }, React__default.createElement("path", {
13878
- "clip-rule": "evenodd",
14266
+ clipRule: "evenodd",
13879
14267
  d: "M0 0L207 0L207 418L0 418z"
13880
14268
  }))), React__default.createElement("g", {
13881
14269
  transform: "matrix(0.119617224 0 0 0.119617224 0.119617224 -0)"
13882
14270
  }, React__default.createElement("g", {
13883
- "clip-path": "url(#1)"
14271
+ clipPath: "url(#1)"
13884
14272
  }, React__default.createElement("path", {
13885
14273
  d: "M9.66724 418C 136.043 342.286 179.498 275.873 207.032 138.127L207.032 138.127L207.032 344.635C 207.032 385.143 171.107 418 126.791 418L126.791 418L9.66724 418z",
13886
14274
  stroke: "none",
13887
14275
  fill: "#2BBA84",
13888
- "fill-rule": "nonzero"
14276
+ fillRule: "nonzero"
13889
14277
  }), React__default.createElement("path", {
13890
14278
  d: "M101.171 163.206L19.845 83.1111L19.845 188.064L101.171 286.159C 148.167 225.175 177.424 148.413 182.497 80.5714L182.497 80.5714L101.171 163.175L101.171 163.206z",
13891
14279
  stroke: "none",
13892
14280
  fill: "#2BBA84",
13893
- "fill-rule": "nonzero"
14281
+ fillRule: "nonzero"
13894
14282
  }), React__default.createElement("path", {
13895
14283
  d: "M101.171 0L54.1428 68.0317L101.171 112.952L148.167 65.4921L101.171 0z",
13896
14284
  stroke: "none",
13897
14285
  fill: "#2BBA84",
13898
- "fill-rule": "nonzero"
14286
+ fillRule: "nonzero"
13899
14287
  }), React__default.createElement("path", {
13900
14288
  d: "M0 222.762L80.6879 319.587C 80.6879 319.587 65.2458 342.54 0 376.952L0 376.952L0 222.762z",
13901
14289
  stroke: "none",
13902
14290
  fill: "#2BBA84",
13903
- "fill-rule": "nonzero"
14291
+ fillRule: "nonzero"
13904
14292
  }))));
13905
14293
  };
13906
14294
 
@@ -13910,7 +14298,7 @@ var Header = function Header(_ref) {
13910
14298
  homeRoute = _ref.homeRoute,
13911
14299
  headerTabs = _ref.headerTabs,
13912
14300
  role = _ref.role,
13913
- navigate = _ref.navigate,
14301
+ history = _ref.history,
13914
14302
  onSignOut = _ref.onSignOut;
13915
14303
  var _useTranslation = reactI18next.useTranslation(),
13916
14304
  t = _useTranslation.t;
@@ -13996,7 +14384,7 @@ var Header = function Header(_ref) {
13996
14384
  homeAcademyUrl: academyListRoute.path,
13997
14385
  homeUrl: homeRoute.path,
13998
14386
  role: role,
13999
- navigate: navigate,
14387
+ history: history,
14000
14388
  hideAcademyName: !isLargerThanXL && headerTabs.length > 6
14001
14389
  })), React__default.createElement("div", {
14002
14390
  className: "me-2"
@@ -14014,6 +14402,156 @@ var Header = function Header(_ref) {
14014
14402
  }))));
14015
14403
  };
14016
14404
 
14405
+ var ACADEMY_URL$1 = BASE_URL + "/api/academy";
14406
+ var getAcademyList$1 = function getAcademyList() {
14407
+ return api.get("" + ACADEMY_URL$1);
14408
+ };
14409
+ var switchAcademy$1 = function switchAcademy(academyId) {
14410
+ return api.post(ACADEMY_URL$1 + "/switch-academy?academyId=" + academyId);
14411
+ };
14412
+
14413
+ var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl) {
14414
+ var dispatch = reactRedux.useDispatch();
14415
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
14416
+ handleLoginAccessToken = _useLogin.handleLoginAccessToken;
14417
+ var _useState = React.useState([]),
14418
+ academyList = _useState[0],
14419
+ setAcademyList = _useState[1];
14420
+ var email = reactRedux.useSelector(function (state) {
14421
+ var _state$common, _state$common$user;
14422
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.email;
14423
+ });
14424
+ var getAcademies = function getAcademies() {
14425
+ try {
14426
+ var _temp2 = function _temp2() {
14427
+ dispatch(setLoading(false));
14428
+ };
14429
+ dispatch(setLoading(true));
14430
+ var _temp = _catch(function () {
14431
+ return Promise.resolve(getAcademyList$1()).then(function (res) {
14432
+ setAcademyList(res.data.items || []);
14433
+ });
14434
+ }, function (error) {
14435
+ var _error$response, _error$response$data;
14436
+ reactToastify.toast.error((error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.tile) || "Get user academies failed");
14437
+ });
14438
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
14439
+ } catch (e) {
14440
+ return Promise.reject(e);
14441
+ }
14442
+ };
14443
+ var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
14444
+ try {
14445
+ var _temp4 = function _temp4() {
14446
+ dispatch(setLoading(false));
14447
+ };
14448
+ dispatch(setLoading(true));
14449
+ var _temp3 = _catch(function () {
14450
+ return Promise.resolve(switchAcademy$1(id)).then(function (res) {
14451
+ var data = res.data;
14452
+ var requestBody = {
14453
+ accessToken: data.accessToken,
14454
+ email: email,
14455
+ academyId: id,
14456
+ role: role
14457
+ };
14458
+ localStorage.setItem(ACADEMY_DOMAIN, domain);
14459
+ return Promise.resolve(handleLoginAccessToken(requestBody, false)).then(function () {});
14460
+ });
14461
+ }, function (error) {
14462
+ var _error$response2, _error$response2$data;
14463
+ reactToastify.toast.error((error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.tile) || "Failed");
14464
+ });
14465
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
14466
+ } catch (e) {
14467
+ return Promise.reject(e);
14468
+ }
14469
+ };
14470
+ React.useEffect(function () {
14471
+ getAcademies();
14472
+ }, []);
14473
+ return {
14474
+ academyList: academyList,
14475
+ handleSwitchAcademy: handleSwitchAcademy
14476
+ };
14477
+ };
14478
+
14479
+ var AcademyCard = function AcademyCard(_ref) {
14480
+ var theme = _ref.theme,
14481
+ academy = _ref.academy,
14482
+ onSwitch = _ref.onSwitch;
14483
+ var _useTranslation = reactI18next.useTranslation(),
14484
+ t = _useTranslation.t;
14485
+ var handleSwitchAcademy = function handleSwitchAcademy() {
14486
+ onSwitch(academy.id, academy.domain);
14487
+ };
14488
+ return React.createElement(Card, null, React.createElement(CardMedia, {
14489
+ sx: {
14490
+ width: "100%",
14491
+ aspectRatio: 4 / 3
14492
+ },
14493
+ image: academy.image || "/images/default.jpg",
14494
+ title: academy.name
14495
+ }), React.createElement(CardContent, null, React.createElement(Typography, {
14496
+ variant: "h6",
14497
+ component: "div"
14498
+ }, academy.name)), React.createElement(CardActions, null, React.createElement(Button, {
14499
+ sx: {
14500
+ bgColor: theme.palette.main_theme.dark
14501
+ },
14502
+ size: "medium",
14503
+ variant: "contained",
14504
+ onClick: handleSwitchAcademy
14505
+ }, t("switch"))));
14506
+ };
14507
+
14508
+ var AcademyList = function AcademyList(_ref) {
14509
+ var theme = _ref.theme,
14510
+ history = _ref.history,
14511
+ role = _ref.role,
14512
+ homeAcademyUrl = _ref.homeAcademyUrl,
14513
+ homeUrl = _ref.homeUrl,
14514
+ registerUrl = _ref.registerUrl;
14515
+ var _useTranslation = reactI18next.useTranslation(),
14516
+ t = _useTranslation.t;
14517
+ useAutoAcademyDomain(function () {}, history, [], "", window.location.pathname, true);
14518
+ var _useAcademyList = useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl),
14519
+ academyList = _useAcademyList.academyList,
14520
+ handleSwitchAcademy = _useAcademyList.handleSwitchAcademy;
14521
+ return React__default.createElement("div", {
14522
+ className: "py-3 px-4"
14523
+ }, React__default.createElement(Grid, {
14524
+ container: true,
14525
+ spacing: 3
14526
+ }, React__default.createElement(Grid, {
14527
+ item: true,
14528
+ xs: 12
14529
+ }, React__default.createElement(Typography, {
14530
+ fontSize: 24,
14531
+ fontWeight: 600
14532
+ }, t("academy_list"))), React__default.createElement(Grid, {
14533
+ item: true,
14534
+ xs: 12
14535
+ }, React__default.createElement(Grid, {
14536
+ container: true,
14537
+ spacing: 2
14538
+ }, academyList.map(function (i) {
14539
+ return React__default.createElement(Grid, {
14540
+ item: true,
14541
+ xs: 6,
14542
+ lg: 3,
14543
+ key: i.id
14544
+ }, React__default.createElement(AcademyCard, {
14545
+ theme: theme,
14546
+ academy: i,
14547
+ onSwitch: handleSwitchAcademy
14548
+ }));
14549
+ }), !academyList.length && React__default.createElement(Grid, {
14550
+ item: true,
14551
+ xs: 3
14552
+ }, React__default.createElement("span", null, t("no_academy_available"), "."))))));
14553
+ };
14554
+
14017
14555
  exports.moment = moment;
14018
14556
  Object.defineProperty(exports, 'I18nextProvider', {
14019
14557
  enumerable: true,
@@ -14042,6 +14580,7 @@ Object.defineProperty(exports, 'toast', {
14042
14580
  exports.ACADEMY_DOMAIN = ACADEMY_DOMAIN;
14043
14581
  exports.ACCESS_TOKEN = ACCESS_TOKEN;
14044
14582
  exports.AcademyHeaders = AcademyHeaders;
14583
+ exports.AcademyList = AcademyList;
14045
14584
  exports.AnswerCountSelector = AnswerCountSelector;
14046
14585
  exports.ArticleCategorySelector = ArticleCategorySelector;
14047
14586
  exports.ArticleGroupView = ArticleGroupView;