@gamelearn/arcade-components 1.17.1 → 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 -12
- package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +18 -7
- package/dist/components/dialog-component/components/DialogComponent.js +17 -4
- 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,11 +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 = Object.keys(slide.audio || {}).length;
|
|
122
132
|
|
|
123
|
-
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)) {
|
|
124
134
|
var _slide$vignettes$, _slide$vignettes$$tex;
|
|
125
135
|
|
|
126
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);
|
|
@@ -130,7 +140,7 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
130
140
|
return function () {
|
|
131
141
|
stop();
|
|
132
142
|
};
|
|
133
|
-
}, [automatic, goToNextSlide, slideCount, slides, start, stop]);
|
|
143
|
+
}, [audioFailed, automatic, goToNextSlide, slideCount, slides, start, stop]);
|
|
134
144
|
if (!(slides !== null && slides !== void 0 && slides.length)) return null;
|
|
135
145
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
136
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,14 +289,16 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
280
289
|
};
|
|
281
290
|
|
|
282
291
|
var autoplayCond = automatic && !isDecision;
|
|
283
|
-
var audio = Object.keys(currentLine.audio || {}).length;
|
|
284
292
|
(0, _useEkho.default)({
|
|
285
293
|
audioType: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType,
|
|
286
|
-
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,
|
|
287
295
|
text: currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.text,
|
|
288
296
|
audio: currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audio,
|
|
289
297
|
soundActions: soundActions,
|
|
290
298
|
emitEvent: emitEvent,
|
|
299
|
+
onError: function onError() {
|
|
300
|
+
setAudioFailed(true);
|
|
301
|
+
},
|
|
291
302
|
onFinish: function onFinish() {
|
|
292
303
|
if (autoplayCond && (currentLineData === null || currentLineData === void 0 ? void 0 : currentLineData.audioType) !== 'none') {
|
|
293
304
|
handleClickNext();
|
|
@@ -296,7 +307,7 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
296
307
|
}); // Autoplay logic
|
|
297
308
|
|
|
298
309
|
(0, _react.useEffect)(function () {
|
|
299
|
-
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)) {
|
|
300
311
|
var _currentMessage$text;
|
|
301
312
|
|
|
302
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);
|
|
@@ -306,7 +317,7 @@ var ConversationProViewer = function ConversationProViewer(_ref) {
|
|
|
306
317
|
return function () {
|
|
307
318
|
stop();
|
|
308
319
|
};
|
|
309
|
-
}, [currentMessage, start, stop, handleClickNext, currentLineData
|
|
320
|
+
}, [currentMessage, start, stop, handleClickNext, currentLineData.audioType, autoplayCond, audioFailed]);
|
|
310
321
|
|
|
311
322
|
var decisionPayload = _objectSpread(_objectSpread({}, currentLineData.payload), {}, {
|
|
312
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,15 +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 = Object.keys(currentLine.audio || {}).length;
|
|
454
|
+
var audio = Object.keys(currentLine.audio || {}).length;
|
|
455
|
+
var voice = Object.keys(currentLine.voice || {}).length; // Sound logic
|
|
446
456
|
|
|
447
457
|
(0, _useEkho.default)({
|
|
448
458
|
audioType: currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType,
|
|
449
|
-
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,
|
|
450
460
|
text: currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.text,
|
|
451
461
|
audio: currentLine === null || currentLine === void 0 ? void 0 : currentLine.audio,
|
|
452
462
|
soundActions: soundActions,
|
|
453
463
|
emitEvent: emitEvent,
|
|
464
|
+
onError: function onError() {
|
|
465
|
+
setAudioFailed(true);
|
|
466
|
+
},
|
|
454
467
|
onFinish: function onFinish() {
|
|
455
468
|
if (autoPlayCond) {
|
|
456
469
|
nextLine();
|
|
@@ -459,7 +472,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
459
472
|
}); // Autoplay logic
|
|
460
473
|
|
|
461
474
|
(0, _react.useEffect)(function () {
|
|
462
|
-
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)) {
|
|
463
476
|
var _currentMessage$text;
|
|
464
477
|
|
|
465
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);
|
|
@@ -469,7 +482,7 @@ var DialogComponent = function DialogComponent(_ref) {
|
|
|
469
482
|
return function () {
|
|
470
483
|
stop();
|
|
471
484
|
};
|
|
472
|
-
}, [currentMessage, nextLine, start, stop, currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType, autoPlayCond, audio]); // Positioning logic
|
|
485
|
+
}, [currentMessage, nextLine, start, stop, currentLine === null || currentLine === void 0 ? void 0 : currentLine.audioType, autoPlayCond, audio, voice, audioFailed]); // Positioning logic
|
|
473
486
|
|
|
474
487
|
var checkBubblePosition = (0, _react.useCallback)(function () {
|
|
475
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;
|