@gamelearn/arcade-components 1.19.1 → 1.20.1

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.
@@ -40,7 +40,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
40
40
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
41
41
 
42
42
  var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
43
- var _info$solution2;
43
+ var _info$solution2, _info$resolve2;
44
44
 
45
45
  var emitEvent = _ref.emitEvent,
46
46
  info = _ref.info,
@@ -49,7 +49,8 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
49
49
  disableExit = _ref.disableExit,
50
50
  setResolveAction = _ref.setResolveAction,
51
51
  soundActions = _ref.soundActions,
52
- backgroundImage = _ref.backgroundImage;
52
+ backgroundImage = _ref.backgroundImage,
53
+ nodeId = _ref.nodeId;
53
54
 
54
55
  var _useState = (0, _react.useState)(false),
55
56
  _useState2 = _slicedToArray(_useState, 2),
@@ -101,6 +102,7 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
101
102
  });
102
103
  };
103
104
 
105
+ var puzzleId = "cards-selector-puzzle_".concat(nodeId);
104
106
  var closeFeedbackAndShowPoints = (0, _react.useCallback)(function (rewardsData) {
105
107
  setFeedbackResult(false);
106
108
  setFeedbackIsShown(false);
@@ -254,10 +256,24 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
254
256
  setResolvePuzzle(true);
255
257
  var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(info === null || info === void 0 ? void 0 : (_info$resolve = info.resolve) === null || _info$resolve === void 0 ? void 0 : _info$resolve.rewards));
256
258
  setTimeout(function () {
257
- closeFeedbackAndShowPoints(rewardsData);
259
+ setFeedbackResult(false);
260
+ setFeedbackIsShown(false);
261
+ emitEvent({
262
+ type: 'hidePuzzleButtons',
263
+ payload: false
264
+ });
265
+ emitEvent({
266
+ type: 'puzzleAction',
267
+ action: 'resolve',
268
+ payload: {
269
+ element: puzzleId,
270
+ rewards: rewardsData,
271
+ finish: true
272
+ }
273
+ });
258
274
  }, 2000);
259
275
  });
260
- }, [setResolveAction, disableExit, accRewards, info.resolve.rewards, emitEvent, closeFeedbackAndShowPoints]);
276
+ }, [setResolveAction, disableExit, accRewards, info === null || info === void 0 ? void 0 : (_info$resolve2 = info.resolve) === null || _info$resolve2 === void 0 ? void 0 : _info$resolve2.rewards, emitEvent, puzzleId]);
261
277
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
262
278
  className: "cards-selector ".concat(backgroundImage !== null && backgroundImage !== void 0 && backgroundImage.url ? 'cards-selector--with-custom-bg' : ''),
263
279
  style: backgroundImage !== null && backgroundImage !== void 0 && backgroundImage.url ? {
@@ -138,7 +138,7 @@ var CrackerPuzzleComponent = function CrackerPuzzleComponent(_ref) {
138
138
  }
139
139
  }, [finished, disableExit]);
140
140
  (0, _react.useEffect)(function () {
141
- setResolveAction(function () {
141
+ setResolveAction(function (callback) {
142
142
  playSound('score');
143
143
  setFinished(true);
144
144
  setTimeout(function () {
@@ -146,12 +146,7 @@ var CrackerPuzzleComponent = function CrackerPuzzleComponent(_ref) {
146
146
  type: 'hidePuzzleButtons',
147
147
  payload: false
148
148
  });
149
- emitEvent({
150
- type: 'addPoints',
151
- complex: true,
152
- finish: true,
153
- payload: info.resolve.rewards
154
- });
149
+ callback();
155
150
  }, 0);
156
151
  });
157
152
  }, [setResolveAction, playSound]);
@@ -146,19 +146,14 @@ var HackerPuzzleComponent = function HackerPuzzleComponent(_ref) {
146
146
  }
147
147
  }, [finished]);
