@nualang/nualang-ui-components 0.1.1185 → 0.1.1187

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 (34) hide show
  1. package/dist/Dialogs/BotPreview/BotPreview.js +3 -1
  2. package/dist/Dialogs/RoleplayPreview/RoleplayPreview.js +3 -1
  3. package/dist/Editors/Bot/Bot.js +3 -1
  4. package/dist/Editors/Bot/Editor/BotDesigner/BotDesigner.js +4 -2
  5. package/dist/Editors/Bot/Editor/BotDesigner/VarList.js +6 -2
  6. package/dist/Editors/Bot/Editor/Editor.js +49 -28
  7. package/dist/Exercises/Bot/Bot.js +9 -5
  8. package/dist/Exercises/Listener/Listener.js +7 -5
  9. package/dist/Exercises/Pronouncer/Pronouncer.js +8 -5
  10. package/dist/Exercises/Roleplay/Games/ActItOutGame/ActItOutGame.js +9 -5
  11. package/dist/Exercises/Roleplay/Games/ActItOutGameListening/ActItOutGameListening.js +3 -1
  12. package/dist/Exercises/Roleplay/Games/ActItOutGameListeningAndSpeaking/ActItOutGame.js +2 -1
  13. package/dist/Exercises/Roleplay/Games/ActItOutGameSpeaking/ActItOutGame.js +10 -6
  14. package/dist/Exercises/Roleplay/Games/FillInTheBlanksGame/FillInTheBlanksGame.js +3 -1
  15. package/dist/Exercises/Roleplay/Games/StoryGame/StoryGame.js +8 -4
  16. package/dist/Exercises/Roleplay/Roleplay.js +8 -4
  17. package/dist/Exercises/Roleplay/RoleplayGameOptions/RoleplayGames.js +3 -2
  18. package/dist/Exercises/Translator/Translator.js +6 -4
  19. package/dist/Forms/CreateBot/Steps/BotInformation/BotInformation.js +6 -0
  20. package/dist/Forms/CreateRoleplay/Steps/RoleplayInformation/RoleplayInformation.js +6 -0
  21. package/dist/Forms/CreateRoleplayHook/Steps/RoleplayInformation/RoleplayInformation.js +1 -0
  22. package/dist/Forms/CreateTopic/Steps/TopicSettings/TopicSettings.js +6 -0
  23. package/dist/Forms/InputHelper/InputHelper.js +11 -4
  24. package/dist/Forms/VoiceSelector/VoiceSelector.js +121 -18
  25. package/dist/Lists/Exercises/Exercises.js +8 -4
  26. package/dist/Lists/Members/Members.js +25 -2
  27. package/dist/Misc/HoverText/HoverText.js +2 -1
  28. package/dist/Screens/Classrooms/ViewClassroom/ViewClassroom.js +4 -1
  29. package/dist/Screens/Courses/ViewCourse/ViewTopic/ViewTopic.js +8 -3
  30. package/dist/Screens/GenerateAudio/GenerateAudio.js +81 -70
  31. package/dist/Screens/Roleplays/ViewRoleplay/ViewRoleplay.js +3 -1
  32. package/dist/hooks/useExerciseState.js +5 -4
  33. package/dist/hooks/useRecognition.js +220 -232
  34. package/package.json +2 -2
