touchstudy-core 0.1.196 → 0.1.197

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/components/Chats/ChatContainer.d.ts +1 -5
  2. package/dist/components/Chats/components/InputChat.d.ts +2 -8
  3. package/dist/components/Chats/configs/constants.d.ts +1 -8
  4. package/dist/components/Chats/configs/types.d.ts +0 -2
  5. package/dist/components/Chats/hooks/useChatContainer.d.ts +2 -6
  6. package/dist/components/Selects/CustomSelectOption.d.ts +1 -1
  7. package/dist/index.css +16 -4
  8. package/dist/index.js +239 -1083
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.modern.js +244 -1088
  11. package/dist/index.modern.js.map +1 -1
  12. package/dist/layouts/TimerDialog.d.ts +3 -1
  13. package/dist/layouts/configs/constants.d.ts +2 -0
  14. package/dist/layouts/configs/enums.d.ts +6 -0
  15. package/dist/layouts/configs/fn.d.ts +3 -0
  16. package/dist/layouts/configs/types.d.ts +8 -0
  17. package/dist/layouts/hooks/useAlarm.d.ts +19 -0
  18. package/dist/layouts/hooks/useCountDownTimer.d.ts +6 -2
  19. package/dist/layouts/hooks/useTimers.d.ts +14 -0
  20. package/dist/layouts/partials/Alarm/AlarmClock.d.ts +12 -0
  21. package/dist/layouts/partials/Alarm/AlarmClockNote.d.ts +3 -0
  22. package/dist/layouts/partials/Alarm/AlarmClockPanel.d.ts +12 -0
  23. package/dist/layouts/partials/Alarm/AlarmClockPanelNote.d.ts +3 -0
  24. package/dist/layouts/partials/Alarm/AlarmClockTab.d.ts +14 -0
  25. package/dist/layouts/partials/Alarm/AlarmSpeakerCheckbox.d.ts +8 -0
  26. package/dist/layouts/partials/Alarm/AudioToastContent.d.ts +8 -0
  27. package/dist/layouts/partials/AlarmClock.d.ts +3 -1
  28. package/dist/layouts/partials/AlarmClockNote.d.ts +3 -0
  29. package/dist/layouts/partials/AlarmClockPanel.d.ts +3 -1
  30. package/dist/layouts/partials/AlarmClockPanelNote.d.ts +3 -0
  31. package/dist/layouts/partials/AlarmClockTab.d.ts +4 -3
  32. package/dist/layouts/partials/AudioToastContent.d.ts +8 -0
  33. package/dist/layouts/partials/StudyTimerTab.d.ts +2 -1
  34. package/dist/layouts/partials/TimeUpdateDialog.d.ts +7 -0
  35. package/dist/layouts/partials/Timer/StudyTimerTab.d.ts +13 -0
  36. package/dist/layouts/partials/Timer/TimeLineTabPanel.d.ts +8 -0
  37. package/dist/layouts/partials/Timer/TimeLineTabs.d.ts +11 -0
  38. package/dist/layouts/partials/Timer/TimeUpdateDialog.d.ts +7 -0
  39. package/dist/layouts/partials/Timer/TimerCountItem.d.ts +10 -0
  40. package/dist/layouts/partials/Timer/TimerDivider.d.ts +9 -0
  41. package/dist/layouts/partials/Timer/TimerItem.d.ts +12 -0
  42. package/dist/layouts/partials/Timer/TimerLineItem.d.ts +13 -0
  43. package/dist/layouts/partials/Timer/TimerTabPanel.d.ts +8 -0
  44. package/dist/layouts/partials/Timer/TimerTabs.d.ts +7 -0
  45. package/dist/layouts/partials/TimerItem.d.ts +2 -1
  46. package/dist/services/alarmService.d.ts +9 -0
  47. package/dist/utils/types/examResults.d.ts +1 -0
  48. package/dist/utils/types/subjects.d.ts +4 -2
  49. package/package.json +1 -2
@@ -13,11 +13,11 @@ export { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
13
13
  import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
14
14
  export { DemoContainer } from '@mui/x-date-pickers/internals/demo';
15
15
  import React__default, { useState, useEffect, Fragment as Fragment$1, useRef, useCallback, useMemo, memo, createElement } from 'react';
16
- import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, useMediaQuery, DialogContent, TextField, DialogActions, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, Slider, Slide, AppBar, Toolbar, Divider, CircularProgress, FormControl, RadioGroup, Radio, Accordion, AccordionSummary, AccordionDetails, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Skeleton, Tabs, Tab, Drawer, TableContainer, tableCellClasses, Popover, Switch, InputLabel, Chip, ListItemButton, ListItemAvatar, ListItemText, Badge, CardMedia as CardMedia$1, MenuList } from '@mui/material';
16
+ import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, useMediaQuery, DialogContent, TextField, DialogActions, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, CircularProgress, FormControl, RadioGroup, Radio, Accordion, AccordionSummary, AccordionDetails, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Divider, Skeleton, Tabs, Tab, Drawer, TableContainer, tableCellClasses, Popover, Switch, InputLabel, Chip, ListItemButton, ListItemAvatar, ListItemText, Badge, CardMedia as CardMedia$1, MenuList } from '@mui/material';
17
17
  import moment from 'moment';
18
18
  export { default as moment } from 'moment';
19
- import { FaSave, FaCaretDown, FaImage, FaPencilAlt, FaEraser, FaTrash, FaTimes, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaCheckCircle, FaShare, FaExchangeAlt, FaBell } from 'react-icons/fa';
20
- import { IoMdArrowBack, IoIosColorFill, IoMdUndo, IoMdRedo, IoIosAdd, IoMdSync, IoIosAlert, IoIosArrowDown, IoIosSearch, IoIosArrowUp, IoMdAdd } from 'react-icons/io';
19
+ import { FaSave, FaCaretDown, FaTrash, FaTimes, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaCheckCircle, FaShare, FaExchangeAlt, FaPencilAlt, FaBell } from 'react-icons/fa';
20
+ import { IoMdArrowBack, IoIosAdd, IoMdSync, IoIosAlert, IoIosArrowDown, IoIosSearch, IoIosArrowUp, IoMdAdd } from 'react-icons/io';
21
21
  import { IoClose, IoSearch, IoTime, IoChatbubbleEllipsesSharp, IoPrint, IoChevronDown, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCheckmark, IoCloseCircle, IoLogOut } from 'react-icons/io5';
22
22
  import _$a from 'lodash';
23
23
  import { useSelector, useDispatch } from 'react-redux';
@@ -40,10 +40,8 @@ import CreatableSelect from 'react-select/creatable';
40
40
  import tinymce from 'tinymce';
41
41
  import '@wiris/mathtype-tinymce6';
42
42
  import { Editor } from '@tinymce/tinymce-react';
43
- import { ReactSketchCanvas } from 'react-sketch-canvas';
44
- import { MdAlignHorizontalRight, MdAlignVerticalBottom, MdAlignHorizontalCenter, MdAlignVerticalCenter, MdAlignHorizontalLeft, MdAlignVerticalTop, MdOutlineZoomOutMap, MdDraw, MdExpandMore, MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdError } from 'react-icons/md';
45
- import { GrClear, GrClearOption, GrNext, GrPrevious } from 'react-icons/gr';
46
43
  import { FaTrashCan, FaCirclePlus, FaX, FaEye as FaEye$1, FaRotateRight, FaPencil, FaClockRotateLeft } from 'react-icons/fa6';
44
+ import { MdExpandMore, MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdError } from 'react-icons/md';
47
45
  import { yellow as yellow$1, blue, grey as grey$1 } from '@mui/material/colors';
48
46
  import Grid$1 from '@mui/material/Grid';
49
47
  import Card from '@mui/material/Card';
@@ -66,7 +64,8 @@ import { HiOutlinePencilAlt } from 'react-icons/hi';
66
64
  import TableCell$1 from '@mui/material/TableCell';
67
65
  import TableRow$1 from '@mui/material/TableRow';
68
66
  import html2pdf from 'html2pdf.js';
69
- import Slider$1 from 'react-slick';
67
+ import Slider from 'react-slick';
68
+ import { GrNext, GrPrevious } from 'react-icons/gr';
70
69
  import Table$1 from '@mui/material/Table';
71
70
  import TableBody$1 from '@mui/material/TableBody';
72
71
  import TableHead$1 from '@mui/material/TableHead';
@@ -1582,8 +1581,9 @@ var there_are_no_problems_you_were_working_on = "풀던 문제가 없습니다."
1582
1581
  var incomplete_exam = "미참가";
1583
1582
  var completed_exam = "참가";
1584
1583
  var failed_to_send_the_image_error = "이미지를 보내지 못했습니다: {{ message }}";
1585
- var sketch = "스케치";
1586
- var sketch_canvas = "스케치 캔버스";
1584
+ var exam_session = "시험 세션";
1585
+ var must_select_an_exam_first = "먼저 시험을 선택해야 합니다";
1586
+ var not_selected = "미선택";
1587
1587
  var lang_ko = {
1588
1588
  problem_solving: problem_solving,
1589
1589
  my_story: my_story,
@@ -2793,8 +2793,9 @@ var lang_ko = {
2793
2793
  incomplete_exam: incomplete_exam,
2794
2794
  completed_exam: completed_exam,
2795
2795
  failed_to_send_the_image_error: failed_to_send_the_image_error,
2796
- sketch: sketch,
2797
- sketch_canvas: sketch_canvas
2796
+ exam_session: exam_session,
2797
+ must_select_an_exam_first: must_select_an_exam_first,
2798
+ not_selected: not_selected
2798
2799
  };
2799
2800
 
2800
2801
  var problem_solving$1 = "Problem Solving";
@@ -4030,8 +4031,9 @@ var there_are_no_problems_you_were_working_on$1 = "There are no problems you wer
4030
4031
  var incomplete_exam$1 = "Incomplete";
4031
4032
  var completed_exam$1 = "Completed";
4032
4033
  var failed_to_send_the_image_error$1 = "Failed to send the image: {{ message }}";
4033
- var sketch$1 = "Sketch";
4034
- var sketch_canvas$1 = "Sketch canvas";
4034
+ var exam_session$1 = "Exam session";
4035
+ var must_select_an_exam_first$1 = "Must select an exam first";
4036
+ var not_selected$1 = "Not selected";
4035
4037
  var lang_en = {
4036
4038
  problem_solving: problem_solving$1,
4037
4039
  my_story: my_story$1,
@@ -5243,8 +5245,9 @@ var lang_en = {
5243
5245
  incomplete_exam: incomplete_exam$1,
5244
5246
  completed_exam: completed_exam$1,
5245
5247
  failed_to_send_the_image_error: failed_to_send_the_image_error$1,
5246
- sketch: sketch$1,
5247
- sketch_canvas: sketch_canvas$1
5248
+ exam_session: exam_session$1,
5249
+ must_select_an_exam_first: must_select_an_exam_first$1,
5250
+ not_selected: not_selected$1
5248
5251
  };
5249
5252
 
5250
5253
  i18n.use(initReactI18next).init({
@@ -7973,7 +7976,7 @@ var CustomSelect = function CustomSelect(_ref) {
7973
7976
  }, rest));
7974
7977
  };
7975
7978
 
7976
- var _excluded$3 = ["defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti", "valueById", "isTextbook"];
7979
+ var _excluded$3 = ["defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti", "valueById", "isTextbook", "styles"];
7977
7980
  var CustomSelectOption = function CustomSelectOption(_ref) {
7978
7981
  var defaultValue = _ref.defaultValue,
7979
7982
  options = _ref.options,
@@ -7983,6 +7986,7 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
7983
7986
  isMulti = _ref.isMulti,
7984
7987
  valueById = _ref.valueById,
7985
7988
  isTextbook = _ref.isTextbook,
7989
+ styles = _ref.styles,
7986
7990
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
7987
7991
  var _useTranslation = useTranslation(),
7988
7992
  t = _useTranslation.t;
@@ -8009,7 +8013,7 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
8009
8013
  DropdownIndicator: DropdownIndicator,
8010
8014
  Option: CustomOption
8011
8015
  },
8012
- styles: customStyles,
8016
+ styles: _extends({}, customStyles, styles),
8013
8017
  placeholder: t("select_placeholder")
8014
8018
  }, rest)) : React__default.createElement(Select, Object.assign({
8015
8019
  isDisabled: isDisabled,
@@ -8025,7 +8029,7 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
8025
8029
  DropdownIndicator: DropdownIndicator,
8026
8030
  Option: CustomOption
8027
8031
  },
8028
- styles: customStyles,
8032
+ styles: _extends({}, customStyles, styles),
8029
8033
  placeholder: t("select_placeholder")
8030
8034
  }, rest));