148
148
  (0, _react.useEffect)(function () {
149
- setResolveAction(function () {
149
+ setResolveAction(function (callback) {
150
150
  playSound('score');
151
151
  setFinished(true);
152
152
  emitEvent({
153
153
  type: 'hidePuzzleButtons',
154
154
  payload: false
155
155
  });
156
- emitEvent({
157
- type: 'addPoints',
158
- complex: true,
159
- finish: true,
160
- payload: info.resolve.rewards
161
- });
156
+ callback();
162
157
  });
163
158
  }, [setResolveAction]);
164
159
 
@@ -103,7 +103,8 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
103
103
  info = _ref4.info,
104
104
  answer = _ref4.answer,
105
105
  hintUsed = _ref4.hintUsed,
106
- setResolveAction = _ref4.setResolveAction;
106
+ setResolveAction = _ref4.setResolveAction,
107
+ setHintAction = _ref4.setHintAction;
107
108
 
108
109
  var _soundActions = _slicedToArray(soundActions, 1),
109
110
  playSound = _soundActions[0];
@@ -175,23 +176,23 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
175
176
 
176
177
  return [].concat(_toConsumableArray(newPool), _toConsumableArray(extraPool));
177
178
  }, [answerPanel]);
178
- var setHiddenAnswer = (0, _react.useCallback)(function () {
179
- var hiddenAnswer = answer.toUpperCase().split('').map(function (char, index) {
180
- if ((0, _utils.restrictCharacters)(char, 'or')) {
181
- return {
182
- index: index,
183
- letter: char,
184
- char: char,
185
- fixed: true
186
- };
187
- }
188
-
179
+ var hiddenAnswer = answer.toUpperCase().split('').map(function (char, index) {
180
+ if ((0, _utils.restrictCharacters)(char, 'or')) {
189
181
  return {
190
182
  index: index,
191
183
  letter: char,
192
- char: ''
184
+ char: char,
185
+ fixed: true
193
186
  };
194
- });
187
+ }
188
+
189
+ return {
190
+ index: index,
191
+ letter: char,
192
+ char: ''
193
+ };
194
+ });
195
+ var setHiddenAnswer = (0, _react.useCallback)(function () {
195
196
  var newPool = resetPool();
196
197
 
197
198
  var _loop = function _loop() {
@@ -226,7 +227,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
226
227
 
227
228
  setAnswer(hiddenAnswer);
228
229
  setPoolLetters(newPool);
229
- }, [answer, hintUsed, resetPool]);
230
+ }, [hiddenAnswer, hintUsed, resetPool]);
230
231
 
231
232
  var removedPool = function removedPool(character, ind) {
232
233
  var newPool = poolLetters.map(function (letter, index) {
@@ -405,23 +406,28 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
405
406
  setHiddenAnswer();
406
407
  }
407
408
 
408
- setResolveAction(function () {
409
+ setResolveAction(function (callback) {
409
410
  setCorrectSolution(true);
410
411
  setTimeout(function () {
411
- var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(info.resolve.rewards));
412
412
  emitEvent({
413
413
  type: 'hidePuzzleButtons',
414
414
  payload: false
415
415
  });
416
- emitEvent({
417
- type: 'addPoints',
418
- complex: true,
419
- finish: true,
420
- payload: rewardsData
421
- });
416
+ callback();
422
417
  }, 2000);
423
418
  });
424
- }, [setHiddenAnswer, mounted, answer, setResolveAction, emitEvent, accRewards, info.resolve.rewards]);
419
+ setHintAction(function (callback) {
420
+ var newPool = [];
421
+ hiddenAnswer.forEach(function (_ref6) {
422
+ var letter = _ref6.letter;
423
+ if (letter !== ' ') newPool.push({
424
+ char: letter
425
+ });
426
+ });
427
+ setPoolLetters(newPool);
428
+ callback();
429
+ });
430
+ }, [setHiddenAnswer, mounted, answer, setResolveAction, emitEvent, accRewards, info.resolve.rewards, hiddenAnswer, setHintAction]);
425
431
  return /*#__PURE__*/_react.default.createElement("div", {
426
432
  className: "puzzle--hanged",
427
433
  style: {
@@ -16,6 +16,7 @@ var mockProps = {
16
16
  soundActions: _mocker.soundActions,
17
17
  disableExit: disableExit,
18
18
  setResolveAction: function setResolveAction() {},
19
+ setHintAction: function setHintAction() {},
19
20
  image: {
20
21
  img: {
21
22
  // eslint-disable-next-line max-len
@@ -185,6 +185,7 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
185
185
  clearListenerForActualDate();
186
186
  }, [clearListenerForActualDate]);
187
187
  var listenerForActualDate = (0, _react.useCallback)(function () {
188
+ clearInterval(intervalForActualDate.current);
188
189
  intervalForActualDate.current = setInterval(function () {
189
190
  actualDate.current = Date.now(); // show timerFeedback when finish the time
190
191
 
@@ -202,7 +203,7 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
202
203
  setTimeExpired(true);
203
204
  clearListenerForActualDate();
204
205
  }
205
- }, 0);
206
+ }, 250);
206
207
  }, [clearListenerForActualDate, info === null || info === void 0 ? void 0 : (_info$timerFeedback3 = info.timerFeedback) === null || _info$timerFeedback3 === void 0 ? void 0 : _info$timerFeedback3.desc, info === null || info === void 0 ? void 0 : (_info$timerFeedback4 = info.timerFeedback) === null || _info$timerFeedback4 === void 0 ? void 0 : _info$timerFeedback4.rewards]);
207
208
  (0, _react.useEffect)(function () {
208
209
  if ((areas.length === clickedZones.length || hasClickOnce && clickedZones.length > 0) && !completed) {
@@ -49,7 +49,8 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
49
49
  info = _ref.info,
50
50
  disableExit = _ref.disableExit,
51
51
  soundActions = _ref.soundActions,
52
- setResolveAction = _ref.setResolveAction;
52
+ setResolveAction = _ref.setResolveAction,
53
+ nodeId = _ref.nodeId;
53
54
 
54
55
  var _useState = (0, _react.useState)(false),
55
56
  _useState2 = _slicedToArray(_useState, 2),
@@ -93,6 +94,7 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
93
94
  });
94
95
  };
95
96
 
97
+ var puzzleId = "keyboard-puzzle_".concat(nodeId);
96
98
  var imageURL = ((_image$img = image.img) === null || _image$img === void 0 ? void 0 : _image$img.url) || defaultImage;
97
99
 
98
100
  var _soundActions = _slicedToArray(soundActions, 1),
@@ -185,10 +187,24 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
185
187
  setFinished(true);
186
188
  var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(info.resolve.rewards));