@@ -63,7 +63,9 @@ function BotPreview({
63
63
  stopListening,
64
64
  resetTranscript,
65
65
  browserSupportsSpeechRecognition
66
- } = (0, _useRecognition.default)();
66
+ } = (0, _useRecognition.default)({
67
+ openSnackbar
68
+ });
67
69
  const {
68
70
  interimTranscript,
69
71
  finalTranscript,
@@ -24,7 +24,8 @@ function RoleplayPreview({
24
24
  learnLang,
25
25
  forLang,
26
26
  roleplay,
27
- handleStopSpeaking
27
+ handleStopSpeaking,
28
+ isHeritageSpeaker = false
28
29
  }) {
29
30
  const exerciseState = (0, _useExerciseState.default)({
30
31
  t,
@@ -75,6 +76,7 @@ function RoleplayPreview({
75
76
  stopSpeaking: stopSpeaking,
76
77
  isSpeaking: isSpeaking,
77
78
  isSpeakingTextContainer: isSpeakingTextContainer,
79
+ muteSound: isHeritageSpeaker,
78
80
  topBarActions: /*#__PURE__*/_react.default.createElement(_TopBarActions.default, {
79
81
  t: t,
80
82
  voiceSpeed: voiceSpeed,
@@ -121,7 +121,9 @@ function Bot({
121
121
  stopListening,
122
122
  resetTranscript,
123
123
  browserSupportsSpeechRecognition
124
- } = (0, _useRecognition.default)();
124
+ } = (0, _useRecognition.default)({
125
+ openSnackbar
126
+ });
125
127
  const {
126
128
  interimTranscript,
127
129
  finalTranscript,
@@ -67,7 +67,8 @@ function BotDesigner(props) {
67
67
  handleUpdateAllVariables,
68
68
  handleUploadBotExerciseImage,
69
69
  botId,
70
- simplified
70
+ simplified,
71
+ handleOnBlur
71
72
  } = props;
72
73
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, rivescriptJSON && rivescriptJSON.begin.var && /*#__PURE__*/_react.default.createElement(_VarList.default, {
73
74
  t: t,
@@ -84,7 +85,8 @@ function BotDesigner(props) {
84
85
  handleVariableSubmit: handleVariableSubmit,
85
86
  handleUploadBotExerciseImage: handleUploadBotExerciseImage,
86
87
  botId: botId,
87
- simplified: simplified
88
+ simplified: simplified,
89
+ handleOnBlur: handleOnBlur
88
90
  }), rivescriptJSON && rivescriptJSON.begin.sub && !simplified && /*#__PURE__*/_react.default.createElement(_SubList.default, {
89
91
  t: t,
90
92
  subs: rivescriptJSON.begin.sub,
@@ -33,6 +33,7 @@ function VarListItem({
33
33
  varName,
34
34
  varValue,
35
35
  handleSelectCurrentInput,
36
+ handleOnBlur,
36
37
  handleUploadBotExerciseImage,
37
38
  botId
38
39
  }) {
@@ -78,7 +79,7 @@ function VarListItem({
78
79
  handleUpdateVariable({
79
80
  target: {
80
81
  name: varName,
81
- value: `![](${DEFAULT_BOT_IMAGE})`
82
+ value: DEFAULT_BOT_IMAGE
82
83
  }
83
84
  });
84
85
  }
@@ -187,7 +188,8 @@ function VarListItem({
187
188
  multiline: true,
188
189
  fullWidth: true,
189
190
  onChange: handleUpdateVariable,
190
- onClick: handleSelectCurrentInput,
191
+ onBlur: handleOnBlur,
192
+ onFocus: handleSelectCurrentInput,
191
193
  inputProps: {
192
194
  "data-type": "var"
193
195
  }
@@ -206,6 +208,7 @@ function VarList({
206
208
  handleSelectCurrentInput,
207
209
  handleUploadBotExerciseImage,
208
210
  botId,
211
+ handleOnBlur,
209
212
  simplified
210
213
  }) {
211
214
  const [open, setOpen] = _react.default.useState(true);
@@ -227,6 +230,7 @@ function VarList({
227
230
  handleRemoveVariable: handleRemoveVariable,
228
231
  handleSelectCurrentInput: handleSelectCurrentInput,
229
232
  handleUploadBotExerciseImage: handleUploadBotExerciseImage,
233
+ handleOnBlur: handleOnBlur,
230
234
  botId: botId
231
235
  }));
232
236
  }
@@ -585,7 +585,16 @@ function Editor({
585
585
  const handleChangeView = event => {
586
586
  setIsEditView(event.target.checked);
587
587
  };
588
+ const [isDisabled, setIsDisabled] = (0, _react.useState)(true);
589
+ const [isButtonClicked, setIsButtonClicked] = (0, _react.useState)(false);
590
+ const handleOnBlur = () => {
591
+ if (!isButtonClicked) {
592
+ setIsDisabled(true);
593
+ }
594
+ };
588
595
  const handleSelectCurrentInput = event => {
596
+ setIsDisabled(false);
597
+ setIsButtonClicked(false);
589
598
  const target = event.target.tagName === "DIV" ? event.target.querySelector("textarea") : event.target;
590
599
  const {
591
600
  topicName,
@@ -749,17 +758,19 @@ function Editor({
749
758
  currentInput.focus();
750
759
  }
751
760
  };
752
- const handleAddLink = ({
753
- name,
754
- value
755
- }) => {
761
+ const handleOpenLinkModal = () => {
762
+ setLinkModalOpen(true);
763
+ };
764
+ const handleCloseLinkModal = () => {
756
765
  setLinkModalOpen(false);
757
- try {
758
- // toggleBefore(`[${name}](${value})`);
759
- toggleAround(`[${name}`, `](${value})`);
760
- } catch (error) {
761
- console.error("error", error);
762
- }
766
+ setIsDisabled(true);
767
+ };
768
+ const handleOpenImageModal = () => {
769
+ setImageModalOpen(true);
770
+ };
771
+ const handleCloseImageModal = () => {
772
+ setImageModalOpen(false);
773
+ setIsDisabled(true);
763
774
  };
764
775
  const handleAddImage = async ({
765
776
  name,
@@ -1138,28 +1149,33 @@ function Editor({
1138
1149
  startIcon: /*#__PURE__*/_react.default.createElement(_ArrowBack.default, null),
1139
1150
  variant: "outlined"
1140
1151
  }, t("simplified_editor"))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
1141
- title: t("formatting_options")
1142
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1152
+ title: isDisabled ? t("Please select a textfield") : t("formatting_options")
1153
+ }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1143
1154
  color: "inherit",
1144
1155
  "aria-label": t("formatting_options"),
1145
1156
  onClick: handleToggleFormattingOptions,
1146
1157
  className: classes.formattingOptionsButton,
1147
- size: "large"
1148
- }, /*#__PURE__*/_react.default.createElement(_TextFormat.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
1149
- title: t("insert_link")
1150
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1158
+ size: "large",
1159
+ disabled: isDisabled && !isEditView
1160
+ }, /*#__PURE__*/_react.default.createElement(_TextFormat.default, null)))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
1161
+ title: isDisabled ? t("Please select a textfield") : t("insert_link")
1162
+ }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1151
1163
  color: "inherit",
1152
1164
  "aria-label": t("insert_link"),
1153
- onClick: () => insertLink(),
1154
- size: "large"
1155
- }, /*#__PURE__*/_react.default.createElement(_Link.default, null))), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
1156
- title: t("insert_photo")
1157
- }, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1165
+ onClick: handleOpenLinkModal,
1166
+ size: "large",
1167
+ disabled: isDisabled && !isEditView,
1168
+ onMouseDown: () => setIsButtonClicked(true)
1169
+ }, /*#__PURE__*/_react.default.createElement(_Link.default, null)))), isEditView && /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
1170
+ title: isDisabled ? t("Please select a textfield") : t("insert_photo")
1171
+ }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
1158
1172
  color: "inherit",
1159
1173
  "aria-label": t("insert_photo"),
1160
- onClick: insertPhoto,
1161
- size: "large"
1162
- }, /*#__PURE__*/_react.default.createElement(_InsertPhoto.default, null))), /*#__PURE__*/_react.default.createElement("div", {
1174
+ onClick: handleOpenImageModal,
1175
+ size: "large",
1176
+ disabled: !isEditView,
1177
+ onMouseDown: () => setIsButtonClicked(true)
1178
+ }, /*#__PURE__*/_react.default.createElement(_InsertPhoto.default, null)))), /*#__PURE__*/_react.default.createElement("div", {
1163
1179
  className: classes.characterDropdown
1164
1180
  }, /*#__PURE__*/_react.default.createElement(_InputHelper.Adornment, {
1165
1181
  t: t,
@@ -1167,7 +1183,11 @@ function Editor({
1167
1183
  emoji: true,
1168
1184
  onChange: specialCharacter,
1169
1185
  adornmentPosition: "",
1170
- iconButtonEdge: ""
1186
+ iconButtonEdge: "",
1187
+ isDisabled: isDisabled,
1188
+ isEditView: isEditView,
1189
+ setIsButtonClicked: setIsButtonClicked,
1190
+ setIsDisabled: setIsDisabled
1171
1191
  })), /*#__PURE__*/_react.default.createElement(_material.Box, {
1172
1192
  flexGrow: 1
1173
1193
  }), simplified ? null : /*#__PURE__*/_react.default.createElement(_material.Box, {
@@ -1226,6 +1246,7 @@ function Editor({
1226
1246
  rivescriptJSON: botJSON,
1227
1247
  learnLangCharacters: learnLangCharacters,
1228
1248
  handleSelectCurrentInput: handleSelectCurrentInput,
1249
+ handleOnBlur: handleOnBlur,
1229
1250
  handleOpenVariableModal: handleOpenVariableModal,
1230
1251
  handleRemoveVariable: handleRemoveVariable,
1231
1252
  handleUpdateVariable: handleUpdateVariable,
@@ -1312,7 +1333,7 @@ function Editor({
1312
1333
  classes: {},
1313
1334
  t: t,
1314
1335
  open: imageModalOpen,
1315
- onClose: () => setImageModalOpen(false),
1336
+ onClose: handleCloseImageModal,
1316
1337
  botId: bot.botId,
1317
1338
  handleUploadBotExerciseImage: handleUploadBotExerciseImage,
1318
1339
  handleAddImage: handleAddImage
@@ -1320,8 +1341,8 @@ function Editor({
1320
1341
  classes: {},
1321
1342
  t: t,
1322
1343
  open: linkModalOpen,
1323
- onClose: () => setLinkModalOpen(false),
1324
- handleAddLink: handleAddLink
1344
+ onClose: handleCloseLinkModal,
1345
+ handleAddLink: handleOpenLinkModal
1325
1346
  }), /*#__PURE__*/_react.default.createElement(_SwitchEditorModal.default, {
1326
1347
  t: t,
1327
1348
  open: isEditorModalOpen,
@@ -97,7 +97,8 @@ function Bot({
97
97
  courseSettings,
98
98
  clearQueue,
99
99
  stopAudio,
100
- parentClassroom
100
+ parentClassroom,
101
+ isHeritageSpeaker
101
102
  }) {
102
103
  const theme = (0, _styles.useTheme)();
103
104
  const {
@@ -116,7 +117,9 @@ function Bot({
116
117
  resetTranscript,
117
118
  browserSupportsSpeechRecognition,
118
119
  clearAttemptAudio
119
- } = (0, _useRecognition.default)();
120
+ } = (0, _useRecognition.default)({
121
+ openSnackbar
122
+ });
120
123
  const {
121
124
  interimTranscript,
122
125
  finalTranscript,
@@ -171,7 +174,8 @@ function Bot({
171
174
  clearAttemptAudio,
172
175
  transcriptConfidence,
173
176
  clearQueue,
174
- stopAudio
177
+ stopAudio,
178
+ isHeritageSpeaker
175
179
  });
176
180
  const {
177
181
  muteSound,
@@ -523,7 +527,7 @@ function Bot({
523
527
  inputRef: textInputRef,
524
528
  beforeElements: beforeElements,
525
529
  browserSupportsSpeechRecognition: browserSupportsSpeechRecognition && isSocketConnected,
526
- handleRecord: browserSupportsSpeechRecognition && learnLang !== "irish" ? () => handleMic() : null,
530
+ handleRecord: browserSupportsSpeechRecognition && learnLang !== "irish" && !isHeritageSpeaker ? () => handleMic() : null,
527
531
  isListening: recognizing,
528
532
  handleTranslate: handleTranslate,
529
533
  handleSend: handleSubmitBotMessage,
@@ -544,7 +548,7 @@ function Bot({
544
548
  handleSubmitBotMessage();
545
549
  }
546
550
  },
547
- muteSound: muteSound,
551
+ muteSound: isHeritageSpeaker ? true : muteSound,
548
552
  setCheckedDefault: setChecked,
549
553
  exercise: "bot",
550
554
  setBotMessages: setBotMessages,
@@ -229,7 +229,8 @@ function Listener({
229
229
  languageTag,
230
230
  siteLanguage,
231
231
  courseSettings,
232
- parentClassroom
232
+ parentClassroom,
233
+ isHeritageSpeaker = false
233
234
  }) {
234
235
  (0, _useExerciseDocumentTitle.default)({
235
236
  exerciseTitle: "Listening",
@@ -267,7 +268,8 @@ function Listener({
267
268
  correctSound,
268
269
  incorrectSound,
269
270
  disableShuffle,
270
- toggleMuteSound
271
+ toggleMuteSound,
272
+ isHeritageSpeaker
271
273
  });
272
274
  const {
273
275
  questions,
@@ -654,7 +656,7 @@ function Listener({
654
656
  component: "h3",
655
657
  color: "inherit",
656
658
  gutterBottom: true
657
- }, t("what_do_you_hear"))), useWordBank && isWordBankEnabled ? /*#__PURE__*/_react.default.createElement("div", {
659
+ }, t("what_do_you_hear"))), useWordBank && isWordBankEnabled && !isHeritageSpeaker ? /*#__PURE__*/_react.default.createElement("div", {
658
660
  role: "application"
659
661
  }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
660
662
  item: true,
@@ -770,7 +772,7 @@ function Listener({
770
772
  multiline: true,
771
773
  autoComplete: "off",
772
774
  characters: learnLangCharacters ? learnLangCharacters : null
773
- })), isWordBankEnabled && /*#__PURE__*/_react.default.createElement(_material.Grid, {
775
+ })), isWordBankEnabled && !isHeritageSpeaker && /*#__PURE__*/_react.default.createElement(_material.Grid, {
774
776
  item: true
775
777
  }, /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
776
778
  title: t("use_wordbank_if_stuck"),
@@ -840,7 +842,7 @@ function Listener({
840
842
  exercise: exerciseName,
841
843
  languageInformation: languageInformation,
842
844
  nualaCelebratingImage: getNualaCelebratingImage()
843
- })), useWordBank && isWordBankEnabled ? /*#__PURE__*/_react.default.createElement(_ExerciseBottomBar.default, {
845
+ })), useWordBank && isWordBankEnabled && !isHeritageSpeaker ? /*#__PURE__*/_react.default.createElement(_ExerciseBottomBar.default, {
844
846
  t: t,
845
847
  listeningWords: listeningWords,
846
848
  handleSubmit: () => handleContinue(false),
@@ -162,7 +162,8 @@ function Pronouncer({
162
162
  uploadAudioAttempt,
163
163
  languageTag,
164
164
  trackRecommendedEvent,
165
- parentClassroom
165
+ parentClassroom,
166
+ isHeritageSpeaker = false
166
167
  }) {
167
168
  (0, _useExerciseDocumentTitle.default)({
168
169
  exerciseTitle: "Pronunciation",
@@ -187,7 +188,8 @@ function Pronouncer({
187
188
  currentPhraseText,
188
189
  trackRecommendedEvent,
189
190
  exerciseName,
190
- learnLang
191
+ learnLang,
192
+ openSnackbar
191
193
  });
192
194
  const {
193
195
  interimTranscript,
@@ -263,7 +265,8 @@ function Pronouncer({
263
265
  indicateEndStream,
264
266
  disableShuffle,
265
267
  toggleMuteSound,
266
- audioBlob
268
+ audioBlob,
269
+ isHeritageSpeaker
267
270
  });
268
271
  const {
269
272
  questions,
@@ -626,9 +629,9 @@ function Pronouncer({
626
629
  wordList: currentPhrase ? (0, _utils.removeExtraWhiteSpaces)(currentPhrase.phrase).split(" ") : [],
627
630
  disableTranslation: false,
628
631
  isMessage: false,
629
- muteSound: muteSound,
632
+ muteSound: isHeritageSpeaker ? true : muteSound,
630
633
  t: t
631
- }), learnLang !== "irish" && /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_WaveFormLite.default, {
634
+ }), learnLang !== "irish" && !isHeritageSpeaker && /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_WaveFormLite.default, {
632
635
  src: pollyResult ? pollyResult : "",
633
636
  controls: false,
634
637
  isSpeaking: isSpeaking,
@@ -187,7 +187,8 @@ function RoleplayGame({
187
187
  stopAudio,
188
188
  languageInformation,
189
189
  translationEnabled,
190
- parentClassroom
190
+ parentClassroom,
191
+ isHeritageSpeaker = false
191
192
  }) {
192
193
  (0, _useExerciseDocumentTitle.default)({
193
194
  exerciseTitle: "Act it out",
@@ -196,7 +197,9 @@ function RoleplayGame({
196
197
  const scriptWithoutQuestions = roleplay.script.filter(scriptLine => !scriptLine?.question);
197
198
  const {
198
199
  recognitionState
199
- } = (0, _useRecognition.default)();
200
+ } = (0, _useRecognition.default)({
201
+ openSnackbar
202
+ });
200
203
  const {
201
204
  finalTranscript,
202
205
  recognizing,
@@ -237,7 +240,8 @@ function RoleplayGame({
237
240
  toggleMuteSound,
238
241
  clearQueue,
239
242
  stopAudio,
240
- languageInformation
243
+ languageInformation,
244
+ isHeritageSpeaker
241
245
  });
242
246
  const {
243
247
  muteSound,
@@ -342,7 +346,7 @@ function RoleplayGame({
342
346
  voiceSpeed: voiceSpeed,
343
347
  learnLang: learnLang,
344
348
  forLang: forLang,
345
- muteSound: muteSound,
349
+ muteSound: isHeritageSpeaker ? true : muteSound,
346
350
  setInAnswerOptions: setInAnswerOptions,
347
351
  speak: speak,
348
352
  stopSpeaking: stopSpeaking,
@@ -414,7 +418,7 @@ function RoleplayGame({
414
418
  },
415
419
  gameId: gameId,
416
420
  hideBottomBar: true,
417
- muteSound: muteSound,
421
+ muteSound: isHeritageSpeaker ? true : muteSound,
418
422
  speak: speak,
419
423
  stopSpeaking: stopSpeaking,
420
424
  isSpeaking: isSpeaking,
@@ -199,7 +199,9 @@ function RoleplayGame({
199
199
  const scriptWithoutQuestions = roleplay.script.filter(scriptLine => !scriptLine?.question);
200
200
  const {
201
201
  recognitionState
202
- } = (0, _useRecognition.default)();
202
+ } = (0, _useRecognition.default)({
203
+ openSnackbar
204
+ });
203
205
  const {
204
206
  finalTranscript,
205
207
  recognizing,
@@ -297,7 +297,8 @@ function RoleplayGame({
297
297
  trackRecommendedEvent,
298
298
  exerciseName,
299
299
  learnLang,
300
- gameId
300
+ gameId,
301
+ openSnackbar
301
302
  });
302
303
  const {
303
304
  interimTranscript,
@@ -99,7 +99,8 @@ function AnswerOptions({
99
99
  isSpeaking,
100
100
  isSpeakingTextContainer,
101
101
  isSocketConnected,
102
- ariaLiveText
102
+ ariaLiveText,
103
+ isHeritageSpeaker
103
104
  }) {
104
105
  (0, _react.useEffect)(() => {
105
106
  const messagesElement = document.getElementById("messages");
@@ -273,7 +274,8 @@ function RoleplayGame({
273
274
  stopAudio,
274
275
  translationEnabled,
275
276
  trackRecommendedEvent,
276
- parentClassroom
277
+ parentClassroom,
278
+ isHeritageSpeaker
277
279
  }) {
278
280
  (0, _useExerciseDocumentTitle.default)({
279
281
  exerciseTitle: "Act it out speaking",
@@ -293,7 +295,8 @@ function RoleplayGame({
293
295
  trackRecommendedEvent,
294
296
  exerciseName,
295
297
  learnLang,
296
- gameId
298
+ gameId,
299
+ openSnackbar
297
300
  });
298
301
  const {
299
302
  interimTranscript,
@@ -349,7 +352,8 @@ function RoleplayGame({
349
352
  uploadAudioAttempt,
350
353
  clearQueue,
351
354
  stopAudio,
352
- languageInformation
355
+ languageInformation,
356
+ isHeritageSpeaker
353
357
  });
354
358
  const {
355
359
  muteSound,
@@ -524,7 +528,7 @@ function RoleplayGame({
524
528
  finalTranscript: finalTranscript,
525
529
  checkIsRoleplayMessageCorrect: checkIsRoleplayMessageCorrect,
526
530
  phraseWordList: phraseWordList,
527
- muteSound: muteSound,
531
+ muteSound: isHeritageSpeaker ? true : muteSound,
528
532
  speak: speak,
529
533
  stopSpeaking: stopSpeaking,
530
534
  isSpeaking: isSpeaking,
@@ -597,7 +601,7 @@ function RoleplayGame({
597
601
  }
598
602
  },
599
603
  gameId: gameId,
600
- muteSound: muteSound,
604
+ muteSound: isHeritageSpeaker ? true : muteSound,
601
605
  speak: speak,
602
606
  stopSpeaking: stopSpeaking,
603
607
  isSpeaking: isSpeaking,
@@ -81,7 +81,9 @@ function RoleplayGame({
81
81
  const [currentMessages, setCurrentMessages] = (0, _react.useState)([]);
82
82
  const {
83
83
  recognitionState
84
- } = (0, _useRecognition.default)();
84
+ } = (0, _useRecognition.default)({
85
+ openSnackbar
86
+ });
85
87
  const {
86
88
  finalTranscript,
87
89
  recognizing,
@@ -62,7 +62,8 @@ function RoleplayGame({
62
62
  stopAudio,
63
63
  languageInformation,
64
64
  translationEnabled,
65
- parentClassroom
65
+ parentClassroom,
66
+ isHeritageSpeaker
66
67
  }) {
67
68
  (0, _useExerciseDocumentTitle.default)({
68
69
  exerciseTitle: "Story",
@@ -75,7 +76,9 @@ function RoleplayGame({
75
76
  const languageTag = languageInformation.Code;
76
77
  const {
77
78
  recognitionState
78
- } = (0, _useRecognition.default)();
79
+ } = (0, _useRecognition.default)({
80
+ openSnackbar
81
+ });
79
82
  const {
80
83
  finalTranscript,
81
84
  recognizing,
@@ -112,7 +115,8 @@ function RoleplayGame({
112
115
  toggleMuteSound,
113
116
  clearQueue,
114
117
  stopAudio,
115
- languageInformation
118
+ languageInformation,
119
+ isHeritageSpeaker
116
120
  });
117
121
  const {
118
122
  muteSound,
@@ -283,7 +287,7 @@ function RoleplayGame({
283
287
  },
284
288
  gameId: gameId,
285
289
  hideBottomBar: true,
286
- muteSound: muteSound
290
+ muteSound: isHeritageSpeaker ? true : muteSound
287
291
  }), /*#__PURE__*/_react.default.createElement(_CompletedExcercise.default, {
288
292
  open: isCompletionModalOpen,
289
293
  restartExcercise: () => {
@@ -65,7 +65,8 @@ function Roleplay({
65
65
  handleSignIn,
66
66
  courseSettings,
67
67
  trackRecommendedEvent,
68
- parentClassroom
68
+ parentClassroom,
69
+ isHeritageSpeaker
69
70
  }) {
70
71
  const theme = (0, _styles.useTheme)();
71
72
  const isLgScreen = (0, _useMediaQuery.default)(theme.breakpoints.up("md"));
@@ -272,7 +273,8 @@ function Roleplay({
272
273
  handleStopSpeaking: handleStopSpeaking,
273
274
  learnLang: roleplay.learnLang,
274
275
  forLang: roleplay.forLang,
275
- roleplay: roleplay
276
+ roleplay: roleplay,
277
+ isHeritageSpeaker: isHeritageSpeaker
276
278
  }), /*#__PURE__*/_react.default.createElement(_material.Divider, {
277
279
  sx: {
278
280
  borderBottomWidth: 5
@@ -287,7 +289,8 @@ function Roleplay({
287
289
  authenticated: authenticated,
288
290
  handleSignIn: handleSignIn,
289
291
  isCreator: roleplay.isCreator,
290
- isRoleplayEmpty: isRoleplayEmpty
292
+ isRoleplayEmpty: isRoleplayEmpty,
293
+ isHeritageSpeaker: isHeritageSpeaker
291
294
  }), games.map((RoleplayGame, index) => {
292
295
  if (RoleplayGame.gameId === gameId) {
293
296
  return /*#__PURE__*/_react.default.createElement(RoleplayGame, _extends({
@@ -338,7 +341,8 @@ function Roleplay({
338
341
  clearQueue: clearQueue,
339
342
  stopAudio: stopAudio,
340
343
  trackRecommendedEvent: trackRecommendedEvent,
341
- parentClassroom: parentClassroom
344
+ parentClassroom: parentClassroom,
345
+ isHeritageSpeaker: isHeritageSpeaker
342
346
  }));
343
347
  }
344
348
  return null;
@@ -20,7 +20,8 @@ function RoleplayGames({
20
20
  authenticated,
21
21
  handleSignIn,
22
22
  isCreator,
23
- isRoleplayEmpty
23
+ isRoleplayEmpty,
24
+ isHeritageSpeaker
24
25
  }) {
25
26
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Box.default, {
26
27
  sx: {
@@ -33,7 +34,7 @@ function RoleplayGames({
33
34
  sx: {
34
35
  m: 2
35
36
  }
36
- }, t("choose_game_mode"))), gameList.map((game, index) => !gamesHidden[game.gameId] || isCreator ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
37
+ }, t("choose_game_mode"))), gameList.map((game, index) => !gamesHidden[game.gameId] && !((game.gameId === "act-it-out-listening" || game.gameId === "act-it-out-listening-speaking") && isHeritageSpeaker) || isCreator ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
37
38
  item: true,
38
39
  xs: 12,
39
40
  key: index,
@@ -237,7 +237,8 @@ function Translator({
237
237
  siteLanguage,
238
238
  courseSettings = {},
239
239
  isKeyboardHiddenTranslation,
240
- parentClassroom
240
+ parentClassroom,
241
+ isHeritageSpeaker
241
242
  }) {
242
243
  (0, _useExerciseDocumentTitle.default)({
243
244
  exerciseTitle: "Translation",
@@ -276,7 +277,8 @@ function Translator({
276
277
  incorrectSound,
277
278
  disableShuffle,
278
279
  toggleMuteSound,
279
- isKeyboardHiddenTranslation
280
+ isKeyboardHiddenTranslation,
281
+ isHeritageSpeaker
280
282
  });
281
283
  const {
282
284
  questions,
@@ -651,10 +653,10 @@ function Translator({
651
653
  wordList: currentPhrase ? (0, _index.removeExtraWhiteSpaces)(currentPhrase.phrase).split(" ") : [],
652
654
  disableTranslation: false,
653
655
  isMessage: false,
654
- muteSound: muteSound,
656
+ muteSound: isHeritageSpeaker ? true : muteSound,
655
657
  t: t,
656
658
  languageTag: languageTag
657
- }), learnLang !== "irish" && /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_WaveFormLite.default, {
659
+ }), learnLang !== "irish" && !isHeritageSpeaker && /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_WaveFormLite.default, {
658
660
  src: pollyResult ? pollyResult : "",
659
661
  controls: false,
660
662
  isSpeaking: isSpeaking,
@@ -414,6 +414,12 @@ function BotInformation({
414
414
  const voiceSelected = e.target.value;
415
415
  const voiceOptionElem = document.getElementById(`voice-${voiceSelected}`);
416
416
  const languageCode = voiceOptionElem.getAttribute("data-language-code");
417
+ handleChange({
418
+ target: {
419
+ name: "voice",
420
+ value: voiceSelected
421
+ }
422
+ });
417
423
  handleSpeak({
418
424
  text: voiceSelected,
419
425
  learnLanguage: learnLang,