@nualang/nualang-ui-components 0.1.1400 → 0.2.0

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 (953) hide show
  1. package/package.json +1 -1
  2. package/dist/Assignments/AssignmentBotSelection/AssignmentBotSelection.js +0 -278
  3. package/dist/Assignments/AssignmentBotSelection/package.json +0 -6
  4. package/dist/Assignments/AssignmentCard/AssignmentCard.js +0 -297
  5. package/dist/Assignments/AssignmentCard/package.json +0 -6
  6. package/dist/Assignments/AssignmentCardsList/AssignmentCardsList.js +0 -389
  7. package/dist/Assignments/AssignmentCardsList/package.json +0 -6
  8. package/dist/Assignments/AssignmentCourseSelection/AssignmentCourseSelection.js +0 -280
  9. package/dist/Assignments/AssignmentCourseSelection/package.json +0 -6
  10. package/dist/Assignments/AssignmentExerciseSelection/AssignmentExerciseSelection.js +0 -1056
  11. package/dist/Assignments/AssignmentExerciseSelection/package.json +0 -6
  12. package/dist/Assignments/AssignmentExerciseSelector/AssignmentExerciseSelector.js +0 -53
  13. package/dist/Assignments/AssignmentExerciseSelector/package.json +0 -6
  14. package/dist/Assignments/AssignmentPhraseListSelection/AssignmentPhraseListSelection.js +0 -469
  15. package/dist/Assignments/AssignmentPhraseListSelection/package.json +0 -6
  16. package/dist/Assignments/AssignmentRoleplaySelection/AssignmentRoleplaySelection.js +0 -498
  17. package/dist/Assignments/AssignmentRoleplaySelection/package.json +0 -6
  18. package/dist/Assignments/AssignmentSelectExercise/AssignmentSelectExercise.js +0 -113
  19. package/dist/Assignments/CreateAssignmentDialog/CreateAssignmentDialog.js +0 -654
  20. package/dist/Assignments/CreateAssignmentDialog/package.json +0 -6
  21. package/dist/Assignments/SelectAssignmentTypeDialog/SelectAssignmentTypeDialog.js +0 -168
  22. package/dist/Assignments/SelectAssignmentTypeDialog/package.json +0 -6
  23. package/dist/Cards/Avatar/Avatar.js +0 -45
  24. package/dist/Cards/Bot/Bot.js +0 -399
  25. package/dist/Cards/Bot/Bot.test.js +0 -21
  26. package/dist/Cards/Bot/package.json +0 -6
  27. package/dist/Cards/CardElements/CardSubheader/CardSubheader.js +0 -28
  28. package/dist/Cards/CardElements/CardSubheader/package.json +0 -6
  29. package/dist/Cards/CardElements/CardTitle/CardTitle.js +0 -30
  30. package/dist/Cards/CardElements/CardTitle/package.json +0 -6
  31. package/dist/Cards/CardElements/CardVisibility/CardVisibility.js +0 -80
  32. package/dist/Cards/CardElements/CardVisibility/package.json +0 -6
  33. package/dist/Cards/CardElements/index.js +0 -181
  34. package/dist/Cards/Category/Category.js +0 -92
  35. package/dist/Cards/Category/sample.png +0 -0
  36. package/dist/Cards/Classroom/Classroom.js +0 -414
  37. package/dist/Cards/Classroom/Classroom.test.js +0 -30
  38. package/dist/Cards/Classroom/package.json +0 -6
  39. package/dist/Cards/Course/Course.js +0 -704
  40. package/dist/Cards/Course/Course.test.js +0 -30
  41. package/dist/Cards/Course/package.json +0 -6
  42. package/dist/Cards/FeedbackCard/FeedbackCard.js +0 -624
  43. package/dist/Cards/LoadingCard/LoadingCard.js +0 -39
  44. package/dist/Cards/PreviewCard/PreviewCard.js +0 -63
  45. package/dist/Cards/PreviewCard/PreviewCard.test.js +0 -20
  46. package/dist/Cards/RecordingCard/RecordingCard.js +0 -250
  47. package/dist/Cards/Roleplay/Roleplay.js +0 -398
  48. package/dist/Cards/Roleplay/Roleplay.test.js +0 -21
  49. package/dist/Cards/Roleplay/package.json +0 -6
  50. package/dist/Cards/ScheduleCard/ScheduleCard.js +0 -152
  51. package/dist/Cards/SubmissionsCard/SubmissionsCard.js +0 -138
  52. package/dist/Cards/SubscriptionPlan/SubscriptionPlan.js +0 -395
  53. package/dist/Cards/SubscriptionPlan/SubscriptionPlan.test.js +0 -20
  54. package/dist/Cards/SubscriptionPlan/nuala.svg +0 -28
  55. package/dist/Cards/SubscriptionPlan/package.json +0 -6
  56. package/dist/Cards/SubscriptionPlan/plus.svg +0 -4
  57. package/dist/Cards/Topic/Topic.js +0 -276
  58. package/dist/Cards/Topic/Topic.test.js +0 -21
  59. package/dist/Cards/Topic/package.json +0 -6
  60. package/dist/Cards/index.js +0 -2
  61. package/dist/Charts/Bar/Exercises/Exercises.js +0 -118
  62. package/dist/Charts/Bar/Exercises/package.json +0 -6
  63. package/dist/Charts/Bar/TotalGrades/TotalGrades.js +0 -123
  64. package/dist/Charts/Bar/TotalGrades/package.json +0 -6
  65. package/dist/Charts/Doughnut/AnswerMethod/AnswerMethod.js +0 -97
  66. package/dist/Charts/Doughnut/AnswerMethod/package.json +0 -6
  67. package/dist/Charts/Doughnut/AnswersBreakdown/AnswersBreakdown.js +0 -105
  68. package/dist/Charts/Doughnut/AnswersBreakdown/package.json +0 -6
  69. package/dist/Charts/Doughnut/RecordingAttendance/RecordingAttendance.js +0 -100
  70. package/dist/Charts/Doughnut/SubmittedRecordings/SubmittedRecordings.js +0 -87
  71. package/dist/Chat/BottomBar/BottomBar.js +0 -375
  72. package/dist/Chat/BottomBar/package.json +0 -6
  73. package/dist/Chat/Chat.js +0 -205
  74. package/dist/Chat/ChatLoading/ChatLoading.js +0 -224
  75. package/dist/Chat/ChatLoading/package.json +0 -6
  76. package/dist/Chat/Messages/Message/Message.js +0 -710
  77. package/dist/Chat/Messages/Message/package.json +0 -6
  78. package/dist/Chat/Messages/Messages.js +0 -270
  79. package/dist/Chat/Messages/Question/Question.js +0 -485
  80. package/dist/Chat/Messages/Question/package.json +0 -6
  81. package/dist/Chat/Messages/package.json +0 -6
  82. package/dist/Chat/TopBar/TopBar.js +0 -123
  83. package/dist/Chat/TopBar/package.json +0 -6
  84. package/dist/Chat/VoiceMessage/VoiceMessage.js +0 -144
  85. package/dist/Chat/VoiceMessage/package.json +0 -6
  86. package/dist/Chat/package.json +0 -6
  87. package/dist/Containers/App/App.js +0 -537
  88. package/dist/Containers/App/package.json +0 -6
  89. package/dist/Dialogs/AddToClassroom/AddToClassroom.js +0 -117
  90. package/dist/Dialogs/AddToClassroom/AddToClassroom.test.js +0 -15
  91. package/dist/Dialogs/AddToClassroom/package.json +0 -6
  92. package/dist/Dialogs/AddToCourse/AddToCourse.js +0 -73
  93. package/dist/Dialogs/Alternatives/Alternatives.js +0 -67
  94. package/dist/Dialogs/Alternatives/package.json +0 -6
  95. package/dist/Dialogs/AvatarDialog/AvatarDialog.js +0 -585
  96. package/dist/Dialogs/AvatarDialog/options.js +0 -120
  97. package/dist/Dialogs/BotPreview/BotPreview.js +0 -350
  98. package/dist/Dialogs/BotPreview/package.json +0 -6
  99. package/dist/Dialogs/Code/Code.js +0 -147
  100. package/dist/Dialogs/Code/Code.test.js +0 -20
  101. package/dist/Dialogs/Code/package.json +0 -6
  102. package/dist/Dialogs/ConfirmDeleteDiscussion/ConfirmDeleteDiscussion.js +0 -46
  103. package/dist/Dialogs/ConfirmDialog/ConfirmDialog.js +0 -198
  104. package/dist/Dialogs/CourseOutline/CourseOutline.js +0 -27
  105. package/dist/Dialogs/CourseOutline/CourseOutline.test.js +0 -28
  106. package/dist/Dialogs/CourseOutline/package.json +0 -6
  107. package/dist/Dialogs/CreatePhrase/CreatePhrase.js +0 -733
  108. package/dist/Dialogs/CreatePhrase/CreatePhrase.test.js +0 -20
  109. package/dist/Dialogs/CreatePhrase/package.json +0 -6
  110. package/dist/Dialogs/CreatePhraseGroupDialog/CreatePhraseGroupDialog.js +0 -188
  111. package/dist/Dialogs/CreatePhraseListFromSelectionDialog/CreatePhraseListFromSelectionDialog.js +0 -49
  112. package/dist/Dialogs/CreateQuestion/CreateQuestion.js +0 -282
  113. package/dist/Dialogs/CreateQuestion/CreateQuestion.test.js +0 -15
  114. package/dist/Dialogs/CreateQuestion/package.json +0 -6
  115. package/dist/Dialogs/CreateSection/CreateSection.js +0 -51
  116. package/dist/Dialogs/CreateSection/CreateSection.test.js +0 -15
  117. package/dist/Dialogs/CreateSection/package.json +0 -6
  118. package/dist/Dialogs/CreateTopic/CreateTopic.js +0 -135
  119. package/dist/Dialogs/CreateTopic/CreateTopic.test.js +0 -15
  120. package/dist/Dialogs/CreateTopic/package.json +0 -6
  121. package/dist/Dialogs/CreatorNotSubscribed/CreatorNotSubscribed.js +0 -19
  122. package/dist/Dialogs/CreatorNotSubscribedUpgrade/CreatorNotSubscribedUpgrade.js +0 -50
  123. package/dist/Dialogs/DynamicAIWarning/DynamicAIWarning.js +0 -183
  124. package/dist/Dialogs/DynamicAIWarning/owl.png +0 -0
  125. package/dist/Dialogs/EnrollmentKeyDialog/EnrollmentKeyDialog.js +0 -47
  126. package/dist/Dialogs/ExerciseMenu/ExerciseMenu.js +0 -92
  127. package/dist/Dialogs/ExerciseMenu/Menus/CloseBotPreview/CloseBotPreview.js +0 -20
  128. package/dist/Dialogs/ExerciseMenu/Menus/CloseBotPreview/package.json +0 -6
  129. package/dist/Dialogs/ExerciseMenu/Menus/CloseExercise/CloseExercise.js +0 -52
  130. package/dist/Dialogs/ExerciseMenu/Menus/CloseExercise/package.json +0 -6
  131. package/dist/Dialogs/ExerciseMenu/Menus/CompletedExcercise/CompletedExcercise.js +0 -60
  132. package/dist/Dialogs/ExerciseMenu/Menus/CompletedExcercise/package.json +0 -6
  133. package/dist/Dialogs/ExerciseMenu/Menus/InProgressExercise/InProgressExercise.js +0 -43
  134. package/dist/Dialogs/ExerciseMenu/Menus/InProgressExercise/package.json +0 -6
  135. package/dist/Dialogs/ExerciseMenu/package.json +0 -6
  136. package/dist/Dialogs/Feedback/FeedbackDialog.js +0 -86
  137. package/dist/Dialogs/FeedbackDialog/FeedbackDialog.js +0 -123
  138. package/dist/Dialogs/FeedbackInfoDialog/FeedbackInfoDialog.js +0 -39
  139. package/dist/Dialogs/FindTopicsDialog/FindTopicsDialog.js +0 -442
  140. package/dist/Dialogs/GenerateBot/GenerateBot.js +0 -429
  141. package/dist/Dialogs/GenerateBot/package.json +0 -6
  142. package/dist/Dialogs/GenerateDefinitions/GenerateDefinitions.js +0 -217
  143. package/dist/Dialogs/GenerateDefinitions/package.json +0 -6
  144. package/dist/Dialogs/GenerateDiscussion/GenerateDiscussion.js +0 -275
  145. package/dist/Dialogs/GeneratePhrases/GeneratePhrases.js +0 -379
  146. package/dist/Dialogs/GeneratePhrases/package.json +0 -6
  147. package/dist/Dialogs/GenerateQuestion/GenerateQuestion.js +0 -212
  148. package/dist/Dialogs/GenerateQuestion/package.json +0 -6
  149. package/dist/Dialogs/GenerateRoleplay/GenerateRoleplay.js +0 -735
  150. package/dist/Dialogs/GenerateRoleplay/package.json +0 -6
  151. package/dist/Dialogs/GroupedFeedbackDialog/GroupedFeedbackDialog.js +0 -711
  152. package/dist/Dialogs/GroupedFeedbackDialog/package.json +0 -6
  153. package/dist/Dialogs/Icons/Icons.js +0 -18
  154. package/dist/Dialogs/Icons/package.json +0 -6
  155. package/dist/Dialogs/ImageLibrary/ImageLibrary.js +0 -34
  156. package/dist/Dialogs/ImageLibrary/ImageLibrary.test.js +0 -20
  157. package/dist/Dialogs/ImageLibrary/package.json +0 -6
  158. package/dist/Dialogs/ImageLibraryDialog/ImageLibraryDialog.js +0 -33
  159. package/dist/Dialogs/InactivePopover/InactivePopover.js +0 -71
  160. package/dist/Dialogs/InviteDialog/InviteDialog.js +0 -695
  161. package/dist/Dialogs/InviteDialog/package.json +0 -6
  162. package/dist/Dialogs/InviteDialog/upload-emails-csv.png +0 -0
  163. package/dist/Dialogs/Listener/Listener.js +0 -87
  164. package/dist/Dialogs/Listener/Listener.test.js +0 -24
  165. package/dist/Dialogs/Listener/package.json +0 -6
  166. package/dist/Dialogs/LiveGameTutorial/LiveGameTutorial.js +0 -166
  167. package/dist/Dialogs/LiveGameTutorial/package.json +0 -6
  168. package/dist/Dialogs/Members/Members.js +0 -27
  169. package/dist/Dialogs/Members/Members.test.js +0 -20
  170. package/dist/Dialogs/Members/package.json +0 -6
  171. package/dist/Dialogs/ModeratedDialog/ModeratedDialog.js +0 -35
  172. package/dist/Dialogs/PDFViewer/PDFViewer.js +0 -252
  173. package/dist/Dialogs/PDFViewer/pdf24.pdf +0 -0
  174. package/dist/Dialogs/PDFViewer/rubrics/level1Rubric.pdf +0 -0
  175. package/dist/Dialogs/PDFViewer/rubrics/level2Rubric.pdf +0 -0
  176. package/dist/Dialogs/PDFViewer/rubrics/level3Rubric.pdf +0 -0
  177. package/dist/Dialogs/PDFViewer/rubrics/level4Rubric.pdf +0 -0
  178. package/dist/Dialogs/PhraseNameDialog/PhraseNameDialog.js +0 -30
  179. package/dist/Dialogs/QuickCreateClassroomDialog/QuickCreateClassroomDialog.js +0 -266
  180. package/dist/Dialogs/QuickCreateCourseDialog/QuickCreateCourseDialog.js +0 -283
  181. package/dist/Dialogs/QuickCreateTopicDialog/QuickCreateTopicDialog.js +0 -260
  182. package/dist/Dialogs/RecordingDialog/RecordingDialog.js +0 -288
  183. package/dist/Dialogs/ReportProblem/ReportProblem.js +0 -287
  184. package/dist/Dialogs/ReportProblem/ReportProblem.test.js +0 -15
  185. package/dist/Dialogs/ReportProblem/package.json +0 -6
  186. package/dist/Dialogs/ResponsiveDialog/ResponsiveDialog.js +0 -108
  187. package/dist/Dialogs/ResponsiveDialog/ResponsiveDialog.test.js +0 -15
  188. package/dist/Dialogs/ResponsiveDialog/package.json +0 -6
  189. package/dist/Dialogs/RewardEarned/RewardEarned.js +0 -111
  190. package/dist/Dialogs/RewardEarned/package.json +0 -6
  191. package/dist/Dialogs/RoleplayPreview/RoleplayPreview.js +0 -87
  192. package/dist/Dialogs/SearchTopic/SearchTopic.js +0 -87
  193. package/dist/Dialogs/SelectActor/SelectActor.js +0 -157
  194. package/dist/Dialogs/SelectActor/package.json +0 -6
  195. package/dist/Dialogs/SelectClassroom/SelectClassroom.js +0 -81
  196. package/dist/Dialogs/SelectClassroom/package.json +0 -6
  197. package/dist/Dialogs/SelectExercise/SelectExercise.js +0 -47
  198. package/dist/Dialogs/SelectExercise/package.json +0 -6
  199. package/dist/Dialogs/Substitution/Substitution.js +0 -82
  200. package/dist/Dialogs/Substitution/package.json +0 -6
  201. package/dist/Dialogs/Topic/Topic.js +0 -69
  202. package/dist/Dialogs/Topic/package.json +0 -6
  203. package/dist/Dialogs/TopicPreview/TopicPreview.js +0 -39
  204. package/dist/Dialogs/TopicPreview/package.json +0 -6
  205. package/dist/Dialogs/TransferPhrase/TransferPhrase.js +0 -115
  206. package/dist/Dialogs/Trigger/Trigger.js +0 -213
  207. package/dist/Dialogs/Trigger/package.json +0 -6
  208. package/dist/Dialogs/UpgradeSubscription/UpgradeSubscription.js +0 -40
  209. package/dist/Dialogs/UploadBotVars/UploadBotVars.jpeg +0 -0
  210. package/dist/Dialogs/UploadBotVars/UploadBotVars.js +0 -186
  211. package/dist/Dialogs/UploadBotVars/UploadBotVars.test.js +0 -20
  212. package/dist/Dialogs/UploadBotVars/package.json +0 -6
  213. package/dist/Dialogs/UploadPhrases/UploadPhrases.js +0 -553
  214. package/dist/Dialogs/UploadPhrases/UploadPhrases.test.js +0 -20
  215. package/dist/Dialogs/UploadPhrases/package.json +0 -6
  216. package/dist/Dialogs/UploadPhrases/upload-phrases-csv.png +0 -0
  217. package/dist/Dialogs/UploadRoleplayScript/UploadRoleplayScript.js +0 -287
  218. package/dist/Dialogs/UploadRoleplayScript/UploadRoleplayScript.test.js +0 -20
  219. package/dist/Dialogs/UploadRoleplayScript/package.json +0 -6
  220. package/dist/Dialogs/UploadRoleplayScript/roleplay-script-csv.png +0 -0
  221. package/dist/Dialogs/UploadVideo/UploadVideo.js +0 -80
  222. package/dist/Dialogs/UploadVideo/UploadVideo.test.js +0 -20
  223. package/dist/Dialogs/UploadVideo/package.json +0 -6
  224. package/dist/Dialogs/Variable/Variable.js +0 -74
  225. package/dist/Dialogs/Variable/package.json +0 -6
  226. package/dist/Dialogs/VideoViewer/VideoViewer.js +0 -61
  227. package/dist/Dialogs/ViewImageDialog/ViewImageDialog.js +0 -24
  228. package/dist/Dialogs/WaveformDialog/WaveformDialog.js +0 -110
  229. package/dist/Editors/Bot/Bot.js +0 -843
  230. package/dist/Editors/Bot/Editor/BotDesigner/AddImageModal/AddImageModal.js +0 -98
  231. package/dist/Editors/Bot/Editor/BotDesigner/AddImageModal/AddImageModal.test.js +0 -12
  232. package/dist/Editors/Bot/Editor/BotDesigner/AddImageModal/package.json +0 -6
  233. package/dist/Editors/Bot/Editor/BotDesigner/AddLinkModal/AddLinkModal.js +0 -95
  234. package/dist/Editors/Bot/Editor/BotDesigner/AddLinkModal/AddLinkModal.test.js +0 -12
  235. package/dist/Editors/Bot/Editor/BotDesigner/AddLinkModal/package.json +0 -6
  236. package/dist/Editors/Bot/Editor/BotDesigner/AlternativesList.js +0 -88
  237. package/dist/Editors/Bot/Editor/BotDesigner/BotDesigner.js +0 -66
  238. package/dist/Editors/Bot/Editor/BotDesigner/BotDesigner.test.js +0 -34
  239. package/dist/Editors/Bot/Editor/BotDesigner/VarList.js +0 -324
  240. package/dist/Editors/Bot/Editor/BotDesigner/package.json +0 -6
  241. package/dist/Editors/Bot/Editor/Editor.js +0 -628
  242. package/dist/Editors/Bot/Editor/package.json +0 -6
  243. package/dist/Editors/Bot/Tutorial.js +0 -154
  244. package/dist/Editors/Bot/package.json +0 -6
  245. package/dist/Editors/PhraseList/PhraseList.js +0 -388
  246. package/dist/Editors/Phrases/Phrases.js +0 -617
  247. package/dist/Editors/Phrases/SpreadsheetEditor/SpreadsheetEditor.js +0 -146
  248. package/dist/Editors/Roleplay/Roleplay.js +0 -955
  249. package/dist/Editors/Roleplay/package.json +0 -6
  250. package/dist/Exercises/Bot/Bot.js +0 -716
  251. package/dist/Exercises/Bot/Bot.test.js +0 -25
  252. package/dist/Exercises/Bot/package.json +0 -6
  253. package/dist/Exercises/ListenAndSpeak/ListenAndSpeak.js +0 -968
  254. package/dist/Exercises/Listener/Listener.js +0 -1029
  255. package/dist/Exercises/Listener/Listener.test.js +0 -25
  256. package/dist/Exercises/Listener/package.json +0 -6
  257. package/dist/Exercises/Meaning/Meaning.js +0 -805
  258. package/dist/Exercises/MeaningReadWrite/MeaningReadWriteGame.js +0 -731
  259. package/dist/Exercises/PhraseGroup/Games/ListenAndSpeakGame/ListenAndSpeakGame.js +0 -97
  260. package/dist/Exercises/PhraseGroup/Games/ListeningGame/ListeningGame.js +0 -91
  261. package/dist/Exercises/PhraseGroup/Games/MeaningGame/MeaningGame.js +0 -90
  262. package/dist/Exercises/PhraseGroup/Games/MeaningReadWriteGame/MeaningReadWriteGame.js +0 -90
  263. package/dist/Exercises/PhraseGroup/Games/PronunciationGame/PronunciationGame.js +0 -87
  264. package/dist/Exercises/PhraseGroup/Games/TranslationGame/TranslationGame.js +0 -92
  265. package/dist/Exercises/PhraseGroup/Games/index.js +0 -7
  266. package/dist/Exercises/PhraseGroup/PhraseGroup.js +0 -271
  267. package/dist/Exercises/PhraseGroup/PhraseGroup.test.js +0 -28
  268. package/dist/Exercises/PhraseGroup/PhraseGroupGameOptions/PhraseGroupGame/PhraseGroupGame.js +0 -296
  269. package/dist/Exercises/PhraseGroup/PhraseGroupGameOptions/PhraseGroupGames.js +0 -70
  270. package/dist/Exercises/PhraseGroup/PhraseGroupInfo/PhraseGroupInfo.js +0 -135
  271. package/dist/Exercises/PhraseGroup/package.json +0 -7
  272. package/dist/Exercises/Pronouncer/Pronouncer.js +0 -978
  273. package/dist/Exercises/Pronouncer/Pronouncer.test.js +0 -23
  274. package/dist/Exercises/Pronouncer/package.json +0 -6
  275. package/dist/Exercises/Roleplay/Games/ActItOutGame/ActItOutGame.js +0 -502
  276. package/dist/Exercises/Roleplay/Games/ActItOutGame/package.json +0 -6
  277. package/dist/Exercises/Roleplay/Games/ActItOutGameListening/ActItOutGameListening.js +0 -505
  278. package/dist/Exercises/Roleplay/Games/ActItOutGameListening/package.json +0 -6
  279. package/dist/Exercises/Roleplay/Games/ActItOutGameListeningAndSpeaking/ActItOutGame.js +0 -735
  280. package/dist/Exercises/Roleplay/Games/ActItOutGameListeningAndSpeaking/package.json +0 -6
  281. package/dist/Exercises/Roleplay/Games/ActItOutGameSpeaking/ActItOutGame.js +0 -725
  282. package/dist/Exercises/Roleplay/Games/ActItOutGameSpeaking/package.json +0 -6
  283. package/dist/Exercises/Roleplay/Games/BeforeElements.js +0 -68
  284. package/dist/Exercises/Roleplay/Games/FillInTheBlanksGame/FillInBlanks.js +0 -264
  285. package/dist/Exercises/Roleplay/Games/FillInTheBlanksGame/FillInTheBlanksGame.js +0 -360
  286. package/dist/Exercises/Roleplay/Games/FillInTheBlanksGame/package.json +0 -6
  287. package/dist/Exercises/Roleplay/Games/StoryGame/StoryGame.js +0 -347
  288. package/dist/Exercises/Roleplay/Games/StoryGame/package.json +0 -6
  289. package/dist/Exercises/Roleplay/Games/TopBarActions.js +0 -336
  290. package/dist/Exercises/Roleplay/Games/Transition.js +0 -9
  291. package/dist/Exercises/Roleplay/Games/index.js +0 -7
  292. package/dist/Exercises/Roleplay/OriginalRoleplay.js +0 -946
  293. package/dist/Exercises/Roleplay/Roleplay.js +0 -399
  294. package/dist/Exercises/Roleplay/Roleplay.test.js +0 -30
  295. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGame/RoleplayGame.js +0 -194
  296. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGame/RoleplayGame.test.js +0 -23
  297. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGame/package.json +0 -6
  298. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGames.js +0 -61
  299. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGames.test.js +0 -23
  300. package/dist/Exercises/Roleplay/RoleplayGameOptions/package.json +0 -6
  301. package/dist/Exercises/Roleplay/RoleplayInfo/RoleplayInfo.js +0 -153
  302. package/dist/Exercises/Roleplay/RoleplayInfo/RoleplayInfo.test.js +0 -23
  303. package/dist/Exercises/Roleplay/RoleplayInfo/package.json +0 -6
  304. package/dist/Exercises/Roleplay/package.json +0 -6
  305. package/dist/Exercises/Translator/Translator.js +0 -1028
  306. package/dist/Exercises/Translator/Translator.test.js +0 -29
  307. package/dist/Exercises/Translator/package.json +0 -6
  308. package/dist/Forms/AppContact/AppContact.js +0 -141
  309. package/dist/Forms/ChipInput/ChipInput.js +0 -74
  310. package/dist/Forms/ChipInput/package.json +0 -6
  311. package/dist/Forms/Contact/Contact.js +0 -363
  312. package/dist/Forms/CreateBot/CreateBot.js +0 -77
  313. package/dist/Forms/CreateBot/CreateBot.test.js +0 -20
  314. package/dist/Forms/CreateBot/Steps/BotInformation/BotInformation.js +0 -649
  315. package/dist/Forms/CreateBot/Steps/BotInformation/__mocks__/react-simplemde-editor.js +0 -8
  316. package/dist/Forms/CreateBot/Steps/BotInformation/package.json +0 -6
  317. package/dist/Forms/CreateBot/Steps/BotSettings/BotSettings.js +0 -199
  318. package/dist/Forms/CreateBot/Steps/BotSettings/package.json +0 -6
  319. package/dist/Forms/CreateBot/Steps/Confirmation/Confirmation.js +0 -237
  320. package/dist/Forms/CreateBot/Steps/Confirmation/package.json +0 -6
  321. package/dist/Forms/CreateBot/Steps/index.js +0 -4
  322. package/dist/Forms/CreateBot/package.json +0 -6
  323. package/dist/Forms/CreateClassroom/CreateClassroom.js +0 -53
  324. package/dist/Forms/CreateClassroom/CreateClassroom.test.js +0 -20
  325. package/dist/Forms/CreateClassroom/Steps/ClassroomInformation/ClassroomInformation.js +0 -168
  326. package/dist/Forms/CreateClassroom/Steps/ClassroomInformation/package.json +0 -6
  327. package/dist/Forms/CreateClassroom/Steps/ClassroomSettings/ClassroomSettings.js +0 -401
  328. package/dist/Forms/CreateClassroom/Steps/ClassroomSettings/package.json +0 -6
  329. package/dist/Forms/CreateClassroom/Steps/Confirmation/Confirmation.js +0 -117
  330. package/dist/Forms/CreateClassroom/Steps/Confirmation/package.json +0 -6
  331. package/dist/Forms/CreateClassroom/Steps/CourseSettings/CourseSettings.js +0 -340
  332. package/dist/Forms/CreateClassroom/Steps/CourseSettings/package.json +0 -6
  333. package/dist/Forms/CreateClassroom/Steps/Customization/Customization.js +0 -77
  334. package/dist/Forms/CreateClassroom/Steps/Customization/package.json +0 -6
  335. package/dist/Forms/CreateClassroom/Steps/index.js +0 -6
  336. package/dist/Forms/CreateClassroom/package.json +0 -6
  337. package/dist/Forms/CreateCourse/CreateCourse.js +0 -62
  338. package/dist/Forms/CreateCourse/CreateCourse.test.js +0 -20
  339. package/dist/Forms/CreateCourse/Steps/Confirmation/Confirmation.js +0 -117
  340. package/dist/Forms/CreateCourse/Steps/Confirmation/package.json +0 -6
  341. package/dist/Forms/CreateCourse/Steps/CourseInformation/CourseInformation.js +0 -194
  342. package/dist/Forms/CreateCourse/Steps/CourseInformation/package.json +0 -6
  343. package/dist/Forms/CreateCourse/Steps/CourseSettings/CourseSettings.js +0 -257
  344. package/dist/Forms/CreateCourse/Steps/CourseSettings/package.json +0 -6
  345. package/dist/Forms/CreateCourse/Steps/Customization/Customization.js +0 -77
  346. package/dist/Forms/CreateCourse/Steps/Customization/package.json +0 -6
  347. package/dist/Forms/CreateCourse/Steps/index.js +0 -5
  348. package/dist/Forms/CreateCourse/package.json +0 -6
  349. package/dist/Forms/CreateGroup/CreateGroup.js +0 -55
  350. package/dist/Forms/CreateGroup/CreateGroup.test.js +0 -20
  351. package/dist/Forms/CreateGroup/Steps/Confirmation/Confirmation.js +0 -172
  352. package/dist/Forms/CreateGroup/Steps/Confirmation/package.json +0 -6
  353. package/dist/Forms/CreateGroup/Steps/GroupInformation/GroupInformation.js +0 -130
  354. package/dist/Forms/CreateGroup/Steps/GroupInformation/package.json +0 -6
  355. package/dist/Forms/CreateGroup/Steps/GroupSettings/GroupSettings.js +0 -171
  356. package/dist/Forms/CreateGroup/Steps/GroupSettings/package.json +0 -6
  357. package/dist/Forms/CreateGroup/Steps/index.js +0 -4
  358. package/dist/Forms/CreateGroup/package.json +0 -6
  359. package/dist/Forms/CreateMeetingMultiStepForm/CreateMeetingMultiStepForm.js +0 -88
  360. package/dist/Forms/CreateMeetingMultiStepForm/GroupAssignment.js +0 -919
  361. package/dist/Forms/CreateMeetingMultiStepForm/MeetingForm.js +0 -501
  362. package/dist/Forms/CreateMeetingMultiStepForm/images/input1.js +0 -2
  363. package/dist/Forms/CreateMeetingMultiStepForm/images/input5.js +0 -2
  364. package/dist/Forms/CreateMeetingMultiStepForm/images/mode1.js +0 -2
  365. package/dist/Forms/CreateMeetingMultiStepForm/images/mode2.js +0 -2
  366. package/dist/Forms/CreateMeetingMultiStepForm/sampleTemplates.js +0 -44
  367. package/dist/Forms/CreateRoleplay/CreateRoleplay.js +0 -87
  368. package/dist/Forms/CreateRoleplay/CreateRoleplay.test.js +0 -20
  369. package/dist/Forms/CreateRoleplay/Steps/Confirmation/Confirmation.js +0 -166
  370. package/dist/Forms/CreateRoleplay/Steps/Confirmation/package.json +0 -6
  371. package/dist/Forms/CreateRoleplay/Steps/RoleplayInformation/RoleplayInformation.js +0 -501
  372. package/dist/Forms/CreateRoleplay/Steps/RoleplayInformation/package.json +0 -6
  373. package/dist/Forms/CreateRoleplay/Steps/RoleplaySettings/RoleplaySettings.js +0 -261
  374. package/dist/Forms/CreateRoleplay/Steps/RoleplaySettings/package.json +0 -6
  375. package/dist/Forms/CreateRoleplay/Steps/index.js +0 -4
  376. package/dist/Forms/CreateRoleplay/package.json +0 -6
  377. package/dist/Forms/CreateRoleplayHook/CreateRoleplayHook.js +0 -83
  378. package/dist/Forms/CreateRoleplayHook/CreateRoleplayHook.test.js +0 -20
  379. package/dist/Forms/CreateRoleplayHook/Steps/Confirmation/Confirmation.js +0 -174
  380. package/dist/Forms/CreateRoleplayHook/Steps/Confirmation/package.json +0 -6
  381. package/dist/Forms/CreateRoleplayHook/Steps/RoleplayInformation/RoleplayInformation.js +0 -487
  382. package/dist/Forms/CreateRoleplayHook/Steps/RoleplayInformation/package.json +0 -6
  383. package/dist/Forms/CreateRoleplayHook/Steps/RoleplaySettings/RoleplaySettings.js +0 -330
  384. package/dist/Forms/CreateRoleplayHook/Steps/RoleplaySettings/package.json +0 -6
  385. package/dist/Forms/CreateRoleplayHook/Steps/index.js +0 -4
  386. package/dist/Forms/CreateRoleplayHook/package.json +0 -6
  387. package/dist/Forms/CreateTopic/CreateTopic.js +0 -52
  388. package/dist/Forms/CreateTopic/CreateTopic.test.js +0 -20
  389. package/dist/Forms/CreateTopic/Steps/Confirmation/Confirmation.js +0 -111
  390. package/dist/Forms/CreateTopic/Steps/Confirmation/package.json +0 -6
  391. package/dist/Forms/CreateTopic/Steps/Customization/Customization.js +0 -77
  392. package/dist/Forms/CreateTopic/Steps/Customization/package.json +0 -6
  393. package/dist/Forms/CreateTopic/Steps/TopicInformation/TopicInformation.js +0 -190
  394. package/dist/Forms/CreateTopic/Steps/TopicInformation/package.json +0 -6
  395. package/dist/Forms/CreateTopic/Steps/TopicSettings/TopicSettings.js +0 -81
  396. package/dist/Forms/CreateTopic/Steps/TopicSettings/package.json +0 -6
  397. package/dist/Forms/CreateTopic/Steps/index.js +0 -4
  398. package/dist/Forms/CreateTopic/package.json +0 -6
  399. package/dist/Forms/CreateUser/CreateUser.js +0 -77
  400. package/dist/Forms/DiscussImageSelector/ImageSelector.js +0 -311
  401. package/dist/Forms/DiscussImageSelector/package.json +0 -6
  402. package/dist/Forms/DiscussMultiStepFormDialog/MultiStepFormDialog.js +0 -402
  403. package/dist/Forms/DiscussMultiStepFormDialog/package.json +0 -6
  404. package/dist/Forms/FeedbackForm/FeedbackForm.js +0 -1036
  405. package/dist/Forms/FeedbackInfo/FeedbackInfo.js +0 -233
  406. package/dist/Forms/ImageSelector/ImageSelector.js +0 -516
  407. package/dist/Forms/ImageSelector/package.json +0 -6
  408. package/dist/Forms/InputHelper/InputHelper.js +0 -277
  409. package/dist/Forms/InputHelper/package.json +0 -6
  410. package/dist/Forms/LanguageSelector/LanguageSelector.js +0 -49
  411. package/dist/Forms/LanguageSelector/LanguageSelector.test.js +0 -15
  412. package/dist/Forms/MarkdownEditor/MarkdownEditor.js +0 -72
  413. package/dist/Forms/MarkdownEditor/MarkdownEditor.test.js +0 -35
  414. package/dist/Forms/MarkdownEditor/package.json +0 -6
  415. package/dist/Forms/MultiStepForm/Debug.js +0 -38
  416. package/dist/Forms/MultiStepForm/MultiStepForm.js +0 -278
  417. package/dist/Forms/MultiStepForm/MultiStepForm.test.js +0 -20
  418. package/dist/Forms/MultiStepForm/package.json +0 -6
  419. package/dist/Forms/MultiStepFormDialog/MultiStepFormDialog.js +0 -354
  420. package/dist/Forms/MultiStepFormDialog/MultiStepFormDialog.test.js +0 -20
  421. package/dist/Forms/MultiStepFormDialog/package.json +0 -6
  422. package/dist/Forms/MultiStepFormHook/MultiStepFormHook.js +0 -279
  423. package/dist/Forms/PdfUploader/PdfUploader.js +0 -250
  424. package/dist/Forms/PdfUploader/package.json +0 -6
  425. package/dist/Forms/RecordingInfo/RecordingInfo.js +0 -140
  426. package/dist/Forms/Settings/Settings.js +0 -138
  427. package/dist/Forms/Settings/Tabs/Display/Display.js +0 -106
  428. package/dist/Forms/Settings/Tabs/Display/package.json +0 -6
  429. package/dist/Forms/Settings/Tabs/EmailNotifications/EmailNotifications.js +0 -108
  430. package/dist/Forms/Settings/Tabs/EmailNotifications/package.json +0 -6
  431. package/dist/Forms/Settings/Tabs/General/General.js +0 -534
  432. package/dist/Forms/Settings/Tabs/General/package.json +0 -6
  433. package/dist/Forms/Settings/Tabs/Subscription/Subscription.js +0 -259
  434. package/dist/Forms/Settings/Tabs/Subscription/package.json +0 -6
  435. package/dist/Forms/Settings/package.json +0 -6
  436. package/dist/Forms/SortBySelector/SortBySelector.js +0 -47
  437. package/dist/Forms/UpdateBot/UpdateBot.js +0 -234
  438. package/dist/Forms/UpdateBot/UpdateBot.test.js +0 -23
  439. package/dist/Forms/UpdateBot/package.json +0 -6
  440. package/dist/Forms/UpdateClassroom/UpdateClassroom.js +0 -368
  441. package/dist/Forms/UpdateClassroom/UpdateClassroom.test.js +0 -20
  442. package/dist/Forms/UpdateClassroom/package.json +0 -6
  443. package/dist/Forms/UpdateCourse/UpdateCourse.js +0 -260
  444. package/dist/Forms/UpdateCourse/UpdateCourse.test.js +0 -20
  445. package/dist/Forms/UpdateCourse/package.json +0 -6
  446. package/dist/Forms/UpdateGroup/UpdateGroup.js +0 -185
  447. package/dist/Forms/UpdateGroup/UpdateGroup.test.js +0 -25
  448. package/dist/Forms/UpdateGroup/package.json +0 -6
  449. package/dist/Forms/UpdatePhraseList/UpdatePhraseList.js +0 -529
  450. package/dist/Forms/UpdateRoleplay/UpdateRoleplay.js +0 -238
  451. package/dist/Forms/UpdateRoleplay/UpdateRoleplay.test.js +0 -20
  452. package/dist/Forms/UpdateRoleplay/package.json +0 -6
  453. package/dist/Forms/UpdateTopic/UpdateTopic.js +0 -248
  454. package/dist/Forms/UpdateTopic/UpdateTopic.test.js +0 -20
  455. package/dist/Forms/UpdateTopic/package.json +0 -6
  456. package/dist/Forms/VideoUploader/VideoUploader.js +0 -197
  457. package/dist/Forms/VideoUploader/package.json +0 -6
  458. package/dist/Forms/VoiceSelector/VoiceSelector.js +0 -343
  459. package/dist/Forms/VoiceSelector/VoiceSelector.test.js +0 -15
  460. package/dist/Forms/VoiceSelector/package.json +0 -6
  461. package/dist/Lists/Avatars/Avatars.js +0 -67
  462. package/dist/Lists/Bots/Bots.js +0 -208
  463. package/dist/Lists/Bots/Bots.test.js +0 -24
  464. package/dist/Lists/Bots/package.json +0 -6
  465. package/dist/Lists/Categories/Categories.js +0 -93
  466. package/dist/Lists/Categories/Categories.test.js +0 -22
  467. package/dist/Lists/Categories/package.json +0 -6
  468. package/dist/Lists/Categories/sample.png +0 -0
  469. package/dist/Lists/Classrooms/Classrooms.js +0 -117
  470. package/dist/Lists/Classrooms/Classrooms.test.js +0 -30
  471. package/dist/Lists/Classrooms/package.json +0 -6
  472. package/dist/Lists/CourseOutline/CourseOutline.js +0 -1542
  473. package/dist/Lists/CourseOutline/CourseOutline.test.js +0 -23
  474. package/dist/Lists/CourseOutline/package.json +0 -6
  475. package/dist/Lists/CourseSelection/CourseSelection.js +0 -166
  476. package/dist/Lists/Courses/Courses.js +0 -184
  477. package/dist/Lists/Courses/Courses.test.js +0 -30
  478. package/dist/Lists/Courses/package.json +0 -6
  479. package/dist/Lists/ExerciseSelection/ExerciseSelection.js +0 -523
  480. package/dist/Lists/Exercises/Exercises.js +0 -1630
  481. package/dist/Lists/Exercises/Exercises.test.js +0 -29
  482. package/dist/Lists/Exercises/package.json +0 -6
  483. package/dist/Lists/Leaderboard/Leaderboard.js +0 -405
  484. package/dist/Lists/Leaderboard/package.json +0 -6
  485. package/dist/Lists/ListElements/index.js +0 -35
  486. package/dist/Lists/Members/Members.js +0 -433
  487. package/dist/Lists/Members/Members.test.js +0 -20
  488. package/dist/Lists/Members/package.json +0 -6
  489. package/dist/Lists/ParseScriptErrors/ParseScriptErrors.js +0 -29
  490. package/dist/Lists/PhraseListSelection/PhraseListSelection.js +0 -238
  491. package/dist/Lists/Phrases/Phrases.js +0 -716
  492. package/dist/Lists/Phrases/Phrases.test.js +0 -28
  493. package/dist/Lists/Phrases/package.json +0 -6
  494. package/dist/Lists/RoleplaySelection/RoleplaySelection.js +0 -192
  495. package/dist/Lists/Roleplays/Roleplays.js +0 -218
  496. package/dist/Lists/Roleplays/Roleplays.test.js +0 -24
  497. package/dist/Lists/Roleplays/package.json +0 -6
  498. package/dist/Lists/Sections/Sections.js +0 -238
  499. package/dist/Lists/Sections/Sections.test.js +0 -20
  500. package/dist/Lists/Sections/package.json +0 -6
  501. package/dist/Lists/SubscriptionPlans/SubscriptionPlans.js +0 -49
  502. package/dist/Lists/SubscriptionPlans/SubscriptionPlans.test.js +0 -20
  503. package/dist/Lists/SubscriptionPlans/package.json +0 -6
  504. package/dist/Lists/Timeline/EventItem.js +0 -154
  505. package/dist/Lists/Timeline/EventList.js +0 -34
  506. package/dist/Lists/Timeline/TimelineLoaded.js +0 -65
  507. package/dist/Lists/Timeline/groupByDay.js +0 -24
  508. package/dist/Lists/TopicPreview/TopicPreview.js +0 -454
  509. package/dist/Lists/TopicPreview/package.json +0 -6
  510. package/dist/Lists/Topics/Topics.js +0 -123
  511. package/dist/Lists/Topics/Topics.test.js +0 -21
  512. package/dist/Lists/Topics/package.json +0 -6
  513. package/dist/Lists/Voices/Voices.js +0 -257
  514. package/dist/Lists/Voices/Voices.test.js +0 -15
  515. package/dist/Lists/Voices/horse.ogm +0 -0
  516. package/dist/Lists/Voices/package.json +0 -6
  517. package/dist/Live/Game/Game.js +0 -682
  518. package/dist/Live/Game/package.json +0 -6
  519. package/dist/Live/GameControls/GameControls.js +0 -69
  520. package/dist/Live/GameControls/package.json +0 -6
  521. package/dist/Live/GameMembers/GameMembers.js +0 -185
  522. package/dist/Live/GameMembers/package.json +0 -6
  523. package/dist/Live/GameQuestionResults/GameQuestionResults.js +0 -96
  524. package/dist/Live/GameQuestionResults/package.json +0 -6
  525. package/dist/Live/GameSettings/GameSettings.js +0 -248
  526. package/dist/Live/GameSettings/package.json +0 -6
  527. package/dist/Live/HowToJoin/HowToJoin.js +0 -120
  528. package/dist/Live/HowToJoin/package.json +0 -6
  529. package/dist/Live/LiveListener/LiveListener.js +0 -612
  530. package/dist/Live/LiveListener/package.json +0 -6
  531. package/dist/Live/LiveMeaning/LiveMeaning.js +0 -389
  532. package/dist/Live/LiveMeaningReadWrite/LiveMeaningReadWrite.js +0 -396
  533. package/dist/Live/LiveRoleplay/LiveStory/LiveStory.js +0 -260
  534. package/dist/Live/LiveRoleplay/LiveStory/package.json +0 -6
  535. package/dist/Live/LiveTranslator/LiveTranslator.js +0 -732
  536. package/dist/Live/Misc/FinalScoreDrawer/FinalScoreDrawer.js +0 -245
  537. package/dist/Live/Misc/FinalScoreDrawer/package.json +0 -6
  538. package/dist/Live/Misc/StudentAnswerDrawer/StudentAnswerDrawer.js +0 -146
  539. package/dist/Live/Misc/StudentAnswerDrawer/package.json +0 -6
  540. package/dist/Live/WaitingRoom/WaitingRoom.js +0 -422
  541. package/dist/Live/WaitingRoom/package.json +0 -6
  542. package/dist/Misc/AiExperienceIcon/AiExperienceIcon.js +0 -128
  543. package/dist/Misc/AnswerResult/AnswerResult.js +0 -882
  544. package/dist/Misc/AnswerResult/package.json +0 -6
  545. package/dist/Misc/AvatarSelector/AvatarSelector.js +0 -183
  546. package/dist/Misc/AvatarSwitcher/AvatarSwitcher.js +0 -57
  547. package/dist/Misc/AxiosRestExample/AxiosRestExample.js +0 -46
  548. package/dist/Misc/AxiosRestExample/AxiosRestPostExample.js +0 -65
  549. package/dist/Misc/CSVUploader/CSVUploader.js +0 -153
  550. package/dist/Misc/CSVUploader/package.json +0 -6
  551. package/dist/Misc/ChatBubble/ChatBubble.js +0 -71
  552. package/dist/Misc/ColorLinearProgress/ColorLinearProgress.js +0 -28
  553. package/dist/Misc/ColorLinearProgress/package.json +0 -6
  554. package/dist/Misc/ColorSelector/ColorSelector.js +0 -143
  555. package/dist/Misc/ColorSelector/package.json +0 -6
  556. package/dist/Misc/CustomChipInput/CustomChipInput.js +0 -391
  557. package/dist/Misc/CustomChipInput/package.json +0 -6
  558. package/dist/Misc/DefaultColourButton/DefaultColourButton.js +0 -39
  559. package/dist/Misc/DefaultColourButton/package.json +0 -6
  560. package/dist/Misc/DiscussionTopicSelector/TopicSelector.js +0 -191
  561. package/dist/Misc/DiscussionTopicSelector/package.json +0 -6
  562. package/dist/Misc/DragAndDropPreview/DragAndDropPreview.js +0 -40
  563. package/dist/Misc/DragAndDropPreview/package.json +0 -6
  564. package/dist/Misc/EmojiInput/EmojiInput.js +0 -83
  565. package/dist/Misc/EmojiInput/css/emoji-mart.css +0 -497
  566. package/dist/Misc/ExerciseBottomBar/ExerciseBottomBar.js +0 -95
  567. package/dist/Misc/ExerciseBottomBar/package.json +0 -6
  568. package/dist/Misc/ExerciseProgressBar/ExerciseProgressBar.js +0 -56
  569. package/dist/Misc/ExerciseProgressBar/package.json +0 -6
  570. package/dist/Misc/FabContainer/FabContainer.js +0 -42
  571. package/dist/Misc/FabContainer/package.json +0 -6
  572. package/dist/Misc/HideOnScroll/HideOnScroll.js +0 -27
  573. package/dist/Misc/HideOnScroll/package.json +0 -6
  574. package/dist/Misc/HoverText/HoverText.js +0 -303
  575. package/dist/Misc/HtmlTooltipComponent/HtmlTooltipComponent.js +0 -69
  576. package/dist/Misc/HtmlTooltipComponent/package.json +0 -6
  577. package/dist/Misc/ImageLibrary/ImageLibrary.js +0 -311
  578. package/dist/Misc/ImagePreview/ImagePreview.js +0 -43
  579. package/dist/Misc/InfiniteScroll/InfiniteScroll.js +0 -37
  580. package/dist/Misc/InfiniteScroll/package.json +0 -6
  581. package/dist/Misc/LanguageSelector/LanguageSelector.js +0 -163
  582. package/dist/Misc/LanguageSelector/package.json +0 -6
  583. package/dist/Misc/MedalSelector/BronzeMedal.js +0 -1362
  584. package/dist/Misc/MedalSelector/GoldMedal.js +0 -1322
  585. package/dist/Misc/MedalSelector/MedalSelector.js +0 -55
  586. package/dist/Misc/MedalSelector/SilverMedal.js +0 -1862
  587. package/dist/Misc/MedalSelector/styles.css +0 -24
  588. package/dist/Misc/NotFound/Bot.js +0 -62
  589. package/dist/Misc/NotFound/Bots.js +0 -75
  590. package/dist/Misc/NotFound/ClassCourses.js +0 -200
  591. package/dist/Misc/NotFound/Classroom.js +0 -61
  592. package/dist/Misc/NotFound/Classrooms.js +0 -93
  593. package/dist/Misc/NotFound/Course.js +0 -62
  594. package/dist/Misc/NotFound/Courses.js +0 -111
  595. package/dist/Misc/NotFound/Discussions.js +0 -52
  596. package/dist/Misc/NotFound/Members.js +0 -48
  597. package/dist/Misc/NotFound/Roleplay.js +0 -62
  598. package/dist/Misc/NotFound/Roleplays.js +0 -75
  599. package/dist/Misc/NotFound/Script.js +0 -47
  600. package/dist/Misc/NotFound/Sections.js +0 -63
  601. package/dist/Misc/NotFound/Topic.js +0 -62
  602. package/dist/Misc/Notes/Notes.js +0 -77
  603. package/dist/Misc/Notes/Notes.test.js +0 -20
  604. package/dist/Misc/Notes/package.json +0 -6
  605. package/dist/Misc/NualaCreating/Nuala1.js +0 -352
  606. package/dist/Misc/NualaCreating/Nuala2.js +0 -455
  607. package/dist/Misc/NualaCreating/Nuala3.js +0 -462
  608. package/dist/Misc/NualaCreating/NualaCreating.js +0 -23
  609. package/dist/Misc/NualaCreating/styles.css +0 -68
  610. package/dist/Misc/NualangVerifiedIcon/NualangVerifiedIcon.js +0 -19
  611. package/dist/Misc/OnboardingEnrolment/CheckIfCourse.js +0 -33
  612. package/dist/Misc/OnboardingEnrolment/ClassCodeInvalid.js +0 -14
  613. package/dist/Misc/OnboardingEnrolment/ClassroomCodeInvalid.js +0 -14
  614. package/dist/Misc/OnboardingEnrolment/EnrolKey.js +0 -14
  615. package/dist/Misc/Overlay/Overlay.js +0 -59
  616. package/dist/Misc/Overlay/package.json +0 -6
  617. package/dist/Misc/PhraseDisplay/PhraseDisplay.js +0 -123
  618. package/dist/Misc/ProgressiveCardMedia/ProgressiveCardMedia.js +0 -38
  619. package/dist/Misc/ProgressiveCardMedia/package.json +0 -6
  620. package/dist/Misc/PronunciationScore/PronunciationScore.js +0 -92
  621. package/dist/Misc/PronunciationScore/package.json +0 -6
  622. package/dist/Misc/QuickCreateNualaAnimations/ChatbotNualaAnimation.js +0 -154
  623. package/dist/Misc/QuickCreateNualaAnimations/ClassroomNualaAnimation.js +0 -201
  624. package/dist/Misc/QuickCreateNualaAnimations/CourseNualaAnimation.js +0 -154
  625. package/dist/Misc/QuickCreateNualaAnimations/PhraseListNualaAnimation.js +0 -268
  626. package/dist/Misc/QuickCreateNualaAnimations/ScenarioNualaAnimation.js +0 -128
  627. package/dist/Misc/QuickCreateNualaAnimations/TopicNualaAnimation.js +0 -134
  628. package/dist/Misc/QuickCreateNualaAnimations/characterMotion.js +0 -172
  629. package/dist/Misc/Recorder/Recorder.js +0 -151
  630. package/dist/Misc/Recorder/package.json +0 -6
  631. package/dist/Misc/ReportProblem/ReportProblem.js +0 -64
  632. package/dist/Misc/ReportProblem/package.json +0 -6
  633. package/dist/Misc/RoleplayChatWaveForm/RoleplayChatWaveForm.js +0 -199
  634. package/dist/Misc/RoleplayChatWaveForm/package.json +0 -6
  635. package/dist/Misc/RoleplayWaveform/RoleplayWaveform.js +0 -95
  636. package/dist/Misc/RoleplayWaveform/package.json +0 -6
  637. package/dist/Misc/RubyText/RubyText.js +0 -27
  638. package/dist/Misc/ShareButton/ShareButton.js +0 -69
  639. package/dist/Misc/ShareButton/ShareDrawer.js +0 -241
  640. package/dist/Misc/ShareButton/package.json +0 -6
  641. package/dist/Misc/SignOut/SignOut.js +0 -132
  642. package/dist/Misc/SignOut/package.json +0 -6
  643. package/dist/Misc/SiteLanguageSelector/SiteLanguageSelector.js +0 -107
  644. package/dist/Misc/SiteLanguageSelector/package.json +0 -6
  645. package/dist/Misc/Snackbar/Snackbar.js +0 -98
  646. package/dist/Misc/Snackbar/package.json +0 -6
  647. package/dist/Misc/SpeedDial/SpeedDial.js +0 -49
  648. package/dist/Misc/SpeedDial/package.json +0 -6
  649. package/dist/Misc/StudentWaitingMessage/StudentWaitingMessage.js +0 -38
  650. package/dist/Misc/SubmitTextField/SubmitTextField.js +0 -48
  651. package/dist/Misc/Testimonials/Testimonials.js +0 -82
  652. package/dist/Misc/Testimonials/package.json +0 -6
  653. package/dist/Misc/ThemeToggle/ThemeToggle.js +0 -39
  654. package/dist/Misc/ThemeToggle/package.json +0 -6
  655. package/dist/Misc/VoiceSpeed/VoiceSpeed.js +0 -68
  656. package/dist/Misc/VoiceSpeed/package.json +0 -6
  657. package/dist/Misc/WaveFormLite/WaveFormLite.js +0 -138
  658. package/dist/Misc/WaveFormLite/package.json +0 -6
  659. package/dist/Misc/Waveform/Waveform.js +0 -93
  660. package/dist/Misc/Waveform/package.json +0 -6
  661. package/dist/Misc/WhatsNew/WhatsNew.js +0 -105
  662. package/dist/Misc/WhatsNew/package.json +0 -6
  663. package/dist/Misc/WhatsNew/whatsnew.md +0 -41
  664. package/dist/Navigation/BottomBar/BottomBar.js +0 -72
  665. package/dist/Navigation/Breadcrumbs/Breadcrumbs.js +0 -113
  666. package/dist/Navigation/Breadcrumbs/Breadcrumbs.test.js +0 -24
  667. package/dist/Navigation/Breadcrumbs/package.json +0 -6
  668. package/dist/Navigation/Header/Header.js +0 -90
  669. package/dist/Navigation/Header/Header.test.js +0 -20
  670. package/dist/Navigation/Header/package.json +0 -6
  671. package/dist/Navigation/ResponsiveDrawer/ResponsiveDrawer.js +0 -532
  672. package/dist/Navigation/ResponsiveDrawer/ResponsiveDrawer.test.js +0 -23
  673. package/dist/Navigation/ResponsiveDrawer/package.json +0 -6
  674. package/dist/Navigation/ResponsiveStepper/ResponsiveStepper.js +0 -253
  675. package/dist/Navigation/ResponsiveStepper/ResponsiveStepper.test.js +0 -20
  676. package/dist/Navigation/ResponsiveStepper/package.json +0 -6
  677. package/dist/Navigation/ResponsiveTabs/ResponsiveTabs.js +0 -379
  678. package/dist/Navigation/ResponsiveTabs/TabContainer.js +0 -28
  679. package/dist/Navigation/ResponsiveTabs/package.json +0 -6
  680. package/dist/Navigation/_nav.js +0 -164
  681. package/dist/Payments/FreeTrial/FreeTrial.js +0 -106
  682. package/dist/Payments/FreeTrial/package.json +0 -6
  683. package/dist/Tables/Attempt/Attempt.js +0 -322
  684. package/dist/Tables/BotRows/BotRows.js +0 -132
  685. package/dist/Tables/BotRows/package.json +0 -6
  686. package/dist/Tables/Bots/Bots.js +0 -280
  687. package/dist/Tables/Bots/package.json +0 -6
  688. package/dist/Tables/Chart/Chart.js +0 -54
  689. package/dist/Tables/Chart/package.json +0 -5
  690. package/dist/Tables/ClassroomRows/ClassroomRows.js +0 -152
  691. package/dist/Tables/ClassroomRows/package.json +0 -6
  692. package/dist/Tables/Classrooms/Classrooms.js +0 -282
  693. package/dist/Tables/Classrooms/package.json +0 -6
  694. package/dist/Tables/CourseRows/CourseRows.js +0 -185
  695. package/dist/Tables/CourseRows/package.json +0 -6
  696. package/dist/Tables/Courses/Courses.js +0 -287
  697. package/dist/Tables/Courses/Courses.test.js +0 -29
  698. package/dist/Tables/Courses/package.json +0 -6
  699. package/dist/Tables/CreatedDiscussionsTable/CreatedDiscussionsTable.js +0 -188
  700. package/dist/Tables/GameRows/GameRows.js +0 -87
  701. package/dist/Tables/GameRows/package.json +0 -6
  702. package/dist/Tables/Games/Games.js +0 -258
  703. package/dist/Tables/Games/package.json +0 -6
  704. package/dist/Tables/MeetingPrompstList/MeetingPromptsList.js +0 -565
  705. package/dist/Tables/Phrases/Phrases.js +0 -200
  706. package/dist/Tables/Phrases/Phrases.test.js +0 -20
  707. package/dist/Tables/Phrases/package.json +0 -6
  708. package/dist/Tables/Plans/Plans.js +0 -74
  709. package/dist/Tables/Plans/plans.json +0 -162
  710. package/dist/Tables/Plans/plans2.json +0 -151
  711. package/dist/Tables/Progress/Header.js +0 -559
  712. package/dist/Tables/Progress/Progress.js +0 -502
  713. package/dist/Tables/Progress/ProgressList.js +0 -905
  714. package/dist/Tables/Progress/ProgressList.test.js +0 -48
  715. package/dist/Tables/Progress/ProgressTable.js +0 -882
  716. package/dist/Tables/Progress/ProgressTable.test.js +0 -258
  717. package/dist/Tables/Progress/ProgressTableRow.js +0 -295
  718. package/dist/Tables/Progress/README.md +0 -53
  719. package/dist/Tables/Progress/SelectMembers.js +0 -64
  720. package/dist/Tables/Progress/TableToolbar.js +0 -134
  721. package/dist/Tables/Progress/TableToolbar.test.js +0 -69
  722. package/dist/Tables/Progress/cells/index.js +0 -523
  723. package/dist/Tables/Progress/cells/index.test.js +0 -334
  724. package/dist/Tables/Progress/constants.js +0 -11
  725. package/dist/Tables/Progress/exportToExcel.js +0 -224
  726. package/dist/Tables/Progress/exportToExcel.test.js +0 -135
  727. package/dist/Tables/Progress/helpers.js +0 -42
  728. package/dist/Tables/Progress/helpers.test.js +0 -23
  729. package/dist/Tables/Progress/package.json +0 -6
  730. package/dist/Tables/Progress/sorting.js +0 -78
  731. package/dist/Tables/Progress/sorting.test.js +0 -69
  732. package/dist/Tables/Progress/styledComponents.js +0 -156
  733. package/dist/Tables/Progress/useProgressUrlParams.js +0 -162
  734. package/dist/Tables/Progress/useProgressUrlParams.test.js +0 -183
  735. package/dist/Tables/Progress/utils.js +0 -214
  736. package/dist/Tables/Progress/utils.test.js +0 -129
  737. package/dist/Tables/Progress/viewState.js +0 -27
  738. package/dist/Tables/RecordingListCards/RecordingListCards.js +0 -192
  739. package/dist/Tables/RoleplayRows/RoleplayRows.js +0 -129
  740. package/dist/Tables/RoleplayRows/package.json +0 -6
  741. package/dist/Tables/Roleplays/Roleplays.js +0 -280
  742. package/dist/Tables/Roleplays/package.json +0 -6
  743. package/dist/Tables/ScheduleListCards/ScheduleListCards.js +0 -92
  744. package/dist/Tables/SubmissionsTableCards/SubmissionsTableCards.js +0 -296
  745. package/dist/Tables/TrialUsers/TrialUsers.js +0 -155
  746. package/dist/Tables/Unanswered/Unanswered.js +0 -97
  747. package/dist/Tables/User/UserTable.js +0 -139
  748. package/dist/Tables/Users/UsersTable.js +0 -159
  749. package/dist/animations/celebrationCharacterMotion.js +0 -336
  750. package/dist/animations/index.js +0 -30
  751. package/dist/animations/nuala_10_celebrating.js +0 -233
  752. package/dist/animations/nuala_11_celebrating.js +0 -190
  753. package/dist/animations/nuala_12_celebrating.js +0 -172
  754. package/dist/animations/nuala_13_celebrating.js +0 -160
  755. package/dist/animations/nuala_14_celebrating.js +0 -135
  756. package/dist/animations/nuala_15_celebrating.js +0 -139
  757. package/dist/animations/nuala_16_celebrating.js +0 -121
  758. package/dist/animations/nuala_17_celebrating.js +0 -140
  759. package/dist/animations/nuala_18_celebrating.js +0 -134
  760. package/dist/animations/nuala_19_celebrating.js +0 -216
  761. package/dist/animations/nuala_1_celebrating.js +0 -131
  762. package/dist/animations/nuala_1_speaking.js +0 -163
  763. package/dist/animations/nuala_20_celebrating.js +0 -138
  764. package/dist/animations/nuala_21_celebrating.js +0 -137
  765. package/dist/animations/nuala_2_celebrating.js +0 -102
  766. package/dist/animations/nuala_2_speaking.js +0 -139
  767. package/dist/animations/nuala_3_celebrating.js +0 -104
  768. package/dist/animations/nuala_3_speaking.js +0 -136
  769. package/dist/animations/nuala_4_celebrating.js +0 -145
  770. package/dist/animations/nuala_5_celebrating.js +0 -131
  771. package/dist/animations/nuala_6_celebrating.js +0 -141
  772. package/dist/animations/nuala_7_celebrating.js +0 -160
  773. package/dist/animations/nuala_8_celebrating.js +0 -108
  774. package/dist/animations/nuala_9_celebrating.js +0 -119
  775. package/dist/animations/speakingCharacterMotion.js +0 -157
  776. package/dist/config.js +0 -414
  777. package/dist/hooks/handleBotVarsDownload.js +0 -40
  778. package/dist/hooks/handleScriptDownload.js +0 -93
  779. package/dist/hooks/useClassroomState.js +0 -55
  780. package/dist/hooks/useClassroomStateOld.js +0 -81
  781. package/dist/hooks/useConfirm.js +0 -19
  782. package/dist/hooks/useCourseState.js +0 -62
  783. package/dist/hooks/useCourseStateOld.js +0 -89
  784. package/dist/hooks/useDebounce.js +0 -20
  785. package/dist/hooks/useExerciseDocumentTitle.js +0 -15
  786. package/dist/hooks/useExerciseState.js +0 -2063
  787. package/dist/hooks/useLanguageTokens.js +0 -73
  788. package/dist/hooks/useListScroll.js +0 -19
  789. package/dist/hooks/usePhonetics.js +0 -64
  790. package/dist/hooks/usePhraseNameDialog.js +0 -10
  791. package/dist/hooks/useProgressiveImg.js +0 -21
  792. package/dist/hooks/useRecognition.js +0 -455
  793. package/dist/hooks/useSpreadsheetState.js +0 -87
  794. package/dist/hooks/useUrlQueryParam.js +0 -27
  795. package/dist/hooks/useWordBankFocus.js +0 -80
  796. package/dist/icons/AccountBalanceOff.js +0 -5
  797. package/dist/icons/KeyBoardOffDark.js +0 -22
  798. package/dist/icons/KeyBoardOffLight.js +0 -22
  799. package/dist/img/0-nuala-001.svg +0 -34
  800. package/dist/img/1-teacher-001.svg +0 -38
  801. package/dist/img/AudioNuala.svg +0 -165
  802. package/dist/img/Bronze Medal.svg +0 -545
  803. package/dist/img/Bronze.svg +0 -349
  804. package/dist/img/BronzeBadge.svg +0 -493
  805. package/dist/img/BronzeBadgeWithoutRibbon.svg +0 -317
  806. package/dist/img/Frame 51.svg +0 -98
  807. package/dist/img/Frame 52.svg +0 -131
  808. package/dist/img/Frame 53.svg +0 -139
  809. package/dist/img/Gold Badge.svg +0 -362
  810. package/dist/img/Gold Medal.svg +0 -481
  811. package/dist/img/GoldBadge.svg +0 -470
  812. package/dist/img/GoldBadgeWithoutRibbon.svg +0 -324
  813. package/dist/img/NewText.svg +0 -5
  814. package/dist/img/NualaCreateImage.svg +0 -129
  815. package/dist/img/NualaHeadphonesBackground.svg +0 -39
  816. package/dist/img/NualangLiveAnswerQuickly.svg +0 -103
  817. package/dist/img/NualangLiveAnwerQuicklyListening.svg +0 -3608
  818. package/dist/img/NualangLiveListen.png +0 -0
  819. package/dist/img/NualangLiveListen.svg +0 -42
  820. package/dist/img/NualangLiveListenQuickly.png +0 -0
  821. package/dist/img/NualangLiveListenToPhrase.svg +0 -4286
  822. package/dist/img/NualangLivePickAnswer.svg +0 -134
  823. package/dist/img/NualangLiveResult.png +0 -0
  824. package/dist/img/NualangLiveResult.svg +0 -1235
  825. package/dist/img/NualangLiveRoleplayAnswer.png +0 -0
  826. package/dist/img/NualangLiveRoleplayAnswer.svg +0 -334
  827. package/dist/img/NualangLiveRoleplayConvo.png +0 -0
  828. package/dist/img/NualangLiveRoleplayConvo.svg +0 -282
  829. package/dist/img/NualangLiveSeePlace.svg +0 -134
  830. package/dist/img/NualangLiveTranslate.png +0 -0
  831. package/dist/img/NualangLiveTranslate.svg +0 -54
  832. package/dist/img/NualangLiveTranslateQuickly.png +0 -0
  833. package/dist/img/NualangLiveTranslateQuickly.svg +0 -197
  834. package/dist/img/NualangLiveViewConversations.svg +0 -135
  835. package/dist/img/Polly.svg +0 -18
  836. package/dist/img/Silver Badge.svg +0 -523
  837. package/dist/img/Silver Medal.svg +0 -549
  838. package/dist/img/SilverBadge.svg +0 -655
  839. package/dist/img/SilverBadgeWithoutRibbon.svg +0 -491
  840. package/dist/img/aaron-square.jpg +0 -0
  841. package/dist/img/aaronAvatar.png +0 -0
  842. package/dist/img/add-file.svg +0 -1
  843. package/dist/img/avatars/0-nuala-001.svg +0 -34
  844. package/dist/img/avatars/0-nuala-002.svg +0 -25
  845. package/dist/img/avatars/0-nuala-003.svg +0 -27
  846. package/dist/img/avatars/0-nuala-004.svg +0 -41
  847. package/dist/img/avatars/0-nuala-005.svg +0 -33
  848. package/dist/img/avatars/0-nuala-006.svg +0 -32
  849. package/dist/img/avatars/0-nuala-007.svg +0 -37
  850. package/dist/img/avatars/0-nuala-008.svg +0 -21
  851. package/dist/img/avatars/0-nuala-009.svg +0 -21
  852. package/dist/img/avatars/0-nuala-010.svg +0 -39
  853. package/dist/img/avatars/0-nuala-011.svg +0 -33
  854. package/dist/img/avatars/0-nuala-012.svg +0 -43
  855. package/dist/img/avatars/0-nuala-013.svg +0 -36
  856. package/dist/img/avatars/0-nuala-014.svg +0 -30
  857. package/dist/img/avatars/0-nuala-015.svg +0 -28
  858. package/dist/img/avatars/0-nuala-016.svg +0 -24
  859. package/dist/img/avatars/0-nuala-017.svg +0 -31
  860. package/dist/img/avatars/0-nuala-018.svg +0 -29
  861. package/dist/img/avatars/0-nuala-019.svg +0 -57
  862. package/dist/img/avatars/0-nuala-020.svg +0 -30
  863. package/dist/img/avatars/0-nuala-021.svg +0 -28
  864. package/dist/img/avatars/001-man.svg +0 -104
  865. package/dist/img/avatars/002-girl.svg +0 -92
  866. package/dist/img/avatars/006-woman-1.svg +0 -99
  867. package/dist/img/avatars/028-woman-7.svg +0 -95
  868. package/dist/img/avatars/029-man-8.svg +0 -95
  869. package/dist/img/avatars/035-woman-9.svg +0 -86
  870. package/dist/img/avatars/066-boy-6.svg +0 -91
  871. package/dist/img/avatars/1-teacher-001.svg +0 -38
  872. package/dist/img/avatars/1-teacher-002.svg +0 -52
  873. package/dist/img/avatars/1-teacher-003.svg +0 -86
  874. package/dist/img/avatars/avatar1.png +0 -0
  875. package/dist/img/avatars/avatar2.png +0 -0
  876. package/dist/img/avatars/nuala_10_speaking.svg +0 -45
  877. package/dist/img/avatars/nuala_11_speaking.svg +0 -41
  878. package/dist/img/avatars/nuala_12_speaking.svg +0 -49
  879. package/dist/img/avatars/nuala_13_speaking.svg +0 -44
  880. package/dist/img/avatars/nuala_14_speaking.svg +0 -36
  881. package/dist/img/avatars/nuala_15_speaking.svg +0 -36
  882. package/dist/img/avatars/nuala_16_speaking.svg +0 -32
  883. package/dist/img/avatars/nuala_17_speaking.svg +0 -39
  884. package/dist/img/avatars/nuala_18_speaking.svg +0 -37
  885. package/dist/img/avatars/nuala_19_speaking.svg +0 -65
  886. package/dist/img/avatars/nuala_1_celebrating.svg +0 -30
  887. package/dist/img/avatars/nuala_1_speaking.svg +0 -37
  888. package/dist/img/avatars/nuala_20_speaking.svg +0 -38
  889. package/dist/img/avatars/nuala_21_speaking.svg +0 -36
  890. package/dist/img/avatars/nuala_2_speaking.svg +0 -29
  891. package/dist/img/avatars/nuala_3_speaking.svg +0 -28
  892. package/dist/img/avatars/nuala_4_speaking.svg +0 -41
  893. package/dist/img/avatars/nuala_5_speaking.svg +0 -36
  894. package/dist/img/avatars/nuala_6_speaking.svg +0 -36
  895. package/dist/img/avatars/nuala_7_speaking.svg +0 -43
  896. package/dist/img/avatars/nuala_8_speaking.svg +0 -29
  897. package/dist/img/avatars/nuala_9_speaking.svg +0 -27
  898. package/dist/img/aws.svg +0 -6
  899. package/dist/img/azure.svg +0 -10
  900. package/dist/img/bot-error.svg +0 -28
  901. package/dist/img/bot_nuala.svg +0 -45
  902. package/dist/img/classroom.svg +0 -178
  903. package/dist/img/connorAvatar.png +0 -0
  904. package/dist/img/course.svg +0 -113
  905. package/dist/img/dashboard.svg +0 -104
  906. package/dist/img/defaultImg.png +0 -0
  907. package/dist/img/google-classroom.svg +0 -1
  908. package/dist/img/jamieAvatar.png +0 -0
  909. package/dist/img/nuala_1_celebrating.svg +0 -33
  910. package/dist/img/nuala_2_celebrating.svg +0 -20
  911. package/dist/img/nuala_3_celebrating.svg +0 -21
  912. package/dist/img/nuala_4_celebrating.svg +0 -30
  913. package/dist/img/nuala_5_celebrating.svg +0 -30
  914. package/dist/img/nuala_celebrating.svg +0 -39
  915. package/dist/img/nuala_sign_in.svg +0 -62
  916. package/dist/img/nuala_speaking.svg +0 -41
  917. package/dist/img/nuala_speaking_2.svg +0 -41
  918. package/dist/img/nuala_speaking_3.svg +0 -41
  919. package/dist/img/nuala_speaking_4.svg +0 -41
  920. package/dist/img/nualang-logo-primary.svg +0 -17
  921. package/dist/img/nualangSquareIcon.svg +0 -18
  922. package/dist/img/nualas.svg +0 -185
  923. package/dist/img/photos.svg +0 -1
  924. package/dist/img/sentiment_dissatisfied_24px.svg +0 -3
  925. package/dist/img/sentiment_satisfied_24px.svg +0 -3
  926. package/dist/img/sentiment_very_satisfied_24px.svg +0 -3
  927. package/dist/img/soundWave.png +0 -0
  928. package/dist/img/stars1.svg +0 -44
  929. package/dist/img/stars2.svg +0 -30
  930. package/dist/img/stephenAvatar.png +0 -0
  931. package/dist/img/structuring.svg +0 -76
  932. package/dist/img/teacher-create-2.svg +0 -81
  933. package/dist/img/teacher-create.svg +0 -49
  934. package/dist/img/teacher-world.svg +0 -271
  935. package/dist/img/teacher.svg +0 -89
  936. package/dist/img/work-chat.svg +0 -1
  937. package/dist/img/world.svg +0 -41
  938. package/dist/index.js +0 -4
  939. package/dist/logger.js +0 -6
  940. package/dist/theme/colors/primary.js +0 -17
  941. package/dist/theme/colors/secondary.js +0 -17
  942. package/dist/theme/getComponents.js +0 -242
  943. package/dist/theme/index.js +0 -82
  944. package/dist/utils/Styles.js +0 -59
  945. package/dist/utils/canvasUtils.js +0 -55
  946. package/dist/utils/constants.js +0 -32
  947. package/dist/utils/currency-code-map.json +0 -1460
  948. package/dist/utils/dragAndDrop/dragAndDrop.js +0 -222
  949. package/dist/utils/index.js +0 -641
  950. package/dist/utils/japaneseTokenizer.js +0 -91
  951. package/dist/utils/languageHelpers.js +0 -41
  952. package/dist/utils/placeholder-images/index.js +0 -13
  953. package/dist/utils/voiceImages.js +0 -16
