@gamelearn/arcade-components 0.16.4 → 0.17.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.
Files changed (27) hide show
  1. package/dist/components/cards-selector-puzzle-component/components/CardsSelectorPuzzleComponent.js +56 -21
  2. package/dist/components/cards-selector-puzzle-component/mocks/mockForStory.js +192 -3
  3. package/dist/components/chained-image-click-puzzle-component/mocks/mockForStory.js +2 -2
  4. package/dist/components/cracker-puzzle-component/components/CrackerPuzzleComponent.js +1 -1
  5. package/dist/components/cracker-puzzle-component/mocks/mockForStory.js +65 -3
  6. package/dist/components/drag-item-puzzle-component/components/DragItemPuzzleComponent.js +56 -34
  7. package/dist/components/drag-item-puzzle-component/components/Messages.js +3 -37
  8. package/dist/components/feedback-component/components/FeedbackComponent.js +46 -14
  9. package/dist/components/feedback-component/mocks/mockForStory.js +25 -5
  10. package/dist/components/frame-click-puzzle-component/components/CurrentFramePuzzle.js +4 -3
  11. package/dist/components/frame-click-puzzle-component/components/FrameClickPuzzleComponent.js +10 -1
  12. package/dist/components/frame-click-puzzle-component/mocks/mockForStory.js +2 -2
  13. package/dist/components/hacker-puzzle-component/mocks/mockForStory.js +7 -1
  14. package/dist/components/hanged-puzzle-component/components/HangedPuzzleComponent.js +71 -18
  15. package/dist/components/hanged-puzzle-component/mocks/mockForStory.js +7 -1
  16. package/dist/components/image-click-puzzle-component/mocks/mockForStory.js +7 -1
  17. package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js +51 -64
  18. package/dist/components/image-click-wrapper-component/mocks/mockForStory.js +8 -2
  19. package/dist/components/image-component/mocks/mockForStory.js +7 -1
  20. package/dist/components/keyboard-puzzle-component/components/KeyboardPuzzleComponent.js +10 -2
  21. package/dist/components/keyboard-puzzle-component/mocks/mockForStory.js +7 -1
  22. package/dist/components/konva-components/KonvaMapper.js +4 -4
  23. package/dist/components/lectures-component/components/LecturesComponent.js +11 -5
  24. package/dist/components/terminal-puzzle-component/components/FilesGroup/index.js +6 -6
  25. package/dist/components/terminal-puzzle-component/components/Visor/index.js +5 -28
  26. package/dist/components/terminal-puzzle-component/mocks/mockForStory.js +7 -2
  27. package/package.json +3 -3
@@ -13,6 +13,18 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
13
13
 
14
14
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
15
 