187
189
  setTimeout(function () {
188
- closeFeedbackAndShowPoints(rewardsData);
190
+ setFeedbackResult(false);
191
+ setFeedbackIsShown(false);
192
+ emitEvent({
193
+ type: 'hidePuzzleButtons',
194
+ payload: false
195
+ });
196
+ emitEvent({
197
+ type: 'puzzleAction',
198
+ action: 'resolve',
199
+ payload: {
200
+ element: puzzleId,
201
+ rewards: rewardsData,
202
+ finish: true
203
+ }
204
+ });
189
205
  }, 2000);
190
206
  });
191
- }, [setResolveAction, disableExit, info.solution.right.desc, playSound, info.resolve.rewards, accRewards, closeFeedbackAndShowPoints, password]);
207
+ }, [setResolveAction, disableExit, info.solution.right.desc, playSound, info.resolve.rewards, accRewards, password, emitEvent, puzzleId]);
192
208
 
193
209
  var handleNumbClick = function handleNumbClick(row, col) {
194
210
  var char = keyboard[row][col];
@@ -49,7 +49,8 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
49
49
  login = _ref.login,
50
50
  password = _ref.password,
51
51
  image = _ref.image,
52
- setResolveAction = _ref.setResolveAction;
52
+ setResolveAction = _ref.setResolveAction,
53
+ nodeId = _ref.nodeId;
53
54
 
54
55
  var translate = function translate(id) {
55
56
  return emitEvent({
@@ -58,6 +59,7 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
58
59
  });
59
60
  };
60
61
 
62
+ var puzzleId = "login-puzzle_".concat(nodeId);
61
63
  var isRtl = (0, _LangIsRtl.default)();
62
64
 
63
65
  var _useState = (0, _react.useState)(''),
@@ -173,14 +175,17 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
173
175
  payload: false
174
176
  });
175
177
  emitEvent({
176
- type: 'addPoints',
177
- complex: true,
178
- finish: true,
179
- payload: rewardsData
178
+ type: 'puzzleAction',
179
+ action: 'resolve',
180
+ payload: {
181
+ element: puzzleId,
182
+ rewards: rewardsData,
183
+ finish: true
184
+ }
180
185
  });
