@gamelearn/arcade-components 2.2.3 → 2.2.7
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/auto-evaluation-component/components/AutoEvaluation.js +4 -2
- package/dist/components/cards-selector-puzzle-component/components/CardsSelectorPuzzleComponent.js +6 -3
- package/dist/components/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js +20 -8
- package/dist/components/comic-component/components/ComicComponent.js +3 -4
- package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +148 -49
- package/dist/components/conversational-pro-component/components/SlotList.js +6 -2
- package/dist/components/conversational-pro-component/components/scene/Panel.js +72 -10
- package/dist/components/conversational-pro-component/components/scene/Panels.js +3 -1
- package/dist/components/conversational-pro-component/components/scene/index.js +8 -1
- package/dist/components/dialog-component/components/DialogComponent.js +206 -81
- package/dist/components/feedback-component/components/FeedbackComponent.js +2 -3
- package/dist/components/frame-click-puzzle-component/components/CurrentFramePuzzle.js +16 -3
- package/dist/components/frame-click-puzzle-component/components/FrameClickPuzzleComponent.js +4 -2
- package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js +9 -1
- package/dist/components/lectures-component/components/LecturesComponent.js +1 -1
- package/dist/components/survey-component/components/SurveyComponent.js +4 -2
- package/dist/components/terminal-puzzle-component/components/Visor/index.js +1 -1
- package/dist/components/test-component/components/Container.js +4 -3
- package/dist/components/test-component/components/TestComponent.js +11 -4
- package/dist/helpers/index.js +70 -4
- package/dist/helpers/mocker.js +1 -1
- package/dist/helpers/useEkho.js +20 -11
- package/package.json +1 -1
|
@@ -107,7 +107,9 @@ var SurveyComponent = function SurveyComponent(_ref) {
|
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
var View = PAGES[page].component;
|
|
110
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
110
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
111
|
+
className: "survey--container__overlay"
|
|
112
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
111
113
|
className: "survey--container",
|
|
112
114
|
dir: "auto"
|
|
113
115
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -153,7 +155,7 @@ var SurveyComponent = function SurveyComponent(_ref) {
|
|
|
153
155
|
});
|
|
154
156
|
},
|
|
155
157
|
className: "gat--btn gat--btn__primary ".concat(disabled ? 'disabled' : '', " not-transition")
|
|
156
|
-
}, translate('survey.finish')))));
|
|
158
|
+
}, translate('survey.finish'))))));
|
|
157
159
|
};
|
|
158
160
|
|
|
159
161
|
var _default = SurveyComponent;
|
|
@@ -120,8 +120,8 @@ var Visor = function Visor(_ref) {
|
|
|
120
120
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
121
121
|
className: "puzzle--terminal__visor"
|
|
122
122
|
}, /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
|
|
123
|
-
shortText: true,
|
|
124
123
|
playSound: playSound,
|
|
124
|
+
shortText: true,
|
|
125
125
|
success: fileId === solutionId,
|
|
126
126
|
text: fileId === solutionId ? info.solution.right.desc : info.solution.wrong.desc,
|
|
127
127
|
functionOnClose: fileId === solutionId ? resolvePuzzle : backFile,
|
|
@@ -47,7 +47,8 @@ var Container = function Container(_ref) {
|
|
|
47
47
|
updateForm = _ref.updateForm,
|
|
48
48
|
disabled = _ref.disabled,
|
|
49
49
|
translate = _ref.translate,
|
|
50
|
-
soundActions = _ref.soundActions
|
|
50
|
+
soundActions = _ref.soundActions,
|
|
51
|
+
paused = _ref.paused;
|
|
51
52
|
|
|
52
53
|
var _useState = (0, _react.useState)(0),
|
|
53
54
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -65,7 +66,7 @@ var Container = function Container(_ref) {
|
|
|
65
66
|
play = _soundActions[0];
|
|
66
67
|
|
|
67
68
|
(0, _react.useEffect)(function () {
|
|
68
|
-
if (time >= 0 && !disabled) {
|
|
69
|
+
if (time >= 0 && !disabled && !paused) {
|
|
69
70
|
var timeout = setInterval(function () {
|
|
70
71
|
if (!feedback) {
|
|
71
72
|
setTime(function (t) {
|
|
@@ -80,7 +81,7 @@ var Container = function Container(_ref) {
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
return undefined;
|
|
83
|
-
}, [disabled, feedback, saveInterval, setTime, time]);
|
|
84
|
+
}, [disabled, feedback, paused, saveInterval, setTime, time]);
|
|
84
85
|
|
|
85
86
|
var nextPage = function nextPage() {
|
|
86
87
|
play('click-ui');
|
|
@@ -52,7 +52,8 @@ var TestComponent = function TestComponent(_ref) {
|
|
|
52
52
|
emitEvent = _ref.emitEvent,
|
|
53
53
|
soundActions = _ref.soundActions,
|
|
54
54
|
audio = _ref.audio,
|
|
55
|
-
required = _ref.required
|
|
55
|
+
required = _ref.required,
|
|
56
|
+
pause = _ref.pause;
|
|
56
57
|
var questions = test.questions;
|
|
57
58
|
var indicators = emitEvent({
|
|
58
59
|
type: 'loadIndicators'
|
|
@@ -203,7 +204,10 @@ var TestComponent = function TestComponent(_ref) {
|
|
|
203
204
|
setResult({});
|
|
204
205
|
setTime(countdown.time);
|
|
205
206
|
setTimeOver(false);
|
|
206
|
-
|
|
207
|
+
|
|
208
|
+
if (audio !== null && audio !== void 0 && audio.url) {
|
|
209
|
+
playSound(audio.url, 'test_bg');
|
|
210
|
+
}
|
|
207
211
|
};
|
|
208
212
|
|
|
209
213
|
var resultAnswers = Object.values(result);
|
|
@@ -239,7 +243,9 @@ var TestComponent = function TestComponent(_ref) {
|
|
|
239
243
|
});
|
|
240
244
|
};
|
|
241
245
|
|
|
242
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
246
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
247
|
+
className: "test--container__overlay"
|
|
248
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
243
249
|
className: "test--container",
|
|
244
250
|
dir: "auto"
|
|
245
251
|
}, view !== 'results' ? /*#__PURE__*/_react.default.createElement(_Container.default, {
|
|
@@ -250,6 +256,7 @@ var TestComponent = function TestComponent(_ref) {
|
|
|
250
256
|
tries: tries,
|
|
251
257
|
answerPage: answerPage,
|
|
252
258
|
setTime: setTime,
|
|
259
|
+
paused: pause,
|
|
253
260
|
saveInterval: saveInterval,
|
|
254
261
|
disabled: view !== 'test',
|
|
255
262
|
answered: answeredPage || view !== 'test',
|
|
@@ -277,7 +284,7 @@ var TestComponent = function TestComponent(_ref) {
|
|
|
277
284
|
timeOverText: countdown.text,
|
|
278
285
|
emitEvent: emitEvent,
|
|
279
286
|
soundActions: soundActions
|
|
280
|
-
}));
|
|
287
|
+
})));
|
|
281
288
|
};
|
|
282
289
|
|
|
283
290
|
var _default = TestComponent;
|
package/dist/helpers/index.js
CHANGED
|
@@ -3,18 +3,35 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.zAxis = exports.yAxis = exports.xAxis = exports.vectorTranslateZ = exports.vectorTranslateY = exports.vectorTranslateX = exports.vectorTranslateOnAxis = exports.vectorToScreen = exports.usePrevious = exports.screenToVector = exports.roundFloat = exports.getObjectPosition = exports.formatMessage = exports.executeCrossFade = exports.cameraFitAnyObject = void 0;
|
|
6
|
+
exports.zAxis = exports.yAxis = exports.xAxis = exports.vectorTranslateZ = exports.vectorTranslateY = exports.vectorTranslateX = exports.vectorTranslateOnAxis = exports.vectorToScreen = exports.usePrevious = exports.screenToVector = exports.roundFloat = exports.getRandomIndex = exports.getObjectPosition = exports.formatMessage = exports.executeTalkingAnimation = exports.executeCrossFade = exports.cameraFitAnyObject = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
|
|
10
10
|
var _three = require("three");
|
|
11
11
|
|
|
12
|
+
var _GLTFLoader = require("three/examples/jsm/loaders/GLTFLoader");
|
|
13
|
+
|
|
14
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
+
|
|
16
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
+
|
|
18
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
+
|
|
20
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
21
|
+
|
|
22
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
12
26
|
var xAxis = new _three.Vector3(1, 0, 0);
|
|
13
27
|
exports.xAxis = xAxis;
|
|
14
28
|
var yAxis = new _three.Vector3(0, 1, 0);
|
|
15
29
|
exports.yAxis = yAxis;
|
|
16
30
|
var zAxis = new _three.Vector3(0, 0, 1);
|
|
17
31
|
exports.zAxis = zAxis;
|
|
32
|
+
var crossFadeDuration = 0.2;
|
|
33
|
+
var bones = ['Jaw_M', 'Head_M', 'L_lip_jnt', 'HeadEnd_M', 'Neck_M', 'R_lip_jnt', 'joint4', 'transform1', 'lowerTeeths', 'upperTeeths'];
|
|
34
|
+
var loader = new _GLTFLoader.GLTFLoader();
|
|
18
35
|
|
|
19
36
|
var formatMessage = function formatMessage(text) {
|
|
20
37
|
var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -27,6 +44,12 @@ var formatMessage = function formatMessage(text) {
|
|
|
27
44
|
|
|
28
45
|
exports.formatMessage = formatMessage;
|
|
29
46
|
|
|
47
|
+
var getRandomIndex = function getRandomIndex(length) {
|
|
48
|
+
return Math.floor(Math.random() * length);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.getRandomIndex = getRandomIndex;
|
|
52
|
+
|
|
30
53
|
var usePrevious = function usePrevious(value) {
|
|
31
54
|
var ref = (0, _react.useRef)();
|
|
32
55
|
(0, _react.useEffect)(function () {
|
|
@@ -156,7 +179,7 @@ var setWeight = function setWeight(action, weight) {
|
|
|
156
179
|
action.setEffectiveWeight(weight);
|
|
157
180
|
};
|
|
158
181
|
|
|
159
|
-
var executeCrossFade = function executeCrossFade(startAction, endAction
|
|
182
|
+
var executeCrossFade = function executeCrossFade(startAction, endAction) {
|
|
160
183
|
if (startAction === endAction) return;
|
|
161
184
|
if (!startAction || !endAction) return;
|
|
162
185
|
startAction.play();
|
|
@@ -164,8 +187,51 @@ var executeCrossFade = function executeCrossFade(startAction, endAction, duratio
|
|
|
164
187
|
endAction.reset();
|
|
165
188
|
endAction.time = 0;
|
|
166
189
|
setWeight(endAction, 1);
|
|
167
|
-
endAction.crossFadeFrom(startAction,
|
|
190
|
+
endAction.crossFadeFrom(startAction, crossFadeDuration, true);
|
|
168
191
|
endAction.play();
|
|
169
192
|
};
|
|
170
193
|
|
|
171
|
-
exports.executeCrossFade = executeCrossFade;
|
|
194
|
+
exports.executeCrossFade = executeCrossFade;
|
|
195
|
+
|
|
196
|
+
var executeTalkingAnimation = function executeTalkingAnimation(target, talkingURL) {
|
|
197
|
+
if (target) {
|
|
198
|
+
var tracks = [];
|
|
199
|
+
var _target$userData = target.userData,
|
|
200
|
+
mixer = _target$userData.mixer,
|
|
201
|
+
defaultAnim = _target$userData.defaultAnim;
|
|
202
|
+
var cloned = defaultAnim.clone();
|
|
203
|
+
|
|
204
|
+
var onLoad = function onLoad(anim) {
|
|
205
|
+
var _cloned$tracks;
|
|
206
|
+
|
|
207
|
+
if (anim) {
|
|
208
|
+
tracks.push.apply(tracks, _toConsumableArray(anim.animations[0].tracks.filter(function (track) {
|
|
209
|
+
return bones.find(function (bone) {
|
|
210
|
+
return track.name.includes(bone);
|
|
211
|
+
});
|
|
212
|
+
})));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
cloned.tracks = cloned.tracks.filter(function (track) {
|
|
216
|
+
return !bones.find(function (bone) {
|
|
217
|
+
return track.name.includes(bone);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
(_cloned$tracks = cloned.tracks).push.apply(_cloned$tracks, tracks);
|
|
222
|
+
|
|
223
|
+
target.userData.emotionClip = cloned;
|
|
224
|
+
var defaultAction = mixer.clipAction(defaultAnim, target);
|
|
225
|
+
var emotionAction = mixer.clipAction(cloned, target);
|
|
226
|
+
emotionAction.loop = _three.LoopPingPong;
|
|
227
|
+
mixer.stopAllAction();
|
|
228
|
+
executeCrossFade(defaultAction, emotionAction, crossFadeDuration);
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
loader.load(talkingURL, function (anim) {
|
|
232
|
+
onLoad(anim);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
exports.executeTalkingAnimation = executeTalkingAnimation;
|
package/dist/helpers/mocker.js
CHANGED
|
@@ -95,7 +95,7 @@ var soundActions = [function (sound) {
|
|
|
95
95
|
var exSound = new Audio(sound);
|
|
96
96
|
exSound.play();
|
|
97
97
|
}
|
|
98
|
-
}, function () {}];
|
|
98
|
+
}, function () {}, function () {}, function () {}];
|
|
99
99
|
exports.soundActions = soundActions;
|
|
100
100
|
|
|
101
101
|
var setShowPoints = function setShowPoints() {
|
package/dist/helpers/useEkho.js
CHANGED
|
@@ -35,6 +35,8 @@ var useEkho = function useEkho(_ref) {
|
|
|
35
35
|
loop = _ref$loop === void 0 ? false : _ref$loop,
|
|
36
36
|
_ref$started = _ref.started,
|
|
37
37
|
started = _ref$started === void 0 ? true : _ref$started,
|
|
38
|
+
_ref$slide = _ref.slide,
|
|
39
|
+
slide = _ref$slide === void 0 ? 0 : _ref$slide,
|
|
38
40
|
audio = _ref.audio,
|
|
39
41
|
soundActions = _ref.soundActions,
|
|
40
42
|
emitEvent = _ref.emitEvent,
|
|
@@ -45,11 +47,14 @@ var useEkho = function useEkho(_ref) {
|
|
|
45
47
|
_ref$onError = _ref.onError,
|
|
46
48
|
onError = _ref$onError === void 0 ? noop : _ref$onError,
|
|
47
49
|
_ref$onStart = _ref.onStart,
|
|
48
|
-
onStart = _ref$onStart === void 0 ? noop : _ref$onStart
|
|
50
|
+
onStart = _ref$onStart === void 0 ? noop : _ref$onStart,
|
|
51
|
+
pauseTTS = _ref.pauseTTS;
|
|
49
52
|
|
|
50
|
-
var _soundActions = _slicedToArray(soundActions,
|
|
53
|
+
var _soundActions = _slicedToArray(soundActions, 4),
|
|
51
54
|
playSound = _soundActions[0],
|
|
52
|
-
stop = _soundActions[1]
|
|
55
|
+
stop = _soundActions[1],
|
|
56
|
+
pause = _soundActions[2],
|
|
57
|
+
resume = _soundActions[3];
|
|
53
58
|
|
|
54
59
|
var noAudio = !audio && !voice;
|
|
55
60
|
|
|
@@ -91,20 +96,17 @@ var useEkho = function useEkho(_ref) {
|
|
|
91
96
|
var setCurrentPlaying = (0, _react.useCallback)(function (url) {
|
|
92
97
|
var cc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'tts';
|
|
93
98
|
|
|
94
|
-
if (currentPlaying.current.url === url) {
|
|
99
|
+
if (currentPlaying.current.url === url && slide === currentPlaying.current.slide) {
|
|
95
100
|
return;
|
|
96
101
|
}
|
|
97
102
|
|
|
98
103
|
currentPlaying.current = {
|
|
99
104
|
url: url,
|
|
100
|
-
cc: cc
|
|
105
|
+
cc: cc,
|
|
106
|
+
slide: slide
|
|
101
107
|
};
|
|
102
|
-
onStart
|
|
103
|
-
|
|
104
|
-
cc: cc
|
|
105
|
-
});
|
|
106
|
-
playSound(url, cc, loop, volume, onFinish);
|
|
107
|
-
}, [onStart, playSound, loop, onFinish, volume]);
|
|
108
|
+
playSound(url, cc, loop, volume, onFinish, onStart);
|
|
109
|
+
}, [slide, playSound, loop, volume, onFinish, onStart]);
|
|
108
110
|
var playSpeech = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
109
111
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {
|
|
110
112
|
var url;
|
|
@@ -163,6 +165,13 @@ var useEkho = function useEkho(_ref) {
|
|
|
163
165
|
stopCurrentAudio();
|
|
164
166
|
};
|
|
165
167
|
}, [stopCurrentAudio]);
|
|
168
|
+
(0, _react.useEffect)(function () {
|
|
169
|
+
if (pauseTTS) {
|
|
170
|
+
pause();
|
|
171
|
+
} else {
|
|
172
|
+
resume();
|
|
173
|
+
}
|
|
174
|
+
}, [pause, pauseTTS, resume]);
|
|
166
175
|
(0, _react.useEffect)(function () {
|
|
167
176
|
if (noAudio) {
|
|
168
177
|
stopCurrentAudio();
|