16
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
+
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
25
+
26
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
27
+
16
28
  var FeedbackComponent = function FeedbackComponent(_ref) {
17
29
  var text = _ref.text,
18
30
  success = _ref.success,
@@ -20,34 +32,54 @@ var FeedbackComponent = function FeedbackComponent(_ref) {
20
32
  additionalStyle = _ref.additionalStyle,
21
33
  functionOnClose = _ref.functionOnClose,
22
34
  secondText = _ref.secondText,
23
- _ref$puzzleHeaderClas = _ref.puzzleHeaderClass,
24
- puzzleHeaderClass = _ref$puzzleHeaderClas === void 0 ? "puzzle--image__result" : _ref$puzzleHeaderClas;
35
+ translate = _ref.translate,
36
+ shortText = _ref.shortText;
37
+
38
+ var _useState = (0, _react.useState)(),
39
+ _useState2 = _slicedToArray(_useState, 2),
40
+ explain = _useState2[0],
41
+ setExplain = _useState2[1];
42
+
25
43
  (0, _react.useEffect)(function () {
44
+ var timerForShowExplain;
45
+
26
46
  if (text && playSound) {
27
47
  playSound(success ? 'score' : 'fail');
28
48
  }
29
- }, [playSound, success, text]);
30
49
 
31
- if (!text) {
32
- return null;
33
- }
50
+ if (text && !shortText) {
51
+ timerForShowExplain = setTimeout(function () {
52
+ setExplain(true);
53
+ }, 1000);
54
+ }
34
55
 
35
- return /*#__PURE__*/_react.default.createElement("div", {
36
- className: "".concat(puzzleHeaderClass, " ").concat(additionalStyle, " ").concat(success ? 'success' : 'failed')
56
+ return function () {
57
+ if (timerForShowExplain) clearTimeout(timerForShowExplain);
58
+ };
59
+ }, [playSound, success, shortText, text]);
60
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
61
+ className: "feedback-layer ".concat(explain ? 'feedback-layer--withexplain' : '')
62
+ }, /*#__PURE__*/_react.default.createElement("div", {
63
+ className: "feedback-layer__header ".concat(additionalStyle ? additionalStyle : '', " ").concat(success ? 'success' : 'failed')
37
64
  }, secondText && /*#__PURE__*/_react.default.createElement("span", {
38
65
  className: "puzzle--terminal__visor--file"
39
66
  }, /*#__PURE__*/_react.default.createElement("span", {
40
- className: "puzzle--terminal__icon ".concat(additionalStyle)
67
+ className: "puzzle--terminal__icon ".concat(additionalStyle ? additionalStyle : '')
41
68
  }), /*#__PURE__*/_react.default.createElement("span", null, secondText)), /*#__PURE__*/_react.default.createElement("span", {
42
- className: "title"
43
- }, text), functionOnClose && /*#__PURE__*/_react.default.createElement("span", {
69
+ className: "feedback-layer__maintitle"
70
+ }, !shortText ? translate("tooltip.".concat(success ? 'correct' : 'incorrect')) : text), text && functionOnClose && explain && /*#__PURE__*/_react.default.createElement("button", {
71
+ type: "button",
72
+ className: "feedback-layer__closeX",
44
73
  onClick: function onClick() {
45
74
  return functionOnClose();
46
- },
47
- className: "puzzle--terminal__folder--close"
75
+ }
48
76
  }, /*#__PURE__*/_react.default.createElement("span", {
49
77
  className: "icon-close"
50
- })));
78
+ }))), !shortText && text !== '' && /*#__PURE__*/_react.default.createElement("div", {
79
+ className: "feedback-layer__explainwrap"
80
+ }, /*#__PURE__*/_react.default.createElement("div", {
81
+ className: "feedback-layer__explain"
82
+ }, /*#__PURE__*/_react.default.createElement("div", null, text)))));
51
83
  };
52
84
 
53
85
  FeedbackComponent.defaultProps = {
@@ -3,18 +3,38 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.mockProps2 = exports.mockProps = void 0;
6
+ exports.mockProps4 = exports.mockProps3 = exports.mockProps2 = exports.mockProps = void 0;
7
7
  var soundActions = [function (sound) {
8
8
  console.log('PlaySound called :', sound);
9
9
  }, function () {}];
10
+
11
+ var translate = function translate(payload) {
12
+ return payload;
13
+ };
14
+
10
15
  var mockProps = {
16
+ functionOnClose: {},
11
17
  soundActions: soundActions,
12
- text: 'Feedback Text Success',
13
- success: true
18
+ success: true,
19
+ translate: translate,
20
+ text: '500A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count thea sf as'
14
21
  };
15
22
  exports.mockProps = mockProps;
16
23
  var mockProps2 = {
24
+ functionOnClose: {},
25
+ soundActions: soundActions,
26
+ translate: translate,
27
+ text: '500A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count the amount of letters that a piece of text in an email template had (to avoid passing any character limits)asd asdf sdf A while back I needed to count thea sf as'
28
+ };
29
+ exports.mockProps2 = mockProps2;
30
+ var mockProps3 = {
31
+ success: true,
32
+ soundActions: soundActions,
33
+ translate: translate
34
+ };
35
+ exports.mockProps3 = mockProps3;
36
+ var mockProps4 = {
17
37
  soundActions: soundActions,
18
- text: 'Feedback Text Failed'
38
+ translate: translate
19
39
  };
20
- exports.mockProps2 = mockProps2;
40
+ exports.mockProps4 = mockProps4;
@@ -52,7 +52,8 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
52
52
  soundActions = _ref.soundActions,
53
53
  setResolveAction = _ref.setResolveAction,
54
54
  disableExit = _ref.disableExit,
55
- description = _ref.description;
55
+ description = _ref.description,
56
+ translateFromParent = _ref.translateFromParent;
56
57
  var props = list[index];
57
58
  var info = props.info;
58
59
  info.description = description;
@@ -110,10 +111,10 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
110
111
  hideContinue: true,
111
112
  disableInfo: puzzlesCompiledRef.current > 1,
112
113
  defaultCompleted: framesCompleted[index] || !!loadPuzzleStatus,
113
- isLast: Object.values(framesCompleted).length - 1 === list.length - 1,
114
114
  soundActions: soundActions,
115
115
  setResolveAction: setResolveAction,
116
- disableExit: disableExit
116
+ disableExit: disableExit,
117
+ translateFromParent: translateFromParent
117
118
  }));