181
186
  }, 2000);
182
187
  });
183
- }, [accRewards, info.resolve.rewards, emitEvent, setResolveAction]);
188
+ }, [accRewards, info.resolve.rewards, emitEvent, setResolveAction, puzzleId]);
184
189
  return /*#__PURE__*/_react.default.createElement("div", {
185
190
  className: "puzzle--layer",
186
191
  style: {
@@ -67,7 +67,8 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
67
67
  info = _ref.info,
68
68
  disableExit = _ref.disableExit,
69
69
  soundActions = _ref.soundActions,
70
- setResolveAction = _ref.setResolveAction;
70
+ setResolveAction = _ref.setResolveAction,
71
+ nodeId = _ref.nodeId;
71
72
 
72
73
  // todo: PREPROCESS BACKGROUND IMAGE IN ARCADE
73
74
  var _useState = (0, _react.useState)({}),
@@ -96,6 +97,7 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
96
97
  });
97
98
  };
98
99
 
100
+ var puzzleId = "terminal-puzzle_".concat(nodeId);
99
101
  var initFile = (0, _react.useMemo)(function () {
100
102
  return {
101
103
  name: 'init',
@@ -148,13 +150,16 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
148
150
  payload: false
149
151
  });
150
152
  emitEvent({
151
- type: 'addPoints',
152
- complex: true,
153
- finish: true,
154
- payload: rewards
153
+ type: 'puzzleAction',
154
+ action: 'resolve',
155
+ payload: {
156
+ element: puzzleId,
157
+ rewards: rewards,
158
+ finish: true
159
+ }
155
160
  });
156
161
  });
157
- }, [setResolveAction, info.resolve.rewards, emitEvent]);
162
+ }, [setResolveAction, info.resolve.rewards, emitEvent, puzzleId]);
158
163
 
159
164
  var backFile = function backFile() {
160
165
  accRewards.current = [].concat(_toConsumableArray(accRewards.current), _toConsumableArray(info.solution.wrong.rewards));
@@ -386,23 +386,17 @@ var TextClickPuzzleComponent = function TextClickPuzzleComponent(_ref) {
386
386
  }
387
387
  }, [currentSlide, description, getnumberAllCorrectFragments, list, recursiveStuff, setInfo]);
388
388
  (0, _react.useEffect)(function () {
389
- setResolveAction(function () {
389
+ setResolveAction(function (callback) {
390
390
  emitEvent({
391
391
  type: 'hidePuzzleButtons',
392
392
  payload: true
393
393
  });
394
- var resolveRewards = list[currentSlide].info.resolve.rewards;
395
394
  setTimeout(function () {
396
395
  emitEvent({
397
396
  type: 'hidePuzzleButtons',
398
397
  payload: false
399
398
  });
400
- emitEvent({
401
- type: 'addPoints',
402
- complex: true,
403
- finish: true,
404
- payload: resolveRewards
405
- });
399
+ callback();
406
400
  }, 2000);
407
401
  });
408
402
  }, [setResolveAction, emitEvent, list, currentSlide]);
@@ -307,18 +307,13 @@ var WebBuilderPuzzleComponent = function WebBuilderPuzzleComponent(_ref) {
307
307
  };
308
308
 
309
309
  (0, _react.useEffect)(function () {
310
- setResolveAction(function () {
310
+ setResolveAction(function (callback) {
311
311
  setResolved(true);
312
312
  showCurrentFeed('success');
313
313
  showReference(false);
314
314
  setTimeout(function () {
315
315
  showCurrentFeed('');
316
- emitEvent({
317
- type: 'addPoints',
318
- complex: true,
319
- finish: true,
320
- payload: info.resolve.rewards
321
- });
316
+ callback();
322
317
  }, 4000);
323
318
  });
324
319
  disableExit(true);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@gamelearn/arcade-components",
3
3
  "author": "Gamelearn",
4
4
  "license": "unlicense",
5
- "version": "1.19.1",
5
+ "version": "1.20.1",
6
6
  "main": "dist/index.js",
7
7
  "files": [
8
8
  "dist",