8031
8035
  };
@@ -9032,9 +9036,7 @@ var ChatRightItem = function ChatRightItem(_ref) {
9032
9036
  style: {
9033
9037
  height: "200px",
9034
9038
  position: "relative",
9035
- objectFit: "contain",
9036
- cursor: "pointer",
9037
- borderRadius: "6px"
9039
+ objectFit: "contain"
9038
9040
  }
9039
9041
  }) : React__default.createElement("div", {
9040
9042
  className: styles$2["wrap-content"] + " " + styles$2["content-chat-receiver"],
@@ -9117,9 +9119,7 @@ var ChatLeftItem = function ChatLeftItem(_ref) {
9117
9119
  style: {
9118
9120
  height: "200px",
9119
9121
  position: "relative",
9120
- objectFit: "contain",
9121
- cursor: "pointer",
9122
- borderRadius: "6px"
9122
+ objectFit: "contain"
9123
9123
  }
9124
9124
  }) : React__default.createElement("div", {
9125
9125
  className: styles$2["wrap-content"] + " " + styles$2["content-chat-sender"],
@@ -9548,928 +9548,89 @@ var ChatItem = function ChatItem(props) {
9548
9548
  open: openConfirmDialog,
9549
9549
  toggle: toggleConfirmDialog,
9550
9550
  text: t("confirm_delete_message"),
9551
- onConfirm: function onConfirm() {
9552
- return handleDeleteMessage(conversationId || 0, id || 0, toggleConfirmDialog);
9553
- },
9554
- title: t("confirmation"),
9555
- okText: t("yes"),
9556
- cancelText: t("no")
9557
- }), React__default.createElement(UpdateMessageDialog, {
9558
- open: openUpdateDialog,
9559
- onClose: toggleUpdateDialog,
9560
- content: content,
9561
- handleUploadImage: handleUploadImage,
9562
- selectedFile: selectedFile,
9563
- contentType: contentType,
9564
- handleUpdateMessage: function handleUpdateMessage(content) {
9565
- return _handleUpdateMessage(conversationId || 0, id || 0, content, toggleUpdateDialog);
9566
- }
9567
- }));
9568
- };
9569
-
9570
- var ChatList = function ChatList(_ref) {
9571
- var _ref$messages = _ref.messages,
9572
- messages = _ref$messages === void 0 ? [] : _ref$messages,
9573
- roles = _ref.roles,
9574
- onReTrySendMessage = _ref.onReTrySendMessage,
9575
- handleUpdateMessage = _ref.handleUpdateMessage,
9576
- handleDeleteMessage = _ref.handleDeleteMessage,
9577
- listItemRef = _ref.listItemRef;
9578
- var _useTranslation = useTranslation(),
9579
- t = _useTranslation.t;
9580
- var filterMessage = useMemo(function () {
9581
- var prevTime = 0;
9582
- var prevSender;
9583
- return messages.map(function (message) {
9584
- var _message$sender, _message$sender2;
9585
- var currentTime = new Date(message.createdAt).getTime();
9586
- var showTimestamp = !prevTime || currentTime - prevTime > 20 * 60 * 1000;
9587
- var showName = ((_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.fullName) !== prevSender;
9588
- prevSender = (_message$sender2 = message.sender) === null || _message$sender2 === void 0 ? void 0 : _message$sender2.fullName;
9589
- prevTime = currentTime;
9590
- return _extends({}, message, {
9591
- showTimestamp: showTimestamp,
9592
- showName: showName
9593
- });
9594
- });
9595
- }, [JSON.stringify(messages)]);
9596
- var isStudent = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Student);
9597
- return React__default.createElement("ul", {
9598
- ref: listItemRef,
9599
- className: styles$2["list"] + " " + styles$2["padding-content"] + " d-flex h-100 flex-column mb-0 " + (!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) ? 'justify-content-center' : '')
9600
- }, !(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && React__default.createElement("li", {
9601
- className: "text-muted text-center fst-italic fs-6"
9602
- }, t('no_message')), !!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && filterMessage.map(function (message) {
9603
- return React__default.createElement(ChatItem, Object.assign({
9604
- key: message.id
9605
- }, message, {
9606
- isStudent: isStudent,
9607
- handleUpdateMessage: handleUpdateMessage,
9608
- handleDeleteMessage: handleDeleteMessage,
9609
- onReTrySendMessage: onReTrySendMessage
9610
- }));
9611
- }));
9612
- };
9613
-
9614
- var iconSendMessage = function iconSendMessage(_ref) {
9615
- var _ref$width = _ref.width,
9616
- width = _ref$width === void 0 ? "16" : _ref$width,
9617
- _ref$height = _ref.height,
9618
- height = _ref$height === void 0 ? "16" : _ref$height,
9619
- color = _ref.color;
9620
- return React__default.createElement("svg", {
9621
- width: width,
9622
- height: height,
9623
- viewBox: "0 0 16 16",
9624
- fill: color,
9625
- xmlns: "http://www.w3.org/2000/svg"
9626
- }, React__default.createElement("path", {
9627
- d: "M14.8934 7.09539L14.8884 7.0932L1.54219 1.55758C1.42993 1.51059 1.30778 1.49217 1.18666 1.50395C1.06554 1.51573 0.949225 1.55734 0.848125 1.62508C0.741311 1.69507 0.653573 1.79052 0.592805 1.90283C0.532037 2.01515 0.500145 2.14081 0.5 2.26852V5.80883C0.50006 5.98341 0.561019 6.15249 0.67237 6.28695C0.783722 6.42141 0.938491 6.5128 1.11 6.54539L8.38906 7.89133C8.41767 7.89675 8.44348 7.91199 8.46205 7.93441C8.48062 7.95683 8.49078 7.98503 8.49078 8.01414C8.49078 8.04325 8.48062 8.07145 8.46205 8.09387C8.44348 8.1163 8.41767 8.13153 8.38906 8.13695L1.11031 9.48289C0.938851 9.5154 0.784092 9.60667 0.67269 9.74101C0.561288 9.87534 0.500219 10.0443 0.5 10.2188V13.7598C0.499917 13.8817 0.530111 14.0018 0.587871 14.1092C0.645632 14.2166 0.729152 14.3079 0.830938 14.3751C0.953375 14.4564 1.09706 14.4999 1.24406 14.5001C1.34626 14.5 1.4474 14.4795 1.54156 14.4398L14.8875 8.9357L14.8934 8.93289C15.0731 8.85569 15.2262 8.72751 15.3337 8.56421C15.4413 8.40092 15.4986 8.20968 15.4986 8.01414C15.4986 7.81861 15.4413 7.62736 15.3337 7.46407C15.2262 7.30077 15.0731 7.1726 14.8934 7.09539Z",
9628
- fill: "white"
9629
- }));
9630
- };
9631
-
9632
- var CanvasOverlay = function CanvasOverlay(_ref) {
9633
- var open = _ref.open,
9634
- width = _ref.width,
9635
- height = _ref.height,
9636
- size = _ref.size,
9637
- color = _ref.color,
9638
- isEraser = _ref.isEraser;
9639
- var overlayRef = useRef(null);
9640
- var _useState = useState({
9641
- x: 0,
9642
- y: 0
9643
- }),
9644
- cursorPosition = _useState[0],
9645
- setCursorPosition = _useState[1];
9646
- var _useState2 = useState(true),
9647
- hideCursor = _useState2[0],
9648
- setHideCursor = _useState2[1];
9649
- useEffect(function () {
9650
- var updateCursorPosition = function updateCursorPosition(clientX, clientY) {
9651
- var _overlayRef$current;
9652
- var rect = (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.getBoundingClientRect();
9653
- var isInside = rect && clientX > rect.left && clientX < rect.right && clientY > rect.top && clientY < rect.bottom;
9654
- setHideCursor(!isInside);
9655
- if (rect) setCursorPosition({
9656
- x: clientX - rect.left,
9657
- y: clientY - rect.top
9658
- });
9659
- };
9660
- var handleMouseMove = function handleMouseMove(e) {
9661
- updateCursorPosition(e.clientX, e.clientY);
9662
- };
9663
- var handleTouchMove = function handleTouchMove(e) {
9664
- if (e.touches.length > 0) {
9665
- var touch = e.touches[0];
9666
- updateCursorPosition(touch.clientX, touch.clientY);
9667
- }
9668
- };
9669
- if (open) {
9670
- document.addEventListener("mousemove", handleMouseMove);
9671
- document.addEventListener("touchmove", handleTouchMove);
9672
- }
9673
- return function () {
9674
- document.removeEventListener("mousemove", handleMouseMove);
9675
- document.removeEventListener("touchmove", handleTouchMove);
9676
- };
9677
- }, [open]);
9678
- var left = cursorPosition.x - size / 2;
9679
- var top = cursorPosition.y - size / 2;
9680
- return React__default.createElement(Box, {
9681
- ref: overlayRef,
9682
- sx: {
9683
- position: "absolute",
9684
- top: 0,
9685
- left: "50%",
9686
- transform: "translateX(-50%)",
9687
- width: width + "px",
9688
- height: height + "px",
9689
- pointerEvents: "none",
9690
- overflow: "hidden"
9691
- },
9692
- width: width,
9693
- height: height
9694
- }, React__default.createElement(Box, {
9695
- sx: {
9696
- position: "fixed",
9697
- top: top,
9698
- left: left,
9699
- width: size + "px",
9700
- height: size + "px",
9701
- borderRadius: "50%",
9702
- border: "1px solid " + (isEraser ? "red" : color),
9703
- backgroundColor: isEraser ? "rgba(255,0,0,0.1)" : "transparent",
9704
- pointerEvents: "none",
9705
- zIndex: 10,
9706
- display: size > 0 && !hideCursor ? "block" : "none"
9707
- }
9708
- }));
9709
- };
9710
-
9711
- var MessageSortBy;
9712
- (function (MessageSortBy) {
9713
- MessageSortBy["CreatedAt"] = "CreatedAt";
9714
- })(MessageSortBy || (MessageSortBy = {}));
9715
- var OrderBy$1;
9716
- (function (OrderBy) {
9717
- OrderBy["ASC"] = "ASC";
9718
- OrderBy["DESC"] = "DESC";
9719
- })(OrderBy$1 || (OrderBy$1 = {}));
9720
- var StudentSortBy;
9721
- (function (StudentSortBy) {
9722
- StudentSortBy["CreatedAt"] = "CreatedAt";
9723
- StudentSortBy["FullName"] = "FullName";
9724
- })(StudentSortBy || (StudentSortBy = {}));
9725
- var StudentOrderBy;
9726
- (function (StudentOrderBy) {
9727
- StudentOrderBy["ASC"] = "ASC";
9728
- StudentOrderBy["DESC"] = "DESC";
9729
- })(StudentOrderBy || (StudentOrderBy = {}));
9730
- var MessageAction;
9731
- (function (MessageAction) {
9732
- MessageAction[MessageAction["Default"] = 0] = "Default";
9733
- MessageAction[MessageAction["Took"] = 1] = "Took";
9734
- })(MessageAction || (MessageAction = {}));
9735
- var MessageSourceType;
9736
- (function (MessageSourceType) {
9737
- MessageSourceType[MessageSourceType["Default"] = 0] = "Default";
9738
- MessageSourceType[MessageSourceType["Exam"] = 1] = "Exam";
9739
- MessageSourceType[MessageSourceType["Class"] = 2] = "Class";
9740
- })(MessageSourceType || (MessageSourceType = {}));
9741
- var MessageStatus;
9742
- (function (MessageStatus) {
9743
- MessageStatus["Default"] = "Sent";
9744
- MessageStatus["Sending"] = "Sending...";
9745
- MessageStatus["SentError"] = "Sent fail, Retry";
9746
- })(MessageStatus || (MessageStatus = {}));
9747
-
9748
- var types = {
9749
- __proto__: null,
9750
- get MessageSortBy () { return MessageSortBy; },
9751
- get OrderBy () { return OrderBy$1; },
9752
- get StudentSortBy () { return StudentSortBy; },
9753
- get StudentOrderBy () { return StudentOrderBy; },
9754
- get MessageAction () { return MessageAction; },
9755
- get MessageSourceType () { return MessageSourceType; },
9756
- get MessageStatus () { return MessageStatus; }
9757
- };
9758
-
9759
- var ExamStatus$1;
9760
- (function (ExamStatus) {
9761
- ExamStatus["Default"] = "Default";
9762
- ExamStatus["Pending"] = "Pending";
9763
- ExamStatus["Inprogress"] = "Inprogress";
9764
- ExamStatus["Completed"] = "Completed";
9765
- })(ExamStatus$1 || (ExamStatus$1 = {}));
9766
- var Roles;
9767
- (function (Roles) {
9768
- Roles["Student"] = "Student";
9769
- Roles["Teacher"] = "Teacher";
9770
- Roles["Admin"] = "Admin";
9771
- })(Roles || (Roles = {}));
9772
- var MESSAGE_DEFAULT_FILTER = {
9773
- currentPage: 1,
9774
- pageSize: 15,
9775
- textSearch: "",
9776
- sortColumnDirection: OrderBy$1.DESC,
9777
- sortColumnName: MessageSortBy.CreatedAt
9778
- };
9779
- var AlignList = ["Min", "Mid", "Max"];
9780
- var DEFAULT_STROKE_COLOR = "#000000";
9781
- var DEFAULT_BG_COLOR = "#FFFFFF";
9782
- var DEFAULT_STROKE_WIDTH = 4;
9783
- var DEFAULT_ERASER_WIDTH = 10;
9784
- var CANVAS_WIDTH = 800;
9785
- var CANVAS_HEIGHT = 600;
9786
-
9787
- var BgImgAlignTool = function BgImgAlignTool(_ref) {
9788
- var aspect = _ref.aspect,
9789
- axis = _ref.axis,
9790
- align = _ref.align,
9791
- onAlignChange = _ref.onAlignChange;
9792
- var handleChangeAlign = function handleChangeAlign() {
9793
- onAlignChange(axis, align);
9794
- };
9795
- var icon = useMemo(function () {
9796
- switch (align) {
9797
- case "Min":
9798
- return axis === "x" ? React__default.createElement(MdAlignHorizontalLeft, {
9799
- size: 14
9800
- }) : React__default.createElement(MdAlignVerticalTop, {
9801
- size: 14
9802
- });
9803
- case "Mid":
9804
- return axis === "x" ? React__default.createElement(MdAlignHorizontalCenter, {
9805
- size: 14
9806
- }) : React__default.createElement(MdAlignVerticalCenter, {
9807
- size: 14
9808
- });
9809
- default:
9810
- return axis === "x" ? React__default.createElement(MdAlignHorizontalRight, {
9811
- size: 14
9812
- }) : React__default.createElement(MdAlignVerticalBottom, {
9813
- size: 14
9814
- });
9815
- }
9816
- }, [axis, align]);
9817
- var selected = useMemo(function () {
9818
- return axis === "x" ? aspect.startsWith("" + axis + align) : aspect.endsWith("" + axis.toUpperCase() + align);
9819
- }, [axis, align, aspect]);
9820
- return React__default.createElement(IconButton, {
9821
- size: "small",
9822
- onClick: handleChangeAlign,
9823
- sx: {
9824
- p: 1
9825
- },
9826
- color: selected ? "success" : undefined
9827
- }, icon);
9828
- };
9829
-
9830
- var BgImgAlignToolList = function BgImgAlignToolList(_ref) {
9831
- var axis = _ref.axis,
9832
- aspect = _ref.aspect,
9833
- onAlignChange = _ref.onAlignChange;
9834
- return React__default.createElement(Stack, {
9835
- direction: "row",
9836
- spacing: 1
9837
- }, AlignList.map(function (align) {
9838
- return React__default.createElement(BgImgAlignTool, {
9839
- key: "" + axis + align,
9840
- aspect: aspect,
9841
- axis: axis,
9842
- align: align,
9843
- onAlignChange: onAlignChange
9844
- });
9845
- }));
9846
- };
9847
-
9848
- var BgImgTool = function BgImgTool(_ref) {
9849
- var inputRef = _ref.inputRef,
9850
- value = _ref.value,
9851
- apsect = _ref.apsect,
9852
- onClear = _ref.onClear,
9853
- onPick = _ref.onPick,
9854
- onChange = _ref.onChange,
9855
- onAspectChange = _ref.onAspectChange;
9856
- return React__default.createElement(Stack, {
9857
- direction: "row",
9858
- spacing: 1,
9859
- alignItems: "center"
9860
- }, React__default.createElement(IconButton, {
9861
- sx: {
9862
- width: "32px",
9863
- height: "32px",
9864
- background: grey[100]
9865
- },
9866
- size: "small",
9867
- onClick: onPick
9868
- }, React__default.createElement(FaImage, {
9869
- size: 16
9870
- }), React__default.createElement("input", {
9871
- ref: inputRef,
9872
- hidden: true,
9873
- type: "file",
9874
- accept: "image/*",
9875
- onChange: onChange
9876
- })), value && React__default.createElement(IconButton, {
9877
- sx: {
9878
- width: "32px",
9879
- height: "32px",
9880
- background: red[900],
9881
- "&:hover": {
9882
- background: red[500]
9883
- }
9884
- },
9885
- onClick: onClear
9886
- }, React__default.createElement(GrClear, {
9887
- size: 16,
9888
- color: "#FFF"
9889
- })), value && React__default.createElement(Stack, {
9890
- direction: "row",
9891
- alignItems: "center",
9892
- gap: 1
9893
- }, React__default.createElement(Stack, {
9894
- direction: "column"
9895
- }, React__default.createElement(IconButton, {
9896
- size: "small",
9897
- onClick: function onClick() {
9898
- return onAspectChange();
9899
- },
9900
- sx: {
9901
- p: 1
9902
- },
9903
- color: apsect === "none" ? "success" : undefined
9904
- }, React__default.createElement(MdOutlineZoomOutMap, {
9905
- size: 14
9906
- }))), React__default.createElement(Stack, {
9907
- direction: "column"
9908
- }, React__default.createElement(BgImgAlignToolList, {
9909
- aspect: apsect,
9910
- axis: "x",
9911
- onAlignChange: onAspectChange
9912
- }), React__default.createElement(BgImgAlignToolList, {
9913
- aspect: apsect,
9914
- axis: "y",
9915
- onAlignChange: onAspectChange
9916
- }))));
9917
- };
9918
-
9919
- var ColorPicker = function ColorPicker(_ref) {
9920
- var disabled = _ref.disabled,
9921
- inputRef = _ref.inputRef,
9922
- onChange = _ref.onChange;
9923
- return React__default.createElement(Box, {
9924
- width: "32px",
9925
- height: "32px",
9926
- borderRadius: "50%",
9927
- overflow: "hidden",
9928
- border: "1px solid " + grey[500]
9929
- }, React__default.createElement("input", {
9930
- ref: inputRef,
9931
- onChange: onChange,
9932
- type: "color",
9933
- disabled: disabled,
9934
- style: {
9935
- width: "200%",
9936
- height: "200%",
9937
- borderStyle: "none",
9938
- backgroundColor: "none",
9939
- transform: "translate(-25%, -25%)",
9940
- cursor: "pointer"
9941
- }
9942
- }));
9943
- };
9944
-
9945
- var boxShadow = "0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)";
9946
- var CustomSlider = styled(Slider)(function (_ref) {
9947
- var theme = _ref.theme;
9948
- return _extends({
9949
- color: green[500],
9950
- height: 5,
9951
- width: 120,
9952
- marginInline: "8px",
9953
- "& .MuiSlider-thumb": {
9954
- height: 20,
9955
- width: 20,
9956
- backgroundColor: "#fff",
9957
- boxShadow: "0 0 2px 0px rgba(0, 0, 0, 0.1)",
9958
- "&:focus, &:hover, &.Mui-active": {
9959
- boxShadow: "0px 0px 3px 1px rgba(0, 0, 0, 0.1)",
9960
- "@media (hover: none)": {
9961
- boxShadow: boxShadow
9962
- }
9963
- },
9964
- "&:before": {
9965
- boxShadow: "0px 0px 1px 0px rgba(0,0,0,0.2), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 1px 0px rgba(0,0,0,0.12)"
9966
- }
9967
- },
9968
- "& .MuiSlider-valueLabel": {
9969
- fontSize: 12,
9970
- fontWeight: "normal",
9971
- top: 4,
9972
- backgroundColor: "unset",
9973
- color: theme.palette.text.primary,
9974
- "&::before": {
9975
- display: "none"
9976
- },
9977
- "& *": _extends({
9978
- background: "transparent",
9979
- color: "#000"
9980
- }, theme.applyStyles("dark", {
9981
- color: "#fff"
9982
- }))
9983
- },
9984
- "& .MuiSlider-track": {
9985
- border: "none",
9986
- boxShadow: "inset 0px 0px 4px -2px #000",
9987
- height: 5
9988
- },
9989
- "& .MuiSlider-rail": {
9990
- opacity: 0.5,
9991
- boxShadow: "inset 0px 0px 4px -2px #000",
9992
- backgroundColor: "#d0d0d0"
9993
- }
9994
- }, theme.applyStyles("dark", {
9995
- color: green[700]
9996
- }));
9997
- });
9998
- var WidthSlider = function WidthSlider(_ref2) {
9999
- var value = _ref2.value,
10000
- onChange = _ref2.onChange;
10001
- return React__default.createElement(CustomSlider, {
10002
- defaultValue: value,
10003
- onChange: onChange,
10004
- min: 1,
10005
- valueLabelDisplay: "on"
10006
- });
10007
- };
10008
-
10009
- var PencilTool = function PencilTool(_ref) {
10010
- var inputRef = _ref.inputRef,
10011
- selected = _ref.selected,
10012
- width = _ref.width,
10013
- onSelect = _ref.onSelect,
10014
- onChangeColor = _ref.onChangeColor,
10015
- onChangeWidth = _ref.onChangeWidth;
10016
- return React__default.createElement(Stack, {
10017
- direction: "row",
10018
- spacing: 1,
10019
- alignItems: "center"
10020
- }, React__default.createElement(IconButton, {
10021
- sx: _extends({
10022
- width: "32px",
10023
- height: "32px",
10024
- background: !selected ? grey[100] : green[500]
10025
- }, selected && {
10026
- color: "#FFFF"
10027
- }, {
10028
- "&:hover": {
10029
- background: !selected ? grey[100] : green[500]
10030
- }
10031
- }),
10032
- size: "small",
10033
- onClick: onSelect
10034
- }, React__default.createElement(FaPencilAlt, {
10035
- size: 14
10036
- })), React__default.createElement(ColorPicker, {
10037
- inputRef: inputRef,
10038
- onChange: onChangeColor
10039
- }), React__default.createElement(Stack, {
10040
- direction: "row",
10041
- alignItems: "center",
10042
- px: 1
10043
- }, React__default.createElement(WidthSlider, {
10044
- value: width,
10045
- onChange: onChangeWidth
10046
- })));
10047
- };
10048
-
10049
- var EraserTool = function EraserTool(_ref) {
10050
- var selected = _ref.selected,
10051
- width = _ref.width,
10052
- onSelect = _ref.onSelect,
10053
- onChangeWidth = _ref.onChangeWidth;
10054
- return React__default.createElement(Stack, {
10055
- direction: "row",
10056
- spacing: 1,
10057
- alignItems: "center"
10058
- }, React__default.createElement(IconButton, {
10059
- sx: _extends({
10060
- width: "32px",
10061
- height: "32px",
10062
- background: !selected ? grey[100] : red[900]
10063
- }, selected && {
10064
- color: "#FFFF"
10065
- }, {
10066
- "&:hover": {
10067
- background: !selected ? grey[100] : red[900]
10068
- }
10069
- }),
10070
- size: "small",
10071
- onClick: onSelect
10072
- }, React__default.createElement(FaEraser, {
10073
- size: 16
10074
- })), React__default.createElement(Stack, {
10075
- direction: "row",
10076
- alignItems: "center",
10077
- px: 1
10078
- }, React__default.createElement(WidthSlider, {
10079
- value: width,
10080
- onChange: onChangeWidth
10081
- })));
10082
- };
10083
-
10084
- var BgColorTool = function BgColorTool(_ref) {
10085
- var inputRef = _ref.inputRef,
10086
- onPick = _ref.onPick,
10087
- onChange = _ref.onChange;
10088
- return React__default.createElement(Stack, {
10089
- direction: "row",
10090
- spacing: 1,
10091
- alignItems: "center"
10092
- }, React__default.createElement(Button, {
10093
- onClick: onPick
10094
- }, React__default.createElement(Box, {
10095
- width: "32px",
10096
- height: "32px",
10097
- display: "flex",
10098
- justifyContent: "center",
10099
- alignItems: "center"
10100
- }, React__default.createElement(IoIosColorFill, {
10101
- color: grey[600],
10102
- size: 20
10103
- })), React__default.createElement(ColorPicker, {
10104
- inputRef: inputRef,
10105
- onChange: onChange
10106
- })));
10107
- };
10108
-
10109
- var ToolContainerStyles = {
10110
- display: "flex",
10111
- gap: 2,
10112
- flexWrap: "nowrap",
10113
- justifyContent: {
10114
- lg: "center",
10115
- sx: "start"
10116
- },
10117
- alignItems: "center",
10118
- px: 4,
10119
- pb: 2,
10120
- pt: 1,
10121
- width: "100%",
10122
- overflowX: "auto",
10123
- overflowY: "hidden"
10124
- };
10125
- var CanvasContainerStyles = {
10126
- position: "relative",
10127
- flexGrow: 1,
10128
- display: "flex",
10129
- justifyContent: {
10130
- lg: "center",
10131
- sx: "start"
10132
- }
10133
- };
10134
- var CanvasWrapperStyles = {
10135
- flexGrow: 1,
10136
- overflow: "scroll",
10137
- width: "100%",
10138
- height: "100%",
10139
- display: "flex",
10140
- justifyContent: {
10141
- lg: "center",
10142
- sx: "start"
10143
- },
10144
- padding: "8px 24px 24px"
10145
- };
10146
- var IconButtonStyles = {
10147
- width: "32px",
10148
- height: "32px",
10149
- background: grey[100]
10150
- };
10151
-
10152
- var Transition = React__default.forwardRef(function Transition(props, ref) {
10153
- return React__default.createElement(Slide, Object.assign({
10154
- direction: "up",
10155
- ref: ref
10156
- }, props));
10157
- });
10158
- var SketchDialog = function SketchDialog(_ref) {
10159
- var open = _ref.open,
10160
- drawPath = _ref.drawPath,
10161
- onClose = _ref.onClose,
10162
- onSave = _ref.onSave;
10163
- var _useTranslation = useTranslation(),
10164
- t = _useTranslation.t;
10165
- var canvasRef = useRef(null);
10166
- var _useState = useState(DEFAULT_STROKE_COLOR),
10167
- strokeColor = _useState[0],
10168
- setStrokeColor = _useState[1];
10169
- var _useState2 = useState(DEFAULT_STROKE_WIDTH),
10170
- strokeWidth = _useState2[0],
10171
- setStrokeWidth = _useState2[1];
10172
- var _useState3 = useState(DEFAULT_ERASER_WIDTH),
10173
- eraserWidth = _useState3[0],
10174
- setEraserWidth = _useState3[1];
10175
- var _useState4 = useState(DEFAULT_BG_COLOR),
10176
- backgroundColor = _useState4[0],
10177
- setBackgroundColor = _useState4[1];
10178
- var _useState5 = useState(null),
10179
- backgroundImage = _useState5[0],
10180
- setBackgroundImage = _useState5[1];
10181
- var _useState6 = useState(false),
10182
- isEraser = _useState6[0],
10183
- setIsEraser = _useState6[1];
10184
- var bgImageInputRef = useRef(null);
10185
- var bgColorRef = useRef(null);
10186
- var colorRef = useRef(null);
10187
- var _useState7 = useState("none"),
10188
- bgImageAspect = _useState7[0],
10189
- setBgImageAspect = _useState7[1];
10190
- var getNewAlign = function getNewAlign(axis, align) {
10191
- if (!axis || !align) return "none";
10192
- var _bgImageAspect$split = bgImageAspect.split("Y"),
10193
- xAlign = _bgImageAspect$split[0],
10194
- yAlign = _bgImageAspect$split[1];
10195
- if (bgImageAspect === "none" || !xAlign && !yAlign) return axis === "y" ? "xMinY" + align : "x" + align + "YMin";
10196
- return axis === "y" ? xAlign + "Y" + align : "x" + align + "Y" + yAlign;
10197
- };
10198
- var handleChangeAlign = function handleChangeAlign(axis, pos) {
10199
- var newValue = getNewAlign(axis, pos);
10200
- setBgImageAspect(newValue);
10201
- };
10202
- var handleClickBgColor = function handleClickBgColor() {
10203
- var _bgColorRef$current;
10204
- (_bgColorRef$current = bgColorRef.current) === null || _bgColorRef$current === void 0 ? void 0 : _bgColorRef$current.click();
10205
- };
10206
- var clearCanvas = function clearCanvas() {
10207
- var _canvasRef$current;
10208
- (_canvasRef$current = canvasRef.current) === null || _canvasRef$current === void 0 ? void 0 : _canvasRef$current.clearCanvas();
10209
- setBackgroundImage(null);
10210
- if (bgColorRef.current) bgColorRef.current.value = DEFAULT_BG_COLOR;
10211
- setBackgroundColor(DEFAULT_BG_COLOR);
10212
- };
10213
- var undo = function undo() {
10214
- var _canvasRef$current2;
10215
- (_canvasRef$current2 = canvasRef.current) === null || _canvasRef$current2 === void 0 ? void 0 : _canvasRef$current2.undo();
10216
- };
10217
- var redo = function redo() {
10218
- var _canvasRef$current3;
10219
- (_canvasRef$current3 = canvasRef.current) === null || _canvasRef$current3 === void 0 ? void 0 : _canvasRef$current3.redo();
10220
- };
10221
- var saveImage = function saveImage() {
10222
- try {
10223
- var _canvasRef$current4;
10224
- return Promise.resolve((_canvasRef$current4 = canvasRef.current) === null || _canvasRef$current4 === void 0 ? void 0 : _canvasRef$current4.exportImage("png")).then(function (imageData) {
10225
- var _canvasRef$current5;
10226
- return Promise.resolve((_canvasRef$current5 = canvasRef.current) === null || _canvasRef$current5 === void 0 ? void 0 : _canvasRef$current5.exportPaths()).then(function (data) {
10227
- onSave(imageData, data);
10228
- onClose();
10229
- });
10230
- });
10231
- } catch (e) {
10232
- return Promise.reject(e);
10233
- }
10234
- };
10235
- var handleEraserMode = function handleEraserMode() {
10236
- var _canvasRef$current6;
10237
- setIsEraser(true);
10238
- (_canvasRef$current6 = canvasRef.current) === null || _canvasRef$current6 === void 0 ? void 0 : _canvasRef$current6.eraseMode(true);
10239
- };
10240
- var handlePencilMode = function handlePencilMode() {
10241
- var _canvasRef$current7;
10242
- setIsEraser(false);
10243
- (_canvasRef$current7 = canvasRef.current) === null || _canvasRef$current7 === void 0 ? void 0 : _canvasRef$current7.eraseMode(false);
10244
- };
10245
- var handleClickChangeBgImage = function handleClickChangeBgImage() {
10246
- var _bgImageInputRef$curr;
10247
- (_bgImageInputRef$curr = bgImageInputRef.current) === null || _bgImageInputRef$curr === void 0 ? void 0 : _bgImageInputRef$curr.click();
10248
- };
10249
- var handleBackgroundImageChange = function handleBackgroundImageChange(event) {
10250
- var _event$target$files;
10251
- var file = (_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0];
10252
- if (file) {
10253
- var reader = new FileReader();
10254
- reader.onload = function () {
10255
- setBackgroundImage(reader.result);
10256
- };
10257
- reader.readAsDataURL(file);
10258
- }
10259
- };
10260
- var handleChangePencilColor = function handleChangePencilColor(e) {
10261
- setStrokeColor(e.target.value);
10262
- };
10263
- var handleChangeBgColor = function handleChangeBgColor(e) {
10264
- setBackgroundColor(e.target.value);
10265
- };
10266
- var handleChangeEraserWidth = function handleChangeEraserWidth(e) {
10267
- return setEraserWidth(Number(e.target.value));
10268
- };
10269
- var handleChangePencilWidth = function handleChangePencilWidth(e) {
10270
- return setStrokeWidth(Number(e.target.value));
10271
- };
10272
- var debounceChangeBgColor = _$a.debounce(handleChangeBgColor, 300);
10273
- var debounceChangePencilColor = _$a.debounce(handleChangePencilColor, 300);
10274
- var debounceChangeEraserWidth = _$a.debounce(handleChangeEraserWidth, 300);
10275
- var debounceChangePencilWidth = _$a.debounce(handleChangePencilWidth, 300);
10276
- var currentToolSize = isEraser ? eraserWidth : strokeWidth;
10277
- var handleClearBgImage = function handleClearBgImage() {
10278
- setBackgroundImage(null);
10279
- };
10280
- var handleLoad = function handleLoad(data) {
10281
- try {
10282
- var _temp = function () {
10283
- if (data) {
10284
- var _canvasRef$current8;
10285
- return Promise.resolve((_canvasRef$current8 = canvasRef.current) === null || _canvasRef$current8 === void 0 ? void 0 : _canvasRef$current8.loadPaths(data)).then(function () {
10286
- if (bgColorRef.current) bgColorRef.current.value = backgroundColor;
10287
- });
10288
- } else {
10289
- var _canvasRef$current9;
10290
- return Promise.resolve((_canvasRef$current9 = canvasRef.current) === null || _canvasRef$current9 === void 0 ? void 0 : _canvasRef$current9.clearCanvas()).then(function () {
10291
- if (bgColorRef.current) bgColorRef.current.value = DEFAULT_BG_COLOR;
10292
- setBackgroundColor(DEFAULT_BG_COLOR);
10293
- setBackgroundImage(null);
10294
- setBgImageAspect("none");
10295
- });
10296
- }
10297
- }();
10298
- return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
10299
- } catch (e) {
10300
- return Promise.reject(e);
10301
- }
10302
- };
10303
- useEffect(function () {
10304
- if (open) {
10305
- setTimeout(function () {
10306
- if (canvasRef.current) {
10307
- handleLoad(drawPath);
10308
- }
10309
- }, 0);
10310
- } else {
10311
- if (bgColorRef.current) bgColorRef.current.value = DEFAULT_BG_COLOR;
10312
- if (colorRef.current) colorRef.current.value = DEFAULT_STROKE_COLOR;
10313
- setStrokeColor(DEFAULT_STROKE_COLOR);
10314
- setStrokeWidth(DEFAULT_STROKE_WIDTH);
10315
- setEraserWidth(DEFAULT_ERASER_WIDTH);
10316
- setIsEraser(false);
10317
- }
10318
- }, [open, drawPath]);
10319
- return React__default.createElement(Dialog, {
10320
- fullScreen: true,
10321
- open: open,
10322
- onClose: onClose,
10323
- TransitionComponent: Transition
10324
- }, React__default.createElement(AppBar, {
10325
- color: "success",
10326
- sx: {
10327
- position: "relative"
10328
- }
10329
- }, React__default.createElement(Toolbar, null, React__default.createElement(IconButton, {
10330
- sx: {
10331
- width: "32px",
10332
- height: "32px"
10333
- },
10334
- edge: "start",
10335
- color: "inherit",
10336
- onClick: onClose,
10337
- "aria-label": "close"
10338
- }, React__default.createElement(IoClose, null)), React__default.createElement(Typography, {
10339
- sx: {
10340
- ml: 2,
10341
- flex: 1
10342
- },
10343
- variant: "h6",
10344
- component: "div"
10345
- }, t("sketch_canvas")), React__default.createElement(Stack, {
10346
- direction: "row",
10347
- gap: 1
10348
- }, React__default.createElement(Button, {
10349
- sx: {
10350
- px: 2
10351
- },
10352
- startIcon: React__default.createElement(FaSave, {
10353
- size: 14
10354
- }),
10355
- color: "inherit",
10356
- onClick: saveImage
10357
- }, t("save")), React__default.createElement(Button, {
10358
- sx: {
10359
- px: 2
9551
+ onConfirm: function onConfirm() {
9552
+ return handleDeleteMessage(conversationId || 0, id || 0, toggleConfirmDialog);
10360
9553
  },
10361
- startIcon: React__default.createElement(GrClearOption, {
10362
- size: 14
10363
- }),
10364
- color: "inherit",
10365
- onClick: clearCanvas
10366
- }, t("clear"))))), React__default.createElement(Box, {
10367
- sx: {
10368
- display: "flex",
10369
- flexDirection: "column",
10370
- height: "100%",
10371
- padding: 2
10372
- }
10373
- }, React__default.createElement(Box, {
10374
- sx: ToolContainerStyles
10375
- }, React__default.createElement(PencilTool, {
10376
- inputRef: colorRef,
10377
- width: strokeWidth,
10378
- selected: !isEraser,
10379
- onSelect: handlePencilMode,
10380
- onChangeColor: debounceChangePencilColor,
10381
- onChangeWidth: debounceChangePencilWidth
10382
- }), React__default.createElement(Divider, {
10383
- orientation: "vertical",
10384
- flexItem: true,
10385
- sx: {
10386
- borderColor: grey[300]
10387
- }
10388
- }), React__default.createElement(EraserTool, {
10389
- width: eraserWidth,
10390
- selected: isEraser,
10391
- onSelect: handleEraserMode,
10392
- onChangeWidth: debounceChangeEraserWidth
10393
- }), React__default.createElement(Divider, {
10394
- orientation: "vertical",
10395
- flexItem: true,
10396
- sx: {
10397
- borderColor: grey[300]
10398
- }
10399
- }), React__default.createElement(BgColorTool, {
10400
- inputRef: bgColorRef,
10401
- onChange: debounceChangeBgColor,
10402
- onPick: handleClickBgColor
10403
- }), React__default.createElement(Divider, {
10404
- orientation: "vertical",
10405
- flexItem: true,
10406
- sx: {
10407
- borderColor: grey[300]
9554
+ title: t("confirmation"),
9555
+ okText: t("yes"),
9556
+ cancelText: t("no")
9557
+ }), React__default.createElement(UpdateMessageDialog, {
9558
+ open: openUpdateDialog,
9559
+ onClose: toggleUpdateDialog,
9560
+ content: content,
9561
+ handleUploadImage: handleUploadImage,
9562
+ selectedFile: selectedFile,
9563
+ contentType: contentType,
9564
+ handleUpdateMessage: function handleUpdateMessage(content) {
9565
+ return _handleUpdateMessage(conversationId || 0, id || 0, content, toggleUpdateDialog);
10408
9566
  }
10409
- }), React__default.createElement(Stack, {
10410
- direction: "row",
10411
- spacing: 1,
10412
- alignItems: "center"
10413
- }, React__default.createElement(IconButton, {
10414
- sx: IconButtonStyles,
10415
- size: "small",
10416
- onClick: undo
10417
- }, React__default.createElement(IoMdUndo, {
10418
- size: 20
10419
- })), React__default.createElement(IconButton, {
10420
- sx: IconButtonStyles,
10421
- size: "small",
10422
- onClick: redo
10423
- }, React__default.createElement(IoMdRedo, {
10424
- size: 20
10425
- }))), React__default.createElement(Divider, {
10426
- orientation: "vertical",
10427
- flexItem: true,
10428
- sx: {
10429
- borderColor: grey[300]
10430
- }
10431
- }), React__default.createElement(BgImgTool, {
10432
- apsect: bgImageAspect,
10433
- inputRef: bgImageInputRef,
10434
- value: backgroundImage,
10435
- onAspectChange: handleChangeAlign,
10436
- onChange: handleBackgroundImageChange,
10437
- onClear: handleClearBgImage,
10438
- onPick: handleClickChangeBgImage
10439
- })), React__default.createElement(Box, {
10440
- sx: CanvasWrapperStyles
10441
- }, React__default.createElement(Box, {
10442
- sx: CanvasContainerStyles
10443
- }, React__default.createElement(ReactSketchCanvas, {
10444
- ref: canvasRef,
10445
- style: {
10446
- border: "2px solid " + green[500]
10447
- },
10448
- width: CANVAS_WIDTH + "px",
10449
- height: CANVAS_HEIGHT + "px",
10450
- strokeWidth: strokeWidth,
10451
- strokeColor: strokeColor,
10452
- canvasColor: backgroundColor,
10453
- backgroundImage: backgroundImage != null ? backgroundImage : undefined,
10454
- eraserWidth: eraserWidth,
10455
- preserveBackgroundImageAspectRatio: backgroundImage ? bgImageAspect : undefined
10456
- }), React__default.createElement(CanvasOverlay, {
10457
- width: CANVAS_WIDTH,
10458
- height: CANVAS_HEIGHT,
10459
- size: currentToolSize,
10460
- color: strokeColor,
10461
- open: open,
10462
- isEraser: isEraser
10463
- })))));
9567
+ }));
9568
+ };
9569
+
9570
+ var ChatList = function ChatList(_ref) {
9571
+ var _ref$messages = _ref.messages,
9572
+ messages = _ref$messages === void 0 ? [] : _ref$messages,
9573
+ roles = _ref.roles,
9574
+ onReTrySendMessage = _ref.onReTrySendMessage,
9575
+ handleUpdateMessage = _ref.handleUpdateMessage,
9576
+ handleDeleteMessage = _ref.handleDeleteMessage,
9577
+ listItemRef = _ref.listItemRef;
9578
+ var _useTranslation = useTranslation(),
9579
+ t = _useTranslation.t;
9580
+ var filterMessage = useMemo(function () {
9581
+ var prevTime = 0;
9582
+ var prevSender;
9583
+ return messages.map(function (message) {
9584
+ var _message$sender, _message$sender2;
9585
+ var currentTime = new Date(message.createdAt).getTime();
9586
+ var showTimestamp = !prevTime || currentTime - prevTime > 20 * 60 * 1000;
9587
+ var showName = ((_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.fullName) !== prevSender;
9588
+ prevSender = (_message$sender2 = message.sender) === null || _message$sender2 === void 0 ? void 0 : _message$sender2.fullName;
9589
+ prevTime = currentTime;
9590
+ return _extends({}, message, {
9591
+ showTimestamp: showTimestamp,
9592
+ showName: showName
9593
+ });
9594
+ });
9595
+ }, [JSON.stringify(messages)]);
9596
+ var isStudent = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Student);
9597
+ return React__default.createElement("ul", {
9598
+ ref: listItemRef,
9599
+ className: styles$2["list"] + " " + styles$2["padding-content"] + " d-flex h-100 flex-column mb-0 " + (!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) ? 'justify-content-center' : '')
9600
+ }, !(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && React__default.createElement("li", {
9601
+ className: "text-muted text-center fst-italic fs-6"
9602
+ }, t('no_message')), !!(filterMessage !== null && filterMessage !== void 0 && filterMessage.length) && filterMessage.map(function (message) {
9603
+ return React__default.createElement(ChatItem, Object.assign({
9604
+ key: message.id
9605
+ }, message, {
9606
+ isStudent: isStudent,
9607
+ handleUpdateMessage: handleUpdateMessage,
9608
+ handleDeleteMessage: handleDeleteMessage,
9609
+ onReTrySendMessage: onReTrySendMessage
9610
+ }));
9611
+ }));
9612
+ };
9613
+
9614
+ var iconSendMessage = function iconSendMessage(_ref) {
9615
+ var _ref$width = _ref.width,
9616
+ width = _ref$width === void 0 ? "16" : _ref$width,
9617
+ _ref$height = _ref.height,
9618
+ height = _ref$height === void 0 ? "16" : _ref$height,
9619
+ color = _ref.color;
9620
+ return React__default.createElement("svg", {
9621
+ width: width,
9622
+ height: height,
9623
+ viewBox: "0 0 16 16",
9624
+ fill: color,
9625
+ xmlns: "http://www.w3.org/2000/svg"
9626
+ }, React__default.createElement("path", {
9627
+ d: "M14.8934 7.09539L14.8884 7.0932L1.54219 1.55758C1.42993 1.51059 1.30778 1.49217 1.18666 1.50395C1.06554 1.51573 0.949225 1.55734 0.848125 1.62508C0.741311 1.69507 0.653573 1.79052 0.592805 1.90283C0.532037 2.01515 0.500145 2.14081 0.5 2.26852V5.80883C0.50006 5.98341 0.561019 6.15249 0.67237 6.28695C0.783722 6.42141 0.938491 6.5128 1.11 6.54539L8.38906 7.89133C8.41767 7.89675 8.44348 7.91199 8.46205 7.93441C8.48062 7.95683 8.49078 7.98503 8.49078 8.01414C8.49078 8.04325 8.48062 8.07145 8.46205 8.09387C8.44348 8.1163 8.41767 8.13153 8.38906 8.13695L1.11031 9.48289C0.938851 9.5154 0.784092 9.60667 0.67269 9.74101C0.561288 9.87534 0.500219 10.0443 0.5 10.2188V13.7598C0.499917 13.8817 0.530111 14.0018 0.587871 14.1092C0.645632 14.2166 0.729152 14.3079 0.830938 14.3751C0.953375 14.4564 1.09706 14.4999 1.24406 14.5001C1.34626 14.5 1.4474 14.4795 1.54156 14.4398L14.8875 8.9357L14.8934 8.93289C15.0731 8.85569 15.2262 8.72751 15.3337 8.56421C15.4413 8.40092 15.4986 8.20968 15.4986 8.01414C15.4986 7.81861 15.4413 7.62736 15.3337 7.46407C15.2262 7.30077 15.0731 7.1726 14.8934 7.09539Z",
9628
+ fill: "white"
9629
+ }));
10464
9630
  };