118
119
  };
119
120
 
@@ -111,6 +111,14 @@ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
111
111
  }
112
112
  });
113
113
  }, [accRewards, emitEvent, puzzleId]);
114
+
115
+ var translateFromParent = function translateFromParent(id) {
116
+ return emitEvent({
117
+ type: 'translate',
118
+ payload: id
119
+ });
120
+ };
121
+
114
122
  var currentPuzzleProps = {
115
123
  list: list,
116
124
  description: description,
@@ -126,7 +134,8 @@ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
126
134
  loadPuzzleStatus: loadPuzzleStatus,
127
135
  soundActions: soundActions,
128
136
  setResolveAction: setResolveAction,
129
- disableExit: disableExit
137
+ disableExit: disableExit,
138
+ translateFromParent: translateFromParent
130
139
  };
131
140
  return /*#__PURE__*/_react.default.createElement("div", {
132
141
  className: "puzzle-frame"
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
9
- console.log('Emit event called');
8
+ var emitEvent = function emitEvent(type) {
9
+ console.log('Emit event called', type);
10
10
  };
11
11
 
12
12
  var soundActions = [function (sound) {
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps3 = exports.mockProps2 = exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
11
  console.log('Emit event called');
12
+
13
+ if (type === 'translate') {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var mockProps = {
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _feedbackComponent = _interopRequireDefault(require("../../feedback-component"));
11
+
10
12
  var _react = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _utils = require("../utils");
@@ -15,6 +17,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
15
17
 
16
18
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
19
 
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
18
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
23
 
20
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -127,10 +131,28 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
127
131
  disabled = _useState12[0],
128
132
  setDisable = _useState12[1];
129
133
 
134
+ var _useState13 = (0, _react.useState)(false),
135
+ _useState14 = _slicedToArray(_useState13, 2),
136
+ feedbackResult = _useState14[0],
137
+ setFeedbackResult = _useState14[1];
138
+
139
+ var _useState15 = (0, _react.useState)([]),
140
+ _useState16 = _slicedToArray(_useState15, 2),
141
+ accRewards = _useState16[0],
142
+ setRewards = _useState16[1];
143
+
130
144
  var translatedAnswer = answer.toUpperCase().split('');
131
145
  var answerPanel = translatedAnswer.filter(function (char) {
132
146
  return (0, _utils.restrictCharacters)(char, 'and');
133
147
  });
148
+
149
+ var translate = function translate(id) {
150
+ return emitEvent({
151
+ type: 'translate',
152
+ payload: id
153
+ });
154
+ };
155
+
134
156
  var resetPool = (0, _react.useCallback)(function () {
135
157
  var newPool = answerPanel.map(function (char) {
136
158
  return {
@@ -292,6 +314,25 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
292
314
  }
293
315
  };
294
316
 
317
+ var handleClose = function handleClose() {
318
+ disableExit(true);
319
+ var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(info.resolve.rewards));
320
+ playSound('score');
321
+ emitEvent({
322
+ type: 'addPoints',
323
+ payload: _toConsumableArray(rewardsData)
324
+ });
325
+ };
326
+
327
+ var handleFail = function handleFail() {
328
+ playSound('fail');
329
+ setRewards([].concat(_toConsumableArray(accRewards), _toConsumableArray(info.solution.wrong.rewards)));
330
+ setFailed(true);
331
+ setResolveClass('');
332
+ setDisable(false);
333
+ setFeedbackResult(false);
334
+ };
335
+
295
336
  var resolvePuzzle = function resolvePuzzle(newAnswer, newPool) {
296
337
  var restoredCharacters = [];
297
338
  setDisable(true);
@@ -313,26 +354,32 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
313
354
  }).length;
314
355
 
315
356
  if (correctLetters === translatedAnswer.length) {
316
- var rewards = info.solution.right.rewards;
317
- var wrongRewards = info.solution.wrong.rewards;
318
- disableExit(false);
319
- playSound('score');
320
357
  setResolveClass('success');
321
- setTimeout(function () {
322
- emitEvent({
323
- type: 'addPoints',
324
- payload: failed ? wrongRewards : rewards
325
- });
326
- }, 2000);
358
+
359
+ if (info.solution.right.desc === '') {
360
+ setTimeout(function () {
361
+ handleClose();
362
+ }, 2000);
363
+ }
327
364
  } else {
328
- playSound('fail');
329
365
  setResolveClass('failed');
330
- setFailed(true);
331
- setTimeout(function () {
332
- setResolveClass('');
333
- setDisable(false);
334
- restore(evaluatedAnswer, newPool, restoredCharacters);
335
- }, 1000);
366
+ restore(evaluatedAnswer, newPool, restoredCharacters);
367
+
368
+ if (info.solution.wrong.desc === '') {
369
+ setTimeout(function () {
370
+ handleFail();
371
+ }, 2000);
372
+ }
373
+ }
374
+
375
+ setFeedbackResult(true);
376
+ };
377
+
378
+ var handleFeedbackFuncionOnClose = function handleFeedbackFuncionOnClose() {
379
+ if (resolvedClass === 'success') {
380
+ handleClose();
381
+ } else {
382
+ handleFail();
336
383
  }
337
384
  };
338
385
 
@@ -347,7 +394,13 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
347
394
  style: {
348
395
  backgroundImage: "url(\"".concat(imgURL, "\")")
349
396
  }
350
- }, /*#__PURE__*/_react.default.createElement("div", {
397
+ }, resolvedClass ? /*#__PURE__*/_react.default.createElement(_feedbackComponent.default, {
398
+ playSound: playSound,
399
+ text: info.solution[resolvedClass === 'success' ? 'right' : 'wrong'].desc,
400
+ success: resolvedClass === 'success',
401
+ translate: translate,
402
+ functionOnClose: handleFeedbackFuncionOnClose
403
+ }) : null, /*#__PURE__*/_react.default.createElement("div", {
351
404
  className: "puzzle--hanged__content"
352
405
  }, /*#__PURE__*/_react.default.createElement("div", {
353
406
  className: "puzzle--hanged__controls"
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
11
  console.log('Emit event called');
12
+
13
+ if (type === "translate") {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var soundActions = [function (sound) {
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps4 = exports.mockProps3 = exports.mockProps2 = exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
11
  console.log('Emit event called');
12
+
13
+ if (type === 'translate') {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var soundActions = [function (sound) {
@@ -47,34 +47,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
47
 
48
48
  var defaultImg = 'https://min.gamelearn.io/css-resources/gamelearn/resources/puzzle-login-low.png';
49
49
 
50
- var CompletedMessage = function CompletedMessage(_ref) {
51
- var text = _ref.text,
52
- playSound = _ref.playSound;
53
- return /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
54
- playSound: playSound,
55
- text: text,
56
- success: true
57
- });
58
- };
59
-
60
- var FailedMessage = function FailedMessage(_ref2) {
61
- var onClose = _ref2.onClose,
62
- text = _ref2.text,
63
- playSound = _ref2.playSound;
64
- (0, _react.useEffect)(function () {
65
- var timeout = setTimeout(function () {
66
- onClose();
67
- }, 2000);
68
- return function () {
69
- clearTimeout(timeout);
70
- };
71
- }, [onClose]);
72
- return /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
73
- text: text,
74
- playSound: playSound
75
- });
76
- };
77
-
78
50
  var ImageReview = function ImageReview() {
79
51
  return /*#__PURE__*/_react.default.createElement("div", {
80
52
  className: "puzzle--image__preview"
@@ -123,21 +95,33 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
123
95
  hasHighlights = props.hasHighlights,
124
96
  hasImageReview = props.hasImageReview,
125
97
  defaultCompleted = props.defaultCompleted,
126
- isLast = props.isLast,
127
98
  hideContinue = props.hideContinue,
128
99
  className = props.className,
129
- emitFinish = props.emitFinish;
100
+ emitFinish = props.emitFinish,
101
+ translateFromParent = props.translateFromParent;
130
102
 
131
103
  var translate = function translate(id) {
104
+ if (translateFromParent) return translateFromParent(id); // when there is no emitEvent pass the Translate
105
+
132
106
  return emitEvent({
133
107
  type: 'translate',
134
108
  payload: id
135
109
  });
136
110
  };
137
111
 
112
+ var _useState11 = (0, _react.useState)(''),
113
+ _useState12 = _slicedToArray(_useState11, 2),
114
+ resolvedClass = _useState12[0],
115
+ setResolveClass = _useState12[1];
116
+
138
117
  var _soundActions = _slicedToArray(soundActions, 1),
139
118
  playSound = _soundActions[0];
140
119
 
120
+ var _useState13 = (0, _react.useState)([]),
121
+ _useState14 = _slicedToArray(_useState13, 2),
122
+ accRewards = _useState14[0],
123
+ setAccRewards = _useState14[1];
124
+
141
125
  var solution = info.solution;
142
126
  var imageUrl = image.img.url || defaultImg;
143
127
  var areasList = areas.map(function (area, index) {
@@ -154,16 +138,17 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
154
138
  });
155
139
  var handleFinish = (0, _react.useCallback)(function () {
156
140
  var rewards = solution.right.rewards;
141
+ var fullRewards = [].concat(_toConsumableArray(accRewards), _toConsumableArray(rewards));
157
142
 
158
143
  if (emitFinish) {
159
- emitFinish(rewards);
144
+ emitFinish(fullRewards);
160
145
  } else {
161
146
  emitEvent({
162
147
  type: 'addPoints',
163
- payload: rewards
148
+ payload: fullRewards
164
149
  });
165
150
  }
166
- }, [emitEvent, emitFinish, solution.right]);
151
+ }, [accRewards, emitEvent, emitFinish, solution.right]);
167
152
  (0, _react.useEffect)(function () {
168
153
  if (completed) {
169
154
  disableExit(true);
@@ -178,9 +163,12 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
178
163
  if (areas.length === clickedZones.length) {
179
164
  setCompleted(true);
180
165
  setDisableClick(true);
166
+ setResolveClass('success');
167
+ console.log('añañaña');
181
168
 
182
- if (hideContinue) {
169
+ if (info.solution.right.desc === '') {
183
170
  timeout = setTimeout(function () {
171
+ setResolveClass('');
184
172
  handleFinish();
185
173
  }, 2000);
186
174
  }
@@ -191,8 +179,9 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
191
179
  clearTimeout(timeout);
192
180
  }
193
181
  };
194
- }, [clickedZones, areas.length, handleFinish, hideContinue]);
182
+ }, [clickedZones, areas.length, handleFinish, hideContinue, info.solution.right.desc]);
195
183
  (0, _react.useEffect)(function () {
184
+ //autoResolve
196
185
  setResolveAction(function (resolve) {
197
186
  setCompleted(true);
198
187
  setDisableClick(true);
@@ -218,26 +207,31 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
218
207
  setClickedZones([]);
219
208
  }
220
209
 
221
- if (feedback) {
222
- setShowWrongFeedback(true);
223
- } else {
224
- emitEvent({
225
- type: 'addPoints',
226
- payload: wrongRewards,
227
- finish: false
228
- });
210
+ setShowWrongFeedback(true);
211
+ setResolveClass('wrong');
212
+
213
+ if (!feedback) {
214
+ setTimeout(function () {
215
+ setShowWrongFeedback(false);
216
+ setResolveClass('');
217
+ !emitFinish ? emitEvent({
218
+ type: 'addPoints',
219
+ payload: wrongRewards,
220
+ finish: false
221
+ }) : setAccRewards([].concat(_toConsumableArray(accRewards), _toConsumableArray(wrongRewards)));
222
+ }, 2000);
229
223
  }
230
224
  }
231
225
  };
232
226
 
233
- var handleOncloseWrongFeedback = (0, _react.useCallback)(function () {
227
+ var handleOnClose = function handleOnClose() {
228
+ if (completed && !finished && resolvedClass === 'success') {
229
+ handleFinish();
230
+ }
231
+
232
+ setResolveClass('');
234
233
  setShowWrongFeedback(false);
235
- !!emitEvent && emitEvent({
236
- type: 'addPoints',
237
- payload: solution.wrong.rewards,
238
- finish: false
239
- });
240
- }, [emitEvent, solution]);
234
+ };
241
235
 
242
236
  var handleAreaClick = function handleAreaClick(area) {
243
237
  if (!clickedZones.some(function (zone) {
@@ -256,6 +250,7 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
256
250
 
257
251
  if (feedback) {
258
252
  setShowWrongFeedback(true);
253
+ setResolveClass('wrong');
259
254
  } else {
260
255
  emitEvent({
261
256
  type: 'addPoints',
@@ -269,20 +264,13 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
269
264
 
270
265
  return /*#__PURE__*/_react.default.createElement("div", {
271
266
  className: className
272
- }, showWrongFeedback ? /*#__PURE__*/_react.default.createElement(FailedMessage, {
273
- playSound: playSound,
274
- onClose: handleOncloseWrongFeedback,
275
- text: info.solution.wrong.desc
276
- }) : null, completed ? /*#__PURE__*/_react.default.createElement(CompletedMessage, {
267
+ }, resolvedClass !== "" ? /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
277
268
  playSound: playSound,
278
- text: info.solution.right.desc
279
- }) : null, completed && !finished && !hideContinue ? /*#__PURE__*/_react.default.createElement("div", {
280
- className: "position--absolute bottom center puzzle--image__continue"
281
- }, /*#__PURE__*/_react.default.createElement("button", {
282
- type: "button",
283
- className: "gat--btn gat--btn__primary green",
284
- onClick: handleFinish
285
- }, isLast ? translate('tests.finish') : translate('puzzles.continue'))) : null, /*#__PURE__*/_react.default.createElement(_KonvaMapper.default, {
269
+ text: info.solution[resolvedClass === 'success' ? 'right' : 'wrong'].desc,
270
+ success: resolvedClass === 'success',
271
+ translate: translate,
272
+ functionOnClose: handleOnClose
273
+ }) : null, /*#__PURE__*/_react.default.createElement(_KonvaMapper.default, {
286
274
  completed: completed,
287
275
  imageUrl: imageUrl,
288
276
  areas: areasList,
@@ -310,7 +298,6 @@ ImageClickWrapperComponent.defaultProps = {
310
298
  hasImageReview: false,
311
299
  defaultCompleted: false,
312
300
  hideContinue: false,
313
- isLast: true,
314
301
  emitAreaClick: function emitAreaClick() {}
315
302
  };
316
303
  var _default = ImageClickWrapperComponent;
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps4 = exports.mockProps3 = exports.mockProps2 = exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
9
- console.log('Emit event called');
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
11
+ console.log('Emit event called', type);
12
+
13
+ if (type === 'translate') {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var soundActions = [function (sound) {
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockWithImageNotViewed = exports.mockWithNotVisible = exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
11
  console.log('Emit Event');
12
+
13
+ if (type === 'translate') {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var mockProps = {
@@ -78,6 +78,13 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
78
78
  feedbackIsShown = _useState14[0],
79
79
  setFeedbackIsShown = _useState14[1];
80
80
 
81
+ var translate = function translate(id) {
82
+ return emitEvent({
83
+ type: 'translate',
84
+ payload: id
85
+ });
86
+ };
87
+
81
88
  var imageURL = ((_image$img = image.img) === null || _image$img === void 0 ? void 0 : _image$img.url) || defaultImage;
82
89
 
83
90
  var _soundActions = _slicedToArray(soundActions, 1),
@@ -184,9 +191,10 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
184
191
  }, col);
185
192
  }));
186
193
  })), feedbackIsShown && /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
194
+ shortText: true,
195
+ translate: translate,
187
196
  text: feedBackText,
188
- success: feedbackResult,
189
- additionalStyle: "bottom"
197
+ success: feedbackResult
190
198
  }));
191
199
  };
192
200
 
@@ -5,8 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent() {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
11
  console.log('Emit event called');
12
+
13
+ if (type === "translate") {
14
+ return payload;
15
+ }
10
16
  };
11
17
 
12
18
  var mockProps = {