@gamelearn/arcade-components 1.17.2 → 1.18.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.
- package/dist/components/comic-component/components/ComicComponent.js +22 -13
- package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +18 -8
- package/dist/components/dialog-component/components/DialogComponent.js +17 -5
- package/dist/helpers/useEkho.js +32 -9
- package/package.json +1 -1
|
@@ -51,19 +51,24 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
51
51
|
automatic = _useState2[0],
|
|
52
52
|
setAutomatic = _useState2[1];
|
|
53
53
|
|
|
54
|
+
var _useState3 = (0, _react.useState)(false),
|
|
55
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
56
|
+
audioFailed = _useState4[0],
|
|
57
|
+
setAudioFailed = _useState4[1];
|
|
58
|
+
|
|
54
59
|
var _useTimeout = (0, _useTimeout2.default)(),
|
|
55
60
|
start = _useTimeout.start,
|
|
56
61
|
stop = _useTimeout.stop;
|
|
57
62
|
|
|
58
|
-
var
|
|
59
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
60
|
-
slideCount = _useState4[0],
|
|
61
|
-
setCount = _useState4[1];
|
|
62
|
-
|
|
63
|
-
var _useState5 = (0, _react.useState)('slide-animation'),
|
|
63
|
+
var _useState5 = (0, _react.useState)(0),
|
|
64
64
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
slideCount = _useState6[0],
|
|
66
|
+
setCount = _useState6[1];
|
|
67
|
+
|
|
68
|
+
var _useState7 = (0, _react.useState)('slide-animation'),
|
|
69
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
70
|
+
slideTransition = _useState8[0],
|
|
71
|
+
setTransition = _useState8[1];
|
|
67
72
|
|
|
68
73
|
var _soundActions = _slicedToArray(soundActions, 1),
|
|
69
74
|
play = _soundActions[0];
|
|
@@ -101,13 +106,16 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
101
106
|
goToPreviousSlide();
|
|
102
107
|
};
|
|
103
108
|
|
|
104
|
-
(0, _useEkho.default)({
|
|
109
|
+
var stopEkho = (0, _useEkho.default)({
|
|
105
110
|
audioType: slides === null || slides === void 0 ? void 0 : (_slides$slideCount = slides[slideCount]) === null || _slides$slideCount === void 0 ? void 0 : _slides$slideCount.audioType,
|
|
106
111
|
voice: slides === null || slides === void 0 ? void 0 : (_slides$slideCount2 = slides[slideCount]) === null || _slides$slideCount2 === void 0 ? void 0 : _slides$slideCount2.voice,
|
|
107
112
|
text: slides === null || slides === void 0 ? void 0 : (_slides$slideCount3 = slides[slideCount]) === null || _slides$slideCount3 === void 0 ? void 0 : (_slides$slideCount3$v = _slides$slideCount3.vignettes[0].textData) === null || _slides$slideCount3$v === void 0 ? void 0 : _slides$slideCount3$v.text,
|
|
108
113
|
audio: slides === null || slides === void 0 ? void 0 : (_slides$slideCount4 = slides[slideCount]) === null || _slides$slideCount4 === void 0 ? void 0 : _slides$slideCount4.audio,
|
|
109
114
|
soundActions: soundActions,
|
|
110
115
|
emitEvent: emitEvent,
|
|
116
|
+
onError: function onError() {
|
|
117
|
+
setAudioFailed(true);
|
|
118
|
+
},
|
|
111
119
|
onFinish: function onFinish() {
|
|
112
120
|
var _slides$slideCount5;
|
|
113
121
|
|
|
@@ -116,12 +124,13 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
126
|
});
|
|
127
|
+
(0, _react.useEffect)(function () {
|
|
128
|
+
stopEkho();
|
|
129
|
+
}, [slideCount, stopEkho]);
|
|
119
130
|
(0, _react.useEffect)(function () {
|
|
120
131
|
var slide = slides === null || slides === void 0 ? void 0 : slides[slideCount];
|
|
121
|
-
var audio = (slide === null || slide === void 0 ? void 0 : slide.audioType) === 'file' && Object.keys(slide.audio || {}).length;
|
|
122
|
-
var voice = (slide === null || slide === void 0 ? void 0 : slide.audioType) === 'voice' && Object.keys(slide.voice || {}).length;
|
|
123
132
|
|
|
124
|
-
if (automatic && ((slide === null || slide === void 0 ? void 0 : slide.audioType) === 'none' ||
|
|
133
|
+
if (automatic && ((slide === null || slide === void 0 ? void 0 : slide.audioType) === 'none' || audioFailed)) {
|
|
125
134
|
var _slide$vignettes$, _slide$vignettes$$tex;
|
|
126
135
|
|
|
127
136
|
var time = characterMs * ((slide === null || slide === void 0 ? void 0 : (_slide$vignettes$ = slide.vignettes[0]) === null || _slide$vignettes$ === void 0 ? void 0 : (_slide$vignettes$$tex = _slide$vignettes$.textData) === null || _slide$vignettes$$tex === void 0 ? void 0 : _slide$vignettes$$tex.text.length) || 0);
|
|
@@ -131,7 +140,7 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
131
140
|
return function () {
|
|
132
141
|
stop();
|
|
133
142
|
};
|
|
134
|
-
}, [automatic, goToNextSlide, slideCount, slides, start, stop]);
|
|
143
|
+
}, [audioFailed, automatic, goToNextSlide, slideCount, slides, start, stop]);
|
|
135
144
|
if (!(slides !== null && slides !== void 0 && slides.length)) return null;
|
|
136
145
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
137
146
|
dir: (0, _LangIsRtl.default)() ? 'rtl' : 'auto',
|
package/dist/components/conversational-pro-component/components/ConversationalProComponent.js
CHANGED
|
@@ -66,10 +66,15 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
66
66
|
automatic = _useState2[0],
|
|
67
67
|
setAutomatic = _useState2[1];
|
|
68
68
|
|
|
69
|
-
var _useState3 = (0, _react.useState)(
|
|
69
|
+
var _useState3 = (0, _react.useState)(false),
|
|
70
70
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
audioFailed = _useState4[0],
|
|
72
|
+
setAudioFailed = _useState4[1];
|
|
73
|
+
|
|
74
|
+
var _useState5 = (0, _react.useState)(0),
|
|
75
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
76
|
+
currentLine = _useState6[0],
|
|
77
|
+
setCurrentLine = _useState6[1];
|
|
73
78
|
|
|
74
79
|
var _soundActions = _slicedToArray(soundActions, 1),
|
|
75
80
|
playSound = _soundActions[0];
|
|
@@ -241,6 +246,8 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
241
246
|
}
|
|
242
247
|
}, [currentLineData.id, edges, finishConversation, lines]);
|
|
243
248
|
var handleClickNext = (0, _react.useCallback)(function (choice, reset) {
|
|
249
|
+
setAudioFailed(false);
|
|
250
|
+
|
|
244
251
|
if (isBranched) {
|
|
245
252
|
if (choice) {
|
|
246
253
|
handleDecisionBranch(choice, reset);
|
|
@@ -260,6 +267,8 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
260
267
|
}, [currentLine, finishConversation, handleBranchDirection, handleDecisionBranch, isBranched, lines.length]);
|
|
261
268
|
|
|
262
269
|
var handleClickBack = function handleClickBack() {
|
|
270
|
+
setAudioFailed(false);
|
|
271
|
+
|
|
263
272
|
if (isBranched) {
|
|
264
273
|
handleBranchDirection(false);
|
|
265
274
|
} else if (currentLine > 0) {
|
|
@@ -280,15 +289,16 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
280
289
|
};
|
|
281
290
|
|
|
282
291
|
var autoplayCond = automatic && !isDecision;
|
|
283
|
-
var audio = (currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType) === 'file' && Object.keys(currentLine.audio || {}).length;
|
|
284
|
-
var voice = (currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType) === 'voice' && Object.keys(currentLine.voice || {}).length;
|
|
285
292
|
(0, _useEkho.default)({
|
|
286
293
|
audioType: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType,
|
|
287
|
-
voice: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.voice,
|
|
294
|
+
voice: currentMessage !== null && currentMessage !== void 0 && currentMessage.text ? currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.voice : null,
|
|
288
295
|
text: currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.text,
|
|
289
296
|
audio: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audio,
|
|
290
297
|
soundActions: soundActions,
|
|
291
298
|
emitEvent: emitEvent,
|
|
299
|
+
onError: function onError() {
|
|
300
|
+
setAudioFailed(true);
|
|
301
|
+
},
|
|
292
302
|
onFinish: function onFinish() {
|
|
293
303
|
if (autoplayCond && (currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType) !== 'none') {
|
|
294
304
|
handleClickNext();
|
|
@@ -297,7 +307,7 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
297
307
|
}); // Autoplay logic
|
|
298
308
|
|
|
299
309
|
(0, _react.useEffect)(function () {
|
|
300
|
-
if (autoplayCond && ((currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType) === 'none' ||
|
|
310
|
+
if (autoplayCond && ((currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType) === 'none' || audioFailed)) {
|
|
301
311
|
var _currentMessage$text;
|
|
302
312
|
|
|
303
313
|
var time = characterMs * ((currentMessage === null || currentMessage === void 0 ? void 0 : (_currentMessage$text = currentMessage.text) === null || _currentMessage$text === void 0 ? void 0 : _currentMessage$text.length) || 0);
|
|
@@ -307,7 +317,7 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
307
317
|
return function () {
|
|
308
318
|
stop();
|
|
309
319
|
};
|
|
310
|
-
}, [currentMessage, start, stop, handleClickNext, currentLineData
|
|
320
|
+
}, [currentMessage, start, stop, handleClickNext, currentLineData.audioType, autoplayCond, audioFailed]);
|
|
311
321
|
|
|
312
322
|
var decisionPayload = _objectSpread(_objectSpread({}, currentLineData.payload), {}, {
|
|
313
323
|
required: !isBranched,
|
|
@@ -100,6 +100,11 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
100
100
|
currentMessage = _useState6[0],
|
|
101
101
|
setCurrentMessage = _useState6[1];
|
|
102
102
|
|
|
103
|
+
var _useState7 = (0, _react.useState)(false),
|
|
104
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
105
|
+
audioFailed = _useState8[0],
|
|
106
|
+
setAudioFailed = _useState8[1];
|
|
107
|
+
|
|
103
108
|
var _useThree = (0, _fiber.useThree)(function (state) {
|
|
104
109
|
return [state.camera, state.scene];
|
|
105
110
|
}),
|
|
@@ -252,6 +257,8 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
252
257
|
}
|
|
253
258
|
}, [currentLine.id, edges, finishConversation, lines]);
|
|
254
259
|
var backLine = (0, _react.useCallback)(function () {
|
|
260
|
+
setAudioFailed(false);
|
|
261
|
+
|
|
255
262
|
if (isBranched) {
|
|
256
263
|
handleBranchDirection(false);
|
|
257
264
|
} else if (lastLine && !(lastLine !== null && lastLine !== void 0 && lastLine.decision) || lastLine.type && !lastLine.type !== 'conversationalDecision') {
|
|
@@ -283,6 +290,8 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
283
290
|
}
|
|
284
291
|
}, [currentLine.id, edges, finishConversation, lines]);
|
|
285
292
|
var nextLine = (0, _react.useCallback)(function (choice, reset) {
|
|
293
|
+
setAudioFailed(false);
|
|
294
|
+
|
|
286
295
|
if (isBranched) {
|
|
287
296
|
if (choice) {
|
|
288
297
|
handleDecisionBranch(choice, reset);
|
|
@@ -442,16 +451,19 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
442
451
|
}
|
|
443
452
|
}, [actors, camera, currentLine, zoomInActor, getCurrentVisible, translate, getAvatarURL, loadEmotion, resetCameraView, isDecision, isVoiceOver]);
|
|
444
453
|
var autoPlayCond = automatic && !currentLine.decision;
|
|
445
|
-
var audio =
|
|
446
|
-
var voice =
|
|
454
|
+
var audio = Object.keys(currentLine.audio || {}).length;
|
|
455
|
+
var voice = Object.keys(currentLine.voice || {}).length; // Sound logic
|
|
447
456
|
|
|
448
457
|
(0, _useEkho.default)({
|
|
449
458
|
audioType: currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType,
|
|
450
|
-
voice: currentLine === null || currentLine === void 0 ? void 0 : currentLine.voice,
|
|
459
|
+
voice: currentMessage !== null && currentMessage !== void 0 && currentMessage.text ? currentLine === null || currentLine === void 0 ? void 0 : currentLine.voice : null,
|
|
451
460
|
text: currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.text,
|
|
452
461
|
audio: currentLine === null || currentLine === void 0 ? void 0 : currentLine.audio,
|
|
453
462
|
soundActions: soundActions,
|
|
454
463
|
emitEvent: emitEvent,
|
|
464
|
+
onError: function onError() {
|
|
465
|
+
setAudioFailed(true);
|
|
466
|
+
},
|
|
455
467
|
onFinish: function onFinish() {
|
|
456
468
|
if (autoPlayCond) {
|
|
457
469
|
nextLine();
|
|
@@ -460,7 +472,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
460
472
|
}); // Autoplay logic
|
|
461
473
|
|
|
462
474
|
(0, _react.useEffect)(function () {
|
|
463
|
-
if (autoPlayCond && currentMessage.show && ((currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType) === 'none' ||
|
|
475
|
+
if (autoPlayCond && currentMessage.show && ((currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType) === 'none' || audioFailed)) {
|
|
464
476
|
var _currentMessage$text;
|
|
465
477
|
|
|
466
478
|
var time = characterMs * ((currentMessage === null || currentMessage === void 0 ? void 0 : (_currentMessage$text = currentMessage.text) === null || _currentMessage$text === void 0 ? void 0 : _currentMessage$text.length) || 0);
|
|
@@ -470,7 +482,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
470
482
|
return function () {
|
|
471
483
|
stop();
|
|
472
484
|
};
|
|
473
|
-
}, [currentMessage, nextLine, start, stop, currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType, autoPlayCond, audio, voice]); // Positioning logic
|
|
485
|
+
}, [currentMessage, nextLine, start, stop, currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType, autoPlayCond, audio, voice, audioFailed]); // Positioning logic
|
|
474
486
|
|
|
475
487
|
var checkBubblePosition = (0, _react.useCallback)(function () {
|
|
476
488
|
if (bubbleRef.current && currentLine.slots) {
|
package/dist/helpers/useEkho.js
CHANGED
|
@@ -38,6 +38,8 @@ var useEkho = function useEkho(_ref) {
|
|
|
38
38
|
emitEvent = _ref.emitEvent,
|
|
39
39
|
_ref$onFinish = _ref.onFinish,
|
|
40
40
|
onFinish = _ref$onFinish === void 0 ? noop : _ref$onFinish,
|
|
41
|
+
_ref$onError = _ref.onError,
|
|
42
|
+
onError = _ref$onError === void 0 ? noop : _ref$onError,
|
|
41
43
|
_ref$onStart = _ref.onStart,
|
|
42
44
|
onStart = _ref$onStart === void 0 ? noop : _ref$onStart;
|
|
43
45
|
|
|
@@ -114,7 +116,7 @@ var useEkho = function useEkho(_ref) {
|
|
|
114
116
|
switch (_context.prev = _context.next) {
|
|
115
117
|
case 0:
|
|
116
118
|
if (!(payload.voiceId && payload.text)) {
|
|
117
|
-
_context.next =
|
|
119
|
+
_context.next = 7;
|
|
118
120
|
break;
|
|
119
121
|
}
|
|
120
122
|
|
|
@@ -126,9 +128,22 @@ var useEkho = function useEkho(_ref) {
|
|
|
126
128
|
|
|
127
129
|
case 3:
|
|
128
130
|
url = _context.sent;
|
|
129
|
-
setCurrentPlaying(url);
|
|
130
131
|
|
|
131
|
-
|
|
132
|
+
if (!url) {
|
|
133
|
+
onError();
|
|
134
|
+
} else {
|
|
135
|
+
setCurrentPlaying(url);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_context.next = 8;
|
|
139
|
+
break;
|
|
140
|
+
|
|
141
|
+
case 7:
|
|
142
|
+
if (!payload.voiceId) {
|
|
143
|
+
onError();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
case 8:
|
|
132
147
|
case "end":
|
|
133
148
|
return _context.stop();
|
|
134
149
|
}
|
|
@@ -139,12 +154,17 @@ var useEkho = function useEkho(_ref) {
|
|
|
139
154
|
return function (_x) {
|
|
140
155
|
return _ref3.apply(this, arguments);
|
|
141
156
|
};
|
|
142
|
-
}(), [emitEvent, setCurrentPlaying]);
|
|
143
|
-
(0, _react.
|
|
144
|
-
if (currentPlaying.current.url
|
|
157
|
+
}(), [emitEvent, onError, setCurrentPlaying]);
|
|
158
|
+
var stopCurrentAudio = (0, _react.useCallback)(function () {
|
|
159
|
+
if (currentPlaying.current.url) {
|
|
145
160
|
stop(currentPlaying.current.cc);
|
|
146
161
|
}
|
|
147
|
-
}, [
|
|
162
|
+
}, [stop]);
|
|
163
|
+
(0, _react.useEffect)(function () {
|
|
164
|
+
if (noAudio) {
|
|
165
|
+
stopCurrentAudio();
|
|
166
|
+
}
|
|
167
|
+
}, [noAudio, stopCurrentAudio]);
|
|
148
168
|
(0, _react.useEffect)(function () {
|
|
149
169
|
if (isMounted) {
|
|
150
170
|
if (audioType === 'voice' && voice !== null && voice !== void 0 && voice.id) {
|
|
@@ -153,11 +173,14 @@ var useEkho = function useEkho(_ref) {
|
|
|
153
173
|
voiceId: voiceId,
|
|
154
174
|
text: text
|
|
155
175
|
});
|
|
156
|
-
} else if (audioType === 'file' || !audioType && audio) {
|
|
176
|
+
} else if ((audioType === 'file' || !audioType) && audio) {
|
|
157
177
|
setCurrentPlaying(audio === null || audio === void 0 ? void 0 : audio.url);
|
|
178
|
+
} else {
|
|
179
|
+
onError();
|
|
158
180
|
}
|
|
159
181
|
}
|
|
160
|
-
}, [getVoice, playSpeech, isMounted, voice, text, audioType, audio === null || audio === void 0 ? void 0 : audio.url, audio, setCurrentPlaying]);
|
|
182
|
+
}, [getVoice, playSpeech, isMounted, voice, text, audioType, audio === null || audio === void 0 ? void 0 : audio.url, audio, setCurrentPlaying, onError]);
|
|
183
|
+
return stopCurrentAudio;
|
|
161
184
|
};
|
|
162
185
|
|
|
163
186
|
var _default = useEkho;
|