@gamelearn/arcade-components 1.4.25 → 1.4.27

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.
@@ -17,14 +17,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
17
17
 
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
19
19
 
20
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
21
-
22
- 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."); }
23
-
24
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
25
-
26
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
-
28
20
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
29
21
 
30
22
  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."); }
@@ -46,19 +38,21 @@ var Board = function Board(_ref) {
46
38
  feedbackIsShown = _ref.feedbackIsShown,
47
39
  resolvePuzzle = _ref.resolvePuzzle,
48
40
  soundActions = _ref.soundActions,
49
- handleSuccess = _ref.handleSuccess;
41
+ handleSuccess = _ref.handleSuccess,
42
+ setForceFlipCard = _ref.setForceFlipCard,
43
+ forceFlipCard = _ref.forceFlipCard;
50
44
 
51
- var _useState = (0, _react.useState)(_toConsumableArray(Array(cards.length)).fill(false)),
45
+ var _useState = (0, _react.useState)(Array(cards.length).fill(false)),
52
46
  _useState2 = _slicedToArray(_useState, 2),
53
47
  flipped = _useState2[0],
54
48
  setFlipped = _useState2[1];
55
49
 
56
- var _useState3 = (0, _react.useState)(_toConsumableArray(Array(cards.length)).fill(false)),
50
+ var _useState3 = (0, _react.useState)(Array(cards.length).fill(false)),
57
51
  _useState4 = _slicedToArray(_useState3, 2),
58
52
  wrongOrder = _useState4[0],
59
53
  setWrongOrder = _useState4[1];
60
54
 
61
- var _useState5 = (0, _react.useState)(1),
55
+ var _useState5 = (0, _react.useState)(0),
62
56
  _useState6 = _slicedToArray(_useState5, 2),
63
57
  correctCards = _useState6[0],
64
58
  setCorrectCards = _useState6[1];
@@ -72,17 +66,24 @@ var Board = function Board(_ref) {
72
66
  var isOrderBased = cards.filter(function (card) {
73
67
  return card.order;
74
68
  }).length > 0;
69
+ var flipTimer;
70
+ (0, _react.useEffect)(function () {
71
+ if (forceFlipCard) {
72
+ setForceFlipCard(false);
73
+ reset();
74
+ clearTimeout(flipTimer);
75
+ }
76
+ }, [flipTimer, forceFlipCard, reset, setForceFlipCard]);
77
+ var reset = (0, _react.useCallback)(function () {
78
+ setFlipped(Array(cards.length).fill(false)); // reset it to the original length
75
79
 
76
- var reset = function reset() {
77
- setFlipped(_toConsumableArray(Array(cards.length)).fill(false)); // reset it to the original length
78
-
79
- setWrongOrder(_toConsumableArray(Array(cards.length)).fill(false));
80
- setCorrectCards(1);
80
+ setWrongOrder(Array(cards.length).fill(false));
81
+ setCorrectCards(0);
81
82
  setCurrentOrder(1);
82
- };
83
+ }, [cards.length, setCurrentOrder]);
83
84
 
84
85
  var timedReset = function timedReset() {
85
- setTimeout(function () {
86
+ flipTimer = setTimeout(function () {
86
87
  reset();
87
88
  }, 3000);
88
89
  };
@@ -113,15 +114,17 @@ var Board = function Board(_ref) {
113
114
  flipAllCorrect();
114
115
  }
115
116
  }, [flipAllCorrect, resolvePuzzle]);
117
+ (0, _react.useEffect)(function () {
118
+ if (correctCards === numberOfCorrectCards && numberOfCorrectCards > 0) {
119
+ endPuzzle();
120
+ setCorrectCards(0);
121
+ }
122
+ }, [correctCards, endPuzzle, numberOfCorrectCards]);
116
123
 
117
124
  var handleCorrect = function handleCorrect(index) {
118
125
  flipACard(index);
119
126
  handleSuccess(cards[index].id || null);
120
127
  setCorrectCards(correctCards + 1);
121
-
122
- if (correctCards === numberOfCorrectCards) {
123
- endPuzzle();
124
- }
125
128
  };
126
129
 
127
130
  var _handleClick = function handleClick(index) {
@@ -181,11 +184,13 @@ Board.defaultProps = {
181
184
  handleError: function handleError() {},
182
185
  endPuzzle: function endPuzzle() {},
183
186
  handleSuccess: function handleSuccess() {},
187
+ setForceFlipCard: function setForceFlipCard() {},
184
188
  documentsDict: {},
185
189
  cards: [],
186
190
  currentOrder: 1,
187
191
  resolvePuzzle: false,
188
- feedbackIsShown: false
192
+ feedbackIsShown: false,
193
+ forceFlipCard: false
189
194
  };
190
195
  var _default = Board;
191
196
  exports.default = _default;
@@ -92,6 +92,11 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
92
92
  var _soundActions = _slicedToArray(soundActions, 1),
93
93
  playSound = _soundActions[0];
94
94
 
95
+ var _useState17 = (0, _react.useState)(false),
96
+ _useState18 = _slicedToArray(_useState17, 2),
97
+ forceFlipCard = _useState18[0],
98
+ setForceFlipCard = _useState18[1];
99
+
95
100
  var translate = function translate(id) {
96
101
  return emitEvent({
97
102
  type: 'translate',
@@ -115,6 +120,8 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
115
120
  }, [emitEvent]);
116
121
 
117
122
  var endPuzzle = function endPuzzle() {
123
+ var _info$solution, _specificFeedbacks$co;
124
+
118
125
  emitEvent({
119
126
  type: 'hidePuzzleButtons',
120
127
  payload: true
@@ -125,33 +132,29 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
125
132
  setFeedbackResult(true);
126
133
  setFeedbackIsShown(true);
127
134
  } else {
128
- var _info$solution, _specificFeedbacks$co;
129
-
130
135
  setFeedbackResult(true);
131
136
  setFeedbackIsShown(true);
132
137
  setFinished(true);
138
+ }
133
139
 
134
- var _info$solution$right = info === null || info === void 0 ? void 0 : (_info$solution = info.solution) === null || _info$solution === void 0 ? void 0 : _info$solution.right,
135
- rewards = _info$solution$right.rewards;
140
+ var _info$solution$right = info === null || info === void 0 ? void 0 : (_info$solution = info.solution) === null || _info$solution === void 0 ? void 0 : _info$solution.right,
141
+ rewards = _info$solution$right.rewards;
136
142
 
137
- var specificRewards = (specificFeedbacks === null || specificFeedbacks === void 0 ? void 0 : (_specificFeedbacks$co = specificFeedbacks.correctFeedbacks) === null || _specificFeedbacks$co === void 0 ? void 0 : _specificFeedbacks$co.map(function (spReward) {
138
- return spReward.rewards;
139
- }).flat()) || [];
140
- var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(rewards), _toConsumableArray(specificRewards));
141
- setTimeout(function () {
142
- playSound('score');
143
- closeFeedbackAndShowPoints(rewardsData);
144
- }, 3000);
145
- }
143
+ var specificRewards = (specificFeedbacks === null || specificFeedbacks === void 0 ? void 0 : (_specificFeedbacks$co = specificFeedbacks.correctFeedbacks) === null || _specificFeedbacks$co === void 0 ? void 0 : _specificFeedbacks$co.map(function (spReward) {
144
+ return spReward.rewards;
145
+ }).flat()) || [];
146
+ var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(rewards), _toConsumableArray(specificRewards));
147
+ setTimeout(function () {
148
+ playSound('score');
149
+ closeFeedbackAndShowPoints(rewardsData);
150
+ }, 3000);
146
151
  };
147
152
 
148
153
  var handleFeedbackFuncionOnClose = function handleFeedbackFuncionOnClose() {
154
+ var isCorrect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
155
+
149
156
  if (feedbackResult) {
150
- setFinished(true);
151
- var rewards = info.solution.right.rewards;
152
- var rewardsData = [].concat(_toConsumableArray(accRewards), _toConsumableArray(rewards));
153
- playSound('score');
154
- closeFeedbackAndShowPoints(rewardsData);
157
+ endPuzzle();
155
158
  } else {
156
159
  setFeedbackResult(false);
157
160
  disableExit(false);
@@ -163,9 +166,15 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
163
166
  }
164
167
 
165
168
  setFeedBackText('');
169
+
170
+ if (!feedbackResult && !isCorrect) {
171
+ setForceFlipCard(true);
172
+ }
166
173
  };
167
174
 
168
175
  var handleSuccessPick = function handleSuccessPick(cardId) {
176
+ setRightPick(true);
177
+
169
178
  if (specificFeedbacks !== null && specificFeedbacks !== void 0 && specificFeedbacks.specificCorrectFeedbacks) {
170
179
  var pickedCard = specificFeedbacks.correctFeedbacks.find(function (greenCard) {
171
180
  return greenCard.id === cardId;
@@ -176,7 +185,7 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
176
185
  } else {
177
186
  setTimeout(function () {
178
187
  playSound('score');
179
- handleFeedbackFuncionOnClose();
188
+ handleFeedbackFuncionOnClose(true);
180
189
  emitEvent({
181
190
  type: 'hidePuzzleButtons',
182
191
  payload: false
@@ -184,7 +193,6 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
184
193
  }, 2000);
185
194
  }
186
195
 
187
- setRightPick(true);
188
196
  setFeedbackIsShown(true);
189
197
  emitEvent({
190
198
  type: 'hidePuzzleButtons',
@@ -205,7 +213,6 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
205
213
  if (failedCard !== null && failedCard !== void 0 && failedCard.desc) {
206
214
  setFeedBackText(failedCard.desc);
207
215
  setFeedbackIsShown(true);
208
- setRewards([].concat(_toConsumableArray(accRewards), _toConsumableArray(failedCard === null || failedCard === void 0 ? void 0 : failedCard.rewards)));
209
216
  } else {
210
217
  setFeedbackIsShown(true);
211
218
  setTimeout(function () {
@@ -216,6 +223,8 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
216
223
  });
217
224
  }, 2000);
218
225
  }
226
+
227
+ setRewards([].concat(_toConsumableArray(accRewards), _toConsumableArray((failedCard === null || failedCard === void 0 ? void 0 : failedCard.rewards) || [])));
219
228
  } // si hay feedback definido
220
229
  else if (info.solution.wrong.desc) {
221
230
  setFeedBackText(info.solution.wrong.desc);
@@ -279,7 +288,9 @@ var CardsSelectorPuzzleComponent = function CardsSelectorPuzzleComponent(_ref) {
279
288
  feedbackIsShown: feedbackIsShown,
280
289
  resolvePuzzle: resolvePuzzle,
281
290
  soundActions: soundActions,
282
- handleSuccess: handleSuccessPick
291
+ handleSuccess: handleSuccessPick,
292
+ forceFlipCard: forceFlipCard,
293
+ setForceFlipCard: setForceFlipCard
283
294
  })), feedbackIsShown && /*#__PURE__*/_react.default.createElement(_feedbackComponent.default, {
284
295
  success: feedbackResult || rightPick,
285
296
  text: feedBackText,
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.4.25",
5
+ "version": "1.4.27",
6
6
  "main": "dist/index.js",
7
7
  "files": [
8
8
  "dist",