@gamelearn/arcade-components 2.5.2 → 2.5.6
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/chained-image-click-puzzle-component/components/ChainedImageClickPuzzleComponent.js +23 -1
- package/dist/components/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js +32 -29
- package/dist/components/comic-component/components/ComicComponent.js +2 -2
- package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js +44 -29
- package/package.json +2 -2
|
@@ -45,6 +45,23 @@ var ChainedImageClickPuzzleComponent = function ChainedImageClickPuzzleComponent
|
|
|
45
45
|
selected = _useState2[0],
|
|
46
46
|
setSelected = _useState2[1];
|
|
47
47
|
|
|
48
|
+
var _useState3 = (0, _react.useState)(0),
|
|
49
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
50
|
+
index = _useState4[0],
|
|
51
|
+
setIndex = _useState4[1];
|
|
52
|
+
|
|
53
|
+
var _useState5 = (0, _react.useState)({}),
|
|
54
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
55
|
+
slidesCompleted = _useState6[0],
|
|
56
|
+
setSlidesCompleted = _useState6[1];
|
|
57
|
+
|
|
58
|
+
var puzzleId = "chained-image-click-puzzle_".concat(index, "_").concat(nodeId);
|
|
59
|
+
var loadPuzzleStatus = (0, _react.useMemo)(function () {
|
|
60
|
+
return emitEvent({
|
|
61
|
+
type: 'loadObjectStatus',
|
|
62
|
+
payload: puzzleId
|
|
63
|
+
});
|
|
64
|
+
}, [emitEvent, puzzleId]);
|
|
48
65
|
var currentPuzzleProps = {
|
|
49
66
|
list: list,
|
|
50
67
|
description: description,
|
|
@@ -55,7 +72,12 @@ var ChainedImageClickPuzzleComponent = function ChainedImageClickPuzzleComponent
|
|
|
55
72
|
soundActions: soundActions,
|
|
56
73
|
setInfo: setInfo,
|
|
57
74
|
setSelected: setSelected,
|
|
58
|
-
selected: selected
|
|
75
|
+
selected: selected,
|
|
76
|
+
index: index,
|
|
77
|
+
setIndex: setIndex,
|
|
78
|
+
slidesCompleted: slidesCompleted,
|
|
79
|
+
setSlidesCompleted: setSlidesCompleted,
|
|
80
|
+
loadPuzzleStatus: loadPuzzleStatus
|
|
59
81
|
};
|
|
60
82
|
var totalCorrects = list.reduce(function (acc, current) {
|
|
61
83
|
return acc + current.areas.length;
|
package/dist/components/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js
CHANGED
|
@@ -46,8 +46,6 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
46
46
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
47
47
|
|
|
48
48
|
var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
49
|
-
var _specificFeedbacks$co2;
|
|
50
|
-
|
|
51
49
|
var list = _ref.list,
|
|
52
50
|
description = _ref.description,
|
|
53
51
|
nodeId = _ref.nodeId,
|
|
@@ -58,29 +56,20 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
58
56
|
soundActions = _ref.soundActions,
|
|
59
57
|
setSelected = _ref.setSelected,
|
|
60
58
|
selected = _ref.selected,
|
|
61
|
-
pause = _ref.pause
|
|
59
|
+
pause = _ref.pause,
|
|
60
|
+
loadPuzzleStatus = _ref.loadPuzzleStatus,
|
|
61
|
+
index = _ref.index,
|
|
62
|
+
setIndex = _ref.setIndex,
|
|
63
|
+
slidesCompleted = _ref.slidesCompleted,
|
|
64
|
+
setSlidesCompleted = _ref.setSlidesCompleted;
|
|
62
65
|
var accRewards = (0, _react.useRef)([]);
|
|
63
66
|
var correctClicked = (0, _react.useRef)(0);
|
|
64
67
|
var currentSelected = (0, _react.useRef)(0);
|
|
65
|
-
|
|
66
|
-
var _useState = (0, _react.useState)(0),
|
|
67
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
68
|
-
index = _useState2[0],
|
|
69
|
-
setIndex = _useState2[1];
|
|
70
|
-
|
|
71
|
-
var resolvedItems = (0, _react.useRef)({});
|
|
72
68
|
var puzzleId = "chained-image-click-puzzle_".concat(index, "_").concat(nodeId);
|
|
73
69
|
|
|
74
70
|
var _soundActions = _slicedToArray(soundActions, 1),
|
|
75
71
|
playSound = _soundActions[0];
|
|
76
72
|
|
|
77
|
-
var currentPuzzleStatus = (0, _react.useMemo)(function () {
|
|
78
|
-
return emitEvent({
|
|
79
|
-
type: 'loadObjectStatus',
|
|
80
|
-
payload: puzzleId
|
|
81
|
-
});
|
|
82
|
-
}, [emitEvent, puzzleId]);
|
|
83
|
-
|
|
84
73
|
var setRewards = function setRewards(rewards) {
|
|
85
74
|
accRewards.current = [].concat(_toConsumableArray(accRewards.current), _toConsumableArray(rewards));
|
|
86
75
|
};
|
|
@@ -113,6 +102,8 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
113
102
|
var correct = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
114
103
|
var finish = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
115
104
|
|
|
105
|
+
var updatedCompleted = _objectSpread({}, slidesCompleted);
|
|
106
|
+
|
|
116
107
|
if (correct) {
|
|
117
108
|
var _specificFeedbacks$co;
|
|
118
109
|
|
|
@@ -135,6 +126,9 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
135
126
|
} else {
|
|
136
127
|
setIndex(index + 1);
|
|
137
128
|
}
|
|
129
|
+
|
|
130
|
+
updatedCompleted = _objectSpread(_objectSpread({}, updatedCompleted), {}, _defineProperty({}, index, true));
|
|
131
|
+
setSlidesCompleted(updatedCompleted);
|
|
138
132
|
}
|
|
139
133
|
|
|
140
134
|
setRewards(rw);
|
|
@@ -144,18 +138,25 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
144
138
|
payload: rw,
|
|
145
139
|
finish: false
|
|
146
140
|
});
|
|
141
|
+
emitEvent({
|
|
142
|
+
type: 'failPuzzle'
|
|
143
|
+
});
|
|
147
144
|
|
|
148
145
|
if (currentImageProps.hasClickOrder) {
|
|
149
146
|
setSelected(selected - correctClicked.current);
|
|
150
|
-
|
|
147
|
+
|
|
148
|
+
if (correctClicked.current === 0 && Object.entries(slidesCompleted).length === 0) {
|
|
149
|
+
setSelected(0);
|
|
150
|
+
} else {
|
|
151
|
+
correctClicked.current = 0;
|
|
152
|
+
}
|
|
151
153
|
}
|
|
152
154
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
});
|
|
155
|
+
if (Object.entries(slidesCompleted).length === 0 && currentImageProps.hasClickOrder && !selected) {
|
|
156
|
+
setSelected(0);
|
|
157
|
+
}
|
|
157
158
|
}
|
|
158
|
-
}, [
|
|
159
|
+
}, [slidesCompleted, specificFeedbacks, currentImageProps.hasClickOnce, currentImageProps.areas.length, currentImageProps.hasClickOrder, selected, setSelected, index, list.length, setSlidesCompleted, handleFinish, setIndex, emitEvent]);
|
|
159
160
|
|
|
160
161
|
var onResolve = function onResolve() {
|
|
161
162
|
playSound('score');
|
|
@@ -176,16 +177,18 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
176
177
|
}));
|
|
177
178
|
}, [info, puzzleId, setInfo]);
|
|
178
179
|
(0, _react.useEffect)(function () {
|
|
179
|
-
if (
|
|
180
|
+
if (loadPuzzleStatus) {
|
|
180
181
|
onComplete([], true, true);
|
|
181
|
-
resolvedItems.current[puzzleId] = true;
|
|
182
182
|
}
|
|
183
|
-
}, [
|
|
184
|
-
|
|
183
|
+
}, [slidesCompleted, loadPuzzleStatus, onComplete]);
|
|
184
|
+
|
|
185
|
+
var checkSelectedAreas = function checkSelectedAreas() {
|
|
185
186
|
var areasSelected = currentImageProps.hasClickOnce ? currentImageProps.areas.length : 1;
|
|
186
187
|
currentSelected.current += areasSelected;
|
|
188
|
+
console.info('checkSelectedAreas', currentSelected.current);
|
|
187
189
|
setSelected(selected + areasSelected);
|
|
188
|
-
}
|
|
190
|
+
};
|
|
191
|
+
|
|
189
192
|
return /*#__PURE__*/_react.default.createElement(_imageClickWrapperComponent.default, _extends({
|
|
190
193
|
key: index
|
|
191
194
|
}, currentImageProps, {
|
|
@@ -198,7 +201,7 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
|
|
|
198
201
|
emitError: setRewards,
|
|
199
202
|
emitResolve: onResolve,
|
|
200
203
|
isLast: index + 1 === list.length,
|
|
201
|
-
defaultCompleted:
|
|
204
|
+
defaultCompleted: slidesCompleted[index] || !!loadPuzzleStatus,
|
|
202
205
|
hideContinue: !(index + 1 === list.length),
|
|
203
206
|
handleClick: checkSelectedAreas,
|
|
204
207
|
emitEvent: emitEvent,
|
|
@@ -90,12 +90,12 @@ var ComicComponent = function ComicComponent(_ref) {
|
|
|
90
90
|
setStarted(false);
|
|
91
91
|
setAudioFailed(false);
|
|
92
92
|
|
|
93
|
-
if (slideCount + 1 < slides.length) {
|
|
93
|
+
if (slideCount + 1 < slides.length && !pause) {
|
|
94
94
|
setTransition('slide-animation');
|
|
95
95
|
setCount(slideCount + 1);
|
|
96
96
|
setStarted(true);
|
|
97
97
|
}
|
|
98
|
-
}, [slideCount, slides
|
|
98
|
+
}, [pause, slideCount, slides.length]);
|
|
99
99
|
var goToPreviousSlide = (0, _react.useCallback)(function () {
|
|
100
100
|
setStarted(false);
|
|
101
101
|
setAudioFailed(false);
|
package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js
CHANGED
|
@@ -135,6 +135,7 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
|
|
|
135
135
|
var pauseDate = (0, _react.useRef)(null);
|
|
136
136
|
var whenCloseFeedbackDate = (0, _react.useRef)(null);
|
|
137
137
|
var remainingTime = (0, _react.useRef)(null);
|
|
138
|
+
var cheatClue = (0, _react.useRef)(null);
|
|
138
139
|
var intervalForCountDown = (0, _react.useRef)(null);
|
|
139
140
|
|
|
140
141
|
var _useState13 = (0, _react.useState)(timer),
|
|
@@ -169,20 +170,19 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
|
|
|
169
170
|
}, area);
|
|
170
171
|
});
|
|
171
172
|
var startCountDown = (0, _react.useCallback)(function () {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
startCountDown();
|
|
173
|
+
if (!dialogForTimer) {
|
|
174
|
+
var timeout = setInterval(function () {
|
|
175
|
+
setCountDownTime(function (t) {
|
|
176
|
+
if (t > 1) {
|
|
177
|
+
return t - 1;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return 0;
|
|
181
|
+
});
|
|
182
|
+
}, 1000);
|
|
183
|
+
intervalForCountDown.current = timeout;
|
|
184
184
|
}
|
|
185
|
-
}, [
|
|
185
|
+
}, [dialogForTimer]);
|
|
186
186
|
var handleFinish = (0, _react.useCallback)(function (rewards, success) {
|
|
187
187
|
if (emitFinish) {
|
|
188
188
|
emitFinish(rewards, success);
|
|
@@ -212,28 +212,31 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
|
|
|
212
212
|
remainingTime.current = finalDate.current - pauseDate.current;
|
|
213
213
|
clearListenerForActualDate();
|
|
214
214
|
}, [clearListenerForActualDate]);
|
|
215
|
+
var feedbackError = (0, _react.useCallback)(function () {
|
|
216
|
+
setFeedbackData(function () {
|
|
217
|
+
var _info$timerFeedback, _info$timerFeedback2;
|
|
218
|
+
|
|
219
|
+
return {
|
|
220
|
+
show: true,
|
|
221
|
+
success: false,
|
|
222
|
+
text: info !== null && info !== void 0 && (_info$timerFeedback = info.timerFeedback) !== null && _info$timerFeedback !== void 0 && _info$timerFeedback.desc ? info.timerFeedback.desc : '',
|
|
223
|
+
rewards: info === null || info === void 0 ? void 0 : (_info$timerFeedback2 = info.timerFeedback) === null || _info$timerFeedback2 === void 0 ? void 0 : _info$timerFeedback2.rewards
|
|
224
|
+
};
|
|
225
|
+
});
|
|
226
|
+
setTimeExpired(true);
|
|
227
|
+
clearIntervalForCountDown();
|
|
228
|
+
clearListenerForActualDate();
|
|
229
|
+
}, [clearIntervalForCountDown, clearListenerForActualDate, (_info$timerFeedback3 = info.timerFeedback) === null || _info$timerFeedback3 === void 0 ? void 0 : _info$timerFeedback3.desc, (_info$timerFeedback4 = info.timerFeedback) === null || _info$timerFeedback4 === void 0 ? void 0 : _info$timerFeedback4.rewards]);
|
|
215
230
|
var listenerForActualDate = (0, _react.useCallback)(function () {
|
|
216
231
|
clearInterval(intervalForActualDate.current);
|
|
217
232
|
intervalForActualDate.current = setInterval(function () {
|
|
218
233
|
actualDate.current = Date.now(); // show timerFeedback when finish the time
|
|
219
234
|
|
|
220
235
|
if (actualDate.current > finalDate.current) {
|
|
221
|
-
|
|
222
|
-
var _info$timerFeedback, _info$timerFeedback2;
|
|
223
|
-
|
|
224
|
-
return {
|
|
225
|
-
show: true,
|
|
226
|
-
success: false,
|
|
227
|
-
text: info !== null && info !== void 0 && (_info$timerFeedback = info.timerFeedback) !== null && _info$timerFeedback !== void 0 && _info$timerFeedback.desc ? info.timerFeedback.desc : '',
|
|
228
|
-
rewards: info === null || info === void 0 ? void 0 : (_info$timerFeedback2 = info.timerFeedback) === null || _info$timerFeedback2 === void 0 ? void 0 : _info$timerFeedback2.rewards
|
|
229
|
-
};
|
|
230
|
-
});
|
|
231
|
-
setTimeExpired(true);
|
|
232
|
-
clearIntervalForCountDown();
|
|
233
|
-
clearListenerForActualDate();
|
|
236
|
+
feedbackError();
|
|
234
237
|
}
|
|
235
238
|
}, 250);
|
|
236
|
-
}, [
|
|
239
|
+
}, [feedbackError]);
|
|
237
240
|
(0, _react.useEffect)(function () {
|
|
238
241
|
if ((areas.length === clickedZones.length || hasClickOnce && clickedZones.length > 0) && !completed) {
|
|
239
242
|
var _specificFeedbacks$co;
|
|
@@ -449,14 +452,26 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
|
|
|
449
452
|
}, [clearIntervalForCountDown, timer, startCountDown, firstTryForFrame, listenerForActualDate, emitOpenPopupCounterInfo]);
|
|
450
453
|
(0, _react.useEffect)(function () {
|
|
451
454
|
// start automatically the time
|
|
452
|
-
if (timer && slideNumber > 0) {
|
|
455
|
+
if (timer && slideNumber > 0 && !cheatClue.current) {
|
|
453
456
|
if (firstTryForFrame && Object.keys(puzzlesAutoCompleted).length && puzzlesAutoCompleted[slideNumber - 1]) {
|
|
454
457
|
setDialogForTimer(true);
|
|
458
|
+
cheatClue.current = true;
|
|
455
459
|
} else {
|
|
456
|
-
|
|
460
|
+
setDialogForTimer(false);
|
|
457
461
|
}
|
|
458
462
|
}
|
|
459
463
|
}, [createStartAndEndDate, defaultCompleted, firstTryForFrame, puzzlesAutoCompleted, slideNumber, timer]);
|
|
464
|
+
(0, _react.useEffect)(function () {
|
|
465
|
+
if (timer && countDownTime === 0) feedbackError();
|
|
466
|
+
}, [countDownTime, feedbackError, timer]);
|
|
467
|
+
(0, _react.useEffect)(function () {
|
|
468
|
+
if (pause) {
|
|
469
|
+
clearIntervalForCountDown();
|
|
470
|
+
pauseTheCounter();
|
|
471
|
+
} else {
|
|
472
|
+
startCountDown();
|
|
473
|
+
}
|
|
474
|
+
}, [clearIntervalForCountDown, listenerForActualDate, pause, pauseTheCounter, startCountDown]);
|
|
460
475
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
461
476
|
className: className
|
|
462
477
|
}, feedbackData.show ? /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@gamelearn/arcade-components",
|
|
3
3
|
"author": "Gamelearn",
|
|
4
4
|
"license": "unlicense",
|
|
5
|
-
"version": "2.5.
|
|
5
|
+
"version": "2.5.6",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
@@ -111,4 +111,4 @@
|
|
|
111
111
|
"post-merge": "bash node_modules/@gamelearn/version/scripts/after_version_update.sh -p hooks.config"
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
}
|
|
114
|
+
}
|