@sonhero/explanation-package 1.9.1 → 1.10.1

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 (179) hide show
  1. package/dist/assets/images/default_thumbnail_video.png +0 -0
  2. package/dist/assets/images/default_thumbnail_video_mobile.png +0 -0
  3. package/dist/assets/images/default_thumbnail_video_tablet.png +0 -0
  4. package/dist/index.cjs +8835 -0
  5. package/dist/index.css +1 -12
  6. package/dist/index.mjs +15828 -0
  7. package/package.json +37 -53
  8. package/dist/Quiz.d.ts +0 -7
  9. package/dist/QuizComponent.d.ts +0 -23
  10. package/dist/button/ButtonCancelSubmit.d.ts +0 -3
  11. package/dist/button/ErrorMessage.d.ts +0 -7
  12. package/dist/button/SappButton.d.ts +0 -4
  13. package/dist/button/YourAnswer.d.ts +0 -6
  14. package/dist/checkbox/HookFormCheckBox.d.ts +0 -19
  15. package/dist/checkbox/HookFormCheckBoxGroup.d.ts +0 -37
  16. package/dist/checkbox/SAPPCheckbox.d.ts +0 -14
  17. package/dist/common/ArrowIcon.d.ts +0 -9
  18. package/dist/common/CommentList.d.ts +0 -9
  19. package/dist/common/EssayRender.d.ts +0 -52
  20. package/dist/common/ExhibitMovableWindow.d.ts +0 -13
  21. package/dist/common/ExhibitRender.d.ts +0 -21
  22. package/dist/common/Explanation.d.ts +0 -12
  23. package/dist/common/FileDisplay.d.ts +0 -14
  24. package/dist/common/HookClick.d.ts +0 -7
  25. package/dist/common/Icon.d.ts +0 -8
  26. package/dist/common/MovableWindow.d.ts +0 -11
  27. package/dist/common/MoveQuestionBar.d.ts +0 -16
  28. package/dist/common/SappIcon.d.ts +0 -11
  29. package/dist/common/TopicDisplay.d.ts +0 -34
  30. package/dist/components/ArrowIcon.d.ts +0 -8
  31. package/dist/components/ExhibitMovableWindow.d.ts +0 -13
  32. package/dist/components/ExhibitMovableWindowV2.d.ts +0 -13
  33. package/dist/components/ExhibitRender.d.ts +0 -20
  34. package/dist/components/FileDisplay.d.ts +0 -15
  35. package/dist/components/HookClick.d.ts +0 -7
  36. package/dist/components/Icon.d.ts +0 -17
  37. package/dist/components/MovableWindow.d.ts +0 -11
  38. package/dist/components/SappIcon.d.ts +0 -11
  39. package/dist/components/comment-list/commentList.styles.d.ts +0 -1
  40. package/dist/components/comment-list/index.d.ts +0 -11
  41. package/dist/components/comment-list-v2/commentListV2.styles.d.ts +0 -1
  42. package/dist/components/comment-list-v2/index.d.ts +0 -14
  43. package/dist/components/comment-modal/CommentModal.d.ts +0 -9
  44. package/dist/components/comment-modal/commentModal.styles.d.ts +0 -1
  45. package/dist/components/comment-modal/index.d.ts +0 -2
  46. package/dist/components/common/button/ButtonCancelSubmit.d.ts +0 -3
  47. package/dist/components/common/button/ErrorMessage.d.ts +0 -7
  48. package/dist/components/common/button/SappButton.d.ts +0 -4
  49. package/dist/components/common/button/YourAnswer.d.ts +0 -6
  50. package/dist/components/common/button/YourAnswerV2.d.ts +0 -7
  51. package/dist/components/common/checkbox/HookFormCheckBoxGroup.d.ts +0 -37
  52. package/dist/components/common/checkbox/SAPPCheckbox.d.ts +0 -14
  53. package/dist/components/common/checkboxV2/HookFormCheckBoxGroupV2.d.ts +0 -37
  54. package/dist/components/common/checkboxV2/SAPPCheckboxV2.d.ts +0 -15
  55. package/dist/components/common/common.styles.d.ts +0 -1
  56. package/dist/components/common/divider/Divider.d.ts +0 -5
  57. package/dist/components/common/divider/styles.d.ts +0 -1
  58. package/dist/components/common/modal/PopupViewPdf.d.ts +0 -13
  59. package/dist/components/common/modal/SappModal.d.ts +0 -64
  60. package/dist/components/common/modal/SappModalImage.d.ts +0 -7
  61. package/dist/components/common/modal/SappModalVideo.d.ts +0 -7
  62. package/dist/components/common/pdf/pdf-viewer.d.ts +0 -5
  63. package/dist/components/common/pdf/popupViewPdf.d.ts +0 -8
  64. package/dist/components/common/radiobutton/HookFormRadioGroup.d.ts +0 -26
  65. package/dist/components/common/radiobutton/SAPPRadio.d.ts +0 -15
  66. package/dist/components/common/radiobuttonV2/HookFormRadioGroupV2.d.ts +0 -26
  67. package/dist/components/common/radiobuttonV2/SAPPRadioV2.d.ts +0 -15
  68. package/dist/components/common/video/Player.d.ts +0 -2
  69. package/dist/components/common/video/SAPPVideo.d.ts +0 -10
  70. package/dist/components/common/video/video.styles.d.ts +0 -1
  71. package/dist/components/editor/EditorReader.d.ts +0 -13
  72. package/dist/components/essay-render/essayRender.styles.d.ts +0 -1
  73. package/dist/components/essay-render/index.d.ts +0 -87
  74. package/dist/components/essay-render-v2/essayRenderV2.styles.d.ts +0 -1
  75. package/dist/components/essay-render-v2/index.d.ts +0 -96
  76. package/dist/components/explanation/explanation.styles.d.ts +0 -1
  77. package/dist/components/explanation/index.d.ts +0 -13
  78. package/dist/components/explanationV2/index.d.ts +0 -13
  79. package/dist/components/grading-file/GradingFileDisplay.d.ts +0 -10
  80. package/dist/components/grading-file/ListGradingFile.d.ts +0 -8
  81. package/dist/components/icons/CloseIcon.d.ts +0 -5
  82. package/dist/components/icons/ResizeIcon.d.ts +0 -5
  83. package/dist/components/icons/UploadIcon.d.ts +0 -2
  84. package/dist/components/icons/index.d.ts +0 -12
  85. package/dist/components/list-question/ListQuestion.d.ts +0 -13
  86. package/dist/components/list-question/QuestionGrid.d.ts +0 -21
  87. package/dist/components/list-question/types.d.ts +0 -14
  88. package/dist/components/move-question-bar/index.d.ts +0 -16
  89. package/dist/components/move-question-bar/moveQuestionBar.styles.d.ts +0 -1
  90. package/dist/components/questionType/ConstructedQuestion.d.ts +0 -19
  91. package/dist/components/questionType/DragNDrop.d.ts +0 -17
  92. package/dist/components/questionType/FillText.d.ts +0 -21
  93. package/dist/components/questionType/MatchingQuestion.d.ts +0 -18
  94. package/dist/components/questionType/MultipleChoiceQuestion.d.ts +0 -4
  95. package/dist/components/questionType/OneChoiceQuestion.d.ts +0 -19
  96. package/dist/components/questionType/SelectWordQuestion.d.ts +0 -28
  97. package/dist/components/questionType/questionTypes.styles.d.ts +0 -1
  98. package/dist/components/quiz-component/index.d.ts +0 -25
  99. package/dist/components/quiz-component/quizComponent.styles.d.ts +0 -1
  100. package/dist/components/quiz-component-v2/index.d.ts +0 -29
  101. package/dist/components/quiz-component-v2/questionTypeV2/ConstructedQuestionV2.d.ts +0 -22
  102. package/dist/components/quiz-component-v2/questionTypeV2/DragNDrop.d.ts +0 -18
  103. package/dist/components/quiz-component-v2/questionTypeV2/FillText.d.ts +0 -21
  104. package/dist/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomEdge.d.ts +0 -4
  105. package/dist/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomFlow.d.ts +0 -11
  106. package/dist/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomNode.d.ts +0 -9
  107. package/dist/components/quiz-component-v2/questionTypeV2/MatchQuiz/index.d.ts +0 -22
  108. package/dist/components/quiz-component-v2/questionTypeV2/MultipleChoiceQuestion.d.ts +0 -4
  109. package/dist/components/quiz-component-v2/questionTypeV2/OneChoiceQuestion.d.ts +0 -19
  110. package/dist/components/quiz-component-v2/questionTypeV2/SelectWordQuestion.d.ts +0 -21
  111. package/dist/components/quiz-component-v2/questionTypeV2/questionTypes.styles.d.ts +0 -1
  112. package/dist/components/quiz-component-v2/quizComponentV2.styles.d.ts +0 -1
  113. package/dist/components/render-view/AIComment.d.ts +0 -10
  114. package/dist/components/render-view/MarkdownRender.d.ts +0 -10
  115. package/dist/components/render-view/ModalPreviewFile.d.ts +0 -11
  116. package/dist/components/styles.d.ts +0 -1
  117. package/dist/components/topic-display/index.d.ts +0 -34
  118. package/dist/components/topic-display/topicDisplay.styles.d.ts +0 -1
  119. package/dist/constant/icon.d.ts +0 -3
  120. package/dist/constant/index.d.ts +0 -313
  121. package/dist/contexts/index.d.ts +0 -10
  122. package/dist/conts/index.d.ts +0 -273
  123. package/dist/editor/EditorReader.d.ts +0 -13
  124. package/dist/editor/HookFormEditor.d.ts +0 -22
  125. package/dist/editor/editor.d.ts +0 -18
  126. package/dist/hooks/HookClick.d.ts +0 -7
  127. package/dist/hooks/useCommentMobileView.d.ts +0 -3
  128. package/dist/hooks/useListQuestionColumnsPerRow.d.ts +0 -4
  129. package/dist/hooks/useMousePosition.d.ts +0 -5
  130. package/dist/hooks/useTailwindBreakpoint.d.ts +0 -17
  131. package/dist/icons/CloseIcon.d.ts +0 -4
  132. package/dist/icons/UploadIcon.d.ts +0 -2
  133. package/dist/index.d.ts +0 -19
  134. package/dist/index.js +0 -7685
  135. package/dist/index.js.map +0 -1
  136. package/dist/index.modern.js +0 -7681
  137. package/dist/index.modern.js.map +0 -1
  138. package/dist/index.test.d.ts +0 -1
  139. package/dist/modal/PopupViewPdf.d.ts +0 -8
  140. package/dist/modal/SappModal.d.ts +0 -64
  141. package/dist/modal/SappModalImage.d.ts +0 -7
  142. package/dist/modal/SappModalVideo.d.ts +0 -7
  143. package/dist/pdf/pdf-viewer.d.ts +0 -4
  144. package/dist/pdf/popupViewPdf.d.ts +0 -8
  145. package/dist/questionType/ConstructedQuestion.d.ts +0 -19
  146. package/dist/questionType/DragNDrop.d.ts +0 -17
  147. package/dist/questionType/FillText.d.ts +0 -21
  148. package/dist/questionType/MatchingQuestion.d.ts +0 -18
  149. package/dist/questionType/MultipleChoiceQuestion.d.ts +0 -4
  150. package/dist/questionType/OneChoiceQuestion.d.ts +0 -19
  151. package/dist/questionType/SelectWordQuestion.d.ts +0 -28
  152. package/dist/radiobutton/HookFormRadioGroup.d.ts +0 -26
  153. package/dist/radiobutton/SAPPRadio.d.ts +0 -15
  154. package/dist/style.d.ts +0 -1
  155. package/dist/styles/base/colors.d.ts +0 -1
  156. package/dist/styles/base/typography.d.ts +0 -1
  157. package/dist/styles/base/utils.d.ts +0 -1
  158. package/dist/styles/global-styles.d.ts +0 -1
  159. package/dist/styles/index.d.ts +0 -1
  160. package/dist/styles/legacy/button.d.ts +0 -1
  161. package/dist/styles/legacy/caret.d.ts +0 -1
  162. package/dist/styles/legacy/condition.d.ts +0 -1
  163. package/dist/styles/legacy/custom-style.d.ts +0 -1
  164. package/dist/styles/legacy/editor-wrap.d.ts +0 -1
  165. package/dist/styles/legacy/fortune.d.ts +0 -1
  166. package/dist/styles/legacy/lucky-sheet.d.ts +0 -1
  167. package/dist/styles/legacy/resizable.d.ts +0 -1
  168. package/dist/styles/legacy/sapp-custom.d.ts +0 -1
  169. package/dist/styles/legacy/stream-player.d.ts +0 -1
  170. package/dist/styles/legacy/tailwind.d.ts +0 -1
  171. package/dist/styles/legacy/tooltip.d.ts +0 -1
  172. package/dist/styles/list-question/listQuestion.styles.d.ts +0 -1
  173. package/dist/styles/react-flow-styled.d.ts +0 -1
  174. package/dist/utils/dragandresize.d.ts +0 -6
  175. package/dist/utils/graded.d.ts +0 -48
  176. package/dist/utils/icons.d.ts +0 -9
  177. package/dist/utils/index.d.ts +0 -24
  178. package/dist/video/Player.d.ts +0 -2
  179. package/dist/video/SAPPVideo.d.ts +0 -13
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/components/common/divider/Divider.tsx","../src/components/icons/ResizeIcon.tsx","../src/constant/index.ts","../src/hooks/useMousePosition.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/utils/index.ts","../src/utils/graded.ts","../src/components/icons/CloseIcon.tsx","../src/components/common/button/SappButton.tsx","../src/components/common/button/ButtonCancelSubmit.tsx","../src/components/common/modal/SappModal.tsx","../src/components/common/modal/SappModalImage.tsx","../src/components/common/video/SAPPVideo.tsx","../src/components/editor/EditorReader.tsx","../src/contexts/index.tsx","../src/components/comment-list/index.tsx","../src/components/common/modal/PopupViewPdf.tsx","../src/utils/icons.tsx","../src/components/FileDisplay.tsx","../src/components/questionType/ConstructedQuestion.tsx","../src/components/Icon.tsx","../src/components/explanationV2/index.tsx","../src/components/essay-render/index.tsx","../src/utils/dragandresize.ts","../src/components/MovableWindow.tsx","../src/components/SappIcon.tsx","../src/components/ExhibitMovableWindow.tsx","../src/components/explanation/index.tsx","../src/components/HookClick.tsx","../src/components/icons/index.tsx","../src/components/move-question-bar/index.tsx","../src/components/questionType/DragNDrop.tsx","../src/components/questionType/FillText.tsx","../src/components/questionType/MatchingQuestion.tsx","../src/components/common/button/ErrorMessage.tsx","../src/components/common/button/YourAnswer.tsx","../src/components/common/checkbox/SAPPCheckbox.tsx","../src/components/common/checkbox/HookFormCheckBoxGroup.tsx","../src/components/questionType/MultipleChoiceQuestion.tsx","../src/components/common/radiobutton/SAPPRadio.tsx","../src/components/common/radiobutton/HookFormRadioGroup.tsx","../src/components/questionType/OneChoiceQuestion.tsx","../src/components/questionType/SelectWordQuestion.tsx","../src/components/ExhibitRender.tsx","../src/components/topic-display/index.tsx","../src/components/quiz-component/index.tsx","../src/hooks/useCommentMobileView.ts","../src/components/quiz-component-v2/questionTypeV2/DragNDrop.tsx","../src/components/quiz-component-v2/questionTypeV2/FillText.tsx","../src/components/common/checkboxV2/SAPPCheckboxV2.tsx","../src/components/common/button/YourAnswerV2.tsx","../src/components/common/checkboxV2/HookFormCheckBoxGroupV2.tsx","../src/components/quiz-component-v2/questionTypeV2/MultipleChoiceQuestion.tsx","../src/components/common/radiobuttonV2/SAPPRadioV2.tsx","../src/components/common/radiobuttonV2/HookFormRadioGroupV2.tsx","../src/components/quiz-component-v2/questionTypeV2/OneChoiceQuestion.tsx","../src/components/quiz-component-v2/questionTypeV2/SelectWordQuestion.tsx","../src/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomEdge.tsx","../src/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomNode.tsx","../src/components/quiz-component-v2/questionTypeV2/MatchQuiz/CustomFlow.tsx","../src/components/quiz-component-v2/questionTypeV2/MatchQuiz/index.tsx","../src/components/ExhibitMovableWindowV2.tsx","../src/components/comment-modal/CommentModal.tsx","../src/components/quiz-component-v2/questionTypeV2/ConstructedQuestionV2.tsx","../src/components/comment-list-v2/index.tsx","../src/components/render-view/ModalPreviewFile.tsx","../src/components/grading-file/ListGradingFile.tsx","../src/components/render-view/MarkdownRender.tsx","../src/components/render-view/AIComment.tsx","../src/components/essay-render-v2/index.tsx","../src/hooks/useListQuestionColumnsPerRow.ts","../src/components/list-question/QuestionGrid.tsx","../src/components/list-question/ListQuestion.tsx","../src/components/quiz-component-v2/index.tsx","../src/components/comment-list/commentList.styles.ts","../src/components/common/divider/styles.ts","../src/components/common/common.styles.ts","../src/components/explanation/explanation.styles.ts","../src/components/move-question-bar/moveQuestionBar.styles.ts","../src/components/questionType/questionTypes.styles.ts","../src/components/quiz-component/quizComponent.styles.ts","../src/components/topic-display/topicDisplay.styles.ts","../src/components/essay-render/essayRender.styles.ts","../src/components/quiz-component-v2/quizComponentV2.styles.ts","../src/components/essay-render-v2/essayRenderV2.styles.ts","../src/components/comment-list-v2/commentListV2.styles.ts","../src/components/comment-modal/commentModal.styles.ts","../src/styles/list-question/listQuestion.styles.ts","../src/components/styles.ts","../src/styles/base/colors.ts","../src/styles/legacy/resizable.ts","../src/styles/base/typography.ts","../src/styles/base/utils.ts","../src/styles/legacy/editor-wrap.ts","../src/styles/legacy/sapp-custom.ts","../src/styles/legacy/tailwind.ts","../src/styles/react-flow-styled.ts","../src/styles/legacy/tooltip.ts","../src/styles/legacy/lucky-sheet.ts","../src/styles/legacy/fortune.ts","../src/components/common/video/video.styles.ts","../src/styles/index.ts","../src/styles/global-styles.ts","../src/index.tsx"],"sourcesContent":["import React from 'react'\r\nimport clsx from 'clsx'\r\n\r\ninterface DividerProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst Divider: React.FC<DividerProps> = ({ className, ...rest }) => {\r\n return <div className={clsx('divider', className)} {...rest} />\r\n}\r\n\r\nexport default Divider\r\n","import React from 'react'\r\n\r\ninterface ResizeIconProps extends React.SVGProps<SVGSVGElement> {}\r\n\r\nexport const ResizeIcon: React.FC<ResizeIconProps> = (props) => {\r\n return (\r\n <svg\r\n width='32px'\r\n height='32px'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...props}\r\n >\r\n <g id='SVGRepo_bgCarrier' strokeWidth='0' />\r\n <g\r\n id='SVGRepo_tracerCarrier'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n <g id='SVGRepo_iconCarrier'>\r\n {' '}\r\n <path\r\n d='M10.5303 9.53033C10.8232 9.23744 10.8232 8.76256 10.5303 8.46967C10.2374 8.17678 9.76256 8.17678 9.46967 8.46967L10.5303 9.53033ZM7 12L6.46967 11.4697C6.17678 11.7626 6.17678 12.2374 6.46967 12.5303L7 12ZM9.46967 15.5303C9.76256 15.8232 10.2374 15.8232 10.5303 15.5303C10.8232 15.2374 10.8232 14.7626 10.5303 14.4697L9.46967 15.5303ZM13.4697 14.4697C13.1768 14.7626 13.1768 15.2374 13.4697 15.5303C13.7626 15.8232 14.2374 15.8232 14.5303 15.5303L13.4697 14.4697ZM17 12L17.5303 12.5303C17.8232 12.2374 17.8232 11.7626 17.5303 11.4697L17 12ZM14.5303 8.46967C14.2374 8.17678 13.7626 8.17678 13.4697 8.46967C13.1768 8.76256 13.1768 9.23744 13.4697 9.53033L14.5303 8.46967ZM9.46967 8.46967L6.46967 11.4697L7.53033 12.5303L10.5303 9.53033L9.46967 8.46967ZM6.46967 12.5303L9.46967 15.5303L10.5303 14.4697L7.53033 11.4697L6.46967 12.5303ZM14.5303 15.5303L17.5303 12.5303L16.4697 11.4697L13.4697 14.4697L14.5303 15.5303ZM17.5303 11.4697L14.5303 8.46967L13.4697 9.53033L16.4697 12.5303L17.5303 11.4697ZM20.25 12C20.25 16.5563 16.5563 20.25 12 20.25V21.75C17.3848 21.75 21.75 17.3848 21.75 12H20.25ZM12 20.25C7.44365 20.25 3.75 16.5563 3.75 12H2.25C2.25 17.3848 6.61522 21.75 12 21.75V20.25ZM3.75 12C3.75 7.44365 7.44365 3.75 12 3.75V2.25C6.61522 2.25 2.25 6.61522 2.25 12H3.75ZM12 3.75C16.5563 3.75 20.25 7.44365 20.25 12H21.75C21.75 6.61522 17.3848 2.25 12 2.25V3.75Z'\r\n fill='#9ca3af'\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n","export const EXPLANATION_TITLE = 'Explanation'\r\nexport const SOLUTION_TITLE = 'Solution'\r\nexport const video_url = process.env.NEXT_PUBLIC_VIDEO_URL\r\nexport const GRADING_METHOD = {\r\n MANUAL: 'MANUAL',\r\n AUTO: 'AUTO'\r\n}\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport interface IFile {\r\n id: string\r\n created_at: string\r\n updated_at: string\r\n deleted_at: string\r\n dom_id: string\r\n type: string\r\n object_id: string\r\n resource_id: string\r\n resource: {\r\n id: string\r\n name: string\r\n file_key: string\r\n stream_url: string\r\n cloudflare_video_id: string\r\n time_line: any[]\r\n status: string\r\n url: string\r\n url_expired_in: string\r\n sub_url: string\r\n }\r\n}\r\nexport interface IVideo {\r\n file: IFile\r\n quiz?: {\r\n id: string\r\n constructed_questions: IQuestion[]\r\n multiple_choice_questions: IQuestion[]\r\n }\r\n}\r\nexport enum QUESTION_LEVELS {\r\n FUNDAMENTAL = 'FUNDAMENTAL',\r\n ADVANCED = 'ADVANCED'\r\n}\r\nexport enum QUESTION_ASSIGNMENT_TYPE {\r\n FILE = 'FILE',\r\n TEXT = 'TEXT',\r\n ALL = 'ALL'\r\n}\r\nexport enum QUESTION_RESPONSE_OPTION {\r\n WORD = 'WORD',\r\n SHEET = 'SHEET',\r\n NONE = 'NONE'\r\n}\r\n\r\nexport interface IQuestionAnswer {\r\n id: any\r\n is_correct: boolean\r\n answer: string\r\n answer_position: number\r\n}\r\n\r\nexport interface IQuestion {\r\n id?: string\r\n qType?: QUESTION_TYPES\r\n assignment_type: string\r\n response_option?: string | null\r\n level: QUESTION_LEVELS\r\n display_type: string\r\n question_content: string\r\n solution?: string\r\n hint?: string\r\n tags?: IQuestionTag[]\r\n answers?: any[]\r\n question_matchings?: {\r\n content: string\r\n answer: any\r\n }[]\r\n question_filter?: {\r\n course_id: string\r\n chapter_id: string\r\n unit_id: string\r\n activity_id: string\r\n part_id: string\r\n }\r\n question_category_id?: string\r\n question_topic_id?: string\r\n requirements?: {\r\n name: string\r\n type?: 'TEXT' | 'FILE'\r\n description: string\r\n files?: IFile[]\r\n }[]\r\n exhibits?: {\r\n name: string\r\n type?: 'TEXT' | 'FILE'\r\n description: string\r\n files?: IFile[]\r\n }[]\r\n files?: IFile[]\r\n\r\n setting_grade?: string\r\n time?: string\r\n}\r\n\r\nexport enum ANSWER_CORRECT_TYPE {\r\n T = 'T',\r\n F = 'F'\r\n}\r\n\r\nexport interface IQuestionTag {\r\n id?: string\r\n name?: string\r\n description?: string\r\n}\r\nexport interface IQuestionCategory {\r\n id?: string\r\n name?: string\r\n description?: string\r\n}\r\n\r\nexport const PageLink = {\r\n DASHBOARD: '/',\r\n COURSES: '/courses',\r\n COURSE_NEW: '/courses/new-courses',\r\n TOPICS: '/topics',\r\n CASE_STUDY: '/casestudy',\r\n TEACHER: '/teacher',\r\n AUTH_LOGIN: '/auth/login',\r\n AUTH_FORGOT_PASSWORD: '/auth/forgot-password',\r\n AUTH_FORGOT_PASSWORD_RECOVER: '/auth/forgot-password/recover',\r\n AUTH_CHANGE_PASSWORD: '/auth/change-password',\r\n AUTH_CHANGE_PASSWORD_SUCCESS: '/auth/change-password/change-password-success',\r\n NOTIFICATION: '/notifications',\r\n ENTRANCE_TEST: '/entrance-test'\r\n}\r\n\r\nexport const TitleSidebar = {\r\n DASHBOARD: 'Dashboard',\r\n COURSES: 'Courses',\r\n COURSE_NEW: 'Course new',\r\n COURSE_LIST: 'Course list',\r\n CASE_STUDY: 'Case Study',\r\n TOPICS: 'Topics',\r\n TOPICS_LIST: 'Topics list',\r\n TEACHER: 'Teacher'\r\n}\r\n\r\nexport const GUIDELINE_PASSWORD = [\r\n 'Tối thiểu 8 ký tự, ít nhất 1 ký tự hoa, 1 ký tự số'\r\n]\r\n\r\nexport const PUBLIC_PATHS: { [key: string]: boolean } = {\r\n [PageLink.AUTH_LOGIN]: true,\r\n [PageLink.AUTH_FORGOT_PASSWORD]: true,\r\n [PageLink.AUTH_FORGOT_PASSWORD_RECOVER]: true\r\n}\r\nexport enum QUESTION_TYPES {\r\n TRUE_FALSE = 'TRUE_FALSE',\r\n ONE_CHOICE = 'ONE_CHOICE',\r\n MULTIPLE_CHOICE = 'MULTIPLE_CHOICE',\r\n MATCHING = 'MATCHING',\r\n SELECT_WORD = 'SELECT_WORD',\r\n FILL_WORD = 'FILL_WORD',\r\n DRAG_DROP = 'DRAG_DROP',\r\n ESSAY = 'ESSAY'\r\n}\r\nexport enum DISPLAY_TYPE {\r\n VERTICAL = 'VERTICAL',\r\n HORIZONTAL = 'HORIZONTAL'\r\n}\r\nexport enum RESPONSE_OPTION {\r\n WORD = 'WORD',\r\n SHEET = 'SHEET'\r\n}\r\nexport const MAX_UPLOAD_SIZE = 20 * 1024 * 1024\r\nexport const MAX_UPLOAD_VIDEO_SIZE = 20 * 1024 * 1024 * 1024\r\nexport const VALID_UPLOAD_EDITOR = [\r\n { type: 'image/*', size: MAX_UPLOAD_SIZE },\r\n { type: 'video/*', size: MAX_UPLOAD_VIDEO_SIZE }\r\n]\r\n\r\nexport const UserGuide = {\r\n TITLE_WELCOME: 'Welcome to SAPP LMS',\r\n CONTENT_WELCOME: 'Let’s start with a quick product tour!',\r\n CONTENT_BUTTON: 'Start Tour',\r\n CONTENT_STEP_1:\r\n 'The search box is located in the upper corner of the website. Simply enter the course name and press Enter to search.',\r\n CONTENT_STEP_2:\r\n 'The left menu bar is divided into two sections. The upper section consists of the SAPP logo, dashboard, your enrolled courses, and the entrance test you have registered for.',\r\n CONTENT_STEP_3:\r\n 'The lower section of the menu consists of notifications and your profile, which includes personal information, certificates, settings, and the option to log out.',\r\n CONTENT_STEP_4:\r\n 'This is the welcome section! You will find information about your location here, and take a moment to familiarize yourself with the features and possibilities that await you on this page.',\r\n CONTENT_STEP_5:\r\n 'This is a course you have enrolled in. It provides details about the class it belongs to, the remaining study days, a brief course description, as well as the status and progress you have made so far.',\r\n CONTENT_STEP_6:\r\n 'The filter section allows you to filter courses by curriculum and course status.'\r\n}\r\n\r\nexport enum EXHIBIT_TEXT_REPLACE {\r\n EXHIBIT = 'Exhibit',\r\n EXHIBIT_REPLACE = 'Time Value Table'\r\n}\r\n\r\nexport enum PROGRAM {\r\n ACCA = 'ACCA',\r\n CFA = 'CFA',\r\n CMA = 'CMA'\r\n}\r\n\r\nexport const defaultStatusDetail = [\r\n {\r\n label: 'All',\r\n value: ''\r\n },\r\n {\r\n label: 'In Progress',\r\n value: 'IN_PROGRESS'\r\n },\r\n {\r\n label: 'READY_TO_LEARN',\r\n value: 'READY_TO_LEARN'\r\n },\r\n {\r\n label: 'COMPLETED',\r\n value: 'COMPLETED'\r\n },\r\n {\r\n label: 'CANCELED',\r\n value: 'CANCELED'\r\n }\r\n]\r\n\r\nexport type IButtonColors =\r\n | 'primary'\r\n | 'info'\r\n | 'success'\r\n | 'secondary'\r\n | 'danger'\r\n | 'warning'\r\n | 'light'\r\n | 'dark'\r\n | 'white'\r\n | 'outline'\r\n | 'text'\r\n | 'quizActivity'\r\nexport interface IButtonProps {\r\n title: string\r\n onClick?: (e: any) => void\r\n className?: string\r\n link?: string\r\n disabled?: boolean\r\n loading?: boolean\r\n size?: 'small' | 'medium' | 'lager' | 'extra'\r\n full?: boolean\r\n name?: string\r\n type?: 'button' | 'reset' | 'submit'\r\n isPadding?: boolean\r\n isPaddingHorizontal?: boolean\r\n color?: IButtonColors\r\n isUnderLine?: boolean\r\n childClass?: string\r\n}\r\n\r\nexport interface ITabs {\r\n link: string\r\n title: string\r\n}\r\n\r\nexport type IButtonCancelSubmitProps = {\r\n submit: IButtonProps\r\n cancel: IButtonProps\r\n className?: string\r\n color?: IButtonColors\r\n colorCancel?: IButtonColors\r\n showOkButton?: boolean\r\n showCancelButton?: boolean\r\n size?: 'small' | 'medium' | 'lager' | 'extra'\r\n revertFunction?: boolean\r\n}\r\ndeclare global {\r\n interface Window {\r\n luckysheet: any\r\n }\r\n}\r\n\r\nexport interface GradingDetail {\r\n begin?: number | null | undefined\r\n end?: number | null | undefined\r\n comment?: string\r\n grade?: number | null | undefined\r\n validate?: string\r\n grading_file?: {\r\n file_key?: string\r\n file_name?: string\r\n name?: string\r\n }\r\n}\r\n\r\nexport interface IAiContextResource {\r\n id?: string\r\n name?: string\r\n file_key?: string\r\n resource_type?: string\r\n suffix_type?: string\r\n size?: number\r\n cloudflare_video_token?: string | null\r\n url_expired_in?: string | null\r\n url?: string\r\n sub_url?: string | null\r\n}\r\n\r\nexport interface IAiContextBase {\r\n id?: string\r\n name?: string\r\n description?: string\r\n category?: string\r\n target_id?: string\r\n show_to_student?: boolean\r\n}\r\n\r\nexport interface IAiContextText extends IAiContextBase {\r\n type?: string\r\n text?: string\r\n}\r\n\r\nexport interface IAiContextFile extends IAiContextBase {\r\n type?: string\r\n resource_id?: string\r\n resource?: IAiContextResource\r\n}\r\n\r\nexport type IAiContext = IAiContextText | IAiContextFile\r\n\r\nexport interface IRequirement {\r\n id?: string\r\n description?: string\r\n index?: number\r\n name?: string\r\n files?: any\r\n explanation?: string\r\n answer_file?: IFileAnswer\r\n short_answer?: string\r\n active?: string\r\n answer_template_files?: string[]\r\n ai_contexts?: IAiContext[]\r\n}\r\n\r\nexport interface IRequirementAnswer {\r\n short_answer: string\r\n requirement_id: string\r\n active?: string\r\n}\r\n\r\nexport interface IFileAnswer {\r\n file_key: string\r\n file_name: string\r\n url?: string\r\n file_url?: string\r\n}\r\n\r\nexport interface ICommment {\r\n ai_grade?: number\r\n answer_grade: number\r\n details?: GradingDetail[]\r\n file_grade: number\r\n grading_file?: IFileAnswer\r\n id: string\r\n requirement_id: string\r\n comment?: string\r\n}\r\n\r\nexport interface IShowExhibit {\r\n id?: string\r\n index?: number\r\n name?: string\r\n setShowExhibit?: any\r\n description?: string\r\n left?: string\r\n top?: string\r\n files?: IFile[]\r\n}\r\n","import { useEffect, useState } from 'react'\r\n\r\nconst useMousePosition = () => {\r\n const [mousePosition, setMousePosition] = useState({ x: null, y: null })\r\n\r\n useEffect(() => {\r\n const updateMousePosition = (ev: any) => {\r\n setMousePosition({ x: ev.clientX, y: ev.clientY })\r\n }\r\n\r\n window.addEventListener('mousemove', updateMousePosition)\r\n\r\n return () => {\r\n window.removeEventListener('mousemove', updateMousePosition)\r\n }\r\n }, [])\r\n\r\n return mousePosition\r\n}\r\nexport default useMousePosition\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import {\r\n deserializeHighlights,\r\n doHighlight,\r\n // eslint-disable-next-line no-unused-vars\r\n optionsImpl,\r\n removeHighlights,\r\n serializeHighlights\r\n} from '@funktechno/texthighlighter/lib/index'\r\n\r\nexport function truncateString(str: string, maxLength: number) {\r\n if (str.length <= maxLength) {\r\n return str\r\n } else {\r\n return str.slice(0, maxLength) + ' ...' // Add ellipsis to indicate truncation\r\n }\r\n}\r\n\r\nexport function runHighlight(\r\n handleSaveHighLight: any,\r\n allowHighLight: boolean,\r\n elementID = 'hightlight_area',\r\n options?: optionsImpl\r\n) {\r\n // run mobile a bit\r\n const domEle = document.getElementById(elementID)\r\n\r\n if (domEle && allowHighLight) {\r\n doHighlight(domEle, false, options)\r\n handleSaveHighLight(serializeHighlights(domEle))\r\n }\r\n}\r\n\r\nexport function DeserializeHighlight(\r\n highlighted: any,\r\n elementID = 'hightlight_area'\r\n) {\r\n const domEle = document.getElementById(elementID)\r\n removeHighlights(domEle as any)\r\n deserializeHighlights(domEle as any, highlighted)\r\n}\r\n\r\n// Hàm thay thế style text-align: center thành style text-align: -webkit-center trong chuỗi HTML\r\nexport const replaceTextAlignCenterToWebKitCenter = (htmlString: string) => {\r\n // Sử dụng biểu thức chính quy để thay thế\r\n return htmlString.replace(\r\n /text-align:\\s*center/g,\r\n 'text-align: -webkit-center'\r\n )\r\n}\r\n\r\nexport const formatTimeToHourMinuteSecond = (timeInSeconds: number) => {\r\n const hours = Math.floor(timeInSeconds / 3600)\r\n const minutes = Math.floor((timeInSeconds % 3600) / 60)\r\n const seconds = Math.floor(timeInSeconds % 60)\r\n\r\n const formattedHours = String(hours).padStart(2, '0')\r\n const formattedMinutes = String(minutes).padStart(2, '0')\r\n const formattedSeconds = String(seconds).padStart(2, '0')\r\n\r\n return {\r\n hours: formattedHours,\r\n minutes: formattedMinutes,\r\n seconds: formattedSeconds\r\n }\r\n}\r\n\r\nexport const getResolution = (bitrate: number) => {\r\n switch (true) {\r\n case bitrate <= 135440:\r\n return '144p'\r\n case bitrate <= 200792:\r\n return '240p'\r\n case bitrate <= 282126:\r\n return '360p'\r\n case bitrate <= 400000:\r\n return '480p'\r\n case bitrate <= 700000:\r\n return '720p'\r\n case bitrate <= 1000000:\r\n return '900p'\r\n case bitrate <= 1500000:\r\n return '1080p'\r\n case bitrate <= 2000000:\r\n return '1440p'\r\n case bitrate <= 3000000:\r\n return '2k'\r\n case bitrate <= 4000000:\r\n return '2k+'\r\n case bitrate <= 6000000:\r\n return '4k'\r\n default:\r\n return '4k+'\r\n }\r\n}\r\n\r\nexport const getUppercaseByNumber = (num: number): string => {\r\n let result = ''\r\n while (num > 0) {\r\n let remainder = num % 26\r\n if (remainder === 0) {\r\n remainder = 26\r\n num--\r\n }\r\n result = String.fromCharCode(remainder + 64) + result\r\n num = Math.floor(num / 26)\r\n }\r\n return result\r\n}\r\n\r\nexport const convertMathToImage = async (element: any) => {\r\n if (typeof com === 'undefined') return\r\n const viewer = com?.wiris?.js?.JsPluginViewer\r\n if (element && viewer) {\r\n try {\r\n await viewer.parseElement(element, true, function () {})\r\n } catch (error) {}\r\n }\r\n}\r\n\r\nexport const replaceWhiteSpacePreWrapToNormal = (htmlString: string) => {\r\n return htmlString.replace(/white-space:\\s*pre-wrap/g, 'white-space: normal')\r\n}\r\n/**\r\n * Parse tab-separated user input (TSV) thành mảng 2D an toàn.\r\n * - Tự động escape ký tự đặc biệt\r\n * - Bỏ dòng trống\r\n * - Trim khoảng trắng dư thừa\r\n */\r\nexport function parseUserInputTSV(input: string): string[][] {\r\n if (!input) return []\r\n\r\n return input\r\n .split(/\\r?\\n/) // tách theo dòng\r\n .filter((line) => line.trim() !== '') // bỏ dòng trống\r\n ?.map((line) =>\r\n line.split('\\t').map((cell) => {\r\n // Clean cell value\r\n let value = cell?.trim()\r\n\r\n // Escape ký tự đặc biệt để không làm JSON.parse bị crash\r\n // Thay \" bằng \\\", nhưng giữ nội dung hiển thị đúng\r\n value = value?.replace(/\"/g, '\"')\r\n\r\n // Tránh null/undefined\r\n return value ?? ''\r\n })\r\n )\r\n}\r\n// Generate unique ID for sheets\r\nexport const generateSheetId = (): string => {\r\n return `sheet_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\r\n}\r\n// Hàm clone an toàn\r\nexport const deepCloneForWorkbook = <T>(obj: T): T => {\r\n return JSON.parse(JSON.stringify(obj))\r\n}\r\nexport const isMobileOrTablet = () => {\r\n return /Mobi|Tablet|iPad|iPhone/.test(navigator.userAgent)\r\n}\r\n","import { isNull } from 'lodash'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { RefObject } from 'react'\r\n\r\n// Constants\r\nexport const PREFIX = 'h_'\r\n\r\n/**\r\n * Retrieves the selected nodes within a given range and calculates the `begin` and `end` indices based on span element IDs.\r\n * This function is specifically designed to work with spans that have IDs prefixed with a provided string.\r\n *\r\n * @param {string} prefix - The prefix used to identify the span elements (e.g., \"h_\" for span IDs like \"h_0\", \"h_1\").\r\n *\r\n * @returns {object | null} - Returns an object containing the selected nodes, the start (`begin`) and end (`end`) indices,\r\n * or `null` if no valid selection is made. The `begin` and `end` indices represent the range of the selection:\r\n * - `selectedNodes`: Array of elements within the selection range.\r\n * - `begin`: The start index (inclusive) based on the span ID.\r\n * - `end`: The end index (exclusive) based on the span ID.\r\n */\r\nfunction getSelectedNodesAndRange(prefix: string) {\r\n const selection = window.getSelection()\r\n\r\n // Exit if there is no valid text selection\r\n if (!selection || selection.rangeCount === 0 || selection.type !== 'Range')\r\n return null\r\n\r\n const range = selection.getRangeAt(0)\r\n const selectedNodes: HTMLElement[] = []\r\n\r\n const walker = document.createTreeWalker(\r\n range.commonAncestorContainer,\r\n NodeFilter.SHOW_ELEMENT,\r\n {\r\n acceptNode(_node) {\r\n return NodeFilter.FILTER_ACCEPT\r\n }\r\n }\r\n )\r\n\r\n while (walker.nextNode()) {\r\n const node = walker.currentNode as HTMLElement\r\n if (range.intersectsNode(node)) {\r\n selectedNodes.push(node)\r\n }\r\n }\r\n\r\n // Exit if no nodes are found\r\n if (selectedNodes.length === 0) return null\r\n\r\n const validSpans = selectedNodes.filter((node) => node.tagName === 'SPAN')\r\n\r\n if (validSpans.length === 0) return null\r\n\r\n const begin = parseInt(validSpans[0].id.replace(prefix, ''), 10)\r\n const end =\r\n parseInt(validSpans[validSpans.length - 1].id.replace(prefix, ''), 10) + 1\r\n\r\n if (isNaN(begin) || isNaN(end)) {\r\n return null\r\n }\r\n\r\n return { selectedNodes: validSpans, begin, end }\r\n}\r\n\r\n/**\r\n * Function to wrap each character in a span element and assign an ID to each span.\r\n *\r\n * @param {string} contentSelector - The CSS selector for the content area that contains the text to index.\r\n */\r\nexport function indexCharacters(editorArea: any) {\r\n let index = 0\r\n\r\n /**\r\n * Recursive function to walk through each node and wrap text nodes in a span element.\r\n *\r\n * @param {Node} node - The current node to be processed.\r\n */\r\n function walk(node: Node) {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n const characters = node.nodeValue ? node.nodeValue.split('') : []\r\n const fragment = document.createDocumentFragment()\r\n\r\n characters.forEach((char: string) => {\r\n const span = document.createElement('span')\r\n span.textContent = char\r\n span.setAttribute('id', `${PREFIX}${index++}`)\r\n fragment.appendChild(span)\r\n })\r\n\r\n return node.parentNode?.replaceChild(fragment, node)\r\n }\r\n\r\n for (const child of Array.from(node.childNodes)) {\r\n if (!(child as HTMLElement).id?.startsWith(PREFIX)) {\r\n walk(child)\r\n }\r\n }\r\n }\r\n\r\n const content = editorArea\r\n if (content) walk(content)\r\n}\r\n\r\n/**\r\n * Function to add a highlight to selected nodes.\r\n * It wraps selected text in a span element and applies a class for highlighting.\r\n *\r\n * @param {string} className - The class to be applied to the highlighted elements.\r\n * @returns {object | null} - Returns the begin and end range of the selected text, or null if no valid selection is made.\r\n */\r\nexport function highlightSelection(className: string) {\r\n const result = getSelectedNodesAndRange(PREFIX)\r\n if (!result) return null\r\n\r\n const { selectedNodes, begin, end } = result\r\n\r\n selectedNodes.forEach((node) => {\r\n if (\r\n node.nodeType === Node.TEXT_NODE &&\r\n node.textContent &&\r\n node.textContent.trim() !== ''\r\n ) {\r\n const span = document.createElement('span')\r\n span.textContent = node.textContent\r\n // eslint-disable-next-line no-unused-expressions\r\n node.parentNode?.replaceChild(span, node)\r\n }\r\n node.classList.add(className)\r\n })\r\n\r\n return { begin, end }\r\n}\r\n\r\n/**\r\n * Restores highlights on the elements based on a list of grading information.\r\n *\r\n * @param {Array} listGrades - The list of grading objects containing information about highlights.\r\n * @param {string} index - The index for identifying the parent element.\r\n */\r\nexport const restoreHighlights = (listGrades: any[], editorArea?: any) => {\r\n const parentElement = editorArea\r\n if (!listGrades.length)\r\n return // Loop through each grade and apply the necessary highlights\r\n ;(listGrades || []).forEach((item) => {\r\n if (item?.begin === undefined || item?.end === undefined) return\r\n\r\n const { begin, end, grade, comment } = item\r\n let className = ''\r\n\r\n // Determine which class to apply based on the item properties\r\n if (grade >= 0 && !isNull(grade) && comment) {\r\n className = 'sapp-comment-highlight sapp-grading-highlight'\r\n } else if (comment && isNull(grade)) {\r\n className = 'sapp-comment-highlight'\r\n } else {\r\n className = 'sapp-grading-highlight'\r\n }\r\n\r\n // let lastSpan: HTMLElement | null = null\r\n\r\n // Loop through the selected range and apply the class\r\n for (let i = begin; i < end; i++) {\r\n const span = parentElement.querySelector(`#${PREFIX}${i}`)\r\n\r\n if (span) {\r\n span.classList.remove(\r\n 'sapp-comment-highlight',\r\n 'sapp-grading-highlight'\r\n )\r\n\r\n className.split(' ').forEach((cls) => {\r\n if (!span.classList.contains(cls)) {\r\n span.classList.add(cls)\r\n }\r\n })\r\n // lastSpan = span as HTMLElement\r\n }\r\n }\r\n\r\n // if (lastSpan) {\r\n // const existingTooltip = lastSpan.querySelector('.sapp-grade-tooltip')\r\n\r\n // if (!isNull(grade)) {\r\n // // If grade is not null, update or add the tooltip\r\n // if (existingTooltip) {\r\n // if (existingTooltip.textContent !== `${formatGrade(grade)}`) {\r\n // existingTooltip.textContent = `${formatGrade(grade)}`\r\n // }\r\n // } else {\r\n // const tooltip = document.createElement('span')\r\n // tooltip.className = 'sapp-grade-tooltip'\r\n // tooltip.textContent = `${formatGrade(grade)}`\r\n // lastSpan.appendChild(tooltip)\r\n // }\r\n // } else {\r\n // // If grade is null, remove the tooltip\r\n // if (existingTooltip) {\r\n // existingTooltip.remove()\r\n // }\r\n // }\r\n // }\r\n })\r\n}\r\n/**\r\n * Restores highlights on the elements based on a list of grading information.\r\n *\r\n * @param {Array} listGrades - The list of grading objects containing information about highlights.\r\n * @param {string} index - The index for identifying the parent element.\r\n */\r\nexport const restoreHighlightsV2 = (listGrades: any[], editorArea?: any) => {\r\n const parentElement = editorArea\r\n if (!listGrades.length)\r\n return // Loop through each grade and apply the necessary highlights\r\n ;(listGrades || []).forEach((item, idx) => {\r\n if (item?.begin === undefined || item?.end === undefined) return\r\n\r\n const { begin, end, grade, comment } = item\r\n let className = ''\r\n\r\n // Determine which class to apply based on the item properties\r\n if (grade >= 0 && !isNull(grade) && comment) {\r\n className = 'sapp-comment-highlight-grading sapp-grading-highlight-v2'\r\n } else if (comment && isNull(grade)) {\r\n className = 'sapp-comment-highlight'\r\n } else {\r\n className = 'sapp-grading-highlight-v2'\r\n }\r\n\r\n let lastSpan: HTMLElement | null = null\r\n\r\n // Loop through the selected range and apply the class\r\n for (let i = begin; i < end; i++) {\r\n const span = parentElement.querySelector(`#${PREFIX}${i}`)\r\n if (span) {\r\n span.classList.remove(\r\n 'sapp-comment-highlight',\r\n 'sapp-grading-highlight-v2'\r\n )\r\n\r\n className.split(' ').forEach((cls) => {\r\n if (!span.classList.contains(cls)) {\r\n span.classList.add(cls)\r\n }\r\n })\r\n lastSpan = span as HTMLElement\r\n }\r\n }\r\n\r\n // // ✅ Chèn điểm vào cuối vùng (nếu có điểm)\r\n // if (status === 'GRADING' && grade > 0) {\r\n // const lastSpan = editorArea.querySelector(`#${PREFIX}${end - 1}`)\r\n // if (\r\n // lastSpan &&\r\n // !lastSpan.querySelector(`.grade-badge[data-grade-idx=\"${idx}\"]`)\r\n // ) {\r\n // const badge = document.createElement('span')\r\n // badge.className = 'sapp-grade-tooltip'\r\n // badge.dataset.gradeIdx = String(idx)\r\n // badge.textContent = grade.toString()\r\n // lastSpan.appendChild(badge)\r\n // }\r\n // }\r\n if (lastSpan) {\r\n const existingTooltip = lastSpan.querySelector('.sapp-grade-tooltip-v2')\r\n\r\n if (!isNull(grade)) {\r\n // If grade is not null, update or add the tooltip\r\n if (existingTooltip) {\r\n if (existingTooltip.textContent !== `${formatGrade(grade)}`) {\r\n existingTooltip.textContent = `${formatGrade(grade)}`\r\n }\r\n } else {\r\n const tooltip = document.createElement('span')\r\n tooltip.className = 'sapp-grade-tooltip-v2'\r\n tooltip.textContent = `${formatGrade(grade)}`\r\n lastSpan.appendChild(tooltip)\r\n }\r\n } else {\r\n // If grade is null, remove the tooltip\r\n if (existingTooltip) {\r\n existingTooltip.remove()\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Retrieves the begin and end range from the current selection.\r\n *\r\n * @param {string} PREFIX - The prefix for identifying elements.\r\n * @returns {object | null} - Returns an object with `begin` and `end` or null if no valid selection is made.\r\n */\r\nexport function getSelectionRange(PREFIX: string) {\r\n const result = getSelectedNodesAndRange(PREFIX)\r\n if (!result) return null\r\n const { begin, end } = result\r\n return { begin, end }\r\n}\r\n\r\n// Hàm thay thế style text-align: center thành style text-align: -webkit-center trong chuỗi HTML\r\nexport const replaceTextAlignCenterToWebKitCenter = (\r\n htmlString: string | undefined\r\n) => {\r\n if (!htmlString) return ''\r\n // Sử dụng biểu thức chính quy để thay thế tất cả các trường hợp text-align: center\r\n return htmlString.replace(\r\n /text-align:\\s*center/g,\r\n 'text-align: -webkit-center'\r\n )\r\n}\r\n\r\nexport const formatGrade = (\r\n grade: number | undefined | null\r\n): number | string => {\r\n if (grade === undefined || grade === null) {\r\n return 0\r\n }\r\n\r\n if (Number.isInteger(grade)) {\r\n return grade\r\n }\r\n\r\n const gradeStr = grade.toString()\r\n const decimalIndex = gradeStr.indexOf('.')\r\n\r\n if (decimalIndex === -1) {\r\n return grade\r\n }\r\n\r\n return gradeStr.substring(0, decimalIndex + 3)\r\n}\r\n\r\nexport function convertFractionalScore(score: number): number {\r\n // Lấy phần thập phân của số\r\n const decimal = score % 1\r\n\r\n // Lấy phần nguyên của số\r\n const integer = Math.floor(score)\r\n\r\n // Nếu phần thập phân nhỏ hơn 0.25\r\n if (decimal < 0.25) {\r\n return integer\r\n }\r\n // Nếu phần thập phân lớn hơn hoặc bằng 0.25 và nhỏ hơn 0.5\r\n else if (decimal >= 0.25 && decimal < 0.5) {\r\n return integer + 0.25\r\n }\r\n // Nếu phần thập phân lớn hơn hoặc bằng 0.5 và nhỏ hơn 0.75\r\n else if (decimal >= 0.5 && decimal < 0.75) {\r\n return integer + 0.5\r\n }\r\n // Nếu phần thập phân lớn hơn hoặc bằng 0.75\r\n else {\r\n return integer + 0.75\r\n }\r\n}\r\n\r\nexport const clearMarker = (ref?: RefObject<HTMLElement>) => {\r\n if (ref?.current) {\r\n const clearElement = ref.current.getElementsByTagName('span')\r\n Array.from(clearElement).forEach((item) => {\r\n const element = item as HTMLElement\r\n element.classList.remove('highlight-marker')\r\n })\r\n }\r\n}\r\n\r\nexport const markColor = (\r\n begin?: number | null,\r\n end?: number | null,\r\n ref?: RefObject<HTMLElement>\r\n) => {\r\n if (ref?.current) {\r\n const foundElement = ref.current.getElementsByTagName('span')\r\n for (const element of foundElement) {\r\n if (!element?.id?.includes('h_')) {\r\n continue\r\n }\r\n const elementId = element.id.replace('h_', '')\r\n if (\r\n end !== null &&\r\n end !== undefined &&\r\n begin !== null &&\r\n begin !== undefined &&\r\n Number(elementId) < end &&\r\n Number(elementId) >= begin\r\n ) {\r\n element.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center'\r\n })\r\n element.classList.add('highlight-marker')\r\n }\r\n }\r\n }\r\n}\r\n","import React from 'react'\r\n\r\nexport const CloseIcon = ({\r\n className = 'stroke-bw-1 ',\r\n size = 20\r\n}: {\r\n className?: string\r\n size?: number\r\n}) => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={size}\r\n height={size}\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n className='group select-none'\r\n >\r\n <path\r\n d='M15 5L5 15'\r\n className={className}\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n <path\r\n d='M5 5L15 15'\r\n className={className}\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n )\r\n}\r\n","// eslint-disable-next-line no-unused-vars\r\nimport { IButtonProps } from 'constant'\r\nimport React from 'react'\r\n\r\nconst SIZES = {\r\n small: 'text-[0.875rem] leading-4',\r\n medium: 'text-[1rem] leading-6',\r\n lager: 'text-lg leading-6.5',\r\n extra: 'text-lg leading-6.5'\r\n}\r\n\r\nconst COLORS = {\r\n primary: 'bg-primary hover:bg-primary-2 disabled:bg-primary-2 text-white',\r\n info: 'bg-info hover:bg-info-2 disabled:bg-info-2 text-white',\r\n success: 'bg-success hover:bg-success-2 disabled:bg-success-2 text-white',\r\n secondary: 'bg-gray-3 hover:bg-secondary-4 disabled:bg-secondary-4 text-bw-1',\r\n danger: 'bg-danger hover:bg-danger-2 disabled:bg-danger-2 text-white',\r\n warning: 'bg-warning hover:bg-warning-2 disabled:bg-warning-2 text-white',\r\n light: 'bg-light hover:bg-light-2 disabled:bg-light-2 text-white',\r\n dark: 'bg-dark hover:bg-dark-2 disabled:bg-dark-2 text-white',\r\n white:\r\n 'bg-white hover:bg-primary-2 disabled:bg-white text-gray-1 hover:text-white',\r\n outline:\r\n 'bg-white border-bw-1 hover:border-gray-1 hover:text-gray-1 text-bw-1',\r\n text: 'bg-none text-bw-1 hover:text-gray-1 disabled:text-gray-2 underline-offset-2', // Add a new color for ButtonText\r\n\r\n quizActivity: 'bg-gray-1 hover:bg-gray-2 disabled:bg-gray-2 text-white'\r\n}\r\n\r\nconst PADDINGS = {\r\n small: 'px-7 py-2',\r\n medium: 'px-8 py-2',\r\n lager: 'px-9 py-2.8',\r\n extra: 'px-17.5 py-2.8',\r\n none: ''\r\n}\r\n\r\nconst COLOR_LOADING = {\r\n primary: 'bg-white',\r\n info: 'bg-white',\r\n success: 'bg-white',\r\n secondary: 'bg-bw-1',\r\n danger: 'bg-white',\r\n warning: 'bg-white',\r\n light: 'bg-white',\r\n dark: 'bg-white',\r\n white: 'bg-gray-1',\r\n outline: 'bg-gray-1',\r\n text: 'bg-none',\r\n quizActivity: 'bg-white'\r\n}\r\n\r\nconst SappButton = ({\r\n title,\r\n onClick,\r\n className = '',\r\n link,\r\n size = 'small',\r\n full = false,\r\n disabled = false,\r\n loading = false,\r\n type,\r\n color = 'primary',\r\n isUnderLine,\r\n isPadding = true,\r\n childClass = ''\r\n}: IButtonProps) => {\r\n const fullWidthClass = full ? 'block w-full' : 'inline-block w-fit'\r\n const paddingClass = isPadding ? PADDINGS[size] : PADDINGS.none\r\n let componentClass = `${className} cursor-pointer relative text-center cursor-pointer disabled:opacity-60 disabled:cursor-not-allowed font-medium ${SIZES[size]} ${COLORS[color]} ${fullWidthClass} ${paddingClass}`\r\n\r\n isUnderLine = isUnderLine || color === 'text'\r\n componentClass += ` ${isUnderLine ? 'hover:underline' : ''}`\r\n\r\n if (link)\r\n return <a href={link} className={componentClass} aria-disabled={disabled} />\r\n return (\r\n <button\r\n className={componentClass}\r\n type={type || 'button'}\r\n onClick={onClick}\r\n disabled={disabled || loading}\r\n >\r\n <span className={`${loading ? 'invisible' : ''} ${childClass}`}>\r\n {' '}\r\n {title}\r\n </span>\r\n {loading && (\r\n <div className='absolute w-100 h-100 top-0 left-0 right-0 bottom-0 flex space-x-2 justify-center items-center bg-none dark:invert'>\r\n <span className='sr-only'>Loading...</span>\r\n <div\r\n className={`h-2 w-2 rounded-full animate-bounce [animation-delay:-0.3s] ${COLOR_LOADING[color]}`}\r\n />\r\n <div\r\n className={`h-2 w-2 rounded-full animate-bounce [animation-delay:-0.15s] ${COLOR_LOADING[color]}`}\r\n />\r\n <div\r\n className={`h-2 w-2 rounded-full animate-bounce ${COLOR_LOADING[color]}`}\r\n />\r\n </div>\r\n )}\r\n </button>\r\n )\r\n}\r\n\r\nexport default SappButton\r\n","import React from 'react'\r\nimport SappButton from './SappButton'\r\n\r\nconst ButtonCancelSubmit = ({\r\n submit,\r\n cancel,\r\n className = 'flex align-middle justify-between',\r\n color = 'primary',\r\n colorCancel = 'text',\r\n showOkButton = true,\r\n showCancelButton = true,\r\n revertFunction = false\r\n}: any) => {\r\n return (\r\n <div className={className}>\r\n {showCancelButton && (\r\n <SappButton\r\n color={colorCancel}\r\n {...(!revertFunction ? { ...cancel } : { ...submit })}\r\n isPadding={false}\r\n />\r\n )}\r\n {showOkButton && (\r\n <SappButton\r\n color={color}\r\n {...(!revertFunction ? { ...submit } : { ...cancel })}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ButtonCancelSubmit\r\n","/* eslint-disable no-unused-vars */\r\nimport { isUndefined } from 'lodash'\r\nimport React, {\r\n Dispatch,\r\n ReactNode,\r\n SetStateAction,\r\n useEffect,\r\n useRef,\r\n useState\r\n} from 'react'\r\nimport { CloseIcon } from '../../icons/CloseIcon'\r\nimport ButtonCancelSubmit from '../button/ButtonCancelSubmit'\r\n\r\ninterface IProps {\r\n open?: boolean\r\n setOpen?: Dispatch<SetStateAction<boolean>>\r\n children: ReactNode\r\n\r\n cancelButtonCaption?: string\r\n okButtonCaption?: string\r\n okButtonClass?: string | undefined\r\n cancelButtonClass?: string | undefined\r\n buttonSize?: 'small' | 'medium' | 'lager' | 'extra'\r\n\r\n handleCancel?: () => Promise<void> | void\r\n handleSubmit?: () => Promise<void> | void\r\n\r\n disabled?: boolean\r\n\r\n title?: string\r\n customTitle?: ReactNode\r\n showHeader?: boolean\r\n customHeader?: ReactNode\r\n\r\n showFooter?: boolean\r\n customFooter?: ReactNode\r\n\r\n confirmOnclose?: boolean | string[]\r\n size?: string\r\n modelClassname?: string\r\n refClass?: string\r\n childClass?: string\r\n parentChildClass?: string\r\n footerButtonClassName?: string\r\n overlayClass?: string\r\n color?: any\r\n colorCancel?: any\r\n position?: 'center' | 'start' | 'end'\r\n fullWidthBtn?: boolean\r\n\r\n isFullScreen?: boolean\r\n isContentFull?: boolean\r\n isInner?: boolean\r\n isBordered?: boolean\r\n closeAfterSubmit?: boolean\r\n showOkButton?: boolean\r\n showCancelButton?: boolean\r\n zIndex?: string\r\n scrollbale?: boolean\r\n footerClassName?: string\r\n externalLoading?: boolean\r\n\r\n revertFunction?: boolean\r\n}\r\n/**\r\n * Hàm này tạo một modal component bằng React\r\n * @param open: boolean - biến xác định modal có được mở hay không\r\n * @param setOpen: function - hàm xác định modal có được mở hay không\r\n * @param children: ReactNode - biến chứa các phần tử con của modal\r\n * @param cancelButtonCaption: string - biến xác định nội dung của nút hủy\r\n * @param okButtonCaption: string - biến xác định nội dung của nút xác nhận\r\n * @param handleCancel: function - hàm xử lý khi người dùng nhấn nút hủy\r\n * @param handleSubmit: function - hàm xử lý khi người dùng nhấn nút xác nhận\r\n * @param disabled: boolean - biến xác định modal có bị vô hiệu hóa hay không\r\n * @param title: string - biến xác định tiêu đề của modal\r\n * @param showTitle: boolean - biến xác định modal có hiển thị tiêu đề hay không\r\n * @param customTitle: ReactNode - biến chứa phần tử tùy chỉnh cho tiêu đề\r\n * @param showFooter: boolean - biến xác định modal có hiển thị footer hay không\r\n * @param customFooter: ReactNode - biến chứa phần tử tùy chỉnh cho footer\r\n * @param confirmOnclose: boolean - biến xác định modal có yêu cầu xác nhận khi đóng hay không\r\n * @param width: number - biến xác định modal width\r\n */\r\nconst SappModal: React.FC<IProps> = ({\r\n open,\r\n children,\r\n cancelButtonCaption = 'Cancel',\r\n okButtonCaption = 'Submit',\r\n okButtonClass,\r\n cancelButtonClass,\r\n buttonSize = 'medium',\r\n\r\n handleCancel,\r\n handleSubmit,\r\n\r\n disabled,\r\n\r\n title,\r\n customTitle,\r\n showHeader = true,\r\n customHeader,\r\n\r\n showFooter = true,\r\n customFooter,\r\n\r\n confirmOnclose,\r\n size = 'max-w-lg',\r\n modelClassname = '',\r\n refClass = 'md:px-6 px-5 py-5 flex flex-col animate-jump-in relative transform overflow-hidden bg-white text-left shadow-xl transition-all',\r\n childClass = '',\r\n parentChildClass = '',\r\n footerButtonClassName = 'justify-center sm:justify-end flex gap-3',\r\n overlayClass = '',\r\n color,\r\n colorCancel = 'text',\r\n position = 'start',\r\n fullWidthBtn = false,\r\n\r\n isFullScreen = false,\r\n isContentFull = true,\r\n isInner = false,\r\n isBordered = false,\r\n closeAfterSubmit = true,\r\n showOkButton = true,\r\n showCancelButton = true,\r\n zIndex = '1500',\r\n scrollbale = true,\r\n footerClassName,\r\n externalLoading,\r\n revertFunction = false\r\n}) => {\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const confirmDialogRef = useRef<HTMLDivElement>(null)\r\n const confirmDialogOverLayRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (!isInner) {\r\n if (open) {\r\n const scrollBarWidth = window.innerWidth - document.body.clientWidth\r\n setTimeout(() => {\r\n document.body.style.paddingRight = scrollBarWidth + 'px'\r\n document.body.classList.add('overflow-hidden')\r\n })\r\n } else {\r\n const customModal = document.querySelectorAll(\r\n '.sapp-custom-modal:not(.sapp-custom-modal-inner)'\r\n )\r\n if (!customModal?.length) {\r\n document.body.style.removeProperty('padding-right')\r\n document.body.classList.remove('overflow-hidden')\r\n }\r\n }\r\n }\r\n }, [open])\r\n\r\n /**\r\n * Hàm này xử lý khi người dùng nhấn nút xác nhận\r\n * @return void\r\n */\r\n const onOk = async () => {\r\n // Nếu handleSubmit là một hàm bất đồng bộ, thì gọi hàm đó và đợi kết quả\r\n if (handleSubmit && handleSubmit.constructor.name === 'AsyncFunction') {\r\n setLoading(true)\r\n try {\r\n await handleSubmit()\r\n } catch (err) {\r\n } finally {\r\n setLoading(false)\r\n }\r\n if (closeAfterSubmit) {\r\n handleClose()\r\n }\r\n\r\n return\r\n }\r\n // Nếu handleSubmit là một hàm thường, thì gọi hàm đó\r\n else if (handleSubmit) {\r\n handleSubmit()\r\n }\r\n if (closeAfterSubmit) {\r\n handleClose()\r\n }\r\n }\r\n\r\n /**\r\n * Hàm này xử lý khi người dùng nhấn nút hủy\r\n * @return void\r\n */\r\n const onCancel = async () => {\r\n /**\r\n * Hàm này gọi hàm handleCancel theo loại hàm\r\n * @return void\r\n */\r\n const callHandleCancel = async () => {\r\n // Nếu handleCancel là một hàm bất đồng bộ, thì gọi hàm đó và đợi kết quả\r\n if (handleCancel && handleCancel.constructor.name === 'AsyncFunction') {\r\n setLoading(true)\r\n await handleCancel()\r\n setLoading(false)\r\n handleClose()\r\n }\r\n // Nếu handleCancel là một hàm thường, thì gọi hàm đó\r\n else if (handleCancel) {\r\n handleClose()\r\n }\r\n }\r\n // Nếu confirmOnclose là true, thì mở một hộp thoại xác nhận\r\n\r\n if (confirmOnclose) {\r\n } else {\r\n // Nếu confirmOnclose là false, thì không cần xác nhận\r\n // Gọi hàm callHandleCancel\r\n callHandleCancel()\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n if (confirmDialogRef.current) {\r\n confirmDialogRef.current.classList.add('animate-jump-out')\r\n confirmDialogRef.current.classList.add('pointer-events-none')\r\n }\r\n if (confirmDialogOverLayRef.current) {\r\n confirmDialogOverLayRef.current.classList.add('animate-fade-out-overlay')\r\n confirmDialogOverLayRef.current.classList.add('pointer-events-none')\r\n }\r\n setTimeout(() => {\r\n handleCancel && handleCancel()\r\n }, 50)\r\n }\r\n\r\n return (\r\n <div>\r\n <React.Fragment>\r\n {open && (\r\n // add an onClick handler to the outer div to close the popup when clicking outside\r\n <div\r\n className={`sapp-custom-modal h-full ${\r\n isInner ? 'absolute sapp-custom-modal-inner' : `fixed`\r\n } w-full flex justify-center inset-0 items-center ${zIndex} ${modelClassname}`}\r\n role='dialog'\r\n aria-modal='true'\r\n style={{ zIndex: zIndex }}\r\n >\r\n <div\r\n ref={confirmDialogOverLayRef}\r\n onClick={onCancel}\r\n className={`${\r\n isInner ? 'absolute' : 'fixed'\r\n } animate-fade-in-overlay inset-0 bg-black opacity-80 transition-opacity ${overlayClass}`}\r\n />\r\n <div\r\n className={`${\r\n isFullScreen || `${size} p-4 xl:py-8`\r\n } w-full text-center h-full flex justify-center inset-0 items-${position}`}\r\n >\r\n <div\r\n ref={confirmDialogRef}\r\n className={`h-fit\r\n ${isContentFull ? 'w-full' : 'w-fit'}\r\n ${refClass}`}\r\n >\r\n {showHeader &&\r\n (customHeader || (\r\n <div className='bg-white md:pb-5 pb-5 relative ant-modal-header'>\r\n <div className='flex'>\r\n {customTitle || (\r\n <div className='text-xl font-bold text-bw-1'>\r\n {title}\r\n </div>\r\n )}\r\n <div\r\n className='ml-auto cursor-pointer'\r\n onClick={onCancel}\r\n >\r\n <CloseIcon className='transition-all stroke-bw-1 ease-in-out duration-300 transform group-hover:stroke-primary' />\r\n </div>\r\n </div>\r\n {isBordered && (\r\n <div className='absolute inset-0 border-b border-gray-2 bottom-0 -mx-6 h-[1px] -z-10' />\r\n )}\r\n </div>\r\n ))}\r\n\r\n <div\r\n className={`${parentChildClass} ${\r\n scrollbale && 'snap-y flex-1 overflow-y-scroll bg-white'\r\n }`}\r\n >\r\n <div className={`${childClass}`}>{children}</div>\r\n </div>\r\n\r\n {showFooter && (\r\n <div className={`md:pt-5 pt-5 relative ${footerClassName}`}>\r\n {isBordered && (\r\n <div className='absolute left-0 right-0 border-b border-gray-2 top-0 -mx-6' />\r\n )}\r\n {customFooter || (\r\n <ButtonCancelSubmit\r\n revertFunction={revertFunction}\r\n className={footerButtonClassName}\r\n color={color}\r\n colorCancel={colorCancel}\r\n showOkButton={showOkButton}\r\n showCancelButton={showCancelButton}\r\n submit={{\r\n title: okButtonCaption,\r\n size: buttonSize,\r\n loading: !isUndefined(externalLoading)\r\n ? externalLoading\r\n : loading,\r\n disabled: disabled,\r\n onClick: onOk,\r\n full: fullWidthBtn,\r\n className: okButtonClass\r\n }}\r\n cancel={{\r\n title: cancelButtonCaption,\r\n size: buttonSize,\r\n onClick: onCancel,\r\n loading: !isUndefined(externalLoading)\r\n ? externalLoading\r\n : loading,\r\n full: fullWidthBtn,\r\n className: cancelButtonClass\r\n }}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </React.Fragment>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SappModal\r\n","import React from 'react'\r\nimport SappModal from './SappModal'\r\n\r\ntype Props = {\r\n src?: string\r\n setSrc: React.Dispatch<React.SetStateAction<string | undefined>>\r\n}\r\n\r\nfunction SappModalImage({ src, setSrc }: Props) {\r\n const handleClose = () => {\r\n setSrc(undefined)\r\n }\r\n\r\n return (\r\n <div>\r\n <SappModal\r\n open={!!src}\r\n okButtonCaption='Yes'\r\n cancelButtonCaption='No'\r\n handleCancel={handleClose}\r\n size='max-w-xxl'\r\n position='center'\r\n showFooter={false}\r\n isContentFull={false}\r\n modelClassname='sapp-preview--image'\r\n title='Preview Image'\r\n scrollbale={false}\r\n refClass='rounded-lg px-6 pb-6 md:px-8 md:pt-5 md:pb-8 pt-5 flex flex-col animate-jump-in relative transform overflow-hidden bg-white text-left shadow-xl transition-all'\r\n >\r\n {src && (\r\n <img\r\n className='h-full max-h-[550px] w-full object-contain'\r\n src={src}\r\n alt='image'\r\n loading='eager'\r\n />\r\n )}\r\n </SappModal>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SappModalImage\r\n","import { Stream, StreamPlayerApi, StreamProps } from '@cloudflare/stream-react'\r\nimport clsx from 'clsx'\r\nimport React, { MutableRefObject, useRef } from 'react'\r\n\r\ninterface IProp {\r\n options: StreamProps\r\n streamRef?: MutableRefObject<StreamPlayerApi | undefined>\r\n videoAttribs?: Record<string, string>\r\n className?: string\r\n}\r\n\r\nconst SAPPVideo = ({ options, streamRef, videoAttribs, className }: IProp) => {\r\n const innerStreamRef = useRef<StreamPlayerApi>()\r\n\r\n streamRef = streamRef || innerStreamRef\r\n\r\n return (\r\n <React.Fragment>\r\n {options.src && (\r\n <div\r\n className={clsx(`sapp-wrapper`, className)}\r\n style={\r\n videoAttribs\r\n ? {\r\n height: `${videoAttribs?.height}px`,\r\n width: `${videoAttribs?.width}px`\r\n }\r\n : {}\r\n }\r\n >\r\n <Stream\r\n {...options}\r\n key={options.src}\r\n src={options.src}\r\n streamRef={streamRef}\r\n controls\r\n responsive={false}\r\n className='sapp-content'\r\n autoplay={false}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default SAPPVideo\r\n","/* eslint-disable no-unused-vars */\r\n/* eslint-disable camelcase */\r\n/* eslint-disable no-unused-expressions */\r\nimport SappModalImage from '@components/common/modal/SappModalImage'\r\nimport { video_url } from '@constant/index'\r\nimport {\r\n convertMathToImage,\r\n replaceTextAlignCenterToWebKitCenter,\r\n replaceWhiteSpacePreWrapToNormal\r\n} from '@utils/index'\r\nimport React, { useRef, useState, useEffect } from 'react'\r\nimport parseHTML, { Element } from 'html-react-parser'\r\nimport SAPPVideo from '@components/common/video/SAPPVideo'\r\nimport SappModalVideo from '@components/common/modal/SappModalVideo'\r\n\r\ntype Props = {\r\n text_editor_content: string | undefined\r\n className?: string\r\n extenalRef?: any\r\n id?: string\r\n onMouseUp?: any\r\n highlighted?: string\r\n options?: any\r\n highlighArea?: string\r\n}\r\n\r\nconst EditorReader = ({\r\n text_editor_content,\r\n className,\r\n extenalRef,\r\n id,\r\n onMouseUp,\r\n highlighted,\r\n options,\r\n highlighArea = 'hightlight_area'\r\n}: Props) => {\r\n const [src, setSrc] = useState<string>()\r\n const [type, setType] = useState<'VIDEO' | 'IMG'>('VIDEO')\r\n const [content, setContent] = useState<any>()\r\n const editorRef = useRef<HTMLDivElement>(null)\r\n\r\n const videoRefs = useRef<Record<string, React.RefObject<HTMLVideoElement>>>(\r\n {}\r\n )\r\n useEffect(() => {\r\n if (text_editor_content !== content) {\r\n setContent(text_editor_content)\r\n }\r\n }, [text_editor_content])\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n const editor = editorRef?.current\r\n if (editor) {\r\n const mfencedElements = editor?.querySelectorAll('mfenced')\r\n mfencedElements.forEach((el: any) => {\r\n const openAttr = el?.getAttribute('open')\r\n const closeAttr = el?.getAttribute('close')\r\n if (openAttr !== null && closeAttr) {\r\n const replacements: { [key: string]: string } = {\r\n '|': '|',\r\n '||': '||',\r\n '>': '<',\r\n '}': '{',\r\n ']': '[',\r\n '&#62;': '&#60;'\r\n }\r\n if (replacements[closeAttr]) {\r\n el?.setAttribute('open', replacements[closeAttr])\r\n }\r\n }\r\n })\r\n\r\n // Replace quote in font family\r\n const mathElement = editor?.querySelectorAll('math')\r\n if (mathElement) {\r\n mathElement?.forEach((el: any) => {\r\n if (el?.hasAttribute('style')) {\r\n let styleValue = el?.getAttribute('style')\r\n styleValue = styleValue?.replaceAll('\"', '')\r\n el?.setAttribute('style', styleValue)\r\n }\r\n })\r\n convertMathToImage(editor)\r\n }\r\n }\r\n }, 100)\r\n })\r\n\r\n // useEffect(() => {\r\n // if (text_editor_content) {\r\n // convertMathToImage(text_editor_content)\r\n // const parser = new DOMParser()\r\n // const doc = parser.parseFromString(text_editor_content, 'text/html')\r\n // const videos = doc.querySelectorAll('video')\r\n // for (const video of videos) {\r\n // const src = video.querySelector('source')?.getAttribute('token')\r\n // if (src && src !== 'null' && video.tagName === 'VIDEO') {\r\n // var wrapper = document.createElement('div')\r\n // var overLay = document.createElement('span')\r\n // overLay.className = 'sapp_overlay_video'\r\n // const _video = video.cloneNode(true) as HTMLVideoElement\r\n // wrapper.append(_video)\r\n // wrapper.className = 'relative w-fit overflow-clip'\r\n // wrapper.style.cssText = `height:${video.getAttribute(\r\n // 'height'\r\n // )}px; width:${video.getAttribute('width')}px`\r\n // wrapper.append(overLay)\r\n // _video.style.cssText = `width:${video.getAttribute(\r\n // 'width'\r\n // )}px; height:${video.getAttribute(\r\n // 'height'\r\n // )}px; border: 1px solid gray`\r\n // video?.parentNode?.replaceChild(wrapper, video)\r\n // }\r\n // }\r\n // setContent(doc?.documentElement.querySelector('body')?.innerHTML || '')\r\n // } else {\r\n // setContent(text_editor_content)\r\n // }\r\n // }, [text_editor_content])\r\n\r\n // useEffect(() => {\r\n // setContent(text_editor_content)\r\n // }, [text_editor_content])\r\n\r\n const handleOnclick = async (e: React.MouseEvent<HTMLDivElement>) => {\r\n const target = e?.target as HTMLElement\r\n if (target.tagName === 'VIDEO') {\r\n // const overlay = target.nextSibling as any\r\n const video = target?.previousSibling as any\r\n const src = video?.querySelector('source')?.getAttribute('token')\r\n if (src && src !== 'null' && video.tagName === 'VIDEO') {\r\n const iframe = document.createElement('iframe')\r\n iframe.src = `${video_url}${src}/iframe?autoplay=true`\r\n iframe.id = video?.id\r\n iframe.className = video?.className\r\n iframe.style.cssText = video?.style.cssText\r\n iframe.allow =\r\n 'accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;'\r\n iframe.allowFullscreen = true\r\n video?.parentNode?.replaceChild(iframe, video)\r\n target?.classList.add('hidden')\r\n // target?.parentNode?.removeChild(target.nextSibling as Node)\r\n }\r\n } else if (target?.tagName === 'IMG') {\r\n const imageSrc = target?.getAttribute('src')\r\n if (imageSrc) {\r\n setSrc(() => {\r\n setType('IMG')\r\n return imageSrc\r\n })\r\n }\r\n }\r\n }\r\n /**\r\n * @description add class border theo editor khi border style khác none và hidden ở lần đầu component render\r\n */\r\n useEffect(() => {\r\n // Lấy tất cả các bảng trong tài liệu\r\n const tableElements = document?.querySelectorAll('table')\r\n\r\n tableElements?.forEach((tableElement) => {\r\n if (tableElement) {\r\n // Lấy kiểu border của bảng hiện tại\r\n const style = window?.getComputedStyle(tableElement)\r\n const newBorderStyle = style?.borderStyle\r\n\r\n // Lấy tất cả các ô (td) trong bảng hiện tại\r\n const tdElements = tableElement?.querySelectorAll('td')\r\n tdElements?.forEach((td) => {\r\n if (newBorderStyle !== 'none' && newBorderStyle !== 'hidden') {\r\n td?.classList?.add('border-[1px]')\r\n } else {\r\n td?.classList?.remove('border-[1px]')\r\n }\r\n })\r\n }\r\n })\r\n })\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={`${className} editor-wrap`}\r\n id={id || ''}\r\n onMouseUp={onMouseUp || (() => {})}\r\n ref={editorRef}\r\n >\r\n <div\r\n ref={extenalRef}\r\n key={content}\r\n onClick={handleOnclick}\r\n translate='no'\r\n >\r\n {parseHTML(\r\n replaceTextAlignCenterToWebKitCenter(\r\n replaceWhiteSpacePreWrapToNormal(content || '')\r\n ),\r\n {\r\n replace: (domNode) => {\r\n if (domNode.type === 'tag' && domNode.name === 'video') {\r\n const sourceChild = (domNode.children as Element[]).find(\r\n (child) => child.name === 'source'\r\n )\r\n const videoToken = sourceChild?.attribs?.token\r\n if (videoToken) {\r\n if (!videoRefs.current[videoToken]) {\r\n videoRefs.current[videoToken] =\r\n React.createRef<HTMLVideoElement>()\r\n }\r\n\r\n return (\r\n <SAPPVideo\r\n key={videoToken}\r\n options={{\r\n onTimeUpdate: () => undefined,\r\n src: videoToken\r\n }}\r\n videoAttribs={domNode.attribs}\r\n className='!pt-0 sapp-wrapper-video'\r\n />\r\n )\r\n }\r\n }\r\n },\r\n ...options\r\n }\r\n )}\r\n </div>\r\n </div>\r\n {type === 'IMG' && <SappModalImage src={src} setSrc={setSrc} />}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default EditorReader\r\n","import React, { createContext, useContext, useState } from 'react'\r\n\r\n// type for context\r\ntype Context = {\r\n activeOverlayCommentSidebar: boolean\r\n setActiveOverlayCommentSidebar: React.Dispatch<React.SetStateAction<boolean>>\r\n requirementIndex: number | null\r\n setRequirementIndex: React.Dispatch<React.SetStateAction<number | null>>\r\n}\r\n\r\n// initContext\r\nconst initContext: Context = {\r\n activeOverlayCommentSidebar: false,\r\n setActiveOverlayCommentSidebar: () => {},\r\n requirementIndex: null,\r\n setRequirementIndex: () => {}\r\n}\r\n\r\nconst ExplainationContext = createContext<Context>(initContext)\r\n\r\nexport function ExplainationProvider(props: React.PropsWithChildren<{}>) {\r\n /**\r\n * @description state này để xác định mở popup khi làm xong bài Final Test\r\n */\r\n const [activeOverlayCommentSidebar, setActiveOverlayCommentSidebar] =\r\n useState(false)\r\n const [requirementIndex, setRequirementIndex] = useState<number | null>(0)\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n activeOverlayCommentSidebar,\r\n setActiveOverlayCommentSidebar,\r\n requirementIndex,\r\n setRequirementIndex\r\n }),\r\n [\r\n activeOverlayCommentSidebar,\r\n setActiveOverlayCommentSidebar,\r\n requirementIndex,\r\n setRequirementIndex\r\n ]\r\n )\r\n\r\n return <ExplainationContext.Provider value={contextValue} {...props} />\r\n}\r\n\r\nexport function useExplainationContext(): Context {\r\n const context = useContext(ExplainationContext)\r\n\r\n if (!context) {\r\n throw new Error('Error!')\r\n }\r\n\r\n return context\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport { isNull, isUndefined } from 'lodash'\r\nimport React, { RefObject } from 'react'\r\nimport { GradingDetail, ICommment } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport { clearMarker, markColor } from '@utils/graded'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport { CloseIcon } from '@components/icons/CloseIcon'\r\nimport clsx from 'clsx'\r\nimport { useExplainationContext } from 'contexts'\r\n\r\ninterface IProps {\r\n data?: ICommment\r\n editorRef?: RefObject<HTMLElement>\r\n commentRef?: RefObject<HTMLDivElement>\r\n className?: string\r\n overlayClassName?: string\r\n}\r\n\r\nconst CommentList = ({\r\n data,\r\n editorRef,\r\n commentRef,\r\n className,\r\n overlayClassName\r\n}: IProps) => {\r\n const {\r\n activeOverlayCommentSidebar,\r\n setActiveOverlayCommentSidebar,\r\n setRequirementIndex\r\n } = useExplainationContext()\r\n const handleClickComment = (\r\n elId: string,\r\n begin?: number | null,\r\n end?: number | null\r\n ) => {\r\n clearMarker(editorRef)\r\n markColor(begin, end, editorRef)\r\n if (commentRef?.current) {\r\n const commentList =\r\n commentRef.current.getElementsByClassName('comment-box')\r\n for (const element of commentList) {\r\n const el = element as HTMLElement\r\n if (elId === el?.id) {\r\n ;(element as HTMLElement).classList.add('comment-box-hover')\r\n const gradeLine = (el as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.add('comment-box-grade-hover')\r\n }\r\n } else {\r\n if (element?.classList) {\r\n ;(element as HTMLElement).classList.remove('comment-box-hover')\r\n }\r\n const gradeLine = (el as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-box-grade-hover')\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const handleTurnoffHighlight = () => {\r\n if (commentRef?.current) {\r\n const gradeCommentElements =\r\n commentRef.current.querySelectorAll('.comment-box')\r\n gradeCommentElements.forEach((element) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n ;(element as HTMLElement)?.classList?.remove('comment-box-hover')\r\n const gradeLine = (element as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-grade-hover-after')\r\n gradeLine.classList.remove('comment-box-grade-hover')\r\n }\r\n })\r\n // eslint-disable-next-line no-unused-expressions\r\n commentRef?.current?.classList?.remove('active-comment')\r\n setActiveOverlayCommentSidebar(false)\r\n setRequirementIndex(0)\r\n if (commentRef?.current?.classList) {\r\n commentRef.current.classList.add('hide-comment')\r\n }\r\n }\r\n }\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={clsx(\r\n 'comment-sidebar-overlay fixed bottom-0 left-0 right-0 top-0 z-20 h-full w-full cursor-pointer bg-overlay',\r\n overlayClassName,\r\n { active: activeOverlayCommentSidebar }\r\n )}\r\n />\r\n <div ref={commentRef} className={clsx('comment-sidebar', className)}>\r\n <div className='flex justify-between items-center comment-sidebar-header'>\r\n <div className='text-xl font-semibold text-bw-2'>\r\n Examiner's Comment\r\n </div>\r\n <div className='cursor-pointer' onClick={handleTurnoffHighlight}>\r\n <CloseIcon size={24} />\r\n </div>\r\n </div>\r\n {data?.details?.map((item: GradingDetail, key) => {\r\n const elId = `${item?.begin}_${item?.end}_${key}_comment`\r\n return (\r\n <div\r\n className='comment-box cursor-pointer text-gray-800'\r\n key={Number(item?.begin) + Number(item?.end) + key}\r\n id={`${item?.begin}_${item?.end}_${key}_comment`}\r\n data-begin={item?.begin}\r\n data-end={item?.end}\r\n onClick={(e) => handleClickComment(elId, item?.begin, item?.end)}\r\n >\r\n {!isNull(item?.grade) && !isUndefined(item?.grade) && (\r\n <div className='comment-box-grade'>\r\n <p className='font-semibold'>Grade:</p>\r\n <p>{item?.grade}</p>\r\n </div>\r\n )}\r\n {!!item?.comment && (\r\n <div>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n item?.comment || ''\r\n )}\r\n className='sapp-questions'\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default CommentList\r\n","import React, { memo } from 'react'\r\nimport SappModal from './SappModal'\r\n// import PDFViewer from '../pdf/pdf-viewer'\r\n\r\ninterface IProps {\r\n open: boolean\r\n setOpen: any\r\n url: string\r\n fileName?: string\r\n renderContent?: ({\r\n url,\r\n fileName\r\n }: {\r\n url: string\r\n fileName?: string\r\n }) => React.ReactNode\r\n}\r\nconst PopupViewPdf = ({\r\n open,\r\n setOpen,\r\n url,\r\n fileName,\r\n renderContent\r\n}: IProps) => {\r\n const onCancel = () => {\r\n setOpen({ status: false, url: undefined })\r\n }\r\n\r\n return (\r\n <SappModal\r\n open={open}\r\n setOpen={setOpen}\r\n isContentFull\r\n handleCancel={onCancel}\r\n showCancelButton={false}\r\n showOkButton={false}\r\n showHeader\r\n refClass='md:px-19 py-19 flex flex-col animate-jump-in relative transform bg-white text-left shadow-xl transition-all'\r\n size=''\r\n footerButtonClassName='flex flex-col-reverse gap-6'\r\n childClass='flex flex-col justify-center items-center'\r\n parentChildClass=''\r\n position='center'\r\n fullWidthBtn\r\n closeAfterSubmit\r\n buttonSize='extra'\r\n scrollbale={false}\r\n >\r\n {renderContent?.({\r\n url,\r\n fileName\r\n })}\r\n </SappModal>\r\n )\r\n}\r\n\r\nexport default memo(PopupViewPdf)\r\n","import React from 'react'\r\n\r\nexport const DownloadIcon = () => {\r\n return (\r\n <svg\r\n width='20'\r\n height='20'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <path\r\n d='M6.71875 8.59375L10 11.875L13.2812 8.59375'\r\n stroke='#A1A1A1'\r\n strokeWidth='1.3'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n <path\r\n d='M10 3.125V11.875'\r\n stroke='#A1A1A1'\r\n strokeWidth='1.3'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n <path\r\n d='M16.875 11.875V16.25C16.875 16.4158 16.8092 16.5747 16.6919 16.6919C16.5747 16.8092 16.4158 16.875 16.25 16.875H3.75C3.58424 16.875 3.42527 16.8092 3.30806 16.6919C3.19085 16.5747 3.125 16.4158 3.125 16.25V11.875'\r\n stroke='#A1A1A1'\r\n strokeWidth='1.3'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport const AltArrowLeft = ({ className }: { className?: string }) => (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n className={className}\r\n >\r\n <path\r\n fillRule='evenodd'\r\n clipRule='evenodd'\r\n d='M14.0303 7.46967C13.7374 7.17678 13.1768 7.17678 12.884 7.46967L6.884 13.4697C6.59111 13.7626 6.59111 14.2374 6.884 14.5303L12.884 20.5303C13.1768 20.8232 13.7374 20.8232 14.0303 20.5303C14.3232 20.2374 14.3232 19.7626 14.0303 19.4697L9.03033 14.4697L14.0303 9.53033C14.3232 9.23744 14.3232 8.76256 14.0303 8.46967Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n)\r\n\r\nexport const AltArrowRight = ({ className }: { className?: string }) => (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n className={className}\r\n >\r\n <path\r\n fillRule='evenodd'\r\n clipRule='evenodd'\r\n d='M9.96967 7.46967C10.2626 7.17678 10.7374 7.17678 11.0303 7.46967L17.0303 13.4697C17.3232 13.7626 17.3232 14.2374 17.0303 14.5303L11.0303 20.5303C10.7374 20.8232 10.2626 20.8232 9.96967 20.5303C9.67678 20.2374 9.67678 19.7626 9.96967 19.4697L14.9697 14.4697L9.96967 9.53033C9.67678 9.23744 9.67678 8.76256 9.96967 8.46967Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n)\r\n\r\nexport const DownloadFileGradingIcon = () => {\r\n return (\r\n <svg\r\n width='20'\r\n height='20'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <path\r\n d='M10.4613 13.7551C10.3429 13.8846 10.1755 13.9583 10 13.9583C9.82453 13.9583 9.65714 13.8846 9.53873 13.7551L6.2054 10.1092C5.97248 9.85448 5.99019 9.45915 6.24494 9.22623C6.49969 8.99332 6.89502 9.01102 7.12794 9.26577L9.375 11.7235V2.5C9.375 2.15482 9.65482 1.875 10 1.875C10.3452 1.875 10.625 2.15482 10.625 2.5V11.7235L12.8721 9.26577C13.105 9.01102 13.5003 8.99332 13.7551 9.22623C14.0098 9.45915 14.0275 9.85448 13.7946 10.1092L10.4613 13.7551Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M3.125 12.5C3.125 12.1548 2.84518 11.875 2.5 11.875C2.15482 11.875 1.875 12.1548 1.875 12.5V12.5457C1.87498 13.6854 1.87497 14.604 1.9721 15.3265C2.07295 16.0765 2.2887 16.7081 2.79029 17.2097C3.29189 17.7113 3.92345 17.927 4.67354 18.0279C5.39602 18.125 6.31462 18.125 7.45428 18.125H12.5457C13.6854 18.125 14.604 18.125 15.3265 18.0279C16.0766 17.927 16.7081 17.7113 17.2097 17.2097C17.7113 16.7081 17.9271 16.0765 18.0279 15.3265C18.125 14.604 18.125 13.6854 18.125 12.5457V12.5C18.125 12.1548 17.8452 11.875 17.5 11.875C17.1548 11.875 16.875 12.1548 16.875 12.5C16.875 13.6962 16.8737 14.5304 16.789 15.1599C16.7068 15.7714 16.5565 16.0952 16.3258 16.3258C16.0952 16.5565 15.7714 16.7068 15.1599 16.789C14.5304 16.8737 13.6962 16.875 12.5 16.875H7.5C6.30382 16.875 5.46956 16.8737 4.8401 16.789C4.22862 16.7068 3.90481 16.5565 3.67418 16.3258C3.44354 16.0952 3.29317 15.7714 3.21096 15.1599C3.12633 14.5304 3.125 13.6962 3.125 12.5Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react'\r\nimport { DownloadIcon } from '@utils/icons'\r\nimport { isEmpty, isNull, isUndefined } from 'lodash'\r\nimport { Tooltip } from 'antd'\r\n\r\ninterface IProps {\r\n title?: string\r\n fileName?: string\r\n key?: number | string\r\n url?: string\r\n setOpenPdf?: Dispatch<\r\n SetStateAction<{ status: boolean; url: string; name?: string } | undefined>\r\n >\r\n isDownloadFile?: boolean\r\n}\r\n\r\nconst FileDisplay = ({\r\n setOpenPdf,\r\n fileName,\r\n key,\r\n title,\r\n url,\r\n isDownloadFile = false\r\n}: IProps) => {\r\n const [isCsv, setIsCsv] = useState<boolean>(false)\r\n useEffect(() => {\r\n const ext = fileName?.toString().split('.').pop()\r\n if (ext === 'csv') {\r\n setIsCsv(true)\r\n } else {\r\n setIsCsv(false)\r\n }\r\n }, [url])\r\n const handleOpenFile = () => {\r\n if (isUndefined(url) || isNull(url) || isEmpty(url)) return\r\n\r\n setOpenPdf &&\r\n setOpenPdf({\r\n status: true,\r\n url: url,\r\n name: fileName\r\n })\r\n }\r\n return (\r\n <div className='flex justify-between items-start' key={key}>\r\n <div className='flex gap-2'>\r\n {!!title && <div className='font-semibold mb-4'>{title}</div>}\r\n {isCsv || isDownloadFile ? (\r\n <Tooltip title='Download' color='white'>\r\n <a\r\n className='cursor-pointer text-state-info hover:underline'\r\n href={url || '#'}\r\n download={fileName}\r\n >\r\n {fileName || ''}\r\n </a>\r\n </Tooltip>\r\n ) : (\r\n <div\r\n className='cursor-pointer text-state-info hover:underline'\r\n onClick={handleOpenFile}\r\n >\r\n {fileName || ''}\r\n </div>\r\n )}\r\n </div>\r\n <a href={url || '#'} download={fileName}>\r\n <DownloadIcon />\r\n </a>\r\n </div>\r\n )\r\n}\r\n\r\nexport default FileDisplay\r\n","/* eslint-disable no-unused-vars */\r\nimport { Workbook, WorkbookInstance } from '@fortune-sheet/react'\r\nimport React, { memo, RefObject, useEffect, useRef, useState } from 'react'\r\nimport { Controller } from 'react-hook-form'\r\n// eslint-disable-next-line no-unused-vars\r\n// eslint-disable-next-line no-unused-vars\r\nimport EditorReader from '@components/editor/EditorReader'\r\nimport {\r\n clearMarker,\r\n indexCharacters,\r\n markColor,\r\n restoreHighlights\r\n} from '@utils/graded'\r\nimport { ICommment, IFileAnswer, RESPONSE_OPTION } from 'constant'\r\nimport FileDisplay from '../FileDisplay'\r\nimport { useExplainationContext } from 'contexts'\r\nimport { deepCloneForWorkbook, generateSheetId } from '@utils/index'\r\nimport { cloneDeep, isEmpty, isNull, isUndefined } from 'lodash'\r\n\r\nexport type IPreviewProp = {\r\n reqIndex: number\r\n control: any\r\n name: string\r\n question_data: any\r\n defaultValue?: any\r\n answer_file?: IFileAnswer\r\n setOpenPdf?: any\r\n listGrades?: ICommment\r\n commentRef?: RefObject<HTMLElement>\r\n editorRef?: RefObject<HTMLElement>\r\n bodyRef?: RefObject<HTMLDivElement>\r\n grading_file?: IFileAnswer\r\n handleShowRequirement?: () => void\r\n}\r\ntype SheetData = {\r\n name: string\r\n id: string\r\n status: number\r\n data: (string | number | null)[][]\r\n celldata: {\r\n r: number\r\n c: number\r\n v: { v: string; ct: { fa: string; t: string }; m: string }\r\n }[]\r\n row?: number\r\n column?: number\r\n}\r\n\r\nconst EssayQuestionPreview = ({\r\n reqIndex,\r\n name,\r\n control,\r\n question_data,\r\n defaultValue,\r\n answer_file,\r\n setOpenPdf,\r\n listGrades,\r\n commentRef,\r\n editorRef,\r\n bodyRef,\r\n grading_file,\r\n handleShowRequirement\r\n}: IPreviewProp) => {\r\n const { setActiveOverlayCommentSidebar, setRequirementIndex } =\r\n useExplainationContext()\r\n const refSheet = useRef<WorkbookInstance>() as any\r\n const refEditor = useRef(null) as any\r\n const [htmlOutput, setHtmlOutput] = useState<string[]>([])\r\n const [isSheetReady, setIsSheetReady] = useState(false)\r\n const [previewSheet, setPreviewSheet] = useState<string | undefined>(\r\n defaultValue\r\n )\r\n\r\n useEffect(() => {\r\n if (refSheet.current) {\r\n setIsSheetReady(true)\r\n }\r\n }, [refSheet.current])\r\n\r\n // const handleWorkbookRef = (instance: WorkbookInstance) => {\r\n // if (instance) {\r\n // try {\r\n // const sheets = instance?.getAllSheets()\r\n // const allSheetsHtml: string[] = []\r\n\r\n // sheets.forEach((sheetData, index) => {\r\n // const options = {\r\n // index: index\r\n // }\r\n\r\n // // Determine row/column counts from data, celldata, or explicit row/column\r\n // let rowCount = 0\r\n // let columnCount = 0\r\n\r\n // if (Array.isArray(sheetData?.data) && sheetData.data.length > 0) {\r\n // rowCount = sheetData.data.length\r\n // columnCount = sheetData.data.reduce(\r\n // (max: number, row: any[]) => Math.max(max, row?.length || 0),\r\n // 0\r\n // )\r\n // } else if (\r\n // Array.isArray(sheetData?.celldata) &&\r\n // sheetData.celldata.length > 0\r\n // ) {\r\n // // Derive bounds from celldata r/c indices\r\n // const maxR = sheetData.celldata.reduce(\r\n // (max: number, cell: any) => Math.max(max, Number(cell?.r) || 0),\r\n // 0\r\n // )\r\n // const maxC = sheetData.celldata.reduce(\r\n // (max: number, cell: any) => Math.max(max, Number(cell?.c) || 0),\r\n // 0\r\n // )\r\n // rowCount = Math.max(sheetData?.row || 0, maxR + 1)\r\n // columnCount = Math.max(sheetData?.column || 0, maxC + 1)\r\n // } else {\r\n // // Fallback to provided row/column if any\r\n // rowCount = sheetData?.row || 0\r\n // columnCount = sheetData?.column || 0\r\n // }\r\n\r\n // const range = [\r\n // {\r\n // row: [0, Math.max(0, rowCount)],\r\n // column: [0, Math.max(0, columnCount)]\r\n // }\r\n // ]\r\n // const sheetHtml = instance?.getHtmlByRange(range, options)\r\n // allSheetsHtml.push(`${sheetHtml}`)\r\n // })\r\n // if (JSON.stringify(htmlOutput) !== JSON.stringify(allSheetsHtml)) {\r\n // setHtmlOutput(allSheetsHtml)\r\n // }\r\n // } catch (error) {\r\n // console.error('Error in getHtmlByRange:', error)\r\n // }\r\n // }\r\n // }\r\n\r\n const handleHighlightClick = (event: React.MouseEvent<HTMLDivElement>) => {\r\n const targetElement = event?.target as HTMLElement\r\n let spanElement = targetElement\r\n\r\n if (targetElement?.classList?.contains('sapp-grade-tooltip')) {\r\n spanElement = targetElement?.closest(\r\n '.sapp-grading-highlight'\r\n ) as HTMLElement\r\n if (!spanElement || !spanElement?.id?.match(/^h_(\\d+)$/)) {\r\n return\r\n }\r\n }\r\n if (spanElement.tagName === 'SPAN') {\r\n setRequirementIndex(reqIndex)\r\n if (handleShowRequirement) handleShowRequirement()\r\n const spanId = spanElement?.id\r\n const indexMatch = spanId?.match(/^h_(\\d+)$/)\r\n let begin: number = 0\r\n let end: number = 0\r\n if (indexMatch && commentRef?.current) {\r\n const index = parseInt(indexMatch[1], 10)\r\n const gradeCommentElements =\r\n commentRef.current.querySelectorAll('.comment-box')\r\n let foundElement: HTMLElement | null = null\r\n clearMarker(editorRef)\r\n gradeCommentElements.forEach((element) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n // const commentLine = (element as HTMLElement).getElementsByClassName(\r\n // 'comment-box-comment'\r\n // )?.[0]\r\n ;(element as HTMLElement).classList.remove('comment-box-hover')\r\n const gradeLine = (element as HTMLElement).getElementsByClassName(\r\n 'comment-box-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-grade-hover-after')\r\n gradeLine.classList.remove('comment-box-grade-hover')\r\n }\r\n })\r\n gradeCommentElements.forEach((element) => {\r\n const elementBegin = parseInt(\r\n (element as HTMLElement).getAttribute('data-begin') || '0',\r\n 10\r\n )\r\n const elementEnd = parseInt(\r\n (element as HTMLElement).getAttribute('data-end') || '0',\r\n 10\r\n )\r\n if (index >= elementBegin && index <= elementEnd) {\r\n begin = elementBegin\r\n end = elementEnd\r\n foundElement = element as HTMLElement\r\n }\r\n })\r\n if (foundElement) {\r\n clearMarker(editorRef)\r\n markColor(begin, end, editorRef)\r\n // eslint-disable-next-line no-unused-expressions\r\n commentRef?.current?.classList?.add('active-comment')\r\n setActiveOverlayCommentSidebar(true)\r\n setRequirementIndex(reqIndex)\r\n\r\n // eslint-disable-next-line no-unused-expressions\r\n commentRef?.current?.classList?.remove('hide-comment')\r\n ;(foundElement as HTMLElement).scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center'\r\n })\r\n if ((foundElement as HTMLElement).classList) {\r\n ;(foundElement as HTMLElement).classList.add('comment-box-hover')\r\n }\r\n\r\n const gradeLine = (\r\n foundElement as HTMLElement\r\n ).getElementsByClassName('comment-box-grade')?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.add('comment-box-grade-hover')\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const handleTurnoffHighlight = () => {\r\n if (commentRef?.current) {\r\n const gradeCommentElements =\r\n commentRef.current.querySelectorAll('.comment-box')\r\n gradeCommentElements.forEach((element) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n ;(element as HTMLElement)?.classList?.remove('comment-box-hover')\r\n const gradeLine = (element as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-grade-hover-after')\r\n gradeLine.classList.remove('comment-box-grade-hover')\r\n }\r\n })\r\n // eslint-disable-next-line no-unused-expressions\r\n commentRef?.current?.classList?.remove('active-comment')\r\n setActiveOverlayCommentSidebar(false)\r\n setRequirementIndex(null)\r\n if (commentRef?.current?.classList) {\r\n commentRef.current.classList.add('hide-comment')\r\n }\r\n }\r\n }\r\n\r\n const handleClickOutside = (event: any) => {\r\n // Nếu click bên ngoài dropdownRef, thì đóng component\r\n if (\r\n editorRef?.current &&\r\n !editorRef.current.contains(event.target) &&\r\n commentRef?.current &&\r\n !commentRef.current.contains(event.target)\r\n ) {\r\n clearMarker(editorRef)\r\n handleTurnoffHighlight()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (bodyRef?.current) {\r\n bodyRef.current.addEventListener('click', handleClickOutside)\r\n }\r\n return () => {\r\n bodyRef?.current &&\r\n bodyRef.current.addEventListener('click', handleClickOutside)\r\n }\r\n }, [editorRef?.current])\r\n\r\n // useEffect(() => {\r\n // if (\r\n // refSheet.current &&\r\n // // eslint-disable-next-line camelcase\r\n // Number(reqIndex) <= question_data?.requirements?.length\r\n // ) {\r\n // if (\r\n // defaultValue === undefined ||\r\n // defaultValue === null ||\r\n // String(defaultValue).trim() === ''\r\n // ) {\r\n // const emptySheets = refSheet.current\r\n // ?.getAllSheets()\r\n // .map((sheet: SheetData) => ({\r\n // ...sheet,\r\n // celldata: [],\r\n // data: Array(sheet.row || 100)\r\n // .fill(null)\r\n // .map(() => Array(sheet.column || 50).fill(null))\r\n // }))\r\n // emptySheets.forEach((sheet: SheetData) => {\r\n // // eslint-disable-next-line no-unused-expressions\r\n // refSheet.current?.updateSheet(JSON.parse(JSON.stringify([sheet])))\r\n // })\r\n // } else {\r\n // const sheetData = defaultValue\r\n // ? JSON.parse(defaultValue)\r\n // : [{ name: 'Sheet1', id: '', status: 1, data: [[]], celldata: [] }]\r\n\r\n // // Convert sheetData to constructor with id of refSheet.current\r\n // const currentSheets = refSheet.current.getAllSheets()\r\n // const updatedSheetData = sheetData.map(\r\n // (sheet: SheetData, index: number) => ({\r\n // ...sheet,\r\n // id: currentSheets[index]?.id || ''\r\n // })\r\n // )\r\n\r\n // const emptySheets = currentSheets.map((sheet: SheetData) => ({\r\n // ...sheet,\r\n // celldata: [],\r\n // data: Array(sheet.row || 100)\r\n // .fill(null)\r\n // .map(() => Array(sheet.column || 50).fill(null))\r\n // }))\r\n // emptySheets.forEach((sheet: SheetData, index: number) => {\r\n // if (sheet?.name === sheetData[index]?.name) {\r\n // // eslint-disable-next-line no-unused-expressions\r\n // refSheet.current?.updateSheet(\r\n // JSON.parse(JSON.stringify([updatedSheetData[index]]))\r\n // )\r\n // } else {\r\n // // eslint-disable-next-line no-unused-expressions\r\n // refSheet.current?.updateSheet(JSON.parse(JSON.stringify([sheet])))\r\n // }\r\n // })\r\n // handleWorkbookRef(refSheet.current)\r\n // }\r\n // }\r\n // }, [defaultValue, reqIndex])\r\n\r\n // useEffect(() => {\r\n // const timeout = setTimeout(() => {\r\n // handleWorkbookRef(refSheet.current)\r\n // }, 500)\r\n // return () => clearTimeout(timeout)\r\n // }, [refSheet.current, reqIndex])\r\n\r\n useEffect(() => {\r\n const editorArea = editorRef?.current\r\n if (!editorArea) return\r\n indexCharacters(editorArea)\r\n const observer = new MutationObserver((mutationsList) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n indexCharacters(editorArea)\r\n break\r\n }\r\n }\r\n })\r\n observer.observe(editorArea, { childList: true, subtree: true })\r\n const timeoutId = setTimeout(() => {\r\n restoreHighlights(listGrades?.details || [], editorArea)\r\n }, 1000)\r\n return () => {\r\n observer.disconnect()\r\n clearTimeout(timeoutId)\r\n }\r\n }, [reqIndex, listGrades])\r\n\r\n const isValid = (value?: string) => {\r\n try {\r\n if (!value || isEmpty(value) || isUndefined(value) || isNull(value))\r\n return false\r\n JSON.parse(value)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n }\r\n const defaultSheetData = JSON.stringify([\r\n {\r\n name: 'Sheet1',\r\n id: generateSheetId(),\r\n status: 1,\r\n data: [[]],\r\n celldata: []\r\n }\r\n ])\r\n const setInitDataSheet = (answerSheetData?: string) => {\r\n if (!refSheet?.current) return\r\n const currentSheets = refSheet.current.getAllSheets()\r\n // function tạo sheet trống an toàn\r\n const makeEmptySheet = (base: SheetData): SheetData => ({\r\n id: base.id,\r\n name: base.name,\r\n status: base.status ?? 1,\r\n row: base.row ?? 100,\r\n column: base.column ?? 50,\r\n celldata: [],\r\n data: Array(base.row || 100)\r\n .fill(null)\r\n .map(() => Array(base.column || 50).fill(null))\r\n })\r\n if (answerSheetData?.trim()) {\r\n const sheetData: SheetData[] = JSON.parse(answerSheetData) || [\r\n {\r\n name: 'Sheet1',\r\n id: generateSheetId(),\r\n status: 1,\r\n data: [[]],\r\n celldata: []\r\n }\r\n ]\r\n\r\n const updatedSheetData = sheetData.map((sheet, index) => {\r\n const base = currentSheets[index] || {}\r\n return {\r\n ...makeEmptySheet(base as SheetData), // luôn tạo mới data, celldata\r\n ...cloneDeep(sheet), // merge nội dung từ JSON vào\r\n id: base?.id || sheet.id || ''\r\n }\r\n })\r\n // update tất cả một lần\r\n refSheet.current.updateSheet(\r\n deepCloneForWorkbook(updatedSheetData.map(cloneDeep))\r\n )\r\n } else {\r\n const emptySheets = currentSheets.map((sheet: SheetData) =>\r\n makeEmptySheet(sheet)\r\n )\r\n refSheet.current.updateSheet(\r\n deepCloneForWorkbook(emptySheets.map(cloneDeep))\r\n )\r\n }\r\n }\r\n // Lay data tu api sheet\r\n useEffect(() => {\r\n if (question_data?.response_option === 'SHEET' && isSheetReady) {\r\n if (defaultValue && defaultValue.trim() !== '') {\r\n setInitDataSheet(defaultValue)\r\n } else {\r\n setInitDataSheet(defaultSheetData)\r\n }\r\n }\r\n }, [defaultValue, isSheetReady])\r\n\r\n return (\r\n <div className='bg-white'>\r\n <div>\r\n <div className='w-full'>\r\n {answer_file?.file_name && (\r\n <FileDisplay\r\n title='Your answer:'\r\n setOpenPdf={setOpenPdf}\r\n url={answer_file?.url}\r\n fileName={answer_file?.file_name}\r\n />\r\n )}\r\n {grading_file?.file_name && (\r\n <FileDisplay\r\n title='Graded answer file:'\r\n setOpenPdf={setOpenPdf}\r\n url={grading_file?.file_url}\r\n fileName={grading_file?.file_name}\r\n isDownloadFile\r\n />\r\n )}\r\n {question_data?.response_option === RESPONSE_OPTION.WORD ||\r\n question_data?.response_option_answer === RESPONSE_OPTION.WORD ? (\r\n defaultValue && (\r\n <div className='border rounded-xl overflow-auto sapp-grade-questions-content mt-0'>\r\n <div className='font-semibold text-lg mb-4 text-bw-2'>\r\n Your Answers:\r\n </div>\r\n <div\r\n key={reqIndex}\r\n ref={editorRef || refEditor}\r\n id={`editor_area_${reqIndex}`}\r\n onClick={(e) => {\r\n handleHighlightClick(e)\r\n }}\r\n >\r\n <EditorReader text_editor_content={defaultValue} />\r\n </div>\r\n </div>\r\n )\r\n ) : question_data?.response_option === RESPONSE_OPTION.SHEET ||\r\n question_data?.response_option_answer === RESPONSE_OPTION.SHEET ? (\r\n <React.Fragment>\r\n <div className='w-full border rounded-xl h-[500px] sapp-grade-questions-content mt-0'>\r\n <div className='font-semibold text-lg mb-4 text-bw-2'>\r\n Your Answers:\r\n </div>\r\n <div>\r\n <Workbook\r\n allowEdit={false}\r\n ref={refSheet}\r\n data={\r\n isValid()\r\n ? JSON.parse(previewSheet || defaultSheetData)\r\n : [\r\n {\r\n name: 'Sheet1',\r\n id: generateSheetId(),\r\n status: 1,\r\n data: [[]],\r\n celldata: []\r\n }\r\n ]\r\n }\r\n />\r\n </div>\r\n\r\n {/* <div\r\n ref={editorRef || refEditor}\r\n onClick={(e) => {\r\n handleHighlightClick(e)\r\n }}\r\n id={`editor_area_${reqIndex}`}\r\n >\r\n {(htmlOutput || [])?.map((sheetHtml, index) => (\r\n <EditorReader\r\n key={index}\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n sheetHtml\r\n )}\r\n className='table-content overflow-auto h-[500px]'\r\n />\r\n ))}\r\n </div> */}\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\nexport default memo(EssayQuestionPreview)\r\n","import React from 'react'\r\n\r\ntype IconsPros = {\r\n type?: string\r\n className?: string\r\n}\r\n\r\nexport default function Icon({ type, className }: IconsPros) {\r\n return (\r\n <React.Fragment>\r\n {type === 'check' && (\r\n <svg\r\n width='13'\r\n height='14'\r\n viewBox='0 0 13 14'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='yes 1' clipPath='url(#clip0_108_2114)'>\r\n <path\r\n id='Vector'\r\n d='M6.50001 13.2835C9.9702 13.2835 12.7833 10.4703 12.7833 7.00013C12.7833 3.52994 9.9702 0.716797 6.50001 0.716797C3.02982 0.716797 0.216675 3.52994 0.216675 7.00013C0.216675 10.4703 3.02982 13.2835 6.50001 13.2835Z'\r\n fill='#404041'\r\n />\r\n <path\r\n id='Vector_2'\r\n d='M5.25678 9.61512L3.78345 8.17602C3.75158 8.14505 3.72625 8.10799 3.70895 8.06706C3.69165 8.02612 3.68274 7.98213 3.68274 7.93769C3.68274 7.89324 3.69165 7.84925 3.70895 7.80832C3.72625 7.76738 3.75158 7.73033 3.78345 7.69935L4.27203 7.22269C4.33755 7.1592 4.4252 7.1237 4.51643 7.1237C4.60766 7.1237 4.69531 7.1592 4.76083 7.22269L5.6379 8.08004L8.09772 4.34037C8.14847 4.26491 8.22658 4.21214 8.31553 4.19322C8.40448 4.17429 8.49731 4.1907 8.57438 4.23897L9.15592 4.60427C9.1939 4.62763 9.22681 4.65837 9.25268 4.69468C9.27856 4.73099 9.29688 4.77213 9.30656 4.81566C9.31624 4.85919 9.31708 4.90421 9.30903 4.94807C9.30098 4.99192 9.2842 5.03372 9.2597 5.07097L6.34705 9.5005C6.28869 9.58721 6.21202 9.66006 6.12246 9.71393C6.0329 9.7678 5.93261 9.80138 5.82867 9.81231C5.72473 9.82324 5.61965 9.81125 5.52085 9.77718C5.42204 9.74311 5.3319 9.68779 5.25678 9.61512Z'\r\n fill='white'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_108_2114'>\r\n <rect\r\n width='13'\r\n height='13'\r\n fill='white'\r\n transform='translate(0 0.5)'\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'global' && (\r\n <svg\r\n width='16'\r\n height='16'\r\n viewBox='0 0 16 16'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g clipPath='url(#clip0_5_16315)'>\r\n <path\r\n d='M8 0.5C6.51664 0.5 5.0666 0.939867 3.83323 1.76398C2.59986 2.58809 1.63856 3.75943 1.07091 5.12987C0.50325 6.50032 0.354725 8.00832 0.644114 9.46318C0.933503 10.918 1.64781 12.2544 2.6967 13.3033C3.7456 14.3522 5.08197 15.0665 6.53683 15.3559C7.99168 15.6453 9.49968 15.4968 10.8701 14.9291C12.2406 14.3614 13.4119 13.4001 14.236 12.1668C15.0601 10.9334 15.5 9.48336 15.5 8C15.4976 6.01163 14.7066 4.1054 13.3006 2.6994C11.8946 1.29341 9.98837 0.502448 8 0.5ZM1.26 6.11L1.54 6.52C1.5527 6.5381 1.55796 6.56038 1.55471 6.58224C1.55145 6.60411 1.53992 6.62389 1.5225 6.6375L1.2375 6.855C1.17175 6.90471 1.12641 6.97672 1.11 7.0575L1.02 7.4875C1.05215 7.02127 1.13258 6.55963 1.26 6.11ZM13.525 5.2475C13.5924 5.25067 13.6574 5.27407 13.7113 5.31465C13.7653 5.35522 13.8057 5.4111 13.8275 5.475L13.84 5.51C13.865 5.58638 13.9136 5.6529 13.9787 5.70004C14.0438 5.74718 14.1221 5.77255 14.2025 5.7725H14.635C14.6945 5.94232 14.7454 6.11504 14.7875 6.29L14.375 6.7025C14.3678 6.70968 14.3592 6.71537 14.3497 6.71923C14.3403 6.72309 14.3302 6.72505 14.32 6.725H13.705C13.6949 6.72501 13.685 6.72299 13.6757 6.71906C13.6664 6.71514 13.6581 6.70939 13.6511 6.70216C13.6441 6.69493 13.6386 6.68636 13.635 6.67697C13.6314 6.66758 13.6297 6.65756 13.63 6.6475C13.6301 6.58557 13.6125 6.52491 13.5793 6.47265C13.5461 6.42038 13.4986 6.3787 13.4425 6.3525C13.3867 6.32522 13.3241 6.31471 13.2625 6.32226C13.2008 6.3298 13.1426 6.35507 13.095 6.395L11.95 7.325C11.7494 7.48697 11.5878 7.69192 11.477 7.92471C11.3663 8.1575 11.3092 8.4122 11.31 8.67V9.5675C11.31 9.6102 11.3183 9.65249 11.3346 9.69195C11.3509 9.73142 11.3748 9.76728 11.405 9.7975L12.1975 10.5925C12.2598 10.6531 12.3431 10.6871 12.43 10.6875H12.73C12.8709 10.6878 13.0088 10.6471 13.1269 10.5703C13.245 10.4935 13.3382 10.3839 13.395 10.255L14.1725 11.3025C13.5741 12.4193 12.684 13.353 11.5971 14.0041C10.5102 14.6552 9.26703 14.9994 8 15C7.965 15 7.9325 15 7.8975 14.9975V14.9325C7.8975 14.8861 7.91594 14.8416 7.94876 14.8088C7.98158 14.7759 8.02609 14.7575 8.0725 14.7575C8.21088 14.7568 8.34339 14.7016 8.44124 14.6037C8.53909 14.5059 8.59435 14.3734 8.595 14.235V13.7725C8.59493 13.7284 8.61172 13.686 8.64194 13.6539C8.67216 13.6219 8.71351 13.6026 8.7575 13.6C8.84661 13.5939 8.93146 13.5596 8.99977 13.5021C9.06809 13.4445 9.11633 13.3668 9.1375 13.28C9.16123 13.1935 9.15627 13.1017 9.12336 13.0183C9.09045 12.9349 9.03137 12.8645 8.955 12.8175L7.6225 11.9675C7.59768 11.9518 7.5773 11.93 7.5633 11.9042C7.54929 11.8783 7.54213 11.8494 7.5425 11.82V11.5725C7.54184 11.4602 7.49677 11.3528 7.41714 11.2736C7.33751 11.1944 7.22979 11.15 7.1175 11.15H6.9025C6.77364 11.1493 6.65029 11.0977 6.5594 11.0063C6.46852 10.915 6.4175 10.7914 6.4175 10.6625C6.4175 10.6067 6.40651 10.5514 6.38515 10.4999C6.36379 10.4483 6.33249 10.4014 6.29302 10.362C6.25356 10.3225 6.20671 10.2912 6.15514 10.2699C6.10358 10.2485 6.04831 10.2375 5.9925 10.2375H4.0425C3.93022 10.2382 3.82276 10.2832 3.7436 10.3629C3.66443 10.4425 3.62 10.5502 3.62 10.6625V10.7925C3.62001 10.8347 3.60494 10.8755 3.5775 10.9075L3.135 11.425C3.07631 11.4936 3.04123 11.5792 3.03493 11.6692C3.02862 11.7593 3.05144 11.8489 3.1 11.925L3.39 12.3925C3.41131 12.4291 3.4393 12.4613 3.4725 12.4875L4.5325 13.4125C4.55106 13.4293 4.56597 13.4497 4.57629 13.4725C4.58662 13.4953 4.59213 13.52 4.5925 13.545V14.1125C3.50372 13.5058 2.59669 12.6193 1.96513 11.5447C1.33357 10.4701 1.00039 9.24643 1 8C1 7.9675 1 7.9325 1.0025 7.9C1.08816 8.35651 1.35049 8.76079 1.7325 9.025L3.3975 10.275C3.41944 10.2906 3.44557 10.2994 3.4725 10.3C3.49454 10.2996 3.51609 10.2935 3.53503 10.2822C3.55397 10.2709 3.56964 10.2549 3.58049 10.2357C3.59135 10.2165 3.59701 10.1948 3.59692 10.1728C3.59684 10.1507 3.59101 10.1291 3.58 10.11L2.82 8.8425C2.8075 8.8175 2.8075 8.8075 2.805 8.8075C2.81505 8.79644 2.82688 8.78714 2.84 8.78L3.0475 8.665C3.06732 8.65325 3.0836 8.63636 3.0946 8.61611C3.1056 8.59587 3.11092 8.57302 3.11 8.55C3.10914 8.52743 3.10217 8.50551 3.08984 8.48659C3.07752 8.46766 3.0603 8.45242 3.04 8.4425L2.5225 8.1925C2.50736 8.18493 2.49479 8.17307 2.48634 8.1584C2.47789 8.14373 2.47395 8.12689 2.475 8.11L2.4875 7.81C2.48754 7.79862 2.49001 7.78737 2.49475 7.77702C2.4995 7.76667 2.5064 7.75746 2.515 7.75C2.53228 7.73494 2.55459 7.72691 2.5775 7.7275L3.2125 7.755C3.22394 7.7547 3.23529 7.75703 3.24569 7.7618C3.25609 7.76656 3.26526 7.77364 3.2725 7.7825L3.825 8.3825C3.86882 8.43221 3.92671 8.46744 3.991 8.48351C4.05529 8.49958 4.12295 8.49574 4.185 8.4725C4.24835 8.45019 4.3036 8.40948 4.34368 8.35559C4.38376 8.30171 4.40685 8.23709 4.41 8.17L4.4225 7.835C4.42284 7.82367 4.42545 7.81252 4.43017 7.80221C4.4349 7.79191 4.44164 7.78265 4.45 7.775L5.26 7.03C5.27865 7.0153 5.30131 7.00659 5.325 7.005L5.9275 7.0325C6.01584 7.03564 6.10192 7.00425 6.1675 6.945C6.20022 6.91538 6.22677 6.8796 6.24565 6.8397C6.26452 6.79981 6.27535 6.75658 6.2775 6.7125L6.2925 6.3575C6.29258 6.34648 6.29509 6.33562 6.29984 6.32568C6.30459 6.31575 6.31148 6.30698 6.32 6.3L7.015 5.66C7.07773 5.60033 7.11529 5.51895 7.12 5.4325L7.155 4.845C7.1625 4.6775 7.0375 4.4175 6.8325 4.4075L6.1375 4.3825C6.09102 4.38146 6.0448 4.38977 6.00159 4.40692C5.95838 4.42408 5.91905 4.44974 5.88595 4.48239C5.85284 4.51503 5.82662 4.55399 5.80885 4.59695C5.79108 4.63991 5.78212 4.68601 5.7825 4.7325C5.78139 4.74216 5.77782 4.75137 5.77213 4.75924C5.76644 4.76712 5.75882 4.77341 5.75 4.7775C5.73309 4.78731 5.71414 4.79309 5.69463 4.79439C5.67512 4.79569 5.65557 4.79248 5.6375 4.785C5.4575 4.7 5.3875 4.395 5.3425 4.195L5.32 4.11C5.31706 4.09699 5.31711 4.08348 5.32014 4.07049C5.32317 4.0575 5.32911 4.04537 5.3375 4.035C5.34608 4.02415 5.35715 4.01553 5.36977 4.00988C5.3824 4.00422 5.3962 4.00169 5.41 4.0025L6.4675 4.0475C6.56697 4.05226 6.66639 4.03722 6.76 4.00325C6.85361 3.96928 6.93953 3.91705 7.01279 3.84961C7.08606 3.78216 7.14519 3.70083 7.18677 3.61035C7.22835 3.51986 7.25154 3.42202 7.255 3.3225L7.285 2.615C7.28839 2.52589 7.25637 2.43906 7.19595 2.37348C7.13552 2.3079 7.05159 2.2689 6.9625 2.265L6.635 2.2525C6.6137 2.25203 6.59336 2.24352 6.57806 2.22868C6.56276 2.21385 6.55363 2.19378 6.5525 2.1725C6.5525 1.5675 6.2425 1.4875 6.11 1.4825C5.90077 1.48252 5.69916 1.56103 5.545 1.7025C5.45669 1.79394 5.33696 1.84844 5.21 1.855C5.16255 1.85352 5.11647 1.83866 5.0771 1.81212C5.03773 1.78557 5.00667 1.74844 4.9875 1.705C4.985 1.7 4.9825 1.6925 4.98 1.6875C5.92177 1.23303 6.95431 0.997969 8 1C8.14 1 8.2775 1.005 8.415 1.015L8.5975 1.495C8.62545 1.56732 8.67447 1.62957 8.73821 1.6737C8.80195 1.71783 8.87748 1.7418 8.955 1.7425H9.9C9.93108 1.74158 9.96139 1.75228 9.985 1.7725L10.6425 2.31C10.6596 2.32419 10.6728 2.34241 10.6811 2.363C10.6894 2.3836 10.6925 2.40593 10.69 2.42799C10.6875 2.45005 10.6796 2.47115 10.6669 2.48939C10.6543 2.50763 10.6373 2.52245 10.6175 2.5325L10.5425 2.575C10.4956 2.59982 10.4544 2.63423 10.4217 2.67602C10.3889 2.7178 10.3654 2.76601 10.3525 2.8175C10.3393 2.86903 10.3369 2.92274 10.3456 2.97524C10.3542 3.02773 10.3736 3.07787 10.4025 3.1225L10.8725 3.8325C10.912 3.89235 10.9674 3.93997 11.0325 3.97L11.5175 4.19C11.5407 4.20096 11.5603 4.2183 11.574 4.23999C11.5878 4.26168 11.595 4.28683 11.595 4.3125V5.1825C11.5952 5.23931 11.6078 5.29538 11.632 5.34678C11.6562 5.39818 11.6913 5.44365 11.735 5.48C11.7497 5.49057 11.7619 5.50417 11.7709 5.51987C11.7798 5.53557 11.7853 5.55301 11.787 5.57102C11.7887 5.58902 11.7864 5.60717 11.7805 5.62425C11.7745 5.64132 11.765 5.65693 11.7525 5.67L11.2775 6.2125C11.1996 6.30218 11.1588 6.41824 11.1637 6.53696C11.1685 6.65567 11.2185 6.76805 11.3035 6.85109C11.3884 6.93414 11.5019 6.98158 11.6207 6.9837C11.7395 6.98582 11.8546 6.94246 11.9425 6.8625L12.995 5.905C13.0479 5.85667 13.0863 5.79467 13.1062 5.72585C13.126 5.65703 13.1265 5.58406 13.1075 5.515C13.102 5.49628 13.0986 5.47699 13.0975 5.4575C13.0978 5.42845 13.1039 5.39975 13.1155 5.37312C13.1271 5.34649 13.1439 5.32247 13.165 5.3025C13.2086 5.26227 13.2657 5.23995 13.325 5.24L13.525 5.2475Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M9.02761 2.2725H8.45761C8.4431 2.27266 8.42868 2.27012 8.41511 2.265L7.89761 2.105C7.87893 2.10003 7.85939 2.09925 7.84037 2.1027C7.82136 2.10616 7.80334 2.11377 7.78761 2.125C7.77144 2.1362 7.75823 2.15115 7.74909 2.16856C7.73995 2.18597 7.73515 2.20534 7.73511 2.225V2.56C7.73583 2.58941 7.73917 2.61869 7.74511 2.6475L8.09011 4.1825C8.10653 4.25648 8.14371 4.32423 8.19729 4.37782C8.25087 4.4314 8.31863 4.46858 8.39261 4.485C8.42068 4.48987 8.44911 4.49238 8.47761 4.4925C8.539 4.49253 8.59954 4.47805 8.65428 4.45024C8.70902 4.42244 8.75641 4.3821 8.79261 4.3325L9.34511 3.5925C9.3962 3.52378 9.4242 3.44063 9.42511 3.355V2.6675C9.42471 2.56243 9.38262 2.46181 9.30809 2.38775C9.23356 2.31369 9.13268 2.27224 9.02761 2.2725Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_5_16315'>\r\n <rect width='16' height='16' fill='white' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'pencil' && (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n d='M10 18.5C10 18.1022 10.158 17.7206 10.4393 17.4393C10.7206 17.158 11.1022 17 11.5 17C11.8978 17 12.2794 17.158 12.5607 17.4393C12.842 17.7206 13 18.1022 13 18.5C13 18.8978 12.842 19.2794 12.5607 19.5607C12.2794 19.842 11.8978 20 11.5 20C11.1022 20 10.7206 19.842 10.4393 19.5607C10.158 19.2794 10 18.8978 10 18.5ZM10 12.5C10 12.1022 10.158 11.7206 10.4393 11.4393C10.7206 11.158 11.1022 11 11.5 11C11.8978 11 12.2794 11.158 12.5607 11.4393C12.842 11.7206 13 12.1022 13 12.5C13 12.8978 12.842 13.2794 12.5607 13.5607C12.2794 13.842 11.8978 14 11.5 14C11.1022 14 10.7206 13.842 10.4393 13.5607C10.158 13.2794 10 12.8978 10 12.5ZM10 6.5C10 6.10218 10.158 5.72064 10.4393 5.43934C10.7206 5.15804 11.1022 5 11.5 5C11.8978 5 12.2794 5.15804 12.5607 5.43934C12.842 5.72064 13 6.10218 13 6.5C13 6.89782 12.842 7.27936 12.5607 7.56066C12.2794 7.84196 11.8978 8 11.5 8C11.1022 8 10.7206 7.84196 10.4393 7.56066C10.158 7.27936 10 6.89782 10 6.5Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n {type === 'ant-right' && (\r\n <svg\r\n width='16'\r\n height='16'\r\n viewBox='0 0 16 16'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='ant-design:left-outlined'>\r\n <path\r\n id='Vector'\r\n d='M4.68748 12.5888L4.68748 13.7966C4.68748 13.9013 4.80779 13.9591 4.88904 13.8951L11.9328 8.3935C11.9926 8.34696 12.0411 8.28736 12.0744 8.21926C12.1077 8.15115 12.125 8.07634 12.125 8.00053C12.125 7.92472 12.1077 7.8499 12.0744 7.7818C12.0411 7.7137 11.9926 7.6541 11.9328 7.60756L4.88904 2.106C4.80623 2.04194 4.68748 2.09975 4.68748 2.20444L4.68748 3.41225C4.68748 3.48881 4.72341 3.56225 4.78279 3.60912L10.4078 7.99975L4.78279 12.3919C4.72341 12.4388 4.68748 12.5122 4.68748 12.5888Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n </svg>\r\n )}\r\n {type === 'ant-left' && (\r\n <svg\r\n width='16'\r\n height='16'\r\n viewBox='0 0 16 16'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n d='M11.3125 3.41119V2.20338C11.3125 2.09869 11.1922 2.04088 11.111 2.10494L4.06721 7.6065C4.00736 7.65304 3.95894 7.71264 3.92563 7.78074C3.89232 7.84885 3.875 7.92366 3.875 7.99947C3.875 8.07528 3.89232 8.1501 3.92563 8.2182C3.95894 8.2863 4.00736 8.3459 4.06721 8.39244L11.111 13.894C11.1938 13.9581 11.3125 13.9003 11.3125 13.7956V12.5878C11.3125 12.5112 11.2766 12.4378 11.2172 12.3909L5.59221 8.00025L11.2172 3.60807C11.2766 3.56119 11.3125 3.48775 11.3125 3.41119Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n {type === 'arrows' && (\r\n <svg\r\n width='12'\r\n height='12'\r\n viewBox='0 0 12 12'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='arrows'>\r\n <path\r\n id='cross'\r\n d='M7.40992 5.99967L10.9999 2.43966C11.1909 2.24606 11.2971 1.98452 11.2952 1.71259C11.2933 1.44067 11.1835 1.18062 10.9899 0.989665C10.7963 0.798709 10.5348 0.692485 10.2628 0.69436C9.99092 0.696236 9.73088 0.806057 9.53992 0.999665L5.99992 4.58967L2.45992 1.06967C2.27256 0.883415 2.0191 0.778873 1.75492 0.778873C1.49073 0.778873 1.23728 0.883415 1.04992 1.06967C0.956191 1.16263 0.881796 1.27323 0.831028 1.39509C0.780259 1.51695 0.754121 1.64765 0.754121 1.77967C0.754121 1.91168 0.780259 2.04238 0.831028 2.16424C0.881796 2.2861 0.956191 2.3967 1.04992 2.48967L4.58992 5.99967L0.999919 9.55967C0.808963 9.75327 0.702739 10.0148 0.704614 10.2867C0.70649 10.5587 0.816311 10.8187 1.00992 11.0097C1.20353 11.2006 1.46506 11.3068 1.73699 11.305C2.00892 11.3031 2.26896 11.1933 2.45992 10.9997L5.99992 7.40967L9.53992 10.9297C9.72728 11.1159 9.98073 11.2205 10.2449 11.2205C10.5091 11.2205 10.7626 11.1159 10.9499 10.9297C11.0436 10.8367 11.118 10.7261 11.1688 10.6042C11.2196 10.4824 11.2457 10.3517 11.2457 10.2197C11.2457 10.0877 11.2196 9.95695 11.1688 9.83509C11.118 9.71323 11.0436 9.60263 10.9499 9.50967L7.40992 5.99967Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n </svg>\r\n )}\r\n {type === 'group-empty' && (\r\n <svg\r\n width='18'\r\n height='18'\r\n viewBox='0 0 18 18'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='Group 628893'>\r\n <rect\r\n id='Rectangle 1175'\r\n x='0.75'\r\n y='0.75'\r\n width='16.5'\r\n height='16.5'\r\n stroke='currentColor'\r\n strokeWidth='1.5'\r\n />\r\n </g>\r\n </svg>\r\n )}\r\n {type === 'group-fill' && (\r\n <svg\r\n width='18'\r\n height='18'\r\n viewBox='0 0 18 18'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='Group 628892'>\r\n <rect\r\n id='Rectangle 1175'\r\n width='18'\r\n height='18'\r\n fill='currentColor'\r\n />\r\n <path\r\n id='Vector'\r\n d='M14.6705 6.61306L8.73563 13.1375C8.29615 13.6208 7.58324 13.6208 7.14334 13.1375L4.07974 9.76908C3.64009 9.28581 3.64009 8.50193 4.07974 8.01856C4.51947 7.53511 5.23232 7.53511 5.67186 8.01838L7.93972 10.5118L13.0781 4.86245C13.5178 4.379 14.2307 4.37937 14.6703 4.86245C15.1099 5.34582 15.1099 6.12943 14.6705 6.61306Z'\r\n fill='white'\r\n />\r\n </g>\r\n </svg>\r\n )}\r\n {type === 'ellip' && (\r\n <svg\r\n width='8'\r\n height='8'\r\n viewBox='0 0 8 8'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <circle cx='4' cy='4' r='4' fill='currentColor' />\r\n </svg>\r\n )}\r\n {type === 'cross' && (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n d='M13.4099 12L16.9999 8.44003C17.1909 8.24642 17.2971 7.98489 17.2952 7.71296C17.2933 7.44103 17.1835 7.18099 16.9899 6.99003C16.7963 6.79908 16.5348 6.69285 16.2628 6.69473C15.9909 6.6966 15.7309 6.80642 15.5399 7.00003L11.9999 10.59L8.45992 7.07003C8.27256 6.88378 8.0191 6.77924 7.75492 6.77924C7.49073 6.77924 7.23728 6.88378 7.04992 7.07003C6.95619 7.16299 6.8818 7.2736 6.83103 7.39546C6.78026 7.51731 6.75412 7.64802 6.75412 7.78003C6.75412 7.91204 6.78026 8.04275 6.83103 8.16461C6.8818 8.28647 6.95619 8.39707 7.04992 8.49003L10.5899 12L6.99992 15.56C6.80896 15.7536 6.70274 16.0152 6.70461 16.2871C6.70649 16.559 6.81631 16.8191 7.00992 17.01C7.20353 17.201 7.46506 17.3072 7.73699 17.3053C8.00892 17.3035 8.26896 17.1936 8.45992 17L11.9999 13.41L15.5399 16.93C15.7273 17.1163 15.9807 17.2208 16.2449 17.2208C16.5091 17.2208 16.7626 17.1163 16.9499 16.93C17.0436 16.8371 17.118 16.7265 17.1688 16.6046C17.2196 16.4827 17.2457 16.352 17.2457 16.22C17.2457 16.088 17.2196 15.9573 17.1688 15.8355C17.118 15.7136 17.0436 15.603 16.9499 15.51L13.4099 12Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n {type === 'like' && (\r\n <svg\r\n width='13'\r\n height='14'\r\n viewBox='0 0 13 14'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n d='M0 5.375V11.875C0 12.3237 0.363751 12.6875 0.8125 12.6875H3.25V4.5625H0.8125C0.363751 4.5625 0 4.92625 0 5.375Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M11.4996 5.37494H9.09937C8.8895 5.37494 8.78437 5.2349 8.74906 5.1746C8.71375 5.11469 8.64234 4.95481 8.7439 4.77152L9.59012 3.24768C9.77579 2.91403 9.79483 2.52167 9.64288 2.17136C9.49094 1.82065 9.19101 1.56635 8.82006 1.47391L8.22338 1.32474C8.07818 1.28824 7.92425 1.33466 7.82309 1.44693L4.5834 5.04605C4.24738 5.42017 4.0625 5.90259 4.0625 6.40485V10.6562C4.0625 11.7762 4.97378 12.6874 6.09375 12.6874L10.1352 12.687C11.0477 12.687 11.8535 12.0725 12.0943 11.193L12.9615 7.21298C12.9869 7.10229 13 6.98882 13 6.87536C13 6.04818 12.3268 5.37494 11.4996 5.37494Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n {type === 'time' && (\r\n <svg\r\n width='13'\r\n height='14'\r\n viewBox='0 0 13 14'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='time 1' clipPath='url(#clip0_108_2203)'>\r\n <g id='Group'>\r\n <path\r\n id='Vector'\r\n d='M6.88086 6.84693L7.34845 7.33387C8.0241 6.77312 8.89126 6.43552 9.83585 6.43552C10.1286 6.43552 10.4139 6.46818 10.6884 6.52965C10.4676 4.55096 8.87164 2.98189 6.88086 2.80273V6.84693Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n id='Vector_2'\r\n d='M6.81208 7.87507L6.11914 7.15344V2.80273C5.24251 2.88162 4.44245 3.22991 3.80258 3.76415L4.43498 4.39655L3.89637 4.93517L3.26397 4.30276C2.72972 4.94263 2.38144 5.74269 2.30255 6.61933H3.19879V7.38104H2.30255C2.38144 8.25768 2.72972 9.05774 3.26397 9.69761L3.87093 9.09065L4.40954 9.62926L3.80258 10.2362C4.42056 10.7522 5.18794 11.0947 6.02944 11.1886C5.96799 10.9141 5.93532 10.6288 5.93532 10.336C5.93534 9.40369 6.26433 8.54683 6.81208 7.87507Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n id='Vector_3'\r\n d='M6.29561 11.972C3.64594 11.8644 1.52344 9.67561 1.52344 7C1.52344 4.25591 3.75591 2.02344 6.5 2.02344C9.17561 2.02344 11.3644 4.14594 11.472 6.79561C12.0471 7.06244 12.5465 7.46526 12.929 7.96263C12.9762 7.64528 13 7.32368 13 7C13 5.26379 12.3239 3.6315 11.0962 2.40379C9.8685 1.17613 8.23621 0.5 6.5 0.5C4.76379 0.5 3.1315 1.17613 1.90379 2.40379C0.676127 3.6315 0 5.26379 0 7C0 8.73621 0.676127 10.3685 1.90379 11.5962C3.1315 12.8239 4.76379 13.5 6.5 13.5C6.82368 13.5 7.14525 13.4761 7.46261 13.429C6.96526 13.0465 6.56244 12.547 6.29561 11.972Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n <g id='Group_2'>\r\n <path\r\n id='Vector_4'\r\n d='M9.83584 7.17188C8.0911 7.17188 6.67166 8.59134 6.67166 10.3361C6.67166 12.0808 8.0911 13.5002 9.83584 13.5002C11.5806 13.5002 13 12.0808 13 10.3361C13 8.59134 11.5806 7.17188 9.83584 7.17188ZM9.83582 12.1232C9.58706 12.1232 9.38541 11.9216 9.38541 11.6728C9.38541 11.4241 9.58706 11.2224 9.83582 11.2224C10.0846 11.2224 10.2862 11.4241 10.2862 11.6728C10.2862 11.9216 10.0846 12.1232 9.83582 12.1232ZM10.1517 10.683H9.51998L9.36205 8.35495H10.3096L10.1517 10.683Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_108_2203'>\r\n <rect\r\n width='13'\r\n height='13'\r\n fill='white'\r\n transform='translate(0 0.5)'\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'hour' && (\r\n <svg\r\n width='13'\r\n height='14'\r\n viewBox='0 0 13 14'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <g id='hour-glass 1' clipPath='url(#clip0_108_2138)'>\r\n <path\r\n id='Vector'\r\n fillRule='evenodd'\r\n clipRule='evenodd'\r\n d='M4.88519 7.88978C5.42946 7.40183 5.42946 6.59817 4.88519 6.11021L4.81082 6.04359C3.41574 4.79348 2.33807 3.82816 2.01322 1.80476C1.89828 1.09129 2.54934 0.5 3.33292 0.5H6.49997H9.66712C10.4507 0.5 11.1017 1.09129 10.9868 1.80476C10.662 3.82816 9.58425 4.79348 8.18919 6.04359L8.11484 6.11021C7.57055 6.59817 7.57055 7.40183 8.11484 7.88978L8.18919 7.95641C9.58425 9.20655 10.662 10.1719 10.9868 12.1953C11.1017 12.9087 10.4507 13.5 9.66712 13.5H6.49997H3.33292C2.54934 13.5 1.89828 12.9087 2.01322 12.1953C2.33807 10.1719 3.41574 9.20655 4.81082 7.95641L4.88519 7.88978ZM5.35808 8.99322L5.35303 8.99732C4.2899 9.88983 3.49889 10.5543 3.39579 12.1976C3.38937 12.2987 3.43602 12.3895 3.51208 12.4496C3.57124 12.4967 3.64864 12.525 3.73315 12.525H6.49997H9.26648C9.36624 12.525 9.45617 12.4855 9.518 12.4224C9.5758 12.3637 9.60931 12.2845 9.60384 12.1976C9.50076 10.5543 8.70973 9.88983 7.64698 8.99732C7.36569 8.76124 7.06551 8.50917 6.75418 8.21881C6.61392 8.08797 6.38574 8.08797 6.24548 8.21881C5.93581 8.50748 5.63736 8.75838 5.35808 8.99322Z'\r\n fill='currentColor'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_108_2138'>\r\n <rect\r\n width='13'\r\n height='13'\r\n fill='white'\r\n transform='translate(0 0.5)'\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'completed' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='14'\r\n height='14'\r\n fill='none'\r\n viewBox='0 0 13 14'\r\n className='top-1'\r\n >\r\n <g clipPath='url(#clip0_5_9473)'>\r\n <path\r\n fill='currentColor'\r\n d='M6.5 13.284A6.283 6.283 0 106.5.716a6.283 6.283 0 000 12.566z'\r\n />\r\n <path\r\n fill='#fff'\r\n d='M5.257 9.615L3.783 8.176a.332.332 0 010-.477l.489-.476a.351.351 0 01.489 0l.877.857 2.46-3.74a.35.35 0 01.476-.101l.582.365a.333.333 0 01.104.467l-2.913 4.43a.715.715 0 01-1.09.114z'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_5_9473'>\r\n <path\r\n width='14'\r\n height='14'\r\n fill='#fff'\r\n d='M0 0H13V13H0z'\r\n transform='translate(0 .5)'\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'expired' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='13'\r\n height='14'\r\n fill='none'\r\n viewBox='0 0 13 14'\r\n className={`${className}`}\r\n >\r\n <g fill='currentColor' clipPath='url(#clip0_5_9451)'>\r\n <path d='M6.88 6.847l.468.487a3.883 3.883 0 013.34-.804 4.222 4.222 0 00-3.807-3.727v4.044zM6.812 7.875l-.693-.722v-4.35a4.196 4.196 0 00-2.316.961l.632.633-.539.538-.632-.632a4.196 4.196 0 00-.962 2.316H3.2v.762h-.897c.08.877.428 1.677.962 2.317l.607-.607.538.538-.606.607a4.197 4.197 0 002.226.953 3.9 3.9 0 01.783-3.314z' />\r\n <path d='M6.296 11.972A4.982 4.982 0 011.523 7 4.982 4.982 0 016.5 2.023a4.982 4.982 0 014.972 4.773c.575.266 1.075.67 1.457 1.167.047-.318.071-.64.071-.963a6.457 6.457 0 00-1.904-4.596A6.458 6.458 0 006.5.5a6.458 6.458 0 00-4.596 1.904A6.458 6.458 0 000 7c0 1.736.676 3.368 1.904 4.596A6.457 6.457 0 006.5 13.5c.324 0 .645-.024.963-.071a3.925 3.925 0 01-1.167-1.457z' />\r\n <path d='M9.836 7.172a3.168 3.168 0 00-3.164 3.164A3.168 3.168 0 009.836 13.5 3.168 3.168 0 0013 10.336a3.168 3.168 0 00-3.164-3.164zm0 4.951a.45.45 0 110-.9.45.45 0 010 .9zm.316-1.44H9.52l-.158-2.328h.947l-.157 2.328z' />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_5_9451'>\r\n <path fill='#fff' d='M0 0H13V13H0z' transform='translate(0 .5)' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'search' && (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n fillRule='evenodd'\r\n clipRule='evenodd'\r\n d='M16.325 14.8992L21.705 20.2792C21.8941 20.4685 22.0003 20.7251 22.0002 20.9926C22.0001 21.2601 21.8937 21.5166 21.7045 21.7057C21.5153 21.8948 21.2587 22.001 20.9912 22.0009C20.7236 22.0008 20.4671 21.8945 20.278 21.7052L14.898 16.3252C13.2897 17.5709 11.2673 18.1571 9.24214 17.9646C7.21699 17.7721 5.34124 16.8153 3.99649 15.2888C2.65174 13.7624 1.939 11.781 2.00326 9.74778C2.06753 7.71451 2.90396 5.78209 4.34242 4.34364C5.78087 2.90518 7.71329 2.06875 9.74656 2.00448C11.7798 1.94022 13.7612 2.65296 15.2876 3.99771C16.814 5.34246 17.7708 7.21821 17.9634 9.24336C18.1559 11.2685 17.5697 13.2909 16.324 14.8992H16.325ZM10 16.0002C11.5913 16.0002 13.1174 15.3681 14.2427 14.2429C15.3679 13.1177 16 11.5915 16 10.0002C16 8.40893 15.3679 6.88281 14.2427 5.75759C13.1174 4.63237 11.5913 4.00023 10 4.00023C8.40871 4.00023 6.88259 4.63237 5.75737 5.75759C4.63215 6.88281 4.00001 8.40893 4.00001 10.0002C4.00001 11.5915 4.63215 13.1177 5.75737 14.2429C6.88259 15.3681 8.40871 16.0002 10 16.0002Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n {type === 'play-circle-sharp' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='100'\r\n height='100'\r\n fill='none'\r\n viewBox='0 0 100 100'\r\n className={`${className}`}\r\n >\r\n <g>\r\n <path\r\n fill='currentColor'\r\n d='M50 9.375C27.6 9.375 9.375 27.6 9.375 50S27.6 90.625 50 90.625 90.625 72.4 90.625 50 72.4 9.375 50 9.375zM39.062 67.188V32.812L67.189 50 39.061 67.188z'\r\n />\r\n </g>\r\n </svg>\r\n )}\r\n {type === 'learning-resource' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='24'\r\n height='24'\r\n fill='none'\r\n viewBox='0 0 24 24'\r\n className={`${className}`}\r\n >\r\n <path\r\n fill='currentColor'\r\n d='M21.938 2.25H2.063a.563.563 0 00-.563.563v2.624c0 .311.252.563.563.563h19.875c.31 0 .562-.252.562-.563V2.813a.562.562 0 00-.563-.562zM3 7.5v13.125a1.125 1.125 0 001.125 1.125h15.75A1.125 1.125 0 0021 20.625V7.5H3zm9 10.81l-4.063-4.06L9 13.187l2.25 2.252V9.75h1.5v5.69l2.253-2.254 1.06 1.061L12 18.311z'\r\n />\r\n </svg>\r\n )}\r\n {type === 'entrance-test' && (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`${className}`}\r\n >\r\n <path\r\n d='M7.5 11.25H14.408L11.408 8.25L12.4688 7.18922L17.2795 12L12.4688 16.8108L11.408 15.75L14.408 12.75H7.5V19.6875C7.5 19.8367 7.55926 19.9798 7.66475 20.0852C7.77024 20.1907 7.91332 20.25 8.0625 20.25H21.9375C22.0867 20.25 22.2298 20.1907 22.3352 20.0852C22.4407 19.9798 22.5 19.8367 22.5 19.6875V4.3125C22.5 4.16332 22.4407 4.02024 22.3352 3.91475C22.2298 3.80926 22.0867 3.75 21.9375 3.75H8.0625C7.91332 3.75 7.77024 3.80926 7.66475 3.91475C7.55926 4.02024 7.5 4.16332 7.5 4.3125V11.25Z'\r\n fill='currentColor'\r\n className='group-resource'\r\n />\r\n <path\r\n d='M7.5 11.25H1.5V12.75H7.5V11.25Z'\r\n fill='currentColor'\r\n className='group-resource'\r\n />\r\n </svg>\r\n )}\r\n {type === 'circle' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='16'\r\n height='16'\r\n viewBox='0 0 16 16'\r\n fill='none'\r\n className={`${className}`}\r\n >\r\n <circle cx='8' cy='8' r='8' fill='currentColor' />\r\n </svg>\r\n )}\r\n\r\n {type === 'arrow-bottom' && (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='24'\r\n height='24'\r\n fill='none'\r\n viewBox='0 0 24 24'\r\n className={`${className}`}\r\n >\r\n <path\r\n stroke='currentColor'\r\n strokeLinecap='square'\r\n strokeLinejoin='round'\r\n strokeWidth='1.5'\r\n d='M19 9.391l-7 7.305L5 9.39'\r\n />\r\n </svg>\r\n )}\r\n {type === 'volume' && (\r\n <svg\r\n className={className}\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='16'\r\n height='16'\r\n fill='none'\r\n viewBox='0 0 16 16'\r\n >\r\n <g fill='#fff' clipPath='url(#clip0_246_5900)'>\r\n <path d='M9.298.586a.532.532 0 00-.564.064L3.546 4.8h-2.48C.48 4.8 0 5.28 0 5.867v4.267c0 .588.479 1.066 1.067 1.066h2.479l5.187 4.15a.539.539 0 00.565.064.532.532 0 00.302-.48V1.067a.535.535 0 00-.302-.481zM12.3 4.229a.535.535 0 00-.75.759A4.197 4.197 0 0112.8 8a4.197 4.197 0 01-1.25 3.013.534.534 0 10.75.757A5.246 5.246 0 0013.867 8 5.254 5.254 0 0012.3 4.23z' />\r\n <path d='M13.805 2.726a.534.534 0 00-.752.757A6.315 6.315 0 0114.933 8c0 1.711-.668 3.314-1.88 4.517a.536.536 0 00-.004.755.536.536 0 00.756.002A7.367 7.367 0 0016 8c0-1.998-.779-3.87-2.195-5.274z' />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_246_5900'>\r\n <path fill='#fff' d='M0 0H16V16H0z' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )}\r\n {type === 'fullscreen' && (\r\n <svg\r\n className={className}\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='16'\r\n height='16'\r\n viewBox='0 0 16 16'\r\n fill='none'\r\n >\r\n <path\r\n d='M5.45457 16H0.363649C0.162648 16 0 15.8374 0 15.6364V10.5455C0 10.3445 0.162648 10.1818 0.363649 10.1818H1.09091C1.29191 10.1818 1.45456 10.3445 1.45456 10.5455V14.5454H5.45457C5.65557 14.5454 5.81822 14.7081 5.81822 14.9091V15.6364C5.81822 15.8374 5.65557 16 5.45457 16Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M15.6364 16H10.5455C10.3445 16 10.1818 15.8374 10.1818 15.6364V14.9091C10.1818 14.7081 10.3445 14.5454 10.5455 14.5454H14.5454V10.5455C14.5454 10.3445 14.7081 10.1818 14.9091 10.1818H15.6364C15.8374 10.1818 16 10.3445 16 10.5455V15.6364C16 15.8374 15.8374 16 15.6364 16Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M15.6364 5.81819H14.9091C14.7081 5.81819 14.5455 5.65554 14.5455 5.45454V1.45456H10.5455C10.3445 1.45456 10.1818 1.29191 10.1818 1.09091V0.363648C10.1818 0.162648 10.3445 0 10.5455 0H15.6364C15.8374 0 16 0.162648 16 0.363648V5.45457C16 5.65557 15.8374 5.81819 15.6364 5.81819Z'\r\n fill='currentColor'\r\n />\r\n <path\r\n d='M5.45457 1.45455H1.45456V5.45457C1.45456 5.65557 1.29191 5.81822 1.09091 5.81822H0.363649C0.162648 5.81819 0 5.65557 0 5.45457V0.363682C0 0.162682 0.162648 3.37299e-05 0.363649 3.37299e-05H5.45457C5.65557 3.37299e-05 5.81822 0.162682 5.81822 0.363682V1.09094C5.81822 1.29191 5.65557 1.45455 5.45457 1.45455Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\nexport const TimeIcon = () => {\r\n return (\r\n <svg\r\n width='164'\r\n height='164'\r\n viewBox='0 0 164 164'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <rect width='164' height='164' rx='82' fill='#FFFAF0' />\r\n <path\r\n d='M84.9184 53.0586H79.0938C78.5609 53.0586 78.125 53.4945 78.125 54.0274V87.3645C78.125 87.6793 78.2703 87.9699 78.5246 88.1516L98.5414 102.768C98.9773 103.082 99.5828 102.998 99.8977 102.562L103.361 97.8391C103.688 97.391 103.591 96.7856 103.155 96.4828L85.8871 83.9981V54.0274C85.8871 53.4945 85.4512 53.0586 84.9184 53.0586ZM111.535 62.1649L130.522 66.8027C131.128 66.9481 131.721 66.4879 131.721 65.8703L131.818 46.3137C131.818 45.5024 130.886 45.0422 130.256 45.5508L111.171 60.4574C111.027 60.569 110.917 60.719 110.855 60.8903C110.792 61.0615 110.779 61.2469 110.817 61.4253C110.855 61.6036 110.942 61.7677 111.069 61.8985C111.196 62.0293 111.358 62.1217 111.535 62.1649ZM131.842 98.6262L124.976 96.2649C124.737 96.1828 124.475 96.1977 124.246 96.3063C124.018 96.4149 123.841 96.6087 123.753 96.8461C123.523 97.4637 123.281 98.0692 123.027 98.6746C120.871 103.773 117.783 108.362 113.836 112.298C109.932 116.214 105.305 119.335 100.213 121.489C94.9368 123.719 89.2658 124.864 83.5379 124.855C77.7496 124.855 72.143 123.729 66.8633 121.489C61.7706 119.335 57.1441 116.214 53.2402 112.298C49.3047 108.362 46.2168 103.773 44.0492 98.6746C41.831 93.3959 40.6945 87.7258 40.707 82C40.707 76.2117 41.8332 70.593 44.0734 65.3133C46.2289 60.2153 49.3168 55.6258 53.2645 51.6903C57.1683 47.7743 61.7948 44.653 66.8875 42.4992C72.143 40.259 77.7617 39.1328 83.55 39.1328C89.3383 39.1328 94.9449 40.259 100.225 42.4992C105.317 44.653 109.944 47.7743 113.848 51.6903C115.083 52.9375 116.245 54.2332 117.311 55.6016L124.552 49.9344C115.022 37.7524 100.188 29.9176 83.5258 29.9297C54.5117 29.9418 31.2133 53.5067 31.5039 82.5328C31.7945 111.05 54.984 134.07 83.55 134.07C106.013 134.07 125.146 119.83 132.436 99.8856C132.617 99.377 132.351 98.8078 131.842 98.6262Z'\r\n fill='#FFB800'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport const CollapseArrowIcon = React.memo(\r\n ({ selected, className }: { selected?: boolean; className?: string }) => {\r\n return (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={`transition duration-300 ${className} ${\r\n selected ? '-rotate-180' : ''\r\n }`}\r\n >\r\n <path\r\n d='M11.9999 17.1999C11.8683 17.2007 11.7379 17.1754 11.616 17.1257C11.4942 17.0759 11.3834 17.0026 11.2899 16.9099L5.28994 10.9099C5.1967 10.8167 5.12274 10.706 5.07228 10.5841C5.02182 10.4623 4.99585 10.3318 4.99585 10.1999C4.99585 9.93359 5.10164 9.6782 5.28994 9.48989C5.47825 9.30159 5.73364 9.1958 5.99994 9.1958C6.26624 9.1958 6.52164 9.30159 6.70994 9.48989L11.9999 14.7799L17.2899 9.48989C17.3832 9.39665 17.4939 9.32269 17.6157 9.27223C17.7375 9.22177 17.8681 9.1958 17.9999 9.1958C18.1318 9.1958 18.2624 9.22177 18.3842 9.27223C18.506 9.32269 18.6167 9.39665 18.7099 9.48989C18.8032 9.58313 18.8771 9.69382 18.9276 9.81564C18.9781 9.93747 19.004 10.068 19.004 10.1999C19.004 10.3318 18.9781 10.4623 18.9276 10.5841C18.8771 10.706 18.8032 10.8167 18.7099 10.9099L12.7099 16.9099C12.6165 17.0026 12.5057 17.0759 12.3838 17.1257C12.262 17.1754 12.1315 17.2007 11.9999 17.1999Z'\r\n fill='currentColor'\r\n />\r\n </svg>\r\n )\r\n }\r\n)\r\nexport const LoadingIcon = ({\r\n loading,\r\n loadingPercentage,\r\n stroke\r\n}: {\r\n loading?: boolean\r\n loadingPercentage?: number\r\n stroke?: '#ffffff' | '#404041'\r\n}) => {\r\n return (\r\n <svg\r\n className='loader-video absolute left-1/2 top-1/2 block -translate-x-1/2 -translate-y-1/2'\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='85px'\r\n height='85px'\r\n viewBox='0 0 100 100'\r\n preserveAspectRatio='xMidYMid'\r\n >\r\n <circle\r\n cx='50'\r\n cy='50'\r\n fill='none'\r\n stroke={stroke}\r\n strokeWidth='5'\r\n r='47'\r\n strokeDasharray='164.93361431346415 56.97787143782138'\r\n >\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n repeatCount='indefinite'\r\n dur='0.5s'\r\n values='0 50 50;360 50 50'\r\n keyTimes='0;1'\r\n />\r\n </circle>\r\n {loading && (\r\n <text\r\n x='50%'\r\n y='50%'\r\n textAnchor='middle'\r\n fill='#ffffff'\r\n fontSize='14'\r\n dy='.3em'\r\n >\r\n {loadingPercentage}%\r\n </text>\r\n )}\r\n </svg>\r\n )\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { useEffect, useState } from 'react'\r\nimport { IRequirement, QUESTION_TYPES } from '../../constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../../utils'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport clsx from 'clsx'\r\n\r\ninterface IProps {\r\n activeQuestion: {\r\n solution?: string\r\n confirmed?: boolean\r\n qType?: string\r\n }\r\n explanationTitle?: string\r\n showRequirement?: IRequirement | null\r\n}\r\n\r\nconst ExplanationV2 = ({\r\n activeQuestion,\r\n explanationTitle,\r\n showRequirement\r\n}: IProps) => {\r\n const [solution, setSolution] = useState<string>('')\r\n\r\n useEffect(() => {\r\n if (\r\n showRequirement?.explanation &&\r\n showRequirement?.explanation?.trim() !== ''\r\n ) {\r\n setSolution(showRequirement.explanation)\r\n } else {\r\n setSolution(activeQuestion?.solution || '')\r\n }\r\n }, [activeQuestion?.solution, showRequirement?.explanation])\r\n\r\n return (\r\n <React.Fragment>\r\n {(solution || solution?.trim()) && (\r\n <div\r\n className={clsx('explanation', {\r\n 'explanation--essay': activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n })}\r\n key={showRequirement?.id || activeQuestion.solution}\r\n >\r\n <div className='text-lg font-semibold text-bw-2 break-all'>\r\n {explanationTitle}:\r\n </div>\r\n <EditorReader\r\n id={showRequirement?.id || activeQuestion.solution}\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n className='editor-wrap mt-4 text-gray-800 sapp-questions-v2 white-space-nowrap'\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default ExplanationV2\r\n","/* eslint-disable no-unused-vars */\r\nimport React, {\r\n Dispatch,\r\n RefObject,\r\n SetStateAction,\r\n useState,\r\n useRef\r\n} from 'react'\r\nimport {\r\n ICommment,\r\n IFile,\r\n IFileAnswer,\r\n IRequirement,\r\n GRADING_METHOD,\r\n IRequirementAnswer,\r\n QUESTION_TYPES,\r\n SOLUTION_TITLE,\r\n EXPLANATION_TITLE\r\n} from '../../constant'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport EssayQuestionPreview from '../questionType/ConstructedQuestion'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../../utils'\r\nimport FileDisplay from '../FileDisplay'\r\nimport { CollapseArrowIcon } from '@components/Icon'\r\nimport clsx from 'clsx'\r\nimport CommentList from '@components/comment-list'\r\nimport { useExplainationContext } from 'contexts'\r\nimport ExplanationV2 from '@components/explanationV2'\r\n\r\nexport interface IGradeQuestion {\r\n id: string\r\n question_grade: number\r\n answer_gradings: AnswerGrading[]\r\n attempt_grading: AttemptGrading\r\n}\r\n\r\nexport interface AnswerGrading {\r\n id: string\r\n requirement_id: string\r\n answer_grade: number\r\n grading_file: any\r\n details: Detail[]\r\n file_grade: number\r\n}\r\n\r\nexport interface Detail {\r\n begin: number\r\n end: number\r\n grade: number\r\n comment: string\r\n status: string\r\n}\r\n\r\nexport interface AttemptGrading {\r\n id: string\r\n created_at: string\r\n}\r\ninterface IActiveQuestion {\r\n question_topic: {\r\n files: IFile[]\r\n exhibits: {\r\n id: string\r\n description: string\r\n name: string\r\n files: IFile[]\r\n }[]\r\n }\r\n requirements: IRequirement[]\r\n exhibits: {\r\n id: string\r\n description: string\r\n name: string\r\n files: IFile[]\r\n }[]\r\n short_answer: string | any\r\n answer_file: IFileAnswer\r\n question_content: string\r\n requirement_answers?: Array<any>\r\n grading_method?: string\r\n grading_question: IGradeQuestion\r\n qType: QUESTION_TYPES\r\n solution?: string\r\n}\r\ninterface IProps {\r\n activeQuestion: IActiveQuestion\r\n handleShowListRequirement: (e: any) => void\r\n showRequirement?: IRequirement | null\r\n showListRequirement: boolean\r\n handleShowRequirement: ({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation,\r\n answer_template_files\r\n }: {\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n explanation: string\r\n answer_template_files?: string[]\r\n }) => void\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n handleShowExhibit: (\r\n data: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n e: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n controlAnswer: any\r\n listRequirementRef: RefObject<HTMLDivElement>\r\n comment?: ICommment\r\n commentRef?: RefObject<HTMLDivElement>\r\n editorRef?: RefObject<HTMLDivElement>\r\n bodyRef?: RefObject<HTMLDivElement>\r\n submitted?: string\r\n}\r\n\r\nconst EssayRender = ({\r\n activeQuestion,\r\n showRequirement,\r\n handleShowRequirement,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n comment,\r\n commentRef,\r\n editorRef,\r\n bodyRef\r\n}: IProps) => {\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n const [showInfo, setShowInfo] = useState(true)\r\n const exhibits = [\r\n ...(activeQuestion?.exhibits && activeQuestion?.exhibits.length > 0\r\n ? activeQuestion?.exhibits\r\n : []),\r\n ...(activeQuestion?.question_topic?.exhibits &&\r\n activeQuestion?.question_topic?.exhibits?.length > 0\r\n ? activeQuestion?.question_topic?.exhibits\r\n : [])\r\n ]\r\n const editorRefs = useRef<RefObject<HTMLDivElement>[]>([])\r\n // Đảm bảo tạo đủ ref trước khi render\r\n if (\r\n activeQuestion.requirements &&\r\n editorRefs.current.length !== activeQuestion.requirements.length\r\n ) {\r\n editorRefs.current = activeQuestion.requirements.map(() =>\r\n React.createRef<HTMLDivElement>()\r\n )\r\n }\r\n\r\n return (\r\n <div className='flex items-start justify-between'>\r\n <div\r\n className={clsx(\r\n 'flex flex-col gap-4 essay-wrapper quiz-component__content--horizontal rounded-xl',\r\n {\r\n 'mx-auto': !activeQuestion?.grading_question\r\n }\r\n )}\r\n >\r\n {activeQuestion.requirements?.length > 0 ? (\r\n activeQuestion.requirements.map(\r\n (item: IRequirement, index: number) => (\r\n <RequirementItem\r\n key={item.id}\r\n editorRef={editorRefs.current[index]}\r\n {...{\r\n item,\r\n index,\r\n comment,\r\n activeQuestion,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n bodyRef,\r\n handleShowRequirement\r\n }}\r\n />\r\n )\r\n )\r\n ) : (\r\n <div className='bg-white rounded-xl p-4 flex flex-col gap-6 requirement-item essay-shadow'>\r\n {/* label */}\r\n <div className='flex items-center justify-between w-full'>\r\n <div className='flex items-center requirement-label'>\r\n {/* <p className='text-lg font-semibold requirement-title'>Requirement {index + 1}</p> */}\r\n <div className='flex gap-2 items-center text-sm text-white bg-success px-2 py-1 rounded-lg requirement-grade'>\r\n <p className='font-semibold'>Grade:</p>\r\n <p>\r\n {comment?.answer_grade\r\n ? comment?.answer_grade\r\n : activeQuestion?.grading_method === GRADING_METHOD.MANUAL\r\n ? '--'\r\n : 0}\r\n </p>{' '}\r\n </div>\r\n </div>\r\n {(!!showRequirement?.description ||\r\n !!showRequirement?.files?.length ||\r\n !!exhibits?.length) && (\r\n <div\r\n onClick={() => setShowInfo(!showInfo)}\r\n className='cursor-pointer requirement-collapse'\r\n >\r\n <div className='collapse-arrow'>\r\n <CollapseArrowIcon selected={showInfo} />\r\n </div>\r\n <div className='collapse-text'>\r\n {showInfo ? 'Hide Question' : 'Show Question'}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {/* content */}\r\n <div\r\n className={clsx('flex flex-col question-content', {\r\n '!hidden':\r\n !showInfo ||\r\n (!showRequirement?.description &&\r\n !showRequirement?.files?.length &&\r\n !exhibits?.length)\r\n })}\r\n >\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden:\r\n !showInfo ||\r\n (!showRequirement?.description &&\r\n !showRequirement?.files?.length)\r\n })}\r\n >\r\n {/* <div className='font-medium'>{`${item?.name}`}</div> */}\r\n {showRequirement?.description && (\r\n <EditorReader\r\n className='editor-wrap font-medium'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n showRequirement?.description || ''\r\n )}\r\n />\r\n )}\r\n {showRequirement?.files?.length > 0 &&\r\n showRequirement?.files.map((e: any, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n\r\n {/* exhibits */}\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || !exhibits?.length\r\n })}\r\n >\r\n {exhibits?.length > 0 && (\r\n <div className='flex flex-col gap-4'>\r\n {exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: any\r\n name: string\r\n files: any\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div key={i}>\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit mb-3 font-semibold'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n {e.name}\r\n </div>\r\n <div className='flex-auto overflow-auto'>\r\n {e?.description && (\r\n <EditorReader\r\n className='editor-wrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n e?.description || ''\r\n )}\r\n />\r\n )}\r\n {e?.files &&\r\n e?.files?.length > 0 &&\r\n e?.files.map((f: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={f?.resource?.url}\r\n fileName={f?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {activeQuestion?.question_content && (\r\n <EditorReader\r\n className='editor-wrap mt-1.5 sapp-questions-v2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n activeQuestion?.question_content || ''\r\n )}\r\n />\r\n )}\r\n <EssayQuestionPreview\r\n reqIndex={showRequirement?.index ? showRequirement?.index - 1 : 0}\r\n question_data={activeQuestion}\r\n control={controlAnswer}\r\n defaultValue={\r\n activeQuestion?.requirement_answers &&\r\n activeQuestion?.requirement_answers.length > 0\r\n ? showRequirement?.short_answer\r\n : activeQuestion?.short_answer\r\n }\r\n setOpenPdf={setOpenPdf}\r\n answer_file={\r\n // eslint-disable-next-line camelcase\r\n showRequirement?.name\r\n ? showRequirement?.answer_file\r\n : activeQuestion.answer_file\r\n }\r\n name=''\r\n listGrades={comment}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n grading_file={comment?.grading_file}\r\n />\r\n {!activeQuestion?.grading_question &&\r\n (showRequirement?.explanation || activeQuestion?.solution) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n <div\r\n className={clsx('requirement-comment-container', {\r\n hidden: !activeQuestion.requirements?.length\r\n })}\r\n >\r\n {activeQuestion.requirements?.length > 0\r\n ? activeQuestion.requirements.map(\r\n (item: IRequirement, index: number) => {\r\n const grading =\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (answerGrade: AnswerGrading) =>\r\n answerGrade?.requirement_id === item.id\r\n )\r\n return (\r\n <div key={index}>\r\n {grading?.details && grading?.details?.length > 0 && (\r\n <CommentList\r\n className='relative min-h-full'\r\n commentRef={commentRef}\r\n data={grading}\r\n editorRef={editorRefs.current[index]}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n )\r\n : null}\r\n </div>\r\n\r\n {/* <div className='essay-render'>\r\n <div className='header-container justify-between bg-gray-3 p-4'>\r\n <div>\r\n {activeQuestion?.requirements?.length > 0 && (\r\n <div className='flex items-center select-none requirement'>\r\n <div className='relative'>\r\n <div\r\n className='flex items-center hover:text-primary group cursor-pointer'\r\n onClick={(e) => handleShowListRequirement(e)}\r\n >\r\n <div className='font-semibold'>\r\n Requirement {showRequirement?.index}/\r\n {activeQuestion.requirements?.length || 0}\r\n </div>\r\n <div>\r\n <SappIcon\r\n className='ml-2 -mt-1 group-hover:fill-primary fill-bw-1'\r\n icon='arrow_down'\r\n />\r\n </div>\r\n </div>\r\n {showListRequirement && (\r\n <div\r\n ref={listRequirementRef}\r\n className='absolute z-50 text-over left-0 bottom-0 bg-white w-max max-w-md translate-y-full shadow-md py-1'\r\n >\r\n {activeQuestion.requirements?.map(\r\n (e: IRequirement, i: number) => {\r\n return (\r\n <div\r\n onClick={() => {\r\n handleShowRequirement({\r\n description: e?.description || '',\r\n index: i + 1,\r\n name: e?.name || '',\r\n files: e.files,\r\n explanation: e?.explanation || ''\r\n })\r\n }}\r\n className='font-semibold hover:text-primary truncate py-1.5 px-3'\r\n key={e.id}\r\n >{`Requirement ${i + 1}`}</div>\r\n )\r\n }\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n <div className='flex gap-2'>\r\n <div\r\n className={`${\r\n submitted ? 'submitted-state' : 'unsubmitted-state'\r\n } font-semibold`}\r\n >\r\n {submitted ? 'Submitted' : 'Unsubmitted'}\r\n </div>\r\n <div className='text-gray'> | </div>\r\n <div className='flex gap-2'>\r\n Grade:{' '}\r\n <p className='font-semibold'>\r\n {comment?.answer_grade\r\n ? comment?.answer_grade\r\n : activeQuestion?.grading_method === GRADING_METHOD.MANUAL\r\n ? '--'\r\n : 0}\r\n </p>{' '}\r\n </div>\r\n </div>\r\n </div>\r\n <div className='p-6'>\r\n <div className='sapp-questions'>\r\n {activeQuestion?.requirements?.length > 0 && (\r\n <div className='mt-4'>\r\n <div className='font-semibold'>{`${showRequirement?.name}`}</div>\r\n {showRequirement?.description && (\r\n <EditorReader\r\n className='editor-wrap mt-1.5'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n showRequirement?.description || ''\r\n )}\r\n />\r\n )}\r\n {showRequirement?.files?.length > 0 &&\r\n showRequirement?.files.map((e: any, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n )}\r\n {activeQuestion?.exhibits &&\r\n activeQuestion?.exhibits?.length > 0 && (\r\n <React.Fragment>\r\n <div className='border border-b-gray-2 my-6' />\r\n <div className='flex items-center mb-4'>\r\n <div className='font-semibold'>\r\n Exhibits ({activeQuestion.exhibits?.length || 0})\r\n </div>\r\n <div className='ml-4'>\r\n <span className='text-state-error'>* </span>\r\n <span className='text-gray-1'>Click to view</span>\r\n </div>\r\n </div>\r\n <div className='flex flex-col gap-2'>\r\n {activeQuestion.exhibits?.length > 0 &&\r\n activeQuestion.exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: any\r\n name: string\r\n files: any\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n Exhibit {i + 1}: {e.name}\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n <EssayQuestionPreview\r\n index={showRequirement?.index ? showRequirement?.index - 1 : 0}\r\n question_data={activeQuestion}\r\n control={controlAnswer}\r\n defaultValue={\r\n activeQuestion?.requirement_answers &&\r\n activeQuestion?.requirement_answers.length > 0\r\n ? showRequirement?.short_answer\r\n : activeQuestion?.short_answer\r\n }\r\n setOpenPdf={setOpenPdf}\r\n answer_file={\r\n // eslint-disable-next-line camelcase\r\n showRequirement?.name\r\n ? showRequirement?.answer_file\r\n : activeQuestion.answer_file\r\n }\r\n name=''\r\n listGrades={comment}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n grading_file={comment?.grading_file}\r\n />\r\n </div>\r\n </div> */}\r\n </div>\r\n )\r\n}\r\n\r\nconst RequirementItem = ({\r\n item,\r\n index,\r\n activeQuestion,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n bodyRef,\r\n editorRef,\r\n handleShowRequirement\r\n}: {\r\n item: IRequirement\r\n index: number\r\n activeQuestion: IActiveQuestion\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n handleShowExhibit: (\r\n data: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n e: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n controlAnswer: any\r\n bodyRef?: RefObject<HTMLDivElement>\r\n editorRef?: RefObject<HTMLDivElement>\r\n handleShowRequirement: ({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation,\r\n answer_template_files\r\n }: {\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n explanation: string\r\n answer_template_files?: string[]\r\n }) => void\r\n}) => {\r\n const commentRef = useRef<HTMLDivElement>(null)\r\n // const editorRef = useRef<HTMLDivElement>(null)\r\n const { requirementIndex } = useExplainationContext()\r\n // const bodyRef = useRef<HTMLDivElement>(null)\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n const [showInfo, setShowInfo] = useState(true)\r\n const [openComment, setOpenComment] = useState(false)\r\n const exhibits = [\r\n ...(activeQuestion?.exhibits && activeQuestion?.exhibits.length > 0\r\n ? activeQuestion?.exhibits\r\n : []),\r\n ...(activeQuestion?.question_topic?.exhibits &&\r\n activeQuestion?.question_topic?.exhibits?.length > 0\r\n ? activeQuestion?.question_topic?.exhibits\r\n : [])\r\n ]\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id === activeQuestion?.requirements?.[index].id\r\n )\r\n const grading = activeQuestion?.grading_question?.answer_gradings?.find(\r\n (answerGrade: AnswerGrading) => answerGrade?.requirement_id === item.id\r\n )\r\n\r\n return (\r\n <div className='bg-white flex flex-col rounded-xl requirement-item essay-shadow'>\r\n {/* label */}\r\n <div className='flex items-center justify-between w-full'>\r\n <div className='flex items-center requirement-label'>\r\n <p className='font-semibold requirement-title'>\r\n Requirement {index + 1}\r\n </p>\r\n <div className='flex gap-2 items-center text-white bg-success rounded-lg requirement-grade'>\r\n <p className='font-semibold'>Grade:</p>\r\n <p>\r\n {grading?.answer_grade\r\n ? grading?.answer_grade\r\n : activeQuestion?.grading_method === GRADING_METHOD.MANUAL\r\n ? '--'\r\n : 0}\r\n </p>{' '}\r\n </div>\r\n </div>\r\n {(!!item?.description ||\r\n !!item?.files?.length ||\r\n !!exhibits?.length) && (\r\n <div\r\n onClick={() => setShowInfo(!showInfo)}\r\n className='cursor-pointer requirement-collapse'\r\n >\r\n <div className='collapse-arrow'>\r\n <CollapseArrowIcon selected={showInfo} />\r\n </div>\r\n <div className='collapse-text'>\r\n {showInfo ? 'Hide Question' : 'Show Question'}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {/* content */}\r\n <div\r\n className={clsx('flex flex-col question-content', {\r\n '!hidden':\r\n !showInfo ||\r\n (!item?.description && !item?.files?.length && !exhibits?.length)\r\n })}\r\n >\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || (!item?.description && !item?.files?.length)\r\n })}\r\n >\r\n {/* <div className='font-medium'>{`${item?.name}`}</div> */}\r\n {item?.description && (\r\n <EditorReader\r\n className='editor-wrap font-medium'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n item?.description || ''\r\n )}\r\n />\r\n )}\r\n {item?.files?.length > 0 &&\r\n item?.files.map((e: any, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n\r\n {/* exhibits */}\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || !exhibits?.length\r\n })}\r\n >\r\n {exhibits && exhibits?.length > 0 && (\r\n <div className='flex flex-col gap-4'>\r\n {exhibits?.length > 0 &&\r\n exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: any\r\n name: string\r\n files: any\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div key={i}>\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit mb-3 font-semibold'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n {e.name}\r\n </div>\r\n <div className='flex-auto overflow-auto'>\r\n {e?.description && (\r\n <EditorReader\r\n className='editor-wrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n e?.description || ''\r\n )}\r\n />\r\n )}\r\n {e?.files &&\r\n e?.files?.length > 0 &&\r\n e?.files.map((f: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={f?.resource?.url}\r\n fileName={f?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* answers */}\r\n <EssayQuestionPreview\r\n reqIndex={index}\r\n question_data={activeQuestion}\r\n control={controlAnswer}\r\n defaultValue={answer?.short_answer}\r\n setOpenPdf={setOpenPdf}\r\n answer_file={\r\n // eslint-disable-next-line camelcase\r\n item?.name ? item?.answer_file : activeQuestion.answer_file\r\n }\r\n name={`${index}_answer`}\r\n listGrades={grading}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n grading_file={grading?.grading_file}\r\n handleShowRequirement={() => {\r\n setOpenComment(true)\r\n handleShowRequirement({\r\n description: item?.description || '',\r\n index: index + 1,\r\n name: item?.name || '',\r\n files: item.files,\r\n explanation: item?.explanation || '',\r\n answer_template_files: item?.answer_template_files || []\r\n })\r\n }}\r\n />\r\n {!activeQuestion?.grading_question &&\r\n (item.explanation || activeQuestion?.solution) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={item}\r\n />\r\n )}\r\n {requirementIndex === index &&\r\n grading?.details &&\r\n grading?.details?.length > 0 && (\r\n <CommentList\r\n className={clsx('requirement-comment', {\r\n 'active-comment': openComment && requirementIndex === index,\r\n 'hide-comment': !openComment || requirementIndex !== index\r\n })}\r\n overlayClassName={clsx({\r\n active: openComment && requirementIndex === index\r\n })}\r\n commentRef={commentRef}\r\n data={grading}\r\n editorRef={editorRef}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default EssayRender\r\n","export const moveAndResizeElement = (\r\n element: HTMLElement,\r\n callback: ({\r\n left,\r\n top,\r\n width,\r\n height\r\n }: {\r\n top: string\r\n left: string\r\n width: string\r\n height: string\r\n }) => void\r\n) => {\r\n let mousePosition: { x: number; y: number }\r\n let offset: [number, number] = [0, 0]\r\n let isDown = false\r\n let currentResizer: string | null\r\n let original_width: number\r\n let original_height: number\r\n let original_x: number\r\n let original_y: number\r\n let original_mouse_x: number\r\n let original_mouse_y: number\r\n const minimum_size = 20\r\n\r\n let enable = false\r\n\r\n function handleDoubleClick(e: MouseEvent) {\r\n enable = true\r\n const resizable = document.body.querySelectorAll('.resizable.enable')\r\n resizable.forEach((e) => {\r\n e.classList.remove('enable')\r\n })\r\n let target = e.target as HTMLDivElement\r\n if (!target.classList.contains('resizable')) {\r\n target = target.closest('.resizable') as HTMLDivElement\r\n }\r\n target.classList.add('enable')\r\n }\r\n function handleMoveMouse(e: MouseEvent) {\r\n // if (!enable) {\r\n // return\r\n // }\r\n e.preventDefault()\r\n if (isDown) {\r\n mousePosition = {\r\n x: e.clientX,\r\n y: e.clientY\r\n }\r\n if (!currentResizer) {\r\n element.style.left = mousePosition.x + offset[0] + 'px'\r\n element.style.top = mousePosition.y + offset[1] + 'px'\r\n return\r\n }\r\n\r\n switch (currentResizer) {\r\n case 'bottom-right':\r\n {\r\n const width = original_width + (e.pageX - original_mouse_x)\r\n const height = original_height + (e.pageY - original_mouse_y)\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n }\r\n if (height > minimum_size) {\r\n element.style.height = height + 'px'\r\n }\r\n }\r\n break\r\n case 'bottom-left':\r\n {\r\n const height = original_height + (e.pageY - original_mouse_y)\r\n const width = original_width - (e.pageX - original_mouse_x)\r\n if (height > minimum_size) {\r\n element.style.height = height + 'px'\r\n }\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n element.style.left =\r\n original_x + (e.pageX - original_mouse_x) + 'px'\r\n }\r\n }\r\n break\r\n case 'top-right':\r\n {\r\n const width = original_width + (e.pageX - original_mouse_x)\r\n const height = original_height - (e.pageY - original_mouse_y)\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n }\r\n if (height > minimum_size) {\r\n element.style.height = height + 'px'\r\n element.style.top =\r\n original_y + (e.pageY - original_mouse_y) + 'px'\r\n }\r\n }\r\n break\r\n case 'top-left':\r\n {\r\n const width = original_width - (e.pageX - original_mouse_x)\r\n const height = original_height - (e.pageY - original_mouse_y)\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n element.style.left =\r\n original_x + (e.pageX - original_mouse_x) + 'px'\r\n }\r\n if (height > minimum_size) {\r\n element.style.height = height + 'px'\r\n element.style.top =\r\n original_y + (e.pageY - original_mouse_y) + 'px'\r\n }\r\n }\r\n break\r\n case 'right':\r\n {\r\n const width = original_width + (e.pageX - original_mouse_x)\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n }\r\n }\r\n break\r\n case 'left':\r\n {\r\n const width = original_width - (e.pageX - original_mouse_x)\r\n if (width > minimum_size) {\r\n element.style.width = width + 'px'\r\n element.style.left =\r\n original_x + (e.pageX - original_mouse_x) + 'px'\r\n }\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n }\r\n element.addEventListener('dblclick', (e) => handleDoubleClick(e))\r\n\r\n element.addEventListener('click', function (e: MouseEvent) {\r\n if (enable && !(e.target as HTMLElement).closest('.resizers')) {\r\n enable = false\r\n const resizable = document.body.querySelectorAll('.resizable.enable')\r\n resizable.forEach((e) => {\r\n e.classList.remove('enable')\r\n })\r\n }\r\n })\r\n\r\n element.addEventListener(\r\n 'mousedown',\r\n function (e: MouseEvent) {\r\n document.addEventListener('mousemove', handleMoveMouse, true)\r\n isDown = true\r\n offset = [element.offsetLeft - e.clientX, element.offsetTop - e.clientY]\r\n if ((e.target as HTMLElement).classList.contains('resizer')) {\r\n currentResizer = (e.target as HTMLElement)?.classList[1]\r\n original_width = parseFloat(\r\n getComputedStyle(element, null)\r\n .getPropertyValue('width')\r\n .replace('px', '')\r\n )\r\n original_height = parseFloat(\r\n getComputedStyle(element, null)\r\n .getPropertyValue('height')\r\n .replace('px', '')\r\n )\r\n original_x = element.getBoundingClientRect().left\r\n original_y = element.getBoundingClientRect().top\r\n original_mouse_x = e.pageX\r\n original_mouse_y = e.pageY\r\n }\r\n },\r\n true\r\n )\r\n element.addEventListener(\r\n 'mouseup',\r\n function () {\r\n document.removeEventListener('mousemove', handleMoveMouse, true)\r\n isDown = false\r\n currentResizer = null\r\n if (element.classList.contains('enable')) {\r\n // eslint-disable-next-line standard/no-callback-literal\r\n callback({\r\n top: element.style.top,\r\n left: element.style.left,\r\n width: element.style.width,\r\n height: element.style.height\r\n })\r\n }\r\n },\r\n true\r\n )\r\n}\r\n","import { moveAndResizeElement } from '@utils/dragandresize'\r\nimport React, { useEffect, useRef } from 'react'\r\n\r\ninterface IProps {\r\n children?: any\r\n getResize?: (data: any) => void\r\n position?: any\r\n onClick?: any\r\n zIndex?: number\r\n className?: string\r\n}\r\nconst MovableWindow = ({\r\n children,\r\n getResize,\r\n position,\r\n onClick,\r\n zIndex,\r\n className\r\n}: IProps) => {\r\n const elementRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (elementRef.current) {\r\n moveAndResizeElement(\r\n elementRef.current,\r\n ({ top, left, width, height }) => {\r\n getResize && getResize({ top, left, width, height })\r\n }\r\n )\r\n }\r\n }, [])\r\n return (\r\n <div\r\n ref={elementRef}\r\n className={`sapp-opacity-bg-border resizable moveable-resizable min-w-fit shadow-box ${className}`}\r\n style={{\r\n width: position?.width,\r\n height: position?.height,\r\n top: position?.top,\r\n left: position?.left,\r\n zIndex: zIndex\r\n }}\r\n // onClick={onClick}\r\n onMouseDown={onClick}\r\n onTouchStart={onClick}\r\n >\r\n <div className='resizers'>\r\n <div className='resizer top-left' />\r\n <div className='resizer top-right' />\r\n <div className='resizer bottom-left' />\r\n <div className='resizer bottom-right' />\r\n <div className='resizer right' />\r\n <div className='resizer left' />\r\n </div>\r\n {children}\r\n </div>\r\n )\r\n}\r\nexport default MovableWindow\r\n","import React from 'react'\r\n\r\ntype iconType =\r\n | 'camera'\r\n | 'course_text'\r\n | 'course_video'\r\n | 'course_video_timeline'\r\n | 'arrow_left'\r\n | 'arrow_right'\r\n | 'arrow_down'\r\n | 'x'\r\n\r\ntype SAPP_ICONS_TYPE = {\r\n [key in iconType]: React.ReactNode\r\n}\r\n\r\ntype Props = {\r\n icon: keyof SAPP_ICONS_TYPE\r\n className?: string\r\n}\r\n\r\nconst SappIcon = ({ icon, className }: Props) => {\r\n const SAPP_ICONS: SAPP_ICONS_TYPE = {\r\n camera: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={16}\r\n height={16}\r\n fill='none'\r\n className={className}\r\n >\r\n <g fill='#A1A1A1' clipPath='url(#a)'>\r\n <path d='M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1v6ZM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4H2Z' />\r\n <path d='M8 11a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5Zm0 1a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7ZM3 6.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z' />\r\n </g>\r\n <defs>\r\n <clipPath id='a'>\r\n <path fill='#fff' d='M0 0h16v16H0z' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n ),\r\n course_text: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={16}\r\n height={16}\r\n fill='none'\r\n className={className}\r\n >\r\n <rect\r\n width={15}\r\n height={15}\r\n x={0.5}\r\n y={0.5}\r\n stroke='#A1A1A1'\r\n rx={1.5}\r\n />\r\n <path\r\n fill='#A1A1A1'\r\n d='M3.333 4.2c0-.11.09-.2.2-.2h8.934c.11 0 .2.09.2.2v.6a.2.2 0 0 1-.2.2H3.533a.2.2 0 0 1-.2-.2v-.6ZM3.333 6.533c0-.11.09-.2.2-.2h8.934c.11 0 .2.09.2.2v.6a.2.2 0 0 1-.2.2H3.533a.2.2 0 0 1-.2-.2v-.6ZM3.333 8.867c0-.11.09-.2.2-.2h8.934c.11 0 .2.09.2.2v.6a.2.2 0 0 1-.2.2H3.533a.2.2 0 0 1-.2-.2v-.6ZM3.333 11.2c0-.11.09-.2.2-.2H9.8c.11 0 .2.09.2.2v.6a.2.2 0 0 1-.2.2H3.533a.2.2 0 0 1-.2-.2v-.6Z'\r\n />\r\n </svg>\r\n ),\r\n course_video: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={16}\r\n height={16}\r\n fill='none'\r\n className={className}\r\n >\r\n <rect\r\n width={15}\r\n height={15}\r\n x={0.5}\r\n y={0.5}\r\n stroke='#A1A1A1'\r\n rx={1.5}\r\n />\r\n <path\r\n stroke='#A1A1A1'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n d='M6 10.403V5.466a.469.469 0 0 1 .709-.4l4.228 2.457a.468.468 0 0 1 0 .812L6.71 10.803a.469.469 0 0 1-.709-.4Z'\r\n />\r\n </svg>\r\n ),\r\n course_video_timeline: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={18}\r\n height={18}\r\n fill='none'\r\n className={className}\r\n >\r\n <path\r\n fill='#FFB800'\r\n d='M17.438 4.219H.563v1.687h16.875V4.22ZM14.625 8.156H3.375v1.688h11.25V8.156ZM11.25 12.094h-4.5v1.687h4.5v-1.687Z'\r\n />\r\n </svg>\r\n ),\r\n arrow_left: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={16}\r\n height={16}\r\n fill='none'\r\n className={className}\r\n >\r\n <path\r\n fill='#141414'\r\n d='M11.313 3.411V2.203a.125.125 0 0 0-.202-.098L4.067 7.606a.498.498 0 0 0 0 .786l7.044 5.502a.124.124 0 0 0 .201-.099v-1.207a.253.253 0 0 0-.095-.197L5.592 8l5.625-4.392a.253.253 0 0 0 .095-.197Z'\r\n />\r\n </svg>\r\n ),\r\n arrow_right: (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width={16}\r\n height={16}\r\n fill='none'\r\n className={className}\r\n >\r\n <path\r\n fill='#141414'\r\n d='M4.688 12.59v1.207c0 .105.12.162.201.098l7.044-5.501a.497.497 0 0 0 0-.786L4.889 2.106a.124.124 0 0 0-.201.099v1.207c0 .077.035.15.095.197L10.408 8l-5.625 4.392a.253.253 0 0 0-.095.197Z'\r\n />\r\n </svg>\r\n ),\r\n arrow_down: (\r\n <svg\r\n width='19'\r\n height='19'\r\n viewBox='0 0 19 19'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={className}\r\n >\r\n <path d='M4 9L9.5 14L15 9H4Z' />\r\n </svg>\r\n ),\r\n x: (\r\n <svg\r\n width='24'\r\n height='24'\r\n viewBox='0 0 24 24'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className={className + ' fill-gray-1'}\r\n >\r\n <path d='M13.41 12L17 8.44003C17.191 8.24642 17.2972 7.98489 17.2953 7.71296C17.2934 7.44103 17.1836 7.18099 16.99 6.99003C16.7964 6.79908 16.5349 6.69285 16.2629 6.69473C15.991 6.6966 15.731 6.80642 15.54 7.00003L12 10.59L8.46 7.07003C8.27263 6.88378 8.01918 6.77924 7.755 6.77924C7.49081 6.77924 7.23736 6.88378 7.05 7.07003C6.95627 7.16299 6.88187 7.2736 6.8311 7.39546C6.78034 7.51731 6.7542 7.64802 6.7542 7.78003C6.7542 7.91204 6.78034 8.04275 6.8311 8.16461C6.88187 8.28647 6.95627 8.39707 7.05 8.49003L10.59 12L7 15.56C6.80904 15.7536 6.70282 16.0152 6.70469 16.2871C6.70657 16.559 6.81639 16.8191 7.01 17.01C7.2036 17.201 7.46514 17.3072 7.73707 17.3053C8.00899 17.3035 8.26904 17.1936 8.46 17L12 13.41L15.54 16.93C15.7274 17.1163 15.9808 17.2208 16.245 17.2208C16.5092 17.2208 16.7626 17.1163 16.95 16.93C17.0437 16.8371 17.1181 16.7265 17.1689 16.6046C17.2197 16.4827 17.2458 16.352 17.2458 16.22C17.2458 16.088 17.2197 15.9573 17.1689 15.8355C17.1181 15.7136 17.0437 15.603 16.95 15.51L13.41 12Z' />\r\n </svg>\r\n )\r\n }\r\n\r\n return <div>{SAPP_ICONS[icon]}</div>\r\n}\r\n\r\nexport default SappIcon\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { Dispatch, SetStateAction } from 'react'\r\nimport { IFile, IShowExhibit } from '../constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../utils'\r\nimport EditorReader from './editor/EditorReader'\r\nimport FileDisplay from './FileDisplay'\r\nimport MovableWindow from './MovableWindow'\r\nimport SappIcon from './SappIcon'\r\n\r\ninterface IProps {\r\n showExhibit: IShowExhibit\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n setShowExhibit: Dispatch<SetStateAction<IShowExhibit | undefined>>\r\n exhibitText: string\r\n}\r\n\r\nconst ExhibitMovableWindow = ({\r\n showExhibit,\r\n setOpenPdf,\r\n setShowExhibit,\r\n exhibitText\r\n}: IProps) => {\r\n return (\r\n <MovableWindow\r\n position={{\r\n width: '624px',\r\n height: '224px',\r\n left: showExhibit.left,\r\n top: showExhibit.top\r\n }}\r\n zIndex={999}\r\n >\r\n <div className='w-full h-full absolute top-0 left-0 border bg-white py-4 flex flex-col'>\r\n <div className='flex items-center justify-between flex-none px-6'>\r\n <div>\r\n <span className='font-bold'>\r\n {exhibitText || 'Exhibit'} {showExhibit.index}:{' '}\r\n </span>\r\n {showExhibit.name}\r\n </div>\r\n <div onClick={() => setShowExhibit(undefined)}>\r\n <SappIcon icon='x' className='cursor-pointer hover:fill-primary' />\r\n </div>\r\n </div>\r\n <div className='flex-auto overflow-scroll px-6'>\r\n {showExhibit?.description && (\r\n <EditorReader\r\n className='editor-wrap mt-1.5'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n showExhibit?.description || ''\r\n )}\r\n />\r\n )}\r\n {showExhibit?.files &&\r\n showExhibit?.files?.length > 0 &&\r\n showExhibit?.files.map((e: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </MovableWindow>\r\n )\r\n}\r\n\r\nexport default ExhibitMovableWindow\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { useEffect, useState } from 'react'\r\nimport { IRequirement, QUESTION_TYPES } from '../../constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../../utils'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport clsx from 'clsx'\r\n\r\ninterface IProps {\r\n activeQuestion: {\r\n solution?: string\r\n confirmed?: boolean\r\n qType?: string\r\n }\r\n explanationTitle?: string\r\n showRequirement?: IRequirement | null\r\n}\r\n\r\nconst Explanation = ({\r\n activeQuestion,\r\n explanationTitle,\r\n showRequirement\r\n}: IProps) => {\r\n const [solution, setSolution] = useState<string>('')\r\n\r\n useEffect(() => {\r\n if (\r\n showRequirement?.explanation &&\r\n showRequirement?.explanation?.trim() !== ''\r\n ) {\r\n setSolution(showRequirement.explanation)\r\n } else {\r\n setSolution(activeQuestion?.solution || '')\r\n }\r\n }, [activeQuestion?.solution, showRequirement?.explanation])\r\n\r\n return (\r\n <React.Fragment>\r\n {(solution || solution?.trim()) && (\r\n <div\r\n className={clsx('explanation', {\r\n 'explanation--essay': activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n })}\r\n key={showRequirement?.id || activeQuestion.solution}\r\n >\r\n <div className='font-semibold'>{explanationTitle}:</div>\r\n <EditorReader\r\n id={showRequirement?.id || activeQuestion.solution}\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n className='mt-4 text-bw-2'\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default Explanation\r\n","import { useEffect } from 'react'\r\n\r\ninterface ClickOutsideProps {\r\n ref: React.RefObject<HTMLElement>\r\n callback: () => void\r\n}\r\n\r\nconst useClickOutside = ({ ref, callback }: ClickOutsideProps) => {\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(event.target as Node)) {\r\n callback()\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside)\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside)\r\n }\r\n }, [ref, callback])\r\n}\r\n\r\nexport default useClickOutside\r\n","import React from 'react'\ninterface IIconProps {\n className?: string\n}\nexport const LeftArrowIcon = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM14.0303 8.46967C14.3232 8.76256 14.3232 9.23744 14.0303 9.53033L11.5607 12L14.0303 14.4697C14.3232 14.7626 14.3232 15.2374 14.0303 15.5303C13.7374 15.8232 13.2626 15.8232 12.9697 15.5303L9.96967 12.5303C9.67678 12.2374 9.67678 11.7626 9.96967 11.4697L12.9697 8.46967C13.2626 8.17678 13.7374 8.17678 14.0303 8.46967Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport const RightArrowIcon = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM9.96967 8.46967C10.2626 8.17678 10.7374 8.17678 11.0303 8.46967L14.0303 11.4697C14.3232 11.7626 14.3232 12.2374 14.0303 12.5303L11.0303 15.5303C10.7374 15.8232 10.2626 15.8232 9.96967 15.5303C9.67678 15.2374 9.67678 14.7626 9.96967 14.4697L12.4393 12L9.96967 9.53033C9.67678 9.23744 9.67678 8.76256 9.96967 8.46967Z'\n fill='currentColor'\n />\n </svg>\n )\n}\nexport const DefaultArrowLeft = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75ZM1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM14.0303 8.46967C14.3232 8.76256 14.3232 9.23744 14.0303 9.53033L11.5607 12L14.0303 14.4697C14.3232 14.7626 14.3232 15.2374 14.0303 15.5303C13.7374 15.8232 13.2626 15.8232 12.9697 15.5303L9.96967 12.5303C9.67678 12.2374 9.67678 11.7626 9.96967 11.4697L12.9697 8.46967C13.2626 8.17678 13.7374 8.17678 14.0303 8.46967Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport const DefaultArrowRight = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75ZM1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM9.96967 8.46967C10.2626 8.17678 10.7374 8.17678 11.0303 8.46967L14.0303 11.4697C14.3232 11.7626 14.3232 12.2374 14.0303 12.5303L11.0303 15.5303C10.7374 15.8232 10.2626 15.8232 9.96967 15.5303C9.67678 15.2374 9.67678 14.7626 9.96967 14.4697L12.4393 12L9.96967 9.53033C9.67678 9.23744 9.67678 8.76256 9.96967 8.46967Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport const DownArrowIcon = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <g transform='rotate(90 12 12)'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM14.0303 8.46967C14.3232 8.76256 14.3232 9.23744 14.0303 9.53033L11.5607 12L14.0303 14.4697C14.3232 14.7626 14.3232 15.2374 14.0303 15.5303C13.7374 15.8232 13.2626 15.8232 12.9697 15.5303L9.96967 12.5303C9.67678 12.2374 9.67678 11.7626 9.96967 11.4697L12.9697 8.46967C13.2626 8.17678 13.7374 8.17678 14.0303 8.46967Z'\n fill='currentColor'\n />\n </g>\n </svg>\n )\n}\n\nexport const DefaultArrowDown = ({ className }: IIconProps) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <g transform='rotate(90 12 12)'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75ZM1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM14.0303 8.46967C14.3232 8.76256 14.3232 9.23744 14.0303 9.53033L11.5607 12L14.0303 14.4697C14.3232 14.7626 14.3232 15.2374 14.0303 15.5303C13.7374 15.8232 13.2626 15.8232 12.9697 15.5303L9.96967 12.5303C9.67678 12.2374 9.67678 11.7626 9.96967 11.4697L12.9697 8.46967C13.2626 8.17678 13.7374 8.17678 14.0303 8.46967Z'\n fill='currentColor'\n />\n </g>\n </svg>\n )\n}\n\nexport const QuestionCircleIcon = ({ className }: IIconProps) => {\n return (\n <svg\n width='32'\n height='32'\n viewBox='0 0 32 32'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className={className}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M29.3307 15.9998C29.3307 23.3636 23.3612 29.3332 15.9974 29.3332C8.6336 29.3332 2.66406 23.3636 2.66406 15.9998C2.66406 8.63604 8.6336 2.6665 15.9974 2.6665C23.3612 2.6665 29.3307 8.63604 29.3307 15.9998ZM15.9974 10.3332C15.169 10.3332 14.4974 11.0047 14.4974 11.8332C14.4974 12.3855 14.0497 12.8332 13.4974 12.8332C12.9451 12.8332 12.4974 12.3855 12.4974 11.8332C12.4974 9.90017 14.0644 8.33317 15.9974 8.33317C17.9304 8.33317 19.4974 9.90017 19.4974 11.8332C19.4974 12.781 19.1193 13.6425 18.508 14.2718C18.385 14.3984 18.2676 14.5157 18.1557 14.6275C17.8679 14.915 17.6158 15.1669 17.3946 15.4512C17.1026 15.8264 16.9974 16.1022 16.9974 16.3332V17.3332C16.9974 17.8855 16.5497 18.3332 15.9974 18.3332C15.4451 18.3332 14.9974 17.8855 14.9974 17.3332V16.3332C14.9974 15.4596 15.4041 14.7524 15.8163 14.2228C16.1213 13.8309 16.5046 13.4483 16.8158 13.1378C16.9096 13.0441 16.9969 12.957 17.0735 12.8782C17.3368 12.6071 17.4974 12.2399 17.4974 11.8332C17.4974 11.0047 16.8258 10.3332 15.9974 10.3332ZM15.9974 22.6665C16.7338 22.6665 17.3307 22.0695 17.3307 21.3332C17.3307 20.5968 16.7338 19.9998 15.9974 19.9998C15.261 19.9998 14.6641 20.5968 14.6641 21.3332C14.6641 22.0695 15.261 22.6665 15.9974 22.6665Z'\n fill='#EF5941'\n />\n </svg>\n )\n}\n","import React from 'react'\r\nimport {\r\n DefaultArrowLeft,\r\n DefaultArrowRight,\r\n LeftArrowIcon,\r\n RightArrowIcon\r\n} from '../icons'\r\n\r\ninterface IProps {\r\n activeQuestion: {\r\n total_question: number\r\n index: string\r\n previous: {\r\n id: string\r\n }\r\n next: {\r\n id: string\r\n }\r\n }\r\n getActiveQuestion: (id: string) => Promise<void>\r\n}\r\n\r\nconst MoveQuestionBar = ({ activeQuestion, getActiveQuestion }: IProps) => {\r\n const questionIndex = String(activeQuestion?.index ?? '').replace(\r\n /^Question\\s*/i,\r\n ''\r\n )\r\n\r\n return (\r\n <div className='move-question-bar-container'>\r\n <div className='move-question-bar'>\r\n <span className='move-question-title'>Question and Solution</span>\r\n <div className='move-question-nav'>\r\n {activeQuestion?.previous && (\r\n <div\r\n onClick={() => getActiveQuestion(activeQuestion.previous?.id)}\r\n className='cursor-pointer move-question-icon'\r\n >\r\n <LeftArrowIcon className='hover-arrow' />\r\n <DefaultArrowLeft className='default-arrow' />\r\n </div>\r\n )}\r\n <span className='move-question-subtitle'>\r\n Question {questionIndex} of {activeQuestion?.total_question}\r\n </span>\r\n {activeQuestion?.next?.id && (\r\n <div\r\n onClick={() => getActiveQuestion(activeQuestion.next?.id)}\r\n className='cursor-pointer move-question-icon'\r\n >\r\n <RightArrowIcon className='hover-arrow' />\r\n <DefaultArrowRight className='default-arrow' />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default MoveQuestionBar\r\n","/* eslint-disable camelcase */\r\n/* eslint-disable no-unused-vars */\r\nimport React, {\r\n ForwardedRef,\r\n forwardRef,\r\n useEffect,\r\n useImperativeHandle,\r\n useState\r\n} from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\n\r\ninterface IProps {\r\n data?: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n extenalRef?: any\r\n corrects?: any\r\n solution?: string\r\n resetDefaultAnswer?: boolean\r\n allowUnHighLight?: boolean\r\n}\r\nconst DragNDropPreivew = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n extenalRef,\r\n corrects,\r\n solution,\r\n resetDefaultAnswer = false,\r\n allowUnHighLight\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const str = data?.question_content\r\n const parser = new DOMParser()\r\n\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const [key, setKey] = useState(1)\r\n const isSelfReflection = data?.is_self_reflection\r\n useImperativeHandle(ref, () => ({\r\n handleReset() {\r\n setKey((prev) => {\r\n const newKey = prev + 1\r\n return newKey\r\n })\r\n }\r\n }))\r\n\r\n useEffect(() => {\r\n const doc = parser.parseFromString(str, 'text/html')\r\n const doc2 = parser.parseFromString(str, 'text/html')\r\n // if (refContent?.current) {\r\n const elements = doc.querySelectorAll('.question-content-tag')\r\n const elementsCorrects = doc2.querySelectorAll('.question-content-tag')\r\n if (corrects) {\r\n elementsCorrects.forEach((element: any, index: number) => {\r\n element.outerHTML = `<span id=\"${element.id}\" class=\"sapp-input-dragNDrop-answer corrects\">\r\n <span id=\"${corrects[index].id}\" class=\"flex justify-center w-full\">${corrects[index]?.answer}</span>\r\n </span>`\r\n })\r\n elements.forEach((element: any, index: number) => {\r\n if (\r\n defaultAnswer?.length > 0 &&\r\n defaultAnswer?.[index]?.value !== undefined &&\r\n defaultAnswer?.[index]?.value !== null\r\n ) {\r\n if (defaultAnswer?.[index]?.value !== '') {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class=\"sapp-input-dragNDrop-answer ${\r\n defaultAnswer?.[index]?.idAnswer === corrects[index].id ||\r\n isSelfReflection === true\r\n ? 'corrects'\r\n : 'wrongs'\r\n }\">\r\n <span id=\"${\r\n defaultAnswer?.[index]?.idAnswer\r\n }\" class=\"flex justify-center sapp-min-w-100px\">${\r\n defaultAnswer?.[index]?.value\r\n }</span>\r\n </span>`\r\n } else {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class= \"sapp-input-dragNDrop-answer ${\r\n isSelfReflection === true ? 'corrects' : 'wrongs'\r\n }\">\r\n <span class=\"sapp-input-dragNDrop-empty\"></span>\r\n </span>`\r\n // })\r\n }\r\n } else {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class= \"sapp-input-dragNDrop-answer ${\r\n isSelfReflection === true ? 'corrects' : 'wrongs'\r\n }\">\r\n <span class=\"sapp-input-dragNDrop-empty\"></span>\r\n </span>`\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n setQuestionContent(doc)\r\n }\r\n // }\r\n }, [defaultAnswer, corrects])\r\n return (\r\n <div className='body-modal-white' key={key} ref={extenalRef || null}>\r\n {questionContent && (\r\n <div>\r\n <div>\r\n <EditorReader\r\n className='questions'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n questionContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {answerContent && (\r\n <div>\r\n <div className='text-bw-1 font-semibold text-base pt-[31px]'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='questions mt-2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n answerContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\nDragNDropPreivew.displayName = 'DragNDropPreivew'\r\nexport default DragNDropPreivew\r\n","/* eslint-disable no-unused-vars */\r\nimport { uniqueId } from 'lodash'\r\nimport React, { ForwardedRef, forwardRef, useEffect, useState } from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\n\r\ninterface IProps {\r\n data: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n corrects?: {\r\n id: string\r\n answer: string\r\n is_correct: boolean\r\n answer_position: number\r\n }[]\r\n extenalRef?: any\r\n solution?: string\r\n allowUnHighLight?: boolean\r\n}\r\nconst AddWordPreview = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n corrects,\r\n extenalRef,\r\n solution,\r\n allowUnHighLight\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const str = data?.question_content\r\n const parser = new DOMParser()\r\n\r\n const isSelfReflection = data?.is_self_reflection\r\n\r\n useEffect(() => {\r\n const doc = parser.parseFromString(str, 'text/html')\r\n const elements = doc.querySelectorAll('.question-content-tag')\r\n const doc2 = parser.parseFromString(str, 'text/html')\r\n const elementCorrects = doc2.querySelectorAll('.question-content-tag')\r\n elements.forEach((element, index) => {\r\n const inputId = element.id\r\n const inputValue = defaultAnswer?.[index] || ''\r\n\r\n let inputClass\r\n if (corrects) {\r\n const correctAnswer = corrects?.find(\r\n (ans: any) =>\r\n ans.answer_position === index + 1 &&\r\n ans.answer?.trim().toLowerCase() ===\r\n inputValue?.trim()?.toLowerCase()\r\n )\r\n inputClass =\r\n correctAnswer || isSelfReflection === true\r\n ? '!border-success text-state-success text-center !font-normal'\r\n : '!border-danger text-danger text center !font-normal'\r\n }\r\n\r\n element.outerHTML = `\r\n <span>\r\n <input ${\r\n corrects ? 'disabled' : ''\r\n } type=\"text\" id=\"${inputId}\" class=\"sapp-input-preview ${inputClass}\" stringHTML=\"true\" value=\"${inputValue}\" />\r\n </span>\r\n `\r\n })\r\n if (corrects) {\r\n elementCorrects.forEach((element, index) => {\r\n const inputId = element.id\r\n\r\n let inputClass\r\n // if (corrects) {\r\n const correctAnswer = corrects?.filter(\r\n (ans: any) => ans.answer_position === index + 1\r\n )\r\n if (correctAnswer) {\r\n inputClass = 'text-base font-semibold text-state-success'\r\n // }\r\n element.outerHTML = `\r\n <span>\r\n <span id=\"${inputId}\" class = \"${inputClass}\">${correctAnswer\r\n .map((e, i) => {\r\n if (i < correctAnswer.length - 1) {\r\n return e.answer + ' / '\r\n } else return e.answer\r\n })\r\n .join('')} <span/>\r\n </span>\r\n `\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n }\r\n\r\n setQuestionContent(doc)\r\n }, [defaultAnswer])\r\n\r\n return (\r\n <React.Fragment>\r\n <EditorReader\r\n key={uniqueId('key')}\r\n className='sapp-questions'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n questionContent?.documentElement.querySelector('body')?.innerHTML ||\r\n ''\r\n )}\r\n />\r\n {answerContent && (\r\n <div>\r\n <div className='font-semibold text-base pt-[22px]'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='questions mt-2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n answerContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n }\r\n)\r\nAddWordPreview.displayName = 'AddWordPreview'\r\nexport default AddWordPreview\r\n","import { EXPLANATION_TITLE } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport React, {\r\n // eslint-disable-next-line no-unused-vars\r\n ForwardedRef,\r\n forwardRef,\r\n memo,\r\n useEffect,\r\n useState\r\n} from 'react'\r\nimport EditorReader from '../editor/EditorReader'\r\n\r\ninterface IProps {\r\n data: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n done?: boolean\r\n extenalRef?: any\r\n index?: number\r\n corrects?: any\r\n solution?: string\r\n allowUnHighLight?: boolean\r\n}\r\ntype IProp = {\r\n value: string\r\n className?: string\r\n}\r\n\r\nconst MatchingQuestion = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n done,\r\n extenalRef,\r\n corrects,\r\n solution,\r\n allowUnHighLight\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const [defaultValue, setDefaultValue] = useState<any>()\r\n const [correctAnswer, setCorrectAnswer] = useState<any>()\r\n\r\n const isSelfReflection = data?.is_self_reflection\r\n\r\n const QuestionCard = ({\r\n value,\r\n className = 'sapp-arrowed-container'\r\n }: IProp) => {\r\n return <div className={`${className}`}>{value}</div>\r\n }\r\n useEffect(() => {\r\n const obj = {} as any\r\n const objCorrect = {} as any\r\n const arr = []\r\n for (const quest of data?.question_matchings) {\r\n arr.push(quest.answer)\r\n if (defaultAnswer) {\r\n obj[quest?.id] = data?.question_matchings?.find(\r\n (el: any) =>\r\n el.answer?.id ===\r\n defaultAnswer?.find((e: any) => e?.question_id === quest?.id)\r\n ?.answer_id\r\n )\r\n }\r\n }\r\n if (corrects) {\r\n for (const correct of corrects) {\r\n // if (defaultAnswer) {\r\n objCorrect[correct?.id] = correct.answer\r\n // }\r\n }\r\n setCorrectAnswer(objCorrect)\r\n }\r\n setDefaultValue(obj)\r\n }, [defaultAnswer, data.question_matchings])\r\n return (\r\n <div key='1' ref={extenalRef} className='matching_question'>\r\n <div>\r\n <EditorReader\r\n className='sapp-questions !mb-[32px]'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_content || ''\r\n )}\r\n />\r\n </div>\r\n <React.Fragment>\r\n <div className='card-container'>\r\n {data?.question_matchings.map((e: any, index: number) => {\r\n return (\r\n <div className='flex flex-nowrap justify-between' key={index}>\r\n {defaultValue?.[e?.id]?.answer?.id ===\r\n correctAnswer?.[e?.id]?.id || isSelfReflection === true ? (\r\n <React.Fragment>\r\n <QuestionCard\r\n value={e?.content}\r\n className='sapp-arrowed-container-corrects !border-gray-6 before:!border-gray-6 text-bw-1'\r\n />\r\n <div\r\n // id={e?.id}\r\n className='flex-1 sapp-match-result'\r\n >\r\n {defaultValue?.[e?.id]?.id && (\r\n <div\r\n // className=\"w-fit\"\r\n className='sapp-notched-container-corrects min-w-132px !border-gray-6 before:!border-gray-6 text-bw-1'\r\n // id={defaultValue[e?.id]?.answer.id}\r\n >\r\n {defaultValue[e?.id]?.answer?.answer}\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment>\r\n <QuestionCard\r\n value={e?.content}\r\n className='sapp-arrowed-container-incorrects text-state-error'\r\n />\r\n <div\r\n // id={e?.id}\r\n className='flex-1 sapp-match-result'\r\n >\r\n {defaultValue?.[e?.id]?.id && (\r\n <div\r\n // className=\"w-fit\"\r\n className='sapp-notched-container-incorrects min-w-132px text-state-error'\r\n // id={defaultValue[e?.id]?.answer.id}\r\n >\r\n {defaultValue[e?.id]?.answer?.answer}\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n <div className='flex flex-col gap-y-5 pt-[42px]'>\r\n <div className='text-bw-1 font-semibold text-base'>\r\n Correct Answer\r\n </div>\r\n\r\n {data?.question_matchings?.map((e: any, index: number) => {\r\n return (\r\n <div className='card-container--correct' key={index}>\r\n <QuestionCard\r\n value={e?.content}\r\n className='sapp-arrowed-container-corrects text-state-success'\r\n />\r\n <div className='flex-1 sapp-match-result'>\r\n {correctAnswer?.[e?.id]?.id && (\r\n <div\r\n // className=\"w-fit\"\r\n className='sapp-notched-container-corrects min-w-132px text-state-success'\r\n >\r\n {correctAnswer[e?.id]?.answer}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </React.Fragment>\r\n\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\nMatchingQuestion.displayName = 'MatchingQuestion'\r\nexport default memo(MatchingQuestion)\r\n","import React, { ReactNode } from 'react'\r\n\r\ninterface IProps {\r\n className?: string\r\n children: ReactNode\r\n}\r\n\r\nconst ErrorMessage = ({ className = '', children }: IProps) => {\r\n return (\r\n <React.Fragment>\r\n {children && (\r\n <div\r\n className={`${className} text-state-error text-sm leading-4.5 font-normal mt-1 ml-4 flex items-start gap-1.5`}\r\n >\r\n <svg\r\n width='14'\r\n height='14'\r\n viewBox='0 0 14 14'\r\n fill='none'\r\n xmlns='http://www.w3.org/2000/svg'\r\n className='flex-none mt-[1px]'\r\n >\r\n <path\r\n d='M7.7 7.7H6.3V3.5H7.7M7.7 10.5H6.3V9.1H7.7M7 0C6.08075 0 5.17049 0.18106 4.32122 0.532843C3.47194 0.884626 2.70026 1.40024 2.05025 2.05025C0.737498 3.36301 0 5.14348 0 7C0 8.85651 0.737498 10.637 2.05025 11.9497C2.70026 12.5998 3.47194 13.1154 4.32122 13.4672C5.17049 13.8189 6.08075 14 7 14C8.85651 14 10.637 13.2625 11.9497 11.9497C13.2625 10.637 14 8.85651 14 7C14 6.08075 13.8189 5.17049 13.4672 4.32122C13.1154 3.47194 12.5998 2.70026 11.9497 2.05025C11.2997 1.40024 10.5281 0.884626 9.67878 0.532843C8.8295 0.18106 7.91925 0 7 0Z'\r\n fill='#D35563'\r\n />\r\n </svg>\r\n <span className='first-letter:uppercase flex-auto'>{children}</span>\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default ErrorMessage\r\n","import React from 'react'\r\n\r\ntype Props = {\r\n show: boolean\r\n}\r\n\r\nconst YourAnswer = ({ show }: Props) => {\r\n return (\r\n <React.Fragment>\r\n {show && (\r\n <div className='whitespace-nowrap max-h-5.5 ml-3 text-ssm text-bw-1 font-normal inline-block px-2 border-gray-2 border rounded-sm bg-gray-4'>\r\n Your Answer\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default YourAnswer\r\n","import React from 'react'\r\n\r\ninterface IProps {\r\n checked: boolean\r\n disabled?: boolean\r\n onChange: React.ChangeEventHandler<HTMLInputElement>\r\n className?: string\r\n name?: string\r\n value?: string | boolean\r\n state?: 'default' | 'error' | 'success' | 'primary' // Thêm prop state\r\n size?: 'small' | 'medium' | 'lager' // Thêm prop size\r\n lowerOptions?: boolean\r\n}\r\n\r\nconst STATE = {\r\n success:\r\n 'checked:bg-state-success checked:hover:bg-state-success checked:focus:bg-state-success',\r\n error:\r\n 'checked:bg-state-error checked:hover:bg-state-error checked:focus:bg-state-error',\r\n default: 'checked:bg-bw-1 checked:hover:bg-bw-1 checked:focus:bg-bw-1',\r\n primary:\r\n 'checked:bg-primary checked:hover:bg-primary checked:focus:bg-primary'\r\n}\r\n\r\nconst SIZES = {\r\n small: 'w-4.5 h-4.5',\r\n medium: 'w-[24px] h-[24px]',\r\n lager: 'w-[30px] h-[30px]'\r\n}\r\n\r\nconst SAPPCheckbox = ({\r\n checked,\r\n disabled,\r\n onChange,\r\n className,\r\n value,\r\n state = 'default', // Gán giá trị mặc định cho prop state\r\n size = 'medium', // Gán giá trị mặc định cho prop size\r\n lowerOptions = false\r\n}: IProps) => {\r\n return (\r\n <div className={`inline-block ${className}`}>\r\n <input\r\n className={`block ${\r\n SIZES[size]\r\n } border-1.5 border-bw-1 outline-none ring-0 ring-offset-0 focus:outline-none focus:ring-0 focus:ring-offset-0 ${\r\n STATE[state]\r\n } ${disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'} ${\r\n lowerOptions && 'border-none'\r\n }`}\r\n type='checkbox'\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n value={value?.toString()}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default SAPPCheckbox\r\n","import { uniqueId } from 'lodash'\r\nimport React from 'react'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Control, Controller } from 'react-hook-form'\r\nimport ErrorMessage from '../button/ErrorMessage'\r\nimport YourAnswer from '../button/YourAnswer'\r\nimport SAPPCheckbox from './SAPPCheckbox'\r\n\r\ninterface IHookFormCheckBoxProps {\r\n name: string\r\n control: Control<any>\r\n defaultValue?: string | boolean\r\n title?: string\r\n className?: string\r\n onChange?: (e: any) => void\r\n checked?: string | boolean\r\n isWrong?: boolean\r\n label?: string | undefined\r\n required?: boolean\r\n disabled?: boolean\r\n classNameTitle?: string\r\n options: Array<{\r\n label?: string\r\n value: string | boolean\r\n description?: string\r\n }>\r\n direction?: 'horizontal' | 'vertical'\r\n gap?: string\r\n justify?: 'between' | 'start' | 'center' | 'end'\r\n multiple?: boolean\r\n state?: 'default' | 'error' | 'success' // Thêm prop state\r\n size?: 'small' | 'medium' | 'lager' // Thêm prop size\r\n corrects?: { [key: string]: boolean }\r\n toggle?: boolean\r\n positionCheckBox?: 'start' | 'center' | 'bottom'\r\n lowerOptions?: boolean\r\n seprateLine?: boolean\r\n widthOptions?: string\r\n}\r\n\r\nconst HookFormCheckBoxGroup = ({\r\n name,\r\n control,\r\n defaultValue,\r\n title,\r\n className = '',\r\n onChange,\r\n checked,\r\n isWrong,\r\n // label,\r\n // required,\r\n disabled,\r\n classNameTitle,\r\n options,\r\n direction = 'vertical',\r\n gap,\r\n justify,\r\n multiple = false,\r\n size = 'small',\r\n state,\r\n corrects,\r\n toggle = false,\r\n positionCheckBox = 'center',\r\n lowerOptions = false,\r\n seprateLine = false,\r\n widthOptions = ''\r\n}: IHookFormCheckBoxProps) => {\r\n gap = !seprateLine\r\n ? gap || (direction === 'horizontal' ? 'gap-6' : 'gap-4')\r\n : ''\r\n return (\r\n <Controller\r\n control={control}\r\n name={name}\r\n defaultValue={defaultValue}\r\n render={({ field, fieldState: { error } }) => {\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={\r\n (direction === 'horizontal'\r\n ? '_horizontal flex flex-wrap'\r\n : '_vertical flex flex-col') +\r\n ` ${gap} ` +\r\n ` ${\r\n justify === 'between'\r\n ? 'justify-between'\r\n : justify === 'center'\r\n ? 'justify-center'\r\n : justify === 'start'\r\n ? 'justify-start'\r\n : 'justify-end'\r\n } ${seprateLine && 'sapp-separateLine'}`\r\n }\r\n >\r\n {options.map((option, index) => {\r\n let state: 'error' | 'default' | 'success' | undefined\r\n let stateLabel: string = 'text-bw-1'\r\n\r\n const checked: boolean = multiple\r\n ? field.value?.includes(option.value.toString())\r\n : option.value.toString() === field.value\r\n\r\n if (corrects) {\r\n if (corrects?.[option.value as string]) {\r\n state = 'success'\r\n stateLabel = 'text-state-success'\r\n } else if (checked) {\r\n state = 'error'\r\n stateLabel = 'text-state-error'\r\n }\r\n }\r\n const checkHasChecked = multiple\r\n ? field.value?.length > 0\r\n : false\r\n\r\n return (\r\n <label\r\n className={`flex justify-center items-${positionCheckBox} w-fit ${\r\n disabled\r\n ? 'opacity-60 cursor-not-allowed'\r\n : 'cursor-pointer'\r\n } ${corrects && 'pointer-events-none'} ${\r\n seprateLine && 'py-2'\r\n } ${widthOptions}`}\r\n key={uniqueId(option.label)}\r\n >\r\n <SAPPCheckbox\r\n className={`me-2 ${className} ${\r\n positionCheckBox === 'start' && 'mt-1'\r\n }`}\r\n checked={checked}\r\n lowerOptions={lowerOptions && !checked && checkHasChecked}\r\n onChange={(event: React.ChangeEvent<any>) => {\r\n if (multiple) {\r\n let arr = [] as any\r\n if (field.value?.length > 0) {\r\n arr = [...field.value]\r\n if (arr.includes(event.target.value)) {\r\n const newArr = arr.filter(\r\n (e: any) => e !== event.target.value\r\n )\r\n arr = [...newArr]\r\n } else {\r\n arr.push(event.target.value)\r\n }\r\n } else {\r\n arr.push(event.target.value)\r\n }\r\n field.onChange(arr)\r\n onChange && onChange(arr)\r\n } else {\r\n if (toggle) {\r\n if (event.target.value === field.value) {\r\n field.onChange(undefined)\r\n onChange && onChange(undefined as any)\r\n } else {\r\n field.onChange(event.target.value)\r\n onChange && onChange(event.target.value)\r\n }\r\n } else {\r\n field.onChange(event.target.value)\r\n onChange && onChange(event.target.value)\r\n }\r\n }\r\n }}\r\n disabled={disabled}\r\n state={state}\r\n value={option.value.toString()}\r\n size={size}\r\n />\r\n <span\r\n className={`${\r\n classNameTitle || ''\r\n } ${stateLabel} form-check-label fw-semibold ${\r\n lowerOptions &&\r\n !checked &&\r\n checkHasChecked &&\r\n 'text-gray-2'\r\n }`}\r\n >\r\n {option.label}\r\n <YourAnswer show={checked && !!corrects} />\r\n </span>\r\n </label>\r\n )\r\n })}\r\n </div>\r\n <ErrorMessage>{error?.message}</ErrorMessage>\r\n </React.Fragment>\r\n )\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default HookFormCheckBoxGroup\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport HookFormCheckBoxGroup from '@components/common/checkbox/HookFormCheckBoxGroup'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport {\r\n getUppercaseByNumber,\r\n replaceTextAlignCenterToWebKitCenter\r\n} from '../../utils'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { IPreviewProp } from './OneChoiceQuestion'\r\n\r\nconst MultiChoiceQuestion = ({\r\n data,\r\n control,\r\n corrects,\r\n name,\r\n defaultValues,\r\n setValue,\r\n solution\r\n}: IPreviewProp) => {\r\n const convertAnswer = useMemo(() => {\r\n const answers = []\r\n let number = 0\r\n if (data?.answers) {\r\n const oldData = [...data?.answers]\r\n const sorted = oldData?.sort(\r\n (a: any, b: any) => a?.answer_position - b?.answer_position\r\n )\r\n for (const e of sorted) {\r\n number++\r\n answers.push({\r\n label: `${getUppercaseByNumber(number)}. ${e?.answer}`,\r\n value: e?.id\r\n })\r\n }\r\n }\r\n return answers\r\n }, [data])\r\n useEffect(() => {\r\n if (defaultValues) {\r\n setValue(name, defaultValues)\r\n } else {\r\n setValue(name, '')\r\n }\r\n }, [defaultValues])\r\n return (\r\n <React.Fragment>\r\n <div>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_content || ''\r\n )}\r\n className='sapp-questions'\r\n />\r\n </div>\r\n <div\r\n className='sapp-answer-wrapper'\r\n style={{\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <HookFormCheckBoxGroup\r\n options={convertAnswer || []}\r\n control={control}\r\n name={name || 'multiples'}\r\n multiple\r\n corrects={corrects}\r\n defaultValue={defaultValues || ''}\r\n // justify='start'\r\n positionCheckBox='start'\r\n />\r\n </div>\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_contentsolution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\nexport default MultiChoiceQuestion\r\n","import React from 'react'\r\n\r\ninterface IProps {\r\n name?: string\r\n value?: string | boolean\r\n ktCheck?: boolean\r\n checkTarget?: string\r\n checked: boolean\r\n onChange: React.ChangeEventHandler<HTMLInputElement>\r\n className?: string\r\n disabled?: boolean\r\n state?: 'default' | 'error' | 'success'\r\n size?: 'small' | 'medium' | 'lager'\r\n}\r\n\r\nconst STATE = {\r\n success:\r\n 'checked:bg-radio-success-checked checked:text-transparent checked:hover:bg-radio-success-checked checked:focus:bg-radio-success-checked',\r\n error:\r\n 'checked:bg-radio-error-checked checked:text-transparent checked:hover:bg-radio-error-checked checked:focus:bg-radio-error-checked',\r\n default:\r\n 'checked:bg-radio-default-checked checked:text-transparent checked:hover:bg-radio-default-checked checked:focus:bg-radio-default-checked'\r\n}\r\n\r\nconst SIZES = {\r\n small: 'w-4.5 h-4.5',\r\n medium: 'w-[24px] h-[24px]',\r\n lager: 'w-[30px] h-[30px]'\r\n}\r\n\r\nconst SAPPRadio = ({\r\n name,\r\n value,\r\n ktCheck,\r\n checkTarget,\r\n checked,\r\n onChange,\r\n className = '',\r\n disabled = false,\r\n state = 'default',\r\n size = 'medium'\r\n}: IProps) => {\r\n return (\r\n <div className={`inline-block ${SIZES[size]} ${className}`}>\r\n <input\r\n name={name}\r\n className={`${\r\n STATE[state]\r\n } block w-full h-full bg-center bg-no-repeat bg-radio-normal rounded-full border-0 border-transparent outline-none ring-0 ring-offset-0 focus:outline-none focus:ring-0 focus:ring-offset-0 ${\r\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\r\n }`}\r\n type='radio'\r\n data-kt-check={ktCheck}\r\n data-kt-check-target={checkTarget}\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n value={value?.toString()}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default SAPPRadio\r\n","import { uniqueId } from 'lodash'\r\nimport React from 'react'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Control, Controller } from 'react-hook-form'\r\nimport SAPPRadio from './SAPPRadio'\r\nimport { getUppercaseByNumber } from '../../../utils'\r\nimport YourAnswer from '../button/YourAnswer'\r\nimport ErrorMessage from '../button/ErrorMessage'\r\n\r\ninterface IHookFormRadioGroupProps {\r\n name: string\r\n control: Control<any>\r\n defaultValue?: unknown\r\n options: Array<{\r\n label?: string\r\n value: string | boolean\r\n description?: string\r\n disabled?: boolean\r\n }>\r\n direction?: 'horizontal' | 'vertical'\r\n separator?: boolean\r\n justify?: 'between' | 'start' | 'center' | 'end'\r\n gap?: string\r\n onChange?: React.ChangeEventHandler<HTMLInputElement>\r\n labelClass?: string\r\n labelClassChecked?: string\r\n disabled?: boolean\r\n corrects?: { [key: string]: boolean }\r\n}\r\n\r\nconst HookFormRadioGroup = ({\r\n name,\r\n control,\r\n defaultValue,\r\n options,\r\n direction,\r\n separator,\r\n gap,\r\n onChange,\r\n justify = 'between',\r\n labelClass = '',\r\n labelClassChecked = '',\r\n disabled,\r\n corrects\r\n}: IHookFormRadioGroupProps) => {\r\n const count_items = options?.length - 1\r\n gap = gap || (direction === 'horizontal' ? 'gap-6' : 'gap-4')\r\n let number = 0\r\n return (\r\n <Controller\r\n control={control}\r\n name={name}\r\n defaultValue={defaultValue}\r\n render={({ field, fieldState: { error } }) => {\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={\r\n (direction === 'horizontal'\r\n ? '_horizontal flex flex-wrap'\r\n : '_vertical flex flex-col') +\r\n ` ${gap} ` +\r\n ` ${\r\n justify === 'between'\r\n ? 'justify-between'\r\n : justify === 'center'\r\n ? 'justify-center'\r\n : justify === 'start'\r\n ? 'justify-start'\r\n : 'justify-end'\r\n }`\r\n }\r\n >\r\n {options.map((option, index) => {\r\n number++\r\n let state: 'error' | 'default' | 'success' | undefined\r\n let stateLabel: string = 'text-bw-1'\r\n const checked: boolean = option.value.toString() === field.value\r\n\r\n if (corrects) {\r\n if (corrects?.[option.value as string]) {\r\n state = 'success'\r\n stateLabel = 'text-state-success'\r\n } else if (checked) {\r\n state = 'error'\r\n stateLabel = 'text-state-error'\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n key={uniqueId('check')}\r\n className={`${!!corrects && 'pointer-events-none'}`}\r\n >\r\n <div className='flex flex-row'>\r\n <label\r\n className={`flex gap-3 flex-row items-start ${\r\n (\r\n option.disabled !== undefined\r\n ? option.disabled\r\n : disabled\r\n )\r\n ? 'opacity-60 cursor-not-allowed'\r\n : 'cursor-pointer'\r\n }`}\r\n >\r\n <SAPPRadio\r\n name={field.name}\r\n disabled={\r\n option.disabled !== undefined\r\n ? option.disabled\r\n : disabled\r\n }\r\n onChange={(e) => {\r\n onChange && onChange(e)\r\n field.onChange(e.target.value)\r\n }}\r\n key={index}\r\n value={option.value.toString()}\r\n checked={checked}\r\n className='flex-none mt-[3px]'\r\n size='small'\r\n state={state}\r\n />\r\n <span className='flex-1'>\r\n <div\r\n className={`${\r\n option.value === field.value\r\n ? ` ${stateLabel} ${labelClassChecked || ''}`\r\n : ` ${stateLabel} ${labelClass || ''}`\r\n } flex-1 fw-bold text-base`}\r\n >\r\n {`${getUppercaseByNumber(number)}. ${option.label}`}\r\n <YourAnswer show={checked && !!corrects} />\r\n </div>\r\n {option.description && (\r\n <div className='text-sm text-gray-500'>\r\n {option.description}\r\n </div>\r\n )}\r\n </span>\r\n </label>\r\n </div>\r\n {false &&\r\n index !== count_items &&\r\n (separator === undefined || separator === true) && (\r\n <div className='separator separator-dashed my-5' />\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n <ErrorMessage>{error?.message}</ErrorMessage>\r\n </React.Fragment>\r\n )\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default HookFormRadioGroup\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport HookFormRadioGroup from '../common/radiobutton/HookFormRadioGroup'\r\nimport EditorReader from '../editor/EditorReader'\r\nexport type IPreviewProp = {\r\n data: any\r\n control: any\r\n name?: string\r\n corrects?: { [key: string]: boolean }\r\n defaultValues?: any\r\n setValue?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n solution?: any\r\n allowUnHighLight?: boolean\r\n}\r\nconst OneChoiceQuestion = ({\r\n data,\r\n control,\r\n corrects,\r\n name,\r\n defaultValues,\r\n setValue,\r\n solution\r\n}: IPreviewProp) => {\r\n useEffect(() => {\r\n if (defaultValues) {\r\n setValue(name, defaultValues)\r\n } else {\r\n setValue(name, '')\r\n }\r\n }, [defaultValues])\r\n const convertAnswer = useMemo(() => {\r\n const answers = []\r\n if (data?.answers) {\r\n for (const e of data?.answers) {\r\n answers.push({ label: e.answer || '', value: e.id })\r\n }\r\n }\r\n return answers\r\n }, [data])\r\n return (\r\n <React.Fragment>\r\n <div>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_content || ''\r\n )}\r\n className='sapp-questions'\r\n />\r\n </div>\r\n <div\r\n className='sapp-answer-wrapper'\r\n style={{\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <HookFormRadioGroup\r\n options={convertAnswer || []}\r\n control={control}\r\n name={name || 'answer'}\r\n corrects={corrects}\r\n defaultValue={defaultValues}\r\n />\r\n </div>\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\nexport default OneChoiceQuestion\r\n","/* eslint-disable no-unused-expressions */\r\n/* eslint-disable no-unused-vars */\r\nimport { replaceWhiteSpacePreWrapToNormal, runHighlight } from '@utils/index'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport { isNull, isUndefined, uniqueId } from 'lodash'\r\nimport React, {\r\n ForwardedRef,\r\n forwardRef,\r\n Fragment,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n useState\r\n} from 'react'\r\nimport { EXPLANATION_TITLE } from '@constant/index'\r\n\r\n// Types\r\ninterface IProps {\r\n data: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: Array<{\r\n answer_id: string\r\n answer_position: number\r\n }>\r\n corrects?: {\r\n id: string\r\n answer: string\r\n is_correct: boolean\r\n answer_position: number\r\n }[]\r\n extenalRef?: any\r\n solution?: string\r\n allowUnHighLight?: boolean\r\n isHideExhibit?: boolean\r\n exhibitText?: string\r\n onChange?: (\r\n values: Array<{\r\n answer_id: string\r\n answer_position: number\r\n }>\r\n ) => void\r\n}\r\n\r\n// Constants\r\nconst baseBox = 'base-box'\r\nconst sizeBox = 'size-box'\r\nconst DROPDOWN_STYLES = {\r\n container: `sapp-select--question relative inline-block ${sizeBox} ${baseBox} cursor-pointer`,\r\n selectedText: 'px-3 py-2 flex items-center justify-between',\r\n options: `absolute !top-[44px] !left-0 -translate-x-px z-[9] ${sizeBox} bg-white ${baseBox} shadow-lg max-h-[300px] overflow-y-auto p-2`,\r\n option: 'px-3 py-2 cursor-pointer rounded',\r\n icon: 'ml-2 text-gray-500 min-w-24px'\r\n}\r\n\r\nconst SelectWord = forwardRef(\r\n (\r\n {\r\n data,\r\n handleSaveHighLight,\r\n highlighted,\r\n allowHighLight,\r\n defaultAnswer,\r\n corrects,\r\n extenalRef,\r\n solution,\r\n allowUnHighLight,\r\n isHideExhibit = true,\r\n exhibitText,\r\n onChange\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n // Refs and State\r\n const refEditor = useRef(null) as any\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const [key, setKey] = useState<string>(uniqueId('key'))\r\n const isSelfReflection = data?.is_self_reflection\r\n const str = replaceWhiteSpacePreWrapToNormal(data?.question_content)\r\n const [selectedValues, setSelectedValues] = useState<\r\n Record<number, string>\r\n >({})\r\n\r\n // Methods\r\n const formatAnswer = (data: any) => {\r\n const objAnswer: any = {}\r\n data?.answers?.forEach((answer: any) => {\r\n if (!objAnswer?.[answer?.answer_position]) {\r\n objAnswer[answer?.answer_position] = []\r\n }\r\n objAnswer[answer?.answer_position].push({\r\n label: answer?.answer,\r\n value: answer?.id,\r\n result: answer?.is_correct\r\n })\r\n })\r\n return objAnswer\r\n }\r\n\r\n const answerObj = formatAnswer(data)\r\n const createDropdownHTML = (\r\n index: number,\r\n defaultAnswerValue: string,\r\n isCorrect: boolean = false\r\n ) => {\r\n const selectedAnswer = answerObj?.[+index + 1]?.find(\r\n (e: any) => e?.value === defaultAnswerValue\r\n )\r\n\r\n const disabledClass = !corrects?.length\r\n ? ''\r\n : 'cursor-not-allowed pointer-events-none'\r\n return `\r\n <div class=\"selected-text ${\r\n DROPDOWN_STYLES.selectedText\r\n } ${disabledClass}\">\r\n <span class=\"truncate\">${selectedAnswer?.label || 'Choose'}</span>\r\n <svg class=\"${\r\n DROPDOWN_STYLES.icon\r\n } icon-dropdown\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.43057 8.51192C4.70014 8.19743 5.17361 8.161 5.48811 8.43057L12 14.0122L18.5119 8.43057C18.8264 8.16101 19.2999 8.19743 19.5695 8.51192C19.839 8.82642 19.8026 9.29989 19.4881 9.56946L12.4881 15.5695C12.2072 15.8102 11.7928 15.8102 11.5119 15.5695L4.51192 9.56946C4.19743 9.29989 4.161 8.82641 4.43057 8.51192Z\" fill=\"#1C274C\"/>\r\n </svg>\r\n </div>\r\n <div class=\"dropdown-options ${\r\n DROPDOWN_STYLES.options\r\n }\" style=\"display: none;\">\r\n ${\r\n answerObj?.[+index + 1]?.length\r\n ? answerObj?.[+index + 1]\r\n ?.map((e: any) => {\r\n if (e?.label?.length > 100) {\r\n return `\r\n <div class=\"option ${DROPDOWN_STYLES.option} ${\r\n e?.value === defaultAnswerValue ? 'bg-[#e5e5e5]' : ''\r\n }\"\r\n data-value=\"${e?.value}\">\r\n ${e.label}\r\n </div>\r\n `\r\n }\r\n return `\r\n <div class=\"option ${DROPDOWN_STYLES.option} ${\r\n e?.value === defaultAnswerValue ? 'bg-[#e5e5e5]' : ''\r\n }\"\r\n data-value=\"${e?.value}\">\r\n ${e?.label}\r\n </div>\r\n `\r\n })\r\n .join('')\r\n : `<div class=\"option ${DROPDOWN_STYLES.option}\">No options available</div>`\r\n }\r\n </div>\r\n `\r\n }\r\n\r\n // Imperative Handle\r\n useImperativeHandle(ref, () => ({\r\n handleReset() {\r\n const dropdowns = document?.querySelectorAll(\r\n '.sapp-select--question'\r\n ) as any\r\n dropdowns.forEach((dropdown: any) => {\r\n dropdown.setAttribute('data-value', '')\r\n const selectedText = dropdown.querySelector('.selected-text')\r\n if (selectedText) {\r\n selectedText.textContent = 'Choose'\r\n }\r\n })\r\n },\r\n handleGetResult() {\r\n // action()\r\n }\r\n }))\r\n\r\n const handleChangeElement = (event: Event, select: any) => {\r\n if (event.target) {\r\n const sibling = select.previousElementSibling\r\n const answer =\r\n data?.answers?.find(\r\n (item: { id: string; answer: string }) =>\r\n (event?.target as HTMLSelectElement)?.value &&\r\n item.id === (event?.target as HTMLSelectElement)?.value\r\n )?.answer || ''\r\n if (sibling) {\r\n sibling.innerHTML = answer || ''\r\n if (!!answer && answer.length > 18) {\r\n sibling.classList.remove('hidden')\r\n sibling.classList.add('block')\r\n } else {\r\n sibling.classList.remove('block')\r\n sibling.classList.add('hidden')\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Effects\r\n useEffect(() => {\r\n const parser = new DOMParser()\r\n const doc = parser?.parseFromString(str, 'text/html')\r\n const elements = doc?.querySelectorAll('.question-content-tag')\r\n const doc2 = parser?.parseFromString(str, 'text/html')\r\n const elementCorrects = doc2?.querySelectorAll('.question-content-tag')\r\n\r\n // Process question content\r\n elements.forEach((element, index) => {\r\n const dropdownContainer = document?.createElement('div')\r\n dropdownContainer.classList?.add(\r\n ...DROPDOWN_STYLES.container.split(' ')\r\n )\r\n dropdownContainer.id = element?.id\r\n dropdownContainer.setAttribute('data-value', '')\r\n\r\n const defaultAnswerValue =\r\n defaultAnswer?.find((item) => item.answer_position === index + 1)\r\n ?.answer_id || ''\r\n\r\n if (corrects) {\r\n const isCorrect = corrects?.some(\r\n (correct) =>\r\n correct?.answer_position === index + 1 &&\r\n correct?.id === defaultAnswerValue &&\r\n correct?.is_correct\r\n )\r\n\r\n dropdownContainer?.classList?.add(\r\n isCorrect || isSelfReflection\r\n ? '!border-success'\r\n : '!border-danger',\r\n 'sapp-select-confirmed'\r\n )\r\n dropdownContainer?.setAttribute('disabled', 'true')\r\n }\r\n\r\n // Xử lý default của câu trả lời\r\n dropdownContainer.setAttribute('data-value', defaultAnswerValue ?? '')\r\n\r\n dropdownContainer.innerHTML = createDropdownHTML(\r\n index,\r\n defaultAnswerValue,\r\n corrects?.some(\r\n (correct) =>\r\n correct?.answer_position === index + 1 &&\r\n correct?.id === defaultAnswerValue &&\r\n correct?.is_correct\r\n )\r\n )\r\n\r\n // Xử lý hiện tooltip sẽ thêm vào mỗi select\r\n const tooltip = document.createElement('div')\r\n tooltip.classList.add('tooltip-container')\r\n const answer =\r\n data.answers?.find(\r\n (answer: { id: string; value: string }) =>\r\n !isUndefined(\r\n defaultAnswer?.find(\r\n (item) => item.answer_position === index + 1\r\n )?.answer_id\r\n ) &&\r\n !isNull(\r\n defaultAnswer?.find(\r\n (item) => item.answer_position === index + 1\r\n )?.answer_id\r\n ) &&\r\n answer?.id ===\r\n defaultAnswer?.find(\r\n (item) => item.answer_position === index + 1\r\n )?.answer_id\r\n )?.answer || ''\r\n const selectedAnswer = selectedValues[index]\r\n ? data.answers?.find(\r\n (answer: { id: string; value: string }) =>\r\n answer?.id === selectedValues[index]\r\n )?.answer\r\n : ''\r\n tooltip.innerHTML = `\r\n <div class=\"tooltip-text ${\r\n (!!answer && answer.length > 18) ||\r\n (!!selectedAnswer && selectedAnswer.length > 18)\r\n ? 'block'\r\n : 'hidden'\r\n }\">${selectedAnswer || answer}</div>\r\n`\r\n tooltip.appendChild(dropdownContainer)\r\n\r\n element.replaceWith(tooltip)\r\n })\r\n\r\n // Process correct answers\r\n if (corrects) {\r\n elementCorrects.forEach((element, index) => {\r\n const correctAnswer = corrects?.find(\r\n (ans: any) => ans?.answer_position === index + 1 && ans?.is_correct\r\n )\r\n if (correctAnswer) {\r\n element.outerHTML = `\r\n <span>\r\n <span id=\"${element?.id}\" class=\"font-semibold text-state-success\">\r\n ${correctAnswer?.answer}\r\n </span>\r\n </span>\r\n `\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n }\r\n setQuestionContent(doc)\r\n }, [defaultAnswer, data])\r\n\r\n useEffect(() => {\r\n const updateTooltips = () => {\r\n const dropdowns = document.querySelectorAll('.sapp-select--question')\r\n dropdowns.forEach((dropdown) => {\r\n const dropdownIndex = Array.from(\r\n document.querySelectorAll('.sapp-select--question')\r\n ).indexOf(dropdown)\r\n const tooltipContainer = dropdown.closest('.tooltip-container')\r\n if (tooltipContainer) {\r\n const tooltipText = tooltipContainer.querySelector('.tooltip-text')\r\n if (tooltipText) {\r\n const selectedValue = selectedValues[dropdownIndex]\r\n if (selectedValue) {\r\n const answer =\r\n data.answers?.find(\r\n (answer: { id: string; value: string }) =>\r\n answer?.id === selectedValue\r\n )?.answer || ''\r\n\r\n const isOpen = dropdown.getAttribute('data-open') === 'true'\r\n if (!isOpen) {\r\n tooltipText.textContent = answer\r\n tooltipText.classList.toggle('block', answer.length > 18)\r\n tooltipText.classList.toggle('hidden', answer.length <= 18)\r\n } else {\r\n tooltipText.classList.add('hidden')\r\n tooltipText.classList.remove('block')\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Tạo MutationObserver để theo dõi sự thay đổi của data-open\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (\r\n mutation.type === 'attributes' &&\r\n mutation.attributeName === 'data-open'\r\n ) {\r\n const target = mutation.target as HTMLElement\r\n updateTooltips()\r\n }\r\n })\r\n })\r\n\r\n // Theo dõi tất cả các dropdown\r\n const dropdowns = document.querySelectorAll('.sapp-select--question')\r\n dropdowns.forEach((dropdown) => {\r\n observer.observe(dropdown, {\r\n attributes: true,\r\n attributeFilter: ['data-open']\r\n })\r\n })\r\n\r\n // Initial update\r\n updateTooltips()\r\n\r\n // Cleanup\r\n return () => {\r\n observer.disconnect()\r\n }\r\n }, [selectedValues, data.answers])\r\n\r\n useEffect(() => {\r\n const setupDropdownListeners = () => {\r\n const dropdowns = document.querySelectorAll('.sapp-select--question')\r\n dropdowns.forEach((dropdown) => {\r\n if (!dropdown.getAttribute('data-listener-attached')) {\r\n const selectedText = dropdown.querySelector('.selected-text')\r\n const options = dropdown.querySelector(\r\n '.dropdown-options'\r\n ) as HTMLElement\r\n const iconDropDown = dropdown.querySelector(\r\n '.icon-dropdown'\r\n ) as HTMLElement\r\n\r\n // Toggle dropdown on click\r\n selectedText?.addEventListener('click', () => {\r\n if (!dropdown.getAttribute('disabled')) {\r\n const isNowOpen = !(\r\n dropdown.getAttribute('data-open') === 'true'\r\n )\r\n dropdown.setAttribute('data-open', isNowOpen.toString())\r\n\r\n if (options) {\r\n if (isNowOpen) {\r\n // Calculate dropdown position\r\n const dropdownRect = dropdown.getBoundingClientRect()\r\n const windowWidth = window.innerWidth\r\n const windowHeight = window.innerHeight\r\n const scrollTop =\r\n window.pageYOffset || document.documentElement.scrollTop\r\n const scrollLeft =\r\n window.pageXOffset || document.documentElement.scrollLeft\r\n\r\n // Default position\r\n options.style.top = `${\r\n dropdownRect.bottom + scrollTop + 4\r\n }px`\r\n options.style.left = `${dropdownRect.left + scrollLeft}px`\r\n\r\n // Adjust to prevent overflow\r\n if (dropdownRect.left + options.offsetWidth > windowWidth) {\r\n options.style.left = `${\r\n windowWidth - options.offsetWidth - 16\r\n }px`\r\n }\r\n if (dropdownRect.bottom + 300 + 4 > windowHeight) {\r\n options.style.top = `${\r\n dropdownRect.top + scrollTop - 300 - 4\r\n }px`\r\n }\r\n\r\n // Clear highlights\r\n options.querySelectorAll('.option').forEach((option) => {\r\n option.classList.remove('bg-[#e5e7eb]', 'selected')\r\n })\r\n\r\n options.style.display = 'block'\r\n } else {\r\n options.style.display = 'none'\r\n }\r\n\r\n // Toggle UI styles\r\n dropdown.classList.toggle('border-gray-200', isNowOpen)\r\n iconDropDown?.classList.toggle('rotate-180', isNowOpen)\r\n }\r\n }\r\n })\r\n\r\n // Hover effect on options\r\n options?.querySelectorAll('.option').forEach((option) => {\r\n option.addEventListener('mouseenter', () => {\r\n options\r\n .querySelectorAll('.option')\r\n .forEach((opt) =>\r\n opt.classList.remove('bg-[#e5e7eb]', 'selected')\r\n )\r\n option.classList.add('bg-[#e5e7eb]', 'selected')\r\n })\r\n })\r\n\r\n // Option selection\r\n options?.querySelectorAll('.option').forEach((option) => {\r\n option.addEventListener('click', () => {\r\n const value = option.getAttribute('data-value')\r\n const label = option.textContent?.trim()\r\n\r\n if (value && label) {\r\n const dropdownIndex = Array.from(\r\n document.querySelectorAll('.sapp-select--question')\r\n ).indexOf(dropdown)\r\n\r\n dropdown.setAttribute('data-value', value)\r\n dropdown.setAttribute('data-text', label)\r\n\r\n setSelectedValues((prev) => ({\r\n ...prev,\r\n [dropdownIndex]: value\r\n }))\r\n\r\n const span = selectedText?.querySelector('span')\r\n if (span) {\r\n span.textContent =\r\n label.length > 50 ? label.slice(0, 50) + '...' : label\r\n }\r\n\r\n // Highlight selected option\r\n options.querySelectorAll('.option').forEach((opt) => {\r\n opt.classList.toggle(\r\n 'bg-[#e5e7eb]',\r\n opt.getAttribute('data-value') === value\r\n )\r\n })\r\n\r\n options.style.display = 'none'\r\n dropdown.setAttribute('data-open', 'false')\r\n iconDropDown?.classList.remove('rotate-180')\r\n dropdown.classList.remove('border-gray-200')\r\n }\r\n })\r\n })\r\n\r\n // Close dropdown when clicking outside\r\n document.addEventListener('click', (e) => {\r\n if (!dropdown.contains(e.target as Node)) {\r\n dropdown.setAttribute('data-open', 'false')\r\n if (options) {\r\n options.style.display = 'none'\r\n\r\n // Restore selected option highlight\r\n const selectedValue = dropdown.getAttribute('data-value')\r\n options.querySelectorAll('.option').forEach((option) => {\r\n option.classList.toggle(\r\n 'bg-[#e5e7eb]',\r\n option.getAttribute('data-value') === selectedValue\r\n )\r\n })\r\n }\r\n iconDropDown?.classList.remove('rotate-180')\r\n dropdown.classList.remove('border-gray-200')\r\n }\r\n })\r\n\r\n dropdown.setAttribute('data-listener-attached', 'true')\r\n }\r\n })\r\n }\r\n\r\n // Observe new dropdowns being added to the DOM\r\n const observer = new MutationObserver(setupDropdownListeners)\r\n observer.observe(document.body, { childList: true, subtree: true })\r\n\r\n // Initial setup\r\n setupDropdownListeners()\r\n\r\n return () => observer.disconnect()\r\n }, [data, defaultAnswer])\r\n\r\n // handle phần hiển thị tooltip khi lựa chọn câu trả lời\r\n useEffect(() => {\r\n const setupSelectListeners = () => {\r\n const selectList = document.querySelectorAll(\r\n 'select.sapp-select--question'\r\n )\r\n selectList.forEach((element) => {\r\n const htmlSelect = element as HTMLDivElement\r\n if (!htmlSelect.dataset.listenerAttached) {\r\n htmlSelect.addEventListener('change', (event: Event) =>\r\n handleChangeElement(event, htmlSelect)\r\n )\r\n htmlSelect.dataset.listenerAttached = 'true'\r\n }\r\n })\r\n }\r\n const observer = new MutationObserver(() => {\r\n setupSelectListeners()\r\n })\r\n observer.observe(document.body, { childList: true, subtree: true })\r\n setupSelectListeners()\r\n\r\n return () => {\r\n observer.disconnect()\r\n }\r\n }, [data])\r\n\r\n // Render\r\n return (\r\n <div ref={extenalRef}>\r\n {/* Question Content */}\r\n <EditorReader\r\n key={key}\r\n extenalRef={refEditor}\r\n className='sapp-questions'\r\n text_editor_content={\r\n questionContent?.documentElement?.querySelector('body')\r\n ?.innerHTML || ''\r\n }\r\n id='hightlight_area'\r\n onMouseUp={(e: any) => {\r\n if (\r\n e?.target?.tagName?.charAt(0) !== 'm' &&\r\n e?.target?.firstChild?.tagName !== 'math'\r\n ) {\r\n if (e) {\r\n if (allowHighLight) {\r\n runHighlight(\r\n handleSaveHighLight,\r\n allowHighLight || false,\r\n 'hightlight_area'\r\n )\r\n } else if (allowUnHighLight) {\r\n runHighlight(\r\n handleSaveHighLight,\r\n allowUnHighLight || false,\r\n 'hightlight_area',\r\n { color: 'white' }\r\n )\r\n }\r\n }\r\n }\r\n }}\r\n highlighted={highlighted}\r\n />\r\n\r\n {/* Correct Answer Section */}\r\n {answerContent && (\r\n <Fragment>\r\n <div className='pt-[18px] text-base font-semibold'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='questions mt-2'\r\n text_editor_content={\r\n answerContent?.documentElement?.querySelector('body')\r\n ?.innerHTML || ''\r\n }\r\n />\r\n </Fragment>\r\n )}\r\n\r\n {/* Solution Section */}\r\n {solution && (\r\n <div className='mt-6 bg-gray-4 p-6'>\r\n <div className='font-semibold text-base text-bw-1 '>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader className='mt-4' text_editor_content={solution} />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nSelectWord.displayName = 'SelectWord'\r\nexport default SelectWord\r\n","/* eslint-disable no-unused-vars */\r\nimport React from 'react'\r\nimport { IFile } from '../constant'\r\n\r\ninterface IProps {\r\n exhibits: Array<{\r\n // created_at: Date\r\n description: string\r\n files: IFile[]\r\n id: string\r\n name: string\r\n }>\r\n handleShowExhibit: (\r\n params: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n event: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n exhibitText: string\r\n}\r\n\r\nconst ExhibitRender = ({\r\n exhibits,\r\n handleShowExhibit,\r\n exhibitText\r\n}: IProps) => {\r\n return (\r\n <div className='w-full'>\r\n <div className='flex items-center mb-4'>\r\n <div className='font-semibold'>\r\n {exhibitText}s ({exhibits?.length || 0})\r\n </div>\r\n <div className='ml-4'>\r\n <span className='text-state-error'>* </span>\r\n <span className='text-gray-1'>Click to view</span>\r\n </div>\r\n </div>\r\n <div className='flex flex-col gap-2'>\r\n {exhibits?.length > 0 &&\r\n exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: string\r\n name: string\r\n files: IFile[]\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n {exhibitText} {i + 1}: {e.name}\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ExhibitRender\r\n","/* eslint-disable no-unused-vars */\r\nimport ExhibitRender from '@components/ExhibitRender'\r\nimport FileDisplay from '@components/FileDisplay'\r\nimport Divider from '@components/common/divider/Divider'\r\nimport clsx from 'clsx'\r\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react'\r\nimport { IFile } from '../../constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../../utils'\r\nimport EditorReader from '../editor/EditorReader'\r\n\r\ninterface Exhibit {\r\n created_at: Date\r\n description: string\r\n files: IFile[]\r\n id: string\r\n name: string\r\n}\r\n\r\ninterface IProps {\r\n activeQuestion: {\r\n question_topic?: {\r\n description: string\r\n files: IFile[]\r\n exhibits: Array<Exhibit>\r\n }\r\n exhibits?: Array<Exhibit>\r\n }\r\n isTwoColumn?: boolean\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n handleShowExhibit: (\r\n params: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n event: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n exhibitText: string\r\n}\r\n\r\nconst TopicDisplay = ({\r\n activeQuestion,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n isTwoColumn = false,\r\n exhibitText\r\n}: IProps) => {\r\n const [exhibits, setExhibits] = useState<Exhibit[]>()\r\n const hasFile =\r\n activeQuestion?.question_topic?.files &&\r\n activeQuestion?.question_topic?.files?.length > 0\r\n useEffect(() => {\r\n setExhibits([\r\n ...(activeQuestion?.exhibits && activeQuestion?.exhibits.length > 0\r\n ? activeQuestion?.exhibits\r\n : []),\r\n ...(activeQuestion?.question_topic?.exhibits &&\r\n activeQuestion?.question_topic?.exhibits?.length > 0\r\n ? activeQuestion?.question_topic?.exhibits\r\n : [])\r\n ])\r\n }, [activeQuestion])\r\n return (\r\n <div\r\n className={clsx(`topic-display`, {\r\n 'topic-display--two-column': isTwoColumn\r\n })}\r\n >\r\n <EditorReader\r\n className='editor-wrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n activeQuestion?.question_topic?.description || ''\r\n )}\r\n />\r\n\r\n {hasFile && (\r\n <div className='font-semibold topic-display__resource'>\r\n Resource file:\r\n </div>\r\n )}\r\n {hasFile &&\r\n activeQuestion?.question_topic?.files?.map(\r\n (e: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n url={e?.resource?.url}\r\n setOpenPdf={setOpenPdf}\r\n key={index}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n }\r\n )}\r\n {hasFile && <Divider className='resource-divider' />}\r\n {exhibits && exhibits?.length > 0 && (\r\n <ExhibitRender\r\n exhibits={exhibits}\r\n handleShowExhibit={handleShowExhibit}\r\n exhibitText={exhibitText}\r\n />\r\n )}\r\n {exhibits && exhibits?.length > 0 && !isTwoColumn && (\r\n <Divider className='exhibit-divider' />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default TopicDisplay\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport { FieldValues, UseFormReset, useForm } from 'react-hook-form'\r\n\r\nimport Divider from '@components/common/divider/Divider'\r\nimport { ResizeIcon } from '@components/icons/ResizeIcon'\r\nimport clsx from 'clsx'\r\nimport {\r\n DISPLAY_TYPE,\r\n EXHIBIT_TEXT_REPLACE,\r\n EXPLANATION_TITLE,\r\n ICommment,\r\n IFile,\r\n IRequirement,\r\n IRequirementAnswer,\r\n IShowExhibit,\r\n PROGRAM,\r\n QUESTION_TYPES,\r\n SOLUTION_TITLE\r\n} from 'constant'\r\nimport useMousePosition from 'hooks/useMousePosition'\r\nimport { convertMathToImage } from 'utils'\r\nimport CommentList from '../comment-list'\r\nimport PopupViewPdf from '../common/modal/PopupViewPdf'\r\nimport EssayRender from '../essay-render'\r\nimport ExhibitMovableWindow from '../ExhibitMovableWindow'\r\nimport Explanation from '../explanation'\r\nimport useClickOutside from '../HookClick'\r\nimport MoveQuestionBar from '../move-question-bar'\r\nimport DragNDropPreivew from '../questionType/DragNDrop'\r\nimport AddWordPreview from '../questionType/FillText'\r\nimport MatchingQuestion from '../questionType/MatchingQuestion'\r\nimport MultiChoiceQuestion from '../questionType/MultipleChoiceQuestion'\r\nimport OneChoiceQuestion from '../questionType/OneChoiceQuestion'\r\nimport SelectWord from '../questionType/SelectWordQuestion'\r\nimport TopicDisplay from '../topic-display'\r\n\r\nexport type QuizComponentRef = {\r\n onSubmit: ({\r\n activityId,\r\n tabId,\r\n quizId,\r\n then\r\n }: {\r\n activityId: string\r\n tabId: string\r\n quizId: string\r\n then?: (e: any) => void\r\n }) => void\r\n reset: UseFormReset<FieldValues>\r\n}\r\n\r\ntype Props = {\r\n activeQuestion?: any\r\n document_id: string\r\n getActiveQuestion: (id: string) => Promise<void>\r\n renderPdf?: ({\r\n url,\r\n fileName\r\n }: {\r\n url: string\r\n fileName?: string | undefined\r\n }) => React.ReactNode\r\n}\r\n\r\nconst QuizComponent = ({\r\n activeQuestion,\r\n document_id,\r\n getActiveQuestion,\r\n renderPdf\r\n}: Props) => {\r\n const questionRef = useRef<HTMLDivElement>(null)\r\n const bodyRef = useRef<HTMLDivElement>(null)\r\n const [comment, setComment] = useState<ICommment>()\r\n const { control: controlAnswer, setValue } = useForm({})\r\n const [showListRequirement, setShowListRequirement] = useState<boolean>(false)\r\n const listRequirementRef = useRef<HTMLDivElement>(null)\r\n const [showRequirement, setShowRequirement] = useState<IRequirement | null>()\r\n const [openPdf, setOpenPdf] = useState<{ status: boolean; url: string }>()\r\n const [showExhibit, setShowExhibit] = useState<IShowExhibit | undefined>()\r\n const commentRef = useRef<HTMLDivElement>(null)\r\n const editorRef = useRef<HTMLDivElement>(null)\r\n const [exhibitText, setExhibitText] = useState('')\r\n\r\n const [startResize, setStartResize] = useState(false)\r\n const [currentMousePos, setCurrentMousePos] = useState(0)\r\n const [leftWidth, setLeftWidth] = useState(0)\r\n const [currentLeftWidth, setCurrentLeftWidth] = useState(0)\r\n const [mousePosition, setMousePosition] = useState<{\r\n x: number | null\r\n y: number | null\r\n }>({ x: null, y: null })\r\n\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n\r\n useClickOutside({\r\n ref: listRequirementRef,\r\n callback: () => {}\r\n })\r\n\r\n const handleShowRequirement = (data: {\r\n description: string\r\n index: number\r\n name: string\r\n files: any\r\n explanation: string\r\n answer_template_files?: string[]\r\n }) => {\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id ===\r\n activeQuestion?.requirements?.[data.index - 1].id\r\n )\r\n setShowListRequirement(false)\r\n\r\n if (activeQuestion?.grading_question?.answer_gradings?.length) {\r\n setComment(\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (item: ICommment) => item?.requirement_id === answer?.requirement_id\r\n )\r\n )\r\n }\r\n setShowRequirement({\r\n ...data,\r\n answer_file: answer?.answer_file,\r\n short_answer: answer?.short_answer,\r\n active: answer?.active,\r\n files: data.files?.filter(\r\n (item: IFile) => !data?.answer_template_files?.includes(item.id)\r\n )\r\n })\r\n }\r\n\r\n const handleShowListRequirement = (e: any) => {\r\n const clickHandler = (event: MouseEvent) => {\r\n if (!(event.target as HTMLDivElement).closest('.requirement')) {\r\n setShowListRequirement(false)\r\n // eslint-disable-next-line no-unused-expressions\r\n bodyRef.current?.removeEventListener('click', clickHandler)\r\n }\r\n }\r\n setTimeout(() => {\r\n // eslint-disable-next-line no-unused-expressions\r\n bodyRef.current?.addEventListener('click', clickHandler)\r\n })\r\n\r\n setShowListRequirement(true)\r\n }\r\n\r\n const handleShowExhibit = (\r\n params: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n event: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => {\r\n var mouseY = event.pageY - 300\r\n setShowExhibit({\r\n ...params,\r\n top:\r\n activeQuestion?.display_type !== DISPLAY_TYPE.VERTICAL\r\n ? mouseY + 200 + 'px'\r\n : mouseY + 350 + 'px',\r\n left: '33%'\r\n })\r\n }\r\n\r\n const handleGenarateSelectAnswer = (defaultValue: any) => {\r\n const newArr = []\r\n if (defaultValue?.length > 0) {\r\n const sorted = defaultValue?.sort(\r\n (a: { answer_position: number }, b: { answer_position: number }) =>\r\n a.answer_position - b.answer_position\r\n )\r\n const obj = {} as any\r\n for (const e of sorted) {\r\n obj[e?.answer_position - 1] = e?.answer_id\r\n }\r\n for (let i = 0; i < sorted?.[sorted.length - 1]?.answer_position; i++) {\r\n newArr.push(obj[i])\r\n }\r\n }\r\n return newArr\r\n }\r\n\r\n const renderQuestion = () => {\r\n switch (activeQuestion?.qType) {\r\n case QUESTION_TYPES.ONE_CHOICE:\r\n case QUESTION_TYPES.TRUE_FALSE:\r\n return (\r\n <OneChoiceQuestion\r\n data={activeQuestion}\r\n control={controlAnswer}\r\n corrects={activeQuestion.corrects}\r\n setValue={setValue}\r\n name={`${activeQuestion?.id}_${document_id}_answer`}\r\n defaultValues={activeQuestion?.myAnswers?.[0]?.question_answer_id}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.MULTIPLE_CHOICE:\r\n return (\r\n <MultiChoiceQuestion\r\n data={activeQuestion}\r\n control={controlAnswer}\r\n corrects={activeQuestion.corrects}\r\n setValue={setValue}\r\n name={`${activeQuestion.id}_${document_id}_answer`}\r\n defaultValues={activeQuestion.myAnswers?.[0].answer?.map(\r\n (e: { answer_id: any }, i: number) => {\r\n return e?.answer_id\r\n }\r\n )}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.MATCHING:\r\n return (\r\n <MatchingQuestion\r\n data={activeQuestion}\r\n defaultAnswer={activeQuestion?.defaultValue}\r\n corrects={activeQuestion.corrects}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.FILL_WORD:\r\n return (\r\n <AddWordPreview\r\n data={activeQuestion}\r\n defaultAnswer={activeQuestion?.defaultValue\r\n ?.sort(\r\n (\r\n a: { answer_position: number },\r\n b: { answer_position: number }\r\n ) => a.answer_position - b.answer_position\r\n )\r\n .map(\r\n (e: { answer_text: string; answer_position: number }) =>\r\n e.answer_text\r\n )}\r\n corrects={activeQuestion.corrects}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.DRAG_DROP:\r\n return (\r\n <div ref={questionRef}>\r\n <DragNDropPreivew\r\n data={activeQuestion}\r\n defaultAnswer={createArrayWithValues(\r\n activeQuestion.myAnswers?.[0]?.answer || [],\r\n activeQuestion.answers\r\n )}\r\n corrects={activeQuestion.corrects}\r\n resetDefaultAnswer={false}\r\n />\r\n </div>\r\n )\r\n\r\n case QUESTION_TYPES.SELECT_WORD:\r\n return (\r\n <SelectWord\r\n data={activeQuestion}\r\n defaultAnswer={activeQuestion?.defaultValue}\r\n corrects={activeQuestion.corrects}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.ESSAY:\r\n return (\r\n <EssayRender\r\n activeQuestion={activeQuestion}\r\n handleShowListRequirement={handleShowListRequirement}\r\n showListRequirement={showListRequirement}\r\n showRequirement={showRequirement}\r\n handleShowRequirement={handleShowRequirement}\r\n setOpenPdf={setOpenPdf}\r\n handleShowExhibit={handleShowExhibit}\r\n controlAnswer={controlAnswer}\r\n listRequirementRef={listRequirementRef}\r\n comment={comment}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n submitted={\r\n activeQuestion?.requirements?.length\r\n ? showRequirement?.active\r\n : activeQuestion?.active\r\n }\r\n />\r\n )\r\n default:\r\n return <div />\r\n }\r\n }\r\n\r\n const createArrayWithValues = (\r\n myAnswerArray: any,\r\n answers: {\r\n id: string\r\n answer: string\r\n answer_position: string\r\n }[]\r\n ) => {\r\n const resultArray = []\r\n if (myAnswerArray.length > 0) {\r\n for (const el of myAnswerArray) {\r\n const item = answers?.find((e: any) => e.id === el.answer_id)\r\n if (item) {\r\n resultArray.push({\r\n id: el.id,\r\n value: item.answer,\r\n idAnswer: el.answer_id\r\n })\r\n } else {\r\n resultArray.push({\r\n id: '',\r\n value: '',\r\n idAnswer: ''\r\n })\r\n }\r\n }\r\n }\r\n return resultArray\r\n }\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n if (bodyRef?.current) {\r\n const formElement = bodyRef?.current\r\n convertMathToImage(formElement)\r\n }\r\n }, 1000)\r\n }, [bodyRef?.current, activeQuestion?.id, showRequirement?.index])\r\n\r\n useEffect(() => {\r\n const defaultRequirement = activeQuestion?.requirements?.[0]\r\n if (defaultRequirement) {\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id === defaultRequirement?.id\r\n )\r\n setShowRequirement({\r\n name: defaultRequirement.name,\r\n description: defaultRequirement.description,\r\n files: defaultRequirement.files?.filter(\r\n (item: IFile) =>\r\n !defaultRequirement?.answer_template_files?.includes(item.id)\r\n ),\r\n index: 1,\r\n explanation: defaultRequirement.explanation,\r\n answer_file: answer?.answer_file,\r\n short_answer: answer?.short_answer,\r\n active: answer?.active\r\n })\r\n setComment(\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (item: ICommment) => item?.requirement_id === answer?.requirement_id\r\n )\r\n )\r\n } else {\r\n setShowRequirement(null)\r\n setComment(activeQuestion?.grading_question?.answer_gradings?.[0])\r\n }\r\n if (activeQuestion?.program === PROGRAM.CMA) {\r\n setExhibitText(EXHIBIT_TEXT_REPLACE.EXHIBIT_REPLACE)\r\n } else {\r\n setExhibitText(EXHIBIT_TEXT_REPLACE.EXHIBIT)\r\n }\r\n }, [activeQuestion])\r\n\r\n const { x } = useMousePosition()\r\n useEffect(() => {\r\n if (startResize) {\r\n const temp = currentLeftWidth\r\n setLeftWidth(temp + (currentMousePos - (x || 0)))\r\n }\r\n }, [x, startResize])\r\n\r\n useEffect(() => {\r\n const updateMousePosition = (ev: MouseEvent | TouchEvent) => {\r\n const clientX =\r\n ev instanceof TouchEvent ? ev.touches[0].clientX : ev.clientX\r\n const clientY =\r\n ev instanceof TouchEvent ? ev.touches[0].clientY : ev.clientY\r\n\r\n setMousePosition({ x: clientX as number, y: clientY as number })\r\n }\r\n\r\n const clickPosition = (ev: MouseEvent | TouchEvent) => {\r\n const clientX =\r\n ev instanceof TouchEvent ? ev.touches[0].clientX : ev.clientX\r\n const clientY =\r\n ev instanceof TouchEvent ? ev.touches[0].clientY : ev.clientY\r\n\r\n setMousePosition(() => {\r\n setCurrentMousePos(clientX)\r\n return { x: clientX, y: clientY }\r\n })\r\n }\r\n\r\n if (startResize) {\r\n window.addEventListener('mousemove', updateMousePosition)\r\n window.addEventListener('mousedown', clickPosition)\r\n\r\n window.addEventListener('touchmove', updateMousePosition, {\r\n passive: false\r\n })\r\n window.addEventListener('touchstart', clickPosition, { passive: false })\r\n } else {\r\n window.removeEventListener('mousemove', updateMousePosition)\r\n window.removeEventListener('mousedown', clickPosition)\r\n\r\n window.removeEventListener('touchmove', updateMousePosition)\r\n window.removeEventListener('touchstart', clickPosition)\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('mousemove', updateMousePosition)\r\n window.removeEventListener('mousedown', clickPosition)\r\n\r\n window.removeEventListener('touchmove', updateMousePosition)\r\n window.removeEventListener('touchstart', clickPosition)\r\n }\r\n }, [startResize])\r\n\r\n useEffect(() => {\r\n if (startResize) {\r\n const temp = currentLeftWidth\r\n setLeftWidth(temp + (currentMousePos - (mousePosition.x || 0)))\r\n }\r\n }, [mousePosition.x, startResize, currentLeftWidth, currentMousePos])\r\n\r\n return (\r\n <div\r\n ref={bodyRef}\r\n className={clsx('quiz-component', {\r\n 'quiz-component--essay': activeQuestion.qType === QUESTION_TYPES.ESSAY,\r\n 'quiz-component--others': activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <MoveQuestionBar\r\n activeQuestion={activeQuestion}\r\n getActiveQuestion={getActiveQuestion}\r\n />\r\n <div\r\n className={clsx('quiz-component__body', {\r\n 'quiz-component__body--essay':\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n })}\r\n onMouseUp={() => {\r\n setStartResize(false)\r\n setCurrentLeftWidth(leftWidth)\r\n }}\r\n >\r\n {activeQuestion?.display_type === DISPLAY_TYPE.VERTICAL &&\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY ? (\r\n <div\r\n className={clsx(\r\n 'quiz-component__content',\r\n 'quiz-component__content-vertical',\r\n {\r\n 'mx-auto': !activeQuestion?.grading_question,\r\n 'quiz-component__content--essay':\r\n activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n }\r\n )}\r\n // style={{ background: '#F1F1F1', height: 'calc(100vh - 50px)' }}\r\n >\r\n <div style={{ width: `calc(50% - ${leftWidth}px)` }}>\r\n <TopicDisplay\r\n activeQuestion={activeQuestion}\r\n setOpenPdf={setOpenPdf}\r\n handleShowExhibit={handleShowExhibit}\r\n isTwoColumn\r\n exhibitText={exhibitText}\r\n />\r\n </div>\r\n\r\n <div\r\n className='quiz-component__resizer'\r\n onMouseDown={() => setStartResize(true)}\r\n onTouchStart={(e) => {\r\n e.preventDefault()\r\n setStartResize(true)\r\n }}\r\n onTouchMove={() => setStartResize(true)}\r\n onMouseUp={() => setStartResize(false)}\r\n onTouchEnd={() => setStartResize(false)}\r\n >\r\n <div className='quiz-component__resizer-icon'>\r\n <ResizeIcon />\r\n </div>\r\n </div>\r\n <div\r\n className={clsx(`topic-display topic-display--two-column`)}\r\n style={{ width: `calc(50% + ${leftWidth}px)` }}\r\n >\r\n <div className='quiz-component__content--qna'>\r\n <div\r\n ref={questionRef}\r\n className={clsx({\r\n 'quiz-component__content--question':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <React.Fragment>{renderQuestion()}</React.Fragment>\r\n </div>\r\n {activeQuestion.qType !== QUESTION_TYPES.ESSAY && <Divider />}\r\n {activeQuestion.qType !== QUESTION_TYPES.ESSAY && (\r\n <Explanation\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div\r\n className={clsx('quiz-component__content', {\r\n 'quiz-component__content--horizontal':\r\n !activeQuestion.requirements?.length ||\r\n !activeQuestion?.grading_question,\r\n 'mx-auto': !activeQuestion?.grading_question,\r\n 'py-8': activeQuestion.qType !== QUESTION_TYPES.ESSAY,\r\n 'quiz-component__content--essay w-full':\r\n activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <div\r\n className={clsx({\r\n 'quiz-component__content--qna':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <div\r\n ref={questionRef}\r\n className={clsx({\r\n 'quiz-component__content--question':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <React.Fragment>{renderQuestion()}</React.Fragment>\r\n </div>\r\n {activeQuestion.qType !== QUESTION_TYPES.ESSAY && <Divider />}\r\n {activeQuestion.qType !== QUESTION_TYPES.ESSAY && (\r\n <Explanation\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n <PopupViewPdf\r\n open={openPdf?.status || false}\r\n setOpen={setOpenPdf}\r\n url={openPdf?.url || ''}\r\n renderContent={renderPdf}\r\n />\r\n {showExhibit?.id && (\r\n <ExhibitMovableWindow\r\n showExhibit={showExhibit}\r\n setShowExhibit={setShowExhibit}\r\n setOpenPdf={setOpenPdf}\r\n exhibitText={exhibitText}\r\n />\r\n )}\r\n {!activeQuestion.requirements?.length &&\r\n comment?.details &&\r\n comment?.details?.length > 0 && (\r\n <CommentList\r\n commentRef={commentRef}\r\n data={comment}\r\n editorRef={editorRef}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nQuizComponent.displayName = 'QuizComponent'\r\nexport default QuizComponent\r\n","import { useLayoutEffect, useState } from 'react'\r\n\r\n/** Khớp breakpoint mobile của comment-list-v2 (max-width: 768px) */\r\nexport const COMMENT_MOBILE_MEDIA = '(max-width: 767px)'\r\n\r\nexport const useCommentMobileView = () => {\r\n const [isMobile, setIsMobile] = useState(() => {\r\n if (typeof window === 'undefined') return false\r\n return window.matchMedia(COMMENT_MOBILE_MEDIA).matches\r\n })\r\n\r\n useLayoutEffect(() => {\r\n const mq = window.matchMedia(COMMENT_MOBILE_MEDIA)\r\n const onChange = () => setIsMobile(mq.matches)\r\n onChange()\r\n mq.addEventListener('change', onChange)\r\n return () => mq.removeEventListener('change', onChange)\r\n }, [])\r\n\r\n return isMobile\r\n}\r\n","/* eslint-disable camelcase */\r\n/* eslint-disable no-unused-vars */\r\nimport React, {\r\n ForwardedRef,\r\n forwardRef,\r\n useEffect,\r\n useImperativeHandle,\r\n useState\r\n} from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport EditorReader from '../../editor/EditorReader'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\n\r\ninterface IProps {\r\n data?: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n extenalRef?: any\r\n corrects?: any\r\n solution?: string\r\n resetDefaultAnswer?: boolean\r\n allowUnHighLight?: boolean\r\n answers?: any\r\n}\r\nconst DragNDropPreivew = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n extenalRef,\r\n corrects,\r\n solution,\r\n resetDefaultAnswer = false,\r\n allowUnHighLight,\r\n answers\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const str = data?.question_content\r\n const parser = new DOMParser()\r\n\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const [key, setKey] = useState(1)\r\n const isSelfReflection = data?.is_self_reflection\r\n useImperativeHandle(ref, () => ({\r\n handleReset() {\r\n setKey((prev) => {\r\n const newKey = prev + 1\r\n return newKey\r\n })\r\n }\r\n }))\r\n\r\n useEffect(() => {\r\n const doc = parser.parseFromString(str, 'text/html')\r\n const doc2 = parser.parseFromString(str, 'text/html')\r\n // if (refContent?.current) {\r\n const elements = doc.querySelectorAll('.question-content-tag')\r\n const elementsCorrects = doc2.querySelectorAll('.question-content-tag')\r\n if (corrects) {\r\n elementsCorrects.forEach((element: any, index: number) => {\r\n element.outerHTML = `<span id=\"${element.id}\" class=\"sapp-input-dragNDrop-answer-v2 corrects\">\r\n <span id=\"${corrects[index].id}\" class=\"flex justify-center w-full\">${corrects[index]?.answer}</span>\r\n </span>`\r\n })\r\n elements.forEach((element: any, index: number) => {\r\n const isCorrect = answers?.[index]?.is_correct\r\n\r\n if (\r\n defaultAnswer?.length > 0 &&\r\n defaultAnswer?.[index]?.value !== undefined &&\r\n defaultAnswer?.[index]?.value !== null\r\n ) {\r\n if (defaultAnswer?.[index]?.value !== '') {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class=\"sapp-input-dragNDrop-userAnswer ${\r\n defaultAnswer?.[index]?.idAnswer === corrects[index].id ||\r\n isSelfReflection === true ||\r\n isCorrect\r\n ? 'corrects'\r\n : 'wrongs'\r\n }\">\r\n <span id=\"${\r\n defaultAnswer?.[index]?.idAnswer\r\n }\" class=\"flex justify-center\">${\r\n defaultAnswer?.[index]?.value\r\n }</span>\r\n </span>`\r\n } else {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class= \"sapp-input-dragNDrop-userAnswer ${\r\n isSelfReflection === true || isCorrect ? 'corrects' : 'wrongs'\r\n }\">\r\n <span class=\"sapp-input-dragNDrop-empty-v2\"></span>\r\n </span>`\r\n // })\r\n }\r\n } else {\r\n element.outerHTML = `<span id=\"${\r\n element.id\r\n }\" class= \"sapp-input-dragNDrop-userAnswer ${\r\n isSelfReflection === true || isCorrect ? 'corrects' : 'wrongs'\r\n }\">\r\n <span class=\"sapp-input-dragNDrop-empty-v2\"></span>\r\n </span>`\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n setQuestionContent(doc)\r\n }\r\n // }\r\n }, [defaultAnswer, corrects])\r\n return (\r\n <div className='body-modal-white' key={key} ref={extenalRef || null}>\r\n {questionContent && (\r\n <div>\r\n <div>\r\n <EditorReader\r\n className='sapp-questions-v2 mb-6 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n questionContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {answerContent && (\r\n <div>\r\n <div className='text-bw-2 font-semibold text-lg'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='sapp-questions-v2 white-space-nowrap mt-2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n answerContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4 sapp-questions-v2 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\nDragNDropPreivew.displayName = 'DragNDropPreivew'\r\nexport default DragNDropPreivew\r\n","/* eslint-disable no-unused-vars */\r\nimport { uniqueId } from 'lodash'\r\nimport React, { ForwardedRef, forwardRef, useEffect, useState } from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport EditorReader from '../../editor/EditorReader'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\n\r\ninterface IProps {\r\n data: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n corrects?: {\r\n id: string\r\n answer: string\r\n is_correct: boolean\r\n answer_position: number\r\n }[]\r\n extenalRef?: any\r\n solution?: string\r\n allowUnHighLight?: boolean\r\n}\r\nconst AddWordPreview = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n corrects,\r\n extenalRef,\r\n solution,\r\n allowUnHighLight\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const str = data?.question_content\r\n const parser = new DOMParser()\r\n\r\n const isSelfReflection = data?.is_self_reflection\r\n\r\n useEffect(() => {\r\n const doc = parser.parseFromString(str, 'text/html')\r\n const elements = doc.querySelectorAll('.question-content-tag')\r\n const doc2 = parser.parseFromString(str, 'text/html')\r\n const elementCorrects = doc2.querySelectorAll('.question-content-tag')\r\n elements.forEach((element, index) => {\r\n const inputId = element.id\r\n const inputValue = defaultAnswer?.[index] || '_____'\r\n\r\n let inputClass\r\n if (corrects) {\r\n const correctAnswer = corrects?.find(\r\n (ans: any) =>\r\n ans.answer_position === index + 1 &&\r\n ans.answer?.trim().toLowerCase() ===\r\n inputValue?.trim()?.toLowerCase()\r\n )\r\n inputClass =\r\n correctAnswer || isSelfReflection === true\r\n ? 'text-state-success-v2 text-center !font-normal'\r\n : 'text-state-error-v2 text-center !font-normal'\r\n }\r\n\r\n element.outerHTML = `\r\n <span>\r\n <span ${\r\n corrects ? 'disabled' : ''\r\n } id=\"${inputId}\" class=\"sapp-input-preview ${inputClass}\">${inputValue}</span>\r\n </span>\r\n `\r\n })\r\n if (corrects) {\r\n elementCorrects.forEach((element, index) => {\r\n const inputId = element.id\r\n\r\n let inputClass\r\n // if (corrects) {\r\n const correctAnswer = corrects?.filter(\r\n (ans: any) => ans.answer_position === index + 1\r\n )\r\n if (correctAnswer) {\r\n inputClass = 'text-state-success-v2'\r\n // }\r\n element.outerHTML = `\r\n <span>\r\n <span id=\"${inputId}\" class = \"${inputClass}\">${correctAnswer\r\n .map((e, i) => {\r\n if (i < correctAnswer.length - 1) {\r\n return e.answer + ' / '\r\n } else return e.answer\r\n })\r\n .join('')} <span/>\r\n </span>\r\n `\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n }\r\n\r\n setQuestionContent(doc)\r\n }, [defaultAnswer])\r\n\r\n return (\r\n <React.Fragment>\r\n <EditorReader\r\n key={uniqueId('key')}\r\n className='sapp-questions-v2 mb-6 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n questionContent?.documentElement.querySelector('body')?.innerHTML ||\r\n ''\r\n )}\r\n />\r\n {answerContent && (\r\n <div>\r\n <div className='text-bw-2 font-semibold text-lg'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='sapp-questions-v2 white-space-nowrap mt-2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n answerContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4 sapp-questions-v2 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n }\r\n)\r\nAddWordPreview.displayName = 'AddWordPreview'\r\nexport default AddWordPreview\r\n","import clsx from 'clsx'\r\nimport React from 'react'\r\n\r\ninterface IProps {\r\n checked: boolean\r\n disabled?: boolean\r\n onChange: React.ChangeEventHandler<HTMLInputElement>\r\n className?: string\r\n name?: string\r\n value?: string | boolean\r\n state?: 'default' | 'error' | 'success' | 'primary' // Thêm prop state\r\n size?: 'small' | 'medium' | 'lager' // Thêm prop size\r\n lowerOptions?: boolean\r\n inputStyle?: string\r\n}\r\n\r\nconst STATE = {\r\n success:\r\n '!border-state-success-v2 checked:bg-state-success-v2 checked:hover:bg-state-success-v2 checked:focus:bg-state-success-v2',\r\n error:\r\n '!border-state-error-v2 checked:bg-state-error-v2 checked:hover:bg-state-error-v2 checked:focus:bg-state-error-v2',\r\n default:\r\n '!border-gray-800 checked:bg-bw-1 checked:hover:bg-bw-1 checked:focus:bg-bw-1',\r\n primary:\r\n 'checked:bg-primary checked:hover:bg-primary checked:focus:bg-primary'\r\n}\r\n\r\nconst SIZES = {\r\n small: 'w-5 h-4.5',\r\n medium: 'w-[24px] h-[24px]',\r\n lager: 'w-[30px] h-[30px]'\r\n}\r\n\r\nconst SAPPCheckboxV2 = ({\r\n checked,\r\n disabled,\r\n onChange,\r\n className,\r\n value,\r\n state = 'default', // Gán giá trị mặc định cho prop state\r\n size = 'medium', // Gán giá trị mặc định cho prop size\r\n lowerOptions = false,\r\n inputStyle = 'border-gray-800'\r\n}: IProps) => {\r\n return (\r\n <div className={`inline-block ${className}`}>\r\n <input\r\n className={clsx(\r\n 'block h-6 w-6 bg-transparent',\r\n 'rounded-[5px] outline-none ring-0 ring-offset-0 focus:outline-none focus:ring-0 focus:ring-offset-0',\r\n SIZES[size],\r\n inputStyle,\r\n STATE[state],\r\n {\r\n 'cursor-not-allowed opacity-60': disabled,\r\n 'cursor-pointer': !disabled,\r\n 'border-none': lowerOptions\r\n }\r\n )}\r\n type='checkbox'\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n value={value?.toString()}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default SAPPCheckboxV2\r\n","import clsx from 'clsx'\r\nimport React from 'react'\r\n\r\ntype Props = {\r\n show: boolean\r\n className?: string\r\n}\r\n\r\nconst YourAnswerV2 = ({ show, className }: Props) => {\r\n return (\r\n <React.Fragment>\r\n {show && (\r\n <div\r\n className={clsx(\r\n 'ml-3 inline-block max-h-5.5 whitespace-nowrap rounded border-none bg-info-50 py-[2px] px-2 text-sm font-normal text-info-500',\r\n className\r\n )}\r\n >\r\n Your Answer\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default YourAnswerV2\r\n","import { uniqueId } from 'lodash'\r\nimport React from 'react'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Control, Controller } from 'react-hook-form'\r\nimport ErrorMessage from '../button/ErrorMessage'\r\nimport SAPPCheckboxV2 from './SAPPCheckboxV2'\r\nimport YourAnswerV2 from '../button/YourAnswerV2'\r\n\r\ninterface IHookFormCheckBoxProps {\r\n name: string\r\n control: Control<any>\r\n defaultValue?: string | boolean\r\n title?: string\r\n className?: string\r\n onChange?: (e: any) => void\r\n checked?: string | boolean\r\n isWrong?: boolean\r\n label?: string | undefined\r\n required?: boolean\r\n disabled?: boolean\r\n classNameTitle?: string\r\n options: Array<{\r\n label?: string\r\n value: string | boolean\r\n description?: string\r\n }>\r\n direction?: 'horizontal' | 'vertical'\r\n gap?: string\r\n justify?: 'between' | 'start' | 'center' | 'end'\r\n multiple?: boolean\r\n state?: 'default' | 'error' | 'success' // Thêm prop state\r\n size?: 'small' | 'medium' | 'lager' // Thêm prop size\r\n corrects?: { [key: string]: boolean }\r\n toggle?: boolean\r\n positionCheckBox?: 'start' | 'center' | 'bottom'\r\n lowerOptions?: boolean\r\n seprateLine?: boolean\r\n widthOptions?: string\r\n}\r\n\r\nconst HookFormCheckBoxGroup = ({\r\n name,\r\n control,\r\n defaultValue,\r\n title,\r\n className = '',\r\n onChange,\r\n checked,\r\n isWrong,\r\n // label,\r\n // required,\r\n disabled,\r\n classNameTitle,\r\n options,\r\n direction = 'vertical',\r\n gap,\r\n justify,\r\n multiple = false,\r\n size = 'small',\r\n state,\r\n corrects,\r\n toggle = false,\r\n positionCheckBox = 'center',\r\n lowerOptions = false,\r\n seprateLine = false,\r\n widthOptions = ''\r\n}: IHookFormCheckBoxProps) => {\r\n gap = !seprateLine\r\n ? gap || (direction === 'horizontal' ? 'gap-6' : 'gap-4')\r\n : ''\r\n return (\r\n <Controller\r\n control={control}\r\n name={name}\r\n defaultValue={defaultValue}\r\n render={({ field, fieldState: { error } }) => {\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={\r\n (direction === 'horizontal'\r\n ? '_horizontal flex flex-wrap'\r\n : '_vertical flex flex-col') +\r\n ` ${gap} ` +\r\n ` ${\r\n justify === 'between'\r\n ? 'justify-between'\r\n : justify === 'center'\r\n ? 'justify-center'\r\n : justify === 'start'\r\n ? 'justify-start'\r\n : 'justify-end'\r\n } ${seprateLine && 'sapp-separateLine'}`\r\n }\r\n >\r\n {options.map((option, index) => {\r\n let state: 'error' | 'default' | 'success' | undefined\r\n let stateLabel: string = 'text-bw-1'\r\n\r\n const checked: boolean = multiple\r\n ? field.value?.includes(option.value.toString())\r\n : option.value.toString() === field.value\r\n\r\n if (corrects) {\r\n if (corrects?.[option.value as string]) {\r\n state = 'success'\r\n stateLabel = 'text-state-success-v2'\r\n } else if (checked) {\r\n state = 'error'\r\n stateLabel = 'text-state-error-v2'\r\n }\r\n }\r\n const checkHasChecked = multiple\r\n ? field.value?.length > 0\r\n : false\r\n\r\n return (\r\n <label\r\n className={`flex justify-center items-${positionCheckBox} w-fit ${\r\n disabled\r\n ? 'opacity-60 cursor-not-allowed'\r\n : 'cursor-pointer'\r\n } ${corrects && 'pointer-events-none'} ${\r\n seprateLine && 'py-2'\r\n } ${widthOptions}`}\r\n key={uniqueId(option.label)}\r\n >\r\n <SAPPCheckboxV2\r\n className={`me-2 ${className}`}\r\n checked={checked}\r\n lowerOptions={lowerOptions && !checked && checkHasChecked}\r\n onChange={(event: React.ChangeEvent<any>) => {\r\n if (multiple) {\r\n let arr = [] as any\r\n if (field.value?.length > 0) {\r\n arr = [...field.value]\r\n if (arr.includes(event.target.value)) {\r\n const newArr = arr.filter(\r\n (e: any) => e !== event.target.value\r\n )\r\n arr = [...newArr]\r\n } else {\r\n arr.push(event.target.value)\r\n }\r\n } else {\r\n arr.push(event.target.value)\r\n }\r\n field.onChange(arr)\r\n onChange && onChange(arr)\r\n } else {\r\n if (toggle) {\r\n if (event.target.value === field.value) {\r\n field.onChange(undefined)\r\n onChange && onChange(undefined as any)\r\n } else {\r\n field.onChange(event.target.value)\r\n onChange && onChange(event.target.value)\r\n }\r\n } else {\r\n field.onChange(event.target.value)\r\n onChange && onChange(event.target.value)\r\n }\r\n }\r\n }}\r\n disabled={disabled}\r\n state={state}\r\n value={option.value.toString()}\r\n size={size}\r\n inputStyle='rounded-lg w-[24px] h-[24px]'\r\n />\r\n <span\r\n className={`${\r\n classNameTitle || ''\r\n } ${stateLabel} form-check-label fw-semibold ${\r\n lowerOptions &&\r\n !checked &&\r\n checkHasChecked &&\r\n 'text-gray-2'\r\n }`}\r\n >\r\n {option.label}\r\n <YourAnswerV2\r\n show={checked && !!corrects}\r\n className='max-h-6 !rounded !text-sm'\r\n />\r\n </span>\r\n </label>\r\n )\r\n })}\r\n </div>\r\n <ErrorMessage>{error?.message}</ErrorMessage>\r\n </React.Fragment>\r\n )\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default HookFormCheckBoxGroup\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { SOLUTION_TITLE } from 'constant'\r\nimport EditorReader from '../../editor/EditorReader'\r\nimport {\r\n getUppercaseByNumber,\r\n replaceTextAlignCenterToWebKitCenter\r\n} from '../../../utils'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { IPreviewProp } from './OneChoiceQuestion'\r\nimport HookFormCheckBoxGroupV2 from '@components/common/checkboxV2/HookFormCheckBoxGroupV2'\r\n\r\nconst MultiChoiceQuestion = ({\r\n data,\r\n control,\r\n corrects,\r\n name,\r\n defaultValues,\r\n setValue,\r\n solution\r\n}: IPreviewProp) => {\r\n const convertAnswer = useMemo(() => {\r\n const answers = []\r\n let number = 0\r\n if (data?.answers) {\r\n const oldData = [...data?.answers]\r\n const sorted = oldData?.sort(\r\n (a: any, b: any) => a?.answer_position - b?.answer_position\r\n )\r\n for (const e of sorted) {\r\n number++\r\n answers.push({\r\n label: `${getUppercaseByNumber(number)}. ${e?.answer}`,\r\n value: e?.id\r\n })\r\n }\r\n }\r\n return answers\r\n }, [data])\r\n useEffect(() => {\r\n if (defaultValues) {\r\n setValue(name, defaultValues)\r\n } else {\r\n setValue(name, '')\r\n }\r\n }, [defaultValues])\r\n\r\n return (\r\n <React.Fragment>\r\n <div>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_content || ''\r\n )}\r\n className='sapp-questions-v2 mb-6'\r\n />\r\n </div>\r\n <div\r\n className='sapp-answer-wrapper'\r\n style={{\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <HookFormCheckBoxGroupV2\r\n options={convertAnswer || []}\r\n control={control}\r\n name={name || 'multiples'}\r\n multiple\r\n corrects={corrects}\r\n defaultValue={defaultValues || ''}\r\n // justify='start'\r\n positionCheckBox='start'\r\n />\r\n </div>\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n {SOLUTION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4 text-gray-800 sapp-questions-v2 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_contentsolution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\nexport default MultiChoiceQuestion\r\n","import React from 'react'\r\n\r\ninterface IProps {\r\n name?: string\r\n value?: string | boolean\r\n ktCheck?: boolean\r\n checkTarget?: string\r\n checked: boolean\r\n onChange: React.ChangeEventHandler<HTMLInputElement>\r\n className?: string\r\n disabled?: boolean\r\n state?: 'default' | 'error' | 'success'\r\n size?: 'small' | 'medium' | 'lager'\r\n}\r\n\r\nconst STATE = {\r\n success:\r\n '!border-state-success-v2 checked:bg-radio-success-checked checked:text-transparent checked:hover:bg-radio-success-checked checked:focus:bg-radio-success-checked',\r\n error:\r\n '!border-state-error-v2 checked:bg-radio-error-checked checked:text-transparent checked:hover:bg-radio-error-checked checked:focus:bg-radio-error-checked',\r\n default:\r\n '!border-gray-800 checked:bg-radio-default-checked checked:text-transparent checked:hover:bg-radio-default-checked checked:focus:bg-radio-default-checked'\r\n}\r\n\r\nconst SIZES = {\r\n small: 'w-4.5 h-4.5',\r\n medium: 'w-[24px] h-[24px]',\r\n lager: 'w-[30px] h-[30px]'\r\n}\r\n\r\nconst SAPPRadioV2 = ({\r\n name,\r\n value,\r\n ktCheck,\r\n checkTarget,\r\n checked,\r\n onChange,\r\n className = '',\r\n disabled = false,\r\n state = 'default',\r\n size = 'medium'\r\n}: IProps) => {\r\n return (\r\n <div className={`inline-block ${SIZES[size]} ${className}`}>\r\n <input\r\n name={name}\r\n className={`${\r\n STATE[state]\r\n } block w-full h-full bg-center bg-no-repeat bg-radio-normal rounded-full border-0 border-transparent outline-none ring-0 ring-offset-0 focus:outline-none focus:ring-0 focus:ring-offset-0 ${\r\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\r\n }`}\r\n type='radio'\r\n data-kt-check={ktCheck}\r\n data-kt-check-target={checkTarget}\r\n checked={checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n value={value?.toString()}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default SAPPRadioV2\r\n","import { uniqueId } from 'lodash'\r\nimport React from 'react'\r\n// eslint-disable-next-line no-unused-vars\r\nimport { Control, Controller } from 'react-hook-form'\r\nimport ErrorMessage from '../button/ErrorMessage'\r\nimport SAPPRadioV2 from './SAPPRadioV2'\r\nimport clsx from 'clsx'\r\n// import YourAnswerV2 from '../button/YourAnswerV2'\r\n\r\ninterface IHookFormRadioGroupV2Props {\r\n name: string\r\n control: Control<any>\r\n defaultValue?: unknown\r\n options: Array<{\r\n label?: string\r\n value: string | boolean\r\n description?: string\r\n disabled?: boolean\r\n }>\r\n direction?: 'horizontal' | 'vertical'\r\n separator?: boolean\r\n justify?: 'between' | 'start' | 'center' | 'end'\r\n gap?: string\r\n onChange?: React.ChangeEventHandler<HTMLInputElement>\r\n labelClass?: string\r\n labelClassChecked?: string\r\n disabled?: boolean\r\n corrects?: { [key: string]: boolean }\r\n}\r\n\r\nconst HookFormRadioGroupV2 = ({\r\n name,\r\n control,\r\n defaultValue,\r\n options,\r\n direction,\r\n separator,\r\n gap,\r\n onChange,\r\n justify = 'between',\r\n labelClass = '',\r\n labelClassChecked = '',\r\n disabled,\r\n corrects\r\n}: IHookFormRadioGroupV2Props) => {\r\n gap = gap || (direction === 'horizontal' ? 'gap-6' : 'gap-4')\r\n return (\r\n <Controller\r\n control={control}\r\n name={name}\r\n defaultValue={defaultValue}\r\n render={({ field, fieldState: { error } }) => {\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={\r\n (direction === 'horizontal'\r\n ? '_horizontal flex flex-wrap'\r\n : '_vertical flex flex-col') +\r\n ` ${gap} ` +\r\n ` ${\r\n justify === 'between'\r\n ? 'justify-between'\r\n : justify === 'center'\r\n ? 'justify-center'\r\n : justify === 'start'\r\n ? 'justify-start'\r\n : 'justify-end'\r\n }`\r\n }\r\n >\r\n {options.map((option, index) => {\r\n let state: 'error' | 'default' | 'success' | undefined\r\n let stateLabel: string = 'text-bw-1'\r\n const checked: boolean = option.value.toString() === field.value\r\n\r\n if (corrects) {\r\n if (corrects?.[option.value as string]) {\r\n state = 'success'\r\n stateLabel = 'text-state-success-v2'\r\n } else if (checked) {\r\n state = 'error'\r\n stateLabel = 'text-state-error-v2'\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n key={uniqueId('check')}\r\n className={`${!!corrects && 'pointer-events-none'}`}\r\n >\r\n <div className='flex flex-row'>\r\n <label\r\n className={`flex gap-3 flex-row items-start ${\r\n (\r\n option.disabled !== undefined\r\n ? option.disabled\r\n : disabled\r\n )\r\n ? 'opacity-60 cursor-not-allowed'\r\n : 'cursor-pointer'\r\n }`}\r\n >\r\n <SAPPRadioV2\r\n name={field.name}\r\n disabled={\r\n option.disabled !== undefined\r\n ? option.disabled\r\n : disabled\r\n }\r\n onChange={(e) => {\r\n onChange && onChange(e)\r\n field.onChange(e.target.value)\r\n }}\r\n key={index}\r\n value={option.value.toString()}\r\n checked={checked}\r\n className='flex-none mt-[3px]'\r\n state={state}\r\n size='small'\r\n />\r\n <span className='flex-1'>\r\n <div\r\n className={`${\r\n option.value === field.value\r\n ? ` ${stateLabel} ${labelClassChecked || ''}`\r\n : ` ${stateLabel} ${labelClass || ''}`\r\n } flex-1 fw-bold text-base`}\r\n >\r\n <span\r\n className={clsx({\r\n 'mr-3': checked && !!corrects\r\n })}\r\n >\r\n {option.label}\r\n </span>\r\n {/* <YourAnswerV2\r\n show={checked && !!corrects}\r\n className='max-h-6 !rounded !text-sm'\r\n /> */}\r\n </div>\r\n {option.description && (\r\n <div className='text-sm text-gray-500'>\r\n {option.description}\r\n </div>\r\n )}\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n <ErrorMessage>{error?.message}</ErrorMessage>\r\n </React.Fragment>\r\n )\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default HookFormRadioGroupV2\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport EditorReader from '../../editor/EditorReader'\r\nimport HookFormRadioGroupV2 from '@components/common/radiobuttonV2/HookFormRadioGroupV2'\r\nexport type IPreviewProp = {\r\n data: any\r\n control: any\r\n name?: string\r\n corrects?: { [key: string]: boolean }\r\n defaultValues?: any\r\n setValue?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n solution?: any\r\n allowUnHighLight?: boolean\r\n}\r\nconst OneChoiceQuestion = ({\r\n data,\r\n control,\r\n corrects,\r\n name,\r\n defaultValues,\r\n setValue,\r\n solution\r\n}: IPreviewProp) => {\r\n useEffect(() => {\r\n if (defaultValues) {\r\n setValue(name, defaultValues)\r\n } else {\r\n setValue(name, '')\r\n }\r\n }, [defaultValues])\r\n const convertAnswer = useMemo(() => {\r\n const answers = []\r\n if (data?.answers) {\r\n for (const e of data?.answers) {\r\n answers.push({ label: e.answer || '', value: e.id })\r\n }\r\n }\r\n return answers\r\n }, [data])\r\n return (\r\n <React.Fragment>\r\n <div>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n data?.question_content || ''\r\n )}\r\n className='sapp-questions-v2 mb-6'\r\n />\r\n </div>\r\n <div\r\n className='sapp-answer-wrapper'\r\n style={{\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <HookFormRadioGroupV2\r\n options={convertAnswer || []}\r\n control={control}\r\n name={name || 'answer'}\r\n corrects={corrects}\r\n defaultValue={defaultValues}\r\n />\r\n </div>\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6'>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='mt-4 text-gray-800 sapp-questions-v2 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\nexport default OneChoiceQuestion\r\n","/* eslint-disable no-unused-vars */\r\n/* eslint-disable camelcase */\r\nimport { EXPLANATION_TITLE } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport { isNull, isUndefined, uniqueId } from 'lodash'\r\nimport React, { ForwardedRef, forwardRef, useEffect, useState } from 'react'\r\nimport EditorReader from '../../editor/EditorReader'\r\ninterface IProps {\r\n data: any\r\n action?: any\r\n handleSaveHighLight?: any\r\n highlighted?: any\r\n removeHighlight?: any\r\n allowHighLight?: boolean\r\n defaultAnswer?: any\r\n corrects?: {\r\n id: string\r\n answer: string\r\n is_correct: boolean\r\n answer_position: number\r\n }[]\r\n extenalRef?: any\r\n solution?: string\r\n allowUnHighLight?: boolean\r\n}\r\nconst SelectWord = forwardRef(\r\n (\r\n {\r\n data,\r\n action,\r\n handleSaveHighLight,\r\n highlighted,\r\n removeHighlight,\r\n allowHighLight,\r\n defaultAnswer,\r\n corrects,\r\n extenalRef,\r\n solution,\r\n allowUnHighLight\r\n }: IProps,\r\n ref: ForwardedRef<any>\r\n ) => {\r\n const [questionContent, setQuestionContent] = useState<any>()\r\n const [answerContent, setAnswerContent] = useState<any>()\r\n const str = data?.question_content\r\n const [key, setKey] = useState<string>(uniqueId('key'))\r\n const formatAnswer = (data: any) => {\r\n const objAnswer: any = {}\r\n for (const e of data?.answers) {\r\n if (!objAnswer[e.answer_position]) {\r\n objAnswer[e.answer_position] = []\r\n }\r\n objAnswer[e.answer_position].push({\r\n label: e.answer,\r\n value: e.id,\r\n result: e.is_correct\r\n })\r\n }\r\n return objAnswer\r\n }\r\n const answerObj = formatAnswer(data)\r\n\r\n const parser = new DOMParser()\r\n const isSelfReflection = data?.is_self_reflection\r\n\r\n useEffect(() => {\r\n const doc = parser.parseFromString(str, 'text/html')\r\n const elements = doc.querySelectorAll('.question-content-tag')\r\n const doc2 = parser.parseFromString(str, 'text/html')\r\n const elementCorrects = doc2.querySelectorAll('.question-content-tag')\r\n\r\n elements.forEach((element, index) => {\r\n const selectElement = document.createElement('span')\r\n selectElement.classList.add('sapp-select--selectword-preview-v2')\r\n selectElement.setAttribute('required', 'true')\r\n selectElement.id = element.id\r\n\r\n const defaultAnswerValue = defaultAnswer?.[index] || ''\r\n const correctAnswer = answerObj?.[+index + 1]?.find(\r\n (e: any) => e.value === defaultAnswerValue\r\n )\r\n const tooltip = document.createElement('div')\r\n tooltip.classList.add('tooltip-container')\r\n const answer =\r\n data.answers?.find(\r\n (answer: { id: string; value: string }) =>\r\n !isUndefined(defaultAnswer?.[index]) &&\r\n !isNull(defaultAnswer?.[index]) &&\r\n answer?.id === defaultAnswer?.[index]\r\n )?.answer || ''\r\n // tooltip.innerHTML = `\r\n // <div class=\"tooltip-text ${\r\n // !!answer && answer.length > 7 ? 'block' : 'hidden'\r\n // }\">${answer}</div>\r\n // `\r\n tooltip.appendChild(selectElement)\r\n\r\n let optionClass = ''\r\n\r\n if (corrects) {\r\n const isCorrect = corrects?.some(\r\n (correct) =>\r\n correct.answer_position === index + 1 &&\r\n correct.id === defaultAnswerValue &&\r\n correct.is_correct\r\n )\r\n optionClass =\r\n isCorrect || isSelfReflection === true\r\n ? '!border-success-v2'\r\n : '!border-danger-v2'\r\n const textClass = 'text-gray-800'\r\n selectElement.classList.add(optionClass)\r\n selectElement.classList.add('sapp-select-confirmed')\r\n selectElement.classList.add('rounded-lg')\r\n selectElement.classList.add('my-2')\r\n selectElement.classList.add(textClass)\r\n selectElement.setAttribute('disabled', 'true')\r\n selectElement.innerHTML = correctAnswer?.label || answer\r\n // selectElement.innerHTML = `\r\n // <option value=\"\" disabled selected ></option>\r\n // ${answerObj?.[+index + 1]?.map((e: any) => {\r\n // const isSelected = e.value === defaultAnswerValue\r\n\r\n // return `<option value=\"${e.value}\" ${\r\n // isSelected ? 'selected' : ''\r\n // } >${e.label}</option>`\r\n // })}\r\n // `\r\n }\r\n\r\n element.replaceWith(tooltip)\r\n })\r\n if (corrects) {\r\n elementCorrects.forEach((element, index) => {\r\n const inputId = element.id\r\n const inputValue = defaultAnswer?.[index] || ''\r\n\r\n let inputClass\r\n // if (corrects) {\r\n const correctAnswers = corrects?.filter(\r\n (ans: any) => ans.answer_position === index + 1 && ans.is_correct\r\n )\r\n if (correctAnswers.length > 0) {\r\n inputClass = 'text-state-success-v2'\r\n // }\r\n\r\n const answersText = correctAnswers\r\n .map((correctAnswer, i) => `${correctAnswer.answer}`)\r\n .join(' / ') // Ghép các câu đúng bằng dấu \"/\"\r\n\r\n element.outerHTML = `\r\n <span>\r\n <span id=\"${inputId}\" class = \"${inputClass}\">${answersText} <span/>\r\n </span>\r\n `\r\n }\r\n })\r\n setAnswerContent(doc2)\r\n }\r\n\r\n setQuestionContent(doc)\r\n }, [defaultAnswer, data])\r\n\r\n const handleChangeElement = (event: any, select: any) => {\r\n const sibling = select.previousElementSibling\r\n const answer =\r\n data?.answers?.find(\r\n (item: { id: string; answer: string }) =>\r\n item.id === event.target.value\r\n )?.answer || ''\r\n if (sibling) {\r\n sibling.innerHTML = answer || ''\r\n if (!!answer && answer.length > 7) {\r\n sibling.classList.remove('hidden')\r\n sibling.classList.add('block')\r\n } else {\r\n sibling.classList.remove('block')\r\n sibling.classList.add('hidden')\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const setupSelectListeners = () => {\r\n const selectList = document.querySelectorAll(\r\n 'select.sapp-select--selectword-preview'\r\n )\r\n selectList.forEach((select: any) => {\r\n if (!select.dataset.listenerAttached) {\r\n select.addEventListener('change', (event: any) =>\r\n handleChangeElement(event, select)\r\n )\r\n select.dataset.listenerAttached = 'true'\r\n }\r\n })\r\n }\r\n const observer = new MutationObserver(() => {\r\n setupSelectListeners()\r\n })\r\n observer.observe(document.body, { childList: true, subtree: true })\r\n setupSelectListeners()\r\n\r\n return () => {\r\n observer.disconnect()\r\n }\r\n }, [data])\r\n\r\n return (\r\n <React.Fragment>\r\n <EditorReader\r\n key={key}\r\n className='sapp-questions-v2 mb-6 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n questionContent?.documentElement.querySelector('body')?.innerHTML ||\r\n ''\r\n )}\r\n />\r\n {answerContent && (\r\n <React.Fragment>\r\n <div className='text-bw-2 font-semibold text-lg'>\r\n Correct Answer\r\n </div>\r\n <EditorReader\r\n className='sapp-questions-v2 white-space-nowrap mt-2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n answerContent?.documentElement.querySelector('body')\r\n ?.innerHTML || ''\r\n )}\r\n />\r\n </React.Fragment>\r\n )}\r\n {solution && (\r\n <div className='bg-gray-4 mt-6 p-6 '>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n {EXPLANATION_TITLE}\r\n </div>\r\n <EditorReader\r\n className='sapp-questions-v2 white-space-nowrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n solution || ''\r\n )}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n }\r\n)\r\nSelectWord.displayName = 'SelectWord'\r\nexport default SelectWord\r\n","import React from 'react'\n// eslint-disable-next-line no-unused-vars\nimport { BaseEdge, EdgeProps, getBezierPath } from '@xyflow/react'\nimport { Grid } from 'antd'\n\nfunction getCustomBezierPath({\n sourceX,\n sourceY,\n targetX,\n targetY,\n curvature = 0.5\n}: {\n sourceX: number\n sourceY: number\n targetX: number\n targetY: number\n curvature?: number\n}): string {\n const dx = targetX - sourceX\n const cpx1 = sourceX + dx * curvature\n const cpy1 = sourceY\n const cpx2 = targetX - dx * curvature\n const cpy2 = targetY\n\n return `M ${sourceX},${sourceY} C ${cpx1},${cpy1} ${cpx2},${cpy2} ${targetX},${targetY}`\n}\n\nconst CustomEdge: React.FC<EdgeProps> = ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n style\n}) => {\n const { useBreakpoint } = Grid\n const { lg } = useBreakpoint()\n\n // Điều chỉnh điểm target nếu cần\n let adjustedTargetX = targetX\n const adjustedTargetY = targetY\n\n if (targetPosition === 'left') {\n adjustedTargetX = targetX + 3\n }\n\n const curvature = lg ? 0.5 : 0.8\n\n const edgePath = getCustomBezierPath({\n sourceX,\n sourceY,\n targetX: adjustedTargetX,\n targetY: adjustedTargetY,\n curvature: curvature\n })\n\n const markerId = `arrowhead-${id}`\n const strokeColor = style?.stroke || '#EF5941'\n\n return (\n <React.Fragment>\n <svg style={{ height: 0, width: 0 }}>\n <defs>\n <marker\n id={markerId}\n markerWidth='10'\n markerHeight='10'\n refX='3.5'\n refY='3.9'\n orient='0'\n markerUnits='strokeWidth'\n >\n <path\n d='M3.604 3.519C3.799 3.715 3.799 4.032 3.604 4.226L0.422 7.409C0.227 7.604 -0.0905 7.604 -0.2855 7.409C-0.481 7.213 -0.481 6.897 -0.2855 6.701L2.543 3.873L-0.2855 1.045C-0.481 0.849 -0.481 0.533 -0.2855 0.337C-0.0905 0.142 0.227 0.142 0.422 0.337L3.604 3.519Z'\n fill={strokeColor}\n />\n </marker>\n </defs>\n </svg>\n <BaseEdge\n id={id}\n path={edgePath}\n markerEnd={`url(#${markerId})`}\n style={{\n stroke: style?.stroke || '#EF5941',\n strokeWidth: 2,\n color: style?.stroke || '#EF5941'\n }}\n />\n </React.Fragment>\n )\n}\n\nexport default CustomEdge\n","/* eslint-disable no-unused-vars */\nimport React, { useRef, useState, useEffect } from 'react'\nimport * as ReactFlow from '@xyflow/react'\nimport type { NodeProps } from '@xyflow/react'\nimport { Grid, Tooltip } from 'antd'\n\nexport enum Color {\n TextDefault = '#000000',\n Success = '#078A4D',\n Error = '#F80903',\n ArrowDefault = '#EF5941'\n}\n\nexport const CustomNode: React.FC<NodeProps> = ({ data }) => {\n const handleStyle: React.CSSProperties = {\n width: '15px',\n height: '15px',\n background: '#fff',\n border: `2px solid ${data?.edgeColor || Color?.ArrowDefault}`,\n borderRadius: '50%'\n }\n const { useBreakpoint } = Grid\n const { lg } = useBreakpoint()\n const NODE_WIDTH = lg ? 328 : 290\n\n // Thêm màu border vàng khi được chọn\n const borderColor = data?.isSelected ? '#EF5941' : 'none'\n\n // Truncate + Tooltip logic\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTruncated, setIsTruncated] = useState(false)\n\n useEffect(() => {\n const el = labelRef.current\n if (el) {\n setIsTruncated(el.scrollHeight > el.clientHeight + 1) // +1 để tránh lỗi float\n }\n }, [data.label, lg])\n\n return (\n <div\n style={{\n color: (data?.color || Color?.TextDefault) as string,\n width: NODE_WIDTH + 'px',\n border: `2px solid ${borderColor}`,\n boxSizing: 'border-box',\n cursor: data?.onClick ? 'pointer' : 'default'\n }}\n className='relative min-h-10 break-words rounded-lg bg-white p-4 text-start text-base shadow-small'\n >\n <Tooltip\n title={isTruncated ? (data.label as React.ReactNode) : undefined}\n placement='top'\n >\n <span\n ref={labelRef}\n style={{\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordBreak: 'break-word',\n lineHeight: '1.5',\n maxHeight: '3em', // 2 lines * 1.5em\n minHeight: '3em', // fix chiều cao đúng 2 dòng\n height: '3em' // fix luôn height\n }}\n >\n {data.label as string}\n </span>\n </Tooltip>\n {data.role === 'question' && (\n <ReactFlow.Handle\n type='source'\n position={ReactFlow.Position.Right}\n style={handleStyle}\n id='right'\n isConnectable={false}\n />\n )}\n\n {data.role === 'answer' && (\n <ReactFlow.Handle\n type='target'\n position={ReactFlow.Position.Left}\n style={{\n ...handleStyle,\n opacity: 0\n }}\n id='left'\n isConnectable={false}\n />\n )}\n </div>\n )\n}\n","import { useReactFlow, ConnectionMode, ReactFlow } from '@xyflow/react'\r\n// eslint-disable-next-line no-unused-vars\r\nimport type { Edge, Node, OnConnect, NodeTypes, EdgeTypes } from '@xyflow/react'\r\nimport React, { useCallback, useEffect, useRef } from 'react'\r\n\r\n// Định nghĩa kiểu dữ liệu cho các props của CustomFlow\r\ninterface CustomFlowProps {\r\n nodes: Node[]\r\n edges: Edge[]\r\n onConnect: OnConnect\r\n nodeTypes: NodeTypes\r\n edgeTypes: EdgeTypes\r\n}\r\n\r\nconst CustomFlow = ({\r\n nodes,\r\n edges,\r\n onConnect,\r\n nodeTypes,\r\n edgeTypes\r\n}: CustomFlowProps) => {\r\n const { setViewport } = useReactFlow()\r\n const wrapperRef = useRef<HTMLDivElement>(null)\r\n\r\n const fixedViewport = { x: 0, y: 0, zoom: 1 }\r\n\r\n const onMove = useCallback((event: any, viewport: any) => {\r\n if (\r\n viewport.x !== fixedViewport.x ||\r\n viewport.y !== fixedViewport.y ||\r\n viewport.zoom !== fixedViewport.zoom\r\n ) {\r\n setViewport(fixedViewport)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n setViewport(fixedViewport)\r\n }, [setViewport])\r\n\r\n useEffect(() => {\r\n const wrapper = wrapperRef.current\r\n if (!wrapper) return\r\n\r\n const canvas = wrapper.querySelector(\r\n '.react-flow__viewport'\r\n ) as HTMLElement | null\r\n if (!canvas) return\r\n\r\n const wheelHandler = (e: Event) => {\r\n e.stopPropagation()\r\n }\r\n\r\n canvas.addEventListener('wheel', wheelHandler, { passive: true })\r\n\r\n return () => {\r\n canvas.removeEventListener('wheel', wheelHandler)\r\n }\r\n }, [])\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n style={{ height: '100%', width: '100%' }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <ReactFlow\r\n nodes={nodes}\r\n edges={edges}\r\n onMove={onMove}\r\n onConnect={onConnect}\r\n fitView={false}\r\n panOnDrag={false}\r\n zoomOnScroll={false}\r\n zoomOnPinch={false}\r\n panOnScroll={false}\r\n nodesDraggable={false}\r\n edgesReconnectable={false}\r\n minZoom={1}\r\n maxZoom={1}\r\n nodeTypes={nodeTypes}\r\n edgeTypes={edgeTypes}\r\n connectionMode={ConnectionMode.Strict}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomFlow\r\n","/* eslint-disable no-unused-vars */\nimport EditorReader from '../../../editor/EditorReader'\nimport { ReactFlowProvider, addEdge } from '@xyflow/react'\nimport type { Connection, Edge, Node } from '@xyflow/react'\nimport React, {\n ForwardedRef,\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport CustomEdge from './CustomEdge'\nimport { CustomNode } from './CustomNode'\nimport CustomFlow from './CustomFlow'\nimport { EXPLANATION_TITLE } from '@constant/index'\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\nimport { Divider, Grid } from 'antd'\n\ninterface IProps {\n data: any\n action?: any\n handleSaveHighLight?: any\n highlighted?: any\n removeHighlight?: any\n allowHighLight?: boolean\n defaultAnswer?: any\n done?: boolean\n extenalRef?: any\n index?: number\n corrects?: any\n solution?: string\n allowUnHighLight?: boolean\n uuid?: string\n isHideExhibit?: boolean\n isAlwaysShowAnswer?: boolean\n exhibitText?: string\n}\n\ntype Role = 'question' | 'answer'\ntype MatchNode = Node<{ label: string; role: Role; answer_position?: number }>\n\ninterface RawItem {\n id: string\n label: string\n role: Role\n answer_position: number\n}\n\ninterface TransformDataInput {\n questions: RawItem[]\n answers: RawItem[]\n containerWidth?: number\n nodeWidth?: number\n}\n\nenum Color {\n TextDefault = '#000000',\n Success = '#078A4D',\n Error = '#F80903',\n ArrowDefault = '#EF5941'\n}\n\nconst MatchQuiz = forwardRef(\n (\n { data, defaultAnswer, extenalRef, corrects, solution }: IProps,\n ref: ForwardedRef<any>\n ) => {\n const [edges, setEdges] = useState<Edge[]>([])\n const flowRef = useRef<HTMLDivElement>(null)\n const [nodes, setNodes] = useState<MatchNode[]>([])\n const [correctNodes, setCorrectNodes] = useState<Node[]>([])\n const [correctEdges, setCorrectEdges] = useState<Edge[]>([])\n const [key, setKey] = useState(1)\n const { useBreakpoint } = Grid\n const { lg } = useBreakpoint()\n const NODE_WIDTH = lg ? 328 : 290\n const CONTAINER_WIDTH = lg ? 852 : 640\n const getMatchedPairs = (edges: Edge[], nodes: MatchNode[]) => {\n const nodeMap = new Map(nodes.map((n) => [n.id, n]))\n\n return edges\n .map((edge) => {\n const sourceNode = nodeMap.get(edge.source)\n const targetNode = nodeMap.get(edge.target)\n\n if (!sourceNode || !targetNode) return null\n\n // Đảm bảo phân biệt đúng role giữa question và answer\n const isSourceQuestion = sourceNode.data.role === 'question'\n\n return {\n question_id: isSourceQuestion ? sourceNode.id : targetNode.id,\n answer_id: isSourceQuestion ? targetNode.id : sourceNode.id\n }\n })\n .filter(Boolean)\n }\n\n useImperativeHandle(ref, () => ({\n handleReset() {\n setKey((prev) => {\n const newKey = prev + 1\n return newKey\n })\n },\n getMatchedPairs: () => getMatchedPairs(edges, nodes)\n }))\n\n const transformDataToNodes = ({\n questions,\n answers,\n containerWidth = 700,\n nodeWidth = 295\n }: TransformDataInput): MatchNode[] => {\n const nodes: MatchNode[] = []\n\n // Create question nodes (left side, x: 0)\n questions.forEach((q, index) => {\n nodes.push({\n id: q.id,\n type: 'custom',\n position: { x: 0, y: index * 100 },\n data: { label: q.label, role: 'question' }\n })\n })\n\n // Create answer nodes (right side, x: containerWidth - nodeWidth)\n answers\n .sort((a, b) => (a.answer_position ?? 0) - (b.answer_position ?? 0))\n .forEach((a, index) => {\n nodes.push({\n id: a.id,\n type: 'custom',\n position: { x: containerWidth - nodeWidth, y: index * 100 },\n data: { label: a.label, role: 'answer' }\n })\n })\n\n return nodes\n }\n\n useEffect(() => {\n // Transform question_matchings into questions and answers\n const questions: RawItem[] = data.question_matchings.map((item: any) => ({\n id: item.id,\n label: item.content,\n role: 'question' as Role,\n color: Color.TextDefault // Mặc định màu đen, có thể thay đổi sau\n }))\n\n const answers: RawItem[] = data?.answers?.map((item: any) => ({\n id: item.id,\n label: item.answer,\n role: 'answer' as Role,\n color: Color.TextDefault, // Mặc định màu đen, có thể thay đổi sau\n answer_position: item?.answer_position\n }))\n\n const transformed = transformDataToNodes({\n questions,\n answers,\n containerWidth: flowRef.current?.clientWidth || CONTAINER_WIDTH,\n nodeWidth: NODE_WIDTH\n })\n setNodes(transformed)\n }, [data, NODE_WIDTH, CONTAINER_WIDTH])\n\n const nodeTypes = {\n custom: CustomNode\n }\n\n const edgeTypes = {\n custom: CustomEdge\n }\n\n const onConnect = useCallback((connection: Connection) => {\n setEdges((prev) => {\n // Xoá edge cũ có cùng target\n const filtered = prev.filter(\n (e) =>\n e.target !== connection.target && e.source !== connection.source\n )\n\n // Thêm edge mới\n return addEdge({ ...connection, type: 'custom' }, filtered)\n })\n }, [])\n\n const [isNodeReady, setNodeReady] = useState(false)\n\n useEffect(() => {\n if (!defaultAnswer || defaultAnswer.length === 0) return\n\n const hasCorrects = corrects && corrects.length > 0\n\n const newEdges: Edge[] = defaultAnswer.map((pair: any) => {\n const oldEdge = edges.find(\n (e) => e.source === pair.question_id && e.target === pair.answer_id\n )\n\n // Nếu có corrects thì đổi màu theo đúng/sai, không thì mặc định màu đen\n const isCorrect = hasCorrects\n ? corrects.some(\n (c: any) =>\n String(c?.id) === String(pair.question_id) &&\n (String(c?.answer_id) === String(pair?.answer_id) ||\n c?.answer_ids?.includes(pair?.answer_id))\n )\n : false\n\n return {\n id: `edge-${pair.question_id}-${pair.answer_id}`,\n source: pair.question_id,\n target: pair?.answer_id,\n type: 'custom',\n data: {\n ...(oldEdge ? oldEdge.data : {}),\n color: hasCorrects\n ? isCorrect\n ? Color.Success\n : Color.Error\n : Color?.ArrowDefault\n },\n style: {\n stroke: hasCorrects\n ? isCorrect\n ? Color.Success\n : Color.Error\n : Color?.ArrowDefault\n }\n }\n })\n\n setEdges(newEdges)\n }, [defaultAnswer, corrects])\n\n useEffect(() => {\n if (nodes.length > 0) setNodeReady(true)\n }, [nodes])\n\n useEffect(() => {\n if (!isNodeReady) return\n const hasCorrects = corrects && corrects.length > 0\n if (!hasCorrects) {\n // Khi chưa có corrects: tất cả node về màu đen, isDisabled false\n setNodes((prevNodes) =>\n prevNodes.map((node) => ({\n ...node,\n data: {\n ...node.data,\n color: Color.TextDefault,\n edgeColor: Color.ArrowDefault,\n isDisabled: false\n }\n }))\n )\n return\n }\n // Khi có corrects, đổi màu node theo đúng/sai như logic cũ\n const correctMap = new Map(\n corrects.map((item: any) => [item.id, item?.answer_id])\n )\n\n const connectedIds = new Set<string>()\n const nodeColors = new Map<string, string>()\n\n edges.forEach((edge) => {\n const answerCurrent = corrects?.find(\n (item: { id: string }) => item?.id === edge?.source\n )\n const isMultiAnswer = answerCurrent?.answer_ids?.includes(edge?.target)\n const isCorrect =\n correctMap.get(edge?.source) === edge?.target || isMultiAnswer\n connectedIds.add(edge?.source)\n connectedIds.add(edge?.target)\n\n nodeColors.set(edge.source, isCorrect ? Color.Success : Color.Error)\n nodeColors.set(edge.target, isCorrect ? Color.Success : Color.Error)\n })\n\n // Đánh dấu đỏ các node đúng nhưng chưa nối\n for (const item of corrects) {\n const question_id = item.id\n const answer_id = item?.answer_id\n\n if (!connectedIds.has(question_id)) {\n nodeColors.set(question_id, Color.Error)\n }\n if (!connectedIds.has(answer_id)) {\n nodeColors.set(answer_id, Color.Error)\n }\n }\n\n setNodes((prevNodes) =>\n prevNodes.map((node) => {\n if (node.data?.role && nodeColors.has(node.id)) {\n return {\n ...node,\n data: {\n ...node.data,\n color: nodeColors.get(node.id) || Color?.TextDefault,\n edgeColor: nodeColors.get(node.id) || Color?.ArrowDefault,\n isDisabled: true\n }\n }\n }\n return node\n })\n )\n }, [corrects, edges, isNodeReady])\n\n // Tạo flow cho các câu trả lời đúng\n const generateCorrectFlow = (corrects: any[], allNodes: Node[]) => {\n const nodeMap = new Map(allNodes.map((n) => [n.id, n]))\n const correctEdges: Edge[] = []\n const correctNodes: Node[] = []\n\n for (const item of corrects) {\n const sourceId = item.id\n const targetId = item?.answer_id\n\n const sourceNode = nodeMap.get(sourceId)\n const targetNode = nodeMap.get(targetId)\n\n if (sourceNode && targetNode) {\n const newSourceNode: Node = {\n ...sourceNode,\n id: `correct-${sourceId}`,\n position: {\n x: sourceNode.position.x,\n y: sourceNode.position.y\n },\n data: {\n ...sourceNode.data,\n isDisabled: true,\n color: Color.Success,\n edgeColor: Color.Success\n }\n }\n\n const newTargetNode: Node = {\n ...targetNode,\n id: `correct-${targetId}`,\n position: {\n x: targetNode.position.x,\n y: targetNode.position.y\n },\n data: {\n ...targetNode.data,\n isDisabled: true,\n color: Color.Success,\n edgeColor: Color.Success\n }\n }\n\n correctNodes.push(newSourceNode, newTargetNode)\n\n correctEdges.push({\n id: `correct-${sourceId}-${targetId}`,\n source: newSourceNode.id,\n target: newTargetNode.id,\n data: { isCorrect: true },\n style: { stroke: Color.Success },\n type: 'custom'\n })\n }\n }\n\n return {\n nodes: correctNodes,\n edges: correctEdges\n }\n }\n\n const correctFlow = useMemo(() => {\n if (!corrects || nodes.length === 0) return { nodes: [], edges: [] }\n\n const allAnswersCorrect = (defaultAnswer || [])?.every((pair: any) =>\n corrects.some(\n (c: any) =>\n String(c.id) === String(pair.question_id) &&\n String(c?.answer_id) === String(pair.answer_id)\n )\n )\n\n if (allAnswersCorrect) return { nodes: [], edges: [] }\n\n return generateCorrectFlow(corrects, nodes)\n }, [corrects, nodes, defaultAnswer])\n\n useEffect(() => {\n setCorrectEdges(correctFlow.edges)\n setCorrectNodes(correctFlow.nodes)\n }, [correctFlow])\n\n return (\n <div\n key={key}\n ref={extenalRef}\n style={{ minWidth: CONTAINER_WIDTH - 32 + 'px' }}\n >\n <div>\n <EditorReader\n className='sapp-questions-v2 mb-6 mr-8'\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\n data?.question_content || ''\n )}\n />\n </div>\n <div className='flex h-full w-full flex-col'>\n <div\n className={`relative w-full min-w-[${CONTAINER_WIDTH}]`}\n ref={flowRef}\n style={{\n // width: CONTAINER_WIDTH - 32 + 'px',\n minWidth: CONTAINER_WIDTH - 32 + 'px',\n height: `${(nodes?.length / 2 || 1) * 100}px`\n }}\n >\n <ReactFlowProvider>\n <CustomFlow\n key={key}\n nodes={nodes}\n edges={edges}\n onConnect={onConnect}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n />\n </ReactFlowProvider>\n </div>\n {!!corrects && !!correctNodes?.length && (\n <Fragment>\n <div className='h-px w-full' />\n <div className='mb-4 font-semibold text-lg text-bw-2'>\n Correct Answer:\n </div>\n <div\n className='relative w-full'\n ref={flowRef}\n style={{\n minWidth: CONTAINER_WIDTH - 32 + 'px',\n height: `${(correctNodes?.length / 2 || 1) * 100}px`\n }}\n >\n <ReactFlowProvider>\n <CustomFlow\n key={`correct-${key}`}\n nodes={correctNodes}\n edges={correctEdges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onConnect={onConnect}\n />\n </ReactFlowProvider>\n </div>\n </Fragment>\n )}\n </div>\n\n {solution && (\n <div className='mr-8'>\n <div className='divider my-8' />\n <div className='explanation'>\n <div className='font-semibold text-lg text-bw-2'>\n {EXPLANATION_TITLE}\n </div>\n <EditorReader\n className='mt-4 text-gray-800 sapp-questions-v2 white-space-nowrap'\n text_editor_content={solution}\n />\n </div>\n </div>\n )}\n </div>\n )\n }\n)\n\nMatchQuiz.displayName = 'MatchQuiz'\n\nconst MatchQuizWrapper = forwardRef((props: IProps, ref) => {\n return <MatchQuiz {...props} ref={ref} />\n})\n\nMatchQuizWrapper.displayName = 'MatchQuizWrapper'\n\nexport default MatchQuizWrapper\n","/* eslint-disable no-unused-vars */\r\nimport React, { Dispatch, SetStateAction } from 'react'\r\nimport { IFile, IShowExhibit } from '../constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../utils'\r\nimport EditorReader from './editor/EditorReader'\r\nimport FileDisplay from './FileDisplay'\r\nimport MovableWindow from './MovableWindow'\r\nimport SappIcon from './SappIcon'\r\n\r\ninterface IProps {\r\n showExhibit: IShowExhibit\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n setShowExhibit: Dispatch<SetStateAction<IShowExhibit | undefined>>\r\n exhibitText: string\r\n}\r\n\r\nconst ExhibitMovableWindowV2 = ({\r\n showExhibit,\r\n setOpenPdf,\r\n setShowExhibit,\r\n exhibitText\r\n}: IProps) => {\r\n return (\r\n <MovableWindow\r\n position={{\r\n width: '624px',\r\n height: '224px',\r\n left: showExhibit.left,\r\n top: showExhibit.top\r\n }}\r\n zIndex={999}\r\n >\r\n <div className='w-full h-full absolute top-0 left-0 border bg-white py-4 flex flex-col'>\r\n <div className='flex items-center justify-between flex-none px-6'>\r\n <div>\r\n <span className='font-bold'>\r\n {exhibitText || 'Exhibit'} {showExhibit.index}:{' '}\r\n </span>\r\n {showExhibit.name}\r\n </div>\r\n <div onClick={() => setShowExhibit(undefined)}>\r\n <SappIcon icon='x' className='cursor-pointer hover:fill-primary' />\r\n </div>\r\n </div>\r\n <div className='flex-auto overflow-scroll px-6'>\r\n {showExhibit?.description && (\r\n <EditorReader\r\n className='editor-wrap mt-1.5 sapp-questions-v2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n showExhibit?.description || ''\r\n )}\r\n />\r\n )}\r\n {showExhibit?.files &&\r\n showExhibit?.files?.length > 0 &&\r\n showExhibit?.files.map((e: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </MovableWindow>\r\n )\r\n}\r\n\r\nexport default ExhibitMovableWindowV2\r\n","import React from 'react'\r\nimport { isNull, isUndefined } from 'lodash'\r\nimport { Divider } from 'antd'\r\nimport { GradingDetail } from 'constant'\r\nimport EditorReader from '@components/editor/EditorReader'\r\nimport {\r\n formatGrade,\r\n replaceTextAlignCenterToWebKitCenter\r\n} from '@utils/graded'\r\n\r\nexport interface CommentModalProps {\r\n open: boolean\r\n detail: GradingDetail | null\r\n onClose: () => void\r\n}\r\n\r\nconst CommentModal = ({ open, detail }: CommentModalProps) => {\r\n if (!open || !detail) return null\r\n\r\n const hasGrade = !isNull(detail.grade) && !isUndefined(detail.grade)\r\n const hasComment = !!detail.comment\r\n\r\n if (!hasGrade && !hasComment) return null\r\n\r\n return (\r\n <div className='comment-modal-v2' role='presentation'>\r\n <div\r\n className='comment-modal-v2__panel'\r\n role='dialog'\r\n aria-label=\"Examiner's comment\"\r\n >\r\n {hasGrade && (\r\n <div className='comment-modal-v2__grade'>\r\n <span className='comment-modal-v2__grade-label'>Grade:</span>\r\n <span>{formatGrade(detail.grade)}</span>\r\n </div>\r\n )}\r\n {hasGrade && hasComment && (\r\n <Divider className='comment-modal-v2__divider' />\r\n )}\r\n {hasComment && (\r\n <div>\r\n <p className='comment-modal-v2__comment-label'>Comment:</p>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n detail.comment || ''\r\n )}\r\n className='sapp-questions comment-modal-v2__body'\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CommentModal\r\n","/* eslint-disable no-unused-vars */\r\nimport { Workbook, WorkbookInstance } from '@fortune-sheet/react'\r\nimport React, { memo, RefObject, useEffect, useRef, useState } from 'react'\r\nimport { Controller } from 'react-hook-form'\r\n// eslint-disable-next-line no-unused-vars\r\n// eslint-disable-next-line no-unused-vars\r\nimport EditorReader from '@components/editor/EditorReader'\r\nimport {\r\n clearMarker,\r\n indexCharacters,\r\n markColor,\r\n replaceTextAlignCenterToWebKitCenter,\r\n restoreHighlightsV2\r\n} from '@utils/graded'\r\nimport { GradingDetail, ICommment, IFileAnswer, RESPONSE_OPTION } from 'constant'\r\nimport { CommentModal } from '@components/comment-modal'\r\nimport { useCommentMobileView } from 'hooks/useCommentMobileView'\r\nimport { useExplainationContext } from 'contexts'\r\nimport {\r\n deepCloneForWorkbook,\r\n generateSheetId,\r\n parseUserInputTSV\r\n} from '@utils/index'\r\nimport { cloneDeep, isEmpty, isNull, isUndefined } from 'lodash'\r\nimport FileDisplay from '@components/FileDisplay'\r\nimport clsx from 'clsx'\r\n\r\nexport type IPreviewProp = {\r\n reqIndex: number\r\n control: any\r\n name: string\r\n question_data: any\r\n defaultValue?: any\r\n answer_file?: IFileAnswer\r\n setOpenPdf?: any\r\n listGrades?: ICommment\r\n commentRef?: RefObject<HTMLDivElement>\r\n editorRef?: RefObject<HTMLElement>\r\n bodyRef?: RefObject<HTMLDivElement>\r\n grading_file?: IFileAnswer\r\n handleShowRequirement?: () => void\r\n activeCommentId?: string | null\r\n setActiveCommentId?: React.Dispatch<React.SetStateAction<string | null>>\r\n setOpenCommentIndex?: React.Dispatch<React.SetStateAction<number | null>>\r\n}\r\ntype SheetData = {\r\n name: string\r\n id: string\r\n status: number\r\n data: (string | number | null)[][]\r\n celldata: {\r\n r: number\r\n c: number\r\n v: { v: string; ct: { fa: string; t: string }; m: string }\r\n }[]\r\n row?: number\r\n column?: number\r\n}\r\n\r\nconst ConstructedQuestionV2 = ({\r\n reqIndex,\r\n name,\r\n control,\r\n question_data,\r\n defaultValue,\r\n answer_file,\r\n setOpenPdf,\r\n listGrades,\r\n commentRef,\r\n editorRef,\r\n bodyRef,\r\n grading_file,\r\n handleShowRequirement,\r\n activeCommentId,\r\n setActiveCommentId,\r\n setOpenCommentIndex\r\n}: IPreviewProp) => {\r\n const isMobileCommentView = useCommentMobileView()\r\n const { setActiveOverlayCommentSidebar, setRequirementIndex } =\r\n useExplainationContext()\r\n const refSheet = useRef<WorkbookInstance>() as any\r\n const refEditor = useRef(null) as any\r\n const [htmlOutput, setHtmlOutput] = useState<string[]>([])\r\n const [gradeCommentPopup, setGradeCommentPopup] =\r\n useState<GradingDetail | null>(null)\r\n // const [isSheetReady, setIsSheetReady] = useState(false)\r\n // const [previewSheet, setPreviewSheet] = useState<string | undefined>(\r\n // defaultValue\r\n // )\r\n\r\n // useEffect(() => {\r\n // if (refSheet.current) {\r\n // setIsSheetReady(true)\r\n // }\r\n // }, [refSheet.current])\r\n\r\n const handleWorkbookRef = (instance: WorkbookInstance) => {\r\n if (instance) {\r\n try {\r\n const sheets = instance?.getAllSheets()\r\n const allSheetsHtml: string[] = []\r\n\r\n sheets.forEach((sheetData, index) => {\r\n const options = {\r\n index: index\r\n }\r\n\r\n // Determine row/column counts from data, celldata, or explicit row/column\r\n let rowCount = 0\r\n let columnCount = 0\r\n\r\n if (Array.isArray(sheetData?.data) && sheetData.data.length > 0) {\r\n rowCount = sheetData.data.length\r\n columnCount = sheetData.data.reduce(\r\n (max: number, row: any[]) => Math.max(max, row?.length || 0),\r\n 0\r\n )\r\n } else if (\r\n Array.isArray(sheetData?.celldata) &&\r\n sheetData.celldata.length > 0\r\n ) {\r\n // Derive bounds from celldata r/c indices\r\n const maxR = sheetData.celldata.reduce(\r\n (max: number, cell: any) => Math.max(max, Number(cell?.r) || 0),\r\n 0\r\n )\r\n const maxC = sheetData.celldata.reduce(\r\n (max: number, cell: any) => Math.max(max, Number(cell?.c) || 0),\r\n 0\r\n )\r\n rowCount = Math.max(sheetData?.row || 0, maxR + 1)\r\n columnCount = Math.max(sheetData?.column || 0, maxC + 1)\r\n } else {\r\n // Fallback to provided row/column if any\r\n rowCount = sheetData?.row || 0\r\n columnCount = sheetData?.column || 0\r\n }\r\n\r\n const range = [\r\n {\r\n row: [0, Math.max(0, rowCount)],\r\n column: [0, Math.max(0, columnCount)]\r\n }\r\n ]\r\n const sheetHtml = instance?.getHtmlByRange(range, options)\r\n allSheetsHtml.push(`${sheetHtml}`)\r\n })\r\n if (JSON.stringify(htmlOutput) !== JSON.stringify(allSheetsHtml)) {\r\n setHtmlOutput(allSheetsHtml)\r\n }\r\n } catch (error) {\r\n console.error('Error in getHtmlByRange:', error)\r\n }\r\n }\r\n }\r\n\r\n const handleHighlightClick = (event: React.MouseEvent<HTMLDivElement>) => {\r\n event.stopPropagation()\r\n const targetElement = event?.target as HTMLElement\r\n let spanElement = targetElement\r\n\r\n if (targetElement?.classList?.contains('sapp-grade-tooltip-v2')) {\r\n spanElement = targetElement?.closest(\r\n '.sapp-grading-highlight-v2'\r\n ) as HTMLElement\r\n if (!spanElement || !spanElement?.id?.match(/^h_(\\d+)$/)) {\r\n return\r\n }\r\n }\r\n if (spanElement.tagName === 'SPAN') {\r\n setRequirementIndex(reqIndex)\r\n if (setOpenCommentIndex) setOpenCommentIndex(reqIndex)\r\n if (handleShowRequirement) handleShowRequirement()\r\n const spanId = spanElement?.id\r\n const indexMatch = spanId?.match(/^h_(\\d+)$/)\r\n // let begin: number = 0\r\n // let end: number = 0\r\n if (indexMatch && listGrades?.details?.length) {\r\n const index = parseInt(indexMatch[1], 10)\r\n let begin = 0\r\n let end = 0\r\n let matchedDetail: GradingDetail | undefined\r\n\r\n listGrades.details.forEach((detail) => {\r\n const elementBegin = Number(detail?.begin) || 0\r\n const elementEnd = Number(detail?.end) || 0\r\n if (index >= elementBegin && index <= elementEnd) {\r\n begin = elementBegin\r\n end = elementEnd\r\n matchedDetail = detail\r\n }\r\n })\r\n\r\n if (matchedDetail) {\r\n clearMarker(editorRef)\r\n markColor(begin, end, editorRef)\r\n setRequirementIndex(reqIndex)\r\n\r\n if (isMobileCommentView) {\r\n setGradeCommentPopup(null)\r\n if (setOpenCommentIndex) setOpenCommentIndex(reqIndex)\r\n\r\n const detailIndex = listGrades.details.findIndex(\r\n (d) =>\r\n Number(d?.begin) === begin && Number(d?.end) === end\r\n )\r\n const foundElementId = `${begin}_${end}_${detailIndex}_comment`\r\n\r\n if (commentRef?.current) {\r\n const allComments =\r\n commentRef.current.querySelectorAll('.comment-box-v2')\r\n allComments.forEach((element) => {\r\n ;(element as HTMLElement).classList.remove('comment-box-v2-hover')\r\n const gradeLine = (element as HTMLElement).getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-box-v2-grade-hover')\r\n }\r\n })\r\n commentRef.current.classList.add('active-comment-v2')\r\n commentRef.current.classList.remove('hide-comment-v2')\r\n setActiveOverlayCommentSidebar(true)\r\n\r\n let foundElement: HTMLElement | null = null\r\n try {\r\n foundElement = commentRef.current.querySelector(\r\n `#${CSS.escape(foundElementId)}`\r\n ) as HTMLElement | null\r\n } catch {\r\n foundElement = null\r\n }\r\n if (!foundElement) {\r\n allComments.forEach((element) => {\r\n if ((element as HTMLElement).id === foundElementId) {\r\n foundElement = element as HTMLElement\r\n }\r\n })\r\n }\r\n if (foundElement) {\r\n foundElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center'\r\n })\r\n foundElement.classList.add('comment-box-v2-hover')\r\n const gradeLine =\r\n foundElement.getElementsByClassName('comment-box-v2-grade')?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.add('comment-box-v2-grade-hover')\r\n }\r\n }\r\n }\r\n setActiveCommentId?.(foundElementId)\r\n } else {\r\n setGradeCommentPopup(matchedDetail)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const handleTurnoffHighlight = () => {\r\n setGradeCommentPopup(null)\r\n setRequirementIndex(null)\r\n if (setOpenCommentIndex) setOpenCommentIndex(null)\r\n setActiveCommentId?.(null)\r\n setActiveOverlayCommentSidebar(false)\r\n\r\n if (commentRef?.current) {\r\n const gradeCommentElements =\r\n commentRef.current.querySelectorAll('.comment-box-v2')\r\n gradeCommentElements.forEach((element) => {\r\n ;(element as HTMLElement)?.classList?.remove('comment-box-v2-hover')\r\n const gradeLine = (element as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-box-v2-grade-hover')\r\n }\r\n })\r\n commentRef.current.classList.remove('active-comment-v2')\r\n commentRef.current.classList.add('hide-comment-v2')\r\n }\r\n }\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as Node\r\n const el = target as HTMLElement\r\n if (\r\n editorRef?.current &&\r\n !editorRef.current.contains(target) &&\r\n !el.closest?.('.comment-modal-v2') &&\r\n !el.closest?.('.comment-sidebar') &&\r\n !el.closest?.('.comment-sidebar-overlay')\r\n ) {\r\n clearMarker(editorRef)\r\n handleTurnoffHighlight()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isMobileCommentView) {\r\n setGradeCommentPopup(null)\r\n } else if (commentRef?.current) {\r\n setActiveOverlayCommentSidebar(false)\r\n if (setOpenCommentIndex) setOpenCommentIndex(null)\r\n commentRef.current.classList.remove('active-comment-v2')\r\n commentRef.current.classList.add('hide-comment-v2')\r\n }\r\n }, [isMobileCommentView])\r\n\r\n useEffect(() => {\r\n const bodyEl = bodyRef?.current\r\n if (bodyEl) {\r\n bodyEl.addEventListener('click', handleClickOutside)\r\n }\r\n return () => {\r\n if (bodyEl) bodyEl.removeEventListener('click', handleClickOutside)\r\n }\r\n }, [editorRef])\r\n\r\n useEffect(() => {\r\n if (\r\n refSheet.current &&\r\n // eslint-disable-next-line camelcase\r\n Number(reqIndex) <= question_data?.requirements?.length\r\n ) {\r\n if (\r\n defaultValue === undefined ||\r\n defaultValue === null ||\r\n String(defaultValue).trim() === ''\r\n ) {\r\n const emptySheets = refSheet.current\r\n ?.getAllSheets()\r\n .map((sheet: SheetData) => ({\r\n ...sheet,\r\n celldata: [],\r\n data: Array(sheet.row || 100)\r\n .fill(null)\r\n .map(() => Array(sheet.column || 50).fill(null))\r\n }))\r\n emptySheets.forEach((sheet: SheetData) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n refSheet.current?.updateSheet(JSON.parse(JSON.stringify([sheet])))\r\n })\r\n } else {\r\n const sheetData = defaultValue\r\n ? JSON.parse(defaultValue)\r\n : [{ name: 'Sheet1', id: '', status: 1, data: [[]], celldata: [] }]\r\n\r\n // Convert sheetData to constructor with id of refSheet.current\r\n const currentSheets = refSheet.current.getAllSheets()\r\n const updatedSheetData = sheetData.map(\r\n (sheet: SheetData, index: number) => ({\r\n ...sheet,\r\n id: currentSheets[index]?.id || ''\r\n })\r\n )\r\n\r\n const emptySheets = currentSheets.map((sheet: SheetData) => ({\r\n ...sheet,\r\n celldata: [],\r\n data: Array(sheet.row || 100)\r\n .fill(null)\r\n .map(() => Array(sheet.column || 50).fill(null))\r\n }))\r\n emptySheets.forEach((sheet: SheetData, index: number) => {\r\n if (sheet?.name === sheetData[index]?.name) {\r\n // eslint-disable-next-line no-unused-expressions\r\n refSheet.current?.updateSheet(\r\n JSON.parse(JSON.stringify([updatedSheetData[index]]))\r\n )\r\n } else {\r\n // eslint-disable-next-line no-unused-expressions\r\n refSheet.current?.updateSheet(JSON.parse(JSON.stringify([sheet])))\r\n }\r\n })\r\n handleWorkbookRef(refSheet.current)\r\n }\r\n }\r\n }, [defaultValue, reqIndex])\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(() => {\r\n handleWorkbookRef(refSheet.current)\r\n }, 500)\r\n return () => clearTimeout(timeout)\r\n }, [refSheet.current, reqIndex])\r\n\r\n useEffect(() => {\r\n const editorArea = editorRef?.current\r\n if (!editorArea) return\r\n indexCharacters(editorArea)\r\n const observer = new MutationObserver((mutationsList) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n indexCharacters(editorArea)\r\n break\r\n }\r\n }\r\n })\r\n observer.observe(editorArea, { childList: true, subtree: true })\r\n const timeoutId = setTimeout(() => {\r\n restoreHighlightsV2(listGrades?.details || [], editorArea)\r\n }, 1000)\r\n return () => {\r\n observer.disconnect()\r\n clearTimeout(timeoutId)\r\n }\r\n }, [reqIndex, listGrades])\r\n\r\n // const isValid = (value?: string) => {\r\n // try {\r\n // if (!value || isEmpty(value) || isUndefined(value) || isNull(value))\r\n // return false\r\n // JSON.parse(value)\r\n // return true\r\n // } catch {\r\n // return false\r\n // }\r\n // }\r\n // const defaultSheetData = JSON.stringify([\r\n // {\r\n // name: 'Sheet1',\r\n // id: generateSheetId(),\r\n // status: 1,\r\n // data: [[]],\r\n // celldata: []\r\n // }\r\n // ])\r\n // const setInitDataSheet = (answerSheetData?: string) => {\r\n // if (!refSheet?.current) return\r\n // const currentSheets = refSheet.current.getAllSheets()\r\n // // function tạo sheet trống an toàn\r\n // const makeEmptySheet = (base: SheetData): SheetData => ({\r\n // id: base.id,\r\n // name: base.name,\r\n // status: base.status ?? 1,\r\n // row: base.row ?? 100,\r\n // column: base.column ?? 50,\r\n // celldata: [],\r\n // data: Array(base.row || 100)\r\n // .fill(null)\r\n // .map(() => Array(base.column || 50).fill(null))\r\n // })\r\n // if (answerSheetData?.trim()) {\r\n // const sheetData: SheetData[] = JSON.parse(answerSheetData) || [\r\n // {\r\n // name: 'Sheet1',\r\n // id: generateSheetId(),\r\n // status: 1,\r\n // data: [[]],\r\n // celldata: []\r\n // }\r\n // ]\r\n\r\n // const updatedSheetData = sheetData.map((sheet, index) => {\r\n // const base = currentSheets[index] || {}\r\n // return {\r\n // ...makeEmptySheet(base as SheetData), // luôn tạo mới data, celldata\r\n // ...cloneDeep(sheet), // merge nội dung từ JSON vào\r\n // id: base?.id || sheet.id || ''\r\n // }\r\n // })\r\n // // update tất cả một lần\r\n // refSheet.current.updateSheet(\r\n // deepCloneForWorkbook(updatedSheetData.map(cloneDeep))\r\n // )\r\n // } else {\r\n // const emptySheets = currentSheets.map((sheet: SheetData) =>\r\n // makeEmptySheet(sheet)\r\n // )\r\n // refSheet.current.updateSheet(\r\n // deepCloneForWorkbook(emptySheets.map(cloneDeep))\r\n // )\r\n // }\r\n // }\r\n // Lay data tu api sheet\r\n // useEffect(() => {\r\n // if (question_data?.response_option === 'SHEET' && isSheetReady) {\r\n // if (defaultValue && defaultValue.trim() !== '') {\r\n // setInitDataSheet(defaultValue)\r\n // } else {\r\n // setInitDataSheet(defaultSheetData)\r\n // }\r\n // }\r\n // }, [defaultValue, isSheetReady])\r\n\r\n return (\r\n <div className='bg-white'>\r\n <div>\r\n <div className='w-full'>\r\n {answer_file?.file_name && (\r\n <FileDisplay\r\n title='Your answer:'\r\n setOpenPdf={setOpenPdf}\r\n url={answer_file?.url}\r\n fileName={answer_file?.file_name}\r\n />\r\n )}\r\n {grading_file?.file_name && (\r\n <FileDisplay\r\n title='Graded answer file:'\r\n setOpenPdf={setOpenPdf}\r\n url={grading_file?.file_url}\r\n fileName={grading_file?.file_name}\r\n isDownloadFile\r\n />\r\n )}\r\n {question_data?.response_option === RESPONSE_OPTION.WORD ||\r\n question_data?.response_option_answer === RESPONSE_OPTION.WORD ? (\r\n <div className='border rounded-xl overflow-auto sapp-grade-questions-content mt-0'>\r\n <div className='font-semibold text-lg mb-4 text-bw-2'>\r\n Your Answers:\r\n </div>\r\n <div\r\n key={reqIndex}\r\n ref={editorRef || refEditor}\r\n id={`editor_area_${reqIndex}`}\r\n onClick={(e) => {\r\n handleHighlightClick(e)\r\n }}\r\n >\r\n <EditorReader\r\n text_editor_content={defaultValue || ''}\r\n className={clsx('editor-wrap your-answer', {\r\n 'mt-2': listGrades?.details?.length\r\n })}\r\n />\r\n </div>\r\n </div>\r\n ) : question_data?.response_option === RESPONSE_OPTION.SHEET ||\r\n question_data?.response_option_answer === RESPONSE_OPTION.SHEET ? (\r\n <React.Fragment>\r\n <div className='w-full border rounded-xl sapp-grade-questions-content mt-0'>\r\n <div className='font-semibold text-lg text-bw-2'>\r\n Your Answers:\r\n </div>\r\n {/* <div>\r\n <Workbook\r\n allowEdit={false}\r\n ref={refSheet}\r\n data={\r\n isValid()\r\n ? JSON.parse(previewSheet || defaultSheetData)\r\n : [\r\n {\r\n name: 'Sheet1',\r\n id: generateSheetId(),\r\n status: 1,\r\n data: [[]],\r\n celldata: []\r\n }\r\n ]\r\n }\r\n />\r\n </div> */}\r\n <div style={{ display: 'none' }}>\r\n <Controller\r\n name={(name as 'answer') || 'answer'}\r\n control={control}\r\n defaultValue={defaultValue || undefined}\r\n render={({ field: { value } }) => {\r\n let parsedData: any = [{ name: 'Sheet1', celldata: [] }]\r\n\r\n const toCelldataFromGrid = (grid: any[][]) =>\r\n grid\r\n .flatMap((row: any[], rIdx: number) =>\r\n (row || []).map((cell: any, cIdx: number) => {\r\n if (cell === null || cell === undefined) {\r\n return null\r\n }\r\n const v =\r\n typeof cell === 'object' &&\r\n (cell.v !== undefined ||\r\n cell.m !== undefined ||\r\n cell.ct !== undefined)\r\n ? cell\r\n : { v: cell, ct: { fa: '', t: '' }, m: '' }\r\n return { r: rIdx, c: cIdx, v }\r\n })\r\n )\r\n .filter(Boolean)\r\n\r\n const normalizeSheets = (sheets: any[]) =>\r\n sheets.map((s: any) => {\r\n if (\r\n Array.isArray(s?.celldata) &&\r\n s.celldata.length > 0\r\n ) {\r\n return s\r\n }\r\n if (Array.isArray(s?.data)) {\r\n const celldata = toCelldataFromGrid(\r\n s.data as any[][]\r\n )\r\n const maxR = celldata.reduce(\r\n (m: number, it: any) => Math.max(m, it.r),\r\n 0\r\n )\r\n const maxC = celldata.reduce(\r\n (m: number, it: any) => Math.max(m, it.c),\r\n 0\r\n )\r\n return {\r\n ...s,\r\n row: Math.max(s?.row || 0, maxR + 1),\r\n column: Math.max(s?.column || 0, maxC + 1),\r\n celldata,\r\n data: undefined\r\n }\r\n }\r\n return s\r\n })\r\n\r\n try {\r\n if (value !== undefined && value !== null) {\r\n if (typeof value === 'string') {\r\n const str = value.trim()\r\n if (str.startsWith('[')) {\r\n const parsed = JSON.parse(str)\r\n parsedData = Array.isArray(parsed)\r\n ? normalizeSheets(parsed)\r\n : parsed\r\n } else {\r\n const rows = parseUserInputTSV(str)\r\n const celldata = rows.flatMap((row, r) =>\r\n row.map((c, cIndex) => ({\r\n r,\r\n c: cIndex,\r\n v: { v: c, ct: { fa: '', t: '' }, m: '' }\r\n }))\r\n )\r\n parsedData = [{ name: 'Sheet1', celldata }]\r\n }\r\n } else if (Array.isArray(value)) {\r\n // Trường hợp value đã là mảng sheets hoặc grid 2D\r\n if (value[0]?.name) {\r\n parsedData = normalizeSheets(value)\r\n } else {\r\n const grid = value as any[][]\r\n const celldata = toCelldataFromGrid(grid)\r\n const maxC = celldata.reduce(\r\n (m: number, it: any) => Math.max(m, it.c),\r\n 0\r\n )\r\n parsedData = [\r\n {\r\n name: 'Sheet1',\r\n celldata,\r\n column: Math.max(10, maxC + 1),\r\n row: grid.length\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n // swallow parse errors; parsedData fallback remains\r\n }\r\n\r\n return <Workbook ref={refSheet} data={parsedData} />\r\n }}\r\n />\r\n </div>\r\n <div\r\n ref={editorRef || refEditor}\r\n onClick={(e) => {\r\n handleHighlightClick(e)\r\n }}\r\n id={`editor_area_${reqIndex}`}\r\n >\r\n {(htmlOutput || [])?.map((sheetHtml, index) => {\r\n if (htmlOutput.length > 1) {\r\n return (\r\n <div key={index} className='mt-6'>\r\n <span className='font-semibold text-base'>\r\n Sheet {index + 1}\r\n </span>\r\n <div className='py-4 overflow-auto h-[500px]'>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n sheetHtml\r\n )}\r\n className='table-content'\r\n />\r\n </div>\r\n </div>\r\n )\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n className='pt-6 overflow-auto h-[500px]'\r\n >\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n sheetHtml\r\n )}\r\n className='table-content'\r\n />\r\n </div>\r\n )\r\n }\r\n })}\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n </div>\r\n\r\n {!isMobileCommentView && (\r\n <CommentModal\r\n open={!!gradeCommentPopup}\r\n detail={gradeCommentPopup}\r\n onClose={() => {\r\n clearMarker(editorRef)\r\n handleTurnoffHighlight()\r\n }}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\nexport default memo(ConstructedQuestionV2)\r\n","/* eslint-disable no-unused-vars */\r\nimport { isNull, isUndefined } from 'lodash'\r\nimport React, { RefObject } from 'react'\r\nimport { GradingDetail, ICommment } from 'constant'\r\nimport { replaceTextAlignCenterToWebKitCenter } from 'utils'\r\nimport { clearMarker, markColor } from '@utils/graded'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport { CloseIcon } from '@components/icons/CloseIcon'\r\nimport clsx from 'clsx'\r\nimport { useExplainationContext } from 'contexts'\r\nimport { Divider } from 'antd'\r\n\r\ninterface IProps {\r\n data?: ICommment\r\n editorRef?: RefObject<HTMLElement>\r\n commentRef?: RefObject<HTMLDivElement>\r\n className?: string\r\n overlayClassName?: string\r\n activeCommentId?: string | null\r\n setActiveCommentId: React.Dispatch<React.SetStateAction<string | null>>\r\n setOpenComment?: (status: boolean) => void\r\n}\r\n\r\nconst CommentListV2 = ({\r\n data,\r\n editorRef,\r\n commentRef,\r\n className,\r\n overlayClassName,\r\n activeCommentId,\r\n setActiveCommentId,\r\n setOpenComment,\r\n}: IProps) => {\r\n const {\r\n activeOverlayCommentSidebar,\r\n setActiveOverlayCommentSidebar,\r\n setRequirementIndex\r\n } = useExplainationContext()\r\n const handleClickComment = (\r\n elId: string,\r\n begin?: number | null,\r\n end?: number | null\r\n ) => {\r\n clearMarker(editorRef)\r\n markColor(begin, end, editorRef)\r\n if (commentRef?.current) {\r\n const commentList =\r\n commentRef.current.getElementsByClassName('comment-box-v2')\r\n // ✅ Remove tất cả trước\r\n for (const element of commentList) {\r\n element.classList.remove('comment-box-v2-hover')\r\n const gradeLine = (element as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-box-v2-grade-hover')\r\n }\r\n }\r\n\r\n for (const element of commentList) {\r\n const el = element as HTMLElement\r\n\r\n if (elId === el?.id) {\r\n ;(element as HTMLElement).classList.add('comment-box-v2-hover')\r\n const gradeLine = (el as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.add('comment-box-v2-grade-hover')\r\n }\r\n } else {\r\n if (element?.classList) {\r\n ;(element as HTMLElement).classList.remove('comment-box-v2-hover')\r\n }\r\n const gradeLine = (el as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-box-v2-grade-hover')\r\n }\r\n }\r\n }\r\n }\r\n setActiveCommentId(elId)\r\n }\r\n const handleTurnoffHighlight = () => {\r\n if (commentRef?.current) {\r\n const gradeCommentElements =\r\n commentRef.current.querySelectorAll('.comment-box-v2')\r\n gradeCommentElements.forEach((element) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n ;(element as HTMLElement)?.classList?.remove('comment-box-v2-hover')\r\n const gradeLine = (element as HTMLElement)?.getElementsByClassName(\r\n 'comment-box-v2-grade'\r\n )?.[0]\r\n if (gradeLine?.classList) {\r\n gradeLine.classList.remove('comment-grade-hover-after')\r\n gradeLine.classList.remove('comment-box-v2-grade-hover')\r\n }\r\n })\r\n // eslint-disable-next-line no-unused-expressions\r\n commentRef?.current?.classList?.remove('active-comment-v2')\r\n setActiveOverlayCommentSidebar(false)\r\n setRequirementIndex(0)\r\n setActiveCommentId(null)\r\n if (commentRef?.current?.classList) {\r\n commentRef.current.classList.add('hide-comment-v2')\r\n }\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n if (setOpenComment) {\r\n setOpenComment(false)\r\n }\r\n handleTurnoffHighlight()\r\n }\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={clsx(\r\n 'comment-sidebar-overlay h-full w-full cursor-pointer bg-overlay',\r\n overlayClassName,\r\n { active: activeOverlayCommentSidebar }\r\n )}\r\n />\r\n\r\n <div ref={commentRef} className={clsx('comment-sidebar', className)}>\r\n <div className='flex justify-between items-center comment-sidebar-header'>\r\n <div className='text-xl font-semibold text-bw-2'>\r\n Examiner's Comment\r\n </div>\r\n <div className='cursor-pointer' onClick={handleClose}>\r\n <CloseIcon size={24} />\r\n </div>\r\n </div>\r\n {data?.details?.map((item: GradingDetail, key) => {\r\n const elId = `${item?.begin}_${item?.end}_${key}_comment`\r\n return (\r\n <div\r\n className={clsx('comment-box-v2 cursor-pointer text-gray-800', {\r\n 'comment-box-v2-hover': activeCommentId === elId\r\n })}\r\n key={Number(item?.begin) + Number(item?.end) + key}\r\n id={`${item?.begin}_${item?.end}_${key}_comment`}\r\n data-begin={item?.begin}\r\n data-end={item?.end}\r\n onClick={(e) => handleClickComment(elId, item?.begin, item?.end)}\r\n > \r\n {!isNull(item?.grade) && !isUndefined(item?.grade) && (\r\n <div className='comment-box-v2-grade text-lg'>\r\n <p className='font-semibold text-gray-800'>Grade:</p>\r\n <p>{item?.grade}</p>\r\n </div>\r\n )}\r\n {!isNull(item?.grade) &&\r\n !isUndefined(item?.grade) &&\r\n !!item?.comment && <Divider className='my-0 divider-comment' />}\r\n {!!item?.comment && (\r\n <div>\r\n <p className='font-semibold text-gray-800 text-lg'>\r\n Comment:\r\n </p>\r\n <EditorReader\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n item?.comment || ''\r\n )}\r\n className='sapp-questions'\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default CommentListV2\r\n","import React from 'react'\r\nimport { Modal, Divider } from 'antd'\r\nimport './FilePreviewModal.css'\r\n\r\ninterface IModalPreviewFileProps {\r\n open: boolean\r\n fileUrl?: string\r\n fileName?: string\r\n textContent?: string\r\n onClose: () => void\r\n}\r\n\r\nconst ModalPreviewFile = ({\r\n open,\r\n fileUrl,\r\n fileName,\r\n textContent,\r\n onClose\r\n}: IModalPreviewFileProps) => {\r\n const getFileExtension = (name?: string, url?: string) => {\r\n const source = name || url || ''\r\n const cleanSource = source.split('?')[0]\r\n const ext = cleanSource.split('.').pop()\r\n return (ext || '').toLowerCase()\r\n }\r\n\r\n const extension = getFileExtension(fileName, fileUrl)\r\n const officeExtensions = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx']\r\n const officePreviewUrl =\r\n fileUrl && officeExtensions.includes(extension)\r\n ? `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(fileUrl)}`\r\n : ''\r\n const iframeSrc = officePreviewUrl || fileUrl || ''\r\n\r\n return (\r\n <Modal\r\n open={open}\r\n onCancel={onClose}\r\n footer={null}\r\n title={fileName || 'Preview file'}\r\n width='80vw'\r\n centered\r\n destroyOnClose\r\n >\r\n {textContent ? (\r\n <div>\r\n <Divider className='my-0 mb-2' />\r\n <div className=\"file-preview-modal-text-content\">\r\n <div\r\n className=\"file-preview-modal-text-inner\"\r\n dangerouslySetInnerHTML={{ __html: textContent || '' }}\r\n />\r\n </div>\r\n </div>\r\n ) : iframeSrc ? (\r\n <div className='flex flex-col gap-3'>\r\n <iframe\r\n src={iframeSrc}\r\n title={fileName || 'File preview'}\r\n width='100%'\r\n height='650'\r\n style={{ border: 'none' }}\r\n />\r\n </div>\r\n ) : (\r\n <div>Cannot preview this file.</div>\r\n )}\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default ModalPreviewFile\r\n","import React, { useState } from 'react'\r\nimport clsx from 'clsx'\r\nimport { CollapseArrowIcon } from '@components/Icon'\r\nimport { IAiContext, IAiContextFile, IAiContextText } from 'constant'\r\nimport { DownloadFileGradingIcon } from 'utils/icons'\r\nimport ModalPreviewFile from '@components/render-view/ModalPreviewFile'\r\n\r\ninterface IListGradingFileProps {\r\n title?: string\r\n listFiles?: IAiContext[]\r\n}\r\n\r\nconst ListGradingFile = ({\r\n title = 'Question/ Requirement Grading files',\r\n listFiles = [],\r\n}: IListGradingFileProps) => {\r\n const [open, setOpen] = useState(true)\r\n const [previewFile, setPreviewFile] = useState<{\r\n open: boolean\r\n url?: string\r\n name?: string\r\n text?: string\r\n }>({\r\n open: false\r\n })\r\n\r\n const handleOpenPreview = (file: IAiContext) => {\r\n if (file?.type === 'TEXT') {\r\n const textItem = file as IAiContextText\r\n setPreviewFile({\r\n open: true,\r\n name: file?.name,\r\n text: textItem?.text || ''\r\n })\r\n return\r\n }\r\n\r\n const fileItem = file as IAiContextFile\r\n const fileUrl = file?.type === 'FILE' ? fileItem?.resource?.url : ''\r\n if (!fileUrl) return\r\n\r\n setPreviewFile({\r\n open: true,\r\n url: fileUrl,\r\n name: fileItem?.resource?.name,\r\n text: ''\r\n })\r\n }\r\n\r\n const handleDownloadFile = (\r\n event: React.MouseEvent<HTMLSpanElement>,\r\n file: IAiContext\r\n ) => {\r\n event.stopPropagation()\r\n\r\n const fileItem = file as IAiContextFile\r\n const fileUrl = fileItem?.resource?.url\r\n if (!fileUrl) return\r\n\r\n const link = document.createElement('a')\r\n link.href = fileUrl\r\n link.setAttribute('download', fileItem?.resource?.name || 'file')\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n }\r\n\r\n if (!listFiles.length) return null\r\n\r\n return (\r\n <div\r\n className={clsx('rounded-xl p-4 bg-gray-150')}\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div\r\n className='flex cursor-pointer items-center justify-between gap-2'\r\n onClick={(event) => {\r\n event.stopPropagation()\r\n setOpen((prev) => !prev)\r\n }}\r\n >\r\n <p className='mb-0 font-semibold text-gray-800'>{title}</p>\r\n <CollapseArrowIcon selected={open} />\r\n </div>\r\n\r\n {open && (\r\n <div className='mt-4 gap-3'>\r\n {listFiles.map((file, index) => (\r\n <div className='flex' key={index}>\r\n <span\r\n className='text-sm flex items-center gap-2 text-link-blue underline hover:text-link-orange cursor-pointer transition-all duration-200 ease-in-out'\r\n onClick={(event) => {\r\n event.stopPropagation()\r\n handleOpenPreview(file)\r\n }}\r\n >\r\n {file?.type === 'FILE' ? (file as IAiContextFile)?.resource?.name : file?.name}\r\n </span>\r\n {file?.type === 'FILE' && (\r\n <span\r\n className='ml-2 text-link-blue hover:text-link-orange cursor-pointer transition-all duration-200 ease-in-out'\r\n onClick={(event) => handleDownloadFile(event, file)}\r\n >\r\n <DownloadFileGradingIcon />\r\n </span>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n <ModalPreviewFile\r\n open={previewFile.open}\r\n fileUrl={previewFile.url}\r\n fileName={previewFile.name}\r\n textContent={previewFile.text}\r\n onClose={() =>\r\n setPreviewFile({\r\n open: false,\r\n url: '',\r\n name: '',\r\n text: ''\r\n })\r\n }\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ListGradingFile\r\n","import React from 'react'\r\nimport ReactMarkdown from 'react-markdown'\r\n\r\ninterface MarkdownRendererProps {\r\n content: string\r\n className?: string\r\n}\r\n\r\n/**\r\n * Component to render markdown content with proper styling\r\n */\r\nexport const MarkdownRenderer = ({ content, className = '' }: MarkdownRendererProps) => {\r\n if (!content) return null\r\n\r\n return (\r\n <div className={`max-w-none ${className}`}>\r\n <ReactMarkdown\r\n components={{\r\n // Custom rendering for paragraphs\r\n p: ({ children }) => <p className='mb-2'>{children}</p>,\r\n // Custom rendering for headings\r\n h1: ({ children }) => <h1 className='mb-3 text-2xl font-bold'>{children}</h1>,\r\n h2: ({ children }) => <h2 className='mb-3 text-xl font-bold'>{children}</h2>,\r\n h3: ({ children }) => <h3 className='mb-2 text-lg font-bold'>{children}</h3>,\r\n // Custom rendering for lists\r\n ul: ({ children }) => <ul className='mb-2 list-disc pl-4'>{children}</ul>,\r\n ol: ({ children }) => <ol className='mb-2 list-decimal pl-4'>{children}</ol>,\r\n li: ({ children }) => <li className='mb-1'>{children}</li>,\r\n // Custom rendering for code blocks\r\n code: ({ children, ...props }) => {\r\n const isInline = !props.className\r\n return isInline ? (\r\n <code className='rounded bg-gray-100 px-1 py-0 text-purple-500'>{children}</code>\r\n ) : (\r\n <pre className='mb-2 overflow-x-auto rounded bg-gray-100 p-3 text-purple-500'>\r\n <code>{children}</code>\r\n </pre>\r\n )\r\n },\r\n // Custom rendering for links\r\n a: ({ href, children }) => (\r\n <a\r\n href={href}\r\n className='text-blue-600 underline'\r\n target='_blank'\r\n rel='noopener noreferrer'\r\n >\r\n {children}\r\n </a>\r\n ),\r\n // Custom rendering for blockquotes\r\n blockquote: ({ children }) => (\r\n <blockquote className='mb-2 border-l-4 border-blue-500 pl-3 text-gray-500'>\r\n {children}\r\n </blockquote>\r\n )\r\n }}\r\n >\r\n {content}\r\n </ReactMarkdown>\r\n </div>\r\n )\r\n}\r\n","import React from 'react'\r\nimport clsx from 'clsx'\r\nimport { QUESTION_TYPES } from '../../constant'\r\nimport { MarkdownRenderer } from './MarkdownRender'\r\n\r\ninterface AICommentProps {\r\n content?: string\r\n title?: string\r\n qType?: string\r\n className?: string\r\n grade?: number\r\n}\r\n\r\nconst AIComment = ({\r\n content = '',\r\n title = 'Requirement Comment',\r\n qType,\r\n className,\r\n grade\r\n}: AICommentProps) => {\r\n return (\r\n <div\r\n className={clsx(\r\n 'explanation',\r\n {\r\n 'explanation--essay': qType === QUESTION_TYPES.ESSAY\r\n },\r\n className\r\n )}\r\n >\r\n <div className='flex items-center justify-between'>\r\n <div className='text-lg font-semibold text-bw-2 break-all'>{title}:</div>\r\n <div className='text-lg font-semibold text-bw-2'>Grade: {grade}</div>\r\n </div>\r\n <MarkdownRenderer content={content} className='mt-4'/>\r\n </div>\r\n )\r\n}\r\n\r\nexport default AIComment\r\n","/* eslint-disable no-unused-vars */\r\nimport React, {\r\n Dispatch,\r\n RefObject,\r\n SetStateAction,\r\n useState,\r\n useRef,\r\n} from 'react'\r\nimport {\r\n ICommment,\r\n IFile,\r\n IFileAnswer,\r\n IRequirement,\r\n GRADING_METHOD,\r\n IRequirementAnswer,\r\n QUESTION_TYPES,\r\n SOLUTION_TITLE,\r\n EXPLANATION_TITLE,\r\n IAiContext\r\n} from '../../constant'\r\nimport EditorReader from '../editor/EditorReader'\r\nimport EssayQuestionPreviewV2 from '../quiz-component-v2/questionTypeV2/ConstructedQuestionV2'\r\nimport { replaceTextAlignCenterToWebKitCenter } from '../../utils'\r\nimport FileDisplay from '../FileDisplay'\r\nimport { CollapseArrowIcon } from '@components/Icon'\r\nimport clsx from 'clsx'\r\nimport ExplanationV2 from '@components/explanationV2'\r\nimport CommentListV2 from '@components/comment-list-v2'\r\nimport ListGradingFile from '@components/grading-file/ListGradingFile'\r\nimport AIComment from '@components/render-view/AIComment'\r\nexport interface IGradeQuestion {\r\n id: string\r\n question_grade: number\r\n answer_gradings: AnswerGrading[]\r\n attempt_grading: AttemptGrading\r\n}\r\n\r\nexport interface AnswerGrading {\r\n id: string\r\n requirement_id: string\r\n answer_grade: number\r\n grading_file: any\r\n details: Detail[]\r\n file_grade: number\r\n comment?: string\r\n ai_grade?: number\r\n}\r\n\r\nexport interface Detail {\r\n begin: number\r\n end: number\r\n grade: number\r\n comment: string\r\n status: string\r\n ai_contexts?: IAiContext[]\r\n}\r\n\r\nexport interface AttemptGrading {\r\n id: string\r\n created_at: string\r\n}\r\ninterface IActiveQuestion {\r\n question_topic: {\r\n files: IFile[]\r\n exhibits: {\r\n id: string\r\n description: string\r\n name: string\r\n files: IFile[]\r\n }[]\r\n description: string\r\n }\r\n requirements: IRequirement[]\r\n exhibits: {\r\n id: string\r\n description: string\r\n name: string\r\n files: IFile[]\r\n }[]\r\n short_answer: string | any\r\n answer_file: IFileAnswer\r\n question_content: string\r\n requirement_answers?: Array<any>\r\n grading_method?: string\r\n grading_question: IGradeQuestion\r\n qType: QUESTION_TYPES\r\n solution?: string\r\n ai_contexts?: IAiContext[]\r\n course_ai_contexts?: IAiContext[]\r\n}\r\ninterface IProps {\r\n activeQuestion: IActiveQuestion\r\n handleShowListRequirement: (e: any) => void\r\n showRequirement?: IRequirement | null\r\n showListRequirement: boolean\r\n handleShowRequirement: ({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation,\r\n answer_template_files\r\n }: {\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n explanation: string\r\n answer_template_files?: string[]\r\n }) => void\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n handleShowExhibit: (\r\n data: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n e: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n controlAnswer: any\r\n listRequirementRef: RefObject<HTMLDivElement>\r\n comment?: ICommment\r\n commentRef?: RefObject<HTMLDivElement>\r\n editorRef?: RefObject<HTMLDivElement>\r\n bodyRef?: RefObject<HTMLDivElement>\r\n submitted?: string\r\n activeCommentId?: string | null\r\n setActiveCommentId: React.Dispatch<React.SetStateAction<string | null>>\r\n setOpenComment?: (open: boolean) => void\r\n}\r\n\r\nconst EssayRenderV2 = ({\r\n activeQuestion,\r\n showRequirement,\r\n handleShowRequirement,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n comment,\r\n commentRef,\r\n editorRef,\r\n bodyRef,\r\n activeCommentId,\r\n setActiveCommentId,\r\n setOpenComment\r\n}: IProps) => {\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n const [showInfo, setShowInfo] = useState(true)\r\n const [openCommentIndex, setOpenCommentIndex] = useState<number | null>(null)\r\n const activeQuestionAiContexts = [\r\n ...(activeQuestion?.ai_contexts || []),\r\n ...(activeQuestion?.course_ai_contexts || [])\r\n ].filter((ctx: IAiContext) => ctx?.show_to_student !== false)\r\n const exhibits = [\r\n ...(activeQuestion?.exhibits && activeQuestion?.exhibits.length > 0\r\n ? activeQuestion?.exhibits\r\n : []),\r\n ...(activeQuestion?.question_topic?.exhibits &&\r\n activeQuestion?.question_topic?.exhibits?.length > 0\r\n ? activeQuestion?.question_topic?.exhibits\r\n : [])\r\n ]\r\n const editorRefs = useRef<RefObject<HTMLDivElement>[]>([])\r\n const commentRefs = useRef<RefObject<HTMLDivElement>[]>([])\r\n\r\n // Đảm bảo tạo đủ ref trước khi render\r\n if (\r\n activeQuestion.requirements &&\r\n editorRefs.current.length !== activeQuestion.requirements.length\r\n ) {\r\n editorRefs.current = activeQuestion.requirements.map(() =>\r\n React.createRef<HTMLDivElement>()\r\n )\r\n commentRefs.current = activeQuestion.requirements.map(() =>\r\n React.createRef<HTMLDivElement>()\r\n )\r\n }\r\n\r\n const selectedGrading =\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (answerGrade: AnswerGrading) =>\r\n answerGrade?.requirement_id === showRequirement?.id\r\n )\r\n const hasComments = activeQuestion.requirements?.length\r\n ? selectedGrading?.details && selectedGrading.details.length > 0\r\n : comment?.details && comment.details.length > 0\r\n\r\n const hasDescriptionItemSet =\r\n activeQuestion?.question_topic?.description &&\r\n activeQuestion?.question_topic?.description.length > 0\r\n\r\n return (\r\n <div className='flex items-start justify-between gap-4'>\r\n <div\r\n className='flex flex-1 flex-col gap-4 essay-wrapper-v2 quiz-component__content--horizontal-v2 rounded-xl mx-auto max-w-multi-question'\r\n >\r\n {/* <EditorReader\r\n text_editor_content={activeQuestion?.question_content}\r\n className='requirement-question-content'\r\n /> */}\r\n {hasDescriptionItemSet && (\r\n <CollapsibleItem\r\n content={activeQuestion.question_topic.description}\r\n showText='Show Description'\r\n hideText='Hide Description'\r\n title='Description'\r\n />\r\n )}\r\n\r\n {activeQuestion?.question_content && activeQuestion?.requirements?.length > 1 && (\r\n <CollapsibleItem\r\n content={activeQuestion.question_content}\r\n showText='Show Question'\r\n hideText='Hide Question'\r\n title='Question'\r\n />\r\n )}\r\n\r\n {activeQuestion.requirements?.length > 0 ? (\r\n activeQuestion.requirements.map(\r\n (item: IRequirement, index: number) => (\r\n <RequirementItem\r\n key={item.id}\r\n editorRef={editorRefs.current[index]}\r\n commentRef={commentRefs.current[index]}\r\n {...{\r\n item,\r\n index,\r\n comment,\r\n activeQuestion,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n bodyRef,\r\n handleShowRequirement,\r\n activeCommentId,\r\n setActiveCommentId,\r\n openCommentIndex,\r\n setOpenCommentIndex\r\n }}\r\n />\r\n )\r\n )\r\n ) : (\r\n <div className='bg-white rounded-xl p-4 flex flex-col gap-6 requirement-item essay-shadow'>\r\n {/* label */}\r\n <div className='flex items-center justify-between w-full'>\r\n <div className='flex items-center requirement-label'>\r\n <div className='flex gap-2 items-center text-sm text-white bg-success px-2 py-1 rounded-lg requirement-grade'>\r\n <p className='font-semibold'>Grade:</p>\r\n <p>\r\n {comment?.answer_grade\r\n ? comment?.answer_grade\r\n : activeQuestion?.grading_method === GRADING_METHOD.MANUAL\r\n ? '--'\r\n : 0}\r\n </p>{' '}\r\n </div>\r\n </div>\r\n {(!!showRequirement?.description ||\r\n !!showRequirement?.files?.length ||\r\n !!exhibits?.length) && (\r\n <div\r\n onClick={() => setShowInfo(!showInfo)}\r\n className='cursor-pointer requirement-collapse'\r\n >\r\n <div className='collapse-arrow'>\r\n <CollapseArrowIcon selected={showInfo} />\r\n </div>\r\n <div className='collapse-text'>\r\n {showInfo ? 'Hide Question' : 'Show Question'}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {activeQuestionAiContexts && activeQuestionAiContexts.length > 0 && (\r\n <ListGradingFile\r\n listFiles={activeQuestionAiContexts}\r\n title='Question/ Requirement Grading files'\r\n />\r\n )}\r\n {/* content */}\r\n <div\r\n className={clsx('flex flex-col question-content', {\r\n '!hidden':\r\n !showInfo ||\r\n (!showRequirement?.description &&\r\n !showRequirement?.files?.length &&\r\n !exhibits?.length)\r\n })}\r\n >\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden:\r\n !showInfo ||\r\n (!showRequirement?.description &&\r\n !showRequirement?.files?.length)\r\n })}\r\n >\r\n {showRequirement?.description && (\r\n <EditorReader\r\n className='editor-wrap font-medium'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n showRequirement?.description || ''\r\n )}\r\n />\r\n )}\r\n {showRequirement?.files?.length > 0 &&\r\n showRequirement?.files.map((e: any, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n\r\n {/* exhibits */}\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || !exhibits?.length\r\n })}\r\n >\r\n {exhibits?.length > 0 && (\r\n <div className='flex flex-col gap-4'>\r\n {exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: any\r\n name: string\r\n files: any\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div key={i}>\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit mb-3 font-semibold'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n {e.name}\r\n </div>\r\n <div className='flex-auto overflow-auto'>\r\n {e?.description && (\r\n <EditorReader\r\n className='editor-wrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n e?.description || ''\r\n )}\r\n />\r\n )}\r\n {e?.files &&\r\n e?.files?.length > 0 &&\r\n e?.files.map((f: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={f?.resource?.url}\r\n fileName={f?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {activeQuestion?.question_content && (\r\n <EditorReader\r\n className='editor-wrap mt-1.5 sapp-questions-v2'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n activeQuestion?.question_content || ''\r\n )}\r\n />\r\n )}\r\n <EssayQuestionPreviewV2\r\n reqIndex={showRequirement?.index ? showRequirement?.index - 1 : 0}\r\n question_data={activeQuestion}\r\n control={controlAnswer}\r\n defaultValue={\r\n activeQuestion?.requirement_answers &&\r\n activeQuestion?.requirement_answers.length > 0\r\n ? showRequirement?.short_answer\r\n : activeQuestion?.short_answer\r\n }\r\n setOpenPdf={setOpenPdf}\r\n answer_file={\r\n showRequirement?.name\r\n ? showRequirement?.answer_file\r\n : activeQuestion.answer_file\r\n }\r\n name=''\r\n listGrades={comment}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n grading_file={comment?.grading_file}\r\n activeCommentId={activeCommentId}\r\n setActiveCommentId={setActiveCommentId}\r\n setOpenCommentIndex={(val) => setOpenComment?.(val !== null)}\r\n handleShowRequirement={() =>\r\n handleShowRequirement({\r\n description: showRequirement?.description || '',\r\n index: 1,\r\n name: showRequirement?.name || '',\r\n files: showRequirement?.files,\r\n explanation:\r\n showRequirement?.explanation ||\r\n activeQuestion?.solution ||\r\n '',\r\n answer_template_files: showRequirement?.answer_template_files\r\n })\r\n }\r\n />\r\n {\r\n // !activeQuestion?.grading_question &&\r\n (showRequirement?.explanation || activeQuestion?.solution) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )\r\n }\r\n {comment?.comment && (\r\n <AIComment\r\n title='Question Comment'\r\n content={comment?.comment}\r\n qType={activeQuestion.qType}\r\n grade={comment?.ai_grade}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {showRequirement &&\r\n hasComments &&\r\n activeQuestion.requirements?.length > 0 && (\r\n <div className='comment-sidebar-mobile-root'>\r\n {activeQuestion.requirements.map((item: IRequirement, index: number) => {\r\n const grading =\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (answerGrade: AnswerGrading) =>\r\n answerGrade?.requirement_id === item.id\r\n )\r\n const showRequirementIndex = showRequirement?.index\r\n ? showRequirement.index - 1\r\n : 0\r\n\r\n return (\r\n <CommentListV2\r\n key={item.id}\r\n className={clsx('requirement-comment-v2', {\r\n 'active-comment-v2': openCommentIndex === index,\r\n 'hide-comment-v2': openCommentIndex !== index\r\n })}\r\n overlayClassName={clsx({\r\n active: openCommentIndex === showRequirementIndex\r\n })}\r\n commentRef={commentRefs.current[index]}\r\n data={grading}\r\n editorRef={editorRefs.current[index]}\r\n activeCommentId={activeCommentId}\r\n setActiveCommentId={setActiveCommentId}\r\n setOpenComment={(open: boolean) => {\r\n setOpenCommentIndex(open ? showRequirementIndex : null)\r\n }}\r\n />\r\n )\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nconst RequirementItem = ({\r\n item,\r\n index,\r\n activeQuestion,\r\n setOpenPdf,\r\n handleShowExhibit,\r\n controlAnswer,\r\n bodyRef,\r\n editorRef,\r\n commentRef,\r\n handleShowRequirement,\r\n activeCommentId,\r\n setActiveCommentId,\r\n openCommentIndex,\r\n setOpenCommentIndex\r\n}: {\r\n item: IRequirement\r\n index: number\r\n activeQuestion: IActiveQuestion\r\n setOpenPdf: Dispatch<\r\n SetStateAction<{ status: boolean; url: string } | undefined>\r\n >\r\n handleShowExhibit: (\r\n data: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n e: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => void\r\n controlAnswer: any\r\n bodyRef?: RefObject<HTMLDivElement>\r\n editorRef?: RefObject<HTMLDivElement>\r\n commentRef?: RefObject<HTMLDivElement>\r\n handleShowRequirement: ({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation,\r\n answer_template_files\r\n }: {\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n explanation: string\r\n answer_template_files?: string[]\r\n }) => void\r\n activeCommentId?: string | null\r\n setActiveCommentId: React.Dispatch<React.SetStateAction<string | null>>\r\n openCommentIndex: number | null\r\n setOpenCommentIndex: React.Dispatch<React.SetStateAction<number | null>>\r\n}) => {\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n const [showInfo, setShowInfo] = useState(true)\r\n const exhibits = [\r\n ...(activeQuestion?.exhibits && activeQuestion?.exhibits.length > 0\r\n ? activeQuestion?.exhibits\r\n : []),\r\n ...(activeQuestion?.question_topic?.exhibits &&\r\n activeQuestion?.question_topic?.exhibits?.length > 0\r\n ? activeQuestion?.question_topic?.exhibits\r\n : [])\r\n ]\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id === activeQuestion?.requirements?.[index].id\r\n )\r\n const grading = activeQuestion?.grading_question?.answer_gradings?.find(\r\n (answerGrade: AnswerGrading) => answerGrade?.requirement_id === item.id\r\n )\r\n const gradingFilesList = [\r\n ...(item?.ai_contexts || []),\r\n ...(activeQuestion?.course_ai_contexts || [])\r\n ].filter((ctx: IAiContext) => ctx?.show_to_student !== false)\r\n\r\n return (\r\n <div className='bg-white flex flex-1 flex-col rounded-xl requirement-item essay-shadow'>\r\n {/* label */}\r\n <div className='flex items-center justify-between w-full'>\r\n <div className='flex items-center requirement-label'>\r\n <p className='font-semibold requirement-title'>\r\n Requirement {index + 1}\r\n </p>\r\n <div className='flex gap-2 items-center text-white bg-success rounded-lg requirement-grade'>\r\n <p className='font-semibold'>Grade:</p>\r\n <p>\r\n {grading?.answer_grade\r\n ? grading?.answer_grade\r\n : activeQuestion?.grading_method === GRADING_METHOD.MANUAL\r\n ? '--'\r\n : 0}\r\n </p>{' '}\r\n </div>\r\n </div>\r\n {(!!item?.description ||\r\n !!item?.files?.length ||\r\n !!exhibits?.length) && (\r\n <div\r\n onClick={() => setShowInfo(!showInfo)}\r\n className='cursor-pointer requirement-collapse'\r\n >\r\n <div className='collapse-arrow'>\r\n <CollapseArrowIcon selected={showInfo} />\r\n </div>\r\n <div className='collapse-text'>\r\n {showInfo ? 'Hide Question' : 'Show Question'}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {gradingFilesList && gradingFilesList.length > 0 && (\r\n <ListGradingFile\r\n listFiles={gradingFilesList}\r\n title='Question/ Requirement Grading files'\r\n />\r\n )}\r\n\r\n {/* content */}\r\n <div\r\n className={clsx('flex flex-col question-content', {\r\n '!hidden':\r\n !showInfo ||\r\n (!item?.description && !item?.files?.length && !exhibits?.length)\r\n })}\r\n >\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || (!item?.description && !item?.files?.length)\r\n })}\r\n >\r\n {item?.description && (\r\n <EditorReader\r\n className='editor-wrap font-medium'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n item?.description || ''\r\n )}\r\n />\r\n )}\r\n {item?.files?.length > 0 &&\r\n item?.files.map((e: any, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={e?.resource?.url}\r\n fileName={e?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n\r\n {/* exhibits */}\r\n <div\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo || !exhibits?.length\r\n })}\r\n >\r\n {exhibits && exhibits?.length > 0 && (\r\n <div className='flex flex-col gap-4'>\r\n {exhibits?.length > 0 &&\r\n exhibits?.map(\r\n (\r\n e: {\r\n id: string\r\n description: any\r\n name: string\r\n files: any\r\n },\r\n i: number\r\n ) => {\r\n return (\r\n <div key={i}>\r\n <div\r\n className='cursor-pointer hover:text-primary w-fit mb-3 font-semibold'\r\n key={e.id}\r\n onClick={(event) => {\r\n handleShowExhibit(\r\n {\r\n id: e.id,\r\n description: e.description,\r\n name: e.name,\r\n index: i + 1,\r\n files: e.files\r\n },\r\n event\r\n )\r\n }}\r\n >\r\n {e.name}\r\n </div>\r\n <div className='flex-auto overflow-auto'>\r\n {e?.description && (\r\n <EditorReader\r\n className='editor-wrap'\r\n text_editor_content={replaceTextAlignCenterToWebKitCenter(\r\n e?.description || ''\r\n )}\r\n />\r\n )}\r\n {e?.files &&\r\n e?.files?.length > 0 &&\r\n e?.files.map((f: IFile, index: number) => {\r\n return (\r\n <FileDisplay\r\n key={index}\r\n setOpenPdf={setOpenPdf}\r\n url={f?.resource?.url}\r\n fileName={f?.resource?.name}\r\n />\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* answers */}\r\n <EssayQuestionPreviewV2\r\n reqIndex={index}\r\n question_data={activeQuestion}\r\n control={controlAnswer}\r\n defaultValue={answer?.short_answer}\r\n setOpenPdf={setOpenPdf}\r\n answer_file={\r\n item?.name ? item?.answer_file : activeQuestion.answer_file\r\n }\r\n name={`${index}_answer`}\r\n listGrades={grading}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n grading_file={grading?.grading_file}\r\n activeCommentId={activeCommentId}\r\n setActiveCommentId={setActiveCommentId}\r\n setOpenCommentIndex={setOpenCommentIndex}\r\n handleShowRequirement={() => {\r\n setOpenCommentIndex(index)\r\n handleShowRequirement({\r\n description: item?.description || '',\r\n index: index + 1,\r\n name: item?.name || '',\r\n files: item.files,\r\n explanation: item?.explanation || '',\r\n answer_template_files: item?.answer_template_files || []\r\n })\r\n }}\r\n />\r\n {\r\n // !activeQuestion?.grading_question &&\r\n (item.explanation || activeQuestion?.solution) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={item}\r\n />\r\n )\r\n }\r\n {grading?.comment && (\r\n <AIComment\r\n content={grading?.comment}\r\n qType={activeQuestion.qType}\r\n grade={grading?.ai_grade}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\nconst CollapsibleItem = ({\r\n title = '',\r\n content = '',\r\n showText = '',\r\n hideText = ''\r\n}) => {\r\n const [showInfo, setShowInfo] = useState(true)\r\n\r\n return (\r\n <div className='bg-white flex flex-1 flex-col rounded-xl requirement-item essay-shadow'>\r\n {/* label */}\r\n <div className='flex items-center justify-between w-full'>\r\n <div className='flex items-center requirement-label'>\r\n <p className='font-semibold requirement-title'>{title}</p>\r\n </div>\r\n\r\n <div\r\n onClick={() => setShowInfo(!showInfo)}\r\n className='cursor-pointer requirement-collapse'\r\n >\r\n <div className='collapse-arrow'>\r\n <CollapseArrowIcon selected={showInfo} />\r\n </div>\r\n <div className='collapse-text'>\r\n {showInfo ? hideText : showText}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* content */}\r\n <EditorReader\r\n text_editor_content={content}\r\n className={clsx('transition duration-300', {\r\n hidden: !showInfo\r\n })}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default EssayRenderV2\r\n","import { useLayoutEffect, useState } from 'react'\r\n\r\nexport const MAX_LIST_QUESTION_COLUMNS = 25\r\n\r\n/** Số ô câu hỏi mỗi hàng theo viewport; màn lớn nhất tối đa 25. */\r\nexport const getListQuestionColumnsPerRow = (width: number): number => {\r\n if (width >= 1600) return 25\r\n if (width >= 1280) return 20\r\n if (width >= 1024) return 15\r\n if (width >= 768) return 10\r\n if (width >= 480) return 6\r\n return 4\r\n}\r\n\r\nexport const useListQuestionColumnsPerRow = () => {\r\n const [columnsPerRow, setColumnsPerRow] = useState(() => {\r\n if (typeof window === 'undefined') return MAX_LIST_QUESTION_COLUMNS\r\n return getListQuestionColumnsPerRow(window.innerWidth)\r\n })\r\n\r\n useLayoutEffect(() => {\r\n const onResize = () => {\r\n setColumnsPerRow(getListQuestionColumnsPerRow(window.innerWidth))\r\n }\r\n onResize()\r\n window.addEventListener('resize', onResize)\r\n return () => window.removeEventListener('resize', onResize)\r\n }, [])\r\n\r\n return columnsPerRow\r\n}\r\n","import clsx from 'clsx'\r\nimport React from 'react'\r\n\r\nimport { AltArrowLeft, AltArrowRight } from '@utils/icons'\r\nimport { IQuestionAnswer } from './types'\r\n\r\nconst formatPosition = (position?: number | string) => {\r\n if (position === undefined || position === null || position === '') {\r\n return ''\r\n }\r\n\r\n const value = String(position)\r\n return value.length >= 2 ? value : value.padStart(2, '0')\r\n}\r\n\r\nconst getQuestionBoxClass = (\r\n isMultipleChoice: boolean,\r\n data: IQuestionAnswer\r\n) => {\r\n if (isMultipleChoice) {\r\n return data?.is_correct\r\n ? 'list-question-box list-question-box--success'\r\n : 'list-question-box list-question-box--error'\r\n }\r\n\r\n return data?.question?.qType === 'ESSAY' && data?.active === 'SUBMITED'\r\n ? 'list-question-box list-question-box--info'\r\n : 'list-question-box list-question-box--warning'\r\n}\r\n\r\ninterface QuestionGridProps {\r\n listQuestions: IQuestionAnswer[]\r\n getActiveQuestion: (id: string) => void\r\n activeQuestionId?: string\r\n isMultipleChoice?: boolean\r\n isMultipleChoiceQuestion?: (question: IQuestionAnswer) => boolean\r\n layout?: 'navigation' | 'panel'\r\n columnsPerRow?: number\r\n rowCount?: number\r\n isExpanded?: boolean\r\n showPagination?: boolean\r\n currentPage?: number\r\n totalPages?: number\r\n onPrevPage?: () => void\r\n onNextPage?: () => void\r\n handleCloseModal?: () => void\r\n}\r\n\r\nconst QuestionGrid = ({\r\n listQuestions = [],\r\n getActiveQuestion,\r\n activeQuestionId,\r\n isMultipleChoice = false,\r\n isMultipleChoiceQuestion,\r\n layout = 'navigation',\r\n columnsPerRow = 25,\r\n rowCount = 2,\r\n isExpanded = true,\r\n showPagination = false,\r\n currentPage = 0,\r\n totalPages = 1,\r\n onPrevPage,\r\n onNextPage,\r\n handleCloseModal\r\n}: QuestionGridProps) => {\r\n const renderQuestionButton = (question: IQuestionAnswer) => {\r\n const isActive = question?.id === activeQuestionId\r\n const isDisabled = question?.active === 'UN_SUBMITTED' || !question?.id\r\n const questionIsMultipleChoice = isMultipleChoiceQuestion\r\n ? isMultipleChoiceQuestion(question)\r\n : isMultipleChoice\r\n\r\n return (\r\n <button\r\n key={question.id}\r\n type='button'\r\n disabled={isDisabled}\r\n onClick={() => {\r\n getActiveQuestion(question.id)\r\n handleCloseModal?.()\r\n }}\r\n className={clsx(\r\n getQuestionBoxClass(questionIsMultipleChoice, question),\r\n {\r\n 'list-question-box--active': isActive,\r\n 'disabled:cursor-not-allowed disabled:opacity-60': isDisabled\r\n }\r\n )}\r\n >\r\n {formatPosition(question.position)}\r\n </button>\r\n )\r\n }\r\n\r\n const renderNavigationRows = () => {\r\n const rows = Array.from({ length: rowCount }, (_, index) =>\r\n listQuestions.slice(\r\n index * columnsPerRow,\r\n (index + 1) * columnsPerRow\r\n )\r\n )\r\n\r\n return (\r\n <div className='list-question-grid__rows'>\r\n {rows.map((row, rowIndex) => {\r\n if (row.length === 0 && rowIndex > 0 && isExpanded) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n key={`row-${rowIndex}`}\r\n className={clsx('list-question-grid__row', {\r\n 'list-question-grid__row--collapsible': rowIndex > 0,\r\n 'list-question-grid__row--collapsed':\r\n rowIndex > 0 && !isExpanded,\r\n 'list-question-grid__row--expanded':\r\n rowIndex > 0 && isExpanded\r\n })}\r\n style={{\r\n gridTemplateColumns: `repeat(${Math.max(row.length, 1)}, 38px)`\r\n }}\r\n >\r\n {row.map(renderQuestionButton)}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n )\r\n }\r\n\r\n const renderPanelGrid = () => (\r\n <div className='list-question-grid__panel'>\r\n {listQuestions.map(renderQuestionButton)}\r\n </div>\r\n )\r\n\r\n return (\r\n <div className='list-question-grid'>\r\n {showPagination && (\r\n <button\r\n type='button'\r\n className='list-question-grid__arrow'\r\n disabled={currentPage <= 0}\r\n onClick={onPrevPage}\r\n aria-label='Previous page'\r\n >\r\n <AltArrowLeft />\r\n </button>\r\n )}\r\n\r\n <div className='list-question-grid__content'>\r\n {layout === 'navigation' ? renderNavigationRows() : renderPanelGrid()}\r\n </div>\r\n\r\n {showPagination && (\r\n <button\r\n type='button'\r\n className='list-question-grid__arrow'\r\n disabled={currentPage >= totalPages - 1}\r\n onClick={onNextPage}\r\n aria-label='Next page'\r\n >\r\n <AltArrowRight />\r\n </button>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default QuestionGrid\r\n","import React, { useEffect, useMemo, useState } from 'react'\r\nimport { isEmpty } from 'lodash'\r\nimport clsx from 'clsx'\r\n\r\nimport { DefaultArrowDown, DownArrowIcon, QuestionCircleIcon } from '../icons'\r\nimport { useListQuestionColumnsPerRow } from 'hooks/useListQuestionColumnsPerRow'\r\nimport QuestionGrid from './QuestionGrid'\r\nimport {\r\n IQuestionAnswer,\r\n MultipleQuestionsData,\r\n QuestionFilterType\r\n} from './types'\r\n\r\nconst FILTER_OPTIONS: { value: QuestionFilterType; label: string }[] = [\r\n { value: 'all', label: 'Show all' },\r\n { value: 'multiple', label: 'Multiple Choice Questions' },\r\n { value: 'constructed', label: 'Constructed Questions' }\r\n]\r\n\r\nconst LEGEND_ITEMS = [\r\n { text: 'Correct', color: '#10B367' },\r\n { text: 'Incorrect', color: '#F80903' },\r\n { text: 'Completed', color: '#22AAFF' },\r\n { text: 'Not Completed', color: '#E68200' }\r\n]\r\n\r\nconst MULTIPLE_CHOICE_ANNOTATIONS = [\r\n { text: 'Correct', color: '#10B367' },\r\n { text: 'Incorrect', color: '#F80903' }\r\n]\r\n\r\nconst CONSTRUCTED_ANNOTATIONS = [\r\n { text: 'Completed', color: '#22AAFF' },\r\n { text: 'Not Completed', color: '#E68200' }\r\n]\r\n\r\ninterface ListQuestionProps {\r\n questions: MultipleQuestionsData\r\n getActiveQuestion: (id: string) => void\r\n activeQuestionId?: string\r\n handleCloseModal?: () => void\r\n variant?: 'navigation' | 'panel'\r\n questionFilter?: QuestionFilterType\r\n onQuestionFilterChange?: (value: QuestionFilterType) => void\r\n}\r\n\r\nconst sortByPosition = (items: IQuestionAnswer[]) =>\r\n [...items].sort(\r\n (a, b) => Number(a?.position || 0) - Number(b?.position || 0)\r\n )\r\n\r\nconst ListQuestion = ({\r\n questions,\r\n getActiveQuestion,\r\n activeQuestionId,\r\n handleCloseModal,\r\n variant = 'navigation',\r\n questionFilter: questionFilterProp,\r\n onQuestionFilterChange\r\n}: ListQuestionProps) => {\r\n const listMultipleChoiceQuestions = questions?.selectedResponseAnswers || []\r\n const listConstructedQuestions = questions?.constructedResponseAnswers || []\r\n\r\n const isFilterControlled =\r\n questionFilterProp !== undefined && onQuestionFilterChange !== undefined\r\n\r\n const [internalFilter, setInternalFilter] =\r\n useState<QuestionFilterType>('all')\r\n const filter = isFilterControlled ? questionFilterProp : internalFilter\r\n const [currentPage, setCurrentPage] = useState(0)\r\n const [isExpanded, setIsExpanded] = useState(true)\r\n const [showLegend, setShowLegend] = useState(false)\r\n const [showAllMultiple, setShowAllMultiple] = useState(false)\r\n const [showAllConstructed, setShowAllConstructed] = useState(false)\r\n\r\n const columnsPerRow = useListQuestionColumnsPerRow()\r\n const maxRowCount = 2\r\n const rowCount = isExpanded ? maxRowCount : 1\r\n const questionsPerPage = columnsPerRow * rowCount\r\n\r\n useEffect(() => {\r\n setCurrentPage(0)\r\n }, [columnsPerRow, isExpanded, filter])\r\n\r\n const filteredQuestions = useMemo(() => {\r\n if (filter === 'multiple') {\r\n return sortByPosition(listMultipleChoiceQuestions)\r\n }\r\n\r\n if (filter === 'constructed') {\r\n return sortByPosition(listConstructedQuestions)\r\n }\r\n\r\n return sortByPosition([\r\n ...listMultipleChoiceQuestions,\r\n ...listConstructedQuestions\r\n ])\r\n }, [filter, listMultipleChoiceQuestions, listConstructedQuestions])\r\n\r\n const totalPages = Math.max(\r\n 1,\r\n Math.ceil(filteredQuestions.length / questionsPerPage)\r\n )\r\n\r\n const pageQuestions = filteredQuestions.slice(\r\n currentPage * questionsPerPage,\r\n (currentPage + 1) * questionsPerPage\r\n )\r\n\r\n const isMultipleChoiceFilter = (question: IQuestionAnswer) =>\r\n listMultipleChoiceQuestions.some((item) => item.id === question.id)\r\n\r\n const handleToggleExpand = () => {\r\n setIsExpanded((prev) => !prev)\r\n setCurrentPage(0)\r\n }\r\n\r\n const handleFilterChange = (value: QuestionFilterType) => {\r\n if (!isFilterControlled) {\r\n setInternalFilter(value)\r\n }\r\n onQuestionFilterChange?.(value)\r\n setCurrentPage(0)\r\n }\r\n\r\n const renderLegendTooltip = () => (\r\n <div className='list-question-navigation__legend'>\r\n {LEGEND_ITEMS.map((item) => (\r\n <div key={item.text} className='list-question-navigation__legend-item'>\r\n <span\r\n className='list-question-navigation__legend-dot'\r\n style={{ backgroundColor: item.color }}\r\n />\r\n <span>{item.text}</span>\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n\r\n const renderAnnotations = (\r\n annotations: { text: string; color: string }[]\r\n ) => (\r\n <div className='list-question-panel__annotations'>\r\n {annotations.map((annotation) => (\r\n <div\r\n key={annotation.text}\r\n className='list-question-panel__annotation'\r\n >\r\n <span\r\n className='list-question-panel__annotation-dot'\r\n style={{ backgroundColor: annotation.color }}\r\n />\r\n <span>{annotation.text}</span>\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n\r\n const renderPanelSection = ({\r\n isMultipleChoice,\r\n isShowDivider,\r\n listQuestions,\r\n showAll,\r\n setShowAll\r\n }: {\r\n isMultipleChoice: boolean\r\n isShowDivider?: boolean\r\n listQuestions: IQuestionAnswer[]\r\n showAll: boolean\r\n setShowAll: (value: boolean) => void\r\n }) => {\r\n const visibleQuestions =\r\n showAll || listQuestions.length <= 7\r\n ? listQuestions\r\n : listQuestions.slice(0, 7)\r\n\r\n return (\r\n <>\r\n {isShowDivider && <div className='list-question-panel__divider' />}\r\n <div className='list-question-panel__title'>\r\n <span>\r\n {isMultipleChoice\r\n ? 'Multiple Choice Questions'\r\n : 'Constructed Questions'}\r\n </span>\r\n {listQuestions.length > 7 && (\r\n <button\r\n type='button'\r\n className='list-question-panel__show-more'\r\n onClick={() => setShowAll(!showAll)}\r\n >\r\n {showAll ? 'See less' : 'Show more'}\r\n </button>\r\n )}\r\n </div>\r\n <QuestionGrid\r\n layout='panel'\r\n isMultipleChoice={isMultipleChoice}\r\n listQuestions={visibleQuestions}\r\n getActiveQuestion={getActiveQuestion}\r\n activeQuestionId={activeQuestionId}\r\n handleCloseModal={handleCloseModal}\r\n />\r\n {renderAnnotations(\r\n isMultipleChoice\r\n ? MULTIPLE_CHOICE_ANNOTATIONS\r\n : CONSTRUCTED_ANNOTATIONS\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n if (variant === 'panel') {\r\n return (\r\n <div className='list-question-panel'>\r\n {!isEmpty(listMultipleChoiceQuestions) &&\r\n renderPanelSection({\r\n isMultipleChoice: true,\r\n listQuestions: listMultipleChoiceQuestions,\r\n showAll: showAllMultiple,\r\n setShowAll: setShowAllMultiple\r\n })}\r\n {!isEmpty(listConstructedQuestions) &&\r\n renderPanelSection({\r\n isMultipleChoice: false,\r\n isShowDivider: !isEmpty(listMultipleChoiceQuestions),\r\n listQuestions: listConstructedQuestions,\r\n showAll: showAllConstructed,\r\n setShowAll: setShowAllConstructed\r\n })}\r\n </div>\r\n )\r\n }\r\n\r\n if (\r\n isEmpty(listMultipleChoiceQuestions) &&\r\n isEmpty(listConstructedQuestions)\r\n ) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n className={clsx('list-question-navigation', {\r\n 'list-question-navigation--expanded': isExpanded,\r\n 'list-question-navigation--collapsed': !isExpanded\r\n })}\r\n >\r\n <button\r\n type='button'\r\n className={clsx('list-question-navigation__toggle', {\r\n 'list-question-navigation__toggle--expanded': isExpanded\r\n })}\r\n onClick={handleToggleExpand}\r\n aria-label={isExpanded ? 'Collapse question list' : 'Expand question list'}\r\n >\r\n <DownArrowIcon className='hover-arrow' />\r\n <DefaultArrowDown className='default-arrow' />\r\n </button>\r\n\r\n <div\r\n className={clsx('list-question-navigation__content', {\r\n 'list-question-navigation__content--expanded': isExpanded,\r\n 'list-question-navigation__content--collapsed': !isExpanded\r\n })}\r\n >\r\n <div className='list-question-navigation__body'>\r\n <div className='list-question-navigation__center'>\r\n <QuestionGrid\r\n layout='navigation'\r\n listQuestions={pageQuestions}\r\n getActiveQuestion={getActiveQuestion}\r\n activeQuestionId={activeQuestionId}\r\n isMultipleChoiceQuestion={isMultipleChoiceFilter}\r\n columnsPerRow={columnsPerRow}\r\n rowCount={maxRowCount}\r\n isExpanded={isExpanded}\r\n showPagination\r\n currentPage={currentPage}\r\n totalPages={totalPages}\r\n onPrevPage={() =>\r\n setCurrentPage((prev) => Math.max(prev - 1, 0))\r\n }\r\n onNextPage={() =>\r\n setCurrentPage((prev) => Math.min(prev + 1, totalPages - 1))\r\n }\r\n handleCloseModal={handleCloseModal}\r\n />\r\n </div>\r\n\r\n <div className='list-question-navigation__side'>\r\n <div\r\n className={clsx('list-question-navigation__filters', {\r\n 'list-question-navigation__filters--collapsed': !isExpanded\r\n })}\r\n >\r\n {FILTER_OPTIONS.map((option) => (\r\n <button\r\n key={option.value}\r\n type='button'\r\n className={clsx('list-question-navigation__filter', {\r\n 'list-question-navigation__filter--active':\r\n filter === option.value\r\n })}\r\n onClick={() => handleFilterChange(option.value)}\r\n tabIndex={isExpanded ? 0 : -1}\r\n aria-hidden={!isExpanded}\r\n >\r\n <span\r\n className={clsx('list-question-navigation__radio', {\r\n 'list-question-navigation__radio--checked':\r\n filter === option.value\r\n })}\r\n />\r\n <span>{option.label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n className='list-question-navigation__help'\r\n onMouseEnter={() => setShowLegend(true)}\r\n onMouseLeave={() => setShowLegend(false)}\r\n >\r\n <button\r\n type='button'\r\n className='list-question-navigation__help-btn'\r\n aria-label='Question status legend'\r\n >\r\n <QuestionCircleIcon />\r\n </button>\r\n {showLegend && renderLegendTooltip()}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ListQuestion\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport { FieldValues, UseFormReset, useForm } from 'react-hook-form'\r\n\r\nimport Divider from '@components/common/divider/Divider'\r\nimport { ResizeIcon } from '@components/icons/ResizeIcon'\r\nimport clsx from 'clsx'\r\nimport {\r\n DISPLAY_TYPE,\r\n EXHIBIT_TEXT_REPLACE,\r\n EXPLANATION_TITLE,\r\n ICommment,\r\n IFile,\r\n IRequirement,\r\n IRequirementAnswer,\r\n IShowExhibit,\r\n PROGRAM,\r\n QUESTION_TYPES,\r\n SOLUTION_TITLE\r\n} from 'constant'\r\nimport useMousePosition from 'hooks/useMousePosition'\r\nimport { useCommentMobileView } from 'hooks/useCommentMobileView'\r\nimport { convertMathToImage } from 'utils'\r\nimport PopupViewPdf from '../common/modal/PopupViewPdf'\r\nimport useClickOutside from '../HookClick'\r\nimport MoveQuestionBar from '../move-question-bar'\r\nimport DragNDropPreivew from './questionTypeV2/DragNDrop'\r\nimport AddWordPreview from './questionTypeV2/FillText'\r\nimport MultiChoiceQuestion from './questionTypeV2/MultipleChoiceQuestion'\r\nimport OneChoiceQuestion from './questionTypeV2/OneChoiceQuestion'\r\nimport SelectWord from './questionTypeV2/SelectWordQuestion'\r\nimport TopicDisplay from '../topic-display'\r\nimport ExplanationV2 from '@components/explanationV2'\r\nimport MatchQuizWrapper from './questionTypeV2/MatchQuiz'\r\nimport ExhibitMovableWindowV2 from '@components/ExhibitMovableWindowV2'\r\nimport EssayRenderV2 from '@components/essay-render-v2'\r\nimport CommentListV2 from '@components/comment-list-v2'\r\nimport ListQuestion from '@components/list-question/ListQuestion'\r\nimport {\r\n MultipleQuestionsData,\r\n QuestionFilterType\r\n} from '@components/list-question/types'\r\n\r\nexport type QuizComponentV2Ref = {\r\n onSubmit: ({\r\n activityId,\r\n tabId,\r\n quizId,\r\n then\r\n }: {\r\n activityId: string\r\n tabId: string\r\n quizId: string\r\n then?: (e: any) => void\r\n }) => void\r\n reset: UseFormReset<FieldValues>\r\n}\r\n\r\ntype Props = {\r\n activeQuestion?: any\r\n document_id: string\r\n getActiveQuestion: (id: string) => Promise<void>\r\n renderPdf?: ({\r\n url,\r\n fileName\r\n }: {\r\n url: string\r\n fileName?: string | undefined\r\n }) => React.ReactNode\r\n questions?: MultipleQuestionsData\r\n questionFilter?: QuestionFilterType\r\n onQuestionFilterChange?: (value: QuestionFilterType) => void\r\n}\r\n\r\nconst QuizComponentV2 = ({\r\n activeQuestion,\r\n document_id,\r\n getActiveQuestion,\r\n renderPdf,\r\n questions,\r\n questionFilter,\r\n onQuestionFilterChange\r\n}: Props) => {\r\n const questionRef = useRef<HTMLDivElement>(null)\r\n const bodyRef = useRef<HTMLDivElement>(null)\r\n const [comment, setComment] = useState<ICommment>()\r\n const { control: controlAnswer, setValue } = useForm({})\r\n const [showListRequirement, setShowListRequirement] = useState<boolean>(false)\r\n const listRequirementRef = useRef<HTMLDivElement>(null)\r\n const [showRequirement, setShowRequirement] = useState<IRequirement | null>()\r\n const [openPdf, setOpenPdf] = useState<{\r\n status: boolean\r\n url: string\r\n name?: string\r\n }>()\r\n const [showExhibit, setShowExhibit] = useState<IShowExhibit | undefined>()\r\n const commentRef = useRef<HTMLDivElement>(null)\r\n const editorRef = useRef<HTMLDivElement>(null)\r\n const matchQuizRef = useRef<HTMLDivElement>(null)\r\n const [activeCommentId, setActiveCommentId] = useState<string | null>(null)\r\n const [openComment, setOpenComment] = useState(false)\r\n const isMobileCommentView = useCommentMobileView()\r\n\r\n const [exhibitText, setExhibitText] = useState('')\r\n\r\n const [startResize, setStartResize] = useState(false)\r\n const [currentMousePos, setCurrentMousePos] = useState(0)\r\n const [leftWidth, setLeftWidth] = useState(0)\r\n const [currentLeftWidth, setCurrentLeftWidth] = useState(0)\r\n const [mousePosition, setMousePosition] = useState<{\r\n x: number | null\r\n y: number | null\r\n }>({ x: null, y: null })\r\n const explanationTitle =\r\n activeQuestion?.qType === QUESTION_TYPES.ESSAY\r\n ? SOLUTION_TITLE\r\n : EXPLANATION_TITLE\r\n\r\n useClickOutside({\r\n ref: listRequirementRef,\r\n callback: () => { }\r\n })\r\n\r\n const handleShowRequirement = (data: {\r\n description: string\r\n index: number\r\n name: string\r\n files: any\r\n explanation: string\r\n }) => {\r\n if (activeQuestion?.requirements?.length) {\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id ===\r\n activeQuestion?.requirements?.[data.index - 1]?.id\r\n )\r\n setShowListRequirement(false)\r\n if (activeQuestion?.grading_question?.answer_gradings?.length) {\r\n setComment(\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (item: ICommment) => item?.requirement_id === answer?.requirement_id\r\n )\r\n )\r\n }\r\n setShowRequirement({\r\n ...data,\r\n answer_file: answer?.answer_file,\r\n short_answer: answer?.short_answer,\r\n active: answer?.active,\r\n id: answer?.requirement_id\r\n })\r\n } else {\r\n setShowRequirement(null)\r\n setComment(activeQuestion?.grading_question?.answer_gradings?.[0])\r\n }\r\n }\r\n\r\n const handleShowListRequirement = (e: any) => {\r\n const clickHandler = (event: MouseEvent) => {\r\n if (!(event.target as HTMLDivElement).closest('.requirement')) {\r\n setShowListRequirement(false)\r\n // eslint-disable-next-line no-unused-expressions\r\n bodyRef.current?.removeEventListener('click', clickHandler)\r\n }\r\n }\r\n setTimeout(() => {\r\n // eslint-disable-next-line no-unused-expressions\r\n bodyRef.current?.addEventListener('click', clickHandler)\r\n })\r\n\r\n setShowListRequirement(true)\r\n }\r\n\r\n const handleShowExhibit = (\r\n params: {\r\n id: string\r\n description: string\r\n index: number\r\n name: string\r\n files: IFile[]\r\n },\r\n event: React.MouseEvent<HTMLDivElement, MouseEvent>\r\n ) => {\r\n var mouseY = event.pageY - 300\r\n setShowExhibit({\r\n ...params,\r\n top:\r\n activeQuestion?.display_type !== DISPLAY_TYPE.VERTICAL\r\n ? mouseY + 200 + 'px'\r\n : mouseY + 350 + 'px',\r\n left: '33%'\r\n })\r\n }\r\n\r\n const handleGenarateSelectAnswer = (defaultValue: any) => {\r\n const newArr = []\r\n if (defaultValue?.length > 0) {\r\n const sorted = defaultValue?.sort(\r\n (a: { answer_position: number }, b: { answer_position: number }) =>\r\n a.answer_position - b.answer_position\r\n )\r\n const obj = {} as any\r\n for (const e of sorted) {\r\n obj[e?.answer_position - 1] = e?.answer_id\r\n }\r\n for (let i = 0; i < sorted?.[sorted.length - 1]?.answer_position; i++) {\r\n newArr.push(obj[i])\r\n }\r\n }\r\n return newArr\r\n }\r\n\r\n const renderQuestion = () => {\r\n switch (activeQuestion?.qType) {\r\n case QUESTION_TYPES.ONE_CHOICE:\r\n case QUESTION_TYPES.TRUE_FALSE:\r\n return (\r\n <OneChoiceQuestion\r\n data={activeQuestion}\r\n control={controlAnswer}\r\n corrects={activeQuestion.corrects}\r\n setValue={setValue}\r\n name={`${activeQuestion?.id}_${document_id}_answer`}\r\n defaultValues={activeQuestion?.myAnswers?.[0]?.question_answer_id}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.MULTIPLE_CHOICE:\r\n return (\r\n <MultiChoiceQuestion\r\n data={activeQuestion}\r\n control={controlAnswer}\r\n corrects={activeQuestion.corrects}\r\n setValue={setValue}\r\n name={`${activeQuestion.id}_${document_id}_answer`}\r\n defaultValues={activeQuestion.myAnswers?.[0].answer?.map(\r\n (e: { answer_id: any }, i: number) => {\r\n return e?.answer_id\r\n }\r\n )}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.MATCHING:\r\n return (\r\n <MatchQuizWrapper\r\n ref={matchQuizRef}\r\n data={activeQuestion}\r\n defaultAnswer={activeQuestion?.defaultValue}\r\n corrects={activeQuestion.corrects}\r\n solution={activeQuestion?.solution}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.FILL_WORD:\r\n return (\r\n <AddWordPreview\r\n data={activeQuestion}\r\n defaultAnswer={activeQuestion?.defaultValue\r\n ?.sort(\r\n (\r\n a: { answer_position: number },\r\n b: { answer_position: number }\r\n ) => a.answer_position - b.answer_position\r\n )\r\n .map(\r\n (e: { answer_text: string; answer_position: number }) =>\r\n e.answer_text\r\n )}\r\n corrects={activeQuestion.corrects}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.DRAG_DROP:\r\n return (\r\n <div ref={questionRef}>\r\n <DragNDropPreivew\r\n data={activeQuestion}\r\n defaultAnswer={createArrayWithValues(\r\n activeQuestion.myAnswers?.[0]?.answer || [],\r\n activeQuestion.answers\r\n )}\r\n corrects={activeQuestion.corrects}\r\n answers={activeQuestion.answers || []}\r\n resetDefaultAnswer={false}\r\n />\r\n </div>\r\n )\r\n\r\n case QUESTION_TYPES.SELECT_WORD:\r\n return (\r\n <SelectWord\r\n data={activeQuestion}\r\n defaultAnswer={handleGenarateSelectAnswer(\r\n activeQuestion?.defaultValue\r\n )}\r\n corrects={activeQuestion.corrects}\r\n />\r\n )\r\n\r\n case QUESTION_TYPES.ESSAY:\r\n return (\r\n <EssayRenderV2\r\n activeQuestion={activeQuestion}\r\n handleShowListRequirement={handleShowListRequirement}\r\n showListRequirement={showListRequirement}\r\n showRequirement={showRequirement}\r\n handleShowRequirement={({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation\r\n }) => {\r\n setOpenComment(true)\r\n handleShowRequirement({\r\n description,\r\n index,\r\n name,\r\n files,\r\n explanation\r\n })\r\n }}\r\n setOpenComment={setOpenComment}\r\n setOpenPdf={setOpenPdf}\r\n handleShowExhibit={handleShowExhibit}\r\n controlAnswer={controlAnswer}\r\n listRequirementRef={listRequirementRef}\r\n comment={comment}\r\n commentRef={commentRef}\r\n editorRef={editorRef}\r\n bodyRef={bodyRef}\r\n submitted={\r\n activeQuestion?.requirements?.length\r\n ? showRequirement?.active\r\n : activeQuestion?.active\r\n }\r\n activeCommentId={activeCommentId}\r\n setActiveCommentId={setActiveCommentId}\r\n />\r\n )\r\n default:\r\n return <div />\r\n }\r\n }\r\n\r\n const createArrayWithValues = (\r\n myAnswerArray: any,\r\n answers: {\r\n id: string\r\n answer: string\r\n answer_position: string\r\n }[]\r\n ) => {\r\n const resultArray = []\r\n if (myAnswerArray.length > 0) {\r\n for (const el of myAnswerArray) {\r\n const item = answers?.find((e: any) => e.id === el.answer_id)\r\n if (item) {\r\n resultArray.push({\r\n id: el.id,\r\n value: item.answer,\r\n idAnswer: el.answer_id,\r\n position: el.answer_position\r\n })\r\n } else {\r\n resultArray.push({\r\n id: '',\r\n value: '',\r\n idAnswer: '',\r\n position: ''\r\n })\r\n }\r\n }\r\n }\r\n return resultArray\r\n }\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n if (bodyRef?.current) {\r\n const formElement = bodyRef?.current\r\n convertMathToImage(formElement)\r\n }\r\n }, 1000)\r\n }, [bodyRef?.current, activeQuestion?.id, showRequirement?.index])\r\n\r\n useEffect(() => {\r\n const defaultRequirement = activeQuestion?.requirements?.[0]\r\n if (defaultRequirement) {\r\n const answer = activeQuestion?.requirement_answers?.find(\r\n (req: IRequirementAnswer) =>\r\n req?.requirement_id === defaultRequirement?.id\r\n )\r\n setShowRequirement({\r\n name: defaultRequirement.name,\r\n description: defaultRequirement.description,\r\n files: defaultRequirement.files,\r\n index: 1,\r\n explanation: defaultRequirement.explanation,\r\n answer_file: answer?.answer_file,\r\n short_answer: answer?.short_answer,\r\n active: answer?.active\r\n })\r\n\r\n setComment(\r\n activeQuestion?.grading_question?.answer_gradings?.find(\r\n (item: ICommment) => item?.requirement_id === answer?.requirement_id\r\n )\r\n )\r\n } else {\r\n setShowRequirement(null)\r\n setComment(activeQuestion?.grading_question?.answer_gradings?.[0])\r\n }\r\n setOpenComment(false)\r\n if (activeQuestion?.program === PROGRAM.CMA) {\r\n setExhibitText(EXHIBIT_TEXT_REPLACE.EXHIBIT_REPLACE)\r\n } else {\r\n setExhibitText(EXHIBIT_TEXT_REPLACE.EXHIBIT)\r\n }\r\n }, [activeQuestion])\r\n\r\n // const { x } = useMousePosition()\r\n // useEffect(() => {\r\n // if (startResize) {\r\n // const temp = currentLeftWidth\r\n // setLeftWidth(temp + (currentMousePos - (x || 0)))\r\n // }\r\n // }, [x, startResize])\r\n\r\n useEffect(() => {\r\n const updateMousePosition = (ev: MouseEvent | TouchEvent) => {\r\n const clientX =\r\n ev instanceof TouchEvent ? ev.touches[0].clientX : ev.clientX\r\n const clientY =\r\n ev instanceof TouchEvent ? ev.touches[0].clientY : ev.clientY\r\n\r\n setMousePosition({ x: clientX as number, y: clientY as number })\r\n }\r\n\r\n const clickPosition = (ev: MouseEvent | TouchEvent) => {\r\n const clientX =\r\n ev instanceof TouchEvent ? ev.touches[0].clientX : ev.clientX\r\n const clientY =\r\n ev instanceof TouchEvent ? ev.touches[0].clientY : ev.clientY\r\n\r\n setMousePosition(() => {\r\n setCurrentMousePos(clientX)\r\n return { x: clientX, y: clientY }\r\n })\r\n }\r\n\r\n if (startResize) {\r\n window.addEventListener('mousemove', updateMousePosition)\r\n window.addEventListener('mousedown', clickPosition)\r\n\r\n window.addEventListener('touchmove', updateMousePosition, {\r\n passive: false\r\n })\r\n window.addEventListener('touchstart', clickPosition, { passive: false })\r\n } else {\r\n window.removeEventListener('mousemove', updateMousePosition)\r\n window.removeEventListener('mousedown', clickPosition)\r\n\r\n window.removeEventListener('touchmove', updateMousePosition)\r\n window.removeEventListener('touchstart', clickPosition)\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('mousemove', updateMousePosition)\r\n window.removeEventListener('mousedown', clickPosition)\r\n\r\n window.removeEventListener('touchmove', updateMousePosition)\r\n window.removeEventListener('touchstart', clickPosition)\r\n }\r\n }, [startResize])\r\n\r\n useEffect(() => {\r\n if (startResize) {\r\n const temp = currentLeftWidth\r\n setLeftWidth(temp + (currentMousePos - (mousePosition.x || 0)))\r\n }\r\n }, [mousePosition.x, startResize, currentLeftWidth, currentMousePos])\r\n\r\n const renderCommentList = () => {\r\n const hasRequirements = activeQuestion.requirements?.length > 0\r\n const hasComments = comment?.details?.length && comment?.details?.length > 0\r\n\r\n if (hasRequirements || !isMobileCommentView) return null\r\n\r\n if (hasComments) {\r\n return (\r\n <CommentListV2\r\n className={clsx('requirement-comment-v2', {\r\n 'active-comment-v2': openComment,\r\n 'hide-comment-v2': !openComment\r\n })}\r\n commentRef={commentRef}\r\n data={comment}\r\n editorRef={editorRef}\r\n activeCommentId={activeCommentId}\r\n setActiveCommentId={setActiveCommentId}\r\n setOpenComment={setOpenComment}\r\n />\r\n )\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n ref={bodyRef}\r\n className={clsx('quiz-component', {\r\n 'quiz-component--essay': activeQuestion.qType === QUESTION_TYPES.ESSAY,\r\n 'quiz-component--others': activeQuestion.qType !== QUESTION_TYPES.ESSAY,\r\n 'quiz-component--with-list-question': Boolean(questions)\r\n })}\r\n >\r\n <MoveQuestionBar\r\n activeQuestion={activeQuestion}\r\n getActiveQuestion={getActiveQuestion}\r\n />\r\n <div\r\n className='quiz-component__body quiz-component__body--essay'\r\n onMouseUp={() => {\r\n setStartResize(false)\r\n setCurrentLeftWidth(leftWidth)\r\n }}\r\n >\r\n {activeQuestion?.display_type === DISPLAY_TYPE.VERTICAL &&\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY ? (\r\n <div\r\n className={clsx(\r\n 'quiz-component__content',\r\n 'quiz-component__content-vertical',\r\n {\r\n 'mx-auto': !activeQuestion?.grading_question,\r\n 'quiz-component__content--essay-v2':\r\n activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n }\r\n )}\r\n // style={{ background: '#F1F1F1', height: 'calc(100vh - 50px)' }}\r\n >\r\n <div style={{ width: `calc(50% - ${leftWidth}px)` }}>\r\n <TopicDisplay\r\n activeQuestion={activeQuestion}\r\n setOpenPdf={setOpenPdf}\r\n handleShowExhibit={handleShowExhibit}\r\n isTwoColumn\r\n exhibitText={exhibitText}\r\n />\r\n </div>\r\n\r\n <div\r\n className='quiz-component__resizer'\r\n onMouseDown={() => setStartResize(true)}\r\n onTouchStart={(e) => {\r\n e.preventDefault()\r\n setStartResize(true)\r\n }}\r\n onTouchMove={() => setStartResize(true)}\r\n onMouseUp={() => setStartResize(false)}\r\n onTouchEnd={() => setStartResize(false)}\r\n >\r\n <div className='quiz-component__resizer-icon'>\r\n <ResizeIcon />\r\n </div>\r\n </div>\r\n <div\r\n className={clsx(`topic-display topic-display--two-column`)}\r\n style={{ width: `calc(50% + ${leftWidth}px)` }}\r\n >\r\n <div\r\n className={clsx('quiz-component__content--qna-v2', {\r\n 'overflow-auto':\r\n activeQuestion.qType === QUESTION_TYPES.MATCHING\r\n })}\r\n >\r\n <div\r\n ref={questionRef}\r\n className={clsx({\r\n 'quiz-component__content--question':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <React.Fragment>{renderQuestion()}</React.Fragment>\r\n </div>\r\n {![QUESTION_TYPES.ESSAY, QUESTION_TYPES.MATCHING].includes(\r\n activeQuestion.qType\r\n ) && <Divider />}\r\n {![QUESTION_TYPES.ESSAY, QUESTION_TYPES.MATCHING].includes(\r\n activeQuestion.qType\r\n ) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div\r\n className={clsx('quiz-component__content', {\r\n 'quiz-component__content--horizontal-v2':\r\n !activeQuestion.requirements?.length ||\r\n !activeQuestion?.grading_question,\r\n 'mx-auto': !activeQuestion?.grading_question,\r\n 'py-8 max-w-multi-question':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY,\r\n 'quiz-component__content--essay-v2 w-full':\r\n activeQuestion.qType === QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <div\r\n className={clsx({\r\n 'quiz-component__content--qna-v2':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY,\r\n 'overflow-auto':\r\n activeQuestion.qType === QUESTION_TYPES.MATCHING\r\n })}\r\n >\r\n <div\r\n ref={questionRef}\r\n className={clsx({\r\n 'quiz-component__content--question':\r\n activeQuestion.qType !== QUESTION_TYPES.ESSAY\r\n })}\r\n >\r\n <React.Fragment>{renderQuestion()}</React.Fragment>\r\n </div>\r\n {![QUESTION_TYPES.ESSAY, QUESTION_TYPES.MATCHING].includes(\r\n activeQuestion.qType\r\n ) && <Divider />}\r\n {![QUESTION_TYPES.ESSAY, QUESTION_TYPES.MATCHING].includes(\r\n activeQuestion.qType\r\n ) && (\r\n <ExplanationV2\r\n activeQuestion={activeQuestion}\r\n explanationTitle={explanationTitle}\r\n showRequirement={showRequirement}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n <PopupViewPdf\r\n open={openPdf?.status || false}\r\n setOpen={setOpenPdf}\r\n url={openPdf?.url || ''}\r\n fileName={openPdf?.name || ''}\r\n renderContent={renderPdf}\r\n />\r\n {showExhibit?.id && (\r\n <ExhibitMovableWindowV2\r\n showExhibit={showExhibit}\r\n setShowExhibit={setShowExhibit}\r\n setOpenPdf={setOpenPdf}\r\n exhibitText={exhibitText}\r\n />\r\n )}\r\n {renderCommentList()}\r\n </div>\r\n {questions && (\r\n <ListQuestion\r\n questions={questions}\r\n activeQuestionId={activeQuestion?.id}\r\n getActiveQuestion={(id) => {\r\n void getActiveQuestion(id)\r\n }}\r\n questionFilter={questionFilter}\r\n onQuestionFilterChange={onQuestionFilterChange}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nQuizComponentV2.displayName = 'QuizComponentV2'\r\nexport default QuizComponentV2\r\n","import { css } from 'styled-components'\r\n\r\nexport const commentListStyles = css`\r\n .comment-sidebar {\r\n width: 478px;\r\n background-color: white;\r\n padding: 40px 29px;\r\n overflow: auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n }\r\n\r\n .comment-box {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n background-color: #f6f6f6;\r\n position: relative;\r\n border-radius: 12px;\r\n padding: 12px;\r\n }\r\n\r\n .comment-box-grade {\r\n display: flex;\r\n width: 100%;\r\n column-gap: 0.5rem;\r\n position: relative;\r\n font-size: 16px;\r\n }\r\n\r\n .comment-box:hover,\r\n .comment-box-hover {\r\n background-color: var(--primary-100);\r\n cursor: pointer;\r\n transition: background-color 0.5s ease;\r\n transition: box-shadow 0.5s ease;\r\n }\r\n\r\n .comment-box:hover > .comment-box-grade > p:last-child,\r\n .comment-box-grade-hover > p:last-child {\r\n color: #397839;\r\n font-weight: 500;\r\n }\r\n .comment-sidebar-overlay {\r\n opacity: 0;\r\n visibility: hidden;\r\n pointer-events: none;\r\n transition: opacity 0.3s ease;\r\n }\r\n\r\n .comment-sidebar-overlay.active {\r\n opacity: 1;\r\n visibility: visible;\r\n pointer-events: auto;\r\n }\r\n @media (max-width: 768px) {\r\n .comment-sidebar {\r\n width: 100%;\r\n max-width: calc(100% - 32px);\r\n max-height: 500px;\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 100;\r\n padding: 16px;\r\n margin: 30px 16px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n overflow: auto;\r\n border-radius: 12px;\r\n display: none;\r\n }\r\n .active-comment {\r\n display: flex;\r\n transition: display 0.5s ease;\r\n }\r\n\r\n .hide-comment {\r\n display: none;\r\n transition: display 0.5s ease;\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n .comment-sidebar {\r\n min-width: 370px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n padding: 40px 32px;\r\n min-height: calc(-48px + 100vh);\r\n overflow: auto;\r\n position: fixed;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 100;\r\n display: none;\r\n\r\n .comment-sidebar-header {\r\n display: none;\r\n }\r\n .comment-box {\r\n gap: 24px;\r\n padding: 24px;\r\n .comment-box-grade {\r\n font-size: 18px;\r\n }\r\n }\r\n }\r\n\r\n .active-comment {\r\n display: flex;\r\n transition: display 0.5s ease;\r\n }\r\n\r\n .hide-comment {\r\n display: none;\r\n transition: display 0.5s ease;\r\n }\r\n }\r\n @media (min-width: 1280px) {\r\n .comment-sidebar {\r\n min-width: 370px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n padding: 40px 32px;\r\n min-height: 100vh;\r\n overflow: auto;\r\n position: sticky;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n &.min-h-full {\r\n min-height: 100%;\r\n }\r\n\r\n &.requirement-comment {\r\n display: none;\r\n }\r\n\r\n .comment-sidebar-header {\r\n display: none;\r\n }\r\n .comment-box {\r\n gap: 24px;\r\n padding: 24px;\r\n .comment-box-grade {\r\n font-size: 18px;\r\n }\r\n }\r\n }\r\n .comment-sidebar-overlay {\r\n display: none;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const DividerStyles = css`\r\n .divider {\r\n height: 1px;\r\n background-color: var(--gray-300);\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\nimport { DividerStyles } from './divider/styles'\r\n\r\nexport const commonComponentStyles = css`\r\n ${DividerStyles}\r\n h1, h2, h3, h4, h5, h6 {\r\n font-size: inherit;\r\n font-weight: inherit;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const explanationStyles = css`\r\n .explanation {\r\n margin-top: 32px;\r\n @media (max-width: 768px) {\r\n font-size: 14px;\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n font-size: 16px;\r\n }\r\n @media (min-width: 1280px) {\r\n font-size: 16px;\r\n }\r\n }\r\n\r\n .explanation--essay {\r\n border: 1px solid var(--gray);\r\n border-radius: 12px;\r\n margin-top: 0;\r\n @media (max-width: 768px) {\r\n padding: 16px;\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n padding: 32px;\r\n }\r\n @media (min-width: 1280px) {\r\n padding: 32px;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const moveQuestionBarStyle = css`\r\n .move-question-bar-container {\r\n padding: 12px 0;\r\n box-shadow: 0px 4px 16px 0px rgba(44, 48, 0, 0.05);\r\n\r\n position: relative;\r\n z-index: 1;\r\n\r\n background-color: white;\r\n .move-question-icon {\r\n .default-arrow {\r\n display: block;\r\n }\r\n .hover-arrow {\r\n display: none;\r\n }\r\n &:hover {\r\n .hover-arrow {\r\n display: block;\r\n }\r\n .default-arrow {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .move-question-nav {\r\n .move-question-icon {\r\n display: none;\r\n }\r\n }\r\n .move-question-title {\r\n font-size: 16px;\r\n }\r\n .move-question-subtitle {\r\n font-size: 12px;\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n .move-question-title {\r\n font-size: 20px;\r\n }\r\n .move-question-subtitle {\r\n font-size: 16px;\r\n }\r\n }\r\n @media (min-width: 1280px) {\r\n .move-question-title {\r\n font-size: 20px;\r\n }\r\n .move-question-subtitle {\r\n font-size: 16px;\r\n }\r\n }\r\n }\r\n\r\n .move-question-bar {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n }\r\n\r\n .move-question-title {\r\n color: #1f2937;\r\n font-weight: 500;\r\n line-height: 28px;\r\n text-align: center;\r\n }\r\n\r\n .move-question-nav {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 16px;\r\n }\r\n\r\n .move-question-subtitle {\r\n color: #1f2937;\r\n font-weight: 400;\r\n line-height: 24px;\r\n text-align: center;\r\n white-space: nowrap;\r\n }\r\n\r\n .move-question-bar svg {\r\n cursor: pointer;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const questionTypeStyles = css`\r\n .matching_question .card-container {\r\n display: flex;\r\n flex-direction: column;\r\n column-gap: 20px;\r\n }\r\n\r\n .matching_question .card-container--correct {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n justify-content: space-between;\r\n }\r\n\r\n @media (min-width: 1280px) {\r\n .matching_question .card-container,\r\n .matching_question .card-container--correct {\r\n padding-left: 123px;\r\n padding-right: 123px;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const quizComponentStyles = css`\r\n .quiz-component {\r\n background-color: var(--gray-canvas);\r\n }\r\n\r\n .quiz-component--essay {\r\n background-color: var(--gray-canvas);\r\n min-height: 100vh;\r\n }\r\n\r\n .quiz-component--others {\r\n background-color: white;\r\n }\r\n\r\n /* .quiz-component__body {\r\n background-color: var(--gray-canvas);\r\n } */\r\n\r\n .quiz-component__body--essay {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-grow: 1;\r\n @media (min-width: 1280px) {\r\n align-items: start;\r\n }\r\n }\r\n\r\n .quiz-component__content-vertical {\r\n width: 100%;\r\n margin: 0 auto;\r\n display: flex;\r\n gap: 20px;\r\n }\r\n\r\n .quiz-component__content--horizontal {\r\n width: 100%;\r\n overflow-x: auto;\r\n\r\n @media (max-width: 768px) {\r\n margin: 0 16px;\r\n max-width: calc(100% - 32px);\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n margin: 0 32px;\r\n max-width: calc(100% - 64px);\r\n }\r\n @media (min-width: 1280px) {\r\n margin: 0 auto;\r\n max-width: 1230px;\r\n }\r\n }\r\n\r\n .quiz-component__content--essay {\r\n border-radius: 12px;\r\n // box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.08);\r\n @media (max-width: 768px) {\r\n margin: 24px 16px;\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n margin: 40px 32px;\r\n }\r\n @media (min-width: 1280px) {\r\n // margin: 40px 32px;\r\n margin-left: 40px;\r\n margin-right: 0px;\r\n }\r\n }\r\n\r\n .quiz-component__content--qna {\r\n background: var(--gray-100);\r\n padding: 32px;\r\n border-radius: 12px;\r\n }\r\n\r\n .quiz-component__content--question {\r\n margin-bottom: 32px;\r\n }\r\n\r\n .quiz-component__content--question .essay-render {\r\n margin-top: 24px;\r\n }\r\n\r\n .quiz-component__resizer {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n width: 2px;\r\n background: var(--gray-400);\r\n }\r\n\r\n .quiz-component__resizer-icon {\r\n z-index: 10;\r\n height: 32px;\r\n width: 32px;\r\n cursor: e-resize;\r\n border-radius: 100%;\r\n background-color: white;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const topicDisplayStyles = css`\r\n .topic-display {\r\n overflow: auto;\r\n background-color: white;\r\n margin-bottom: 40px;\r\n width: 100%;\r\n }\r\n\r\n .topic-display__resource {\r\n margin-top: 24px;\r\n }\r\n\r\n .topic-display .resource-divider {\r\n margin: 24px 0;\r\n }\r\n\r\n .topic-display .exhibit-divider {\r\n margin-top: 24px;\r\n }\r\n\r\n .topic-display--two-column {\r\n height: calc(100vh - 78px);\r\n margin-bottom: 0;\r\n overflow-y: auto;\r\n padding: 28px 32px;\r\n }\r\n\r\n @media (max-width: 1280px) {\r\n .topic-display--two-column {\r\n padding: 28px 12px;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const essayRenderStyles = css`\r\n .essay-shadow {\r\n box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.08);\r\n }\r\n\r\n .essay-render {\r\n border: 1px solid var(--gray);\r\n border-radius: 12px;\r\n }\r\n\r\n .essay-wrapper {\r\n .requirement-label {\r\n @media (max-width: 768px) {\r\n gap: 8px;\r\n .requirement-title {\r\n font-size: 18px;\r\n }\r\n .requirement-grade {\r\n font-size: 14px;\r\n padding: 4px 8px;\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1024px) {\r\n gap: 16px;\r\n .requirement-title {\r\n font-size: 24px;\r\n }\r\n .requirement-grade {\r\n font-size: 16px;\r\n padding: 8px 16px;\r\n }\r\n }\r\n @media (min-width: 1024px) {\r\n gap: 16px;\r\n .requirement-title {\r\n font-size: 24px;\r\n }\r\n .requirement-grade {\r\n font-size: 16px;\r\n padding: 8px 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (max-width: 768px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 16px;\r\n gap: 24px;\r\n .question-content {\r\n gap: 16px;\r\n font-size: 14px;\r\n }\r\n .requirement-collapse {\r\n .collapse-text {\r\n display: none;\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1024px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 1024px) and (max-width: 1280px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 1280px) {\r\n // margin-right: 40px;\r\n margin: 40px 24px 40px 0;\r\n .requirement-item {\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n .requirement-comment-container {\r\n display: hidden;\r\n @media (min-width: 1280px) {\r\n display: block;\r\n position: sticky;\r\n top: 0;\r\n right: 0;\r\n min-height: calc(-48px + 100vh);\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const quizComponentStylesV2 = css`\r\n .quiz-component {\r\n background-color: var(--gray-canvas);\r\n }\r\n\r\n .quiz-component--essay {\r\n background-color: var(--gray-canvas);\r\n min-height: 100vh;\r\n }\r\n\r\n .quiz-component--others {\r\n background-color: white;\r\n }\r\n\r\n .quiz-component--with-list-question {\r\n @media (min-width: 1280px) {\r\n padding-bottom: 100px;\r\n transition: padding-bottom 0.35s cubic-bezier(0.4, 0, 0.2, 1);\r\n }\r\n }\r\n\r\n /* .quiz-component__body {\r\n background-color: var(--gray-canvas);\r\n } */\r\n\r\n .quiz-component__body--essay {\r\n display: flex;\r\n justify-content: end;\r\n flex-grow: 1;\r\n @media (min-width: 1280px) {\r\n align-items: start;\r\n }\r\n }\r\n\r\n .quiz-component__content-vertical {\r\n width: 100%;\r\n margin: 0 auto;\r\n display: flex;\r\n gap: 20px;\r\n }\r\n\r\n .quiz-component__content--horizontal-v2 {\r\n width: 100%;\r\n overflow-x: auto;\r\n\r\n @media (max-width: 768px) {\r\n margin: 0 16px;\r\n max-width: calc(100% - 32px);\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n margin: 0 32px;\r\n max-width: calc(100% - 64px);\r\n }\r\n @media (min-width: 1280px) {\r\n margin: 0 auto;\r\n }\r\n &.max-w-multi-question {\r\n @media (min-width: 1280px) {\r\n max-width: 1230px;\r\n }\r\n }\r\n }\r\n\r\n .quiz-component__content--essay-v2 {\r\n border-radius: 12px;\r\n // box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.08);\r\n @media (max-width: 768px) {\r\n margin: 24px 16px;\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n margin: 40px 32px;\r\n }\r\n }\r\n\r\n .quiz-component__content--qna-v2 {\r\n background: var(--gray-100);\r\n padding: 32px;\r\n border-radius: 16px;\r\n }\r\n\r\n .quiz-component__content--question {\r\n margin-bottom: 32px;\r\n }\r\n\r\n .quiz-component__content--question .essay-render {\r\n margin-top: 24px;\r\n }\r\n\r\n .quiz-component__resizer {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n width: 2px;\r\n background: var(--gray-400);\r\n }\r\n\r\n .quiz-component__resizer-icon {\r\n z-index: 10;\r\n height: 32px;\r\n width: 32px;\r\n cursor: e-resize;\r\n border-radius: 100%;\r\n background-color: white;\r\n }\r\n .form-check-label {\r\n @media (max-width: 768px) {\r\n font-size: 14px;\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n font-size: 16px;\r\n }\r\n @media (min-width: 1280px) {\r\n font-size: 16px;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const essayRenderStylesV2 = css`\r\n .essay-shadow {\r\n box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.08);\r\n }\r\n\r\n .essay-render {\r\n border: 1px solid var(--gray);\r\n border-radius: 12px;\r\n }\r\n\r\n .essay-wrapper-v2 {\r\n .requirement-label {\r\n @media (max-width: 768px) {\r\n gap: 8px;\r\n .requirement-title {\r\n font-size: 18px;\r\n }\r\n .requirement-grade {\r\n font-size: 14px;\r\n padding: 4px 8px;\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1024px) {\r\n gap: 16px;\r\n .requirement-title {\r\n font-size: 24px;\r\n }\r\n .requirement-grade {\r\n font-size: 16px;\r\n padding: 8px 16px;\r\n }\r\n }\r\n @media (min-width: 1024px) {\r\n gap: 16px;\r\n .requirement-title {\r\n font-size: 24px;\r\n }\r\n .requirement-grade {\r\n font-size: 16px;\r\n padding: 8px 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (max-width: 768px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 16px;\r\n gap: 24px;\r\n .question-content {\r\n gap: 16px;\r\n font-size: 14px;\r\n }\r\n .requirement-collapse {\r\n .collapse-text {\r\n display: none;\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1024px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 1024px) and (max-width: 1280px) {\r\n margin: 0;\r\n max-width: 100%;\r\n .requirement-item {\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n }\r\n @media (min-width: 1280px) {\r\n // margin-right: 40px;\r\n .requirement-item {\r\n margin: 24px 106px;\r\n padding: 40px;\r\n gap: 32px;\r\n .question-content {\r\n gap: 24px;\r\n font-size: 16px;\r\n }\r\n .requirement-collapse {\r\n .collapse-arrow {\r\n display: none;\r\n }\r\n .collapse-text {\r\n font-size: 16px;\r\n font-weight: 600;\r\n text-decoration: underline;\r\n color: var(--primary);\r\n }\r\n }\r\n }\r\n .requirement-question-content {\r\n margin: 40px 106px 0;\r\n }\r\n }\r\n }\r\n .requirement-comment-container {\r\n display: hidden;\r\n @media (min-width: 1280px) {\r\n display: block;\r\n position: sticky;\r\n top: 0;\r\n right: 0;\r\n min-height: calc(-48px + 100vh);\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const commentListStylesV2 = css`\r\n @media (min-width: 768px) {\r\n .comment-sidebar-mobile-root {\r\n display: none !important;\r\n }\r\n }\r\n\r\n .comment-sidebar {\r\n width: 478px;\r\n background-color: white;\r\n padding: 40px 29px;\r\n overflow: auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n }\r\n\r\n .comment-box-v2 {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n background-color: #f6f6f6;\r\n position: relative;\r\n border-radius: 12px;\r\n padding: 12px;\r\n .divider-comment {\r\n border: none;\r\n height: 1px;\r\n background-color: #d1d5db;\r\n }\r\n }\r\n\r\n .comment-box-v2-grade {\r\n display: flex;\r\n width: 100%;\r\n column-gap: 0.5rem;\r\n position: relative;\r\n font-size: 16px;\r\n }\r\n\r\n .comment-box-v2:hover,\r\n .comment-box-v2-hover {\r\n background-color: var(--primary-100);\r\n cursor: pointer;\r\n transition: background-color 0.5s ease;\r\n transition: box-shadow 0.5s ease;\r\n .divider-comment {\r\n background-color: #ffd466;\r\n }\r\n }\r\n\r\n .comment-box-v2:hover > .comment-box-v2-grade > p:last-child,\r\n .comment-box-v2-grade-hover > p:last-child {\r\n color: #397839;\r\n font-weight: 500;\r\n }\r\n .comment-sidebar-overlay {\r\n position: fixed;\r\n inset: 0;\r\n z-index: 1500;\r\n opacity: 0;\r\n visibility: hidden;\r\n pointer-events: none;\r\n transition: opacity 0.3s ease;\r\n }\r\n\r\n .comment-sidebar-overlay.active {\r\n opacity: 1;\r\n visibility: visible;\r\n pointer-events: auto;\r\n }\r\n @media (max-width: 768px) {\r\n .comment-sidebar {\r\n width: 100%;\r\n max-width: calc(100% - 32px);\r\n max-height: 500px;\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 1501;\r\n padding: 16px;\r\n margin: 30px 16px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n overflow: auto;\r\n border-radius: 12px;\r\n display: none;\r\n }\r\n .active-comment-v2 {\r\n display: flex;\r\n transition: display 0.5s ease;\r\n }\r\n\r\n .hide-comment-v2 {\r\n display: none;\r\n transition: display 0.5s ease;\r\n }\r\n }\r\n @media (min-width: 768px) and (max-width: 1280px) {\r\n .comment-sidebar {\r\n min-width: 370px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n padding: 40px 32px;\r\n min-height: calc(-48px + 100vh);\r\n overflow: auto;\r\n position: fixed;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 100;\r\n display: none;\r\n\r\n .comment-sidebar-header {\r\n display: none;\r\n }\r\n .comment-box-v2 {\r\n gap: 20px;\r\n padding: 24px;\r\n .comment-box-v2-grade {\r\n font-size: 18px;\r\n }\r\n }\r\n }\r\n\r\n .active-comment-v2 {\r\n display: flex;\r\n transition: display 0.5s ease;\r\n }\r\n\r\n .hide-comment-v2 {\r\n display: none;\r\n transition: display 0.5s ease;\r\n }\r\n }\r\n @media (min-width: 1280px) {\r\n .comment-sidebar {\r\n min-width: 478px;\r\n box-shadow: -1px 0px 4px 0px #00000014;\r\n padding: 40px 32px;\r\n min-height: 100vh;\r\n overflow: auto;\r\n position: sticky;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n &.min-h-full {\r\n min-height: 100%;\r\n }\r\n\r\n &.requirement-comment-v2 {\r\n display: flex;\r\n }\r\n\r\n .comment-sidebar-header {\r\n display: none;\r\n }\r\n .comment-box-v2 {\r\n gap: 20px;\r\n padding: 24px;\r\n .comment-box-v2-grade {\r\n font-size: 18px;\r\n }\r\n }\r\n }\r\n .comment-sidebar-overlay {\r\n display: none;\r\n }\r\n }\r\n .text-purple-500 {\r\n color: #b93993;\r\n }\r\n .bg-gray-150 {\r\n background-color: #f7f7f7;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const commentModalStyles = css`\r\n @media (max-width: 767px) {\r\n .comment-modal-v2 {\r\n display: none !important;\r\n }\r\n }\r\n\r\n .comment-modal-v2 {\r\n position: fixed;\r\n inset: 0;\r\n z-index: 2000;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 16px;\r\n box-sizing: border-box;\r\n pointer-events: none;\r\n }\r\n\r\n .comment-modal-v2__panel {\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 20px;\r\n width: 100%;\r\n max-width: min(360px, calc(100% - 32px));\r\n box-sizing: border-box;\r\n padding: 20px;\r\n background: #ffffff;\r\n border: 2px solid #10b367;\r\n border-radius: 12px;\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);\r\n font-family: 'Roboto', sans-serif;\r\n cursor: default;\r\n pointer-events: auto;\r\n max-height: calc(100% - 32px);\r\n overflow: hidden;\r\n }\r\n\r\n .comment-modal-v2__grade {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: baseline;\r\n gap: 8px;\r\n font-size: 18px;\r\n line-height: 27px;\r\n color: #1f2937;\r\n }\r\n\r\n .comment-modal-v2__grade-label {\r\n font-weight: 600;\r\n }\r\n\r\n .comment-modal-v2__divider {\r\n margin: 0;\r\n border: none;\r\n height: 1px;\r\n background-color: #d1d5db;\r\n }\r\n\r\n .comment-modal-v2__comment-label {\r\n font-size: 18px;\r\n font-weight: 600;\r\n line-height: 27px;\r\n color: #1f2937;\r\n margin: 0 0 8px;\r\n }\r\n\r\n .comment-modal-v2__body {\r\n font-size: 16px;\r\n line-height: 24px;\r\n color: #1f2937;\r\n max-height: min(50vh, 320px);\r\n overflow: auto;\r\n overflow-wrap: break-word;\r\n word-break: break-word;\r\n }\r\n`\r\n","import { css } from 'styled-components'\n\nexport const listQuestionStyles = css`\n .list-question-navigation {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 300;\n background-color: #ffffff;\n border-top: 1px solid #d1d5db;\n overflow: visible;\n }\n\n .list-question-navigation--collapsed {\n padding: 16px 32px;\n }\n\n .list-question-navigation--expanded {\n padding: 16px 32px;\n }\n\n .list-question-navigation__content {\n overflow: hidden;\n transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .list-question-navigation__content--collapsed {\n max-height: 46px;\n }\n\n .list-question-navigation__content--expanded {\n max-height: 154px;\n }\n\n .list-question-navigation__body {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 16px;\n position: relative;\n }\n\n .list-question-navigation__center {\n flex: 1 1 0;\n min-width: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .list-question-navigation__side {\n flex: 0 0 auto;\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n margin-right: 44px;\n }\n\n .list-question-navigation__help {\n position: absolute;\n right: 32px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 302;\n flex-shrink: 0;\n }\n\n .list-question-navigation__filters {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex-shrink: 0;\n overflow: hidden;\n max-height: 120px;\n opacity: 1;\n transform: translateY(0);\n transition:\n max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1),\n opacity 0.25s ease,\n transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .list-question-navigation__filters--collapsed {\n max-height: 0;\n opacity: 0;\n transform: translateY(12px);\n pointer-events: none;\n }\n\n .list-question-navigation__filter {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 16px;\n border: none;\n background: transparent;\n cursor: pointer;\n color: #404041;\n font-size: 14px;\n line-height: 22px;\n text-align: left;\n border-radius: 4px;\n white-space: nowrap;\n }\n\n .list-question-navigation__filter--active {\n color: #EF5941;\n font-weight: 500;\n }\n\n .list-question-navigation__filter:hover {\n background-color: #f6f6f6;\n }\n\n .list-question-navigation__radio {\n width: 21px;\n height: 21px;\n border-radius: 50%;\n border: 1px solid #9ca3af;\n flex-shrink: 0;\n position: relative;\n }\n\n .list-question-navigation__radio--checked {\n border-color: #EF5941;\n }\n\n .list-question-navigation__radio--checked::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background-color: #EF5941;\n }\n\n .list-question-navigation__toggle {\n position: absolute;\n top: -14px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 301;\n cursor: pointer;\n width: 28px;\n height: 28px;\n color: #1c274c;\n border: none;\n padding: 0;\n border-radius: 50%;\n background-color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .list-question-navigation__toggle:hover {\n background-color: #ffffff;\n }\n\n .list-question-navigation__toggle--expanded {\n transform: translateX(-50%) rotate(180deg);\n }\n\n .list-question-navigation__toggle .default-arrow {\n display: block;\n }\n\n .list-question-navigation__toggle .hover-arrow {\n display: none;\n }\n\n .list-question-navigation__toggle:hover .hover-arrow {\n display: block;\n }\n\n .list-question-navigation__toggle:hover .default-arrow {\n display: none;\n }\n\n .list-question-navigation__help-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n width: 32px;\n height: 32px;\n }\n\n .list-question-navigation__legend {\n position: absolute;\n right: 0;\n bottom: calc(100% + 12px);\n z-index: 303;\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n background-color: #ffffff;\n border-radius: 8px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08);\n min-width: 160px;\n }\n\n .list-question-navigation__legend-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n line-height: 22px;\n color: #404041;\n white-space: nowrap;\n }\n\n .list-question-navigation__legend-dot {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .list-question-panel {\n padding: 24px;\n border-radius: 16px;\n box-shadow: 0px 4px 16px 0px rgba(44, 48, 0, 0.05);\n background-color: #ffffff;\n }\n\n .list-question-panel__divider {\n height: 1px;\n margin: 24px 0;\n background-color: #d1d5db;\n }\n\n .list-question-panel__title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n font-size: 18px;\n font-weight: 600;\n line-height: 27px;\n color: #1f2937;\n }\n\n .list-question-panel__show-more {\n cursor: pointer;\n font-size: 16px;\n color: #ffb800;\n font-weight: 400;\n }\n\n .list-question-panel__annotations {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px 32px;\n margin-top: 24px;\n }\n\n .list-question-panel__annotation {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n line-height: 22px;\n color: #1f2937;\n }\n\n .list-question-panel__annotation-dot {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .list-question-grid {\n display: flex;\n align-items: center;\n gap: 16px;\n min-width: 0;\n }\n\n .list-question-grid__content {\n min-width: 0;\n overflow: hidden;\n }\n\n .list-question-grid__rows {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n width: 100%;\n transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .list-question-grid__row {\n display: grid;\n gap: 8px;\n width: fit-content;\n max-width: 100%;\n transition:\n opacity 0.25s ease,\n transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),\n max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .list-question-grid__row--collapsible {\n overflow: hidden;\n }\n\n .list-question-grid__row--collapsed {\n max-height: 0;\n opacity: 0;\n transform: translateY(8px);\n pointer-events: none;\n }\n\n .list-question-grid__row--expanded {\n max-height: 46px;\n opacity: 1;\n transform: translateY(0);\n }\n\n .list-question-grid__panel {\n display: grid;\n grid-template-columns: repeat(7, 38px);\n gap: 16px;\n margin-bottom: 32px;\n }\n\n .list-question-grid__arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: transparent;\n color: #9ca3af;\n cursor: pointer;\n flex-shrink: 0;\n }\n\n .list-question-grid__arrow:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .list-question-box {\n width: 38px;\n height: 38px;\n padding: 8px;\n border-radius: 4px;\n border: 1px solid transparent;\n background-color: #ffffff;\n font-size: 14px;\n line-height: 22px;\n text-align: center;\n cursor: pointer;\n }\n\n .list-question-box--success {\n color: #10b367;\n border-color: #10b367;\n }\n\n .list-question-box--error {\n color: #f80903;\n border-color: #f80903;\n }\n\n .list-question-box--info {\n color: #22aaff;\n border-color: #22aaff;\n }\n\n .list-question-box--warning {\n color: #e68200;\n border-color: #e68200;\n }\n\n .list-question-box--active {\n box-shadow: 0 0 0 2px #EF5941;\n }\n\n .list-question-box--success:hover:not(:disabled) {\n background-color: rgba(16, 179, 103, 0.08);\n }\n\n .list-question-box--error:hover:not(:disabled) {\n background-color: rgba(248, 9, 3, 0.08);\n }\n\n .list-question-box--info:hover:not(:disabled) {\n background-color: #e9f6ff;\n }\n\n .list-question-box--warning:hover:not(:disabled) {\n background-color: rgba(230, 130, 0, 0.08);\n }\n\n @media (max-width: 1279px) {\n .list-question-navigation__body {\n flex-direction: column;\n align-items: stretch;\n gap: 16px;\n }\n\n .list-question-grid__content,\n .list-question-grid__rows {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n max-width: 100%;\n }\n\n .list-question-grid__row {\n overflow-x: visible;\n }\n\n .list-question-grid__panel {\n overflow-x: auto;\n max-width: 100%;\n }\n }\n\n @media (max-width: 1279px) {\n .list-question-navigation {\n display: none !important;\n }\n }\n\n @media (max-width: 767px) {\n .list-question-panel {\n padding: 16px;\n }\n }\n`\n","import { css } from 'styled-components'\r\nimport { commentListStyles } from './comment-list/commentList.styles'\r\nimport { commonComponentStyles } from './common/common.styles'\r\nimport { explanationStyles } from './explanation/explanation.styles'\r\nimport { moveQuestionBarStyle } from './move-question-bar/moveQuestionBar.styles'\r\nimport { questionTypeStyles } from './questionType/questionTypes.styles'\r\nimport { quizComponentStyles } from './quiz-component/quizComponent.styles'\r\nimport { topicDisplayStyles } from './topic-display/topicDisplay.styles'\r\nimport { essayRenderStyles } from './essay-render/essayRender.styles'\r\nimport { quizComponentStylesV2 } from './quiz-component-v2/quizComponentV2.styles'\r\nimport { essayRenderStylesV2 } from './essay-render-v2/essayRenderV2.styles'\r\nimport { commentListStylesV2 } from './comment-list-v2/commentListV2.styles'\r\nimport { commentModalStyles } from './comment-modal/commentModal.styles'\r\nimport { listQuestionStyles } from '../styles/list-question/listQuestion.styles'\r\n\r\nexport const componentStyles = css`\r\n ${commonComponentStyles}\r\n ${moveQuestionBarStyle}\r\n ${explanationStyles}\r\n ${quizComponentStyles}\r\n ${quizComponentStylesV2}\r\n ${topicDisplayStyles}\r\n ${commentListStyles}\r\n ${commentListStylesV2}\r\n ${commentModalStyles}\r\n ${essayRenderStyles}\r\n ${essayRenderStylesV2}\r\n ${questionTypeStyles}\r\n ${listQuestionStyles}\r\n`\r\n","import { css } from 'styled-components'\n\nexport const colors = css`\n :host {\n /* Primary */\n --primary-50: #fffbf2;\n --primary-100: #fff1cc;\n --primary-200: #ffe399;\n --primary-300: #ffd466;\n --primary-400: #ffc633;\n --primary: #EF5941;\n --primary-600: #cc9300;\n --primary-700: #996e00;\n --primary-800: #664a00;\n\n /* Secondary */\n --secondary-50: #fffaf0;\n --secondary-100: #b6b6b7;\n --secondary-200: #99999a;\n --secondary-300: #7b7b7c;\n --secondary-400: #5e5e5f;\n --secondary: #404041;\n --secondary-600: #29353c;\n --secondary-700: #212b30;\n --secondary-800: #0e1214;\n\n /* Gray */\n --gray-100: #f6f6f6;\n --gray-200: #e5e7eb;\n --gray-300: #d1d5db;\n --gray-400: #9ca3af;\n --gray: #6b7280;\n --gray-600: #4b5563;\n --gray-700: #374151;\n --gray-800: #1f2937;\n --gray-canvas: #f9f9f9;\n\n /* Success */\n --success-50: #e7fcf2;\n --success-100: #b4edd2;\n --success-200: #89ddb6;\n --success-300: #5fcc99;\n --success-400: #34bc7d;\n --success: #10b367;\n --success-600: #078a4d;\n --success-700: #05673a;\n --success-800: #044526;\n\n /* Error */\n --error-50: #feeded;\n --error-100: #f0c0c0;\n --error-200: #e29492;\n --error-300: #d56765;\n --error-400: #c73b37;\n --error: #f80903;\n --error-600: #940b08;\n --error-700: #6f0806;\n --error-800: #4a0604;\n\n /* Warning */\n --warning-50: #fcf3e5;\n --warning-100: #fae6cc;\n --warning-200: #f5cd99;\n --warning-300: #f0b566;\n --warning-400: #eb9c33;\n --warning: #e68200;\n --warning-600: #b86900;\n --warning-700: #8a4f00;\n --warning-800: #5c3400;\n\n /* Info */\n --info-50: #e9f6ff;\n --info-100: #d3eeff;\n --info-200: #a7ddff;\n --info-300: #7accff;\n --info-400: #4ebbff;\n --info: #22aaff;\n --info-600: #1b88cc;\n --info-700: #146699;\n --info-800: #0e4466;\n\n /* Online */\n --online-200: #f2fafb;\n --online: #17b9dd;\n\n /* Overdue */\n --overdue-200: #fff5f8;\n --overdue: #ff0957;\n\n /* Offline */\n --offline-200: #f0fff4;\n --offline: #07c93b;\n\n /* Live Online */\n --live-online-100: #f7f4ff;\n --live-online: #8f6fea;\n\n /* Holiday */\n --holiday: #f2bd0e;\n --holiday-200: #fffdf5;\n }\n`\n","import { css } from 'styled-components'\r\n\r\nexport const resizable = css`\r\n .resizable {\r\n position: absolute;\r\n top: 100px px;\r\n left: 100px;\r\n cursor: move;\r\n --tw-bg-opacity: 1;\r\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\r\n }\r\n\r\n .resizable .resizers {\r\n display: none;\r\n z-index: 500;\r\n box-sizing: border-box;\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n .resizable.enable .resizers {\r\n display: block;\r\n border-width: 2px;\r\n --tw-border-opacity: 1;\r\n border-color: rgb(24 28 50 / var(--tw-border-opacity));\r\n }\r\n\r\n .resizable .resizers .resizer {\r\n box-shadow: 0px 0px 0px 1px rgba(43, 59, 74, 0.3),\r\n 0px 0px 4px 1px rgba(57, 76, 96, 0.15);\r\n position: absolute;\r\n z-index: 500;\r\n height: 12px;\r\n width: 12px;\r\n border-radius: 9999px;\r\n --tw-bg-opacity: 1;\r\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\r\n }\r\n\r\n .resizable .resizers .resizer.top-left {\r\n left: -5px;\r\n top: -5px;\r\n cursor: nwse-resize;\r\n }\r\n\r\n .resizable .resizers .resizer.top-right {\r\n right: -5px;\r\n top: -5px;\r\n cursor: nesw-resize;\r\n }\r\n\r\n .resizable .resizers .resizer.bottom-left {\r\n left: -5px;\r\n bottom: -5px;\r\n cursor: nesw-resize;\r\n }\r\n\r\n .resizable .resizers .resizer.bottom-right {\r\n right: -5px;\r\n bottom: -5px;\r\n cursor: nwse-resize;\r\n }\r\n\r\n .resizable .resizers .resizer.right {\r\n right: -2.5px;\r\n top: 50%;\r\n height: 18px;\r\n width: 6px;\r\n --tw-translate-y: -50%;\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y))\r\n rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\r\n scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\r\n cursor: col-resize;\r\n border-radius: 3px;\r\n }\r\n\r\n .resizable .resizers .resizer.left {\r\n left: -2.5px;\r\n top: 50%;\r\n height: 18px;\r\n width: 6px;\r\n --tw-translate-y: -50%;\r\n transform: translate(var(--tw-translate-x), var(--tw-translate-y))\r\n rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\r\n scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\r\n cursor: col-resize;\r\n border-radius: 3px;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const typography = css`\r\n :host {\r\n /* 8px, 12px */\r\n --text-tiny: 0.5rem;\r\n --leading-tiny: 0.75rem;\r\n\r\n /* 12px, 16px */\r\n --text-xs: 0.75rem;\r\n --leading-xs: 1rem;\r\n\r\n /* 14px, 22px */\r\n --text-sm: 0.875rem;\r\n --leading-sm: 1.375rem;\r\n\r\n /* 16px, 24px */\r\n --text-base: 1rem;\r\n --leading-base: 1.5rem;\r\n\r\n /* 18px, 27px */\r\n --text-lg: 1.125rem;\r\n --leading-lg: 1.6875rem;\r\n\r\n /* 20px, 28px */\r\n --text-xl: 1.25rem;\r\n --leading-xl: 1.75rem;\r\n\r\n /* 24px, 32px */\r\n --text-2xl: 1.5rem;\r\n --leading-2xl: 2rem;\r\n\r\n /* 32px, 46px */\r\n --text-3xl: 2rem;\r\n --leading-3xl: 2.875rem;\r\n\r\n /* 36px, 50px */\r\n --text-4xl: 2.25rem;\r\n --leading-4xl: 3.125rem;\r\n\r\n /* 40px, 56px */\r\n --text-5xl: 2.5rem;\r\n --leading-5xl: 3.5rem;\r\n\r\n /* 48px, 64px */\r\n --text-6xl: 3rem;\r\n --leading-6xl: 4rem;\r\n\r\n /* 64px, 80px */\r\n --text-7xl: 4rem;\r\n --leading-7xl: 5rem;\r\n }\r\n h1,\r\n .h1 {\r\n font-size: var(--text-6xl);\r\n line-height: var(--leading-6xl);\r\n }\r\n\r\n h2,\r\n .h2 {\r\n font-size: var(--text-5xl);\r\n line-height: var(--leading-5xl);\r\n }\r\n\r\n h3,\r\n .h3 {\r\n font-size: var(--text-4xl);\r\n line-height: var(--leading-4xl);\r\n }\r\n\r\n h4,\r\n .h4 {\r\n font-size: var(--text-3xl);\r\n line-height: var(--leading-3xl);\r\n }\r\n\r\n h5,\r\n .h5 {\r\n font-size: var(--text-2xl);\r\n line-height: var(--leading-2xl);\r\n }\r\n\r\n h6,\r\n .h6 {\r\n font-size: var(--text-xl);\r\n line-height: var(--line-height-xl);\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const utilities = css`\r\n .d-flex {\r\n display: flex;\r\n }\r\n`\r\n","export const editorWrapStyle = `\r\nimg.Wirisformula {\r\n display: inline-block;\r\n margin: 0 2px;\r\n}\r\n.editor-wrap:has(table) {\r\n overflow-x: auto;\r\n}\r\n \r\n.editor-wrap {\r\n a {\r\n color: #0000ee;\r\n text-decoration: underline;\r\n }\r\n hr{\r\n display: none;\r\n }\r\n p {\r\n margin: 1rem 0;\r\n overflow-wrap: break-word;\r\n img {\r\n display: inline-block\r\n }\r\n }\r\n\r\n // p:empty {\r\n // display: none;\r\n // margin: 0;\r\n // } \r\n} \r\n\r\n \r\n\r\n.editor-wrap thead,\r\n.editor-wrap tbody,\r\n.editor-wrap tfoot,\r\n.editor-wrap td,\r\n.editor-wrap th {\r\n border-width: 1px;\r\n border-style: inset;\r\n --tw-border-opacity: 1;\r\n border-color: rgb(161 161 161 / var(--tw-border-opacity));\r\n min-width: 40px;\r\n padding: 4px 8px;\r\n}\r\n.editor-wrap tr {\r\n border-style: initial;\r\n border-width: initial;\r\n}\r\n.editor-wrap ol,\r\n.editor-wrap ul,\r\n.editor-wrap menu {\r\n padding-inline-start: 40px !important;\r\n list-style: auto;\r\n}\r\n.editor-wrap ul {\r\n list-style-type: disc;\r\n}\r\n /* Task list item: checkbox và text cùng hàng */\r\n.editor-wrap [data-type=\"taskList\"] {\r\n list-style: none; /* bỏ bullet gốc */\r\n padding-left: 0;\r\n margin-left: 0;\r\n}\r\n\r\n.editor-wrap [data-type=\"taskItem\"] {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px; /* khoảng cách giữa checkbox và text */\r\n margin-bottom: 4px;\r\n}\r\n\r\n.editor-wrap [data-type=\"taskItem\"] > label {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.editor-wrap [data-type=\"taskItem\"] > div {\r\n display: inline-block;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n/* Chặn toàn bộ thao tác với checkbox trong task list */\r\n.editor-wrap [data-type=\"taskItem\"],\r\n.editor-wrap [data-type=\"taskItem\"] label,\r\n.editor-wrap [data-type=\"taskItem\"] input[type=\"checkbox\"] {\r\n pointer-events: none !important; /* chặn click từ cả label & input */\r\n user-select: none; /* không cho bôi đen */\r\n cursor: default;\r\n}\r\n\r\n/* (Tùy chọn) style cho checkbox disable */\r\n.editor-wrap [data-type=\"taskItem\"] input[type=\"checkbox\"] {\r\n accent-color: #bbb; /* làm màu xám nhẹ */\r\n opacity: 0.9;\r\n}\r\n.editor-wrap hr{\r\n --tw-border-opacity: 1;\r\n border-color: rgb(220 221 221 / var(--tw-border-opacity));\r\n}\r\n.editor-wrap .sapp_overlay_video {\r\n position: absolute;\r\n right: 50%;\r\n top: 50%;\r\n transform: translate(50%, -50%);\r\n z-index: 1;\r\n}\r\n.editor-wrap .sapp_overlay_video::before {\r\n color: white;\r\n content: \"▶\";\r\n opacity: 0.5;\r\n cursor: pointer;\r\n text-shadow: 0 3px black;\r\n font-size: 50px;\r\n}\r\n \r\n.editor-wrap img.Wirisformula {\r\n width: auto !important;\r\n display: unset !important;\r\n max-width: max-content;\r\n}\r\n@media (max-width: 768px) {\r\n .editor-wrap {\r\n font-size: 14px;\r\n }\r\n}\r\n@media (min-width: 768px) and (max-width: 1024px) {\r\n .editor-wrap {\r\n font-size: 16px;\r\n }\r\n}\r\n@media (min-width: 1024px) {\r\n .editor-wrap {\r\n font-size: 16px;\r\n }\r\n}\r\n.sapp-preview--image {\r\n .ant-modal-content {\r\n @apply p-0;\r\n .ant-modal-header {\r\n border-bottom: 1px solid #f1f1f4;\r\n .ant-modal-title {\r\n @apply text-lg font-semibold text-gray-800 mx-5;\r\n }\r\n }\r\n .ant-modal-body {\r\n @apply mx-8 py-8;\r\n }\r\n }\r\n}\r\n .your-answer {\r\n p[style*=\"text-align: right\"] + img {\r\n display: block;\r\n margin-left: auto;\r\n }\r\n p[style*=\"text-align: left\"] + img {\r\n display: block;\r\n margin-right: auto;\r\n }\r\n p[style*=\"text-align: center\"],\r\n p[style*=\"-webkit-center\"] {\r\n /* không cần gì ở đây */\r\n }\r\n p[style*=\"text-align: center\"] + img,\r\n p[style*=\"-webkit-center\"] + img {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n }\r\n\r\n td[style*=\"text-align: center\"]\r\n img:not([style*=\"margin\"]):not([style*=\"float\"]) {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n td[style*=\"text-align: right\"] img:not([style*=\"margin\"]):not([style*=\"float\"]) {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: 0;\r\n}\r\n td[style*=\"text-align: left\"] img:not([style*=\"margin\"]):not([style*=\"float\"]) {\r\n display: block;\r\n margin-left: 0;\r\n margin-right: auto;\r\n}\r\n td[style*=\"-webkit-center\"] img:not([style*=\"margin\"]):not([style*=\"float\"]) {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n }\r\n.pdf-viewer-container {\r\n width: 100%;\r\n #proxy-renderer {\r\n height: 100%;\r\n\r\n #msdoc-renderer {\r\n height: 100%;\r\n\r\n iframe#msdoc-iframe {\r\n height: 100%;\r\n min-height: 70vh;\r\n width: 100%;\r\n }\r\n }\r\n }\r\n}\r\n`\r\n","export const sappStyle = `\n\n.sapp-answer-wrapper{\n display: flex;\n flex-wrap: wrap;\n row-gap: 1.5rem;\n padding-top: 0.5rem;\n}\n.sapp-answer-wrapper .answer{\n display: flex;\n align-items: flex-start;\n column-gap: 0.75rem;\n overflow-wrap: break-word;\n}\n.sapp-answer-wrapper .answer .desciption{\n flex: 1 1 0%;\n}\n.sapp-questions .sapp-input-preview {\n border: 1px solid #dfdfdf;\n border-radius: 2px;\n padding: 8px;\n width: 110px;\n height: 35px;\n margin-bottom: 4px;\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n text-align: center;\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n}\n.sapp-questions-v2 {\n &.white-space-nowrap {\n span {\n white-space: normal !important;\n }\n }\n\n @media (max-width: 480px) {\n font-size: 14px !important;\n // word-break: break-all;\n }\n @media (min-width: 480px) and (max-width: 768px) {\n font-size: 14px !important;\n }\n @media (min-width: 768px) and (max-width: 1024px) {\n font-size: 16px !important;\n }\n @media (min-width: 1024px) {\n font-size: 16px !important;\n }\n}\n\n.sapp-select--selectword-preview,\n.sapp-select--selectword-preview:focus{\n min-width: 78px;\n border-radius: 0.25rem;\n --tw-ring-color: unset;\n --tw-ring-offset-shadow: unset;\n --tw-ring-shadow: unset;\n -webkit-appearance: none;\n -moz-appearance: none;\n background: #f9f9f9;\n background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"non\"><path d=\"M10.9827 0.571289H9.97827C9.90996 0.571289 9.84568 0.604771 9.8055 0.659682L6.00059 5.90433L2.19568 0.659682C2.1555 0.604771 2.09121 0.571289 2.02291 0.571289H1.01845C0.931392 0.571289 0.880499 0.670396 0.931392 0.741379L5.65371 7.25165C5.82514 7.48736 6.17603 7.48736 6.34612 7.25165L11.0684 0.741379C11.1207 0.670396 11.0698 0.571289 10.9827 0.571289Z\" fill=\"%23DCDDDD\" /></svg>');\n background-repeat: no-repeat;\n background-position-x: 90%;\n background-position-y: 13px;\n border: 1px solid #dfdfdf;\n border-radius: 2px;\n padding-right: 1.5rem;\n padding-left: 0.5rem;\n height: 35px;\n max-width: 150px;\n margin-bottom: 8px;\n}\n.sapp-select--selectword-preview-v2,\n.sapp-select--selectword-preview-v2:focus{\n min-width: 78px;\n border-radius: 0.25rem;\n --tw-ring-color: unset;\n --tw-ring-offset-shadow: unset;\n --tw-ring-shadow: unset;\n -webkit-appearance: none;\n -moz-appearance: none;\n background: #f9f9f9;\n background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"non\"><path d=\"M10.9827 0.571289H9.97827C9.90996 0.571289 9.84568 0.604771 9.8055 0.659682L6.00059 5.90433L2.19568 0.659682C2.1555 0.604771 2.09121 0.571289 2.02291 0.571289H1.01845C0.931392 0.571289 0.880499 0.670396 0.931392 0.741379L5.65371 7.25165C5.82514 7.48736 6.17603 7.48736 6.34612 7.25165L11.0684 0.741379C11.1207 0.670396 11.0698 0.571289 10.9827 0.571289Z\" fill=\"%23DCDDDD\" /></svg>');\n background-repeat: no-repeat;\n background-position-x: 90%;\n background-position-y: 13px;\n border: 1px solid #dfdfdf;\n border-radius: 2px;\n padding-right: 1.5rem;\n padding-left: 0.5rem;\n min-height: 35px;\n margin-bottom: 8px;\n}\n.sapp-select--selectword-preview:required:invalid,\n.sapp-select--selectword-preview:focus:required:invalid {\n color: #dcdddd;\n}\n.sapp-select--selectword-preview-v2:required:invalid,\n.sapp-select--selectword-preview-v2:focus:required:invalid {\n color: #dcdddd;\n}\n.sapp-select--selectword-preview option,\n.sapp-select--selectword-preview:focus option {\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.sapp-select--selectword-preview-v2 option,\n.sapp-select--selectword-preview-v2:focus option {\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.sapp-select--selectword-preview option[value=\"\"][disabled],\n.sapp-select--selectword-preview:focus option[value=\"\"][disabled] {\n display: none;\n}\n.sapp-select--selectword-preview-v2 option[value=\"\"][disabled],\n.sapp-select--selectword-preview-v2:focus option[value=\"\"][disabled] {\n display: none;\n}\n.sapp-select--selectword-preview option[disabled],\n.sapp-select--selectword-preview:focus option[disabled] {\n color: #dcdddd;\n}\n.sapp-select--selectword-preview-v2 option[disabled],\n.sapp-select--selectword-preview-v2:focus option[disabled] {\n color: #dcdddd;\n}\n.sapp-select--selectword-preview option,\n.sapp-select--selectword-preview:focus option {\n color: #404041;\n}\n.sapp-select--selectword-preview-v2 option,\n.sapp-select--selectword-preview-v2:focus option {\n color: #404041;\n}\n.sapp-select--selectword-preview.sapp-select-confirmed,\n.sapp-select--selectword-preview:focus.sapp-select-confirmed {\n background-image: none;\n text-align: center;\n padding: 8px 12px;\n font-size: 14px;\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n}\n.sapp-select--selectword-preview-v2.sapp-select-confirmed,\n.sapp-select--selectword-preview-v2:focus.sapp-select-confirmed {\n background-image: none;\n text-align: center;\n padding: 8px 12px;\n font-size: 14px;\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n}\n.sapp-select--selectword-preview {\n display: inline-block;\n margin: 0;\n @media (max-width: 480px) {\n min-width: 50px;\n }\n @media (min-width: 480px) and (max-width: 768px) {\n min-width: 80px;\n }\n @media (min-width: 768px) and (max-width: 1024px) {\n min-width: 100px;\n }\n @media (min-width: 1024px) {\n min-width: 100px;\n }\n}\n.sapp-select--selectword-preview-v2 {\n display: inline-block;\n margin: 0;\n @media (max-width: 480px) {\n min-width: 50px;\n }\n @media (min-width: 480px) and (max-width: 768px) {\n min-width: 80px;\n }\n @media (min-width: 768px) and (max-width: 1024px) {\n min-width: 100px;\n }\n @media (min-width: 1024px) {\n min-width: 100px;\n }\n}\n\n.sapp-notched-container{\n position: relative;\n display: flex;\n height: 100%;\n flex: 1 1 0%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(216 216 229 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n padding: 1.25rem;\n padding-inline-start: 2rem;\n}\n\n.sapp-notched-container:before {\n content: \"\";\n left: -1.2px;\n\n width: 30px;\n height: 30px;\n transform: translate(-50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n z-index: 0;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(216 216 229 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.sapp-arrowed-container{\n position: relative;\n display: flex;\n height: auto;\n width: 40%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(216 216 229 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n\n.sapp-arrowed-container:before {\n border: 1px dashed rgb(224, 221, 227);\n content: \"\";\n right: 0;\n\n width: 30px;\n height: 30px;\n transform: translate(50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n right: 0px;\n z-index: 0;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(216 216 229 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n}\n\n.sapp-arrowed-container-corrects{\n position: relative;\n display: flex;\n height: auto;\n width: 48%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(57 120 57 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n\n.sapp-arrowed-container-corrects:before {\n border: 1px dashed rgb(224, 221, 227);\n content: \"\";\n right: 0;\n\n width: 30px;\n height: 30px;\n transform: translate(50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n right: 0px;\n z-index: 10;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(57 120 57 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n}\n\n.sapp-notched-container-corrects{\n position: relative;\n display: flex;\n height: 100%;\n flex: 1 1 0%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-left-width: 0px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(57 120 57 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n padding: 1.25rem;\n padding-inline-start: 2rem;\n}\n\n.sapp-notched-container-corrects:before {\n content: \"\";\n left: -1.2px;\n\n width: 30px;\n height: 30px;\n transform: translate(-50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n z-index: 0;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(57 120 57 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n}\n\n.sapp-arrowed-container-incorrects{\n position: relative;\n display: flex;\n height: auto;\n width: 48%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(185 14 10 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n padding: 1.25rem;\n}\n\n.sapp-arrowed-container-incorrects:before {\n border: 1px dashed rgb(224, 221, 227);\n content: \"\";\n right: 0;\n\n width: 30px;\n height: 30px;\n transform: translate(50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n right: 0px;\n z-index: 10;\n border-width: 1px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(185 14 10 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n}\n\n.sapp-notched-container-incorrects{\n position: relative;\n display: flex;\n height: 100%;\n flex: 1 1 0%;\n align-items: center;\n justify-content: flex-start;\n overflow-wrap: break-word;\n border-width: 1px;\n border-left-width: 0px;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(185 14 10 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n padding: 1.25rem;\n padding-inline-start: 2rem;\n}\n\n.sapp-notched-container-incorrects:before {\n content: \"\";\n left: -1.2px;\n\n width: 30px;\n height: 30px;\n border: 0;\n transform: translate(-50%, 0) rotate(-135deg);\n -webkit-clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n clip-path: polygon(0px 0px, 0% 100%, 100% 100%);\n position: absolute;\n z-index: 0;\n border-style: solid;\n --tw-border-opacity: 1;\n border-color: rgb(185 14 10 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 252 / var(--tw-bg-opacity));\n}\n\n.sapp-input-dragNDrop:not(:has(.answer-box)){\n position: relative;\n display: inline-block;\n min-height: 17px;\n min-width: 100px;\n border-width: 0px;\n border-bottom-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgb(107 114 128 / var(--tw-border-opacity));\n}\n\n.sapp-input-dragNDrop:not(:has(.answer-box))::after {\n content: \" (\" attr(indexBox) \")\";\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 20%);\n background: white;\n --tw-text-opacity: 1;\n color: rgb(161 161 161 / var(--tw-text-opacity));\n}\n\n.sapp-input-dragNDrop{\n margin-top: 0.5rem;\n display: inline-block;\n}\n\n.sapp-input-dragNDrop-answer-v2{\n display: inline-block;\n &.corrects{\n color: #078A4D;\n }\n &.wrongs{\n color: #F80903;\n }\n}\n.sapp-input-dragNDrop-userAnswer{\n margin: 0.25rem 0;\n display: inline-block;\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgb(107 114 128 / var(--tw-border-opacity));\n padding: 4px 8px;\n border-radius: 6px;\n break-word: break-all;\n &.corrects{\n color: #078A4D;\n border-color: #078A4D;\n }\n &.wrongs{\n color: #F80903;\n border-color: #F80903;\n }\n}\n.sapp-input-dragNDrop-answer{\n margin: 0.25rem;\n display: inline-block;\n min-width: 100px;\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgb(107 114 128 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n padding: 0.25rem;\n}\n.sapp-input-dragNDrop-answer.corrects{\n --tw-border-opacity: 1;\n border-color: rgb(57 120 57 / var(--tw-border-opacity));\n --tw-text-opacity: 1;\n color: rgb(57 120 57 / var(--tw-text-opacity));\n}\n.sapp-input-dragNDrop-answer.wrongs{\n --tw-border-opacity: 1;\n border-color: rgb(185 14 10 / var(--tw-border-opacity));\n --tw-text-opacity: 1;\n color: rgb(185 14 10 / var(--tw-text-opacity));\n}\n\n.sapp-input-dragNDrop-empty{\n display: inline-block;\n min-width: 100px;\n border-width: 0px;\n text-align: center;\n}\n.sapp-input-dragNDrop-empty-v2{\n display: inline-block;\n border-width: 0px;\n text-align: center;\n padding: 4px 8px;\n\n @media (max-width: 480px) {\n min-width: 50px;\n }\n @media (min-width: 480px) and (max-width: 768px) {\n min-width: 80px;\n }\n @media (min-width: 768px) and (max-width: 1024px) {\n min-width: 100px;\n }\n @media (min-width: 1024px) {\n min-width: 100px;\n }\n }\n.sapp-questions-essay {\n margin-bottom: 1rem;\n font-family: Inter, sans-serif;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n --tw-text-opacity: 1;\n color: rgb(20 20 20 / var(--tw-text-opacity));\n}\n\n.sapp-seprate-line-preview{\n margin-inline-start: -1.5rem;\n margin-bottom: 1rem;\n height: 0.75rem;\n width: calc(100% + 48px);\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n}\n\n.sapp-upload-file-preview{\n margin-bottom: 1rem;\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding-left: 0px;\n padding-right: 0px;\n}\n\n.sapp-upload-button-preview{\n display: flex;\n width: max-content;\n cursor: pointer;\n align-items: center;\n justify-content: space-evenly;\n gap: 0.5rem;\n border-width: 1px;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n\n\n.sapp-opacity-bg-border {\n background-color: transparent;\n border: none;\n resize: none;\n}\n\n.sapp-text-area {\n resize: none;\n border: none;\n}\n\n.sapp-hover-device-item:hover .sapp-logo{\n --tw-border-opacity: 1;\n border-color: rgb(255 184 0 / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: rgb(255 250 240 / var(--tw-bg-opacity));\n}\n.sapp-hover-device-item:hover .logo {\n fill: #ffb800;\n}\n\n.sapp-disable-button {\n position: relative;\n}\n.sapp-disable-button ::after {\n content: \"\";\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n opacity: 0.6;\n width: calc(100% - 2px);\n height: 100%;\n position: absolute;\n left: 1px;\n}\n\n.sapp-separateLine :not(:last-child){\n border-bottom-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgb(249 249 249 / var(--tw-border-opacity));\n}\n\n\n.sapp-min-w-100px {\n min-width: 100px !important;\n}\n\n// Graded feature\n.sapp-comment-highlight {\n position: relative;\n background-color: #FFE399;\n}\n\n.sapp-comment-highlight {\n position: relative;\n background-color: #FFE399;\n cursor: pointer;\n}\n// Graded feature\n.sapp-comment-highlight-grading {\n position: relative;\n background-color: #EF5941;\n}\n\n.sapp-comment-highlight-grading {\n position: relative;\n background-color: #EF5941;\n cursor: pointer;\n}\n\n.sapp-grading-highlight {\n position: relative;\n // text-decoration: underline #397839;\n}\n.sapp-grading-highlight-v2 {\n position: relative;\n text-decoration: underline #397839;\n}\n\n.sapp-comment-highlight *,\n.sapp-grading-highlight *,\n.sapp-grading-highlight-v2 * {\n user-select: none;\n}\n\n.sapp-grade-tooltip {\n position: absolute;\n bottom: 24px;\n height: 30px;\n min-width: 30px;\n width: max-content;\n left: 50%;\n transform: translateX(-50%);\n background-color: #397839;\n color: #fff;;\n padding: 7px;\n font-size: 16px;\n font-weight: 500;\n line-height: 16px;\n text-align: center;\n border-radius: 4px;\n z-index: 500;\n}\n\n.sapp-grade-tooltip::after {\n content: '';\n position: absolute;\n bottom: -12px;\n left: 50%;\n transform: translateX(-50%);\n border-width: 6px;\n width: 14px;\n height: 7px;\n border-style: solid;\n border-color: #397839 transparent transparent transparent;\n}\n.sapp-grade-tooltip-v2 {\n position: absolute;\n bottom: 17px;\n height: 30px;\n min-width: 30px;\n width: max-content;\n left: 50%;\n transform: translateX(-50%);\n background-color: #10B367;\n color: #fff;;\n padding: 7px;\n font-size: 16px;\n font-weight: 500;\n line-height: 16px;\n text-align: center;\n border-radius: 6px;\n z-index: 100;\n}\n\n.sapp-grade-tooltip-v2::after {\n content: '';\n position: absolute;\n bottom: -12px;\n left: 50%;\n transform: translateX(-50%);\n border-width: 7px;\n width: 14px;\n height: 7px;\n border-style: solid;\n border-color: #10B367 transparent transparent transparent;\n}\n\n.sapp-grade-questions-content {\n font-family: 'Roboto';\n font-weight: 400;\n line-height: 24px;\n border: 1px solid var(--gray);\n @media (max-width: 768px) {\n font-size: 14px;\n padding: 16px;\n }\n @media (min-width: 768px) and (max-width: 1024px) {\n font-size: 16px;\n padding: 32px;\n }\n @media (min-width: 1024px) {\n font-size: 16px;\n padding: 32px;\n }\n}\n\n\n.sapp-grade-questions-content table {\n border-color: #dcdddd;\n width: 100%;\n}\n\n`\n","export const tailwindStyle = `\n*,\n::before,\n::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: #DCDDDD;\n}\n::before,\n::after {\n --tw-content: '';\n}\n\nhtml,\n:host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-family: Inter, sans-serif;\n font-feature-settings: normal;\n font-variation-settings: normal;\n -webkit-tap-highlight-color: transparent;\n font-size: initial !important;\n background-color: white !important\n}\n\nbody {\n margin: 0;\n line-height: inherit;\n}\n\n\nhr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n}\n\nabbr:where([title]) {\n text-decoration: underline dotted;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-size: 1em;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsub {\n bottom: -0.25em;\n}\nsup {\n top: -0.5em;\n}\n\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n background-color: transparent;\n background-image: none;\n}\n\n:-moz-focusring {\n outline: auto;\n}\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type='search'] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\nfieldset {\n margin: 0;\n padding: 0;\n}\nlegend {\n padding: 0;\n}\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\ndialog {\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n:disabled {\n cursor: default;\n}\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n[hidden] {\n display: none;\n}\n[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{\n appearance: none;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n border-radius: 0px;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-bottom: 0.5rem;\n padding-left: 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n --tw-shadow: 0 0 #0000;\n}\n[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty, );\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n border-color: #2563eb;\n}\ninput::placeholder,textarea::placeholder{\n color: #6b7280;\n opacity: 1;\n}\n::-webkit-datetime-edit-fields-wrapper{\n padding: 0;\n}\n::-webkit-date-and-time-value{\n min-height: 1.5em;\n text-align: inherit;\n}\n::-webkit-datetime-edit{\n display: inline-flex;\n}\n::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{\n padding-top: 0;\n padding-bottom: 0;\n}\nselect{\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n padding-right: 2.5rem;\n print-color-adjust: exact;\n}\n[multiple],[size]:where(select:not([size=\"1\"])){\n background-image: initial;\n background-position: initial;\n background-repeat: unset;\n background-size: initial;\n padding-right: 0.75rem;\n print-color-adjust: unset;\n}\n[type='checkbox'],[type='radio']{\n appearance: none;\n padding: 0;\n print-color-adjust: exact;\n display: inline-block;\n vertical-align: middle;\n background-origin: border-box;\n user-select: none;\n flex-shrink: 0;\n height: 1rem;\n width: 1rem;\n color: #2563eb;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n --tw-shadow: 0 0 #0000;\n}\n[type='checkbox']{\n border-radius: 0px;\n}\n[type='radio']{\n border-radius: 100%;\n}\n[type='checkbox']:focus,[type='radio']:focus{\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty, );\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n[type='checkbox']:checked,[type='radio']:checked{\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n[type='checkbox']:checked{\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\");\n}\n@media (forced-colors: active) {\n [type='checkbox']:checked{\n appearance: auto;\n }\n}\n[type='radio']:checked{\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");\n}\n@media (forced-colors: active) {\n [type='radio']:checked{\n appearance: auto;\n }\n}\n[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus{\n border-color: transparent;\n background-color: currentColor;\n}\n[type='checkbox']:indeterminate{\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n@media (forced-colors: active) {\n [type='checkbox']:indeterminate{\n appearance: auto;\n }\n}\n[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus{\n border-color: transparent;\n background-color: currentColor;\n}\n[type='file']{\n background: unset;\n border-color: inherit;\n border-width: 0;\n border-radius: 0;\n padding: 0;\n font-size: unset;\n line-height: inherit;\n}\n[type='file']:focus{\n outline: 1px solid ButtonText;\n outline: 1px auto -webkit-focus-ring-color;\n}\n*, ::before, ::after{\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n::backdrop{\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n\n.sr-only{\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none{\n pointer-events: none;\n}\n.visible{\n visibility: visible;\n}\n.invisible{\n visibility: hidden;\n}\n.collapse{\n visibility: collapse;\n}\n.fixed{\n position: fixed;\n}\n.absolute{\n position: absolute;\n}\n.relative{\n position: relative;\n}\n.sticky{\n position: sticky;\n}\n.inset-0{\n inset: 0px;\n}\n.bottom-0{\n bottom: 0px;\n}\n.left-0{\n left: 0px;\n}\n.right-0{\n right: 0px;\n}\n.top-0{\n top: 0px;\n}\n.-z-10{\n z-index: -10;\n}\n.z-50{\n z-index: 50;\n}\n.-mx-6{\n margin-left: -1.5rem;\n margin-right: -1.5rem;\n}\n.mx-auto{\n margin-left: auto !important;\n margin-right: auto !important;\n}\n.my-5{\n margin-top: 1.25rem;\n margin-bottom: 1.25rem;\n}\n.my-2{\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.my-6{\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n.my-8{\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n.\\\\!mb-\\\\[32px\\\\]{\n margin-bottom: 32px !important;\n}\n.-mr-4{\n margin-right: -1rem;\n}\n.-mt-1{\n margin-top: -0.25rem;\n}\n.mb-11{\n margin-bottom: 2.75rem;\n}\n.mb-2{\n margin-bottom: 0.5rem;\n}\n.mb-4{\n margin-bottom: 1rem;\n}\n.mb-5{\n margin-bottom: 1.25rem;\n}\n.mb-6{\n margin-bottom: 1.5rem;\n}\n.mb-8{\n margin-bottom: 2rem;\n}\n.mb-9{\n margin-bottom: 2.25rem;\n}\n.me-2{\n margin-inline-end: 0.5rem;\n}\n.ml-2{\n margin-left: 0.5rem;\n}\n.ml-3{\n margin-left: 0.75rem;\n}\n.ml-4{\n margin-left: 1rem;\n}\n.ml-auto{\n margin-left: auto;\n}\n.mr-3{\n margin-right: 0.75rem;\n}\n.mr-8{\n margin-right: 2rem;\n}\n.mt-0 {\n margin-top: 0px;\n}\n.mt-1{\n margin-top: 0.25rem;\n}\n.mt-1\\\\.5{\n margin-top: 0.375rem;\n}\n.mt-2{\n margin-top: 0.5rem;\n}\n.mt-28{\n margin-top: 7rem;\n}\n.mt-4{\n margin-top: 1rem;\n}\n.mt-5{\n margin-top: 1.25rem;\n}\n.mt-6{\n margin-top: 1.5rem;\n}\n.mt-8{\n margin-top: 2rem;\n}\n.mt-9{\n margin-top: 2.25rem;\n}\n.mt-\\\\[1px\\\\]{\n margin-top: 1px;\n}\n.mt-\\\\[3px\\\\]{\n margin-top: 3px;\n}\n.mt-\\\\[5px\\\\]{\n margin-top: 5px;\n}\n.block{\n display: block;\n}\n.inline-block{\n display: inline-block;\n}\n.flex{\n display: flex;\n}\n.table{\n display: table;\n}\n.hidden{\n display: none;\n}\n.\\\\!hidden{\n display: none !important;\n}\n.h-1{\n height: 0.25rem;\n}\n.h-2{\n height: 0.5rem;\n}\n.h-4{\n height: 1rem;\n}\n.h-4\\\\.5{\n height: 1.125rem;\n}\n.h-5{\n height: 1.25rem;\n}\n.h-6{\n height: 1.5rem;\n}\n.h-14 {\n height: 3.5rem;\n}\n.h-\\\\[1px\\\\]{\n height: 1px;\n}\n.h-\\\\[6px\\\\]{\n height: 6px;\n}\n\n.h-\\\\[24px\\\\]{\n height: 24px;\n}\n.h-\\\\[30px\\\\]{\n height: 30px;\n}\n.h-\\\\[500px\\\\]{\n height: 500px;\n}\n.h-full{\n height: 100%;\n}\n.max-h-5{\n max-height: 1.25rem;\n}\n.max-h-5\\\\.5{\n max-height: 22px;\n}\n.max-h-6 {\n max-height: 1.5rem /* 24px */;\n}\n.max-h-full{\n max-height: 100%;\n}\n.max-h-screen{\n max-height: 100vh;\n}\n.min-h-12{\n min-height: 3rem;\n}\n.min-h-\\\\[50px\\\\]{\n min-height: 50px;\n}\n.min-h-large{\n min-height: 56px;\n}\n.w-1{\n width: 0.25rem;\n}\n.w-2{\n width: 0.5rem;\n}\n.w-4{\n width: 1rem;\n}\n.w-4\\\\.5{\n width: 1.125rem;\n}\n.w-5{\n width: 1.25rem;\n}\n.w-6{\n width: 1.5rem;\n}\n .w-21{\n width: 5.5rem;\n }\n .w-44{\n width: 11rem;\n }\n.w-\\\\[24px\\\\]{\n width: 24px;\n}\n.w-\\\\[30px\\\\]{\n width: 30px;\n}\n.w-\\\\[950px\\\\]{\n width: 950px;\n}\n.w-\\\\[998px\\\\]{\n width: 998px;\n}\n.w-fit{\n width: fit-content;\n}\n.w-full{\n width: 100%;\n}\n.w-max{\n width: max-content;\n}\n.min-w-132px{\n min-width: 132px;\n}\n.min-w-fit{\n min-width: fit-content;\n}\n.max-w-full{\n max-width: 100%;\n}\n.max-w-lg{\n max-width: 512px;\n}\n.max-w-md{\n max-width: 448px;\n}\n.max-w-xxl{\n max-width: 1144px;\n}\n.flex-1{\n flex: 1 1 0%;\n}\n.flex-auto{\n flex: 1 1 auto;\n}\n.flex-none{\n flex: none;\n}\n.flex-shrink{\n flex-shrink: 1;\n}\n.border-collapse{\n border-collapse: collapse;\n}\n.translate-y-full{\n --tw-translate-y: 100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform{\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-180{\n transform: rotate(-180deg);\n}\n@keyframes bounce{\n 0%, 100%{\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n 50%{\n transform: none;\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n.animate-bounce{\n animation: bounce 1s infinite;\n}\n@keyframes fade-in-overlay{\n 0%{\n opacity: 0;\n }\n 100%{\n opacity: 0.;\n }\n}\n.animate-fade-in-overlay{\n animation: fade-in-overlay 0.2s ease-in-out;\n}\n@keyframes fade-out-overlay{\n 0%{\n opacity: 0.8;\n }\n 100%{\n opacity: 0;\n }\n}\n.animate-fade-out-overlay{\n animation: fade-out-overlay 0.1s ease-out;\n}\n@keyframes jump-in{\n 0%{\n transform: scale(0.5);\n }\n 100%{\n transform: scale(1);\n }\n}\n.animate-jump-in{\n animation: jump-in 0.1s ease-in-out;\n}\n@keyframes jump-out{\n 0%{\n transform: scale(1);\n }\n 100%{\n transform: scale(0.5);\n }\n}\n.animate-jump-out{\n animation: jump-out 0.1s ease-in-out;\n}\n.cursor-not-allowed{\n cursor: not-allowed;\n}\n.cursor-pointer{\n cursor: pointer;\n}\n.select-none{\n user-select: none;\n}\n.resize{\n resize: both;\n}\n.snap-y{\n scroll-snap-type: y var(--tw-scroll-snap-strictness);\n}\n.flex-row{\n flex-direction: row;\n}\n.flex-col{\n flex-direction: column;\n}\n.flex-col-reverse{\n flex-direction: column-reverse;\n}\n.flex-wrap{\n flex-wrap: wrap;\n}\n.flex-nowrap{\n flex-wrap: nowrap;\n}\n.\\\\!items-start{\n align-items: flex-start !important;\n}\n.items-start{\n align-items: flex-start;\n}\n.items-center{\n align-items: center;\n}\n.justify-start{\n justify-content: flex-start;\n}\n.justify-end{\n justify-content: flex-end;\n}\n.justify-center{\n justify-content: center;\n}\n.justify-between{\n justify-content: space-between;\n}\n.gap-1{\n gap: 0.25rem;\n}\n.gap-1\\\\.5{\n gap: 0.375rem;\n}\n.gap-2{\n gap: 0.5rem;\n}\n.gap-3{\n gap: 0.75rem;\n}\n.gap-4{\n gap: 1rem;\n}\n.gap-5{\n gap: 1.25rem;\n}\n.gap-6{\n gap: 1.5rem;\n}\n.gap-x-2{\n column-gap: 0.5rem;\n}\n.gap-x-4{\n column-gap: 1rem;\n}\n.gap-x-8{\n column-gap: 2rem;\n}\n.gap-y-5{\n row-gap: 1.25rem;\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]){\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.overflow-auto{\n overflow: auto;\n}\n.overflow-hidden{\n overflow: hidden;\n}\n.overflow-clip{\n overflow: clip;\n}\n.overflow-scroll{\n overflow: scroll;\n}\n.overflow-y-scroll{\n overflow-y: scroll;\n}\n.\\\\!overflow-y-visible{\n overflow-y: visible !important;\n}\n.truncate{\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap{\n white-space: nowrap;\n}\n.break-all{\n word-break: break-all;\n}\n.rounded{\n border-radius: 0.25rem;\n}\n.rounded-full{\n border-radius: 9999px;\n}\n.rounded-sm{\n border-radius: 0.125rem;\n}\n.rounded-lg{\n border-radius: 0.5rem;\n}\n.rounded-xl{\n border-radius: 0.75rem;\n}\n.rounded-2xl {\n border-radius: 1rem /* 16px */;\n}\n.rounded-b-lg {\n border-bottom-right-radius: .5rem;\n border-bottom-left-radius: .5rem;\n}\n.rounded {\n border-radius: 0.25rem /* 4px */;\n}\n.\\\\!rounded {\n border-radius: 0.25rem !important;\n}\n.rounded-\\\\[5px\\\\]{\n border-radius: 5px;\n}\n.border{\n border-width: 1px;\n}\n.border-primary {\n --tw-border-opacity: 1;\n border-color: rgb(255 183 0 / var(--tw-border-opacity, 1)) /* #EF5941 */;\n}\n.border-secondary {\n --tw-border-opacity: 1;\n border-color: rgb(64 64 65 / var(--tw-border-opacity, 1)) /* #404041 */;\n}\n.border-0{\n border-width: 0px;\n}\n.border-1\\\\.5{\n border-width: 1.5px;\n}\n.border-b{\n border-bottom-width: 1px;\n}\n.border-none{\n border-style: none;\n}\n.\\\\!border-danger{\n --tw-border-opacity: 1 !important;\n border-color: rgb(211 85 99 / var(--tw-border-opacity)) !important;\n}\n.\\\\!border-danger-v2{\n border-color: #F80903 !important;\n}\n.\\\\!border-gray-6{\n --tw-border-opacity: 1 !important;\n border-color: rgb(216 216 229 / var(--tw-border-opacity)) !important;\n}\n.\\\\!border-success{\n --tw-border-opacity: 1 !important;\n border-color: rgb(57 120 57 / var(--tw-border-opacity)) !important;\n}\n.\\\\!border-success-v2{\n border-color: #10B367 !important;\n}\n.border-gray-15 {\n border-color: #D1D5DB;\n}\n.border-bw-1{\n --tw-border-opacity: 1;\n border-color: rgb(20 20 20 / var(--tw-border-opacity));\n}\n.border-danger{\n --tw-border-opacity: 1;\n border-color: rgb(211 85 99 / var(--tw-border-opacity));\n}\n.border-danger-v2{\n border-color: #F80903;\n}\n.border-error {\n --tw-border-opacity: 1;\n border-color: rgb(248 9 3 / var(--tw-border-opacity, 1)) /* #f80903 */;\n}\n.border-gray-2{\n --tw-border-opacity: 1;\n border-color: rgb(241 241 241 / var(--tw-border-opacity));\n}\n.border-success {\n --tw-border-opacity: 1;\n border-color: rgb(16 179 103 / var(--tw-border-opacity, 1)) /* #10b367 */;\n}\n.border-success-v2{\n border-color: #10B367;\n}\n.border-transparent{\n border-color: transparent;\n}\n.border-b-gray-2{\n --tw-border-opacity: 1;\n border-bottom-color: rgb(241 241 241 / var(--tw-border-opacity));\n}\n.bg-black{\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n.bg-gray {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1)) /* #6b7280 */;\n}\n.bg-info-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(233 246 255 / var(--tw-bg-opacity, 1)) /* #e9f6ff */;\n}\n.bg-bw-1{\n --tw-bg-opacity: 1;\n background-color: rgb(20 20 20 / var(--tw-bg-opacity));\n}\n.bg-danger{\n --tw-bg-opacity: 1;\n background-color: rgb(211 85 99 / var(--tw-bg-opacity));\n}\n.bg-gray-1{\n --tw-bg-opacity: 1;\n background-color: rgb(161 161 161 / var(--tw-bg-opacity));\n}\n.bg-gray-3{\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n}\n.bg-gray-4{\n --tw-bg-opacity: 1;\n background-color: rgb(249 249 249 / var(--tw-bg-opacity));\n}\n.bg-primary{\n --tw-bg-opacity: 1;\n background-color: rgb(255 184 0 / var(--tw-bg-opacity));\n}\n.bg-white{\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-success{\n background-color: #10B367;\n}\n.bg-overlay{\n background-color: #00000080;\n}\n.bg-none{\n background-image: none;\n}\n.bg-radio-normal{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23A1A1A1' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3C/svg%3E\");\n}\n.bg-center{\n background-position: center;\n}\n.bg-no-repeat{\n background-repeat: no-repeat;\n}\n .bg-gray-200{\n background-color: #E5E7EB;\n }\n.fill-bw-1{\n fill: #141414;\n}\n.fill-gray-1{\n fill: #A1A1A1;\n}\n.fill-primary{\n fill: #FFB800;\n}\n.stroke-bw-1{\n stroke: #141414;\n}\n.stroke-primary{\n stroke: #FFB800;\n}\n.p-4{\n padding: 1rem;\n}\n.p-5{\n padding: 1.25rem;\n}\n.p-6{\n padding: 1.5rem;\n}\n.px-17\\\\.5{\n padding-left: 4.375rem;\n padding-right: 4.375rem;\n}\n.px-19{\n padding-left: 4.75rem;\n padding-right: 4.75rem;\n}\n.px-2{\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-3{\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4{\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5{\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-6{\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.px-7{\n padding-left: 1.75rem;\n padding-right: 1.75rem;\n}\n.\\\\!px-8{\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-9{\n padding-left: 2.25rem;\n padding-right: 2.25rem;\n}\n.px-\\\\[123px\\\\]{\n padding-left: 123px;\n padding-right: 123px;\n}\n.py-1{\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\\\.5{\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-11{\n padding-top: 2.75rem;\n padding-bottom: 2.75rem;\n}\n.py-19{\n padding-top: 4.75rem;\n padding-bottom: 4.75rem;\n}\n.py-2{\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3{\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.py-2\\\\.8{\n padding-top: 0.71875rem;\n padding-bottom: 0.71875rem;\n}\n.py-4{\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-5{\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n}\n.py-8{\n padding-top: 2rem;\n padding-bottom: 2rem;\n}\n\n.py-\\\\[2px\\\\]{\n padding-top: 2px;\n padding-bottom: 2px;\n}\n\n.\\\\!pt-0{\n padding-top: 0px !important;\n}\n.pb-5{\n padding-bottom: 1.25rem;\n}\n.pt-0{\n padding-top: 0;\n}\n.pb-6{\n padding-bottom: 1.5rem;\n}\n.\\\\!pb-8{\n padding-bottom: 2rem;\n}\n.pb-\\\\[26px\\\\]{\n padding-bottom: 26px;\n}\n.pb-\\\\[14px\\\\]{\n padding-bottom: 14px;\n}\n.pt-5{\n padding-top: 1.25rem;\n}\n.pt-6{\n padding-top: 1.5rem;\n}\n.pt-\\\\[18px\\\\]{\n padding-top: 18px;\n}\n.pt-\\\\[22px\\\\]{\n padding-top: 18px;\n}\n.pt-\\\\[26px\\\\]{\n padding-top: 26px;\n}\n.pt-\\\\[24px\\\\]{\n padding-top: 24px;\n}\n.pt-\\\\[28px\\\\]{\n padding-top: 28px;\n}\n.pt-\\\\[31px\\\\]{\n padding-top: 31px;\n}\n.pt-\\\\[34px\\\\]{\n padding-top: 34px;\n}\n.pt-\\\\[42px\\\\]{\n padding-top: 42px;\n}\n.pt-\\\\[42px\\\\]{\n padding-top: 42px;\n}\n.text-left{\n text-align: left;\n}\n.text-center{\n text-align: center;\n}\n .text-justify {\n text-align: justify;\n}\n.align-middle{\n vertical-align: middle;\n}\n.text-2xl{\n font-size: 24px;\n line-height: 30px;\n}\n.text-\\\\[0\\\\.875rem\\\\]{\n font-size: 0.875rem;\n}\n.text-\\\\[1rem\\\\]{\n font-size: 1rem;\n}\n.text-base{\n font-size: 16px;\n line-height: 24px;\n}\n.text-lg{\n font-size: 18px;\n line-height: 24px;\n}\n .\\\\!text-lg{\n font-size: 18px !important;\n line-height: 24px;\n}\n.text-sm{\n font-size: 14px;\n line-height: 24px;\n}\n.\\\\!text-sm {\n font-size: 0.875rem /* 14px */ !important;\n line-height: 1.25rem /* 20px */ !important;\n}\n.text-ssm{\n font-size: 12px;\n line-height: 20px;\n}\n.text-xl{\n font-size: 20px;\n line-height: 25px;\n}\n.\\\\!font-normal{\n font-weight: 400 !important;\n}\n.font-bold{\n font-weight: 700;\n}\n.font-medium{\n font-weight: 500;\n}\n.font-normal{\n font-weight: 400;\n}\n.font-semibold{\n font-weight: 600;\n}\n.uppercase{\n text-transform: uppercase;\n}\n.italic{\n font-style: italic;\n}\n.leading-4{\n line-height: 1rem;\n}\n.leading-4\\\\.5{\n line-height: 17px;\n}\n.leading-6{\n line-height: 1.5rem;\n}\n.leading-6\\\\.5{\n line-height: 27px;\n}\n.leading-9{\n line-height: 2.25rem;\n}\n.text-bw-1{\n --tw-text-opacity: 1;\n color: rgb(20 20 20 / var(--tw-text-opacity));\n}\n.text-info-500 {\n --tw-text-opacity: 1;\n color: rgb(34 170 255 / var(--tw-text-opacity, 1)) /* #22aaff */;\n}\n.text-gray-800{\n color: #1F2937;\n}\n.text-bw-2{\n color: #3F3F3F;\n}\n.text-danger{\n --tw-text-opacity: 1;\n color: rgb(211 85 99 / var(--tw-text-opacity));\n}\n.text-gray-1{\n --tw-text-opacity: 1;\n color: rgb(161 161 161 / var(--tw-text-opacity));\n}\n.text-gray-2{\n --tw-text-opacity: 1;\n color: rgb(220 221 221 / var(--tw-text-opacity));\n}\n.text-gray-500{\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n .text-gray-800 {\n color: #1F2937;}\n.text-state-error{\n --tw-text-opacity: 1;\n color: rgb(248 9 3 / var(--tw-text-opacity, 1)) /* #f80903 */;\n}\n.text-link-blue{\n color: #1B88CC;\n}\n.text-state-error-v2{\n color: #F80903;\n}\n.text-state-info{\n --tw-text-opacity: 1;\n color: rgb(57 100 234 / var(--tw-text-opacity));\n}\n\n.text-state-success{\n --tw-text-opacity: 1;\n color: rgb(57 120 57 / var(--tw-text-opacity));\n}\n.text-state-success-v2{\n --tw-text-opacity: 1;\n color: #078A4D;\n}\n.\\\\!border-state-error-v2{\n border: 2px solid #F80903 !important;\n}\n.\\\\!border-state-success-v2{\n border: 2px solid #078A4D !important;\n}\n.\\\\!border-gray-800{\n border: 2px solid #1F2937 !important;\n}\n\n.text-white{\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline{\n text-decoration-line: underline;\n}\n.underline-offset-2{\n text-underline-offset: 2px;\n}\n.antialiased{\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-50{\n opacity: 0.5;\n}\n.opacity-60{\n opacity: 0.6;\n}\n.opacity-80{\n opacity: 0.8;\n}\n.opacity-100 {\n opacity: 1;\n}\n.shadow-box{\n --tw-shadow: 0px 2px 4px 0px #00000014, 0px 0px 6px 0px #00000005;\n --tw-shadow-colored: 0px 2px 4px 0px var(--tw-shadow-color), 0px 0px 6px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-small {\n --tw-shadow: 0px 4px 20px 0px rgba(41, 41, 41, 0.05);\n --tw-shadow-colored: 0px 4px 20px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md{\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-xl{\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none{\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline{\n outline-style: solid;\n}\n.ring-0{\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-0{\n --tw-ring-offset-width: 0px;\n}\n.grayscale{\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.invert{\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter{\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition{\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all{\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity{\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-300{\n transition-duration: 300ms;\n}\n.ease-in-out{\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.\\\\[animation-delay\\\\:-0\\\\.15s\\\\]{\n animation-delay: -0.15s;\n}\n.\\\\[animation-delay\\\\:-0\\\\.3s\\\\]{\n animation-delay: -0.3s;\n}\n\n#globalLoader {\n position: fixed;\n z-index: 9999;\n top: 50%;\n left: 50%;\n --tw-backdrop-blur: blur(4px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n*:not(math, math *),\n*:not(math, math *)::after,\n*:not(math, math *)::before {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n font-family: \"Roboto\", sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n* .sheet,\n* .iconfont::before,\n.sheet *,\n* .sheet,\n.sheet *::before {\n font-family: unset;\n}\n\n* .fa,\n* .fa::before {\n font-family: \"Font Awesome 5 Free\";\n}\n\nhtml {\n font-size: 100%;\n}\n\nbody {\n box-sizing: border-box;\n}\n\na {\n color: inherit;\n text-decoration: none;\n}\n\ntextarea.is-invalid:focus {\n --tw-ring-color: #d35563;\n --tw-ring-offset-color: #d35563;\n}\n.min-w-\\\\[63px\\\\] {\n min-width: 63px;\n}\n\n.max-w-40 {\n max-width: 10rem;\n}\n\n.first-letter\\\\:uppercase::first-letter{\n text-transform: uppercase;\n}\n\n.before\\\\:\\\\!border-gray-6::before{\n content: var(--tw-content);\n --tw-border-opacity: 1 !important;\n border-color: rgb(216 216 229 / var(--tw-border-opacity)) !important;\n}\n\n.checked\\\\:bg-bw-1:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(20 20 20 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:bg-primary:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(255 184 0 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:bg-state-error:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(185 14 10 / var(--tw-bg-opacity));\n}\n.checked\\\\:bg-state-error-v2:checked{\n background-color: #F80903;\n}\n\n.checked\\\\:bg-state-success:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(57 120 57 / var(--tw-bg-opacity));\n}\n.checked\\\\:bg-state-success-v2:checked{\n --tw-bg-opacity: 1;\n background-color: #078A4D;\n}\n\n.checked\\\\:bg-radio-default-checked:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23141414' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:bg-radio-error-checked:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23F80903' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:bg-radio-success-checked:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23078A4D' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:text-transparent:checked{\n color: transparent;\n}\n\n.hover\\\\:border-gray-1:hover{\n --tw-border-opacity: 1;\n border-color: rgb(161 161 161 / var(--tw-border-opacity));\n}\n\n.hover\\\\:bg-danger-2:hover{\n --tw-bg-opacity: 1;\n background-color: rgb(221 67 57 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-gray-2:hover{\n --tw-bg-opacity: 1;\n background-color: rgb(220 221 221 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:bg-primary-2:hover{\n --tw-bg-opacity: 1;\n background-color: rgb(255 200 58 / var(--tw-bg-opacity));\n}\n\n.hover\\\\:fill-primary:hover{\n fill: #FFB800;\n}\n\n.hover\\\\:text-link-orange:hover{\n color: #EF5941;\n}\n\n.hover\\\\:text-gray-1:hover{\n --tw-text-opacity: 1;\n color: rgb(161 161 161 / var(--tw-text-opacity));\n}\n.text-primary {\n --tw-text-opacity: 1;\n color: rgb(255 183 0 / var(--tw-text-opacity, 1)) /* #EF5941 */;\n}\n.hover\\\\:text-primary:hover{\n --tw-text-opacity: 1;\n color: rgb(255 184 0 / var(--tw-text-opacity));\n}\n\n.hover\\\\:text-white:hover{\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.hover\\\\:underline:hover{\n text-decoration-line: underline;\n}\n\n.checked\\\\:hover\\\\:bg-bw-1:hover:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(20 20 20 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:hover\\\\:bg-primary:hover:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(255 184 0 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:hover\\\\:bg-state-error:hover:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(185 14 10 / var(--tw-bg-opacity));\n}\n.checked\\\\:hover\\\\:bg-state-error-v2:hover:checked{\n background-color: #F80903;\n}\n\n.checked\\\\:hover\\\\:bg-state-success:hover:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(57 120 57 / var(--tw-bg-opacity));\n}\n.checked\\\\:hover\\\\:bg-state-success-v2:hover:checked{\n --tw-bg-opacity: 1;\n background-color: #078A4D;\n}\n\n.checked\\\\:hover\\\\:bg-radio-default-checked:hover:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23141414' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:hover\\\\:bg-radio-error-checked:hover:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23F80903' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:hover\\\\:bg-radio-success-checked:hover:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23078A4D' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.focus\\\\:outline-none:focus{\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.focus\\\\:ring-0:focus{\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\\\:ring-offset-0:focus{\n --tw-ring-offset-width: 0px;\n}\n\n.checked\\\\:focus\\\\:bg-bw-1:focus:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(20 20 20 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:focus\\\\:bg-primary:focus:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(255 184 0 / var(--tw-bg-opacity));\n}\n\n.checked\\\\:focus\\\\:bg-state-error:focus:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(185 14 10 / var(--tw-bg-opacity));\n}\n.checked\\\\:focus\\\\:bg-state-error-v2:focus:checked{\n background-color: #F80903;\n}\n\n.checked\\\\:focus\\\\:bg-state-success:focus:checked{\n --tw-bg-opacity: 1;\n background-color: rgb(57 120 57 / var(--tw-bg-opacity));\n}\n.checked\\\\:focus\\\\:bg-state-success-v2:focus:checked{\n background-color: #078A4D;\n}\n\n.checked\\\\:focus\\\\:bg-radio-default-checked:focus:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23141414' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:focus\\\\:bg-radio-error-checked:focus:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23F80903' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.checked\\\\:focus\\\\:bg-radio-success-checked:focus:checked{\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23078A4D' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='12'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='11.25' fill='white'%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='6'%3E%3C/circle%3E%3C/svg%3E\");\n}\n\n.disabled\\\\:cursor-not-allowed:disabled{\n cursor: not-allowed;\n}\n\n.disabled\\\\:bg-danger-2:disabled{\n --tw-bg-opacity: 1;\n background-color: rgb(221 67 57 / var(--tw-bg-opacity));\n}\n\n.disabled\\\\:bg-gray-2:disabled{\n --tw-bg-opacity: 1;\n background-color: rgb(220 221 221 / var(--tw-bg-opacity));\n}\n\n.disabled\\\\:bg-primary-2:disabled{\n --tw-bg-opacity: 1;\n background-color: rgb(255 200 58 / var(--tw-bg-opacity));\n}\n\n.disabled\\\\:bg-white:disabled{\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.disabled\\\\:text-gray-2:disabled{\n --tw-text-opacity: 1;\n color: rgb(220 221 221 / var(--tw-text-opacity));\n}\n\n.disabled\\\\:opacity-60:disabled{\n opacity: 0.6;\n}\n\n.group:hover .group-hover\\\\:fill-primary{\n fill: #FFB800;\n}\n\n.group:hover .group-hover\\\\:stroke-primary{\n stroke: #FFB800;\n}\n\n\n\n@media (prefers-color-scheme: dark){\n .dark\\\\:invert{\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n }\n}\n\n\n.max-h-500 {\n max-height: 500px;\n}\n\n.flex-col {\n flex-direction: column\n}\n\n.d-flex {\n display: flex\n}\n\n.p-10 {\n padding: 2.5rem;\n}\n\n.mt-3 {\n margin-top: 2rem\n}\n\n.grow-1 {\n flex-grow: 1;\n}\n\n\n.pl-2{\n padding-left: 0.5rem\n}\n\n\n.header-container {\n display: grid;\n grid-template-columns: auto auto;\n border-radius: 12px 12px 0 0;\n}\n\n.min-h-screen {\n min-height: 100vh\n}\n\n.h-fit {\n height: fit-content\n}\n\n.h-screen {\n height: 100vh\n}\n\n.h-\\\\[60vh\\\\] {\n height: 60vh;\n}\n\n.items-center {\n align-item: center\n}\n\n.items-start {\n align-item: start\n}\n\n.text-gray {\n color: #A1A1A1;\n}\n\n.button {\n display: block;\n flex: 1 1 0%;\n --tw-bg-opacity: 1;\n background-color: rgb(220 221 221 / var(--tw-bg-opacity));\n}\n\n.-order-1 {\n order: -1;\n}\n\n.order-1 {\n order: 1;\n}\n\n.h-\\\\[38px\\\\] {\n height: 38px;\n}\n\n.w-\\\\[38px\\\\] {\n width: 38px;\n}\n\n.grid {\n display: grid;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.gap-y-3 {\n row-gap: 0.75rem /* 12px */;\n}\n\n.gap-8 {\n gap: 2rem /* 32px */;\n}\n\ngap-12 {\n gap: 3rem /* 48px */;\n}\n\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.gap-x-12 {\n column-gap: 3rem /* 48px */;\n}\n\n.text-warning {\n --tw-text-opacity: 1;\n color: rgb(230 130 0 / var(--tw-text-opacity, 1)) /* #e68200 */;\n}\n\n.border-warning {\n --tw-text-opacity: 1;\n border-color: rgb(230 130 0 / var(--tw-text-opacity, 1)) /* #e68200 */;\n}\n\n.border-info {\n --tw-text-opacity: 1;\n border-color: rgb(57 100 234 / var(--tw-text-opacity));\n}\n\n.text-success {\n --tw-text-opacity: 1;\n color: rgb(16 179 103 / var(--tw-text-opacity, 1)) /* #10b367 */;\n}\n`\n","export const reactFlowStyle = `\r\n\r\n.react-flow {\r\n direction: ltr;\r\n\r\n --xy-edge-stroke-default: #b1b1b7;\r\n --xy-edge-stroke-width-default: 1;\r\n --xy-edge-stroke-selected-default: #555;\r\n\r\n --xy-connectionline-stroke-default: #b1b1b7;\r\n --xy-connectionline-stroke-width-default: 1;\r\n\r\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\r\n\r\n --xy-minimap-background-color-default: #fff;\r\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\r\n --xy-minimap-mask-stroke-color-default: transparent;\r\n --xy-minimap-mask-stroke-width-default: 1;\r\n --xy-minimap-node-background-color-default: #e2e2e2;\r\n --xy-minimap-node-stroke-color-default: transparent;\r\n --xy-minimap-node-stroke-width-default: 2;\r\n\r\n --xy-background-color-default: transparent;\r\n --xy-background-pattern-dots-color-default: #91919a;\r\n --xy-background-pattern-lines-color-default: #eee;\r\n --xy-background-pattern-cross-color-default: #e2e2e2;\r\n background-color: var(--xy-background-color, var(--xy-background-color-default));\r\n --xy-node-color-default: inherit;\r\n --xy-node-border-default: 1px solid #1a192b;\r\n --xy-node-background-color-default: #fff;\r\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\r\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\r\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\r\n --xy-node-border-radius-default: 3px;\r\n\r\n --xy-handle-background-color-default: #1a192b;\r\n --xy-handle-border-color-default: #fff;\r\n\r\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\r\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\r\n\r\n --xy-controls-button-background-color-default: #fefefe;\r\n --xy-controls-button-background-color-hover-default: #f4f4f4;\r\n --xy-controls-button-color-default: inherit;\r\n --xy-controls-button-color-hover-default: inherit;\r\n --xy-controls-button-border-color-default: #eee;\r\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\r\n\r\n --xy-edge-label-background-color-default: #ffffff;\r\n --xy-edge-label-color-default: inherit;\r\n --xy-resize-background-color-default: #3367d9;\r\n}\r\n.react-flow.dark {\r\n --xy-edge-stroke-default: #3e3e3e;\r\n --xy-edge-stroke-width-default: 1;\r\n --xy-edge-stroke-selected-default: #727272;\r\n\r\n --xy-connectionline-stroke-default: #b1b1b7;\r\n --xy-connectionline-stroke-width-default: 1;\r\n\r\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\r\n\r\n --xy-minimap-background-color-default: #141414;\r\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\r\n --xy-minimap-mask-stroke-color-default: transparent;\r\n --xy-minimap-mask-stroke-width-default: 1;\r\n --xy-minimap-node-background-color-default: #2b2b2b;\r\n --xy-minimap-node-stroke-color-default: transparent;\r\n --xy-minimap-node-stroke-width-default: 2;\r\n\r\n --xy-background-color-default: #141414;\r\n --xy-background-pattern-dots-color-default: #777;\r\n --xy-background-pattern-lines-color-default: #777;\r\n --xy-background-pattern-cross-color-default: #777;\r\n --xy-node-color-default: #f8f8f8;\r\n --xy-node-border-default: 1px solid #3c3c3c;\r\n --xy-node-background-color-default: #1e1e1e;\r\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\r\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\r\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\r\n\r\n --xy-handle-background-color-default: #bebebe;\r\n --xy-handle-border-color-default: #1e1e1e;\r\n\r\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\r\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\r\n\r\n --xy-controls-button-background-color-default: #2b2b2b;\r\n --xy-controls-button-background-color-hover-default: #3e3e3e;\r\n --xy-controls-button-color-default: #f8f8f8;\r\n --xy-controls-button-color-hover-default: #fff;\r\n --xy-controls-button-border-color-default: #5b5b5b;\r\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\r\n\r\n --xy-edge-label-background-color-default: #141414;\r\n --xy-edge-label-color-default: #f8f8f8;\r\n}\r\n.react-flow__background {\r\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\r\n pointer-events: none;\r\n z-index: -1;\r\n}\r\n.react-flow__container {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n}\r\n.react-flow__pane {\r\n z-index: 1;\r\n}\r\n.react-flow__pane.draggable {\r\n cursor: grab;\r\n }\r\n.react-flow__pane.dragging {\r\n cursor: grabbing;\r\n }\r\n.react-flow__pane.selection {\r\n cursor: pointer;\r\n }\r\n.react-flow__viewport {\r\n transform-origin: 0 0;\r\n z-index: 2;\r\n pointer-events: none;\r\n}\r\n.react-flow__renderer {\r\n z-index: 4;\r\n}\r\n.react-flow__selection {\r\n z-index: 6;\r\n}\r\n.react-flow__nodesselection-rect:focus,\r\n.react-flow__nodesselection-rect:focus-visible {\r\n outline: none;\r\n}\r\n.react-flow__edge-path {\r\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\r\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\r\n fill: none;\r\n}\r\n.react-flow__connection-path {\r\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\r\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\r\n fill: none;\r\n}\r\n.react-flow .react-flow__edges {\r\n position: absolute;\r\n}\r\n.react-flow .react-flow__edges svg {\r\n overflow: visible;\r\n position: absolute;\r\n pointer-events: none;\r\n }\r\n.react-flow__edge {\r\n pointer-events: visibleStroke;\r\n}\r\n.react-flow__edge.selectable {\r\n cursor: pointer;\r\n }\r\n.react-flow__edge.animated path {\r\n stroke-dasharray: 5;\r\n animation: dashdraw 0.5s linear infinite;\r\n }\r\n.react-flow__edge.animated path.react-flow__edge-interaction {\r\n stroke-dasharray: none;\r\n animation: none;\r\n }\r\n.react-flow__edge.inactive {\r\n pointer-events: none;\r\n }\r\n.react-flow__edge.selected,\r\n .react-flow__edge:focus,\r\n .react-flow__edge:focus-visible {\r\n outline: none;\r\n }\r\n.react-flow__edge.selected .react-flow__edge-path,\r\n .react-flow__edge.selectable:focus .react-flow__edge-path,\r\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\r\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\r\n }\r\n.react-flow__edge-textwrapper {\r\n pointer-events: all;\r\n }\r\n.react-flow__edge .react-flow__edge-text {\r\n pointer-events: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n }\r\n.react-flow__connection {\r\n pointer-events: none;\r\n}\r\n.react-flow__connection .animated {\r\n stroke-dasharray: 5;\r\n animation: dashdraw 0.5s linear infinite;\r\n }\r\nsvg.react-flow__connectionline {\r\n z-index: 1001;\r\n overflow: visible;\r\n position: absolute;\r\n}\r\n.react-flow__nodes {\r\n pointer-events: none;\r\n transform-origin: 0 0;\r\n}\r\n.react-flow__node {\r\n position: absolute;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n pointer-events: all;\r\n transform-origin: 0 0;\r\n box-sizing: border-box;\r\n cursor: default;\r\n}\r\n.react-flow__node.selectable {\r\n cursor: pointer;\r\n }\r\n.react-flow__node.draggable {\r\n cursor: grab;\r\n pointer-events: all;\r\n }\r\n.react-flow__node.draggable.dragging {\r\n cursor: grabbing;\r\n }\r\n.react-flow__nodesselection {\r\n z-index: 3;\r\n transform-origin: left top;\r\n pointer-events: none;\r\n}\r\n.react-flow__nodesselection-rect {\r\n position: absolute;\r\n pointer-events: all;\r\n cursor: grab;\r\n }\r\n.react-flow__handle {\r\n position: absolute;\r\n pointer-events: none;\r\n min-width: 5px;\r\n min-height: 5px;\r\n width: 6px;\r\n height: 6px;\r\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\r\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\r\n border-radius: 100%;\r\n}\r\n.react-flow__handle.connectingfrom {\r\n pointer-events: all;\r\n }\r\n.react-flow__handle.connectionindicator {\r\n pointer-events: all;\r\n cursor: crosshair;\r\n }\r\n.react-flow__handle-bottom {\r\n top: auto;\r\n left: 50%;\r\n bottom: 0;\r\n transform: translate(-50%, 50%);\r\n }\r\n.react-flow__handle-top {\r\n top: 0;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n.react-flow__handle-left {\r\n top: 50%;\r\n left: 0;\r\n transform: translate(-50%, -50%);\r\n }\r\n.react-flow__handle-right {\r\n top: 50%;\r\n right: 0;\r\n transform: translate(50%, -50%);\r\n }\r\n.react-flow__edgeupdater {\r\n cursor: move;\r\n pointer-events: all;\r\n}\r\n.react-flow__panel {\r\n position: absolute;\r\n z-index: 5;\r\n margin: 15px;\r\n}\r\n.react-flow__panel.top {\r\n top: 0;\r\n }\r\n.react-flow__panel.bottom {\r\n bottom: 0;\r\n }\r\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\r\n left: 50%;\r\n transform: translateX(-15px) translateX(-50%);\r\n }\r\n.react-flow__panel.left {\r\n left: 0;\r\n }\r\n.react-flow__panel.right {\r\n right: 0;\r\n }\r\n.react-flow__panel.left.center, .react-flow__panel.right.center {\r\n top: 50%;\r\n transform: translateY(-15px) translateY(-50%);\r\n }\r\n.react-flow__attribution {\r\n font-size: 10px;\r\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\r\n padding: 2px 3px;\r\n margin: 0;\r\n}\r\n.react-flow__attribution a {\r\n text-decoration: none;\r\n color: #999;\r\n }\r\n@keyframes dashdraw {\r\n from {\r\n stroke-dashoffset: 10;\r\n }\r\n}\r\n.react-flow__edgelabel-renderer {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n pointer-events: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n left: 0;\r\n top: 0;\r\n}\r\n.react-flow__viewport-portal {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n left: 0;\r\n top: 0;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n}\r\n.react-flow__minimap {\r\n background: var(\r\n --xy-minimap-background-color-props,\r\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\r\n );\r\n}\r\n.react-flow__minimap-svg {\r\n display: block;\r\n }\r\n.react-flow__minimap-mask {\r\n fill: var(\r\n --xy-minimap-mask-background-color-props,\r\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\r\n );\r\n stroke: var(\r\n --xy-minimap-mask-stroke-color-props,\r\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\r\n );\r\n stroke-width: var(\r\n --xy-minimap-mask-stroke-width-props,\r\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\r\n );\r\n }\r\n.react-flow__minimap-node {\r\n fill: var(\r\n --xy-minimap-node-background-color-props,\r\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\r\n );\r\n stroke: var(\r\n --xy-minimap-node-stroke-color-props,\r\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\r\n );\r\n stroke-width: var(\r\n --xy-minimap-node-stroke-width-props,\r\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\r\n );\r\n }\r\n.react-flow__background-pattern.dots {\r\n fill: var(\r\n --xy-background-pattern-color-props,\r\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\r\n );\r\n }\r\n.react-flow__background-pattern.lines {\r\n stroke: var(\r\n --xy-background-pattern-color-props,\r\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\r\n );\r\n }\r\n.react-flow__background-pattern.cross {\r\n stroke: var(\r\n --xy-background-pattern-color-props,\r\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\r\n );\r\n }\r\n.react-flow__controls {\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\r\n}\r\n.react-flow__controls.horizontal {\r\n flex-direction: row;\r\n }\r\n.react-flow__controls-button {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 26px;\r\n width: 26px;\r\n padding: 4px;\r\n border: none;\r\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\r\n border-bottom: 1px solid\r\n var(\r\n --xy-controls-button-border-color-props,\r\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\r\n );\r\n color: var(\r\n --xy-controls-button-color-props,\r\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\r\n );\r\n cursor: pointer;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n }\r\n.react-flow__controls-button svg {\r\n width: 100%;\r\n max-width: 12px;\r\n max-height: 12px;\r\n fill: currentColor;\r\n }\r\n.react-flow__edge.updating .react-flow__edge-path {\r\n stroke: #777;\r\n }\r\n.react-flow__edge-text {\r\n font-size: 10px;\r\n }\r\n.react-flow__node.selectable:focus,\r\n .react-flow__node.selectable:focus-visible {\r\n outline: none;\r\n }\r\n.react-flow__node-input,\r\n.react-flow__node-default,\r\n.react-flow__node-output,\r\n.react-flow__node-group {\r\n padding: 10px;\r\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\r\n width: 150px;\r\n font-size: 12px;\r\n color: var(--xy-node-color, var(--xy-node-color-default));\r\n text-align: center;\r\n border: var(--xy-node-border, var(--xy-node-border-default));\r\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\r\n}\r\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\r\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\r\n }\r\n.react-flow__node-input.selectable.selected,\r\n .react-flow__node-input.selectable:focus,\r\n .react-flow__node-input.selectable:focus-visible,\r\n .react-flow__node-default.selectable.selected,\r\n .react-flow__node-default.selectable:focus,\r\n .react-flow__node-default.selectable:focus-visible,\r\n .react-flow__node-output.selectable.selected,\r\n .react-flow__node-output.selectable:focus,\r\n .react-flow__node-output.selectable:focus-visible,\r\n .react-flow__node-group.selectable.selected,\r\n .react-flow__node-group.selectable:focus,\r\n .react-flow__node-group.selectable:focus-visible {\r\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\r\n }\r\n.react-flow__node-group {\r\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\r\n}\r\n.react-flow__nodesselection-rect,\r\n.react-flow__selection {\r\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\r\n border: var(--xy-selection-border, var(--xy-selection-border-default));\r\n}\r\n.react-flow__nodesselection-rect:focus,\r\n .react-flow__nodesselection-rect:focus-visible,\r\n .react-flow__selection:focus,\r\n .react-flow__selection:focus-visible {\r\n outline: none;\r\n }\r\n.react-flow__controls-button:hover {\r\n background: var(\r\n --xy-controls-button-background-color-hover-props,\r\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\r\n );\r\n color: var(\r\n --xy-controls-button-color-hover-props,\r\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\r\n );\r\n }\r\n.react-flow__controls-button:disabled {\r\n pointer-events: none;\r\n }\r\n.react-flow__controls-button:disabled svg {\r\n fill-opacity: 0.4;\r\n }\r\n.react-flow__controls-button:last-child {\r\n border-bottom: none;\r\n }\r\n.react-flow__controls.horizontal .react-flow__controls-button {\r\n border-bottom: none;\r\n border-right: 1px solid\r\n var(\r\n --xy-controls-button-border-color-props,\r\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\r\n );\r\n }\r\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\r\n border-right: none;\r\n }\r\n.react-flow__resize-control {\r\n position: absolute;\r\n}\r\n.react-flow__resize-control.left,\r\n.react-flow__resize-control.right {\r\n cursor: ew-resize;\r\n}\r\n.react-flow__resize-control.top,\r\n.react-flow__resize-control.bottom {\r\n cursor: ns-resize;\r\n}\r\n.react-flow__resize-control.top.left,\r\n.react-flow__resize-control.bottom.right {\r\n cursor: nwse-resize;\r\n}\r\n.react-flow__resize-control.bottom.left,\r\n.react-flow__resize-control.top.right {\r\n cursor: nesw-resize;\r\n}\r\n/* handle styles */\r\n.react-flow__resize-control.handle {\r\n width: 4px;\r\n height: 4px;\r\n border: 1px solid #fff;\r\n border-radius: 1px;\r\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\r\n transform: translate(-50%, -50%);\r\n}\r\n.react-flow__resize-control.handle.left {\r\n left: 0;\r\n top: 50%;\r\n}\r\n.react-flow__resize-control.handle.right {\r\n left: 100%;\r\n top: 50%;\r\n}\r\n.react-flow__resize-control.handle.top {\r\n left: 50%;\r\n top: 0;\r\n}\r\n.react-flow__resize-control.handle.bottom {\r\n left: 50%;\r\n top: 100%;\r\n}\r\n.react-flow__resize-control.handle.top.left {\r\n left: 0;\r\n}\r\n.react-flow__resize-control.handle.bottom.left {\r\n left: 0;\r\n}\r\n.react-flow__resize-control.handle.top.right {\r\n left: 100%;\r\n}\r\n.react-flow__resize-control.handle.bottom.right {\r\n left: 100%;\r\n}\r\n/* line styles */\r\n.react-flow__resize-control.line {\r\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\r\n border-width: 0;\r\n border-style: solid;\r\n}\r\n.react-flow__resize-control.line.left,\r\n.react-flow__resize-control.line.right {\r\n width: 1px;\r\n transform: translate(-50%, 0);\r\n top: 0;\r\n height: 100%;\r\n}\r\n.react-flow__resize-control.line.left {\r\n left: 0;\r\n border-left-width: 1px;\r\n}\r\n.react-flow__resize-control.line.right {\r\n left: 100%;\r\n border-right-width: 1px;\r\n}\r\n.react-flow__resize-control.line.top,\r\n.react-flow__resize-control.line.bottom {\r\n height: 1px;\r\n transform: translate(0, -50%);\r\n left: 0;\r\n width: 100%;\r\n}\r\n.react-flow__resize-control.line.top {\r\n top: 0;\r\n border-top-width: 1px;\r\n}\r\n.react-flow__resize-control.line.bottom {\r\n border-bottom-width: 1px;\r\n top: 100%;\r\n}\r\n.react-flow__edge-textbg {\r\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\r\n}\r\n.react-flow__edge-text {\r\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\r\n}\r\n\r\n.flex {\r\n display: flex;\r\n}\r\n\r\n.h-full {\r\n height: 100%;\r\n}\r\n\r\n.w-full {\r\n width: 100%;\r\n}\r\n\r\n.flex-col {\r\n flex-direction: column;\r\n}\r\n\r\n.bg-gray-100 {\r\n background-color: #f3f4f6; /* Tailwind Gray 100 */\r\n}\r\n.bg-gray-300 {\r\n background-color: #d1d5db; /* Tailwind Gray 300 */\r\n}\r\n\r\n.relative {\r\n position: relative;\r\n}\r\n\r\n.min-w-700px {\r\n min-width: 700px;\r\n}\r\n\r\n.h-px {\r\n height: 1px;\r\n}\r\n\r\n.mb-4 {\r\n margin-bottom: 1rem;\r\n}\r\n\r\n.text-base {\r\n font-size: 1rem;\r\n line-height: 1.5rem;\r\n}\r\n\r\n.font-bold {\r\n font-weight: 700;\r\n}\r\n\r\n.font-semibold {\r\n font-weight: 600;\r\n}\r\n\r\n.mt-6 {\r\n margin-top: 1.5rem;\r\n}\r\n\r\n.mt-4 {\r\n margin-top: 1rem;\r\n}\r\n\r\n.p-6 {\r\n padding: 1.5rem;\r\n}\r\n\r\n/* Hai class text-bw-15 và text-bw-1 không phải chuẩn Tailwind mặc định, bạn nên thay thế bằng màu chuẩn hoặc tự định nghĩa */\r\n.text-bw-15 {\r\n color: #374151; \r\n}\r\n\r\n.text-bw-1 {\r\n color: #111827; \r\n}\r\n\r\n.bg-gray-4 {\r\n background-color: #e5e7eb; \r\n}\r\n\r\n\r\n.min-h-10 {\r\n min-height: 2.5rem; \r\n}\r\n\r\n.w-295px {\r\n width: 295px;\r\n}\r\n\r\n.break-words {\r\n overflow-wrap: break-word;\r\n word-wrap: break-word;\r\n word-break: break-word;\r\n}\r\n\r\n.rounded-lg {\r\n border-radius: 0.5rem; /* 8px */\r\n}\r\n\r\n.bg-white {\r\n background-color: #ffffff;\r\n}\r\n\r\n.p-4 {\r\n padding: 1rem;\r\n}\r\n\r\n.text-start {\r\n text-align: left;\r\n}\r\n\r\n.text-base {\r\n font-size: 1rem;\r\n line-height: 1.5rem;\r\n}\r\n\r\n.shadow-matchingquiz {\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); \r\n}\r\n\r\n.react-flow__panel {\r\n display: none;\r\n}\r\n\r\n`\r\n","export const tooltipStyle = `\r\n.tooltip-container {\r\n position: relative;\r\n display: inline-block;\r\n padding: 4px 0px;\r\n}\r\n \r\n.tooltip-text {\r\n visibility: hidden;\r\n position: absolute;\r\n z-index: 10;\r\n background-color: white;\r\n color: #1f2937; /* Tailwind's text-gray-800 */\r\n border: 1px solid #e5e7eb; /* Tailwind's border-gray-200 */\r\n border-radius: 8px;\r\n padding: 15px;\r\n min-width: 300px;\r\n text-align: left;\r\n white-space: normal;\r\n word-wrap: break-word;\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);\r\n top: 100%;\r\n left: 0;\r\n transition: transform 0.3s ease;\r\n transform: translateY(10px);\r\n opacity: 0;\r\n}\r\n\r\n.tooltip-text::after {\r\n content: '';\r\n position: absolute;\r\n background-color: white;\r\n top: -5px;\r\n left: 20px;\r\n transform: rotate(45deg);\r\n width: 10px;\r\n height: 10px;\r\n border-top: 1px solid rgba(0, 0, 0, 0.1);\r\n border-left: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.tooltip-container:hover .tooltip-text {\r\n visibility: visible;\r\n opacity: 1;\r\n transform: translateY(0);\r\n}\r\n \r\n/* Kích thước hộp */\r\n.w-200px {\r\n width: 200px;\r\n}\r\n\r\n.min-w-200px {\r\n min-width: 200px;\r\n}\r\n\r\n.max-w-400px {\r\n max-width: 400px;\r\n}\r\n\r\n/* Viền và bo góc */\r\n.border {\r\n border-width: 1px;\r\n}\r\n\r\n.border-gray-300 {\r\n border-color: #d1d5db;\r\n}\r\n\r\n.rounded {\r\n border-radius: 0.25rem;\r\n}\r\n\r\n/* Hiển thị và vị trí */\r\n.relative {\r\n position: relative;\r\n}\r\n\r\n.inline-block {\r\n display: inline-block;\r\n}\r\n\r\n.absolute {\r\n position: absolute;\r\n}\r\n\r\n/* Dịch chuyển */\r\n.translate-x-1px {\r\n transform: translateX(-1px);\r\n}\r\n\r\n/* Vị trí tuyệt đối tùy chỉnh */\r\n.top-44px {\r\n top: 44px;\r\n}\r\n\r\n.left-0 {\r\n left: 0;\r\n}\r\n\r\n/* Z-index */\r\n.z-9 {\r\n z-index: 9;\r\n}\r\n\r\n/* Màu nền và đổ bóng */\r\n.bg-white {\r\n background-color: white;\r\n}\r\n\r\n.shadow-lg {\r\n box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n/* Kích thước khung chọn */\r\n.max-h-300px {\r\n max-height: 300px;\r\n}\r\n\r\n.overflow-y-auto {\r\n overflow-y: auto;\r\n}\r\n\r\n/* Padding */\r\n.px-3 {\r\n padding-left: 0.75rem;\r\n padding-right: 0.75rem;\r\n}\r\n\r\n.py-2 {\r\n padding-top: 0.5rem;\r\n padding-bottom: 0.5rem;\r\n}\r\n\r\n/* Flexbox căn chỉnh */\r\n.flex {\r\n display: flex;\r\n}\r\n\r\n.items-center {\r\n align-items: center;\r\n}\r\n\r\n.justify-between {\r\n justify-content: space-between;\r\n}\r\n\r\n/* Hiệu ứng hover */\r\n.option:hover {\r\n background-color: #e5e7eb;\r\n}\r\n\r\n/* Con trỏ chuột */\r\n.cursor-pointer {\r\n cursor: pointer;\r\n}\r\n\r\n/* Màu chữ */\r\n.text-gray-500 {\r\n color: #6b7280;\r\n}\r\n\r\n/* Margin trái */\r\n.ml-2 {\r\n margin-left: 0.5rem;\r\n}\r\n\r\n.base-box {\r\n position: relative;\r\n display: inline-block;\r\n border: 1px solid #d1d5db;\r\n border-radius: 0.5rem;\r\n background-color: white;\r\n}\r\n\r\n.size-box {\r\n width: 200px;\r\n max-width: 400px;\r\n min-width: 200px;\r\n}\r\n\r\n.min-w-24px {\r\n min-width: 24px;\r\n}\r\n\r\n.font-semibold {\r\n font-weight: 600;\r\n }\r\n`\r\n","export const luckySheetStyle = `\r\n\r\n.luckysheet-cell-selected-focus {\r\n position: absolute;\r\n pointer-events: none;\r\n z-index: 14;\r\n /*border:1px solid #fff;*/\r\n margin: 0px 0 0 0px;\r\n background: rgba(0, 80, 208, 0.15);\r\n display: none;\r\n}\r\n\r\n.luckysheet-cell-selected {\r\n position: absolute;\r\n pointer-events: none;\r\n z-index: 15;\r\n border: 1px solid #0188fb;\r\n margin: -1px 0 0 -1px;\r\n background: rgba(1, 136, 251, 0.15);\r\n display: none;\r\n box-sizing: content-box;\r\n}\r\n\r\n.luckysheet-cs-inner-border {\r\n pointer-events: none;\r\n border: 1px solid #fff;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.luckysheet-cs-fillhandle {\r\n position: absolute;\r\n width: 6px;\r\n height: 6px;\r\n bottom: -5px;\r\n cursor: crosshair;\r\n background-color: #0188fb;\r\n border: solid 1px #fff;\r\n z-index: 16;\r\n pointer-events: auto;\r\n right: -5px;\r\n}\r\n\r\n.luckysheet-cs-draghandle {\r\n position: absolute;\r\n cursor: move;\r\n background-color: #fff;\r\n opacity: 0.01;\r\n z-index: 15;\r\n pointer-events: auto;\r\n border: 2px solid #fff;\r\n}\r\n\r\n.luckysheet-cs-draghandle-top {\r\n top: -4px;\r\n left: -2px;\r\n right: -2px;\r\n height: 2px;\r\n}\r\n\r\n.luckysheet-cs-draghandle-bottom {\r\n right: 0;\r\n left: -2px;\r\n bottom: -4px;\r\n height: 2px;\r\n}\r\n\r\n.luckysheet-cs-draghandle-left {\r\n top: 0;\r\n left: -4px;\r\n bottom: 0;\r\n width: 2px;\r\n}\r\n\r\n.luckysheet-cs-draghandle-right {\r\n top: 0;\r\n right: -4px;\r\n bottom: 0;\r\n width: 2px;\r\n}\r\n\r\n.luckysheet-cs-touchhandle {\r\n display: none;\r\n position: absolute;\r\n width: 16px;\r\n height: 16px;\r\n padding: 5px;\r\n z-index: 100;\r\n pointer-events: auto;\r\n touch-action: auto;\r\n}\r\n\r\n.luckysheet-cs-touchhandle:before {\r\n content: \"\";\r\n display: block;\r\n width: 16px;\r\n height: 16px;\r\n border: 0.5px solid rgba(0, 0, 0, 0.15);\r\n background-color: #ffffff;\r\n box-sizing: border-box;\r\n border-radius: 50%;\r\n}\r\n\r\n.luckysheet-cs-touchhandle-lt {\r\n left: -13px;\r\n top: -13px;\r\n}\r\n\r\n.luckysheet-cs-touchhandle-lb {\r\n left: -13px;\r\n bottom: -13px;\r\n}\r\n\r\n.luckysheet-cs-touchhandle-rt {\r\n right: -13px;\r\n top: -13px;\r\n}\r\n\r\n.luckysheet-cs-touchhandle-rb {\r\n right: -13px;\r\n bottom: -13px;\r\n}\r\n\r\n.luckysheet-cs-touchhandle .luckysheet-cs-touchhandle-btn {\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n left: 8px;\r\n top: 8px;\r\n background-color: #018ffb;\r\n background-position: center;\r\n box-sizing: border-box;\r\n border-radius: 50%;\r\n z-index: 11;\r\n}\r\n\r\n.luckysheet-input-box {\r\n position: absolute;\r\n font: normal normal 400 13px arial, sans, sans-serif;\r\n z-index: 15;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.luckysheet-input-box-inner {\r\n font: normal normal 400 13px arial, sans, sans-serif;\r\n text-align: left;\r\n max-height: 9900px;\r\n max-width: 9900px;\r\n border: 1px #5292f7 solid;\r\n padding: 0 2px;\r\n margin: 0;\r\n resize: none;\r\n overflow: hidden;\r\n white-space: pre-wrap;\r\n outline: none;\r\n -webkit-box-shadow: 0 2px 5px rgb(0 0 0 / 40%);\r\n -moz-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.4);\r\n box-shadow: 0 2px 5px rgb(0 0 0 / 40%);\r\n word-wrap: break-word;\r\n background-color: rgb(255, 255, 255);\r\n font-size: 13px;\r\n right: auto;\r\n overflow-y: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.luckysheet-cell-input {\r\n width: 100%;\r\n margin: 0;\r\n outline: none;\r\n cursor: text;\r\n white-space: pre-wrap;\r\n}\r\n\r\n.luckysheet-formula-text-color {\r\n color: black;\r\n}\r\n\r\n.luckysheet-formula-text-string {\r\n color: forestgreen;\r\n}\r\n\r\n.luckysheet-cell-flow {\r\n margin: 0;\r\n padding: 0;\r\n border: none 0;\r\n position: relative;\r\n touch-action: manipulation;\r\n}\r\n\r\n.luckysheet-cell-flow-clip {\r\n border-collapse: collapse;\r\n cursor: default;\r\n width: 5000000px;\r\n touch-action: manipulation;\r\n overflow: hidden;\r\n}\r\n\r\n.luckysheet-cell-flow-col {\r\n margin: 0;\r\n padding: 0;\r\n border: none 0;\r\n position: relative;\r\n touch-action: manipulation;\r\n overflow: hidden;\r\n float: left;\r\n direction: ltr;\r\n}\r\n\r\n.luckysheet-cell-sheettable {\r\n position: relative;\r\n /*background-color: #fff;*/\r\n text-align: left;\r\n font-size: 11pt;\r\n color: #000000;\r\n text-decoration: none;\r\n}\r\n\r\n.luckysheet-bottom-controll-row {\r\n position: absolute;\r\n height: 30px;\r\n /*width: 400px;*/\r\n /* background: #000; */\r\n bottom: 38px;\r\n left: 0px;\r\n z-index: 1000;\r\n}\r\n\r\n#luckysheet-bottom-add-row {\r\n padding: 5px 20px;\r\n margin-right: 5px;\r\n margin-top: -2px;\r\n}\r\n\r\n#luckysheet-bottom-add-row-input {\r\n width: 40px;\r\n min-width: 40px;\r\n}\r\n\r\n#luckysheet-bottom-return-top {\r\n padding: 5px 6px;\r\n margin-left: 10px;\r\n margin-top: -2px;\r\n}\r\n\r\n.luckysheet-cell-flow-column {\r\n position: absolute;\r\n height: inherit;\r\n width: inherit;\r\n top: 0;\r\n left: 0;\r\n z-index: 1;\r\n touch-action: manipulation;\r\n}\r\n\r\n.luckysheet-cell-flow-column-line {\r\n position: absolute;\r\n border-right: 1px solid #d4d4d4;\r\n height: inherit;\r\n}\r\n\r\n.luckysheet-cell-flow-row {\r\n text-align: left;\r\n position: absolute;\r\n height: inherit;\r\n width: inherit;\r\n top: 0;\r\n left: 0;\r\n z-index: 1;\r\n touch-action: manipulation;\r\n}\r\n\r\n.luckysheet-cell-flow-row-line {\r\n position: absolute;\r\n border-bottom: 1px solid #d4d4d4;\r\n width: inherit;\r\n}\r\n\r\n\r\n/*批注聚焦框 移动 改变大小*/\r\n.luckysheet-postil-dialog-move {\r\n position: absolute;\r\n margin: 0px;\r\n padding: 0px;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n pointer-events: none;\r\n}\r\n\r\n.luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item {\r\n /*background: #000;*/\r\n position: absolute;\r\n pointer-events: all;\r\n cursor: move;\r\n}\r\n\r\n.luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item-t {\r\n width: 100%;\r\n height: 3px;\r\n /* border-bottom: 1px solid #000; */\r\n left: 0;\r\n top: -4px;\r\n}\r\n\r\n.luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item-r {\r\n width: 3px;\r\n height: 100%;\r\n /* border-left: 1px solid #000; */\r\n right: -4px;\r\n top: 0;\r\n}\r\n\r\n.luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item-b {\r\n width: 100%;\r\n height: 3px;\r\n /* border-top: 1px solid #000; */\r\n left: 0;\r\n bottom: -4px;\r\n}\r\n\r\n.luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item-l {\r\n width: 3px;\r\n height: 100%;\r\n /* border-right: 1px solid #000; */\r\n left: -4px;\r\n top: 0;\r\n}\r\n\r\n.luckysheet-postil-show-active\r\n .luckysheet-postil-dialog-move\r\n .luckysheet-postil-dialog-move-item {\r\n border-color: #0188fb;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize {\r\n position: absolute;\r\n margin: 0px;\r\n padding: 0px;\r\n top: -2px;\r\n left: -2px;\r\n bottom: -2px;\r\n right: -2px;\r\n pointer-events: none;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item {\r\n position: absolute;\r\n height: 6px;\r\n width: 6px;\r\n border: 1px solid #0188fb;\r\n pointer-events: all;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-lt {\r\n left: -6px;\r\n top: -6px;\r\n cursor: nw-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-mt {\r\n left: 50%;\r\n top: -6px;\r\n margin-left: -4px;\r\n cursor: n-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-lm {\r\n top: 50%;\r\n left: -6px;\r\n margin-top: -4px;\r\n cursor: w-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-rm {\r\n top: 50%;\r\n right: -6px;\r\n margin-top: -4px;\r\n cursor: e-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-rt {\r\n right: -6px;\r\n top: -6px;\r\n cursor: ne-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-lb {\r\n left: -6px;\r\n bottom: -6px;\r\n cursor: sw-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-mb {\r\n left: 50%;\r\n bottom: -6px;\r\n margin-left: -4px;\r\n cursor: s-resize;\r\n}\r\n\r\n.luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item-rb {\r\n right: -6px;\r\n bottom: -6px;\r\n cursor: se-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize {\r\n position: absolute;\r\n border: 2px solid #0188fb;\r\n margin: 0px;\r\n padding: 0px;\r\n top: -2px;\r\n left: -2px;\r\n bottom: -2px;\r\n right: -2px;\r\n pointer-events: none;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item {\r\n position: absolute;\r\n height: 6px;\r\n width: 6px;\r\n background: #ffffff;\r\n border: 2px solid #0188fb;\r\n pointer-events: all;\r\n border-radius: 6px;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-lt {\r\n left: -6px;\r\n top: -6px;\r\n cursor: se-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-mt {\r\n left: 50%;\r\n top: -6px;\r\n margin-left: -4px;\r\n cursor: s-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-rt {\r\n right: -6px;\r\n top: -6px;\r\n cursor: ne-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-lm {\r\n top: 50%;\r\n left: -6px;\r\n margin-top: -4px;\r\n cursor: w-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-rm {\r\n top: 50%;\r\n right: -6px;\r\n margin-top: -4px;\r\n cursor: w-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-lb {\r\n left: -6px;\r\n bottom: -6px;\r\n cursor: ne-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-mb {\r\n left: 50%;\r\n bottom: -6px;\r\n margin-left: -4px;\r\n cursor: s-resize;\r\n}\r\n\r\n.luckysheet-modal-dialog-resize-item-rb {\r\n right: -6px;\r\n bottom: -6px;\r\n cursor: se-resize;\r\n}\r\n\r\n.luckysheet-filter-options {\r\n color: #897bff;\r\n cursor: pointer;\r\n position: absolute;\r\n z-index: 200;\r\n border: 1px solid #897bff;\r\n border-radius: 3px;\r\n top: 3px;\r\n margin-left: 0px;\r\n display: \"block\";\r\n padding: 0px 4px;\r\n font-size: 12px;\r\n height: 15px;\r\n background: #fff;\r\n}\r\n\r\n.luckysheet-filter-options:hover {\r\n color: #fff;\r\n border: 1px solid #fff;\r\n background: #897bff;\r\n}\r\n\r\n.luckysheet-filter-options-active {\r\n color: #fff;\r\n border: 1px solid #897bff;\r\n padding: 0px 1px;\r\n background: #897bff;\r\n}\r\n\r\n.luckysheet-filter-options:hover .caret.down {\r\n border-top-color: #ffffff;\r\n}\r\n\r\n.luckysheet-filter-selected {\r\n background: #ffffff00;\r\n}\r\n\r\n#luckysheet-dataVerification-showHintBox {\r\n display: none;\r\n padding: 10px;\r\n background-color: #ffffff;\r\n border: 1px solid #ccc;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\r\n position: absolute;\r\n z-index: 1000;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n cursor: default;\r\n white-space: nowrap;\r\n font-size: 12px;\r\n}\r\n\r\n#luckysheet-dataVerification-dropdown-btn {\r\n display: none;\r\n width: 20px;\r\n height: 20px;\r\n background-color: #ffffff;\r\n position: absolute;\r\n z-index: 10;\r\n overflow: hidden;\r\n}\r\n\r\n.luckysheet-formula-search-c {\r\n position: absolute;\r\n border: 1px solid rgba(0, 0, 0, 0.2);\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\r\n color: #535353;\r\n font-size: 12px;\r\n background: #fff;\r\n z-index: 1003;\r\n width: 300px;\r\n}\r\n\r\n.luckysheet-formula-search-c .luckysheet-formula-search-item {\r\n background: #fff;\r\n padding: 5px 10px;\r\n cursor: pointer;\r\n}\r\n\r\n.luckysheet-formula-search-c\r\n .luckysheet-formula-search-item\r\n .luckysheet-formula-search-detail {\r\n display: none;\r\n color: #444;\r\n}\r\n\r\n.luckysheet-formula-search-c\r\n .luckysheet-formula-search-item\r\n .luckysheet-formula-search-func {\r\n color: #222;\r\n font-size: 14px;\r\n}\r\n\r\n.luckysheet-formula-search-c .luckysheet-formula-search-item-active {\r\n display: block;\r\n border-top: 1px solid #ebebeb;\r\n border-bottom: 1px solid #ebebeb;\r\n background: #f5f5f5;\r\n}\r\n\r\n.luckysheet-formula-search-c\r\n .luckysheet-formula-search-item-active\r\n .luckysheet-formula-search-detail {\r\n display: block;\r\n}\r\n\r\n.luckysheet-formula-help-c {\r\n position: absolute;\r\n border: 1px solid rgba(0, 0, 0, 0.2);\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\r\n color: #535353;\r\n font-size: 12px;\r\n background: #fff;\r\n z-index: 1003;\r\n width: 300px;\r\n}\r\n\r\n.luckysheet-formula-help-c .luckysheet-formula-help-content {\r\n max-height: 300px;\r\n overflow-y: scroll;\r\n}\r\n\r\n.luckysheet-formula-help-content-example {\r\n margin-top: 5px;\r\n}\r\n\r\n.luckysheet-formula-help-title {\r\n display: block;\r\n border-top: 1px solid #ebebeb;\r\n border-bottom: 1px solid #ebebeb;\r\n background: #f5f5f5;\r\n padding: 2px 10px;\r\n font-size: 14px;\r\n}\r\n\r\n.luckysheet-formula-help-title-formula {\r\n width: 250px;\r\n word-break: break-word;\r\n}\r\n\r\n.luckysheet-arguments-help-section {\r\n margin-top: 5px;\r\n margin-bottom: 5px;\r\n color: #222;\r\n}\r\n\r\n.luckysheet-arguments-help-section-title {\r\n padding: 1px 10px;\r\n color: #666;\r\n}\r\n\r\n.luckysheet-arguments-help-parameter-content {\r\n padding: 1px 10px;\r\n display: inline-block;\r\n word-wrap: break-word;\r\n}\r\n\r\n.luckysheet-arguments-help-formula {\r\n padding: 1px 10px;\r\n font-size: 14px;\r\n}\r\n\r\n.luckysheet-arguments-help-parameter-active {\r\n background-color: #fff9b2;\r\n}\r\n\r\n.luckysheet-formula-help-collapse {\r\n position: absolute;\r\n top: 0px;\r\n right: 25px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n color: #bbb;\r\n}\r\n\r\n.luckysheet-formula-help-close {\r\n position: absolute;\r\n top: 0px;\r\n right: 5px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n color: #bbb;\r\n}\r\n\r\n.luckysheet-formula-help-close:hover,\r\n.luckysheet-formula-help-collapse:hover {\r\n color: #555;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr {\r\n position: absolute;\r\n overflow: hidden;\r\n z-index: 1003;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr div {\r\n height: 1px;\r\n width: 1px;\r\n}\r\n\r\n.luckysheet-scrollbar-x {\r\n bottom: 0px;\r\n overflow-x: scroll;\r\n}\r\n\r\n.luckysheet-scrollbar-y {\r\n right: 0px;\r\n top: 0px;\r\n overflow-y: scroll;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr::-webkit-scrollbar {\r\n background-color: transparent;\r\n width: 8px;\r\n height: 8px;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr::-webkit-scrollbar-track {\r\n background-color: transparent;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr::-webkit-scrollbar-thumb {\r\n background-color: #babac0;\r\n border-radius: 16px;\r\n}\r\n\r\n.luckysheet-scrollbar-ltr::-webkit-scrollbar-button {\r\n display: none;\r\n}\r\n#luckysheet-dataVerification-dropdown-List {\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\r\n position: absolute;\r\n z-index: 10000;\r\n box-sizing: border-box;\r\n font-size: 12px;\r\n}\r\n\r\n#luckysheet-dataVerification-dropdown-List .dropdown-List-item {\r\n padding: 5px 10px;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n}\r\n\r\n#luckysheet-dataVerification-dropdown-List .dropdown-List-item:hover {\r\n background-color: #E1E1E1;\r\n}\r\n\r\n\r\n/*Function formula search style*/\r\n#luckysheet-search-formula {\r\n font-size: 12px;\r\n}\r\n\r\n#luckysheet-search-formula .inpbox {\r\n margin-bottom: 5px;\r\n}\r\n\r\n#luckysheet-search-formula .inpbox div {\r\n display: block;\r\n margin-bottom: 5px;\r\n}\r\n\r\n#luckysheet-search-formula .inpbox input {\r\n width: 100%;\r\n height: 24px;\r\n line-height: 24px;\r\n border: 1px solid #d4d4d4;\r\n padding: 0 10px;\r\n box-sizing: border-box;\r\n font-size: 12px;\r\n}\r\n\r\n#luckysheet-search-formula .selbox {\r\n margin-bottom: 5px;\r\n}\r\n\r\n#luckysheet-search-formula .selbox select {\r\n width: 50%;\r\n height: 24px;\r\n line-height: 24px;\r\n border: 1px solid #d4d4d4;\r\n box-sizing: border-box;\r\n font-size: 12px;\r\n}\r\n\r\n#luckysheet-search-formula .listbox label {\r\n display: block;\r\n margin-bottom: 5px;\r\n}\r\n\r\n\r\n\r\n.luckysheet-sheet-area {\r\n width: 100%;\r\n box-sizing: border-box;\r\n background-color: #fafafc;\r\n color: #444;\r\n height: 31px;\r\n padding: 0 30px 0 44px;\r\n margin: 0;\r\n -webkit-touch-callout: none;\r\n cursor: default;\r\n transition: 0.3s ease all;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n position: relative;\r\n}\r\n\r\n#luckysheet-sheet-content {\r\n width: 0;\r\n flex: 3;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n#luckysheet-bottom-pager {\r\n width: 0;\r\n background-color: #fafafc;\r\n z-index: 1;\r\n flex: 2;\r\n text-align: right;\r\n white-space: nowrap;\r\n}\r\n\r\n.luckysheet-sheet-area>div,\r\n.luckysheet-sheet-area .luckysheet-sheets-item {\r\n display: inline-block;\r\n /* margin-right: 6px;\r\n margin-top: 1px;\r\n padding: 1px 6px; */\r\n /* padding: 6px 10px; */\r\n}\r\n\r\n\r\n.luckysheet-sheet-container-menu-hide .luckysheet-sheets-item {\r\n padding-right: 5px !important;\r\n}\r\n\r\n.luckysheet-sheet-container-menu-hide .luckysheet-sheets-item-menu {\r\n display: none !important;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item {\r\n padding: 2px 6px;\r\n height: 29px;\r\n line-height: 29px;\r\n background-color: #fafafc;\r\n color: #676464;\r\n min-width: 30px;\r\n top: 0px;\r\n position: relative;\r\n margin-right: -1px;\r\n cursor: pointer;\r\n transition: all 0.1s;\r\n font-size: 13px;\r\n padding: 2px 19px 0px 5px;\r\n box-sizing: border-box;\r\n border-left: 1px solid #e0e0e0;\r\n border-right: 1px solid #e0e0e0;\r\n vertical-align: middle;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item:last-child {\r\n margin-right: 1px;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item:hover {\r\n background-color: #efefef;\r\n /* border-color: #a5a5a5; */\r\n color: #490500;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item .luckysheet-sheets-item-menu {\r\n margin-left: 2px;\r\n display: inline-block;\r\n top: -2px;\r\n position: relative;\r\n color: #a1a1a1;\r\n position: absolute;\r\n height: 100%;\r\n width: 15px;\r\n right: 0px;\r\n text-align: center;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item .luckysheet-sheets-item-menu:hover {\r\n color: #2a2a2a;\r\n cursor: pointer;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item .luckysheet-sheets-item-name {\r\n padding: 0px 3px;\r\n}\r\n\r\n.luckysheet-sheets-item-color {\r\n width: 100%;\r\n height: 10%;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item .luckysheet-sheets-item-name[contenteditable=\"true\"] {\r\n border: 1px solid #d9d9d9;\r\n display: inline-block;\r\n height: 18px;\r\n line-height: 18px;\r\n min-width: 8px;\r\n margin: -4px -1px;\r\n -moz-user-modify: read-write-plaintext-only;\r\n -webkit-user-modify: read-write-plaintext-only;\r\n -moz-user-select: text !important;\r\n -ms-user-select: text !important;\r\n -webkit-user-select: text !important;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item .luckysheet-sheets-item-name[contenteditable=\"true\"]:focus {\r\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);\r\n -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);\r\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);\r\n border: 1px solid #4d90fe;\r\n outline: none;\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item-active {\r\n /* padding: 2px 8px; */\r\n height: 29px;\r\n line-height: 29px;\r\n background-color: #efefef;\r\n /* border-color: #aaa; */\r\n border-top-color: #fff;\r\n color: #222;\r\n /* box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); */\r\n cursor: default;\r\n /* top: -2px; */\r\n /* border-bottom: none; */\r\n /* padding-right: 20px; */\r\n}\r\n\r\n.luckysheet-sheet-area div.luckysheet-sheets-item-active:hover {\r\n background-color: #ececec;\r\n /* border-color: #aaa; */\r\n color: #222;\r\n}\r\n\r\n.luckysheet-noselected-text {\r\n -moz-user-select: -moz-test;\r\n -khtml-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n\r\n.luckysheet-sheet-selection-calInfo {\r\n display: flex;\r\n font-size: 12px;\r\n align-content: center;\r\n padding: 0 0 0 44px;\r\n height: 22px;\r\n align-self: flex-end;\r\n}\r\n\r\n.luckysheet-sheet-selection-calInfo div {\r\n margin: auto 0;\r\n white-space: nowrap;\r\n margin-right: 7px;\r\n}\r\n\r\n.luckysheet-sheets-item-function {\r\n width: 12px;\r\n height: 24px;\r\n position: absolute;\r\n top: 4px;\r\n right: 2px;\r\n}\r\n\r\n.luckysheet-cols-menu .luckysheet-cols-menuitem {\r\n position: relative;\r\n color: #333;\r\n cursor: pointer;\r\n list-style: none;\r\n margin: 0;\r\n padding: 1px 6em 1px 20px;\r\n white-space: nowrap;\r\n padding-left: 8px;\r\n vertical-align: middle;\r\n padding-right: 24px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n/* 右击菜单项目 hover背景色 */\r\n.luckysheet-cols-menu .luckysheet-cols-menuitem:hover,\r\n.luckysheet-cols-menu .luckysheet-cols-menuitem-hover {\r\n background: #EFEFEF;\r\n}\r\n\r\n.luckysheet-cols-menu .luckysheet-cols-menuitem .luckysheet-cols-menuitem-content {\r\n position: relative;\r\n color: #333;\r\n cursor: pointer;\r\n list-style: none;\r\n margin: 0;\r\n padding: 6px 7em 6px 30px;\r\n white-space: nowrap;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n\r\n.luckysheet-filter-bycolor-submenu .button-basic,\r\n.fortune-filter-menu .button-basic {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 14px;\r\n padding: 4px 8px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .button-basic {\r\n margin: 5px 20px;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .button-default,\r\n.fortune-filter-menu .button-default {\r\n color: rgb(38, 42, 51);\r\n background-color: rgb(255, 255, 255);\r\n border: 1px solid rgb(235, 235, 235);\r\n margin-left: 10px;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .button-default:hover,\r\n.fortune-filter-menu .button-default:hover {\r\n background-color: #e6e6e6;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .button-primary,\r\n.fortune-filter-menu .button-primary {\r\n color: white;\r\n background-color: #0188FB;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .button-primary:hover,\r\n.fortune-filter-menu .button-primary:hover {\r\n background: #5391ff;\r\n}\r\n\r\n\r\n#luckysheet-filter-byvalue-select {\r\n min-height: 100px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n padding: 4px 24px;\r\n}\r\n\r\n#luckysheet-filter-byvalue-select .count,\r\n#luckysheet-pivotTableFilter-byvalue-select .count {\r\n color: gray;\r\n margin-left: 5px;\r\n}\r\n\r\n#luckysheet-filter-byvalue-select .select-item {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n/*颜色筛选 -- pan*/\r\n.luckysheet-filter-bycolor-submenu {\r\n position: absolute;\r\n min-width: 170px;\r\n font-size: 12px;\r\n padding: 5px 0;\r\n z-index: 1004;\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n background-color: #ffffff;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .title {\r\n padding: 10px;\r\n font-weight: 600;\r\n color: #333;\r\n background-color: #f4f4f4;\r\n text-align: center;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .one-color-tip {\r\n padding: 7px 30px;\r\n text-align: center;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .color-list {\r\n max-height: 128px;\r\n overflow: auto;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .item {\r\n padding: 5px 40px 5px 20px;\r\n cursor: pointer;\r\n position: relative;\r\n background-color: #ffffff;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .item:hover {\r\n background-color: #d3d3d3;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .item .color-label {\r\n display: block;\r\n width: 70px;\r\n height: 20px;\r\n border: 1px solid #d1d1d1;\r\n}\r\n\r\n.luckysheet-filter-bycolor-submenu .item input[type=\"checkbox\"] {\r\n position: absolute;\r\n right: 10px;\r\n top: 6px;\r\n}\r\n`\r\n","export const fortuneStyles = `\r\n.fortune-container {\r\n display: flex;\r\n width: 100%;\r\n height: 400px;\r\n margin: 0;\r\n padding: 0;\r\n flex-direction: column;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\", \"Microsoft YaHei\", \"WenQuanYi Micro Hei\", sans-serif;\r\n background-color: white;\r\n position: relative;\r\n}\r\n\r\n.fortune-workarea {\r\n width: 100%;\r\n}\r\n\r\n.fortune-popover-backdrop {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 1003;\r\n /* should below .fortune-context-menu */\r\n height: 100%;\r\n width: 100%;\r\n}\r\n\r\n.fortune-modal-container {\r\n background: rgba(255, 255, 255, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.fortune-stat-area {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n}\r\n\r\n.fortune-sheet-container {\r\n display: flex;\r\n flex: 1;\r\n flex-direction: column;\r\n}\r\n\r\n.fortune-col-body {\r\n display: flex;\r\n flex: 1;\r\n flex-direction: row;\r\n}\r\n\r\n.fortune-sheet-area {\r\n flex: 1;\r\n position: relative;\r\n}\r\n\r\n.fortune-sheet-canvas-placeholder,\r\n.fortune-sheet-canvas {\r\n width: 100%;\r\n height: 100%;\r\n display: block;\r\n}\r\n\r\n.fortune-sheet-canvas {\r\n position: absolute;\r\n}\r\n.fortune-sheet-overlay {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n outline-style: none;\r\n}\r\n\r\n.fortune-cell-area {\r\n border-collapse: collapse;\r\n position: relative;\r\n overflow: hidden;\r\n outline-style: none;\r\n cursor: default;\r\n}\r\n\r\n.fortune-row-body {\r\n display: flex;\r\n flex-direction: row;\r\n}\r\n\r\n.fortune-row-header {\r\n position: relative;\r\n flex-shrink: 0;\r\n outline-style: none;\r\n color: #5e5e5e;\r\n overflow: hidden;\r\n padding: 0;\r\n margin-top: -2px;\r\n padding-top: 2px;\r\n cursor: default;\r\n width: 45px;\r\n}\r\n\r\n.fortune-row-header-hover {\r\n position: absolute;\r\n z-index: 11;\r\n border: 0 none;\r\n right: 0;\r\n width: 100%;\r\n margin-top: 2px;\r\n display: none;\r\n background-color: rgba(194, 194, 194, 0.4);\r\n}\r\n\r\n.fortune-row-header-selected {\r\n position: absolute;\r\n z-index: 10;\r\n border-right: 1px solid #0188fb;\r\n right: 0;\r\n width: 100%;\r\n margin-top: 2px;\r\n display: none;\r\n background-color: rgba(76, 76, 76, 0.1);\r\n}\r\n\r\n.fortune-col-header-wrap {\r\n display: flex;\r\n flex-direction: row;\r\n}\r\n\r\n.fortune-col-header {\r\n color: #5e5e5e;\r\n overflow: hidden;\r\n padding: 0;\r\n cursor: default;\r\n flex: 1;\r\n height: 19px;\r\n outline-style: none;\r\n position: relative;\r\n}\r\n\r\n.fortune-col-header-hover {\r\n color: #5e5e5e;\r\n cursor: default;\r\n position: absolute;\r\n z-index: 11;\r\n border: 0 none;\r\n bottom: 0;\r\n height: 100%;\r\n margin-left: 0px;\r\n display: none;\r\n background-color: rgba(194, 194, 194, 0.4);\r\n}\r\n\r\n.fortune-col-header-hover .header-arrow {\r\n position: absolute;\r\n right: 6px;\r\n top: 50%;\r\n transform: translate(0%, -44%);\r\n}\r\n\r\n.fortune-col-header-selected {\r\n color: #5e5e5e;\r\n cursor: default;\r\n position: absolute;\r\n z-index: 10;\r\n border-bottom: 1px solid #0188fb;\r\n bottom: 0;\r\n height: 100%;\r\n margin-left: 0px;\r\n display: none;\r\n background-color: rgba(76, 76, 76, 0.1);\r\n}\r\n\r\n.fortune-left-top {\r\n width: 44.5px;\r\n height: 18.5px;\r\n border: solid 0 #dfdfdf;\r\n position: relative;\r\n padding-top: 0;\r\n border-width: 0 1px 1px 0;\r\n padding-left: 0;\r\n cursor: pointer;\r\n background-color: white;\r\n}\r\n\r\n.fortune-add-row-button {\r\n padding: 1px 20px;\r\n margin-right: 5px;\r\n display: inline-flex;\r\n align-items: center;\r\n margin: 0 8px;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n outline: none;\r\n cursor: pointer;\r\n color: rgb(38, 42, 51);\r\n background-color: rgb(255, 255, 255);\r\n border: 1px solid rgb(200, 200, 200);\r\n}\r\n\r\n.fortune-selection-copy {\r\n position: absolute;\r\n pointer-events: none;\r\n z-index: 18;\r\n border: none;\r\n margin: 0px 0 0 0px;\r\n}\r\n\r\n.fortune-selection-copy .fortune-copy {\r\n position: absolute;\r\n z-index: 18;\r\n background-color: transparent;\r\n}\r\n\r\n.fortune-selection-copy-hc {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n border: 2px dashed #12a5ff;\r\n z-index: 8;\r\n}\r\n\r\n.fortune-selection-highlight {\r\n position: absolute;\r\n /*pointer-events: none;*/\r\n z-index: 14;\r\n border: none;\r\n margin: 0px 0 0 0px;\r\n /* display: none; */\r\n}\r\n\r\n.fortune-cell-selected-extend {\r\n position: absolute;\r\n pointer-events: none;\r\n z-index: 16;\r\n border: 1px dashed #0188fb;\r\n margin: -1px 0 0 -1px;\r\n display: none;\r\n}\r\n\r\n.fortune-cell-selected-move {\r\n cursor: move;\r\n position: absolute;\r\n /* pointer-events: none; */\r\n z-index: 16;\r\n border: 2px solid #0188fb;\r\n margin: -1px 0 0 -1px;\r\n display: none;\r\n}\r\n\r\n\r\n.fortune-cols-change-size,\r\n.fortune-rows-change-size,\r\n.fortune-change-size-line,\r\n.fortune-cols-freeze-handle,\r\n.fortune-rows-freeze-handle,\r\n.fortune-freeze-drag-line {\r\n /*display: none;*/\r\n -webkit-user-drag: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n position: absolute;\r\n z-index: 12;\r\n}\r\n\r\n.fortune-cols-change-size {\r\n width: 5px;\r\n height: 100%;\r\n background: #0188fb;\r\n cursor: ew-resize;\r\n opacity: 0;\r\n}\r\n\r\n.fortune-rows-change-size {\r\n width: 100%;\r\n height: 5px;\r\n background: #0188fb;\r\n cursor: ns-resize;\r\n opacity: 0;\r\n}\r\n\r\n.fortune-change-size-line {\r\n border-color: #0188fb;\r\n border-style: solid;\r\n z-index: 15;\r\n cursor: ew-resize;\r\n}\r\n\r\n.fortune-cols-freeze-handle {\r\n position: absolute;\r\n left: 0;\r\n width: 3px;\r\n height: 100%;\r\n background-color: #ddd;\r\n cursor: grab;\r\n z-index: 20;\r\n}\r\n\r\n.fortune-rows-freeze-handle {\r\n position: absolute;\r\n top: 0;\r\n height: 3px;\r\n width: 100%;\r\n background-color: #ddd;\r\n cursor: grab;\r\n z-index: 20;\r\n}\r\n\r\n.fortune-freeze-drag-line {\r\n border-color: #ccc;\r\n border-style: solid;\r\n z-index: 15;\r\n cursor: ew-resize;\r\n}\r\n\r\n\r\n.fortune-selection-copy-top {\r\n left: 0;\r\n right: 0;\r\n height: 2px;\r\n top: 0;\r\n background-position: bottom;\r\n /* background-image: url(\"EwaAntH.gif\"); */\r\n}\r\n\r\n.fortune-selection-copy-right {\r\n top: 0;\r\n bottom: 0;\r\n width: 2px;\r\n right: 0;\r\n /* background-image: url(\"EwaAntV.gif\"); */\r\n}\r\n\r\n.fortune-selection-copy-bottom {\r\n left: 0;\r\n right: 0;\r\n height: 2px;\r\n bottom: 0;\r\n /* background-image: url(\"EwaAntH.gif\"); */\r\n}\r\n\r\n.fortune-selection-copy-left {\r\n top: 0;\r\n bottom: 0;\r\n width: 2px;\r\n left: 0;\r\n background-position: right;\r\n /* background-image: url(\"EwaAntV.gif\"); */\r\n}\r\n\r\n.fortune-selection-copy-hc {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n border: 2px dashed #12a5ff;\r\n z-index: 8;\r\n}\r\n\r\n\r\n.fortune-formula-functionrange-highlight .fortune-copy {\r\n background-image: none;\r\n background: #0188fb;\r\n position: absolute;\r\n z-index: 18;\r\n cursor: move;\r\n opacity: 0.9;\r\n box-sizing: content-box;\r\n /*border: 1px solid #fff;*/\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .fortune-selection-copy-top {\r\n top: -2px;\r\n border-top: 2px solid #fff;\r\n border-bottom: 2px solid #fff;\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .fortune-selection-copy-right {\r\n right: -2px;\r\n border-left: 2px solid #fff;\r\n border-right: 2px solid #fff;\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .fortune-selection-copy-bottom {\r\n bottom: -2px;\r\n border-top: 2px solid #fff;\r\n border-bottom: 2px solid #fff;\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .fortune-selection-copy-left {\r\n left: -2px;\r\n border-left: 2px solid #fff;\r\n border-right: 2px solid #fff;\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .fortune-selection-copy-hc {\r\n border: 2px solid #5e5e5e;\r\n opacity: 0.03;\r\n z-index: initial;\r\n}\r\n\r\n.fortune-selection-highlight-lt {\r\n left: -3px;\r\n top: -3px;\r\n cursor: se-resize;\r\n}\r\n\r\n.fortune-selection-highlight-rt {\r\n right: -3px;\r\n top: -3px;\r\n cursor: ne-resize;\r\n}\r\n\r\n.fortune-selection-highlight-lb {\r\n left: -3px;\r\n bottom: -3px;\r\n cursor: ne-resize;\r\n}\r\n\r\n.fortune-selection-highlight-rb {\r\n right: -3px;\r\n bottom: -3px;\r\n cursor: se-resize;\r\n}\r\n\r\n.fortune-formula-functionrange-highlight .luckysheet-highlight {\r\n position: absolute;\r\n z-index: 19;\r\n border: 1px solid #fff;\r\n background: #0188fb;\r\n width: 6px;\r\n height: 6px;\r\n}\r\n\r\n.fortune-presence-username {\r\n position: absolute;\r\n padding-left: 6px;\r\n padding-right: 6px;\r\n padding-top: 2px;\r\n padding-bottom: 2px;\r\n left: -2px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n box-sizing: content-box;\r\n color: #fff;\r\n}\r\n\r\n.fortune-presence-selection {\r\n position: absolute;\r\n border-style: solid;\r\n border-width: 1;\r\n opacity: 0.7;\r\n}\r\n\r\n\r\n.fortune-dialog {\r\n max-width: 90%;\r\n max-height: 90%;\r\n overflow: scroll;\r\n border-radius: 6px;\r\n background: white;\r\n box-shadow: rgb(0 0 0 / 10%) 5px 5px 30px;\r\n box-sizing: border-box;\r\n overflow: auto;\r\n}\r\n\r\n.fortune-dialog-box-button-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.fortune-dialog-box-content {\r\n padding: 0px 25px;\r\n}\r\n\r\n.fortune-dialog-box-button-container {\r\n padding-top: 10px;\r\n padding-bottom: 20px;\r\n}\r\n\r\n.fortune-message-box-button {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 6px 12px;\r\n margin: 0 8px;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n outline: none;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-message-box-button.button-default {\r\n color: rgb(38, 42, 51);\r\n background-color: rgb(255, 255, 255);\r\n border: 1px solid rgb(235, 235, 235);\r\n}\r\n\r\n.fortune-message-box-button.button-primary {\r\n color: white;\r\n background-color: #0188FB;\r\n}\r\n\r\n.fortune-modal-dialog-header {\r\n outline: 0;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.fortune-modal-dialog-icon-close {\r\n color: #d4d4d4;\r\n opacity: 0.3;\r\n}\r\n\r\n.fortune-modal-dialog-icon-close:hover {\r\n opacity: 0.7;\r\n}\r\n\r\n/*Find and replace popup box style*/\r\n#fortune-search-replace {\r\n position: absolute;\r\n padding: 30px 42px;\r\n z-index: 1002;\r\n}\r\n\r\n#fortune-search-replace .icon-close {\r\n position: absolute;\r\n right: 3px;\r\n top: 3px;\r\n}\r\n\r\n#fortune-search-replace .tabBox {\r\n margin-top: 10px;\r\n font-size: 0;\r\n}\r\n\r\n#fortune-search-replace .tabBox span {\r\n display: inline-block;\r\n text-align: center;\r\n width: 100px;\r\n border: 1px solid rgb(235, 235, 235);\r\n font-size: 14px;\r\n line-height: 2;\r\n}\r\n\r\n#fortune-search-replace .tabBox span.on {\r\n background-color: #8C89FE;\r\n border-color: #726EFE;\r\n color: #fff;\r\n}\r\n\r\n#fortune-search-replace .ctBox {\r\n padding: 5px 10px;\r\n border: 1px solid rgb(235, 235, 235);\r\n font-size: 14px;\r\n min-width: 500px;\r\n}\r\n\r\n#fortune-search-replace .ctBox .row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n}\r\n\r\n#fortune-search-replace .inputBox {\r\n height: 90px;\r\n position: relative;\r\n}\r\n\r\n#fortune-search-replace .inputBox .textboxs {\r\n height: 30px;\r\n line-height: 30px;\r\n}\r\n\r\n#fortune-search-replace .checkboxs {\r\n height: 90px;\r\n}\r\n\r\n#fortune-search-replace .checkboxs div {\r\n height: 30px;\r\n line-height: 30px;\r\n}\r\n\r\n#fortune-search-replace .checkboxs input[type=\"checkbox\"] {\r\n float: left;\r\n margin-top: 9px;\r\n}\r\n\r\n#fortune-search-replace .btnBox {\r\n margin-top: 10px;\r\n}\r\n\r\n#fortune-search-replace .btnBox .button-default {\r\n margin-right: 8px;\r\n margin-left: 0px;\r\n}\r\n\r\n#fortune-search-replace .close-button {\r\n margin-left: 0px;\r\n margin-top: 10px;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox {\r\n height: 210px;\r\n border: 1px solid #d4d4d4;\r\n margin-top: 10px;\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxTitle {\r\n width: 100%;\r\n height: 30px;\r\n line-height: 29px;\r\n padding: 0 5px;\r\n background-color: #fff;\r\n border-bottom: 1px solid #d4d4d4;\r\n box-sizing: border-box;\r\n position: sticky;\r\n left: 0;\r\n top: 0;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxTitle span {\r\n display: inline-block;\r\n text-align: center;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxTitle span:nth-of-type(1) {\r\n width: 25%;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxTitle span:nth-of-type(2) {\r\n width: 25%;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxTitle span:nth-of-type(3) {\r\n width: 50%;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem {\r\n height: 30px;\r\n line-height: 29px;\r\n border-bottom: 1px solid #d4d4d4;\r\n padding: 0 5px;\r\n box-sizing: border-box;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem.on {\r\n background-color: #8C89FE;\r\n color: #fff;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem span {\r\n display: block;\r\n text-align: center;\r\n float: left;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem span:nth-of-type(1) {\r\n width: 25%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem span:nth-of-type(2) {\r\n width: 25%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n#fortune-search-replace #searchAllbox .boxMain .boxItem span:nth-of-type(3) {\r\n width: 50%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n.fortune-link-modify-modal {\r\n position: absolute;\r\n overflow: hidden;\r\n background-color: #fff;\r\n z-index: 300;\r\n padding: 6px 20px 10px 20px;\r\n box-shadow: 0 2px 6px 0 rgb(0 0 0 / 16%);\r\n border: solid 0.5px #e5e5e5;\r\n border-radius: 6px;\r\n}\r\n\r\n.fortune-link-modify-modal.link-toolbar {\r\n display: flex;\r\n flex-direction: row;\r\n padding: 2px 8px 2px 16px;\r\n align-items: center;\r\n}\r\n\r\n\r\n.fortune-link-modify-modal .link-content {\r\n margin-right: 6px;\r\n}\r\n\r\n.fortune-link-modify-modal .link-content:hover {\r\n color: #2674fb;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-link-modify-modal .divider {\r\n width: 1px;\r\n height: 16px;\r\n margin: 0px 6px ;\r\n background-color: #e0e0e0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.fortune-link-modify-modal .fortune-toolbar-button {\r\n padding: 6px;\r\n}\r\n\r\n.fortune-link-modify-modal .fortune-toolbar-button:hover {\r\n background-color: rgba(0, 0, 0, 0.06);\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-link-modify-modal.range-selection-modal {\r\n width: 380px;\r\n padding: 22px;\r\n -webkit-user-select: auto;\r\n -moz-user-select: auto;\r\n -ms-user-select: auto;\r\n user-select: auto;\r\n background-color: #fff;\r\n}\r\n\r\n.fortune-link-modify-line {\r\n padding-top: 10px;\r\n}\r\n\r\n.fortune-link-modify-title {\r\n font-size: 12px;\r\n display: inline-block;\r\n height: 16px;\r\n width: 74px;\r\n line-height: 16px;\r\n padding: 7px 0;\r\n color: #333333;\r\n margin-right: 6px;\r\n}\r\n\r\n.fortune-link-modify-input,\r\n.fortune-link-modify-select {\r\n width: 232px;\r\n box-sizing: border-box;\r\n height: 26px;\r\n border-radius: 5px;\r\n border: 1px solid #d9d9d9;\r\n font-size: 12px;\r\n padding: 1px 8px;\r\n outline: none;\r\n -webkit-user-select: auto;\r\n -moz-user-select: auto;\r\n -ms-user-select: auto;\r\n user-select: auto;\r\n}\r\n\r\n.fortune-link-modify-input:focus,\r\n.fortune-link-modify-modal .range-selection-input:focus {\r\n border-color: #4d90fe;\r\n}\r\n\r\n.fortune-link-modify-input.error-input,\r\n.fortune-link-modify-modal .range-selection-input.error-input {\r\n border: 1px solid #EF4E2F !important;\r\n}\r\n\r\n.fortune-link-modify-cell-selector {\r\n width: 20px;\r\n right: 24px;\r\n padding: 4px;\r\n position: absolute;\r\n display: inline-block;\r\n border: none;\r\n cursor: pointer;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n}\r\n\r\n.fortune-link-modify-modal .modal-title {\r\n font-weight: 500;\r\n font-size: 16px;\r\n color: rgba(0, 0, 0, .88);\r\n margin-bottom: 12px;\r\n line-height: 24px;\r\n}\r\n\r\n.fortune-link-modify-modal .range-selection-input {\r\n display: block;\r\n outline: none;\r\n font-size: 14px;\r\n height: 32px;\r\n width: 100%;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n padding: 7px 11px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n margin: 0;\r\n}\r\n\r\n.fortune-link-modify-modal .modal-icon-close {\r\n position: absolute;\r\n right: 22px;\r\n top: 22px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-link-modify-modal .validation-input-tip {\r\n height: 17px;\r\n font-size: 12px;\r\n color: #EF4E2F;\r\n margin: 3px 0px ;\r\n}\r\n\r\n.fortune-link-modify-modal .button-group {\r\n display: flex;\r\n}\r\n\r\n.fortune-link-modify-modal .modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n padding: 0px 0px 5px 0px;\r\n}\r\n\r\n.fortune-link-modify-modal.range-selection-modal .modal-footer {\r\n padding: 0px;\r\n}\r\n\r\n.fortune-link-modify-modal .button-basic {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 14px;\r\n height: 32px;\r\n width: 88px;\r\n padding: 0;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-link-modify-modal .button-default {\r\n color: rgb(38, 42, 51);\r\n background-color: rgb(255, 255, 255);\r\n border: 1px solid rgb(235, 235, 235);\r\n}\r\n\r\n.fortune-link-modify-modal .button-primary {\r\n color: white;\r\n background-color: #0188FB;\r\n margin-left: 14px;\r\n}\r\n#fortune-data-verification {\r\n min-width: 500px;\r\n padding: 10px 0px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n#fortune-data-verification .title {\r\n font-size: 16px;\r\n}\r\n\r\n#fortune-data-verification .box {\r\n font-size: 14px;\r\n}\r\n\r\n#fortune-data-verification .box .box-item {\r\n padding: 10px;\r\n border-bottom: 1px solid #E1E4E8;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .box-item-title {\r\n font-size: 14px;\r\n font-weight: 600;\r\n margin-bottom: 10px;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .data-verification-range {\r\n width: 100%;\r\n height: 30px;\r\n border: 1px solid #d4d4d4;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .show-box-item {\r\n margin-top: 6px;\r\n font-size: 12px;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .show-box-item .check-box {\r\n height: 30px;\r\n line-height: 30px;\r\n margin-bottom: 10px;\r\n\r\n}\r\n\r\n#fortune-data-verification .box .box-item .show-box-item .check-box input {\r\n height: 30px;\r\n padding: 0 10px;\r\n border: 1px solid #d4d4d4;\r\n box-sizing: border-box;\r\n}\r\n\r\n#fortune-data-verification .input-box input {\r\n height: 30px;\r\n padding: 4px 10px 4px 10px;\r\n border: 1px solid #d4d4d4;\r\n box-sizing: border-box;\r\n margin-top: 6px;\r\n}\r\n\r\n#fortune-data-verification .input-box span {\r\n margin: 0px 16px;\r\n}\r\n\r\n.data-verification-range .formulaInputFocus {\r\n width: calc(100% - 30px);\r\n height: 30px;\r\n padding: 0 10px px;\r\n float: left;\r\n border: none;\r\n outline-style: none;\r\n box-sizing: border-box;\r\n}\r\n\r\n.data-verification-range .icon {\r\n float: right;\r\n margin-top: 4px;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .data-verification-type-select {\r\n width: 100%;\r\n height: 30px;\r\n border-color: #d4d4d4;\r\n outline-style: none;\r\n}\r\n\r\n\r\n#fortune-data-verification .box .box-item .check {\r\n font-size: 12px;\r\n line-height: 24px;\r\n}\r\n\r\n#fortune-data-verification .box .box-item .check input {\r\n vertical-align: text-top;\r\n}\r\n\r\n#fortune-data-verification .button-basic {\r\n display: inline-block;\r\n margin-bottom: 0;\r\n font-weight: 400;\r\n text-align: center;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n padding: 4px 8px;\r\n font-size: 14px;\r\n line-height: 1.42857143;\r\n border-radius: 2px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n margin-top: 10px;\r\n}\r\n\r\n#fortune-data-verification .button-primary {\r\n background: #0188fb;\r\n border: 1px solid #0188fb;\r\n color: #fff;\r\n margin-right: 10px;\r\n}\r\n\r\n#fortune-data-verification .button-close {\r\n color: #333;\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n margin-right: 10px;\r\n}\r\n\r\n\r\n.fortune-toolbar {\r\n display: flex;\r\n flex-direction: row;\r\n background: #fafafc;\r\n position: relative;\r\n padding: 5px 0px 3px 15px;\r\n border-bottom: 1px solid #d4d4d4;\r\n white-space: nowrap;\r\n align-items: center;\r\n}\r\n\r\n.fortune-toolbar-divider {\r\n width: 1px;\r\n height: 20px;\r\n margin: 0 6px;\r\n background-color: #e0e0e0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.fortune-toolbar-menu-line {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n position: relative;\r\n}\r\n\r\n.fortune-toolbar-menu-divider {\r\n width: \"100%\";\r\n height: 1px;\r\n margin: 2px 6px;\r\n background-color: #e0e0e0;\r\n}\r\n\r\n.fortune-toolbar-button,\r\n.fortune-toolbar-combo {\r\n -webkit-border-radius: 4px;\r\n -moz-border-radius: 4px;\r\n border-radius: 4px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n background: 0;\r\n outline: none;\r\n padding: 0;\r\n list-style: none;\r\n text-decoration: none;\r\n display: flex;\r\n align-items: center;\r\n padding: 2px;\r\n margin: 2px 4px;\r\n}\r\n\r\n.fortune-toolbar-combo-button,\r\n.fortune-toolbar-combo-arrow {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.fortune-toolbar-button:hover,\r\n.fortune-toolbar-combo:hover {\r\n background-color: rgba(0, 0, 0, 0.06);\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-toolbar-combo-arrow:hover {\r\n background-color: rgba(0, 0, 0, 0.06);\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-toolbar-button:active,\r\n.fortune-toolbar-combo:active {\r\n background-color: rgba(0, 0, 0, 0.12);\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-toobar-combo-container {\r\n position: relative;\r\n}\r\n\r\n.fortune-toolbar-combo-popup {\r\n position: absolute;\r\n white-space: nowrap;\r\n top: 32px;\r\n left: 0;\r\n z-index: 1004;\r\n}\r\n\r\n.fortune-toolbar-select::-webkit-scrollbar {\r\n display: none ;\r\n}\r\n\r\n.fortune-toolbar-select,\r\n.fortune-toolbar-color-picker {\r\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.2);\r\n padding: 10px;\r\n border-radius: 6px;\r\n background: white;\r\n}\r\n\r\n.fortune-toolbar-select {\r\n padding-left: 0;\r\n padding-right: 0;\r\n overflow: auto;\r\n max-height: 75vh;\r\n}\r\n\r\n.fortune-toolbar-combo-button {\r\n font-size: 12px;\r\n}\r\n\r\n.fortune-toolbar-select-option {\r\n font-size: 12px;\r\n min-width: 60px;\r\n padding: 8px 12px;\r\n cursor: pointer;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.fortune-toolbar-select-option:hover {\r\n background: #efefef;\r\n}\r\n\r\n.fortune-toolbar-select::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n.fortune-toolbar-color-picker-row {\r\n display: flex;\r\n flex-direction: row;\r\n}\r\n\r\n.fortune-toolbar-combo-text {\r\n margin: 0 4px;\r\n}\r\n\r\n.fortune-toolbar-color-picker-item {\r\n width: 16px;\r\n height: 16px;\r\n margin: 1px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-tooltip {\r\n visibility: hidden;\r\n background-color: #666;\r\n color: #fff;\r\n text-align: center;\r\n border-radius: 2px;\r\n padding: 6px;\r\n font-size: 12px;\r\n position: absolute;\r\n z-index: 25; /* higher than toolbar tips */\r\n top: 40px;\r\n white-space: nowrap;\r\n}\r\n\r\n.fortune-toolbar-button:hover .fortune-tooltip,\r\n.fortune-toolbar-combo:hover .fortune-tooltip {\r\n visibility: visible;\r\n}\r\n\r\n.fortune-toolbar-more-container {\r\n position: absolute;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n align-self: flex-end;\r\n margin-right: 40px;\r\n top: 40px;\r\n max-width: 348px;\r\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.2);\r\n background: white;\r\n flex-wrap: wrap;\r\n z-index: 1002;\r\n}\r\n\r\n.fortune-toolbar-subtext {\r\n -webkit-transition: all 0.218s;\r\n -moz-transition: all 0.218s;\r\n -o-transition: all 0.218s;\r\n transition: all 0.218s;\r\n font-size: 12px;\r\n left: auto;\r\n padding-top: 1px;\r\n padding-left: 24px;\r\n text-align: right;\r\n opacity: .5;\r\n filter: alpha(opacity=50);\r\n color: #000;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n font-family: Arial;\r\n line-height: 100%;\r\n}\r\n\r\n\r\n#fortune-custom-color {\r\n min-width: 164px;\r\n background: rgb(240, 240, 240);\r\n border-radius: 6px;\r\n box-shadow: 0 2px 4px rgb(0 0 0 / 20%);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n font-size: 12px;\r\n}\r\n\r\n#fortune-custom-color .color-reset {\r\n position: relative;\r\n color: #333;\r\n cursor: pointer;\r\n list-style: none;\r\n padding: 10px;\r\n white-space: nowrap;\r\n padding-left: 8px;\r\n vertical-align: middle;\r\n padding-right: 24px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n border-radius: 6px;\r\n background: white;\r\n}\r\n\r\n#fortune-custom-color .color-reset:hover {\r\n background: rgb(230, 230, 230);\r\n}\r\n\r\n#fortune-custom-color .custom-color {\r\n position: relative;\r\n margin: auto;\r\n padding: 10px;\r\n border-radius: 6px;\r\n background: white;\r\n display: flex;\r\n align-items: center;\r\n margin: 1px 0px;\r\n display: flex;\r\n justify-content: space-around;\r\n}\r\n\r\n\r\n.fortune-border-select-menu{\r\n position: absolute;\r\n bottom: 0px;\r\n}\r\n\r\n.fortune-border-color-preview {\r\n height: 3px;\r\n}\r\n\r\n.fortune-border-select-option {\r\n font-size: 12px;\r\n height: 24px;\r\n line-height: 24px;\r\n min-width: 60px;\r\n padding: 8px 12px;\r\n}\r\n\r\n.fortune-border-select-option:hover {\r\n background: #efefef;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-border-style-preview{\r\n height: 3px;\r\n overflow: hidden;\r\n}\r\n\r\n.fortune-border-style-picker-menu{\r\n padding: 0px 10px;\r\n}\r\n\r\n.fortune-border-style-picker-menu:hover{\r\n background: #efefef;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n#fortune-split-column {\r\n /* position: absolute;\r\n padding: 30px 42px;\r\n z-index: 1002; */\r\n min-width: 500px;\r\n}\r\n#fortune-split-column label {\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none\r\n}\r\n#fortune-split-column .title {\r\n font-size: 16px;\r\n}\r\n#fortune-split-column .splitDelimiters {\r\n margin-top: 10px;\r\n}\r\n#fortune-split-column .splitSymbols {\r\n position: relative;\r\n border: 1px solid #dfdfdf;\r\n padding: 5px;\r\n margin: 5px 0px;\r\n}\r\n#fortune-split-column .splitSymbol {\r\n font-size: 14px;\r\n}\r\n#fortune-split-column .splitSimple {\r\n position: absolute;\r\n top: 114px;\r\n left: 0px;\r\n}\r\n#fortune-split-column #otherValue {\r\n margin-left: 5px;\r\n width: 50px;\r\n padding: 0 5px;\r\n}\r\n#fortune-split-column .splitDataPreview {\r\n font-size: 14px;\r\n margin-top: 26px;\r\n}\r\n#fortune-split-column .splitColumnData {\r\n border: 1px solid #dfdfdf;\r\n padding: 5px;\r\n margin: 5px 0px;\r\n height: 100px;\r\n overflow-y: scroll;\r\n}\r\n#fortune-split-column .button-basic {\r\n display: inline-block;\r\n margin-bottom: 0;\r\n font-weight: 400;\r\n text-align: center;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n padding: 4px 8px;\r\n font-size: 14px;\r\n line-height: 1.42857143;\r\n border-radius: 2px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n#fortune-split-column .button-primary {\r\n background: #0188fb;\r\n border: 1px solid #0188fb;\r\n color: #fff;\r\n margin-right: 10px;\r\n}\r\n#fortune-split-column .button-close {\r\n color: #333;\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n}\r\n#fortune-split-column table {\r\n border-collapse: collapse;\r\n}\r\n#fortune-split-column tr {\r\n display: table-row;\r\n vertical-align: inherit;\r\n border-color: inherit;\r\n}\r\n#fortune-split-column td {\r\n border: 1px solid #333;\r\n display: table-cell;\r\n vertical-align: inherit;\r\n}\r\n\r\n\r\n#fortune-location-condition {\r\n min-width: 500px;\r\n}\r\n#fortune-location-condition .title {\r\n background-color: #fff;\r\n color: #000;\r\n cursor: default;\r\n font-size: 16px;\r\n font-weight: normal;\r\n line-height: 48px;\r\n}\r\n#fortune-location-condition .listbox {\r\n border: 1px solid #dfdfdf;\r\n padding: 10px;\r\n font-size: 14px;\r\n color: #000;\r\n}\r\n#fortune-location-condition .listbox .listItem {\r\n padding: 5px 0;\r\n}\r\n#fortune-location-condition .listbox .listItem input[type=\"radio\"] {\r\n float: left;\r\n margin-top: 5px;\r\n}\r\n#fortune-location-condition .listItem {\r\n padding: 5px 0;\r\n}\r\n#fortune-location-condition .listItem .subItem {\r\n height: 30px;\r\n padding: 0 10px;\r\n display: block;\r\n}\r\n#fortune-location-condition input[type=\"radio\"] {\r\n float: left;\r\n margin-top: 3px;\r\n}\r\n#fortune-location-condition .listbox .listItem .subbox {\r\n height: 30px;\r\n padding: 0 10px;\r\n}\r\n#fortune-location-condition .listbox .listItem .subbox .subItem {\r\n float: left;\r\n margin-right: 5px;\r\n}\r\n#fortune-location-condition .button-basic {\r\n display: inline-block;\r\n margin-bottom: 0;\r\n font-weight: 400;\r\n text-align: center;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n padding: 4px 8px;\r\n font-size: 14px;\r\n line-height: 1.42857143;\r\n border-radius: 2px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n margin-top: 10px;\r\n}\r\n#fortune-location-condition .button-primary {\r\n background: #0188fb;\r\n border: 1px solid #0188fb;\r\n color: #fff;\r\n margin-right: 10px;\r\n}\r\n#fortune-location-condition .button-close {\r\n color: #333;\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n}\r\n \r\n.fortune-fx-editor {\r\n display: flex;\r\n flex-direction: row;\r\n height: 28px;\r\n border-bottom: 1px solid #d4d4d4;\r\n}\r\n\r\n.fortune-fx-icon {\r\n display: flex;\r\n align-items: center;\r\n margin: 0 12px;\r\n}\r\n\r\n.fortune-name-box-container {\r\n width: 99px;\r\n border-right: 1px solid #d4d4d4;\r\n font-size: 14px;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.fortune-name-box {\r\n width: 100%;\r\n text-align: center;\r\n margin: 0;\r\n outline: none;\r\n cursor: text;\r\n /* -webkit-user-modify: read-write-plaintext-only; */\r\n white-space: nowrap;\r\n overflow: hidden;\r\n -webkit-transform: translateZ(0);\r\n background-color: white;\r\n word-wrap: break-word;\r\n -webkit-nbsp-mode: space;\r\n -webkit-line-break: after-white-space;\r\n}\r\n\r\n.fortune-fx-input-container {\r\n padding-left: 10px;\r\n overflow: visible;\r\n padding: 0;\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n border-left: 1px solid #e5e5e5;\r\n}\r\n\r\n.fortune-fx-input {\r\n flex: 1;\r\n height: 100%;\r\n overflow-y: scroll;\r\n padding-left: 2px;\r\n font-size: 14px;\r\n line-height: 14px;\r\n margin: 0;\r\n outline: none;\r\n cursor: text;\r\n white-space: pre-wrap;\r\n word-wrap: break-word;\r\n -webkit-transform: translateZ(0);\r\n -webkit-nbsp-mode: space;\r\n -webkit-line-break: after-white-space;\r\n background-color: white;\r\n padding-top: 7px;\r\n box-sizing: border-box;\r\n color:black;\r\n text-align: left;\r\n}\r\n.fortune-fx-input[contenteditable=\"true\"] {\r\n -webkit-user-modify: read-write-plaintext-only;\r\n}\r\n \r\n.fortune-sheettab-container {\r\n padding: 0px 0px;\r\n margin-left: 0px;\r\n position: relative;\r\n max-width: 54%;\r\n vertical-align: bottom;\r\n display: inline-block;\r\n}\r\n\r\n.fortune-sheettab-container .boundary {\r\n position: absolute;\r\n top: 0;\r\n width: 6px;\r\n height: 100%;\r\n z-index: 1;\r\n background: rgb(255, 255, 255);\r\n}\r\n\r\n.fortune-sheettab-container .boundary-left {\r\n left: 0;\r\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\r\n --tw-gradient-from: #4445;\r\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, #8880);\r\n}\r\n\r\n.fortune-sheettab-container .boundary-right {\r\n right: 0;\r\n background-image: linear-gradient(to left, var(--tw-gradient-stops));\r\n --tw-gradient-from: #4445;\r\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, #8880);\r\n}\r\n\r\n.fortune-sheettab-container .fortune-sheettab-container-c {\r\n padding: 0px 0px;\r\n margin-left: 0px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n position: relative;\r\n max-width: 100%;\r\n vertical-align: bottom;\r\n display: inline-block;\r\n}\r\n\r\n\r\n.fortune-sheettab-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 29px;\r\n width: 29px;\r\n}\r\n\r\n.fortune-sheettab-button:hover {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 29px;\r\n width: 29px;\r\n background-color: #efefef;\r\n}\r\n\r\n\r\n.fortune-sheettab-scroll {\r\n display: flex;\r\n align-items: center;\r\n padding: 0 5px;\r\n height: 29px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-sheettab-scroll:hover {\r\n background-color: #e0e0e0;\r\n}\r\n\r\n.fortune-sheettab-placeholder {\r\n display: inline-block;\r\n width: 30px;\r\n height: 29px;\r\n line-height: 29px;\r\n vertical-align: middle;\r\n}\r\n\r\n\r\n.fortune-sheet-area-right {\r\n display: flex !important;\r\n}\r\n.fortune-zoom-container {\r\n white-space: nowrap;\r\n overflow: visible;\r\n display: flex;\r\n align-items: center;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.fortune-zoom-button {\r\n display: flex;\r\n cursor: pointer;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.fortune-zoom-button:hover {\r\n background: #efefef;\r\n}\r\n\r\n.fortune-zoom-ratio {\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n width: 48px;\r\n color: #1e1e1f;\r\n font-size: 12px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-zoom-ratio-current {\r\n width: 100%;\r\n}\r\n\r\n.fortune-zoom-ratio-item:hover {\r\n background: #efefef;\r\n}\r\n\r\n.fortune-zoom-ratio-menu {\r\n position: absolute;\r\n bottom: 30px;\r\n left: 0;\r\n line-height: 24px;\r\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.2);\r\n padding: 10px 0px 10px 0px;\r\n border-radius: 6px;\r\n background: white;\r\n z-index: 1004;\r\n}\r\n\r\n.fortune-zoom-ratio-text {\r\n padding: 0px 10px 0px 10px;\r\n}\r\n\r\n.fortune-context-menu {\r\n max-height: 100%;\r\n overflow-y: auto;\r\n border-radius: 4px;\r\n box-shadow: 2px 2px 20px rgba(0, 0, 0, 0.15);\r\n transition: opacity 0.218s;\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n border: 1px solid rgba(0, 0, 0, 0.2);\r\n cursor: default;\r\n font-size: 13px;\r\n margin: 0;\r\n outline: none;\r\n padding: 6px 0;\r\n position: absolute;\r\n z-index: 1004;\r\n box-sizing: border-box;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.fortune-context-menu input.luckysheet-mousedown-cancel {\r\n width: 35px;\r\n text-align: center;\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n}\r\n\r\n.fortune-context-menu-divider {\r\n width: \"100%\";\r\n height: 1px;\r\n margin: 4px 0;\r\n background-color: #e0e0e0;\r\n}\r\n\r\n\r\n.fortune-filter-menu .luckysheet-cols-menuitem {\r\n padding: 0px;\r\n}\r\n\r\n.fortune-filter-menu .luckysheet-cols-menuitem .luckysheet-cols-menuitem-content {\r\n padding: 7px 24px;\r\n}\r\n\r\n.fortune-menuitem-row {\r\n display: flex;\r\n padding: 7px 24px;\r\n white-space: pre;\r\n align-items: center;\r\n}\r\n\r\n.fortune-byvalue-btn {\r\n cursor: pointer;\r\n color: blue;\r\n text-decoration: underline;\r\n}\r\n\r\n.fortune-filter-menu .button-danger {\r\n color: white;\r\n background-color: #d9534f;\r\n margin-left: 10px;\r\n}\r\n\r\n.fortune-filter-menu .button-danger:hover {\r\n background-color: #c9302c;\r\n}\r\n\r\n\r\n.fortune-sort-title {\r\n background-color: #fff;\r\n color: #000;\r\n cursor: default;\r\n font-size: 16px;\r\n font-weight: 400;\r\n line-height: 24px;\r\n margin: 0 0 16px;\r\n}\r\n\r\n.fortune-sort-modal > div {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.fortune-sort-tablec td {\r\n padding: 5px;\r\n white-space: nowrap;\r\n}\r\n\r\n.fortune-sort-button {\r\n margin-top: 10px;\r\n margin-bottom: 25px;\r\n}\r\n\r\n#fortune-change-color {\r\n min-width: 164px;\r\n height: 252px;\r\n background: rgb(240, 240, 240);\r\n position: absolute;\r\n bottom: -110px;\r\n left: 197px;\r\n border-radius: 6px;\r\n box-shadow: 0 2px 4px rgb(0 0 0 / 20%);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n}\r\n\r\n#fortune-change-color .color-reset {\r\n position: relative;\r\n color: #333;\r\n cursor: pointer;\r\n list-style: none;\r\n padding: 10px;\r\n white-space: nowrap;\r\n padding-left: 8px;\r\n vertical-align: middle;\r\n padding-right: 24px;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n border-radius: 6px;\r\n background: white;\r\n}\r\n\r\n#fortune-change-color .color-reset:hover {\r\n background: rgb(230, 230, 230);\r\n}\r\n\r\n#fortune-change-color .custom-color {\r\n position: relative;\r\n margin: auto;\r\n padding: 10px;\r\n border-radius: 6px;\r\n background: white;\r\n display: flex;\r\n align-items: center;\r\n margin: 1px 0px;\r\n display: flex;\r\n justify-content: space-around;\r\n}\r\n\r\n\r\n.fortune-sheet-list {\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n min-width: 120px;\r\n position: absolute;\r\n z-index: 10002;\r\n bottom: 53px;\r\n margin-left: 72px;\r\n max-height: 60%;\r\n}\r\n\r\n.fortune-sheet-list-item {\r\n height: 30px;\r\n line-height: 30px;\r\n width: 100%;\r\n margin-right: 46px;\r\n cursor: pointer;\r\n}\r\n\r\n.fortune-sheet-list-item-name {\r\n margin-right: 15px;\r\n position: relative;\r\n}\r\n\r\n.fortune-sheet-list-item-name .luckysheet-sheets-list-item-color {\r\n width: 6%;\r\n height: 100%;\r\n position: absolute;\r\n bottom: 0;\r\n left: -6px;\r\n}\r\n\r\n.fortune-sheet-list :hover {\r\n background-color: #EFEFEF;\r\n}\r\n\r\n.fortune-sheet-hidden-button {\r\n margin-right: 15px;\r\n display: inline-flex;\r\n position: absolute;\r\n right: 0;\r\n justify-content: flex-end;\r\n}\r\n\r\n.fortune-sheet-hidden-button :hover {\r\n background-color: #D0D0D0;\r\n}\r\n\r\n.fortune-sheet-selected-check-sapce {\r\n width: 20px;\r\n display: inline-block;\r\n margin-left: 15px;\r\n}\r\n\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nexport const videoStyles = css`\r\n .sapp-wrapper {\r\n width: 100%;\r\n position: relative;\r\n padding-top: calc((9 / 16) * 100%);\r\n\r\n iframe {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n\r\n .sapp-content {\r\n width: 100%;\r\n height: 100%;\r\n position: absolute;\r\n inset: 0;\r\n }\r\n .sapp-wrapper-video {\r\n display: inline-block;\r\n vertical-align: top;\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\nimport { componentStyles } from '../components/styles'\r\nimport { colors } from './base/colors'\r\nimport { resizable } from './legacy/resizable'\r\nimport { typography } from './base/typography'\r\nimport { utilities } from './base/utils'\r\nimport { editorWrapStyle } from './legacy/editor-wrap'\r\nimport { sappStyle } from './legacy/sapp-custom'\r\nimport { tailwindStyle } from './legacy/tailwind'\r\nimport { reactFlowStyle } from './react-flow-styled'\r\nimport { tooltipStyle } from './legacy/tooltip'\r\nimport { luckySheetStyle } from './legacy/lucky-sheet'\r\nimport { fortuneStyles } from './legacy/fortune'\r\nimport { videoStyles } from '@components/common/video/video.styles'\r\n\r\nexport const styles = css`\r\n /* Legacy styles */\r\n ${sappStyle}\r\n ${tailwindStyle}\r\n ${editorWrapStyle} \r\n ${resizable}\r\n ${tooltipStyle}\r\n\r\n /* Base styles */\r\n ${colors}\r\n ${typography}\r\n ${utilities}\r\n\r\n /* Components */\r\n ${componentStyles}\r\n ${reactFlowStyle}\r\n\r\n /* 3rd party */\r\n ${luckySheetStyle}\r\n ${fortuneStyles}\r\n ${videoStyles}\r\n`\r\n","// styles/global-styles.ts\r\nimport { createGlobalStyle } from 'styled-components'\r\nimport { styles } from './index'\r\n\r\nexport const GlobalStyles = createGlobalStyle`${styles}`\r\n","/* eslint-disable camelcase */\r\nimport React from 'react'\r\nimport root from 'react-shadow/styled-components'\r\n\r\nimport QuizComponent from './components/quiz-component'\r\nimport { ExplainationProvider } from 'contexts'\r\nimport QuizComponentV2 from '@components/quiz-component-v2'\r\nimport { GlobalStyles } from './styles/global-styles'\r\nimport { styles } from './styles'\r\nimport {\r\n MultipleQuestionsData,\r\n QuestionFilterType\r\n} from '@components/list-question/types'\r\n\r\nexport type { MultipleQuestionsData, QuestionFilterType } from '@components/list-question/types'\r\n\r\ninterface Props {\r\n activeQuestion: any\r\n getActiveQuestion: (id: string) => Promise<void>\r\n document_id: string\r\n handleDownload: (param: any) => void\r\n topic?: any\r\n renderPdf?: ({\r\n url,\r\n fileName\r\n }: {\r\n url: string\r\n fileName?: string | undefined\r\n }) => React.ReactNode\r\n questions?: MultipleQuestionsData\r\n questionFilter?: QuestionFilterType\r\n onQuestionFilterChange?: (value: QuestionFilterType) => void\r\n}\r\n\r\nexport const ExplanationPackage = ({\r\n activeQuestion,\r\n getActiveQuestion,\r\n document_id,\r\n renderPdf\r\n}: Props) => {\r\n const GlobalStylesFixed = GlobalStyles as unknown as React.ComponentType\r\n\r\n return (\r\n <root.div className='quote' mode='closed'>\r\n <GlobalStylesFixed />\r\n <style>{styles}</style>\r\n <ExplainationProvider>\r\n <QuizComponent\r\n getActiveQuestion={getActiveQuestion}\r\n activeQuestion={activeQuestion}\r\n document_id={document_id}\r\n renderPdf={renderPdf}\r\n />\r\n </ExplainationProvider>\r\n </root.div>\r\n )\r\n}\r\nexport const ExplanationPackageV2 = ({\r\n activeQuestion,\r\n getActiveQuestion,\r\n document_id,\r\n renderPdf,\r\n questions,\r\n questionFilter,\r\n onQuestionFilterChange\r\n}: Props) => {\r\n const GlobalStylesFixed = GlobalStyles as unknown as React.ComponentType\r\n\r\n return (\r\n <root.div className='quote' mode='closed'>\r\n <GlobalStylesFixed />\r\n <style>{styles}</style>\r\n <ExplainationProvider>\r\n <QuizComponentV2\r\n getActiveQuestion={getActiveQuestion}\r\n activeQuestion={activeQuestion}\r\n document_id={document_id}\r\n renderPdf={renderPdf}\r\n questions={questions}\r\n questionFilter={questionFilter}\r\n onQuestionFilterChange={onQuestionFilterChange}\r\n />\r\n </ExplainationProvider>\r\n </root.div>\r\n )\r\n}\r\n"],"names":["Divider","_ref","className","rest","_objectWithoutPropertiesLoose","_excluded","React","createElement","_extends","clsx","ResizeIcon","props","width","height","viewBox","fill","xmlns","id","strokeWidth","strokeLinecap","strokeLinejoin","d","EXPLANATION_TITLE","SOLUTION_TITLE","video_url","process","env","NEXT_PUBLIC_VIDEO_URL","GRADING_METHOD","MANUAL","AUTO","QUESTION_LEVELS","QUESTION_ASSIGNMENT_TYPE","QUESTION_RESPONSE_OPTION","ANSWER_CORRECT_TYPE","PageLink","DASHBOARD","COURSES","COURSE_NEW","TOPICS","CASE_STUDY","TEACHER","AUTH_LOGIN","AUTH_FORGOT_PASSWORD","AUTH_FORGOT_PASSWORD_RECOVER","AUTH_CHANGE_PASSWORD","AUTH_CHANGE_PASSWORD_SUCCESS","NOTIFICATION","ENTRANCE_TEST","PUBLIC_PATHS","_PUBLIC_PATHS","QUESTION_TYPES","DISPLAY_TYPE","RESPONSE_OPTION","EXHIBIT_TEXT_REPLACE","PROGRAM","useMousePosition","_useState","useState","x","y","mousePosition","setMousePosition","useEffect","updateMousePosition","ev","clientX","clientY","window","addEventListener","removeEventListener","runHighlight","handleSaveHighLight","allowHighLight","elementID","options","domEle","document","getElementById","doHighlight","serializeHighlights","replaceTextAlignCenterToWebKitCenter","htmlString","replace","getUppercaseByNumber","num","result","remainder","String","fromCharCode","Math","floor","convertMathToImage","element","com","Promise","resolve","viewer","_com","_com$wiris","wiris","_com$wiris$js","js","JsPluginViewer","_temp2","_temp","_catch","parseElement","then","e","reject","replaceWhiteSpacePreWrapToNormal","parseUserInputTSV","input","_input$split$filter","split","filter","line","trim","map","cell","value","_value","generateSheetId","Date","now","random","toString","substr","deepCloneForWorkbook","obj","JSON","parse","stringify","PREFIX","indexCharacters","editorArea","index","walk","node","nodeType","Node","TEXT_NODE","_node$parentNode","characters","nodeValue","fragment","createDocumentFragment","forEach","char","span","textContent","setAttribute","appendChild","parentNode","replaceChild","_i","_Array$from","Array","from","childNodes","length","_child$id","child","startsWith","content","restoreHighlights","listGrades","parentElement","item","begin","undefined","end","grade","comment","isNull","_loop","querySelector","i","classList","remove","cls","contains","add","restoreHighlightsV2","idx","lastSpan","_loop2","existingTooltip","formatGrade","tooltip","Number","isInteger","gradeStr","decimalIndex","indexOf","substring","clearMarker","ref","current","clearElement","getElementsByTagName","markColor","foundElement","_iterator","_createForOfIteratorHelperLoose","_step","done","_element$id","includes","elementId","scrollIntoView","behavior","block","CloseIcon","_ref$className","_ref$size","size","SIZES","small","medium","lager","extra","COLORS","primary","info","success","secondary","danger","warning","light","dark","white","outline","text","quizActivity","PADDINGS","none","COLOR_LOADING","SappButton","title","onClick","link","_ref$full","full","_ref$disabled","disabled","_ref$loading","loading","type","_ref$color","color","isUnderLine","_ref$isPadding","isPadding","_ref$childClass","childClass","fullWidthClass","paddingClass","componentClass","href","ButtonCancelSubmit","submit","cancel","_ref$colorCancel","colorCancel","_ref$showOkButton","showOkButton","_ref$showCancelButton","showCancelButton","_ref$revertFunction","revertFunction","SappModal","open","children","_ref$cancelButtonCapt","cancelButtonCaption","_ref$okButtonCaption","okButtonCaption","okButtonClass","cancelButtonClass","_ref$buttonSize","buttonSize","handleCancel","handleSubmit","customTitle","_ref$showHeader","showHeader","customHeader","_ref$showFooter","showFooter","customFooter","confirmOnclose","_ref$modelClassname","modelClassname","_ref$refClass","refClass","_ref$parentChildClass","parentChildClass","_ref$footerButtonClas","footerButtonClassName","_ref$overlayClass","overlayClass","_ref$position","position","_ref$fullWidthBtn","fullWidthBtn","_ref$isFullScreen","isFullScreen","_ref$isContentFull","isContentFull","_ref$isInner","isInner","_ref$isBordered","isBordered","_ref$closeAfterSubmit","closeAfterSubmit","_ref$zIndex","zIndex","_ref$scrollbale","scrollbale","footerClassName","externalLoading","setLoading","confirmDialogRef","useRef","confirmDialogOverLayRef","scrollBarWidth","innerWidth","body","clientWidth","setTimeout","style","paddingRight","customModal","querySelectorAll","removeProperty","onOk","handleClose","_exit","_temp3","constructor","name","_finallyRethrows","_wasThrown","_result","_temp4","onCancel","callHandleCancel","_temp5","Fragment","role","isUndefined","SappModalImage","src","setSrc","alt","SAPPVideo","streamRef","videoAttribs","innerStreamRef","Stream","key","controls","responsive","autoplay","EditorReader","text_editor_content","extenalRef","onMouseUp","highlighted","_useState2","setType","_useState3","setContent","editorRef","videoRefs","editor","mfencedElements","el","openAttr","getAttribute","closeAttr","replacements","mathElement","hasAttribute","_styleValue","styleValue","replaceAll","handleOnclick","target","tagName","_video$querySelector","video","previousSibling","_video$parentNode","iframe","cssText","allow","allowFullscreen","imageSrc","tableElements","_document","tableElement","_window","getComputedStyle","newBorderStyle","borderStyle","tdElements","td","_td$classList","_td$classList2","translate","parseHTML","domNode","_sourceChild$attribs","sourceChild","find","videoToken","attribs","token","createRef","onTimeUpdate","initContext","activeOverlayCommentSidebar","setActiveOverlayCommentSidebar","requirementIndex","setRequirementIndex","ExplainationContext","createContext","ExplainationProvider","contextValue","useMemo","Provider","useExplainationContext","context","useContext","Error","CommentList","data","commentRef","overlayClassName","_useExplainationConte","handleClickComment","elId","commentList","getElementsByClassName","_el$getElementsByClas","gradeLine","_el$getElementsByClas2","handleTurnoffHighlight","_commentRef$current","_commentRef$current$c","_commentRef$current2","gradeCommentElements","_element$classList","_element$getElementsB","active","_data$details","details","PopupViewPdf","setOpen","url","fileName","renderContent","status","memo","DownloadIcon","stroke","AltArrowLeft","fillRule","clipRule","AltArrowRight","_ref2","DownloadFileGradingIcon","FileDisplay","setOpenPdf","_ref$isDownloadFile","isDownloadFile","isCsv","setIsCsv","ext","pop","handleOpenFile","isEmpty","Tooltip","download","EssayQuestionPreview","reqIndex","question_data","defaultValue","answer_file","bodyRef","grading_file","handleShowRequirement","refSheet","refEditor","isSheetReady","setIsSheetReady","previewSheet","handleHighlightClick","event","targetElement","spanElement","_targetElement$classL","_spanElement","_spanElement$id","closest","match","_spanElement2","spanId","indexMatch","parseInt","elementBegin","elementEnd","_commentRef$current2$","_foundElement$getElem","_commentRef$current3","_commentRef$current3$","_commentRef$current4","_element$getElementsB2","handleClickOutside","observer","MutationObserver","mutationsList","mutation","observe","childList","subtree","timeoutId","disconnect","clearTimeout","isValid","_unused","defaultSheetData","celldata","setInitDataSheet","answerSheetData","currentSheets","getAllSheets","makeEmptySheet","base","_base$status","_base$row","_base$column","row","column","sheetData","updatedSheetData","sheet","cloneDeep","updateSheet","emptySheets","response_option","file_name","file_url","WORD","response_option_answer","SHEET","Workbook","allowEdit","CollapseArrowIcon","selected","ExplanationV2","activeQuestion","explanationTitle","showRequirement","solution","setSolution","explanation","_showRequirement$expl","qType","ESSAY","EssayRender","handleShowExhibit","controlAnswer","showInfo","setShowInfo","exhibits","concat","_activeQuestion$quest","question_topic","_activeQuestion$quest2","_activeQuestion$quest3","_activeQuestion$quest4","editorRefs","requirements","grading_question","_activeQuestion$requi","RequirementItem","answer_grade","grading_method","description","_showRequirement$file","files","_showRequirement$file2","hidden","_showRequirement$file3","_showRequirement$file4","_e$resource","resource","_e$resource2","_e$files","f","_f$resource","_f$resource2","question_content","control","requirement_answers","short_answer","_activeQuestion$requi2","_activeQuestion$requi3","grading","_activeQuestion$gradi","_activeQuestion$gradi2","answer_gradings","answerGrade","requirement_id","_grading$details","openComment","setOpenComment","_activeQuestion$quest5","_activeQuestion$quest6","_activeQuestion$quest7","_activeQuestion$quest8","answer","_activeQuestion$requi4","req","_activeQuestion$requi5","_activeQuestion$gradi3","_activeQuestion$gradi4","_item$files","_item$files2","_item$files3","_item$files4","_e$resource3","_e$resource4","_e$files2","_f$resource3","_f$resource4","answer_template_files","_grading$details2","moveAndResizeElement","callback","offset","isDown","currentResizer","original_width","original_height","original_x","original_y","original_mouse_x","original_mouse_y","minimum_size","enable","handleDoubleClick","resizable","handleMoveMouse","preventDefault","left","top","pageX","pageY","offsetLeft","offsetTop","_e$target","parseFloat","getPropertyValue","getBoundingClientRect","MovableWindow","getResize","elementRef","onMouseDown","onTouchStart","SappIcon","icon","SAPP_ICONS","camera","clipPath","course_text","rx","course_video","course_video_timeline","arrow_left","arrow_right","arrow_down","ExhibitMovableWindow","showExhibit","setShowExhibit","exhibitText","_showExhibit$files","Explanation","useClickOutside","LeftArrowIcon","RightArrowIcon","DefaultArrowLeft","_ref3","DefaultArrowRight","_ref4","DownArrowIcon","_ref5","transform","DefaultArrowDown","_ref6","QuestionCircleIcon","_ref7","MoveQuestionBar","getActiveQuestion","questionIndex","_activeQuestion$index","previous","_activeQuestion$previ","total_question","_activeQuestion$next","next","_activeQuestion$next2","DragNDropPreivew","forwardRef","action","defaultAnswer","corrects","str","parser","DOMParser","questionContent","setQuestionContent","answerContent","setAnswerContent","setKey","isSelfReflection","is_self_reflection","useImperativeHandle","handleReset","prev","newKey","doc","parseFromString","doc2","elements","elementsCorrects","outerHTML","_corrects$index","_defaultAnswer$index","_defaultAnswer$index2","_defaultAnswer$index3","_defaultAnswer$index4","_defaultAnswer$index5","_defaultAnswer$index6","idAnswer","_questionContent$docu","documentElement","innerHTML","_answerContent$docume","displayName","AddWordPreview","elementCorrects","inputId","inputValue","inputClass","correctAnswer","ans","_ans$answer","_inputValue$trim","answer_position","toLowerCase","join","uniqueId","MatchingQuestion","setDefaultValue","setCorrectAnswer","QuestionCard","_ref2$className","objCorrect","quest","_data$question_matchi","question_matchings","_el$answer","_defaultAnswer$find","question_id","answer_id","_iterator2","_step2","correct","_defaultValue$e$id","_defaultValue$e$id$an","_correctAnswer$e$id","_defaultValue$e$id2","_defaultValue$e$id3","_defaultValue$e$id3$a","_defaultValue$e$id4","_defaultValue$e$id5","_defaultValue$e$id5$a","_data$question_matchi2","_correctAnswer$e$id2","_correctAnswer$e$id3","ErrorMessage","YourAnswer","show","STATE","error","SAPPCheckbox","checked","onChange","_ref$state","state","_ref$lowerOptions","lowerOptions","HookFormCheckBoxGroup","classNameTitle","_ref$direction","direction","gap","justify","_ref$multiple","multiple","_ref$toggle","toggle","_ref$positionCheckBox","positionCheckBox","_ref$seprateLine","seprateLine","_ref$widthOptions","widthOptions","Controller","render","field","fieldState","option","stateLabel","_field$value","checkHasChecked","_field$value2","label","_field$value3","arr","newArr","push","message","MultiChoiceQuestion","defaultValues","setValue","convertAnswer","answers","number","oldData","sorted","sort","a","b","flexDirection","question_contentsolution","SAPPRadio","ktCheck","checkTarget","HookFormRadioGroup","separator","_ref$justify","_ref$labelClass","labelClass","_ref$labelClassChecke","labelClassChecked","OneChoiceQuestion","baseBox","sizeBox","DROPDOWN_STYLES","container","selectedText","SelectWord","allowUnHighLight","_useState4","selectedValues","setSelectedValues","formatAnswer","objAnswer","_data$answers","is_correct","answerObj","createDropdownHTML","defaultAnswerValue","isCorrect","selectedAnswer","_answerObj","disabledClass","_answerObj2","_answerObj3","_e$label","dropdowns","dropdown","handleGetResult","handleChangeElement","select","_data$answers2","_data$answers2$find","sibling","previousElementSibling","_event$target","_event$target2","dropdownContainer","_document2","_dropdownContainer$cl","apply","_dropdownContainer$cl2","some","_data$answers3","_data$answers3$find","_defaultAnswer$find2","_defaultAnswer$find3","_defaultAnswer$find4","_data$answers4","_data$answers4$find","replaceWith","updateTooltips","dropdownIndex","tooltipContainer","tooltipText","selectedValue","_data$answers5","_data$answers5$find","isOpen","mutations","attributeName","attributes","attributeFilter","setupDropdownListeners","iconDropDown","isNowOpen","dropdownRect","windowWidth","windowHeight","innerHeight","scrollTop","pageYOffset","scrollLeft","pageXOffset","bottom","offsetWidth","display","opt","_option$textContent","_extends2","slice","setupSelectListeners","selectList","htmlSelect","dataset","listenerAttached","_questionContent$docu2","_e$target$tagName","charAt","_e$target2","_e$target2$firstChild","firstChild","_answerContent$docume2","ExhibitRender","TopicDisplay","_ref$isTwoColumn","isTwoColumn","setExhibits","hasFile","_activeQuestion$quest9","_activeQuestion$quest0","QuizComponent","document_id","renderPdf","questionRef","setComment","_useForm","useForm","showListRequirement","setShowListRequirement","listRequirementRef","setShowRequirement","openPdf","_useState5","_useState6","setExhibitText","_useState7","startResize","setStartResize","_useState8","currentMousePos","setCurrentMousePos","_useState9","leftWidth","setLeftWidth","_useState0","currentLeftWidth","setCurrentLeftWidth","_useState1","_data$files","_data$answer_template","handleShowListRequirement","clickHandler","_bodyRef$current","_bodyRef$current2","params","mouseY","display_type","VERTICAL","renderQuestion","ONE_CHOICE","TRUE_FALSE","_activeQuestion$myAns","myAnswers","_activeQuestion$myAns2","question_answer_id","MULTIPLE_CHOICE","_activeQuestion$myAns3","_activeQuestion$myAns4","MATCHING","FILL_WORD","_activeQuestion$defau","answer_text","DRAG_DROP","createArrayWithValues","_activeQuestion$myAns5","_activeQuestion$myAns6","resetDefaultAnswer","SELECT_WORD","submitted","myAnswerArray","resultArray","formElement","defaultRequirement","_defaultRequirement$f","_activeQuestion$gradi5","_activeQuestion$gradi6","_defaultRequirement$a","_activeQuestion$gradi7","_activeQuestion$gradi8","program","CMA","EXHIBIT_REPLACE","EXHIBIT","_useMousePosition","temp","TouchEvent","touches","clickPosition","passive","onTouchMove","onTouchEnd","_activeQuestion$requi6","_activeQuestion$requi7","_comment$details","COMMENT_MOBILE_MEDIA","useCommentMobileView","matchMedia","matches","isMobile","setIsMobile","useLayoutEffect","mq","_ref$resetDefaultAnsw","_answers$index","SAPPCheckboxV2","_ref$inputStyle","inputStyle","YourAnswerV2","HookFormCheckBoxGroupV2","SAPPRadioV2","HookFormRadioGroupV2","selectElement","_data$answers$find","optionClass","textClass","correctAnswers","answersText","getCustomBezierPath","sourceX","sourceY","targetX","targetY","_ref$curvature","curvature","dx","cpx1","cpy1","cpx2","cpy2","CustomEdge","sourcePosition","targetPosition","useBreakpoint","Grid","_useBreakpoint","lg","adjustedTargetX","adjustedTargetY","edgePath","markerId","strokeColor","markerWidth","markerHeight","refX","refY","orient","markerUnits","BaseEdge","path","markerEnd","Color","CustomNode","handleStyle","background","border","edgeColor","_Color","ArrowDefault","borderRadius","NODE_WIDTH","borderColor","isSelected","labelRef","isTruncated","setIsTruncated","scrollHeight","clientHeight","_Color2","TextDefault","boxSizing","cursor","placement","WebkitLineClamp","WebkitBoxOrient","overflow","textOverflow","wordBreak","lineHeight","maxHeight","minHeight","ReactFlow","Right","isConnectable","Left","opacity","CustomFlow","nodes","edges","onConnect","nodeTypes","edgeTypes","_useReactFlow","useReactFlow","setViewport","wrapperRef","fixedViewport","zoom","onMove","useCallback","viewport","wrapper","canvas","wheelHandler","stopPropagation","onWheelCapture","fitView","panOnDrag","zoomOnScroll","zoomOnPinch","panOnScroll","nodesDraggable","edgesReconnectable","minZoom","maxZoom","connectionMode","ConnectionMode","Strict","MatchQuiz","setEdges","flowRef","setNodes","correctNodes","setCorrectNodes","correctEdges","setCorrectEdges","CONTAINER_WIDTH","getMatchedPairs","nodeMap","Map","n","edge","sourceNode","get","source","targetNode","isSourceQuestion","Boolean","transformDataToNodes","questions","_ref2$containerWidth","containerWidth","_ref2$nodeWidth","nodeWidth","q","_a$answer_position","_b$answer_position","transformed","_flowRef$current","custom","connection","filtered","addEdge","isNodeReady","setNodeReady","hasCorrects","newEdges","pair","oldEdge","c","_c$answer_ids","answer_ids","Success","prevNodes","isDisabled","correctMap","connectedIds","Set","nodeColors","answerCurrent","isMultiAnswer","_answerCurrent$answer","set","has","_node$data","_Color3","_Color4","generateCorrectFlow","allNodes","sourceId","targetId","newSourceNode","newTargetNode","correctFlow","allAnswersCorrect","every","minWidth","ReactFlowProvider","MatchQuizWrapper","ExhibitMovableWindowV2","CommentModal","detail","hasGrade","hasComment","ConstructedQuestionV2","activeCommentId","setActiveCommentId","setOpenCommentIndex","isMobileCommentView","htmlOutput","setHtmlOutput","gradeCommentPopup","setGradeCommentPopup","handleWorkbookRef","instance","sheets","allSheetsHtml","rowCount","columnCount","isArray","reduce","max","maxR","r","maxC","range","sheetHtml","getHtmlByRange","console","_listGrades$details","matchedDetail","detailIndex","findIndex","foundElementId","allComments","CSS","escape","_el$closest","call","_el$closest2","_el$closest3","bodyEl","_question_data$requir","_refSheet$current","_refSheet$current2","_currentSheets$index","_sheetData$index","_refSheet$current3","_refSheet$current4","timeout","_listGrades$details2","parsedData","toCelldataFromGrid","grid","flatMap","rIdx","cIdx","v","m","ct","fa","t","normalizeSheets","s","it","parsed","rows","cIndex","_value$","onClose","CommentListV2","ModalPreviewFile","fileUrl","getFileExtension","cleanSource","extension","officeExtensions","officePreviewUrl","encodeURIComponent","iframeSrc","Modal","footer","centered","destroyOnClose","dangerouslySetInnerHTML","__html","ListGradingFile","_ref$title","_ref$listFiles","listFiles","previewFile","setPreviewFile","handleOpenPreview","file","textItem","fileItem","_fileItem$resource","_fileItem$resource2","handleDownloadFile","_fileItem$resource3","_fileItem$resource4","click","removeChild","_file$resource","MarkdownRenderer","ReactMarkdown","components","p","h1","h2","h3","ul","ol","li","_ref8","code","_ref9","isInline","_ref0","rel","blockquote","_ref1","AIComment","_ref$content","EssayRenderV2","openCommentIndex","activeQuestionAiContexts","ai_contexts","course_ai_contexts","ctx","show_to_student","commentRefs","selectedGrading","hasComments","hasDescriptionItemSet","CollapsibleItem","showText","hideText","EssayQuestionPreviewV2","val","ai_grade","showRequirementIndex","gradingFilesList","_ref3$title","_ref3$content","_ref3$showText","_ref3$hideText","MAX_LIST_QUESTION_COLUMNS","getListQuestionColumnsPerRow","useListQuestionColumnsPerRow","columnsPerRow","setColumnsPerRow","onResize","formatPosition","padStart","getQuestionBoxClass","isMultipleChoice","_data$question","question","QuestionGrid","listQuestions","_ref$listQuestions","activeQuestionId","_ref$isMultipleChoice","isMultipleChoiceQuestion","_ref$layout","layout","_ref$columnsPerRow","_ref$rowCount","_ref$isExpanded","isExpanded","_ref$showPagination","showPagination","_ref$currentPage","currentPage","_ref$totalPages","totalPages","onPrevPage","onNextPage","handleCloseModal","renderQuestionButton","isActive","questionIsMultipleChoice","renderNavigationRows","_","rowIndex","gridTemplateColumns","renderPanelGrid","FILTER_OPTIONS","LEGEND_ITEMS","MULTIPLE_CHOICE_ANNOTATIONS","CONSTRUCTED_ANNOTATIONS","sortByPosition","items","ListQuestion","_ref$variant","variant","questionFilterProp","questionFilter","onQuestionFilterChange","listMultipleChoiceQuestions","selectedResponseAnswers","listConstructedQuestions","constructedResponseAnswers","isFilterControlled","internalFilter","setInternalFilter","setCurrentPage","setIsExpanded","showLegend","setShowLegend","showAllMultiple","setShowAllMultiple","showAllConstructed","setShowAllConstructed","maxRowCount","questionsPerPage","filteredQuestions","ceil","pageQuestions","isMultipleChoiceFilter","handleToggleExpand","handleFilterChange","renderLegendTooltip","backgroundColor","renderAnnotations","annotations","annotation","renderPanelSection","isShowDivider","showAll","setShowAll","visibleQuestions","min","tabIndex","onMouseEnter","onMouseLeave","QuizComponentV2","matchQuizRef","_useState10","_useState11","handleGenarateSelectAnswer","_sorted","_activeQuestion$gradi9","_activeQuestion$gradi0","renderCommentList","hasRequirements","_activeQuestion$requi8","_comment$details2","_activeQuestion$requi9","commentListStyles","css","_templateObject","_taggedTemplateLiteralLoose","DividerStyles","commonComponentStyles","explanationStyles","moveQuestionBarStyle","questionTypeStyles","quizComponentStyles","topicDisplayStyles","essayRenderStyles","quizComponentStylesV2","essayRenderStylesV2","commentListStylesV2","commentModalStyles","listQuestionStyles","componentStyles","colors","typography","utilities","editorWrapStyle","sappStyle","tailwindStyle","reactFlowStyle","tooltipStyle","luckySheetStyle","fortuneStyles","videoStyles","styles","GlobalStyles","createGlobalStyle","ExplanationPackage","GlobalStylesFixed","root","div","mode","ExplanationPackageV2"],"mappings":"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"}