10465
9631
 
10466
9632
  var InputChat = function InputChat(_ref) {
10467
- var isSending = _ref.isSending,
10468
- role = _ref.role,
10469
- text = _ref.text,
10470
- drawPath = _ref.drawPath,
10471
- onClearCanvas = _ref.onClearCanvas,
10472
- onSaveCanvas = _ref.onSaveCanvas,
9633
+ var text = _ref.text,
10473
9634
  onChangeInput = _ref.onChangeInput,
10474
9635
  onSubmit = _ref.onSubmit,
10475
9636
  isCompleted = _ref.isCompleted,
@@ -10478,20 +9639,10 @@ var InputChat = function InputChat(_ref) {
10478
9639
  handleDeleteSelectedImage = _ref.handleDeleteSelectedImage;
10479
9640
  var _useTranslation = useTranslation(),
10480
9641
  t = _useTranslation.t;
10481
- var isStudent = role === Role.Student;
10482
9642
  var fileInputRef = useRef(null);
10483
- var _useState = useState(false),
10484
- open = _useState[0],
10485
- setOpen = _useState[1];
10486
- var disabled = isCompleted || isSending;
10487
9643
  var handleSubmit = function handleSubmit() {
10488
9644
  onSubmit();
10489
9645
  };
10490
- var handleToggleSketchDialog = function handleToggleSketchDialog() {
10491
- setOpen(function (state) {
10492
- return !state;
10493
- });
10494
- };
10495
9646
  var handleSelectedFile = function handleSelectedFile(e) {
10496
9647
  var files = e.target.files;
10497
9648
  handleUploadImage(files[0]);
@@ -10499,26 +9650,13 @@ var InputChat = function InputChat(_ref) {
10499
9650
  fileInputRef.current.value = "";
10500
9651
  }
10501
9652
  };
10502
- var handleSaveCanvas = function handleSaveCanvas(data, drawPath) {
10503
- onSaveCanvas(data, drawPath);
10504
- };
10505
- var handleClickImage = function handleClickImage() {
10506
- if (!drawPath) return;
10507
- handleToggleSketchDialog();
10508
- };
10509
- var handleopenSketchDialog = function handleopenSketchDialog() {
10510
- handleToggleSketchDialog();
10511
- onClearCanvas();
10512
- };
10513
9653
  return React__default.createElement(Grid, {
10514
9654
  item: true,
10515
9655
  xs: 12,
10516
9656
  padding: "16px"
10517
- }, React__default.createElement(Stack, {
10518
- direction: {
10519
- sx: "column",
10520
- lg: "row"
10521
- },
9657
+ }, React__default.createElement(Box, {
9658
+ display: "flex",
9659
+ flexDirection: "row",
10522
9660
  gap: "24px"
10523
9661
  }, React__default.createElement(Box, {
10524
9662
  display: "flex",
@@ -10530,14 +9668,12 @@ var InputChat = function InputChat(_ref) {
10530
9668
  border: selectedFile ? "1px solid #97A1AF" : undefined,
10531
9669
  borderRadius: selectedFile ? "6px" : undefined,
10532
9670
  flexDirection: "column"
10533
- }, selectedFile && React__default.createElement(Box, {
9671
+ }, selectedFile && React__default.createElement("div", {
10534
9672
  style: {
10535
9673
  position: "relative",
10536
9674
  margin: "10px",
10537
- width: "fit-content",
10538
- cursor: drawPath ? "pointer" : "unset"
10539
- },
10540
- onClick: handleClickImage
9675
+ width: "fit-content"
9676
+ }
10541
9677
  }, React__default.createElement("img", {
10542
9678
  src: selectedFile,
10543
9679
  style: {
@@ -10556,21 +9692,21 @@ var InputChat = function InputChat(_ref) {
10556
9692
  cursor: "pointer",
10557
9693
  background: grey[100]
10558
9694
  },
10559
- disabled: isSending,
10560
9695
  onClick: handleDeleteSelectedImage
10561
9696
  }, React__default.createElement(FaTrash, {
10562
9697
  size: 16
10563
9698
  }))), !selectedFile && React__default.createElement(TinyChatEditor, {
10564
9699
  initValue: text,
10565
9700
  onChange: onChangeInput,
10566
- disabled: disabled
9701
+ disabled: isCompleted
10567
9702
  })), React__default.createElement(Typography, {
10568
9703
  fontWeight: 500,
10569
9704
  fontSize: "10px",
10570
9705
  lineHeight: "11.93px",
10571
9706
  color: "#97A1AF"
10572
- }, t("this_is_the_guidance_text"))), React__default.createElement(Stack, {
10573
- direction: "column",
9707
+ }, t('this_is_the_guidance_text'))), React__default.createElement(Box, {
9708
+ display: "flex",
9709
+ flexDirection: "column",
10574
9710
  justifyContent: "flex-start",
10575
9711
  alignItems: "flex-end",
10576
9712
  gap: "16px"
@@ -10579,19 +9715,11 @@ var InputChat = function InputChat(_ref) {
10579
9715
  fullWidth: true,
10580
9716
  className: styles$2["btn-send"],
10581
9717
  sx: {
10582
- bgcolor: disabled ? styles.light + " !important" : styles.less_dark
9718
+ bgcolor: isCompleted ? styles.light + " !important" : styles.less_dark
10583
9719
  },
10584
- disabled: disabled,
9720
+ disabled: isCompleted,
10585
9721
  onClick: handleSubmit
10586
- }, isSending ? React__default.createElement(Stack, {
10587
- justifyContent: "center",
10588
- alignItems: "center"
10589
- }, React__default.createElement(CircularProgress, {
10590
- sx: {
10591
- color: "#FFF"
10592
- },
10593
- size: 14
10594
- })) : React__default.createElement(iconSendMessage, null), React__default.createElement(Typography, {
9722
+ }, React__default.createElement(iconSendMessage, null), React__default.createElement(Typography, {
10595
9723
  fontWeight: 700,
10596
9724
  fontSize: "13px",
10597
9725
  lineHeight: "15.51px"
@@ -10599,12 +9727,12 @@ var InputChat = function InputChat(_ref) {
10599
9727
  variant: "outlined",
10600
9728
  component: "label",
10601
9729
  fullWidth: true,
10602
- disabled: disabled,
9730
+ disabled: isCompleted,
10603
9731
  sx: {
10604
9732
  display: "flex",
10605
9733
  gap: "8px",
10606
9734
  padding: "12px !important",
10607
- borderColor: disabled ? "transparent" : styles.less_dark,
9735
+ borderColor: isCompleted ? "transparent" : styles.less_dark,
10608
9736
  borderWidth: "1px"
10609
9737
  }
10610
9738
  }, React__default.createElement(iconPlusCircle, {
@@ -10620,20 +9748,9 @@ var InputChat = function InputChat(_ref) {
10620
9748
  type: "file",
10621
9749
  hidden: true,
10622
9750
  ref: fileInputRef,
10623
- disabled: disabled,
9751
+ disabled: isCompleted,
10624
9752
  accept: "image/png, image/gif, image/jpeg",
10625
9753
  onChangeCapture: handleSelectedFile
10626
- })), !isStudent && React__default.createElement(Fragment$1, null, React__default.createElement(Button, {
10627
- startIcon: React__default.createElement(MdDraw, null),
10628
- variant: "contained",
10629
- disabled: disabled,
10630
- fullWidth: true,
10631
- onClick: handleopenSketchDialog
10632
- }, t("sketch")), React__default.createElement(SketchDialog, {
10633
- open: open,
10634
- drawPath: drawPath,
10635
- onClose: handleToggleSketchDialog,
10636
- onSave: handleSaveCanvas
10637
9754
  })))));
10638
9755
  };
10639
9756
 
@@ -10899,8 +10016,7 @@ var ChatHeader = function ChatHeader(_ref) {
10899
10016
  };
10900
10017
 
10901
10018
  var ChatContainer = function ChatContainer(_ref) {
10902
- var role = _ref.role,
10903
- chatHeaderProps = _ref.chatHeaderProps,
10019
+ var chatHeaderProps = _ref.chatHeaderProps,
10904
10020
  chatListProps = _ref.chatListProps,
10905
10021
  inputProps = _ref.inputProps,
10906
10022
  _ref$scrollOffset = _ref.scrollOffset,
@@ -10993,9 +10109,76 @@ var ChatContainer = function ChatContainer(_ref) {
10993
10109
  className: "d-flex justify-content-center align-items-center"
10994
10110
  }, React__default.createElement(CircularProgress, null)), React__default.createElement(ChatList, Object.assign({}, chatListProps, {
10995
10111
  listItemRef: listItemRef
10996
- }))), React__default.createElement(InputChat, Object.assign({
10997
- role: role
10998
- }, inputProps)));
10112
+ }))), React__default.createElement(InputChat, Object.assign({}, inputProps)));
10113
+ };
10114
+
10115
+ var MessageSortBy;
10116
+ (function (MessageSortBy) {
10117
+ MessageSortBy["CreatedAt"] = "CreatedAt";
10118
+ })(MessageSortBy || (MessageSortBy = {}));
10119
+ var OrderBy$1;
10120
+ (function (OrderBy) {
10121
+ OrderBy["ASC"] = "ASC";
10122
+ OrderBy["DESC"] = "DESC";
10123
+ })(OrderBy$1 || (OrderBy$1 = {}));
10124
+ var StudentSortBy;
10125
+ (function (StudentSortBy) {
10126
+ StudentSortBy["CreatedAt"] = "CreatedAt";
10127
+ StudentSortBy["FullName"] = "FullName";
10128
+ })(StudentSortBy || (StudentSortBy = {}));
10129
+ var StudentOrderBy;
10130
+ (function (StudentOrderBy) {
10131
+ StudentOrderBy["ASC"] = "ASC";
10132
+ StudentOrderBy["DESC"] = "DESC";
10133
+ })(StudentOrderBy || (StudentOrderBy = {}));
10134
+ var MessageAction;
10135
+ (function (MessageAction) {
10136
+ MessageAction[MessageAction["Default"] = 0] = "Default";
10137
+ MessageAction[MessageAction["Took"] = 1] = "Took";
10138
+ })(MessageAction || (MessageAction = {}));
10139
+ var MessageSourceType;
10140
+ (function (MessageSourceType) {
10141
+ MessageSourceType[MessageSourceType["Default"] = 0] = "Default";
10142
+ MessageSourceType[MessageSourceType["Exam"] = 1] = "Exam";
10143
+ MessageSourceType[MessageSourceType["Class"] = 2] = "Class";
10144
+ })(MessageSourceType || (MessageSourceType = {}));
10145
+ var MessageStatus;
10146
+ (function (MessageStatus) {
10147
+ MessageStatus["Default"] = "Sent";
10148
+ MessageStatus["Sending"] = "Sending...";
10149
+ MessageStatus["SentError"] = "Sent fail, Retry";
10150
+ })(MessageStatus || (MessageStatus = {}));
10151
+
10152
+ var types = {
10153
+ __proto__: null,
10154
+ get MessageSortBy () { return MessageSortBy; },
10155
+ get OrderBy () { return OrderBy$1; },
10156
+ get StudentSortBy () { return StudentSortBy; },
10157
+ get StudentOrderBy () { return StudentOrderBy; },
10158
+ get MessageAction () { return MessageAction; },
10159
+ get MessageSourceType () { return MessageSourceType; },
10160
+ get MessageStatus () { return MessageStatus; }
10161
+ };
10162
+
10163
+ var ExamStatus$1;
10164
+ (function (ExamStatus) {
10165
+ ExamStatus["Default"] = "Default";
10166
+ ExamStatus["Pending"] = "Pending";
10167
+ ExamStatus["Inprogress"] = "Inprogress";
10168
+ ExamStatus["Completed"] = "Completed";
10169
+ })(ExamStatus$1 || (ExamStatus$1 = {}));
10170
+ var Roles;
10171
+ (function (Roles) {
10172
+ Roles["Student"] = "Student";
10173
+ Roles["Teacher"] = "Teacher";
10174
+ Roles["Admin"] = "Admin";
10175
+ })(Roles || (Roles = {}));
10176
+ var MESSAGE_DEFAULT_FILTER = {
10177
+ currentPage: 1,
10178
+ pageSize: 15,
10179
+ textSearch: "",
10180
+ sortColumnDirection: OrderBy$1.DESC,
10181
+ sortColumnName: MessageSortBy.CreatedAt
10999
10182
  };