@@ -1,1630 +0,0 @@
1
- import { useState, useEffect, useRef, useCallback } from "react";
2
- import { useLocation, useNavigate, useParams } from "react-router";
3
- import CopyIcon from "@mui/icons-material/FileCopy";
4
- import Typography from "@mui/material/Typography";
5
- import MoreVertIcon from "@mui/icons-material/MoreVert";
6
- import Menu from "@mui/material/Menu";
7
- import MenuItem from "@mui/material/MenuItem";
8
- import useMediaQuery from "@mui/material/useMediaQuery";
9
- import { Avatar, AvatarGroup, ListItem, ListItemButton } from "@mui/material";
10
- import SelectClassroom from "../../Dialogs/SelectClassroom/SelectClassroom";
11
- import PlaceholderImages from "../../utils/placeholder-images/index";
12
- import { useDrag, useDrop } from "react-dnd";
13
- import update from "immutability-helper";
14
- import { searchStringToObj, objToSearchString } from "../../utils";
15
- import FlashOnIcon from "@mui/icons-material/FlashOn";
16
- import FlashOffIcon from "@mui/icons-material/FlashOff";
17
- import MenuBookIcon from "@mui/icons-material/MenuBook";
18
- import { Collapse, ListItemText, ListItemIcon, List, ListItemAvatar, IconButton, Badge, Tooltip, Box, Chip, LinearProgress } from "@mui/material";
19
- import Add from "@mui/icons-material/Add";
20
- import Face from "@mui/icons-material/Face";
21
- import ForumIcon from "@mui/icons-material/Forum";
22
- import ExpandLess from "@mui/icons-material/ExpandLess";
23
- import ExpandMore from "@mui/icons-material/ExpandMore";
24
- import Delete from "@mui/icons-material/Delete";
25
- import Create from "@mui/icons-material/Create";
26
- import Done from "@mui/icons-material/Done";
27
- import DragHandle from "@mui/icons-material/DragHandle";
28
- import Visibility from "@mui/icons-material/Visibility";
29
- import VisibilityOff from "@mui/icons-material/VisibilityOff";
30
- import Timeline from "@mui/icons-material/Timeline";
31
- import Timelapse from "@mui/icons-material/Timelapse";
32
- import HtmlTooltipComponent from "../../Misc/HtmlTooltipComponent/HtmlTooltipComponent";
33
- import CreatePhraseGroupDialog from "../../Dialogs/CreatePhraseGroupDialog/CreatePhraseGroupDialog";
34
- import PhraseListEditorDialog from "../../Editors/PhraseList/PhraseList";
35
- import { exercises as PHRASE_GAMES, meaningGames as MEANING_GAMES, roleplayGames as ALL_ROLEPLAY_GAMES } from "../../Tables/Progress/constants";
36
- import { useTheme } from "@mui/material/styles";
37
- import { styled } from "@mui/system";
38
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
39
- const sxRoot = () => ({
40
- width: "100%"
41
- });
42
- const sxNested = theme => ({
43
- paddingLeft: theme.spacing(9)
44
- });
45
- const sxGreenColor = theme => ({
46
- color: theme.palette.success ? theme.palette.success.dark : ""
47
- });
48
- const sxGreenColorWithMargin = theme => ({
49
- color: theme.palette.success ? theme.palette.success.dark : "",
50
- marginTop: theme.spacing(2),
51
- marginRight: theme.spacing(2),
52
- marginBottom: theme.spacing(2)
53
- });
54
- const sxInfoColorWithMargin = theme => ({
55
- color: theme.palette.info ? theme.palette.info.main : "",
56
- marginTop: theme.spacing(2),
57
- marginRight: theme.spacing(2),
58
- marginBottom: theme.spacing(2)
59
- });
60
- const sxDescriptionWrapper = () => ({
61
- maxWidth: "70%"
62
- });
63
- function OverflowMenu({
64
- children,
65
- anchorEl,
66
- handleClose
67
- }) {
68
- return /*#__PURE__*/_jsx(Menu, {
69
- anchorEl: anchorEl,
70
- keepMounted: true,
71
- open: Boolean(anchorEl),
72
- onClose: handleClose,
73
- children: children
74
- });
75
- }
76
- const getRoleplayExerciseState = (topicProgress, roleplayId) => {
77
- const idx = topicProgress.findIndex(p => p.roleplayId === roleplayId);
78
- if (idx > -1) {
79
- return {
80
- existingMessages: topicProgress[idx].existingMessages,
81
- existingAnswerAttempts: topicProgress[idx].answerAttempts,
82
- selectedActor: topicProgress[idx].selectedActor,
83
- exerciseStartTime: topicProgress[idx].exerciseStartTime
84
- };
85
- }
86
- return {
87
- existingMessages: null,
88
- existingAnswerAttempts: null,
89
- selectedActor: null,
90
- exerciseStartTime: null
91
- };
92
- };
93
- const getBotProgress = (topicProgress, botId) => {
94
- const idx = topicProgress.findIndex(p => p.botId === botId);
95
- if (idx > -1) {
96
- return {
97
- existingMessages: topicProgress[idx].existingMessages,
98
- existingVars: topicProgress[idx].existingVars,
99
- exerciseStartTime: topicProgress[idx].exerciseStartTime
100
- };
101
- }
102
- return {
103
- existingMessages: null,
104
- existingVars: null,
105
- exerciseStartTime: null
106
- };
107
- };
108
- export function ProgressBadge({
109
- completions
110
- }) {
111
- return completions > 0 ? /*#__PURE__*/_jsx(Badge, {
112
- sx: sxGreenColorWithMargin,
113
- badgeContent: completions,
114
- color: "default",
115
- children: /*#__PURE__*/_jsx(Done, {})
116
- }) : null;
117
- }
118
- export function InProgressBadge({
119
- progressCount
120
- }) {
121
- return progressCount > 0 ? /*#__PURE__*/_jsx(Badge, {
122
- sx: sxInfoColorWithMargin,
123
- color: "default",
124
- children: /*#__PURE__*/_jsx(Timelapse, {})
125
- }) : null;
126
- }
127
- const isHiddenValue = val => val === true || val === "true";
128
- const ROLEPLAY_HIDDEN_KEYS = {
129
- "fill-in-the-blanks": "isFillInTheBlanksHidden",
130
- "act-it-out": "isActItOutHidden",
131
- "act-it-out-listening": "isActItOutListeningHidden",
132
- "act-it-out-speaking": "isActItOutSpeakingHidden",
133
- "act-it-out-listening-speaking": "isActItOutListeningSpeakingHidden"
134
- };
135
- const ROLEPLAY_READ_WRITE_EXCLUSIONS = new Set(["act-it-out-listening", "act-it-out-speaking", "act-it-out-listening-speaking"]);
136
- const getPhraseListProgress = (completions, phraseList) => {
137
- const hasPhraseDefinitions = (phraseList.phrases || []).some(p => p.definitions?.length > 0);
138
- const coreEnabled = PHRASE_GAMES.filter(g => !MEANING_GAMES.includes(g) && !isHiddenValue(phraseList.hiddenPhraseGroupGames?.[g]));
139
- const meaningEnabled = hasPhraseDefinitions ? MEANING_GAMES.filter(g => !isHiddenValue(phraseList.hiddenPhraseGroupGames?.[g])) : [];
140
- const enabled = [...coreEnabled, ...meaningEnabled];
141
- const total = enabled.length;
142
- if (total === 0) return {
143
- completed: 0,
144
- total: 0
145
- };
146
- const completedSet = new Set((completions || []).filter(c => enabled.includes(c.exercise) && (c.phraseListId === phraseList.phraseListId || !c.phraseListId && phraseList.phraseListId?.startsWith("leg-"))).map(c => c.exercise));
147
- return {
148
- completed: completedSet.size,
149
- total
150
- };
151
- };
152
- const getRoleplayProgress = (completions, roleplay, isReadWriteModeStudent = false) => {
153
- const enabled = ALL_ROLEPLAY_GAMES.filter(g => {
154
- if (isReadWriteModeStudent && ROLEPLAY_READ_WRITE_EXCLUSIONS.has(g)) return false;
155
- return !ROLEPLAY_HIDDEN_KEYS[g] || !isHiddenValue(roleplay[ROLEPLAY_HIDDEN_KEYS[g]]);
156
- });
157
- const total = enabled.length;
158
- if (total === 0) return {
159
- completed: 0,
160
- total: 0
161
- };
162
- const completedGameIds = new Set((completions || []).filter(c => c.exercise?.startsWith("roleplay") && c.roleplayId === roleplay.roleplayId).map(c => c.exercise === "roleplay" ? "story" : c.exercise.replace("roleplay-", "")));
163
- const completed = enabled.filter(g => completedGameIds.has(g)).length;
164
- return {
165
- completed,
166
- total
167
- };
168
- };
169
- function ItemProgressBar({
170
- completed,
171
- total
172
- }) {
173
- const pct = total > 0 ? Math.round(completed / total * 100) : 0;
174
- return /*#__PURE__*/_jsxs(Box, {
175
- sx: {
176
- display: "flex",
177
- alignItems: "center",
178
- gap: 1
179
- },
180
- children: [/*#__PURE__*/_jsx(Box, {
181
- sx: {
182
- width: 160
183
- },
184
- children: /*#__PURE__*/_jsx(LinearProgress, {
185
- variant: "determinate",
186
- value: pct,
187
- sx: {
188
- height: 6,
189
- borderRadius: 3
190
- }
191
- })
192
- }), /*#__PURE__*/_jsx(Typography, {
193
- variant: "caption",
194
- sx: {
195
- color: "text.secondary",
196
- whiteSpace: "nowrap"
197
- },
198
- children: `${completed} / ${total}`
199
- })]
200
- });
201
- }
202
- const ExerciseAvatarGroup = styled(AvatarGroup)(() => ({
203
- justifyContent: "start",
204
- "& .MuiAvatarGroup-avatar": {
205
- width: 24,
206
- height: 24,
207
- fontSize: "12px",
208
- fontWeight: "bold"
209
- }
210
- }));
211
- function PhraseListRow({
212
- t,
213
- phraseList,
214
- completions,
215
- numberOfPhraseListCompletions,
216
- handleDeletePhraseList,
217
- handleUpdatePhraseList,
218
- isCreator,
219
- isMember,
220
- isLargeScreen,
221
- courseId,
222
- sectionId,
223
- topicId,
224
- handleDuplicatePhraseList,
225
- handleOpenPhraseList,
226
- handleEditPhraseList,
227
- teachClassrooms,
228
- phraseListIndex,
229
- movePhraseList,
230
- onDropPhraseList
231
- }) {
232
- const params = useParams();
233
- const {
234
- classroomId
235
- } = params;
236
- const [anchorEl, setAnchorEl] = useState(null);
237
- const [isPhraseListHiddenState, setIsPhraseListHiddenState] = useState(phraseList.isPhraseListHidden);
238
- const navigate = useNavigate();
239
- const ref = useRef(null);
240
- const [{
241
- handlerId
242
- }, drop] = useDrop({
243
- accept: "phraseList",
244
- hover(item, monitor) {
245
- if (!ref.current) return;
246
- const dragIndex = item.index;
247
- const hoverIndex = phraseListIndex;
248
- if (dragIndex === hoverIndex) return;
249
- const hoverBoundingRect = ref.current.getBoundingClientRect();
250
- const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
251
- const clientOffset = monitor.getClientOffset();
252
- const hoverClientY = clientOffset.y - hoverBoundingRect.top;
253
- if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) return;
254
- if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) return;
255
- movePhraseList(dragIndex, hoverIndex);
256
- item.index = hoverIndex;
257
- }
258
- });
259
- const [{
260
- isDragging
261
- }, drag] = useDrag({
262
- type: "phraseList",
263
- canDrag: isCreator && isLargeScreen,
264
- item: {
265
- index: phraseListIndex,
266
- primary: phraseList,
267
- secondary: phraseList.description,
268
- image: phraseList.picture
269
- },
270
- collect: monitor => ({
271
- isDragging: monitor.isDragging()
272
- }),
273
- end: () => onDropPhraseList()
274
- });
275
- const opacity = isDragging ? 0 : 1;
276
- drag(drop(ref));
277
- useEffect(() => {
278
- setIsPhraseListHiddenState(phraseList.isPhraseListHidden);
279
- }, [phraseList]);
280
- const [isSelectClassroomDialogOpen, setIsSelectClassroomDialogOpen] = useState(false);
281
- const handleClickMenu = e => setAnchorEl(e.currentTarget);
282
- const handleCloseMenu = () => setAnchorEl(null);
283
- const {
284
- isPhraseListHidden
285
- } = phraseList;
286
- const phraseListCompletions = numberOfPhraseListCompletions(completions, phraseList.phraseListId);
287
- const phraseListProgress = getPhraseListProgress(completions, phraseList);
288
- const updatePhraseListVisibility = async () => {
289
- setIsPhraseListHiddenState(!isPhraseListHidden);
290
- await handleUpdatePhraseList(phraseList.phraseListId, {
291
- isPhraseListHidden: !isPhraseListHidden
292
- });
293
- };
294
- return /*#__PURE__*/_jsxs(_Fragment, {
295
- children: [(!isPhraseListHiddenState || isCreator) && /*#__PURE__*/_jsx(ListItem, {
296
- ref: ref,
297
- style: {
298
- opacity
299
- },
300
- disablePadding: true,
301
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
302
- children: [!isCreator && isLargeScreen && /*#__PURE__*/_jsxs(Box, {
303
- sx: {
304
- display: "flex",
305
- alignItems: "center",
306
- gap: 1
307
- },
308
- children: [phraseListCompletions > 0 && classroomId && /*#__PURE__*/_jsx(Tooltip, {
309
- title: t("view_activity"),
310
- children: /*#__PURE__*/_jsx(IconButton, {
311
- onClick: () => navigate(`/classrooms/${classroomId}?courseId=${courseId}&sectionId=${sectionId}&topicId=${topicId}&phraseListId=${phraseList.phraseListId || ""}#Progress`),
312
- children: /*#__PURE__*/_jsx(Timeline, {})
313
- })
314
- }), /*#__PURE__*/_jsx(ItemProgressBar, {
315
- completed: phraseListProgress.completed,
316
- total: phraseListProgress.total
317
- })]
318
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
319
- title: t("edit_phrase_list") || "Edit",
320
- children: /*#__PURE__*/_jsx(IconButton, {
321
- onClick: () => handleEditPhraseList(phraseList),
322
- children: /*#__PURE__*/_jsx(Create, {})
323
- })
324
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
325
- title: isPhraseListHiddenState ? t("show_phrase_list") || "Show" : t("hide_phrase_list") || "Hide",
326
- children: /*#__PURE__*/_jsx("span", {
327
- children: /*#__PURE__*/_jsx(IconButton, {
328
- onClick: updatePhraseListVisibility,
329
- children: isPhraseListHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
330
- })
331
- })
332
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
333
- title: t("move_phrase_list") || "Move",
334
- children: /*#__PURE__*/_jsx(IconButton, {
335
- "data-handler-id": handlerId,
336
- style: {
337
- cursor: "move"
338
- },
339
- size: "large",
340
- children: /*#__PURE__*/_jsx(DragHandle, {})
341
- })
342
- }), isCreator && /*#__PURE__*/_jsx(Tooltip, {
343
- title: t("more_options"),
344
- children: /*#__PURE__*/_jsx("span", {
345
- children: /*#__PURE__*/_jsx(IconButton, {
346
- onClick: handleClickMenu,
347
- "aria-expanded": Boolean(anchorEl),
348
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
349
- })
350
- })
351
- })]
352
- }),
353
- children: /*#__PURE__*/_jsxs(ListItemButton, {
354
- id: phraseList.phraseListId,
355
- sx: sxNested,
356
- onClick: () => handleOpenPhraseList(phraseList),
357
- disabled: !(isMember || isCreator),
358
- children: [isLargeScreen && /*#__PURE__*/_jsx(ListItemAvatar, {
359
- children: /*#__PURE__*/_jsx(Avatar, {
360
- src: phraseList.picture || PlaceholderImages.roleplay,
361
- alt: ""
362
- })
363
- }), /*#__PURE__*/_jsx(ListItemText, {
364
- primary: isLargeScreen ? phraseList.phraseListName || "" : /*#__PURE__*/_jsxs(_Fragment, {
365
- children: [/*#__PURE__*/_jsx(Box, {
366
- sx: {
367
- mb: 1
368
- },
369
- children: /*#__PURE__*/_jsx(Avatar, {
370
- src: phraseList.picture || PlaceholderImages.roleplay,
371
- alt: ""
372
- })
373
- }), /*#__PURE__*/_jsx(Typography, {
374
- variant: "body1",
375
- children: phraseList.phraseListName || ""
376
- })]
377
- }),
378
- secondary: isLargeScreen ? /*#__PURE__*/_jsx(Box, {
379
- sx: isCreator ? sxDescriptionWrapper : null,
380
- children: /*#__PURE__*/_jsx(Typography, {
381
- variant: "body2",
382
- component: "p",
383
- color: "textSecondary",
384
- children: phraseList.description || ""
385
- })
386
- }) : !isCreator && /*#__PURE__*/_jsxs(_Fragment, {
387
- children: [/*#__PURE__*/_jsx(Typography, {
388
- variant: "body2",
389
- component: "p",
390
- color: "textSecondary",
391
- children: phraseList.description || ""
392
- }), /*#__PURE__*/_jsx(ItemProgressBar, {
393
- completed: phraseListProgress.completed,
394
- total: phraseListProgress.total
395
- })]
396
- })
397
- })]
398
- })
399
- }), /*#__PURE__*/_jsxs(OverflowMenu, {
400
- anchorEl: anchorEl,
401
- handleClose: handleCloseMenu,
402
- children: [/*#__PURE__*/_jsxs(MenuItem, {
403
- onClick: () => setIsSelectClassroomDialogOpen(true),
404
- disabled: !isCreator && !(phraseListCompletions > 0),
405
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
406
- children: /*#__PURE__*/_jsx(Timeline, {})
407
- }), /*#__PURE__*/_jsx(ListItemText, {
408
- primary: t(isCreator ? "view_activity" : "show_progress")
409
- })]
410
- }), !isLargeScreen && /*#__PURE__*/_jsxs(_Fragment, {
411
- children: [/*#__PURE__*/_jsxs(MenuItem, {
412
- onClick: () => handleEditPhraseList(phraseList),
413
- disabled: !isCreator,
414
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
415
- children: /*#__PURE__*/_jsx(Create, {})
416
- }), /*#__PURE__*/_jsx(ListItemText, {
417
- primary: t("edit_phrase_list") || "Edit"
418
- })]
419
- }), /*#__PURE__*/_jsxs(MenuItem, {
420
- onClick: updatePhraseListVisibility,
421
- disabled: !isCreator,
422
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
423
- children: isPhraseListHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
424
- }), /*#__PURE__*/_jsx(ListItemText, {
425
- primary: isPhraseListHiddenState ? t("show_phrase_list") || "Show" : t("hide_phrase_list") || "Hide"
426
- })]
427
- })]
428
- }), isCreator && handleDuplicatePhraseList && /*#__PURE__*/_jsxs(MenuItem, {
429
- onClick: () => handleDuplicatePhraseList(phraseList),
430
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
431
- children: /*#__PURE__*/_jsx(CopyIcon, {})
432
- }), /*#__PURE__*/_jsx(ListItemText, {
433
- primary: t("create_duplicate")
434
- })]
435
- }), /*#__PURE__*/_jsxs(MenuItem, {
436
- onClick: () => handleDeletePhraseList(phraseList.phraseListId),
437
- disabled: !isCreator,
438
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
439
- children: /*#__PURE__*/_jsx(Delete, {})
440
- }), /*#__PURE__*/_jsx(ListItemText, {
441
- primary: t("remove_phrase_list") || "Remove"
442
- })]
443
- })]
444
- }), /*#__PURE__*/_jsx(SelectClassroom, {
445
- t: t,
446
- open: isSelectClassroomDialogOpen,
447
- handleClose: () => setIsSelectClassroomDialogOpen(false),
448
- title: t("select_a_classroom"),
449
- teachClassrooms: teachClassrooms || [],
450
- type: "phraseList",
451
- courseId: courseId,
452
- sectionId: sectionId,
453
- topicId: topicId,
454
- phraseListId: phraseList.phraseListId
455
- })]
456
- });
457
- }
458
-
459
- // ─── RoleplayListItem ─────────────────────────────────────────────────────────
460
-
461
- function RoleplayListItem({
462
- t,
463
- roleplay,
464
- completions,
465
- numberOfRoleplayCompletions,
466
- handleRemoveRoleplay,
467
- handleUpdateRoleplay,
468
- isCreator,
469
- isMember,
470
- topicProgress,
471
- isLargeScreen,
472
- courseId,
473
- sectionId,
474
- topicId,
475
- handleDuplicateRoleplay,
476
- handlePlayRoleplay,
477
- handleEditRoleplay,
478
- teachClassrooms,
479
- roleplayIndex,
480
- moveRoleplay,
481
- onDropRoleplay,
482
- parentClassroom,
483
- isReadWriteModeStudent,
484
- ...otherProps
485
- }) {
486
- const params = useParams();
487
- const {
488
- classroomId
489
- } = params;
490
- const [anchorEl, setAnchorEl] = useState(null);
491
- const [isRoleplayHiddenState, setIsRoleplayHiddenState] = useState(roleplay.isRoleplayHidden);
492
- const navigate = useNavigate();
493
- const ref = useRef(null);
494
- const [{
495
- handlerId
496
- }, drop] = useDrop({
497
- accept: "roleplay",
498
- hover(item, monitor) {
499
- if (!ref.current) return;
500
- const dragIndex = item.index;
501
- const hoverIndex = roleplayIndex;
502
- if (dragIndex === hoverIndex) return;
503
- const hoverBoundingRect = ref.current.getBoundingClientRect();
504
- const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
505
- const clientOffset = monitor.getClientOffset();
506
- const hoverClientY = clientOffset.y - hoverBoundingRect.top;
507
- if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) return;
508
- if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) return;
509
- moveRoleplay(dragIndex, hoverIndex);
510
- item.index = hoverIndex;
511
- }
512
- });
513
- const [{
514
- isDragging
515
- }, drag] = useDrag({
516
- type: "roleplay",
517
- canDrag: isCreator && isLargeScreen,
518
- item: {
519
- index: roleplayIndex,
520
- primary: roleplay,
521
- secondary: roleplay.description,
522
- image: roleplay.picture
523
- },
524
- collect: monitor => ({
525
- isDragging: monitor.isDragging()
526
- }),
527
- end: () => onDropRoleplay()
528
- });
529
- drag(drop(ref));
530
- useEffect(() => {
531
- setIsRoleplayHiddenState(roleplay.isRoleplayHidden);
532
- }, [roleplay]);
533
- const [isSelectClassroomDialogOpen, setIsSelectClassroomDialogOpen] = useState(false);
534
- const handleClickMenu = e => setAnchorEl(e.currentTarget);
535
- const handleCloseMenu = () => setAnchorEl(null);
536
- const roleplayExerciseState = getRoleplayExerciseState(topicProgress, roleplay.roleplayId);
537
- const {
538
- existingMessages
539
- } = roleplayExerciseState;
540
- const {
541
- isRoleplayHidden
542
- } = roleplay;
543
- const opacity = isDragging ? 0 : 1;
544
- const updateRoleplayVisibility = async () => {
545
- setIsRoleplayHiddenState(!isRoleplayHidden);
546
- await handleUpdateRoleplay(roleplay, {
547
- isRoleplayHidden: !isRoleplayHidden
548
- });
549
- };
550
- const roleplayCompletions = numberOfRoleplayCompletions(completions, roleplay.roleplayId);
551
- const roleplayProgress = getRoleplayProgress(completions, roleplay, isReadWriteModeStudent);
552
- return /*#__PURE__*/_jsxs(_Fragment, {
553
- children: [(!isRoleplayHiddenState || isCreator) && /*#__PURE__*/_jsx(ListItem, {
554
- ref: ref,
555
- style: {
556
- opacity
557
- },
558
- disablePadding: true,
559
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
560
- children: [!isCreator && isLargeScreen && /*#__PURE__*/_jsxs(Box, {
561
- sx: {
562
- display: "flex",
563
- alignItems: "center",
564
- gap: 1
565
- },
566
- children: [roleplayCompletions > 0 && classroomId && /*#__PURE__*/_jsx(Tooltip, {
567
- title: t("view_activity"),
568
- children: /*#__PURE__*/_jsx(IconButton, {
569
- onClick: () => navigate(`/classrooms/${classroomId}?courseId=${courseId}&sectionId=${sectionId}&topicId=${topicId}&roleplayId=${roleplay.roleplayId || ""}#Progress`),
570
- children: /*#__PURE__*/_jsx(Timeline, {})
571
- })
572
- }), /*#__PURE__*/_jsx(ItemProgressBar, {
573
- completed: roleplayProgress.completed,
574
- total: roleplayProgress.total
575
- })]
576
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
577
- title: t("edit_roleplay"),
578
- children: /*#__PURE__*/_jsx(IconButton, {
579
- "data-cy": "edit-roleplay",
580
- onClick: () => handleEditRoleplay(roleplay),
581
- children: /*#__PURE__*/_jsx(Create, {})
582
- })
583
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
584
- title: isRoleplayHiddenState ? t("show_roleplay") : t("hide_roleplay"),
585
- children: /*#__PURE__*/_jsx("span", {
586
- children: /*#__PURE__*/_jsx(IconButton, {
587
- onClick: updateRoleplayVisibility,
588
- children: isRoleplayHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
589
- })
590
- })
591
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
592
- title: t("move_roleplay"),
593
- children: /*#__PURE__*/_jsx(IconButton, {
594
- "data-handler-id": handlerId,
595
- style: {
596
- cursor: "move"
597
- },
598
- size: "large",
599
- children: /*#__PURE__*/_jsx(DragHandle, {})
600
- })
601
- }), isCreator && /*#__PURE__*/_jsx(Tooltip, {
602
- title: t("more_options"),
603
- children: /*#__PURE__*/_jsx("span", {
604
- children: /*#__PURE__*/_jsx(IconButton, {
605
- onClick: handleClickMenu,
606
- "aria-expanded": Boolean(anchorEl),
607
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
608
- })
609
- })
610
- })]
611
- }),
612
- children: /*#__PURE__*/_jsxs(ListItemButton, {
613
- id: roleplay.roleplayId,
614
- sx: sxNested,
615
- onClick: () => handlePlayRoleplay(roleplay),
616
- disabled: !(isMember || isCreator),
617
- children: [isLargeScreen && /*#__PURE__*/_jsx(ListItemAvatar, {
618
- children: /*#__PURE__*/_jsx(Avatar, {
619
- src: roleplay.picture || roleplay.actor1?.picture || roleplay.actor2?.picture || PlaceholderImages.roleplay,
620
- alt: ""
621
- })
622
- }), /*#__PURE__*/_jsx(ListItemText, {
623
- primary: isLargeScreen ? roleplay.roleplayName || "" : /*#__PURE__*/_jsxs(_Fragment, {
624
- children: [/*#__PURE__*/_jsx(Box, {
625
- sx: {
626
- mb: 1
627
- },
628
- children: /*#__PURE__*/_jsx(Avatar, {
629
- src: roleplay.picture || roleplay.actor1?.picture || roleplay.actor2?.picture || PlaceholderImages.roleplay,
630
- alt: ""
631
- })
632
- }), /*#__PURE__*/_jsx(Typography, {
633
- variant: "body1",
634
- children: roleplay.roleplayName || ""
635
- })]
636
- }),
637
- secondary: isLargeScreen ? /*#__PURE__*/_jsx(Box, {
638
- sx: isCreator ? sxDescriptionWrapper : null,
639
- children: /*#__PURE__*/_jsx(Typography, {
640
- variant: "body2",
641
- component: "p",
642
- color: "textSecondary",
643
- children: roleplay.description || ""
644
- })
645
- }) : !isCreator && /*#__PURE__*/_jsxs(_Fragment, {
646
- children: [/*#__PURE__*/_jsx(Typography, {
647
- variant: "body2",
648
- component: "p",
649
- color: "textSecondary",
650
- children: roleplay.description || ""
651
- }), /*#__PURE__*/_jsx(ItemProgressBar, {
652
- completed: roleplayProgress.completed,
653
- total: roleplayProgress.total
654
- })]
655
- })
656
- })]
657
- })
658
- }), /*#__PURE__*/_jsxs(OverflowMenu, {
659
- anchorEl: anchorEl,
660
- handleClose: handleCloseMenu,
661
- children: [/*#__PURE__*/_jsxs(MenuItem, {
662
- onClick: () => setIsSelectClassroomDialogOpen(true),
663
- disabled: !isCreator && !(roleplayCompletions > 0),
664
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
665
- children: /*#__PURE__*/_jsx(Timeline, {})
666
- }), /*#__PURE__*/_jsx(ListItemText, {
667
- primary: t(isCreator ? "view_activity" : "show_progress")
668
- })]
669
- }), !isLargeScreen && /*#__PURE__*/_jsxs(_Fragment, {
670
- children: [/*#__PURE__*/_jsxs(MenuItem, {
671
- "data-cy": "menu-edit-roleplay",
672
- onClick: () => handleEditRoleplay(roleplay),
673
- disabled: !isCreator,
674
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
675
- children: /*#__PURE__*/_jsx(Create, {})
676
- }), /*#__PURE__*/_jsx(ListItemText, {
677
- primary: t("edit_roleplay")
678
- })]
679
- }), /*#__PURE__*/_jsxs(MenuItem, {
680
- onClick: updateRoleplayVisibility,
681
- disabled: !isCreator,
682
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
683
- children: isRoleplayHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
684
- }), /*#__PURE__*/_jsx(ListItemText, {
685
- primary: isRoleplayHiddenState ? t("show_roleplay") : t("hide_roleplay")
686
- })]
687
- })]
688
- }), isCreator && handleDuplicateRoleplay && /*#__PURE__*/_jsxs(MenuItem, {
689
- "data-cy": "duplicate-roleplay",
690
- onClick: () => handleDuplicateRoleplay(roleplay),
691
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
692
- children: /*#__PURE__*/_jsx(CopyIcon, {})
693
- }), /*#__PURE__*/_jsx(ListItemText, {
694
- primary: t("create_duplicate")
695
- })]
696
- }), /*#__PURE__*/_jsxs(MenuItem, {
697
- onClick: () => handleRemoveRoleplay(roleplay),
698
- disabled: !isCreator,
699
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
700
- children: /*#__PURE__*/_jsx(Delete, {})
701
- }), /*#__PURE__*/_jsx(ListItemText, {
702
- primary: t("remove_roleplay")
703
- })]
704
- })]
705
- }), /*#__PURE__*/_jsx(SelectClassroom, {
706
- t: t,
707
- open: isSelectClassroomDialogOpen,
708
- handleClose: () => setIsSelectClassroomDialogOpen(false),
709
- title: t("select_a_classroom"),
710
- teachClassrooms: teachClassrooms || [],
711
- type: "roleplay",
712
- courseId: courseId,
713
- sectionId: sectionId,
714
- topicId: topicId,
715
- roleplayId: roleplay.roleplayId
716
- })]
717
- });
718
- }
719
-
720
- // ─── BotListItem ──────────────────────────────────────────────────────────────
721
-
722
- function BotListItem({
723
- t,
724
- bot,
725
- completions,
726
- numberOfBotCompletions,
727
- handleRemoveBot,
728
- handleUpdateBot,
729
- isCreator,
730
- isMember,
731
- handleDuplicateBot,
732
- topicProgress,
733
- isLargeScreen,
734
- courseId,
735
- sectionId,
736
- topicId,
737
- handleEditBot,
738
- handlePlayBot,
739
- teachClassrooms,
740
- botIndex,
741
- moveBot,
742
- onDropBot,
743
- parentClassroom,
744
- ...otherProps
745
- }) {
746
- const params = useParams();
747
- const {
748
- classroomId
749
- } = params;
750
- const [anchorEl, setAnchorEl] = useState(null);
751
- const [isBotHiddenState, setIsBotHiddenState] = useState(bot.isBotHidden);
752
- const [isBotChallenge, setIsBotChallenge] = useState(bot.isChallengeBot || false);
753
- const [isSelectClassroomDialogOpen, setIsSelectClassroomDialogOpen] = useState(false);
754
- const navigate = useNavigate();
755
- useEffect(() => {
756
- setIsBotChallenge(bot.isChallengeBot);
757
- }, [bot.isChallengeBot]);
758
- const ref = useRef(null);
759
- const [{
760
- handlerId
761
- }, drop] = useDrop({
762
- accept: "bot",
763
- hover(item, monitor) {
764
- if (!ref.current) return;
765
- const dragIndex = item.index;
766
- const hoverIndex = botIndex;
767
- if (dragIndex === hoverIndex) return;
768
- const hoverBoundingRect = ref.current.getBoundingClientRect();
769
- const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
770
- const clientOffset = monitor.getClientOffset();
771
- const hoverClientY = clientOffset.y - hoverBoundingRect.top;
772
- if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) return;
773
- if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) return;
774
- moveBot(dragIndex, hoverIndex);
775
- item.index = hoverIndex;
776
- }
777
- });
778
- const [{
779
- isDragging
780
- }, drag] = useDrag({
781
- type: "bot",
782
- canDrag: isCreator && isLargeScreen,
783
- item: {
784
- index: botIndex,
785
- primary: bot,
786
- secondary: bot.description,
787
- image: bot.picture
788
- },
789
- collect: monitor => ({
790
- isDragging: monitor.isDragging()
791
- }),
792
- end: () => onDropBot()
793
- });
794
- drag(drop(ref));
795
- const handleClickMenu = e => setAnchorEl(e.currentTarget);
796
- const handleCloseMenu = () => setAnchorEl(null);
797
- const botProgress = getBotProgress(topicProgress, bot.botId);
798
- const {
799
- existingMessages
800
- } = botProgress;
801
- const {
802
- isBotHidden
803
- } = bot;
804
- const opacity = isDragging ? 0 : 1;
805
- const updateBotVisibility = async () => {
806
- setIsBotHiddenState(!isBotHiddenState);
807
- await handleUpdateBot(bot, {
808
- isBotHidden: !isBotHidden
809
- });
810
- };
811
- const markBotAsChallenge = async () => {
812
- await handleUpdateBot(bot, {
813
- isChallengeBot: !isBotChallenge
814
- });
815
- setIsBotChallenge(!isBotChallenge);
816
- };
817
- const botCompletions = numberOfBotCompletions(completions, bot.botId);
818
- return /*#__PURE__*/_jsxs(_Fragment, {
819
- children: [(!isBotHiddenState || isCreator) && /*#__PURE__*/_jsx(ListItem, {
820
- ref: ref,
821
- style: {
822
- opacity
823
- },
824
- disablePadding: true,
825
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
826
- children: [!isCreator && /*#__PURE__*/_jsxs(_Fragment, {
827
- children: [isLargeScreen && /*#__PURE__*/_jsx(InProgressBadge, {
828
- progressCount: existingMessages?.length || 0
829
- }), isLargeScreen && /*#__PURE__*/_jsx(ProgressBadge, {
830
- completions: botCompletions
831
- })]
832
- }), isLargeScreen && !isCreator && botCompletions > 0 && classroomId && /*#__PURE__*/_jsx(Tooltip, {
833
- title: t("view_activity"),
834
- children: /*#__PURE__*/_jsx(IconButton, {
835
- onClick: () => navigate(`/classrooms/${classroomId}?courseId=${courseId}&sectionId=${sectionId}&topicId=${topicId}#Progress`),
836
- children: /*#__PURE__*/_jsx(Timeline, {})
837
- })
838
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
839
- title: t("edit_bot"),
840
- children: /*#__PURE__*/_jsx(IconButton, {
841
- "data-cy": "edit-bot",
842
- onClick: () => handleEditBot(bot),
843
- children: /*#__PURE__*/_jsx(Create, {})
844
- })
845
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
846
- title: isBotHiddenState ? t("show_bot") : t("hide_bot"),
847
- children: /*#__PURE__*/_jsx("span", {
848
- children: /*#__PURE__*/_jsx(IconButton, {
849
- onClick: updateBotVisibility,
850
- children: isBotHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
851
- })
852
- })
853
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
854
- title: isBotChallenge ? t("unmark_as_challenge_bot") : t("mark_as_challenge_bot"),
855
- children: /*#__PURE__*/_jsx(IconButton, {
856
- "data-cy": "mark_challenge_bot",
857
- onClick: markBotAsChallenge,
858
- children: isBotChallenge ? /*#__PURE__*/_jsx(FlashOnIcon, {}) : /*#__PURE__*/_jsx(FlashOffIcon, {})
859
- })
860
- }), isCreator && isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
861
- title: t("move_bot"),
862
- children: /*#__PURE__*/_jsx(IconButton, {
863
- "data-handler-id": handlerId,
864
- style: {
865
- cursor: "move"
866
- },
867
- size: "large",
868
- children: /*#__PURE__*/_jsx(DragHandle, {})
869
- })
870
- }), isCreator && /*#__PURE__*/_jsx(Tooltip, {
871
- title: t("more_options"),
872
- children: /*#__PURE__*/_jsx("span", {
873
- children: /*#__PURE__*/_jsx(IconButton, {
874
- onClick: handleClickMenu,
875
- "aria-expanded": Boolean(anchorEl),
876
- "data-cy": `${bot.botName}-more-options`,
877
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
878
- })
879
- })
880
- })]
881
- }),
882
- children: /*#__PURE__*/_jsxs(ListItemButton, {
883
- id: bot.botId,
884
- sx: sxNested,
885
- onClick: () => handlePlayBot(bot),
886
- disabled: !(isMember || isCreator),
887
- children: [isLargeScreen && /*#__PURE__*/_jsx(ListItemAvatar, {
888
- children: /*#__PURE__*/_jsx(Avatar, {
889
- src: bot.picture || bot.botAvatar || PlaceholderImages.bot,
890
- alt: ""
891
- })
892
- }), /*#__PURE__*/_jsx(ListItemText, {
893
- primary: isLargeScreen ? !isBotChallenge ? bot.botName || "" : /*#__PURE__*/_jsxs(Box, {
894
- sx: {
895
- display: "flex",
896
- alignItems: "center",
897
- gap: "8px"
898
- },
899
- children: [bot.botName || "", isCreator || parentClassroom?.isCreator ? /*#__PURE__*/_jsx(HtmlTooltipComponent, {
900
- titleBold: t("challenge_mode"),
901
- titleDesc: t("challenge_bot_desc"),
902
- placement: "right",
903
- children: /*#__PURE__*/_jsx(Chip, {
904
- label: t("challenge_mode"),
905
- size: "small",
906
- variant: "outlined",
907
- color: "primary"
908
- })
909
- }) : /*#__PURE__*/_jsx(Chip, {
910
- label: t("challenge_mode"),
911
- size: "small",
912
- variant: "outlined",
913
- color: "primary"
914
- })]
915
- }) : /*#__PURE__*/_jsxs(_Fragment, {
916
- children: [/*#__PURE__*/_jsx(Box, {
917
- sx: {
918
- mb: 1
919
- },
920
- children: /*#__PURE__*/_jsx(Avatar, {
921
- src: bot.picture || bot.botAvatar || PlaceholderImages.bot,
922
- alt: ""
923
- })
924
- }), /*#__PURE__*/_jsx(Typography, {
925
- variant: "body1",
926
- children: bot.botName || ""
927
- }), isBotChallenge && (isCreator || parentClassroom?.isCreator ? /*#__PURE__*/_jsx(HtmlTooltipComponent, {
928
- titleBold: t("challenge_mode"),
929
- titleDesc: t("challenge_bot_desc"),
930
- placement: "right",
931
- children: /*#__PURE__*/_jsx(Chip, {
932
- label: t("challenge_mode"),
933
- size: "small",
934
- variant: "outlined",
935
- color: "primary"
936
- })
937
- }) : /*#__PURE__*/_jsx(Chip, {
938
- label: t("challenge_mode"),
939
- size: "small",
940
- variant: "outlined",
941
- color: "primary"
942
- }))]
943
- }),
944
- secondary: isLargeScreen ? /*#__PURE__*/_jsx(Box, {
945
- sx: isCreator ? sxDescriptionWrapper : null,
946
- children: /*#__PURE__*/_jsx(Typography, {
947
- variant: "body2",
948
- component: "p",
949
- color: "textSecondary",
950
- children: bot.description || ""
951
- })
952
- }) : !isCreator && /*#__PURE__*/_jsxs(_Fragment, {
953
- children: [/*#__PURE__*/_jsx(Typography, {
954
- variant: "body2",
955
- component: "p",
956
- color: "textSecondary",
957
- children: bot.description || ""
958
- }), /*#__PURE__*/_jsx(InProgressBadge, {
959
- progressCount: existingMessages?.length || 0
960
- }), /*#__PURE__*/_jsx(ProgressBadge, {
961
- completions: botCompletions
962
- })]
963
- })
964
- })]
965
- })
966
- }), /*#__PURE__*/_jsxs(OverflowMenu, {
967
- anchorEl: anchorEl,
968
- handleClose: handleCloseMenu,
969
- children: [/*#__PURE__*/_jsxs(MenuItem, {
970
- onClick: () => setIsSelectClassroomDialogOpen(true),
971
- disabled: !isCreator && !(botCompletions > 0),
972
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
973
- children: /*#__PURE__*/_jsx(Timeline, {})
974
- }), /*#__PURE__*/_jsx(ListItemText, {
975
- primary: t(isCreator ? "view_activity" : "show_progress")
976
- })]
977
- }), !isLargeScreen && /*#__PURE__*/_jsxs(_Fragment, {
978
- children: [/*#__PURE__*/_jsxs(MenuItem, {
979
- "data-cy": "edit-bot",
980
- onClick: () => handleEditBot(bot),
981
- disabled: !isCreator,
982
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
983
- children: /*#__PURE__*/_jsx(Create, {})
984
- }), /*#__PURE__*/_jsx(ListItemText, {
985
- primary: t("edit_bot")
986
- })]
987
- }), /*#__PURE__*/_jsxs(MenuItem, {
988
- onClick: updateBotVisibility,
989
- disabled: !isCreator,
990
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
991
- children: isBotHiddenState ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
992
- }), /*#__PURE__*/_jsx(ListItemText, {
993
- primary: isBotHiddenState ? t("show_bot") : t("hide_bot")
994
- })]
995
- })]
996
- }), isCreator && handleDuplicateBot && /*#__PURE__*/_jsxs(MenuItem, {
997
- "data-cy": "duplicate-bot",
998
- onClick: () => handleDuplicateBot(bot),
999
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1000
- children: /*#__PURE__*/_jsx(CopyIcon, {})
1001
- }), /*#__PURE__*/_jsx(ListItemText, {
1002
- primary: t("create_duplicate")
1003
- })]
1004
- }), /*#__PURE__*/_jsxs(MenuItem, {
1005
- onClick: () => handleRemoveBot(bot),
1006
- disabled: !isCreator,
1007
- "data-cy": `${bot.botName}-remove-bot`,
1008
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1009
- children: /*#__PURE__*/_jsx(Delete, {})
1010
- }), /*#__PURE__*/_jsx(ListItemText, {
1011
- primary: t("remove_bot")
1012
- })]
1013
- })]
1014
- }), /*#__PURE__*/_jsx(SelectClassroom, {
1015
- t: t,
1016
- open: isSelectClassroomDialogOpen,
1017
- handleClose: () => setIsSelectClassroomDialogOpen(false),
1018
- title: t("select_a_classroom"),
1019
- teachClassrooms: teachClassrooms || [],
1020
- type: "bot",
1021
- courseId: courseId,
1022
- sectionId: sectionId,
1023
- topicId: topicId,
1024
- botId: bot.botId
1025
- })]
1026
- });
1027
- }
1028
-
1029
- // ─── Exercises ────────────────────────────────────────────────────────────────
1030
-
1031
- function Exercises(props) {
1032
- const {
1033
- t = text => text,
1034
- isLoading,
1035
- phrases = [],
1036
- completions = [],
1037
- roleplays = [],
1038
- bots = [],
1039
- voices = [],
1040
- avatars = [],
1041
- hiddenExercises = [],
1042
- isMember,
1043
- isCreator,
1044
- courseId,
1045
- sectionId,
1046
- topicId,
1047
- handleCreateRoleplay,
1048
- handleCreateBot,
1049
- handleCreatePhraseList,
1050
- handleOpenPhraseList,
1051
- handleEditPhraseList,
1052
- handleUpdatePhraseList,
1053
- handleDeletePhraseList,
1054
- handleDuplicatePhraseList,
1055
- isBotHidden,
1056
- disablePadding,
1057
- topicProgress = [],
1058
- handleDuplicateBot,
1059
- handleToggleExerciseVisibility,
1060
- handleDuplicateRoleplay,
1061
- handleEditBot,
1062
- handlePlayBot,
1063
- handleShareRoleplay,
1064
- handleShareBot,
1065
- handleEditRoleplay,
1066
- handleUploadBotExerciseImage,
1067
- handleReportProblem,
1068
- teachClassrooms,
1069
- updateRoleplays,
1070
- handleUpdateRoleplay,
1071
- updateBots,
1072
- updatePhraseLists,
1073
- courseSettings,
1074
- parentClassroom,
1075
- isChallengeModeStudent,
1076
- topicInfo
1077
- } = props;
1078
- const params = useParams();
1079
- const {
1080
- classroomId
1081
- } = params;
1082
- const navigate = useNavigate();
1083
- const location = useLocation();
1084
- const searchParams = searchStringToObj(location.search);
1085
- const assignmentId = searchParams.assignmentId;
1086
- const theme = useTheme();
1087
- const isLargeScreen = useMediaQuery(theme.breakpoints.up("sm"));
1088
- const [showPhrasesOverflowMenu, setShowPhrasesOverflowMenu] = useState(null);
1089
- const [showRoleplaysOverflowMenu, setShowRoleplaysOverflowMenu] = useState(null);
1090
- const [showBotsOverflowMenu, setShowBotsOverflowMenu] = useState(null);
1091
- const [hiddenExercisesState, setHiddenExercisesState] = useState(hiddenExercises);
1092
- const [isCreatePhraseListOpen, setIsCreatePhraseListOpen] = useState(false);
1093
- // Opens the editor immediately after a phrase list is created (standalone mode only)
1094
- const [newlyCreatedPhraseList, setNewlyCreatedPhraseList] = useState(null);
1095
- const [isPhrasesDropdownOpen, setIsPhrasesDropdownOpen] = useState(true);
1096
- const [isRoleplayDropdownOpen, setIsRoleplayDropdownOpen] = useState(true);
1097
- const [isChatbotDropdownOpen, setIsChatbotDropdownOpen] = useState(true);
1098
- const [isSelectClassroomDialogOpen, setIsSelectClassroomDialogOpen] = useState(false);
1099
- const [type, setType] = useState("");
1100
- const addSearchParams = newParams => {
1101
- navigate({
1102
- ...location,
1103
- search: objToSearchString({
1104
- ...searchParams,
1105
- ...newParams
1106
- })
1107
- });
1108
- };
1109
- const removeSearchParams = (keys = []) => {
1110
- for (const key of keys) {
1111
- key in searchParams && delete searchParams[key];
1112
- }
1113
- navigate({
1114
- ...location,
1115
- search: objToSearchString(searchParams)
1116
- });
1117
- };
1118
- const isEmptyArray = arr => !Array.isArray(arr) || !arr.length;
1119
- const numberOfRoleplayCompletions = (completions, roleplayId) => {
1120
- if (isEmptyArray(completions)) return 0;
1121
- return completions.filter(c => c.exercise.startsWith("roleplay") && c.roleplayId === roleplayId).length;
1122
- };
1123
- const numberOfBotCompletions = (completions, botId) => {
1124
- if (isEmptyArray(completions)) return 0;
1125
- return completions.filter(c => c.exercise === "bot" && c.botId === botId).length;
1126
- };
1127
- const numberOfPhraseListCompletions = (completions, phraseListId) => {
1128
- if (isEmptyArray(completions)) return 0;
1129
- return completions.filter(c => ["translation", "listening", "pronunciation"].includes(c.exercise) && (c.phraseListId === phraseListId || !c.phraseListId && phraseListId?.startsWith('leg-'))).length;
1130
- };
1131
-
1132
- // ── phraseLists drag state ──
1133
- const [phraseListsArray, setPhraseListsArray] = useState([]);
1134
- useEffect(() => {
1135
- if (topicInfo?.phraseLists && Array.isArray(topicInfo.phraseLists)) {
1136
- setPhraseListsArray([...topicInfo.phraseLists].sort((a, b) => (a.idx || 0) - (b.idx || 0)));
1137
- }
1138
- }, [JSON.stringify(topicInfo?.phraseLists)]);
1139
- const onDropPhraseList = () => {
1140
- if (updatePhraseLists) updatePhraseLists(phraseListsArray);
1141
- };
1142
- const movePhraseList = useCallback((dragIndex, hoverIndex) => {
1143
- const dragItem = phraseListsArray[dragIndex];
1144
- setPhraseListsArray(update(phraseListsArray, {
1145
- $splice: [[dragIndex, 1], [hoverIndex, 0, {
1146
- ...dragItem,
1147
- idx: hoverIndex
1148
- }]]
1149
- }));
1150
- }, [phraseListsArray]);
1151
-
1152
- // ── roleplays drag state ──
1153
- const [roleplaysArray, setRoleplaysArray] = useState([]);
1154
- useEffect(() => {
1155
- if (roleplays && Array.isArray(roleplays)) {
1156
- setRoleplaysArray([...roleplays].sort((a, b) => a.idx - b.idx));
1157
- }
1158
- }, [JSON.stringify(roleplays)]);
1159
- const onDropRoleplay = () => updateRoleplays(roleplaysArray);
1160
- const moveRoleplay = useCallback((dragIndex, hoverIndex) => {
1161
- const dragRoleplay = roleplaysArray[dragIndex];
1162
- setRoleplaysArray(update(roleplaysArray, {
1163
- $splice: [[dragIndex, 1], [hoverIndex, 0, {
1164
- ...dragRoleplay,
1165
- idx: hoverIndex
1166
- }]]
1167
- }));
1168
- }, [roleplaysArray]);
1169
-
1170
- // ── bots drag state ──
1171
- const [botsArray, setBotsArray] = useState([]);
1172
- useEffect(() => {
1173
- if (bots && Array.isArray(bots)) {
1174
- let sorted = [...bots].sort((a, b) => a.idx - b.idx);
1175
- if (!isChallengeModeStudent && !isCreator && !parentClassroom?.isCreator) {
1176
- sorted = sorted.filter(bot => !bot.isChallengeBot);
1177
- }
1178
- setBotsArray(sorted);
1179
- }
1180
- }, [JSON.stringify(bots), isChallengeModeStudent, isCreator, parentClassroom?.isCreator]);
1181
- const onDropBot = () => updateBots(botsArray);
1182
- const moveBot = useCallback((dragIndex, hoverIndex) => {
1183
- const dragBot = botsArray[dragIndex];
1184
- setBotsArray(update(botsArray, {
1185
- $splice: [[dragIndex, 1], [hoverIndex, 0, {
1186
- ...dragBot,
1187
- idx: hoverIndex
1188
- }]]
1189
- }));
1190
- }, [botsArray]);
1191
- const handleSetHiddenExercisesState = (exercise, action) => {
1192
- const next = action === "hide" ? [...hiddenExercisesState, exercise] : hiddenExercisesState.filter(e => e !== exercise);
1193
- setHiddenExercisesState(next);
1194
- };
1195
- const renderExerciseButtons = (exercise, tooltipShowText, tooltipHideText, iconLabel) => {
1196
- if (!isCreator) return null;
1197
- const exerciseIsHidden = hiddenExercisesState?.includes(exercise);
1198
- const action = exerciseIsHidden ? "show" : "hide";
1199
- return /*#__PURE__*/_jsx(Tooltip, {
1200
- title: exerciseIsHidden ? t(tooltipShowText) : t(tooltipHideText),
1201
- children: /*#__PURE__*/_jsx("span", {
1202
- children: /*#__PURE__*/_jsx(IconButton, {
1203
- onClick: () => {
1204
- handleSetHiddenExercisesState(exercise, action);
1205
- handleToggleExerciseVisibility(exercise, action);
1206
- },
1207
- "aria-label": iconLabel,
1208
- disabled: !isCreator,
1209
- children: exerciseIsHidden ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
1210
- })
1211
- })
1212
- });
1213
- };
1214
- const renderMenuButton = (exercise, tooltipShowText, tooltipHideText, iconLabel) => {
1215
- if (!isCreator || isLargeScreen) return null;
1216
- const exerciseIsHidden = hiddenExercisesState.includes(exercise);
1217
- const action = exerciseIsHidden ? "show" : "hide";
1218
- return /*#__PURE__*/_jsxs(MenuItem, {
1219
- onClick: () => {
1220
- handleSetHiddenExercisesState(exercise, action);
1221
- handleToggleExerciseVisibility(exercise, action);
1222
- },
1223
- "aria-label": iconLabel,
1224
- disabled: !isCreator,
1225
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1226
- children: exerciseIsHidden ? /*#__PURE__*/_jsx(VisibilityOff, {}) : /*#__PURE__*/_jsx(Visibility, {})
1227
- }), /*#__PURE__*/_jsx(ListItemText, {
1228
- children: exerciseIsHidden ? t(tooltipShowText) : t(tooltipHideText)
1229
- })]
1230
- });
1231
- };
1232
- const renderCollapseButton = (open, loading, onToggle, label) => /*#__PURE__*/_jsx(Tooltip, {
1233
- title: open ? t("hide") : t("expand"),
1234
- children: /*#__PURE__*/_jsx(IconButton, {
1235
- disabled: loading,
1236
- onClick: onToggle,
1237
- "aria-expanded": open,
1238
- "aria-label": `${label} Dropdown Button`,
1239
- children: open ? /*#__PURE__*/_jsx(ExpandLess, {
1240
- sx: {
1241
- fontSize: "larger"
1242
- }
1243
- }) : /*#__PURE__*/_jsx(ExpandMore, {
1244
- sx: {
1245
- fontSize: "larger"
1246
- }
1247
- })
1248
- })
1249
- });
1250
- const hasPhrasesContent = phraseListsArray.length > 0;
1251
- const renderPhrasesExerciseItem = () => {
1252
- if (!isCreator && hiddenExercisesState.includes("phrases")) return null;
1253
- return /*#__PURE__*/_jsxs(_Fragment, {
1254
- children: [/*#__PURE__*/_jsx(ListItem, {
1255
- disablePadding: true,
1256
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
1257
- children: [isLargeScreen && renderExerciseButtons("phrases", "show_phrases_exercise", "hide_phrases_exercise", "Toggle Phrases Exercise Visibility"), isCreator && !isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
1258
- title: t("more_options"),
1259
- children: /*#__PURE__*/_jsx("span", {
1260
- children: /*#__PURE__*/_jsx(IconButton, {
1261
- onClick: e => setShowPhrasesOverflowMenu(e.currentTarget),
1262
- "aria-expanded": Boolean(showPhrasesOverflowMenu),
1263
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
1264
- })
1265
- })
1266
- }), (isCreator || hasPhrasesContent) && renderCollapseButton(isPhrasesDropdownOpen, isLoading, () => setIsPhrasesDropdownOpen(v => !v), "Phrases")]
1267
- }),
1268
- children: /*#__PURE__*/_jsxs(ListItemButton, {
1269
- "data-cy": "phrases-exercise",
1270
- "aria-expanded": isPhrasesDropdownOpen,
1271
- disabled: !isCreator && !hasPhrasesContent,
1272
- onClick: () => {
1273
- if (!isCreator && !hasPhrasesContent) return;
1274
- setIsPhrasesDropdownOpen(v => !v);
1275
- },
1276
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1277
- children: /*#__PURE__*/_jsx(MenuBookIcon, {})
1278
- }), /*#__PURE__*/_jsx(ListItemText, {
1279
- primary: t("phrases") || "Phrases",
1280
- secondary: /*#__PURE__*/_jsxs(_Fragment, {
1281
- children: [/*#__PURE__*/_jsx(Typography, {
1282
- variant: "body2",
1283
- gutterBottom: !isPhrasesDropdownOpen && hasPhrasesContent,
1284
- children: t("phrases_exercise_desc") || "Practice key phrases you'll use in conversations."
1285
- }), !isPhrasesDropdownOpen && hasPhrasesContent && /*#__PURE__*/_jsx(Collapse, {
1286
- in: true,
1287
- children: /*#__PURE__*/_jsx(ExerciseAvatarGroup, {
1288
- max: 3,
1289
- children: phraseListsArray.filter(pl => !pl.isPhraseListHidden).map((pl, idx) => /*#__PURE__*/_jsx(Avatar, {
1290
- alt: "",
1291
- src: pl.picture || PlaceholderImages.roleplay
1292
- }, idx))
1293
- })
1294
- })]
1295
- })
1296
- })]
1297
- })
1298
- }), /*#__PURE__*/_jsx(OverflowMenu, {
1299
- anchorEl: showPhrasesOverflowMenu,
1300
- handleClose: () => setShowPhrasesOverflowMenu(null),
1301
- children: renderMenuButton("phrases", "show_phrases_exercise", "hide_phrases_exercise", "Toggle Phrases Exercise Visibility")
1302
- }), /*#__PURE__*/_jsx(Collapse, {
1303
- component: "li",
1304
- in: isPhrasesDropdownOpen,
1305
- timeout: "auto",
1306
- unmountOnExit: true,
1307
- children: /*#__PURE__*/_jsxs(List, {
1308
- disablePadding: true,
1309
- children: [phraseListsArray.map((phraseList, idx) => /*#__PURE__*/_jsx(PhraseListRow, {
1310
- phraseList: phraseList,
1311
- completions: completions,
1312
- numberOfPhraseListCompletions: numberOfPhraseListCompletions,
1313
- handleDeletePhraseList: handleDeletePhraseList,
1314
- handleUpdatePhraseList: handleUpdatePhraseList,
1315
- handleDuplicatePhraseList: handleDuplicatePhraseList,
1316
- handleOpenPhraseList: handleOpenPhraseList,
1317
- handleEditPhraseList: handleEditPhraseList,
1318
- isCreator: isCreator,
1319
- isMember: isMember,
1320
- topicProgress: topicProgress,
1321
- isLargeScreen: isLargeScreen,
1322
- courseId: courseId,
1323
- sectionId: sectionId,
1324
- topicId: topicId,
1325
- teachClassrooms: teachClassrooms,
1326
- phraseListIndex: idx,
1327
- movePhraseList: movePhraseList,
1328
- onDropPhraseList: onDropPhraseList,
1329
- t: t
1330
- }, phraseList.phraseListId || idx)), isCreator && /*#__PURE__*/_jsxs(ListItemButton, {
1331
- "data-cy": "add-phrase-list",
1332
- id: "create-phrase-list",
1333
- sx: sxNested,
1334
- onClick: () => setIsCreatePhraseListOpen(true),
1335
- role: "link",
1336
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1337
- children: /*#__PURE__*/_jsx(Add, {
1338
- sx: sxGreenColor
1339
- })
1340
- }), /*#__PURE__*/_jsx(ListItemText, {
1341
- primary: t("add_new")
1342
- })]
1343
- })]
1344
- })
1345
- }), /*#__PURE__*/_jsx(CreatePhraseGroupDialog, {
1346
- open: isCreatePhraseListOpen,
1347
- handleClose: () => setIsCreatePhraseListOpen(false),
1348
- handleCreate: async ({
1349
- phraseGroupName,
1350
- description
1351
- }) => await handleCreatePhraseList({
1352
- phraseListName: phraseGroupName,
1353
- description
1354
- }),
1355
- onCreated: async (phraseList, picture) => {
1356
- setIsCreatePhraseListOpen(false);
1357
- if (!phraseList) return;
1358
- if (picture && handleUpdatePhraseList) {
1359
- await handleUpdatePhraseList(phraseList.phraseListId, {
1360
- picture
1361
- });
1362
- }
1363
- if (handleEditPhraseList) {
1364
- handleEditPhraseList({
1365
- ...phraseList,
1366
- picture
1367
- });
1368
- } else {
1369
- setNewlyCreatedPhraseList({
1370
- ...phraseList,
1371
- picture
1372
- });
1373
- }
1374
- },
1375
- t: t,
1376
- fileSizeLimit: props.fileSizeLimit,
1377
- verificationStatus: props.verificationStatus
1378
- }), !handleOpenPhraseList && /*#__PURE__*/_jsx(PhraseListEditorDialog, {
1379
- open: Boolean(newlyCreatedPhraseList),
1380
- handleClose: () => setNewlyCreatedPhraseList(null),
1381
- initialValues: newlyCreatedPhraseList || {},
1382
- t: t,
1383
- phrases: phrases,
1384
- isCreator: isCreator,
1385
- isMember: isMember,
1386
- courseId: courseId,
1387
- sectionId: sectionId,
1388
- topicId: topicId,
1389
- learnLang: props.learnLang,
1390
- forLang: props.forLang,
1391
- voices: voices,
1392
- handleSpeak: props.handleSpeak,
1393
- handleTranslate: props.handleTranslate,
1394
- userAttributes: props.userAttributes,
1395
- learnLangCharacters: props.learnLangCharacters,
1396
- forLangCharacters: props.forLangCharacters,
1397
- fileSizeLimit: props.fileSizeLimit,
1398
- subscription: props.subscription,
1399
- makeChatGptApiRequest: props.makeChatGptApiRequest,
1400
- siteLanguage: props.siteLanguage,
1401
- isUserInternal: props.isUserInternal,
1402
- verificationStatus: props.verificationStatus,
1403
- uploadAudio: props.uploadAudio,
1404
- handleSpreadsheetSaveChanges: props.handleSpreadsheetSaveChanges,
1405
- topicName: props.topicName,
1406
- validatePhraseRecognition: props.validatePhraseRecognition,
1407
- difficulty: props.difficulty,
1408
- topicGoal: props.topicGoal,
1409
- handleUpdatePhrases: props.handleUpdatePhrases,
1410
- onSubmit: (values, helpers) => handleUpdatePhraseList && handleUpdatePhraseList(newlyCreatedPhraseList?.phraseListId, values, helpers)
1411
- })]
1412
- });
1413
- };
1414
- const renderRoleplaysExerciseItem = () => {
1415
- if (!isCreator && hiddenExercisesState.includes("roleplays")) return null;
1416
- return /*#__PURE__*/_jsxs(_Fragment, {
1417
- children: [/*#__PURE__*/_jsx(ListItem, {
1418
- disablePadding: true,
1419
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
1420
- children: [isLargeScreen && renderExerciseButtons("roleplays", "show_roleplays_exercise", "hide_roleplays_exercise", "Toggle Roleplays"), isCreator && !isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
1421
- title: t("more_options"),
1422
- children: /*#__PURE__*/_jsx("span", {
1423
- children: /*#__PURE__*/_jsx(IconButton, {
1424
- onClick: e => setShowRoleplaysOverflowMenu(e.currentTarget),
1425
- "aria-expanded": Boolean(showRoleplaysOverflowMenu),
1426
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
1427
- })
1428
- })
1429
- }), (isCreator || roleplays.length > 0) && renderCollapseButton(isRoleplayDropdownOpen, isLoading, () => setIsRoleplayDropdownOpen(v => !v), "Roleplays")]
1430
- }),
1431
- children: /*#__PURE__*/_jsxs(ListItemButton, {
1432
- "data-cy": "roleplay-exercise",
1433
- "aria-expanded": isRoleplayDropdownOpen,
1434
- disabled: !isCreator && roleplays.length === 0,
1435
- onClick: () => {
1436
- if (!isCreator && roleplays.length === 0) return;
1437
- setIsRoleplayDropdownOpen(v => !v);
1438
- },
1439
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1440
- children: /*#__PURE__*/_jsx(ForumIcon, {})
1441
- }), /*#__PURE__*/_jsx(ListItemText, {
1442
- primary: t("roleplays"),
1443
- secondary: /*#__PURE__*/_jsxs(_Fragment, {
1444
- children: [/*#__PURE__*/_jsx(Typography, {
1445
- variant: "body2",
1446
- gutterBottom: !isRoleplayDropdownOpen && roleplays.length > 0,
1447
- children: t("roleplay_exercise_desc")
1448
- }), !isRoleplayDropdownOpen && roleplays.length > 0 && /*#__PURE__*/_jsx(Collapse, {
1449
- in: true,
1450
- children: /*#__PURE__*/_jsx(ExerciseAvatarGroup, {
1451
- max: 3,
1452
- children: roleplays.filter(r => !r.isRoleplayHidden).map((roleplay, idx) => /*#__PURE__*/_jsx(Avatar, {
1453
- alt: "",
1454
- src: roleplay.picture || roleplay.actor1?.picture || roleplay.actor2?.picture || PlaceholderImages.roleplay
1455
- }, idx))
1456
- })
1457
- })]
1458
- })
1459
- })]
1460
- })
1461
- }), /*#__PURE__*/_jsx(OverflowMenu, {
1462
- anchorEl: showRoleplaysOverflowMenu,
1463
- handleClose: () => setShowRoleplaysOverflowMenu(null),
1464
- children: renderMenuButton("roleplays", "show_roleplays_exercise", "hide_roleplays_exercise", "Toggle Roleplays")
1465
- }), /*#__PURE__*/_jsx(Collapse, {
1466
- component: "li",
1467
- in: isRoleplayDropdownOpen,
1468
- timeout: "auto",
1469
- unmountOnExit: true,
1470
- children: /*#__PURE__*/_jsxs(List, {
1471
- disablePadding: true,
1472
- children: [roleplaysArray.map((roleplay, idx) => /*#__PURE__*/_jsx(RoleplayListItem, {
1473
- handleDuplicateRoleplay: handleDuplicateRoleplay,
1474
- roleplay: roleplay,
1475
- numberOfRoleplayCompletions: numberOfRoleplayCompletions,
1476
- voices: voices,
1477
- avatars: avatars,
1478
- addSearchParams: addSearchParams,
1479
- removeSearchParams: removeSearchParams,
1480
- searchParams: searchParams,
1481
- isLargeScreen: isLargeScreen,
1482
- handleShareRoleplay: handleShareRoleplay,
1483
- handleEditRoleplay: handleEditRoleplay,
1484
- handleReportProblem: handleReportProblem,
1485
- roleplayIndex: idx,
1486
- moveRoleplay: moveRoleplay,
1487
- onDropRoleplay: onDropRoleplay,
1488
- handleUpdateRoleplay: handleUpdateRoleplay,
1489
- classroomId: classroomId,
1490
- assignment: assignmentId,
1491
- parentClassroom: parentClassroom,
1492
- ...props
1493
- }, roleplay.roleplayId)), isCreator && /*#__PURE__*/_jsxs(ListItemButton, {
1494
- "data-cy": "add-roleplay-exercise",
1495
- id: "create-roleplay",
1496
- sx: sxNested,
1497
- onClick: handleCreateRoleplay,
1498
- role: "link",
1499
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1500
- children: /*#__PURE__*/_jsx(Add, {
1501
- sx: sxGreenColor
1502
- })
1503
- }), /*#__PURE__*/_jsx(ListItemText, {
1504
- primary: t("add_new")
1505
- })]
1506
- })]
1507
- })
1508
- })]
1509
- });
1510
- };
1511
- const renderChatbotsExerciseItem = () => {
1512
- if (!isCreator && hiddenExercisesState.includes("chatbots")) return null;
1513
- return /*#__PURE__*/_jsxs(_Fragment, {
1514
- children: [/*#__PURE__*/_jsx(ListItem, {
1515
- disablePadding: true,
1516
- secondaryAction: /*#__PURE__*/_jsxs(_Fragment, {
1517
- children: [isLargeScreen && renderExerciseButtons("chatbots", "show_chatbots_exercise", "hide_chatbots_exercise", "Toggle Chatbots"), isCreator && !isLargeScreen && /*#__PURE__*/_jsx(Tooltip, {
1518
- title: t("more_options"),
1519
- children: /*#__PURE__*/_jsx("span", {
1520
- children: /*#__PURE__*/_jsx(IconButton, {
1521
- onClick: e => setShowBotsOverflowMenu(e.currentTarget),
1522
- "aria-expanded": Boolean(showBotsOverflowMenu),
1523
- children: /*#__PURE__*/_jsx(MoreVertIcon, {})
1524
- })
1525
- })
1526
- }), (isCreator || bots.length > 0) && renderCollapseButton(isChatbotDropdownOpen, isLoading, () => setIsChatbotDropdownOpen(v => !v), "Chatbots")]
1527
- }),
1528
- children: /*#__PURE__*/_jsxs(ListItemButton, {
1529
- "data-cy": "bot-exercise",
1530
- "aria-expanded": isChatbotDropdownOpen,
1531
- disabled: !isCreator && bots.length === 0,
1532
- onClick: () => {
1533
- if (!isCreator && bots.length === 0) return;
1534
- setIsChatbotDropdownOpen(v => !v);
1535
- },
1536
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1537
- children: /*#__PURE__*/_jsx(Face, {})
1538
- }), /*#__PURE__*/_jsx(ListItemText, {
1539
- primary: t("chatbots"),
1540
- secondary: /*#__PURE__*/_jsxs(_Fragment, {
1541
- children: [/*#__PURE__*/_jsx(Typography, {
1542
- variant: "body2",
1543
- gutterBottom: !isChatbotDropdownOpen && bots.length > 0,
1544
- children: t("chatbot_exercise_desc")
1545
- }), !isChatbotDropdownOpen && bots.length > 0 && /*#__PURE__*/_jsx(Collapse, {
1546
- in: true,
1547
- children: /*#__PURE__*/_jsx(ExerciseAvatarGroup, {
1548
- max: 3,
1549
- children: botsArray.filter(b => !b.isBotHidden).map((bot, idx) => /*#__PURE__*/_jsx(Avatar, {
1550
- src: bot.picture || bot.botAvatar || PlaceholderImages.bot,
1551
- alt: "",
1552
- "aria-label": bot.botName
1553
- }, idx))
1554
- })
1555
- })]
1556
- })
1557
- })]
1558
- })
1559
- }), /*#__PURE__*/_jsx(OverflowMenu, {
1560
- anchorEl: showBotsOverflowMenu,
1561
- handleClose: () => setShowBotsOverflowMenu(null),
1562
- children: renderMenuButton("chatbots", "show_chatbots_exercise", "hide_chatbots_exercise", "Toggle Chatbots")
1563
- }), /*#__PURE__*/_jsx(Collapse, {
1564
- component: "li",
1565
- in: isChatbotDropdownOpen,
1566
- timeout: "auto",
1567
- unmountOnExit: true,
1568
- children: /*#__PURE__*/_jsxs(List, {
1569
- disablePadding: true,
1570
- children: [botsArray.map((bot, idx) => /*#__PURE__*/_jsx(BotListItem, {
1571
- bot: bot,
1572
- handleDuplicateBot: handleDuplicateBot,
1573
- isBotHidden: isBotHidden,
1574
- numberOfBotCompletions: numberOfBotCompletions,
1575
- voices: voices,
1576
- avatars: avatars,
1577
- addSearchParams: addSearchParams,
1578
- removeSearchParams: removeSearchParams,
1579
- searchParams: searchParams,
1580
- isLargeScreen: isLargeScreen,
1581
- handleEditBot: handleEditBot,
1582
- handlePlayBot: handlePlayBot,
1583
- handleUploadBotExerciseImage: handleUploadBotExerciseImage,
1584
- handleReportProblem: handleReportProblem,
1585
- teachClassrooms: teachClassrooms,
1586
- botIndex: idx,
1587
- moveBot: moveBot,
1588
- onDropBot: onDropBot,
1589
- parentClassroom: parentClassroom,
1590
- ...props
1591
- }, bot.botId)), isCreator && /*#__PURE__*/_jsxs(ListItemButton, {
1592
- "data-cy": "add-bot-exercise",
1593
- id: "create-bot",
1594
- sx: sxNested,
1595
- onClick: handleCreateBot,
1596
- role: "link",
1597
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
1598
- children: /*#__PURE__*/_jsx(Add, {
1599
- sx: sxGreenColor
1600
- })
1601
- }), /*#__PURE__*/_jsx(ListItemText, {
1602
- primary: t("add_new")
1603
- })]
1604
- })]
1605
- })
1606
- })]
1607
- });
1608
- };
1609
- return /*#__PURE__*/_jsxs(_Fragment, {
1610
- children: [/*#__PURE__*/_jsxs(List, {
1611
- component: "ul",
1612
- sx: sxRoot,
1613
- disablePadding: disablePadding,
1614
- children: [renderPhrasesExerciseItem(), renderRoleplaysExerciseItem(), renderChatbotsExerciseItem()]
1615
- }), /*#__PURE__*/_jsx(SelectClassroom, {
1616
- t: t,
1617
- open: isSelectClassroomDialogOpen,
1618
- handleClose: () => setIsSelectClassroomDialogOpen(false),
1619
- title: t("select_a_classroom"),
1620
- teachClassrooms: props.teachClassrooms || [],
1621
- type: type,
1622
- courseId: courseId,
1623
- sectionId: sectionId,
1624
- topicId: topicId
1625
- })]
1626
- });
1627
- }
1628
- Exercises.propTypes = {};
1629
- export const UnStyledComponent = Exercises;
1630
- export default Exercises;