@nualang/nualang-ui-components 0.1.1201 → 0.1.1203
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Dialogs/CreatePhrase/CreatePhrase.js +2 -1
- package/dist/Dialogs/ImageLibrary/ImageLibrary.js +2 -0
- package/dist/Dialogs/SelectExercise/SelectExercise.js +27 -4
- package/dist/Editors/Bot/Bot.js +4 -2
- package/dist/Editors/Bot/Editor/BotDesigner/BotDesigner.js +4 -2
- package/dist/Exercises/Listener/Listener.js +14 -10
- package/dist/Exercises/Pronouncer/Pronouncer.js +14 -10
- package/dist/Exercises/Translator/Translator.js +14 -10
- package/dist/Forms/CreateBot/CreateBot.js +4 -2
- package/dist/Forms/CreateClassroom/CreateClassroom.js +4 -2
- package/dist/Forms/CreateClassroom/Steps/Customization/Customization.js +5 -2
- package/dist/Forms/CreateCourse/CreateCourse.js +3 -1
- package/dist/Forms/CreateCourse/Steps/Customization/Customization.js +6 -3
- package/dist/Forms/CreateRoleplay/CreateRoleplay.js +4 -2
- package/dist/Forms/CreateRoleplayHook/CreateRoleplayHook.js +4 -2
- package/dist/Forms/CreateRoleplayHook/Steps/RoleplayInformation/RoleplayInformation.js +4 -2
- package/dist/Forms/CreateTopic/Steps/Customization/Customization.js +6 -3
- package/dist/Forms/UpdateClassroom/UpdateClassroom.js +4 -2
- package/dist/Forms/UpdateCourse/UpdateCourse.js +3 -1
- package/dist/Forms/UpdateTopic/UpdateTopic.js +3 -1
- package/dist/Lists/CourseSelection/CourseSelection.js +12 -1
- package/dist/Lists/ExerciseSelection/ExerciseSelection.js +127 -11
- package/dist/Lists/RoleplaySelection/RoleplaySelection.js +78 -5
- package/dist/Live/LiveListener/LiveListener.js +14 -10
- package/dist/Live/LiveTranslator/LiveTranslator.js +16 -12
- package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +2 -1
- package/dist/Screens/Courses/ViewCourse/ViewCourse.js +2 -1
- package/dist/Screens/Courses/ViewCourse/ViewTopic/ViewTopic.js +4 -2
- package/dist/utils/voiceImages.js +22 -0
- package/package.json +1 -1
|
@@ -21,6 +21,7 @@ const useStyles = (0, _mui.makeStyles)()(() => ({
|
|
|
21
21
|
function ImageLibraryDialog({
|
|
22
22
|
open,
|
|
23
23
|
handleClose,
|
|
24
|
+
verificationStatus,
|
|
24
25
|
...otherProps
|
|
25
26
|
}) {
|
|
26
27
|
const {
|
|
@@ -33,6 +34,7 @@ function ImageLibraryDialog({
|
|
|
33
34
|
maxWidth: "xl",
|
|
34
35
|
dialogContentClassName: classes.dialogContent,
|
|
35
36
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageLibrary.default, {
|
|
37
|
+
verificationStatus: verificationStatus,
|
|
36
38
|
...otherProps
|
|
37
39
|
})
|
|
38
40
|
});
|
|
@@ -19,16 +19,36 @@ function SelectExercise({
|
|
|
19
19
|
getCourseSections,
|
|
20
20
|
getRoleplays,
|
|
21
21
|
handleCreateGame,
|
|
22
|
-
username
|
|
22
|
+
username,
|
|
23
|
+
useCase = "live"
|
|
23
24
|
}) {
|
|
24
25
|
const [isExerciseSelected, setIsExerciseSelected] = (0, _react.useState)(false);
|
|
26
|
+
const [selectedExercises, setSelectedExercises] = (0, _react.useState)([]);
|
|
27
|
+
const handleSelectExercise = (exercises = []) => {
|
|
28
|
+
setSelectedExercises(prevSelectedExercises => {
|
|
29
|
+
let updatedExercises = [...prevSelectedExercises];
|
|
30
|
+
exercises.forEach(exercise => {
|
|
31
|
+
if (exercise.courseSectionTopicId && updatedExercises.some(e => e.courseSectionTopicId === exercise.courseSectionTopicId && e.name === exercise.name)) {
|
|
32
|
+
updatedExercises = updatedExercises.filter(e => e.courseSectionTopicId !== exercise.courseSectionTopicId || e.name !== exercise.name);
|
|
33
|
+
} else if (exercise.roleplayId && updatedExercises.some(e => e.roleplayId === exercise.roleplayId && e.game === exercise.game)) {
|
|
34
|
+
updatedExercises = updatedExercises.filter(e => e.courseSectionTopicId || e.roleplayId !== exercise.roleplayId || e.game !== exercise.game);
|
|
35
|
+
} else {
|
|
36
|
+
updatedExercises.push(exercise);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return updatedExercises;
|
|
40
|
+
});
|
|
41
|
+
};
|
|
25
42
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ResponsiveDialog.default, {
|
|
26
43
|
open: open,
|
|
27
44
|
handleClose: handleClose,
|
|
28
|
-
dialogTitle: t("play_live"),
|
|
45
|
+
dialogTitle: useCase === "live" ? t("play_live") : t("assignment"),
|
|
29
46
|
maxWidth: "md",
|
|
47
|
+
handleSubmit: useCase === "live" ? null : () => {},
|
|
48
|
+
submitText: useCase === "live" ? null : t("add_exercises"),
|
|
49
|
+
isSubmitDisabled: selectedExercises.length === 0,
|
|
30
50
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContentText, {
|
|
31
|
-
children: t("live_dialog_description")
|
|
51
|
+
children: useCase === "live" ? t("live_dialog_description") : t("assign_exercises_description")
|
|
32
52
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_system.Box, {
|
|
33
53
|
mt: 1,
|
|
34
54
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CourseSelection.default, {
|
|
@@ -40,7 +60,10 @@ function SelectExercise({
|
|
|
40
60
|
t: t,
|
|
41
61
|
isExerciseSelected: isExerciseSelected,
|
|
42
62
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
43
|
-
isDialogOpen: open
|
|
63
|
+
isDialogOpen: open,
|
|
64
|
+
useCase: useCase,
|
|
65
|
+
selectedExercises: selectedExercises,
|
|
66
|
+
handleSelectExercise: useCase === "assignment" ? handleSelectExercise : null
|
|
44
67
|
})
|
|
45
68
|
})]
|
|
46
69
|
});
|
package/dist/Editors/Bot/Bot.js
CHANGED
|
@@ -117,7 +117,8 @@ function Bot({
|
|
|
117
117
|
sectionId,
|
|
118
118
|
topicId,
|
|
119
119
|
initialTopicGoal,
|
|
120
|
-
isUserInternal
|
|
120
|
+
isUserInternal,
|
|
121
|
+
verificationStatus
|
|
121
122
|
}) {
|
|
122
123
|
const {
|
|
123
124
|
recognitionState,
|
|
@@ -750,7 +751,8 @@ function Bot({
|
|
|
750
751
|
onSubmit: onSubmit,
|
|
751
752
|
subscription: subscription,
|
|
752
753
|
handleBotInstructionsImageUpload: handleBotInstructionsImageUpload,
|
|
753
|
-
isUserInternal: isUserInternal
|
|
754
|
+
isUserInternal: isUserInternal,
|
|
755
|
+
verificationStatus: verificationStatus
|
|
754
756
|
})
|
|
755
757
|
}) : null]
|
|
756
758
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ResponsiveDialog.default, {
|
|
@@ -68,7 +68,8 @@ function BotDesigner(props) {
|
|
|
68
68
|
handleUploadBotExerciseImage,
|
|
69
69
|
botId,
|
|
70
70
|
simplified,
|
|
71
|
-
handleOnBlur
|
|
71
|
+
handleOnBlur,
|
|
72
|
+
verificationStatus
|
|
72
73
|
} = props;
|
|
73
74
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
74
75
|
children: [rivescriptJSON && rivescriptJSON.begin.var && /*#__PURE__*/(0, _jsxRuntime.jsx)(_VarList.default, {
|
|
@@ -87,7 +88,8 @@ function BotDesigner(props) {
|
|
|
87
88
|
handleUploadBotExerciseImage: handleUploadBotExerciseImage,
|
|
88
89
|
botId: botId,
|
|
89
90
|
simplified: simplified,
|
|
90
|
-
handleOnBlur: handleOnBlur
|
|
91
|
+
handleOnBlur: handleOnBlur,
|
|
92
|
+
verificationStatus: verificationStatus
|
|
91
93
|
}), rivescriptJSON && rivescriptJSON.begin.sub && !simplified && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SubList.default, {
|
|
92
94
|
t: t,
|
|
93
95
|
subs: rivescriptJSON.begin.sub,
|
|
@@ -32,6 +32,7 @@ var _styles = require("@mui/material/styles");
|
|
|
32
32
|
var _reactBeautifulDnd = require("react-beautiful-dnd");
|
|
33
33
|
var _index = require("../../utils/index");
|
|
34
34
|
var _useWordBankFocus = _interopRequireDefault(require("../../hooks/useWordBankFocus"));
|
|
35
|
+
var _voiceImages = _interopRequireDefault(require("../../utils/voiceImages"));
|
|
35
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
36
37
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
37
38
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
@@ -343,20 +344,23 @@ function Listener({
|
|
|
343
344
|
voiceLanguageCode,
|
|
344
345
|
voicePitch
|
|
345
346
|
} = topicInfo;
|
|
347
|
+
const voiceMap = (0, _voiceImages.default)(voices || []);
|
|
346
348
|
const getVoiceImage = () => {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
349
|
+
try {
|
|
350
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
351
|
+
return exerciseVoice.speakingImage || null;
|
|
352
|
+
} catch (error) {
|
|
353
|
+
console.error('Error retrieving voice image:', error);
|
|
354
|
+
return null;
|
|
352
355
|
}
|
|
353
356
|
};
|
|
354
357
|
const getNualaCelebratingImage = () => {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
358
|
+
try {
|
|
359
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
360
|
+
return exerciseVoice.celebratingImage || null;
|
|
361
|
+
} catch (error) {
|
|
362
|
+
console.error('Error retrieving celebrating image:', error);
|
|
363
|
+
return null;
|
|
360
364
|
}
|
|
361
365
|
};
|
|
362
366
|
const joyrideSteps = [{
|
|
@@ -33,6 +33,7 @@ var _ReportProblem = _interopRequireDefault(require("../../Misc/ReportProblem"))
|
|
|
33
33
|
var _ChatBubble = _interopRequireDefault(require("../../Misc/ChatBubble/ChatBubble"));
|
|
34
34
|
var _WaveFormLite = _interopRequireDefault(require("../../Misc/WaveFormLite"));
|
|
35
35
|
var _utils = require("../../utils");
|
|
36
|
+
var _voiceImages = _interopRequireDefault(require("../../utils/voiceImages"));
|
|
36
37
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
38
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
38
39
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
@@ -441,20 +442,23 @@ function Pronouncer({
|
|
|
441
442
|
voiceLanguageCode,
|
|
442
443
|
voicePitch
|
|
443
444
|
} = topicInfo;
|
|
445
|
+
const voiceMap = (0, _voiceImages.default)(voices || []);
|
|
444
446
|
const getVoiceImage = () => {
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
447
|
+
try {
|
|
448
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
449
|
+
return exerciseVoice.speakingImage || null;
|
|
450
|
+
} catch (error) {
|
|
451
|
+
console.error('Error retrieving voice image:', error);
|
|
452
|
+
return null;
|
|
450
453
|
}
|
|
451
454
|
};
|
|
452
455
|
const getNualaCelebratingImage = () => {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
456
|
+
try {
|
|
457
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
458
|
+
return exerciseVoice.celebratingImage || null;
|
|
459
|
+
} catch (error) {
|
|
460
|
+
console.error('Error retrieving celebrating image:', error);
|
|
461
|
+
return null;
|
|
458
462
|
}
|
|
459
463
|
};
|
|
460
464
|
const isListeningIndicatorTextVisible = recognizing && interimTranscript === "" && finalTranscript === "" ? true : false;
|
|
@@ -32,6 +32,7 @@ var _ChatBubble = _interopRequireDefault(require("../../Misc/ChatBubble/ChatBubb
|
|
|
32
32
|
var _WaveFormLite = _interopRequireDefault(require("../../Misc/WaveFormLite"));
|
|
33
33
|
var _styles = require("@mui/material/styles");
|
|
34
34
|
var _reactBeautifulDnd = require("react-beautiful-dnd");
|
|
35
|
+
var _voiceImages = _interopRequireDefault(require("../../utils/voiceImages"));
|
|
35
36
|
var _index = require("../../utils/index");
|
|
36
37
|
var _useWordBankFocus = _interopRequireDefault(require("../../hooks/useWordBankFocus"));
|
|
37
38
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -485,20 +486,23 @@ function Translator({
|
|
|
485
486
|
voiceLanguageCode,
|
|
486
487
|
voicePitch
|
|
487
488
|
} = topicInfo;
|
|
489
|
+
const voiceMap = (0, _voiceImages.default)(voices || []);
|
|
488
490
|
const getVoiceImage = () => {
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
491
|
+
try {
|
|
492
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
493
|
+
return exerciseVoice.speakingImage || null;
|
|
494
|
+
} catch (error) {
|
|
495
|
+
console.error('Error retrieving voice image:', error);
|
|
496
|
+
return null;
|
|
494
497
|
}
|
|
495
498
|
};
|
|
496
499
|
const getNualaCelebratingImage = () => {
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
500
|
+
try {
|
|
501
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
502
|
+
return exerciseVoice.celebratingImage || null;
|
|
503
|
+
} catch (error) {
|
|
504
|
+
console.error('Error retrieving celebrating image:', error);
|
|
505
|
+
return null;
|
|
502
506
|
}
|
|
503
507
|
};
|
|
504
508
|
const handleKeyDown = event => {
|
|
@@ -50,7 +50,8 @@ function CreateBot({
|
|
|
50
50
|
isUpgradePossible: true
|
|
51
51
|
},
|
|
52
52
|
langChar,
|
|
53
|
-
isUserInternal
|
|
53
|
+
isUserInternal,
|
|
54
|
+
verificationStatus
|
|
54
55
|
}) {
|
|
55
56
|
const difficultyOptions = difficulties.map((d, idx) => {
|
|
56
57
|
const keyId = `creabotvoicx_${(0, _index.randomId)()}${idx}`;
|
|
@@ -72,7 +73,8 @@ function CreateBot({
|
|
|
72
73
|
subscription: subscription,
|
|
73
74
|
voiceOptions: voices,
|
|
74
75
|
langChar: langChar,
|
|
75
|
-
isUserInternal: isUserInternal
|
|
76
|
+
isUserInternal: isUserInternal,
|
|
77
|
+
verificationStatus: verificationStatus
|
|
76
78
|
});
|
|
77
79
|
}
|
|
78
80
|
CreateBot.propTypes = {};
|
|
@@ -24,7 +24,8 @@ function CreateClassroom({
|
|
|
24
24
|
subscription = {
|
|
25
25
|
isUpgradePossible: true
|
|
26
26
|
},
|
|
27
|
-
learnLang
|
|
27
|
+
learnLang,
|
|
28
|
+
verificationStatus
|
|
28
29
|
}) {
|
|
29
30
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MultiStepForm.default, {
|
|
30
31
|
initialValues: {
|
|
@@ -49,7 +50,8 @@ function CreateClassroom({
|
|
|
49
50
|
languages: languages,
|
|
50
51
|
forLanguages: forLanguages,
|
|
51
52
|
fileSizeLimit: fileSizeLimit,
|
|
52
|
-
subscription: subscription
|
|
53
|
+
subscription: subscription,
|
|
54
|
+
verificationStatus: verificationStatus
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
CreateClassroom.propTypes = {};
|
|
@@ -17,6 +17,7 @@ function Customization({
|
|
|
17
17
|
handleChange,
|
|
18
18
|
values,
|
|
19
19
|
fileSizeLimit,
|
|
20
|
+
verificationStatus,
|
|
20
21
|
isUpdateClassroom = false
|
|
21
22
|
}) {
|
|
22
23
|
const {
|
|
@@ -45,7 +46,8 @@ function Customization({
|
|
|
45
46
|
handleChange: handleChange,
|
|
46
47
|
fileSizeLimit: fileSizeLimit,
|
|
47
48
|
previewComponent: _PreviewCard.default,
|
|
48
|
-
isBanner: false
|
|
49
|
+
isBanner: false,
|
|
50
|
+
verificationStatus: verificationStatus
|
|
49
51
|
})
|
|
50
52
|
})]
|
|
51
53
|
}), isUpdateClassroom ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Grid, {
|
|
@@ -65,7 +67,8 @@ function Customization({
|
|
|
65
67
|
fileSizeLimit: fileSizeLimit,
|
|
66
68
|
previewComponent: _PreviewCard.default,
|
|
67
69
|
isBanner: true,
|
|
68
|
-
aspect: 16 / 2.5
|
|
70
|
+
aspect: 16 / 2.5,
|
|
71
|
+
verificationStatus: verificationStatus
|
|
69
72
|
})
|
|
70
73
|
})]
|
|
71
74
|
}) : null]
|
|
@@ -24,6 +24,7 @@ function CreateCourse({
|
|
|
24
24
|
forLanguages = {},
|
|
25
25
|
fileSizeLimit,
|
|
26
26
|
userImage,
|
|
27
|
+
verificationStatus,
|
|
27
28
|
subscription = {
|
|
28
29
|
isUpgradePossible: true
|
|
29
30
|
},
|
|
@@ -58,7 +59,8 @@ function CreateCourse({
|
|
|
58
59
|
languageOptions: languages,
|
|
59
60
|
forLanguageOptions: forLanguages,
|
|
60
61
|
fileSizeLimit: fileSizeLimit,
|
|
61
|
-
subscription: subscription
|
|
62
|
+
subscription: subscription,
|
|
63
|
+
verificationStatus: verificationStatus
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
66
|
CreateCourse.propTypes = {};
|
|
@@ -17,7 +17,8 @@ function Customization({
|
|
|
17
17
|
handleChange,
|
|
18
18
|
values,
|
|
19
19
|
fileSizeLimit,
|
|
20
|
-
isUpdateCourse = false
|
|
20
|
+
isUpdateCourse = false,
|
|
21
|
+
verificationStatus
|
|
21
22
|
}) {
|
|
22
23
|
const {
|
|
23
24
|
picture,
|
|
@@ -45,7 +46,8 @@ function Customization({
|
|
|
45
46
|
handleChange: handleChange,
|
|
46
47
|
fileSizeLimit: fileSizeLimit,
|
|
47
48
|
previewComponent: _PreviewCard.default,
|
|
48
|
-
isBanner: false
|
|
49
|
+
isBanner: false,
|
|
50
|
+
verificationStatus: verificationStatus
|
|
49
51
|
})
|
|
50
52
|
})]
|
|
51
53
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Grid, {
|
|
@@ -65,7 +67,8 @@ function Customization({
|
|
|
65
67
|
fileSizeLimit: fileSizeLimit,
|
|
66
68
|
previewComponent: _PreviewCard.default,
|
|
67
69
|
isBanner: true,
|
|
68
|
-
aspect: 16 / 2.5
|
|
70
|
+
aspect: 16 / 2.5,
|
|
71
|
+
verificationStatus: verificationStatus
|
|
69
72
|
})
|
|
70
73
|
})]
|
|
71
74
|
})]
|
|
@@ -62,7 +62,8 @@ function CreateRoleplay({
|
|
|
62
62
|
isUpgradePossible: true
|
|
63
63
|
},
|
|
64
64
|
langChar,
|
|
65
|
-
isUserInternal
|
|
65
|
+
isUserInternal,
|
|
66
|
+
verificationStatus
|
|
66
67
|
}) {
|
|
67
68
|
const difficultyOptions = difficulties.map((d, idx) => {
|
|
68
69
|
const keyId = `crearolax${(0, _index.randomId)()}${idx}`;
|
|
@@ -85,7 +86,8 @@ function CreateRoleplay({
|
|
|
85
86
|
fileSizeLimit: fileSizeLimit,
|
|
86
87
|
subscription: subscription,
|
|
87
88
|
langChar: langChar,
|
|
88
|
-
isUserInternal: isUserInternal
|
|
89
|
+
isUserInternal: isUserInternal,
|
|
90
|
+
verificationStatus: verificationStatus
|
|
89
91
|
});
|
|
90
92
|
}
|
|
91
93
|
CreateRoleplay.propTypes = {};
|
|
@@ -60,7 +60,8 @@ function CreateRoleplayHook({
|
|
|
60
60
|
fileSizeLimit,
|
|
61
61
|
subscription = {
|
|
62
62
|
isUpgradePossible: true
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
|
+
verificationStatus
|
|
64
65
|
}) {
|
|
65
66
|
const difficultyOptions = difficulties.map((d, idx) => {
|
|
66
67
|
const keyId = `crearolax${(0, _index.randomId)()}${idx}`;
|
|
@@ -81,7 +82,8 @@ function CreateRoleplayHook({
|
|
|
81
82
|
avatars: avatars,
|
|
82
83
|
difficultyOptions: difficultyOptions,
|
|
83
84
|
fileSizeLimit: fileSizeLimit,
|
|
84
|
-
subscription: subscription
|
|
85
|
+
subscription: subscription,
|
|
86
|
+
verificationStatus: verificationStatus
|
|
85
87
|
});
|
|
86
88
|
}
|
|
87
89
|
CreateRoleplayHook.propTypes = {};
|
|
@@ -225,7 +225,8 @@ function RoleplayInformation({
|
|
|
225
225
|
handleSpeak,
|
|
226
226
|
avatars,
|
|
227
227
|
fileSizeLimit,
|
|
228
|
-
isUserInternal
|
|
228
|
+
isUserInternal,
|
|
229
|
+
verificationStatus
|
|
229
230
|
}) {
|
|
230
231
|
const formContext = (0, _reactHookForm.useFormContext)();
|
|
231
232
|
const {
|
|
@@ -335,7 +336,8 @@ function RoleplayInformation({
|
|
|
335
336
|
value: value,
|
|
336
337
|
handleChange: onChange,
|
|
337
338
|
fileSizeLimit: fileSizeLimit,
|
|
338
|
-
previewComponent: _PreviewCard.default
|
|
339
|
+
previewComponent: _PreviewCard.default,
|
|
340
|
+
verificationStatus: verificationStatus
|
|
339
341
|
})
|
|
340
342
|
})
|
|
341
343
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Grid, {
|
|
@@ -17,7 +17,8 @@ function Customization({
|
|
|
17
17
|
handleChange,
|
|
18
18
|
values,
|
|
19
19
|
fileSizeLimit,
|
|
20
|
-
isUpdateTopic = false
|
|
20
|
+
isUpdateTopic = false,
|
|
21
|
+
verificationStatus
|
|
21
22
|
}) {
|
|
22
23
|
const {
|
|
23
24
|
picture,
|
|
@@ -45,7 +46,8 @@ function Customization({
|
|
|
45
46
|
handleChange: handleChange,
|
|
46
47
|
fileSizeLimit: fileSizeLimit,
|
|
47
48
|
previewComponent: _PreviewCard.default,
|
|
48
|
-
isBanner: false
|
|
49
|
+
isBanner: false,
|
|
50
|
+
verificationStatus: verificationStatus
|
|
49
51
|
})
|
|
50
52
|
})]
|
|
51
53
|
}), isUpdateTopic ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Grid, {
|
|
@@ -65,7 +67,8 @@ function Customization({
|
|
|
65
67
|
fileSizeLimit: fileSizeLimit,
|
|
66
68
|
previewComponent: _PreviewCard.default,
|
|
67
69
|
isBanner: true,
|
|
68
|
-
aspect: 16 / 2.5
|
|
70
|
+
aspect: 16 / 2.5,
|
|
71
|
+
verificationStatus: verificationStatus
|
|
69
72
|
})
|
|
70
73
|
})]
|
|
71
74
|
}) : null]
|
|
@@ -47,7 +47,8 @@ function UpdateClassroom({
|
|
|
47
47
|
courses,
|
|
48
48
|
scrollToDiscuss,
|
|
49
49
|
setScrollToDiscuss,
|
|
50
|
-
isClassroomArchived = false
|
|
50
|
+
isClassroomArchived = false,
|
|
51
|
+
verificationStatus
|
|
51
52
|
}) {
|
|
52
53
|
const {
|
|
53
54
|
classes
|
|
@@ -278,7 +279,8 @@ function UpdateClassroom({
|
|
|
278
279
|
values: values,
|
|
279
280
|
fileSizeLimit: fileSizeLimit,
|
|
280
281
|
isUpdateClassroom: true,
|
|
281
|
-
...otherProps
|
|
282
|
+
...otherProps,
|
|
283
|
+
verificationStatus: verificationStatus
|
|
282
284
|
})
|
|
283
285
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CardActions, {
|
|
284
286
|
className: classes.padding,
|
|
@@ -40,7 +40,8 @@ function UpdateCourse({
|
|
|
40
40
|
languages,
|
|
41
41
|
forLanguages,
|
|
42
42
|
fileSizeLimit,
|
|
43
|
-
subscription
|
|
43
|
+
subscription,
|
|
44
|
+
verificationStatus
|
|
44
45
|
}) {
|
|
45
46
|
const difficultyOptions = difficulties.map((d, idx) => {
|
|
46
47
|
const keyId = `crearolax${(0, _index.randomId)()}${idx}`;
|
|
@@ -229,6 +230,7 @@ function UpdateCourse({
|
|
|
229
230
|
values: values,
|
|
230
231
|
fileSizeLimit: fileSizeLimit,
|
|
231
232
|
isUpdateCourse: true,
|
|
233
|
+
verificationStatus: verificationStatus,
|
|
232
234
|
...otherProps
|
|
233
235
|
})
|
|
234
236
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CardActions, {
|
|
@@ -55,7 +55,8 @@ function UpdateTopic({
|
|
|
55
55
|
voices = {},
|
|
56
56
|
handleSpeak,
|
|
57
57
|
learnLang,
|
|
58
|
-
isUserInternal
|
|
58
|
+
isUserInternal,
|
|
59
|
+
verificationStatus
|
|
59
60
|
}) {
|
|
60
61
|
const {
|
|
61
62
|
classes
|
|
@@ -251,6 +252,7 @@ function UpdateTopic({
|
|
|
251
252
|
values: values,
|
|
252
253
|
fileSizeLimit: fileSizeLimit,
|
|
253
254
|
isUpdateTopic: true,
|
|
255
|
+
verificationStatus: verificationStatus,
|
|
254
256
|
...otherProps
|
|
255
257
|
})
|
|
256
258
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardActions.default, {
|
|
@@ -23,6 +23,9 @@ function Course({
|
|
|
23
23
|
isExerciseSelected,
|
|
24
24
|
setIsExerciseSelected,
|
|
25
25
|
isDialogOpen,
|
|
26
|
+
handleSelectExercise,
|
|
27
|
+
selectedExercises,
|
|
28
|
+
useCase,
|
|
26
29
|
assignment,
|
|
27
30
|
handleStartExercise,
|
|
28
31
|
isAssignment,
|
|
@@ -97,6 +100,9 @@ function Course({
|
|
|
97
100
|
isExerciseSelected: isExerciseSelected,
|
|
98
101
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
99
102
|
getRoleplays: getRoleplays,
|
|
103
|
+
handleSelectExercise: handleSelectExercise,
|
|
104
|
+
selectedExercises: selectedExercises,
|
|
105
|
+
useCase: useCase,
|
|
100
106
|
assignment: assignment,
|
|
101
107
|
handleStartExercise: handleStartExercise,
|
|
102
108
|
isAssignment: isAssignment,
|
|
@@ -115,13 +121,15 @@ function CourseSelection({
|
|
|
115
121
|
t,
|
|
116
122
|
isExerciseSelected,
|
|
117
123
|
setIsExerciseSelected,
|
|
124
|
+
handleSelectExercise,
|
|
125
|
+
selectedExercises,
|
|
126
|
+
useCase,
|
|
118
127
|
assignment,
|
|
119
128
|
handleStartExercise,
|
|
120
129
|
isAssignment,
|
|
121
130
|
isCreator,
|
|
122
131
|
...otherProps
|
|
123
132
|
}) {
|
|
124
|
-
console.log("courses", courses);
|
|
125
133
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
126
134
|
children: courses.map((course, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Course, {
|
|
127
135
|
course: course,
|
|
@@ -133,6 +141,9 @@ function CourseSelection({
|
|
|
133
141
|
t: t,
|
|
134
142
|
isExerciseSelected: isExerciseSelected,
|
|
135
143
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
144
|
+
handleSelectExercise: handleSelectExercise,
|
|
145
|
+
selectedExercises: selectedExercises,
|
|
146
|
+
useCase: useCase,
|
|
136
147
|
assignment: assignment,
|
|
137
148
|
handleStartExercise: handleStartExercise,
|
|
138
149
|
isAssignment: isAssignment,
|
|
@@ -14,6 +14,7 @@ var _Hearing = _interopRequireDefault(require("@mui/icons-material/Hearing"));
|
|
|
14
14
|
var _SwapHoriz = _interopRequireDefault(require("@mui/icons-material/SwapHoriz"));
|
|
15
15
|
var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
|
|
16
16
|
var _ExpandLess = _interopRequireDefault(require("@mui/icons-material/ExpandLess"));
|
|
17
|
+
var _RecordVoiceOver = _interopRequireDefault(require("@mui/icons-material/RecordVoiceOver"));
|
|
17
18
|
var _Forum = _interopRequireDefault(require("@mui/icons-material/Forum"));
|
|
18
19
|
var _OndemandVideo = _interopRequireDefault(require("@mui/icons-material/OndemandVideo"));
|
|
19
20
|
var _RoleplaySelection = _interopRequireDefault(require("../RoleplaySelection/RoleplaySelection"));
|
|
@@ -32,14 +33,18 @@ function Exercise({
|
|
|
32
33
|
setIsExerciseSelected,
|
|
33
34
|
roleplays,
|
|
34
35
|
phrases,
|
|
36
|
+
handleSelectExercise = null,
|
|
37
|
+
selectedExercises,
|
|
38
|
+
useCase,
|
|
35
39
|
assignment,
|
|
36
40
|
handleStartExercise,
|
|
37
41
|
isAssignment,
|
|
38
42
|
isCreator
|
|
39
43
|
}) {
|
|
40
|
-
console.log("section", section);
|
|
41
44
|
const [listeningHidden, setListeningHidden] = (0, _react.useState)(false);
|
|
42
45
|
const [translationHidden, setTranslationHidden] = (0, _react.useState)(false);
|
|
46
|
+
const [pronunciationHidden, setPronunciationHidden] = (0, _react.useState)(false);
|
|
47
|
+
const isAssignmentExerciseSelected = selectedExercises.some(e => e.name === name && e.courseSectionTopicId === courseSectionTopicId);
|
|
43
48
|
const noRoleplays = name.toLowerCase() === "roleplays" && roleplays.length === 0;
|
|
44
49
|
const [roleplaysOpen, setRoleplaysOpen] = (0, _react.useState)(noRoleplays ? false : true);
|
|
45
50
|
const handleToggleRoleplays = () => {
|
|
@@ -62,18 +67,23 @@ function Exercise({
|
|
|
62
67
|
if (topic.hiddenExercises && topic.hiddenExercises.includes("translation")) {
|
|
63
68
|
setTranslationHidden(true);
|
|
64
69
|
}
|
|
70
|
+
if (topic.hiddenExercises && topic.hiddenExercises.includes("pronunciation")) {
|
|
71
|
+
setPronunciationHidden(true);
|
|
72
|
+
}
|
|
65
73
|
});
|
|
66
74
|
}, [section]);
|
|
67
75
|
const isValidExercise = phrases.length >= 2 || name.toLowerCase() === "roleplays";
|
|
68
|
-
if (name.toLowerCase() === "listening" && listeningHidden || name.toLowerCase() === "translation" && translationHidden) {
|
|
76
|
+
if (name.toLowerCase() === "listening" && listeningHidden || name.toLowerCase() === "translation" && translationHidden || name.toLowerCase() === "pronunciation" && pronunciationHidden) {
|
|
69
77
|
return null;
|
|
70
78
|
}
|
|
71
79
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Tooltip, {
|
|
72
80
|
title: name === "roleplays" && noRoleplays ? t("topic_no_roleplays") : !isValidExercise ? t("minimum_two_phrases") : "",
|
|
73
81
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
|
|
74
82
|
onClick: () => {
|
|
75
|
-
name.toLowerCase() === "roleplays" ? handleToggleRoleplays() :
|
|
76
|
-
|
|
83
|
+
name.toLowerCase() === "roleplays" ? handleToggleRoleplays() : useCase === "assignment" ? handleSelectExercise([{
|
|
84
|
+
name,
|
|
85
|
+
courseSectionTopicId
|
|
86
|
+
}]) : handleExerciseSelected();
|
|
77
87
|
},
|
|
78
88
|
display: "flex",
|
|
79
89
|
alignItems: "center",
|
|
@@ -88,6 +98,8 @@ function Exercise({
|
|
|
88
98
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Hearing.default, {})
|
|
89
99
|
}), name.toLowerCase() === "translation" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
90
100
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SwapHoriz.default, {})
|
|
101
|
+
}), name.toLowerCase() === "pronunciation" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
102
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RecordVoiceOver.default, {})
|
|
91
103
|
}), name.toLowerCase() === "roleplays" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
92
104
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Forum.default, {})
|
|
93
105
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
@@ -98,8 +110,20 @@ function Exercise({
|
|
|
98
110
|
})
|
|
99
111
|
}), name.toLowerCase() === "roleplays" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
100
112
|
children: roleplaysOpen ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandLess.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore.default, {})
|
|
101
|
-
}), (name.toLowerCase() === "listening" || name.toLowerCase() === "translation") && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
102
|
-
children: isAssignment ? isCreator ?
|
|
113
|
+
}), (name.toLowerCase() === "listening" || name.toLowerCase() === "translation" || name.toLowerCase() === "pronunciation") && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
114
|
+
children: isAssignment ? isCreator ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Checkbox, {
|
|
115
|
+
checked: isAssignmentExerciseSelected,
|
|
116
|
+
onClick: event => {
|
|
117
|
+
event.stopPropagation();
|
|
118
|
+
} //so clicking on the checkbox doesnt also trigger the onclick of the listItemButton
|
|
119
|
+
,
|
|
120
|
+
onChange: () => {
|
|
121
|
+
handleSelectExercise([{
|
|
122
|
+
name,
|
|
123
|
+
courseSectionTopicId
|
|
124
|
+
}]);
|
|
125
|
+
}
|
|
126
|
+
}) :
|
|
103
127
|
/*#__PURE__*/
|
|
104
128
|
//add check to see if the exercise is completed
|
|
105
129
|
(0, _jsxRuntime.jsx)(_CheckCircle.default, {
|
|
@@ -119,7 +143,10 @@ function Exercise({
|
|
|
119
143
|
handleCreateGame: handleCreateGame,
|
|
120
144
|
courseSectionTopicId: courseSectionTopicId,
|
|
121
145
|
t: t,
|
|
122
|
-
isExerciseSelected: isExerciseSelected
|
|
146
|
+
isExerciseSelected: isExerciseSelected,
|
|
147
|
+
handleSelectExercise: handleSelectExercise,
|
|
148
|
+
selectedExercises: selectedExercises,
|
|
149
|
+
useCase: useCase
|
|
123
150
|
})
|
|
124
151
|
})
|
|
125
152
|
})]
|
|
@@ -138,6 +165,9 @@ function ExerciseList({
|
|
|
138
165
|
setIsExerciseSelected,
|
|
139
166
|
roleplays,
|
|
140
167
|
phrases,
|
|
168
|
+
handleSelectExercise,
|
|
169
|
+
selectedExercises,
|
|
170
|
+
useCase,
|
|
141
171
|
assignment,
|
|
142
172
|
handleStartExercise,
|
|
143
173
|
isAssignment,
|
|
@@ -164,6 +194,9 @@ function ExerciseList({
|
|
|
164
194
|
sectionId: sectionId,
|
|
165
195
|
topicId: topicId,
|
|
166
196
|
phrases: phrases,
|
|
197
|
+
handleSelectExercise: handleSelectExercise,
|
|
198
|
+
selectedExercises: selectedExercises,
|
|
199
|
+
useCase: useCase,
|
|
167
200
|
assignment: assignment,
|
|
168
201
|
handleStartExercise: handleStartExercise,
|
|
169
202
|
isAssignment: isAssignment,
|
|
@@ -201,6 +234,9 @@ function Topic({
|
|
|
201
234
|
isExerciseSelected,
|
|
202
235
|
setIsExerciseSelected,
|
|
203
236
|
getRoleplays,
|
|
237
|
+
handleSelectExercise,
|
|
238
|
+
selectedExercises,
|
|
239
|
+
useCase,
|
|
204
240
|
assignment,
|
|
205
241
|
handleStartExercise,
|
|
206
242
|
isAssignment,
|
|
@@ -210,10 +246,20 @@ function Topic({
|
|
|
210
246
|
const theme = (0, _styles.useTheme)();
|
|
211
247
|
const isLargeScreen = (0, _useMediaQuery.default)(theme.breakpoints.up("sm"));
|
|
212
248
|
const [isExerciseListOpen, setExerciseListOpen] = (0, _react.useState)(false);
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
249
|
+
const [isWholeTopicSelected, setIsWholeTopicSelected] = (0, _react.useState)(false);
|
|
250
|
+
const exercises = useCase === "assignment" ? [{
|
|
251
|
+
name: "translation",
|
|
252
|
+
description: `translation_exercise_desc`
|
|
253
|
+
}, {
|
|
254
|
+
name: "listening",
|
|
255
|
+
description: `listening_exercise_desc`
|
|
256
|
+
}, {
|
|
257
|
+
name: "pronunciation",
|
|
258
|
+
description: `pronunciation_exercise_desc`
|
|
259
|
+
}, {
|
|
260
|
+
name: "roleplays",
|
|
261
|
+
description: `roleplay_exercise_desc`
|
|
262
|
+
}] : [{
|
|
217
263
|
name: "translation",
|
|
218
264
|
description: `translation_exercise_desc`
|
|
219
265
|
}, {
|
|
@@ -223,6 +269,47 @@ function Topic({
|
|
|
223
269
|
name: "roleplays",
|
|
224
270
|
description: `roleplay_exercise_desc`
|
|
225
271
|
}];
|
|
272
|
+
const games = ["roleplay-story", "roleplay-fill-in-the-blanks", "roleplay-act-it-out", "roleplay-act-it-out-listening", "roleplay-act-it-out-speaking", "roleplay-act-it-out-listening-speaking"];
|
|
273
|
+
(0, _react.useEffect)(() => {
|
|
274
|
+
const exerciseCount = selectedExercises.filter(exercise => exercise.courseSectionTopicId === `${courseId}|${sectionId}|${topicId}`).length;
|
|
275
|
+
const roleplayCount = selectedExercises.filter(exercise => exercise.roleplayId && roleplays.some(roleplay => roleplay.roleplayId === exercise.roleplayId)).length;
|
|
276
|
+
const total = roleplays.length * 6 + 3;
|
|
277
|
+
if (exerciseCount + roleplayCount === total) {
|
|
278
|
+
setIsWholeTopicSelected(true);
|
|
279
|
+
} else {
|
|
280
|
+
setIsWholeTopicSelected(false);
|
|
281
|
+
}
|
|
282
|
+
}, [selectedExercises]);
|
|
283
|
+
const handleSelectAll = () => {
|
|
284
|
+
if (isWholeTopicSelected) {
|
|
285
|
+
const removeExercises = selectedExercises.filter(exercise => exercise.courseSectionTopicId === `${courseId}|${sectionId}|${topicId}` || exercise.roleplayId && roleplays.some(roleplay => roleplay.roleplayId === exercise.roleplayId));
|
|
286
|
+
handleSelectExercise(removeExercises);
|
|
287
|
+
} else {
|
|
288
|
+
let exercisesToAdd = [];
|
|
289
|
+
exercises.filter(e => e.name !== "roleplays").forEach(exercise => {
|
|
290
|
+
if (!selectedExercises.some(e => e.courseSectionTopicId === `${courseId}|${sectionId}|${topicId}` && e.name === exercise.name)) {
|
|
291
|
+
exercisesToAdd = [...exercisesToAdd, {
|
|
292
|
+
courseSectionTopicId: `${courseId}|${sectionId}|${topicId}`,
|
|
293
|
+
name: exercise.name
|
|
294
|
+
}];
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
roleplays.forEach(roleplay => {
|
|
298
|
+
games.forEach(game => {
|
|
299
|
+
if (!selectedExercises.some(e => e.roleplayId === roleplay.roleplayId && e.game === game)) {
|
|
300
|
+
exercisesToAdd = [...exercisesToAdd, {
|
|
301
|
+
roleplayId: roleplay.roleplayId,
|
|
302
|
+
game
|
|
303
|
+
}];
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
handleSelectExercise(exercisesToAdd);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const toggleExerciseList = () => {
|
|
311
|
+
setExerciseListOpen(!isExerciseListOpen);
|
|
312
|
+
};
|
|
226
313
|
const hasNonEmptyRoleplay = roleplays.some(roleplay => roleplay?.script?.length !== 0 && roleplay?.script?.some(line => line.text !== undefined));
|
|
227
314
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
228
315
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Tooltip, {
|
|
@@ -286,6 +373,14 @@ function Topic({
|
|
|
286
373
|
})]
|
|
287
374
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
288
375
|
children: isExerciseListOpen ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandLess.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore.default, {})
|
|
376
|
+
}), useCase === "assignment" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
377
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Checkbox, {
|
|
378
|
+
checked: isWholeTopicSelected,
|
|
379
|
+
onClick: event => {
|
|
380
|
+
event.stopPropagation();
|
|
381
|
+
},
|
|
382
|
+
onChange: handleSelectAll
|
|
383
|
+
})
|
|
289
384
|
})]
|
|
290
385
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Collapse, {
|
|
291
386
|
in: isExerciseListOpen,
|
|
@@ -308,6 +403,9 @@ function Topic({
|
|
|
308
403
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
309
404
|
roleplays: roleplays,
|
|
310
405
|
phrases: phrases,
|
|
406
|
+
handleSelectExercise: handleSelectExercise,
|
|
407
|
+
selectedExercises: selectedExercises,
|
|
408
|
+
useCase: useCase,
|
|
311
409
|
assignment: assignment,
|
|
312
410
|
handleStartExercise: handleStartExercise,
|
|
313
411
|
isAssignment: isAssignment,
|
|
@@ -330,6 +428,9 @@ function Section({
|
|
|
330
428
|
isExerciseSelected,
|
|
331
429
|
setIsExerciseSelected,
|
|
332
430
|
getRoleplays,
|
|
431
|
+
handleSelectExercise,
|
|
432
|
+
selectedExercises,
|
|
433
|
+
useCase,
|
|
333
434
|
assignment,
|
|
334
435
|
handleStartExercise,
|
|
335
436
|
isAssignment,
|
|
@@ -368,6 +469,9 @@ function Section({
|
|
|
368
469
|
isExerciseSelected: isExerciseSelected,
|
|
369
470
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
370
471
|
getRoleplays: getRoleplays,
|
|
472
|
+
handleSelectExercise: handleSelectExercise,
|
|
473
|
+
selectedExercises: selectedExercises,
|
|
474
|
+
useCase: useCase,
|
|
371
475
|
assignment: assignment,
|
|
372
476
|
handleStartExercise: handleStartExercise,
|
|
373
477
|
isAssignment: isAssignment,
|
|
@@ -386,6 +490,9 @@ function SectionList({
|
|
|
386
490
|
isExerciseSelected,
|
|
387
491
|
setIsExerciseSelected,
|
|
388
492
|
getRoleplays,
|
|
493
|
+
handleSelectExercise,
|
|
494
|
+
selectedExercises,
|
|
495
|
+
useCase,
|
|
389
496
|
assignment,
|
|
390
497
|
handleStartExercise,
|
|
391
498
|
isAssignment,
|
|
@@ -406,6 +513,9 @@ function SectionList({
|
|
|
406
513
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
407
514
|
section: section,
|
|
408
515
|
getRoleplays: getRoleplays,
|
|
516
|
+
handleSelectExercise: handleSelectExercise,
|
|
517
|
+
selectedExercises: selectedExercises,
|
|
518
|
+
useCase: useCase,
|
|
409
519
|
assignment: assignment,
|
|
410
520
|
handleStartExercise: handleStartExercise,
|
|
411
521
|
isAssignment: isAssignment,
|
|
@@ -432,6 +542,9 @@ function ExerciseSelection({
|
|
|
432
542
|
isExerciseSelected,
|
|
433
543
|
setIsExerciseSelected,
|
|
434
544
|
getRoleplays,
|
|
545
|
+
handleSelectExercise,
|
|
546
|
+
selectedExercises,
|
|
547
|
+
useCase,
|
|
435
548
|
assignment,
|
|
436
549
|
handleStartExercise,
|
|
437
550
|
isAssignment,
|
|
@@ -474,6 +587,9 @@ function ExerciseSelection({
|
|
|
474
587
|
handleCreateGame: handleCreateGame,
|
|
475
588
|
isExerciseSelected: isExerciseSelected,
|
|
476
589
|
setIsExerciseSelected: setIsExerciseSelected,
|
|
590
|
+
handleSelectExercise: handleSelectExercise,
|
|
591
|
+
selectedExercises: selectedExercises,
|
|
592
|
+
useCase: useCase,
|
|
477
593
|
isAssignment: isAssignment,
|
|
478
594
|
assignment: assignment,
|
|
479
595
|
...otherProps
|
|
@@ -21,9 +21,38 @@ function Roleplay({
|
|
|
21
21
|
isRoleplaySelected,
|
|
22
22
|
setIsRoleplaySelected,
|
|
23
23
|
t,
|
|
24
|
-
isExerciseSelected
|
|
24
|
+
isExerciseSelected,
|
|
25
|
+
handleSelectExercise = null,
|
|
26
|
+
selectedExercises,
|
|
27
|
+
useCase
|
|
25
28
|
}) {
|
|
26
29
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
30
|
+
const games = ["roleplay-story", "roleplay-fill-in-the-blanks", "roleplay-act-it-out", "roleplay-act-it-out-listening", "roleplay-act-it-out-speaking", "roleplay-act-it-out-listening-speaking"];
|
|
31
|
+
const [isSelectAllChecked, setIsSelectAllChecked] = (0, _react.useState)(false);
|
|
32
|
+
(0, _react.useEffect)(() => {
|
|
33
|
+
const count = selectedExercises.filter(exercise => exercise.roleplayId === roleplay.roleplayId).length;
|
|
34
|
+
setIsSelectAllChecked(count === games.length);
|
|
35
|
+
}, [selectedExercises, roleplay.roleplayId, games.length]);
|
|
36
|
+
const handleSelectAll = () => {
|
|
37
|
+
if (isSelectAllChecked) {
|
|
38
|
+
const removeExercises = games.map(game => ({
|
|
39
|
+
roleplayId: roleplay.roleplayId,
|
|
40
|
+
game
|
|
41
|
+
}));
|
|
42
|
+
handleSelectExercise(removeExercises);
|
|
43
|
+
} else {
|
|
44
|
+
let gamesToAdd = [];
|
|
45
|
+
games.forEach(game => {
|
|
46
|
+
if (!selectedExercises.some(e => e.roleplayId === roleplay.roleplayId && e.game === game)) {
|
|
47
|
+
gamesToAdd = [...gamesToAdd, {
|
|
48
|
+
roleplayId: roleplay.roleplayId,
|
|
49
|
+
game
|
|
50
|
+
}];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
handleSelectExercise(gamesToAdd);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
27
56
|
const handleRoleplaySelected = exerciseName => () => {
|
|
28
57
|
setIsRoleplaySelected(true);
|
|
29
58
|
handleCreateGame({
|
|
@@ -118,6 +147,7 @@ function Roleplay({
|
|
|
118
147
|
})
|
|
119
148
|
})]
|
|
120
149
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
150
|
+
onClick: () => setOpen(!open),
|
|
121
151
|
children: open ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandLess.default, {
|
|
122
152
|
sx: {
|
|
123
153
|
color: "#757575"
|
|
@@ -127,6 +157,18 @@ function Roleplay({
|
|
|
127
157
|
color: "#757575"
|
|
128
158
|
}
|
|
129
159
|
})
|
|
160
|
+
}), useCase === "assignment" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Tooltip, {
|
|
161
|
+
title: t("select_all"),
|
|
162
|
+
placement: "top",
|
|
163
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
164
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Checkbox, {
|
|
165
|
+
checked: isSelectAllChecked,
|
|
166
|
+
onChange: handleSelectAll,
|
|
167
|
+
onClick: event => {
|
|
168
|
+
event.stopPropagation();
|
|
169
|
+
}
|
|
170
|
+
})
|
|
171
|
+
})
|
|
130
172
|
})]
|
|
131
173
|
})
|
|
132
174
|
})
|
|
@@ -136,8 +178,33 @@ function Roleplay({
|
|
|
136
178
|
unmountOnExit: true,
|
|
137
179
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
138
180
|
ml: 3.5,
|
|
139
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
|
|
140
|
-
onClick:
|
|
181
|
+
children: useCase === "assignment" ? games.map(game => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
|
|
182
|
+
onClick: isRoleplayValid ? () => handleSelectExercise([{
|
|
183
|
+
roleplayId: roleplay.roleplayId,
|
|
184
|
+
game
|
|
185
|
+
}]) : null,
|
|
186
|
+
disabled: !isRoleplayValid,
|
|
187
|
+
sx: {
|
|
188
|
+
display: "flex",
|
|
189
|
+
alignItems: "center",
|
|
190
|
+
justifyContent: "space-between",
|
|
191
|
+
flexDirection: {
|
|
192
|
+
xs: "column",
|
|
193
|
+
sm: "row"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
197
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoStories.default, {})
|
|
198
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemText, {
|
|
199
|
+
primary: t(game),
|
|
200
|
+
secondary: t("story_description")
|
|
201
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
|
|
202
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Checkbox, {
|
|
203
|
+
checked: selectedExercises.some(e => e.roleplayId === roleplay.roleplayId && e.game === game)
|
|
204
|
+
})
|
|
205
|
+
})]
|
|
206
|
+
})) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
|
|
207
|
+
onClick: () => handleRoleplaySelected("roleplay-story"),
|
|
141
208
|
disabled: isRoleplaySelected || isExerciseSelected || !isRoleplayValid,
|
|
142
209
|
sx: {
|
|
143
210
|
display: "flex",
|
|
@@ -168,7 +235,10 @@ function RoleplaySelection({
|
|
|
168
235
|
handleCreateGame,
|
|
169
236
|
courseSectionTopicId,
|
|
170
237
|
t,
|
|
171
|
-
isExerciseSelected
|
|
238
|
+
isExerciseSelected,
|
|
239
|
+
handleSelectExercise,
|
|
240
|
+
selectedExercises,
|
|
241
|
+
useCase
|
|
172
242
|
}) {
|
|
173
243
|
const [isRoleplaySelected, setIsRoleplaySelected] = (0, _react.useState)(false);
|
|
174
244
|
return roleplays.map((roleplay, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Roleplay, {
|
|
@@ -178,7 +248,10 @@ function RoleplaySelection({
|
|
|
178
248
|
setIsRoleplaySelected: setIsRoleplaySelected,
|
|
179
249
|
courseSectionTopicId: courseSectionTopicId,
|
|
180
250
|
t: t,
|
|
181
|
-
isExerciseSelected: isExerciseSelected
|
|
251
|
+
isExerciseSelected: isExerciseSelected,
|
|
252
|
+
handleSelectExercise: handleSelectExercise,
|
|
253
|
+
selectedExercises: selectedExercises,
|
|
254
|
+
useCase: useCase
|
|
182
255
|
}, index));
|
|
183
256
|
}
|
|
184
257
|
var _default = exports.default = RoleplaySelection;
|
|
@@ -20,6 +20,7 @@ var _reactCountdownCircleTimer = require("react-countdown-circle-timer");
|
|
|
20
20
|
var _PlayArrow = _interopRequireDefault(require("@mui/icons-material/PlayArrow"));
|
|
21
21
|
var _Pause = _interopRequireDefault(require("@mui/icons-material/Pause"));
|
|
22
22
|
var _reactBeautifulDnd = require("react-beautiful-dnd");
|
|
23
|
+
var _voiceImages = _interopRequireDefault(require("../../utils/voiceImages"));
|
|
23
24
|
var _index = require("../../utils/index");
|
|
24
25
|
var _useWordBankFocus = _interopRequireDefault(require("../../hooks/useWordBankFocus"));
|
|
25
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -182,20 +183,23 @@ function LiveListener({
|
|
|
182
183
|
speak(currentQuestion.phrase, voice, false, "#currentPhrase", voiceLanguageCode, false, voicePitch, handleFinishedInitialSpeaking);
|
|
183
184
|
}
|
|
184
185
|
}, [currentQuestion?.phrase, isCreator]);
|
|
186
|
+
const voiceMap = (0, _voiceImages.default)(voices || []);
|
|
185
187
|
const getVoiceImage = () => {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
try {
|
|
189
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
190
|
+
return exerciseVoice.speakingImage || null;
|
|
191
|
+
} catch (error) {
|
|
192
|
+
console.error('Error retrieving voice image:', error);
|
|
193
|
+
return null;
|
|
191
194
|
}
|
|
192
195
|
};
|
|
193
196
|
const getNualaCelebratingImage = () => {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
try {
|
|
198
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
199
|
+
return exerciseVoice.celebratingImage || null;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
console.error('Error retrieving celebrating image:', error);
|
|
202
|
+
return null;
|
|
199
203
|
}
|
|
200
204
|
};
|
|
201
205
|
const handleOnDragEnd = result => {
|
|
@@ -7,6 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _material = require("@mui/material");
|
|
9
9
|
var _mui = require("tss-react/mui");
|
|
10
|
+
var _Pause = _interopRequireDefault(require("@mui/icons-material/Pause"));
|
|
11
|
+
var _PlayArrow = _interopRequireDefault(require("@mui/icons-material/PlayArrow"));
|
|
10
12
|
var _AccountBalance = _interopRequireDefault(require("@mui/icons-material/AccountBalance"));
|
|
11
13
|
var _InputHelper = _interopRequireDefault(require("../../Forms/InputHelper"));
|
|
12
14
|
var _AnswerResult = _interopRequireDefault(require("../../Misc/AnswerResult"));
|
|
@@ -20,8 +22,7 @@ var _reactCountdownCircleTimer = require("react-countdown-circle-timer");
|
|
|
20
22
|
var _styles = require("@mui/material/styles");
|
|
21
23
|
var _reactBeautifulDnd = require("react-beautiful-dnd");
|
|
22
24
|
var _index = require("../../utils/index");
|
|
23
|
-
var
|
|
24
|
-
var _PlayArrow = _interopRequireDefault(require("@mui/icons-material/PlayArrow"));
|
|
25
|
+
var _voiceImages = _interopRequireDefault(require("../../utils/voiceImages"));
|
|
25
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
27
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
27
28
|
// utils
|
|
@@ -207,20 +208,23 @@ function LiveTranslator({
|
|
|
207
208
|
speak(currentQuestion.phrase, voice, false, "#currentPhrase", voiceLanguageCode, false, voicePitch, handleFinishedInitialSpeaking);
|
|
208
209
|
}
|
|
209
210
|
}, [currentQuestion?.phrase, isCreator]);
|
|
211
|
+
const voiceMap = (0, _voiceImages.default)(voices || []);
|
|
210
212
|
const getVoiceImage = () => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
try {
|
|
214
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
215
|
+
return exerciseVoice.speakingImage || null;
|
|
216
|
+
} catch (error) {
|
|
217
|
+
console.error('Error retrieving voice image:', error);
|
|
218
|
+
return null;
|
|
216
219
|
}
|
|
217
220
|
};
|
|
218
221
|
const getNualaCelebratingImage = () => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
try {
|
|
223
|
+
const exerciseVoice = voiceMap.get(voice) || {};
|
|
224
|
+
return exerciseVoice.celebratingImage || null;
|
|
225
|
+
} catch (error) {
|
|
226
|
+
console.error('Error retrieving celebrating image:', error);
|
|
227
|
+
return null;
|
|
224
228
|
}
|
|
225
229
|
};
|
|
226
230
|
const handleOnDragEnd = result => {
|
|
@@ -1098,7 +1098,8 @@ function Classroom({
|
|
|
1098
1098
|
scrollToDiscuss: scrollToDiscuss,
|
|
1099
1099
|
setScrollToDiscuss: setScrollToDiscuss,
|
|
1100
1100
|
isClassroomArchived: isArchived,
|
|
1101
|
-
classroomMembers: classroomMembers
|
|
1101
|
+
classroomMembers: classroomMembers,
|
|
1102
|
+
verificationStatus: verificationStatus
|
|
1102
1103
|
})
|
|
1103
1104
|
}, `tab-content-settings`)
|
|
1104
1105
|
}] : [])];
|
|
@@ -751,7 +751,8 @@ function Course({
|
|
|
751
751
|
forLanguages: forLanguages,
|
|
752
752
|
onSubmit: handleUpdateCourse,
|
|
753
753
|
fileSizeLimit: fileSizeLimit,
|
|
754
|
-
subscription: subscription
|
|
754
|
+
subscription: subscription,
|
|
755
|
+
verificationStatus: verificationStatus
|
|
755
756
|
})
|
|
756
757
|
}, `tab-content-settings`)
|
|
757
758
|
}] : [])];
|
|
@@ -785,7 +785,8 @@ function Topic({
|
|
|
785
785
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
786
786
|
py: 1,
|
|
787
787
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Phrases.default, {
|
|
788
|
-
t: t
|
|
788
|
+
t: t,
|
|
789
|
+
verificationStatus: verificationStatus
|
|
789
790
|
})
|
|
790
791
|
})]
|
|
791
792
|
})]
|
|
@@ -1249,7 +1250,8 @@ function Topic({
|
|
|
1249
1250
|
voices: voices,
|
|
1250
1251
|
handleSpeak: handleSpeak,
|
|
1251
1252
|
learnLang: learnLang,
|
|
1252
|
-
isUserInternal: isUserInternal
|
|
1253
|
+
isUserInternal: isUserInternal,
|
|
1254
|
+
verificationStatus: verificationStatus
|
|
1253
1255
|
})
|
|
1254
1256
|
})]
|
|
1255
1257
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Grid, {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getVoiceImages;
|
|
7
|
+
function getVoiceImages(voices) {
|
|
8
|
+
const voiceMap = Object.values(voices || []).flatMap(language => language.voiceOptions || []).reduce((acc, voice) => {
|
|
9
|
+
if (voice && voice.name) {
|
|
10
|
+
acc.set(voice.name, {
|
|
11
|
+
speakingImage: voice.speakingImage || null,
|
|
12
|
+
celebratingImage: voice.celebratingImage || null,
|
|
13
|
+
userImage: voice.userImage || null,
|
|
14
|
+
engine: voice.engine || '',
|
|
15
|
+
provider: voice.provider || '',
|
|
16
|
+
isNeuralOnly: voice.isNeuralOnly || false
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return acc;
|
|
20
|
+
}, new Map());
|
|
21
|
+
return voiceMap;
|
|
22
|
+
}
|