11000
10183
 
11001
10184
  var RECENT_USER_URL = BASE_URL + "/api/recentUsers";
@@ -11224,12 +10407,6 @@ var useChatContainer = function useChatContainer(props) {
11224
10407
  var _useState5 = useState(true),
11225
10408
  isScrollToEnd = _useState5[0],
11226
10409
  setScrollToEnd = _useState5[1];
11227
- var _useState6 = useState(),
11228
- drawPath = _useState6[0],
11229
- setDrawPath = _useState6[1];
11230
- var _useState7 = useState(false),
11231
- isSending = _useState7[0],
11232
- setSending = _useState7[1];
11233
10410
  var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Admin);
11234
10411
  var _useMessageList = useMessageList({
11235
10412
  student: student
@@ -11254,7 +10431,6 @@ var useChatContainer = function useChatContainer(props) {
11254
10431
  try {
11255
10432
  var _temp3 = function _temp3(_result2) {
11256
10433
  if (_exit) return _result2;
11257
- setSending(false);
11258
10434
  loadingRef.current = false;
11259
10435
  };
11260
10436
  var _exit = false;
@@ -11262,7 +10438,6 @@ var useChatContainer = function useChatContainer(props) {
11262
10438
  loadingRef.current = true;
11263
10439
  if (!(selectedConversation !== null && selectedConversation !== void 0 && selectedConversation.id)) return Promise.resolve();
11264
10440
  setScrollToEnd(true);
11265
- setSending(true);
11266
10441
  var _temp2 = _catch(function () {
11267
10442
  if (file) {
11268
10443
  return Promise.resolve(handleUploadImageData(file)).then(function (selectedFile) {
@@ -11302,7 +10477,6 @@ var useChatContainer = function useChatContainer(props) {
11302
10477
  };
11303
10478
  var handleUploadImage = function handleUploadImage(file) {
11304
10479
  try {
11305
- handleClearCanvas();
11306
10480
  if (file) {
11307
10481
  setFile(file);
11308
10482
  var reader = new FileReader();
@@ -11316,29 +10490,11 @@ var useChatContainer = function useChatContainer(props) {
11316
10490
  return Promise.reject(e);
11317
10491
  }
11318
10492
  };
11319
- var handleSaveCanvas = function handleSaveCanvas(data, drawPath) {
11320
- try {
11321
- return Promise.resolve(fetch(data)).then(function (_fetch) {
11322
- return Promise.resolve(_fetch.blob()).then(function (blob) {
11323
- setFile(blob);
11324
- setBackgroundImage(data);
11325
- setDrawPath(drawPath);
11326
- });
11327
- });
11328
- } catch (e) {
11329
- return Promise.reject(e);
11330
- }
11331
- };
11332
- var handleClearCanvas = function handleClearCanvas() {
11333
- setBackgroundImage(null);
11334
- setDrawPath(undefined);
11335
- setFile(undefined);
11336
- };
11337
10493
  var handleUploadImageData = function handleUploadImageData(file) {
11338
10494
  try {
11339
10495
  return Promise.resolve(_catch(function () {
11340
10496
  var formData = new FormData();
11341
- if (file instanceof Blob) formData.append("upload", file, 'drawing.png');else formData.append("upload", file);
10497
+ formData.append("upload", file);
11342
10498
  return Promise.resolve(apiUploadImageFile(formData)).then(function (res) {
11343
10499
  var _res$data;
11344
10500
  return {
@@ -11411,8 +10567,7 @@ var useChatContainer = function useChatContainer(props) {
11411
10567
  return Promise.reject(e);
11412
10568
  }
11413
10569
  };
11414
- var handleDeleteSelectedImage = function handleDeleteSelectedImage(e) {
11415
- e === null || e === void 0 ? void 0 : e.stopPropagation();
10570
+ var handleDeleteSelectedImage = function handleDeleteSelectedImage() {
11416
10571
  setFile(undefined);
11417
10572
  setBackgroundImage(null);
11418
10573
  };
@@ -11500,16 +10655,12 @@ var useChatContainer = function useChatContainer(props) {
11500
10655
  handleDeleteMessage: handleDeleteMessage
11501
10656
  },
11502
10657
  inputProps: {
11503
- isSending: isSending,
11504
- drawPath: drawPath,
11505
10658
  selectedFile: backgroundImage,
11506
10659
  text: (message === null || message === void 0 ? void 0 : message.content) || "",
11507
10660
  onChangeInput: handleChangeInput,
11508
10661
  onSubmit: handleAddMessage,
11509
10662
  handleDeleteSelectedImage: handleDeleteSelectedImage,
11510
10663
  handleUploadImage: handleUploadImage,
11511
- onSaveCanvas: handleSaveCanvas,
11512
- onClearCanvas: handleClearCanvas,
11513
10664
  isCompleted: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.isCompleted
11514
10665
  },
11515
10666
  isScrollToEnd: isScrollToEnd,
@@ -20234,7 +19385,7 @@ var ChipCustom = styled(Stack)(function (_ref) {
20234
19385
  };
20235
19386
  });
20236
19387
  var AnswerItem = function AnswerItem(_ref2) {
20237
- var _data$selectedAnswers, _data$textualAnswers;
19388
+ var _data$selectedAnswers, _data$textualAnswers, _data$skipRate$toFixe, _data$skipRate;
20238
19389
  var data = _ref2.data,
20239
19390
  nextData = _ref2.nextData,
20240
19391
  isFirst = _ref2.isFirst,
@@ -20299,7 +19450,7 @@ var AnswerItem = function AnswerItem(_ref2) {
20299
19450
  width: "80px",
20300
19451
  justifyContent: "center"
20301
19452
  }
20302
- }, data.answerResponseSignal != null ? React__default.createElement("p", {
19453
+ }, data.duration != 0 ? React__default.createElement("p", {
20303
19454
  style: {
20304
19455
  margin: 0
20305
19456
  },
@@ -20316,7 +19467,7 @@ var AnswerItem = function AnswerItem(_ref2) {
20316
19467
  width: "80px",
20317
19468
  justifyContent: "center"
20318
19469
  }
20319
- }, data.answerResponseSignal != null && data.topDuration ? React__default.createElement("p", {
19470
+ }, data.duration != 0 && data.topDuration ? React__default.createElement("p", {
20320
19471
  style: {
20321
19472
  margin: 0
20322
19473
  },
@@ -20331,20 +19482,20 @@ var AnswerItem = function AnswerItem(_ref2) {
20331
19482
  style: {
20332
19483
  display: "flex",
20333
19484
  alignItems: "center",
20334
- width: "80px",
19485
+ width: "150px",
20335
19486
  justifyContent: "center"
20336
19487
  }
20337
- }, data.answerResponseSignal != null ? React__default.createElement("p", {
19488
+ }, React__default.createElement("p", {
20338
19489
  style: {
20339
19490
  margin: 0
20340
19491
  },
20341
19492
  className: styles$7["answer-response"] + " " + getOverallColorClassName(data.overallCorrectRate, styles$7)
20342
- }, data.overallCorrectRate.toFixed(2) + "%") : React__default.createElement("p", {
19493
+ }, data.overallCorrectRate.toFixed(2) + "%", React__default.createElement("span", {
20343
19494
  style: {
20344
- margin: 0
20345
- },
20346
- className: styles$7["answerNoTime"]
20347
- }, t("no_time"))), React__default.createElement("div", {
19495
+ fontSize: "10px",
19496
+ color: red[900]
19497
+ }
19498
+ }, "(" + ((_data$skipRate$toFixe = (_data$skipRate = data.skipRate) === null || _data$skipRate === void 0 ? void 0 : _data$skipRate.toFixed(2)) != null ? _data$skipRate$toFixe : 0) + "%)"))), React__default.createElement("div", {
20348
19499
  className: styles$7["classification"] + " " + printStyles["avoid-break-inside"] + " flex-grow-1 justify-content-start",
20349
19500
  style: {
20350
19501
  paddingInline: "14px",
@@ -20397,7 +19548,7 @@ var AnswerItem = function AnswerItem(_ref2) {
20397
19548
  }, openContextMenu ? React__default.createElement(ClickAwayListener, {
20398
19549
  onClickAway: handleCloseContextMenu
20399
19550
  }, React__default.createElement(Box, null, React__default.createElement(CustomTooltip, {
20400
- onClose: onCloseContextMenu,
19551
+ onClose: handleCloseContextMenu,
20401
19552
  open: openContextMenu,
20402
19553
  disableFocusListener: true,
20403
19554
  disableHoverListener: true,
@@ -20543,7 +19694,7 @@ var MyAnswer = function MyAnswer(_ref) {
20543
19694
  display: "flex",
20544
19695
  alignItems: "center",
20545
19696
  gap: "4px",
20546
- width: "80px",
19697
+ width: "150px",
20547
19698
  justifyContent: "center"
20548
19699
  }
20549
19700
  }, React__default.createElement(Typography, {
@@ -20553,9 +19704,15 @@ var MyAnswer = function MyAnswer(_ref) {
20553
19704
  fontWeight: 600,
20554
19705
  color: "#97A1AF",
20555
19706
  display: "flex",
20556
- alignItems: "center"
19707
+ alignItems: "baseline",
19708
+ gap: "2px"
20557
19709
  }
20558
- }, t("total_correct_rate")))), React__default.createElement("div", {
19710
+ }, t("total_correct_rate"), React__default.createElement("span", {
19711
+ style: {
19712
+ fontSize: "10px",
19713
+ color: red[900]
19714
+ }
19715
+ }, "(" + t("not_selected") + ")")))), React__default.createElement("div", {
20559
19716
  className: styles$7["titleMyAnswer2"]
20560
19717
  }, React__default.createElement(Typography, {
20561
19718
  sx: {
@@ -22088,7 +21245,7 @@ var TimeOrderChart = function TimeOrderChart(_ref) {
22088
21245
  };
22089
21246
 
22090
21247
  var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
22091
- var _data$selectedAnswers, _data$textualAnswers, _data$selectedAnswers2, _data$textualAnswers2, _data$selectedAnswers3, _data$textualAnswers3;
21248
+ var _data$selectedAnswers, _data$textualAnswers, _data$selectedAnswers2, _data$textualAnswers2, _data$selectedAnswers3, _data$textualAnswers3, _data$skipRate$toFixe, _data$skipRate;
22092
21249
  var data = _ref.data,
22093
21250
  nextData = _ref.nextData,
22094
21251
  isFirst = _ref.isFirst,
@@ -22154,7 +21311,7 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
22154
21311
  display: "flex",
22155
21312
  alignItems: "center"
22156
21313
  }
22157
- }, data.answerResponseSignal != null ? React__default.createElement("p", {
21314
+ }, data.duration != 0 ? React__default.createElement("p", {
22158
21315
  style: {
22159
21316
  margin: 0
22160
21317
  },
@@ -22170,7 +21327,7 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
22170
21327
  display: "flex",
22171
21328
  alignItems: "center"
22172
21329
  }
22173
- }, data.answerResponseSignal != null && data.topDuration ? React__default.createElement("p", {
21330
+ }, data.duration != 0 && data.topDuration ? React__default.createElement("p", {
22174
21331
  style: {
22175
21332
  margin: 0
22176
21333
  },
@@ -22187,22 +21344,22 @@ var TextbookAnswerItem = function TextbookAnswerItem(_ref) {
22187
21344
  display: "flex",
22188
21345
  alignItems: "center"
22189
21346
  }
22190
- }, data.answerResponseSignal != null ? React__default.createElement("p", {
21347
+ }, React__default.createElement("p", {
22191
21348
  style: {
22192
21349
  margin: 0
22193
21350
  },
22194
21351
  className: styles$7["answer-response"] + " " + getOverallColorClassName(data.overallCorrectRate, styles$7)
22195
- }, data.overallCorrectRate.toFixed(2) + "%") : React__default.createElement("p", {
21352
+ }, data.overallCorrectRate.toFixed(2) + "%", React__default.createElement("span", {
22196
21353
  style: {
22197
- margin: 0
22198
- },
22199
- className: styles$7["answerNoTime"]
22200
- }, t("no_time"))), isStudent && !isLearningSpace && React__default.createElement(Box, {
21354
+ fontSize: "10px",
21355
+ color: red[900]
21356
+ }
21357
+ }, "(" + ((_data$skipRate$toFixe = (_data$skipRate = data.skipRate) === null || _data$skipRate === void 0 ? void 0 : _data$skipRate.toFixed(2)) != null ? _data$skipRate$toFixe : 0) + "%)"))), isStudent && !isLearningSpace && React__default.createElement(Box, {
22201
21358
  className: styles["custom-col-2"]
22202
21359
  }, openContextMenu ? React__default.createElement(ClickAwayListener, {
22203
21360
  onClickAway: handleCloseContextMenu
22204
21361
  }, React__default.createElement(Box, null, React__default.createElement(CustomTooltip, {
22205
- onClose: onCloseContextMenu,
21362
+ onClose: handleCloseContextMenu,
22206
21363
  open: openContextMenu,
22207
21364
  disableFocusListener: true,
22208
21365
  disableHoverListener: true,
@@ -22355,9 +21512,15 @@ var TextbookMyAnswer = function TextbookMyAnswer(_ref) {
22355
21512
  fontWeight: 600,
22356
21513
  color: "#97A1AF",
22357
21514
  display: "flex",
22358
- alignItems: "center"
21515
+ alignItems: "baseline",
21516
+ gap: "2px"
21517
+ }
21518
+ }, t("total_correct_rate"), React__default.createElement("span", {
21519
+ style: {
21520
+ fontSize: "10px",
21521
+ color: red[900]
22359
21522
  }
22360
- }, t("total_correct_rate")))), React__default.createElement("div", {
21523
+ }, "(" + t("not_selected") + ")")))), React__default.createElement("div", {
22361
21524
  className: styles$7["titleMyAnswer2"]
22362
21525
  }, React__default.createElement(Typography, {
22363
21526
  sx: {
@@ -24971,7 +24134,7 @@ var useOverallChartContainer = function useOverallChartContainer(isStudent, exam
24971
24134
  return [texts.slice(0, middle), texts.slice(middle)];
24972
24135
  }, [JSON.stringify(categories)]);
24973
24136
  var formatTooltip = useCallback(function (_ref2) {
24974
- var _overallData$data$0$h, _overallData$data$, _overallData$data$1$h, _overallData$data$2, _overallData$data$2$h, _overallData$data$0$q, _overallData$data$3, _overallData$data$1$q, _overallData$data$4, _overallData$data$0$p, _overallData$data$5, _overallData$data$1$p, _overallData$data$6, _overallData$data$0$t, _overallData$data$7, _overallData$data$1$t, _overallData$data$8, _overallData$data$8$t, _overallData$data$0$l, _overallData$data$9, _overallData$data$1$l, _overallData$data$10, _overallData$data$10$, _overallData$data$0$c, _overallData$data$11, _overallData$data$11$, _overallData$data$1$c, _overallData$data$12, _overallData$data$12$;
24137
+ var _overallData$data$0$h, _overallData$data$, _overallData$maxData$, _overallData$data$1$h, _overallData$data$2, _overallData$maxData$2, _overallData$data$0$q, _overallData$data$3, _overallData$data$1$q, _overallData$data$4, _overallData$data$0$p, _overallData$data$5, _overallData$data$1$p, _overallData$data$6, _overallData$data$0$t, _overallData$data$7, _overallData$maxData$3, _overallData$data$1$t, _overallData$data$8, _overallData$maxData$4, _overallData$data$0$l, _overallData$data$9, _overallData$maxData$5, _overallData$data$1$l, _overallData$data$10, _overallData$maxData$6, _overallData$data$0$c, _overallData$data$11, _overallData$data$11$, _overallData$data$1$c, _overallData$data$12, _overallData$data$12$;
24975
24138
  var dataPointIndex = _ref2.dataPointIndex,
24976
24139
  w = _ref2.w;
24977
24140
  var label = categories[dataPointIndex];
@@ -24980,42 +24143,34 @@ var useOverallChartContainer = function useOverallChartContainer(isStudent, exam
24980
24143
  switch (dataPointIndex) {
24981
24144
  case 1:
24982
24145
  myValue = "" + t("n_questions", {
24983
- total: (_overallData$data$0$h = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$ = overallData.data[0]) === null || _overallData$data$ === void 0 ? void 0 : _overallData$data$.highLevelQuestions) != null ? _overallData$data$0$h : 0
24146
+ total: ((_overallData$data$0$h = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$ = overallData.data[0]) === null || _overallData$data$ === void 0 ? void 0 : _overallData$data$.highLevelQuestions) != null ? _overallData$data$0$h : 0) + "/" + ((_overallData$maxData$ = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.highLevelQuestions) != null ? _overallData$maxData$ : 0)
24984
24147
  });
24985
24148
  avgValue = "" + t("n_questions", {
24986
- total: (_overallData$data$1$h = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$2 = overallData.data[1]) === null || _overallData$data$2 === void 0 ? void 0 : (_overallData$data$2$h = _overallData$data$2.highLevelQuestions) === null || _overallData$data$2$h === void 0 ? void 0 : _overallData$data$2$h.toFixed(2)) != null ? _overallData$data$1$h : 0
24149
+ total: Math.round((_overallData$data$1$h = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$2 = overallData.data[1]) === null || _overallData$data$2 === void 0 ? void 0 : _overallData$data$2.highLevelQuestions) != null ? _overallData$data$1$h : 0) + "/" + ((_overallData$maxData$2 = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.highLevelQuestions) != null ? _overallData$maxData$2 : 0)
24987
24150
  });
24988
24151
  break;
24989
24152
  case 2:
24990
- myValue = "" + t("n_seconds", {
24991
- sec: (((_overallData$data$0$q = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$3 = overallData.data[0]) === null || _overallData$data$3 === void 0 ? void 0 : _overallData$data$3.questionLongestTime) != null ? _overallData$data$0$q : 0) / 1000).toFixed(2)
24992
- });
24993
- avgValue = "" + t("n_seconds", {
24994
- sec: (((_overallData$data$1$q = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$4 = overallData.data[1]) === null || _overallData$data$4 === void 0 ? void 0 : _overallData$data$4.questionLongestTime) != null ? _overallData$data$1$q : 0) / 1000).toFixed(2)
24995
- });
24153
+ myValue = formatTimeSecond(((_overallData$data$0$q = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$3 = overallData.data[0]) === null || _overallData$data$3 === void 0 ? void 0 : _overallData$data$3.questionLongestTime) != null ? _overallData$data$0$q : 0) / 1000, t);
24154
+ avgValue = formatTimeSecond(((_overallData$data$1$q = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$4 = overallData.data[1]) === null || _overallData$data$4 === void 0 ? void 0 : _overallData$data$4.questionLongestTime) != null ? _overallData$data$1$q : 0) / 1000, t);
24996
24155
  break;
24997
24156
  case 3:
24998
- myValue = "" + t("n_seconds", {
24999
- sec: (((_overallData$data$0$p = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$5 = overallData.data[0]) === null || _overallData$data$5 === void 0 ? void 0 : _overallData$data$5.problemSolvingTime) != null ? _overallData$data$0$p : 0) / 1000).toFixed(2)
25000
- });
25001
- avgValue = "" + t("n_seconds", {
25002
- sec: (((_overallData$data$1$p = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$6 = overallData.data[1]) === null || _overallData$data$6 === void 0 ? void 0 : _overallData$data$6.problemSolvingTime) != null ? _overallData$data$1$p : 0) / 1000).toFixed(2)
25003
- });
24157
+ myValue = formatTimeSecond(((_overallData$data$0$p = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$5 = overallData.data[0]) === null || _overallData$data$5 === void 0 ? void 0 : _overallData$data$5.problemSolvingTime) != null ? _overallData$data$0$p : 0) / 1000, t);
24158
+ avgValue = formatTimeSecond(((_overallData$data$1$p = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$6 = overallData.data[1]) === null || _overallData$data$6 === void 0 ? void 0 : _overallData$data$6.problemSolvingTime) != null ? _overallData$data$1$p : 0) / 1000, t);
25004
24159
  break;
25005
24160
  case 4:
25006
24161
  myValue = "" + t("n_questions", {
25007
- total: (_overallData$data$0$t = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$7 = overallData.data[0]) === null || _overallData$data$7 === void 0 ? void 0 : _overallData$data$7.totalAsteriskQuestions) != null ? _overallData$data$0$t : 0
24162
+ total: ((_overallData$data$0$t = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$7 = overallData.data[0]) === null || _overallData$data$7 === void 0 ? void 0 : _overallData$data$7.totalAsteriskQuestions) != null ? _overallData$data$0$t : 0) + "/" + ((_overallData$maxData$3 = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.totalAsteriskQuestions) != null ? _overallData$maxData$3 : 0)
25008
24163
  });
25009
24164
  avgValue = "" + t("n_questions", {
25010
- total: (_overallData$data$1$t = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$8 = overallData.data[1]) === null || _overallData$data$8 === void 0 ? void 0 : (_overallData$data$8$t = _overallData$data$8.totalAsteriskQuestions) === null || _overallData$data$8$t === void 0 ? void 0 : _overallData$data$8$t.toFixed(2)) != null ? _overallData$data$1$t : 0
24165
+ total: Math.round((_overallData$data$1$t = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$8 = overallData.data[1]) === null || _overallData$data$8 === void 0 ? void 0 : _overallData$data$8.totalAsteriskQuestions) != null ? _overallData$data$1$t : 0) + "/" + ((_overallData$maxData$4 = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.totalAsteriskQuestions) != null ? _overallData$maxData$4 : 0)
25011
24166
  });
25012
24167
  break;
25013
24168
  case 5:
25014
24169
  myValue = "" + t("n_questions", {
25015
- total: (_overallData$data$0$l = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$9 = overallData.data[0]) === null || _overallData$data$9 === void 0 ? void 0 : _overallData$data$9.lowLevelQuestions) != null ? _overallData$data$0$l : 0
24170
+ total: ((_overallData$data$0$l = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$9 = overallData.data[0]) === null || _overallData$data$9 === void 0 ? void 0 : _overallData$data$9.lowLevelQuestions) != null ? _overallData$data$0$l : 0) + "/" + ((_overallData$maxData$5 = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.lowLevelQuestions) != null ? _overallData$maxData$5 : 0)
25016
24171
  });
25017
24172
  avgValue = "" + t("n_questions", {
25018
- total: (_overallData$data$1$l = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$10 = overallData.data[1]) === null || _overallData$data$10 === void 0 ? void 0 : (_overallData$data$10$ = _overallData$data$10.lowLevelQuestions) === null || _overallData$data$10$ === void 0 ? void 0 : _overallData$data$10$.toFixed(2)) != null ? _overallData$data$1$l : 0
24173
+ total: Math.round((_overallData$data$1$l = overallData === null || overallData === void 0 ? void 0 : (_overallData$data$10 = overallData.data[1]) === null || _overallData$data$10 === void 0 ? void 0 : _overallData$data$10.lowLevelQuestions) != null ? _overallData$data$1$l : 0) + "/" + ((_overallData$maxData$6 = overallData === null || overallData === void 0 ? void 0 : overallData.maxData.lowLevelQuestions) != null ? _overallData$maxData$6 : 0)
25019
24174
  });
25020
24175
  break;
25021
24176
  default:
@@ -27161,7 +26316,7 @@ var ChapterDetail = function ChapterDetail(_ref) {
27161
26316
  gap: "16px",
27162
26317
  justifyContent: "center",
27163
26318
  alignItems: "center"
27164
- }, React__default.createElement(IoCheckmarkCircle, {
26319
+ }, chapter.completedChapterQuestions === chapter.totalChapterQuestions && React__default.createElement(IoCheckmarkCircle, {
27165
26320
  color: styles.less_dark
27166
26321
  }), React__default.createElement(Typography, {
27167
26322
  fontSize: "14px",
@@ -27760,7 +26915,8 @@ var TextbookDrawer = function TextbookDrawer(_ref) {
27760
26915
  borderRadius: "10px",
27761
26916
  width: "100%",
27762
26917
  height: "22px",
27763
- position: "relative"
26918
+ position: "relative",
26919
+ overflow: "hidden"
27764
26920
  }
27765
26921
  }, React__default.createElement(Stack, {
27766
26922
  sx: {
@@ -28659,7 +27815,7 @@ var PreparedItem = function PreparedItem(_ref) {
28659
27815
  margin: "0 1rem",
28660
27816
  width: "800px"
28661
27817
  }
28662
- }, React__default.createElement(Slider$1, Object.assign({}, settings), subjectOptions.map(function (option) {
27818
+ }, React__default.createElement(Slider, Object.assign({}, settings), subjectOptions.map(function (option) {
28663
27819
  return React__default.createElement(Tooltip, {
28664
27820
  title: option.label
28665
27821
  }, React__default.createElement(FormControlLabel, {