@gamelearn/arcade-components 0.22.7 → 0.22.9

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.
@@ -58,6 +58,7 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
58
58
  selected = _ref.selected,
59
59
  setShowPoints = _ref.setShowPoints;
60
60
  var accRewards = (0, _react.useRef)([]);
61
+ var correctClicked = (0, _react.useRef)(0);
61
62
 
62
63
  var _useState = (0, _react.useState)(0),
63
64
  _useState2 = _slicedToArray(_useState, 2),
@@ -89,7 +90,8 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
89
90
  setShowPoints([].concat(_toConsumableArray(accRewards.current), _toConsumableArray(rewards)));
90
91
  }, [playSound, emitEvent, setShowPoints]);
91
92
  var currentImageProps = list[index];
92
- var info = currentImageProps.info;
93
+ var info = currentImageProps.info,
94
+ specificFeedbacks = currentImageProps.specificFeedbacks;
93
95
  info.description = description;
94
96
  var handleResolve = (0, _react.useCallback)(function () {
95
97
  emitEvent({
@@ -101,18 +103,47 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
101
103
  }
102
104
  });
103
105
  }, [emitEvent, puzzleId, info.resolve.rewards]);
106
+ (0, _react.useEffect)(function () {
107
+ correctClicked.current = 0;
108
+ }, [index]);
104
109
  var onComplete = (0, _react.useCallback)(function (rw) {
105
- if (index + 1 >= list.length) {
106
- handleFinish(rw);
107
- } else {
110
+ var correct = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
111
+
112
+ if (correct) {
113
+ var _specificFeedbacks$co;
114
+
115
+ if ((_specificFeedbacks$co = specificFeedbacks.correctFeedbacks) !== null && _specificFeedbacks$co !== void 0 && _specificFeedbacks$co.length) {
116
+ correctClicked.current += 1;
117
+ setSelected(selected + 1);
118
+ } else {
119
+ correctClicked.current += currentImageProps.areas.length;
120
+ setSelected(selected + currentImageProps.areas.length);
121
+ }
122
+
123
+ if (correctClicked.current === currentImageProps.areas.length) {
124
+ if (index + 1 >= list.length) {
125
+ handleFinish(rw);
126
+ } else {
127
+ setIndex(index + 1);
128
+ }
129
+ }
130
+
108
131
  setRewards(rw);
109
- setIndex(index + 1);
132
+ } else {
133
+ emitEvent({
134
+ type: 'addPoints',
135
+ payload: rw,
136
+ finish: false
137
+ });
138
+
139
+ if (currentImageProps.hasClickOrder) {
140
+ setSelected(selected - correctClicked.current);
141
+ correctClicked.current = 0;
142
+ }
110
143
  }
144
+ }, [index, list.length, currentImageProps.hasClickOrder, currentImageProps.areas.length, handleFinish, specificFeedbacks, setSelected, selected, emitEvent]);
111
145
 
112
- setSelected(selected + currentImageProps.areas.length);
113
- }, [index, list.length, selected, currentImageProps.areas.length, handleFinish, setSelected]);
114
-
115
- var onResolve = function onResolve(resolve) {
146
+ var onResolve = function onResolve() {
116
147
  playSound('score');
117
148
  setTimeout(function () {
118
149
  handleResolve();
@@ -146,6 +177,7 @@ var CurrentImageClickPuzzle = function CurrentImageClickPuzzle(_ref) {
146
177
  name: puzzleId,
147
178
  component: 'chained-image-click-puzzle'
148
179
  },
180
+ specificFeedbacks: specificFeedbacks,
149
181
  emitFinish: onComplete,
150
182
  emitError: setRewards,
151
183
  emitResolve: onResolve,
@@ -3,10 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.mockProps = void 0;
6
+ exports.mockProps2 = exports.mockProps = void 0;
7
7
 
8
- var emitEvent = function emitEvent(type) {
8
+ var emitEvent = function emitEvent(_ref) {
9
+ var type = _ref.type,
10
+ payload = _ref.payload;
9
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) {
@@ -17,6 +23,7 @@ var mockProps = {
17
23
  description: 'Dale al arma',
18
24
  showFrames: true,
19
25
  setInfo: function setInfo() {},
26
+ setShowPoints: function setShowPoints() {},
20
27
  emitEvent: emitEvent,
21
28
  soundActions: soundActions,
22
29
  disableExit: function disableExit() {},
@@ -62,6 +69,7 @@ var mockProps = {
62
69
  height: 1097
63
70
  },
64
71
  areas: [{
72
+ id: 'Uno',
65
73
  name: 'Uno',
66
74
  x: 0,
67
75
  y: 0,
@@ -126,6 +134,7 @@ var mockProps = {
126
134
  height: 1099
127
135
  },
128
136
  areas: [{
137
+ id: 'Dos',
129
138
  name: 'Uno',
130
139
  x: 0,
131
140
  y: 0,
@@ -135,6 +144,7 @@ var mockProps = {
135
144
  stroke: 'rgb(101,154,93)',
136
145
  closed: true
137
146
  }, {
147
+ id: 'Tres',
138
148
  name: 'Dos',
139
149
  x: 0,
140
150
  y: 0,
@@ -160,4 +170,255 @@ var mockProps = {
160
170
  hasHighlights: true
161
171
  }]
162
172
  };
163
- exports.mockProps = mockProps;
173
+ exports.mockProps = mockProps;
174
+ var mockProps2 = {
175
+ nodeId: 'xxas',
176
+ description: 'Dale al arma',
177
+ showFrames: true,
178
+ setInfo: function setInfo() {},
179
+ emitEvent: emitEvent,
180
+ soundActions: soundActions,
181
+ disableExit: function disableExit() {},
182
+ setResolveAction: function setResolveAction() {},
183
+ setShowPoints: function setShowPoints() {},
184
+ list: [{
185
+ info: {
186
+ hint: {
187
+ active: true,
188
+ desc: 'hint',
189
+ rewards: []
190
+ },
191
+ resolve: {
192
+ rewards: []
193
+ },
194
+ solution: {
195
+ right: {
196
+ desc: 'Estupendo',
197
+ desc_labelId: 'alfalfa01',
198
+ rewards: []
199
+ },
200
+ wrong: {
201
+ desc: 'BUUUU',
202
+ desc_labelId: 'fabada01',
203
+ rewards: [{
204
+ id: 'grade',
205
+ name: 'grade',
206
+ points: -17,
207
+ type: 'grade'
208
+ }]
209
+ }
210
+ },
211
+ instructions: 'instructions'
212
+ },
213
+ itemOrder: 1,
214
+ image: {
215
+ imgName: 'Paz-Vizla-Concept.png',
216
+ img: {
217
+ url: 'https://min.int.gamelearn.io/cooked.gl-lms-storage/clients/58dccfba26561500117caf53/image/609a9b30901f3e001247c031/Paz-Vizla-Concept.png',
218
+ imgName: 'Paz-Vizla-Concept.png',
219
+ resourceId: '609a9b30901f3e001247c031'
220
+ },
221
+ width: 1920,
222
+ height: 1097
223
+ },
224
+ areas: [{
225
+ id: 'Uno',
226
+ name: 'Uno',
227
+ x: 0,
228
+ y: 0,
229
+ fill: 'rgba(255, 255, 255, 0.1)',
230
+ draggable: true,
231
+ points: [1150.0742574257429, 217.48228650990103, 1570.95297029703, 65.42288056930694, 1704.0049504950498, 195.7595142326733, 1576.383663366337, 421.13327660891093, 1247.8267326732675, 510.73971225247533],
232
+ stroke: 'rgb(101,154,93)',
233
+ closed: true
234
+ }],
235
+ badAreas: [{
236
+ id: 'AllArea',
237
+ name: 'BadArea',
238
+ x: 0,
239
+ y: 0,
240
+ fill: 'rgba(255, 255, 255, 0.1)',
241
+ draggable: true,
242
+ points: [0, 0, 1920, 0, 1920, 1097, 0, 1097, 0, 0],
243
+ stroke: '#ff634d',
244
+ strokeWidth: 2,
245
+ closed: true
246
+ }],
247
+ hasClickOrder: false,
248
+ hasHighlights: true,
249
+ specificFeedbacks: {
250
+ correctFeedbacks: [{
251
+ id: 'Uno',
252
+ desc: 'specificFeedbacks 1 correcto',
253
+ rewards: [{
254
+ id: 'k2koxnkq',
255
+ name: 'Power',
256
+ points: 10,
257
+ type: 'score'
258
+ }]
259
+ }, {
260
+ id: 'Dos',
261
+ desc: 'specificFeedbacks 2 correcto',
262
+ rewards: [{
263
+ id: 'k2koxnkq',
264
+ name: 'Power',
265
+ points: 10,
266
+ type: 'score'
267
+ }]
268
+ }, {
269
+ id: 'Tres',
270
+ desc: 'specificFeedbacks 3 correcto',
271
+ rewards: [{
272
+ id: 'k2koxnkq',
273
+ name: 'Power',
274
+ points: 10,
275
+ type: 'score'
276
+ }]
277
+ }],
278
+ wrongFeedbacks: [{
279
+ id: 'Uno_bad',
280
+ desc: 'specificFeedbacks 1 incorrecto',
281
+ rewards: [{
282
+ id: 'k2koxnkq',
283
+ name: 'Power',
284
+ points: -10,
285
+ type: 'score'
286
+ }]
287
+ }, {
288
+ id: 'Dos_bad',
289
+ desc: 'specificFeedbacks 2 incorrecto',
290
+ rewards: [{
291
+ id: 'k2koxnkq',
292
+ name: 'Power',
293
+ points: -10,
294
+ type: 'score'
295
+ }]
296
+ }]
297
+ }
298
+ }, {
299
+ info: {
300
+ hint: {
301
+ active: true,
302
+ desc: 'hint',
303
+ rewards: []
304
+ },
305
+ resolve: {
306
+ rewards: []
307
+ },
308
+ solution: {
309
+ right: {
310
+ desc: 'Estupendo',
311
+ desc_labelId: 'alfalfa01',
312
+ rewards: []
313
+ },
314
+ wrong: {
315
+ desc: 'BUUUU',
316
+ desc_labelId: 'fabada01',
317
+ rewards: [{
318
+ id: 'grade',
319
+ name: 'grade',
320
+ points: -17,
321
+ type: 'grade'
322
+ }]
323
+ }
324
+ },
325
+ instructions: 'instructions'
326
+ },
327
+ itemOrder: 2,
328
+ image: {
329
+ imgName: 'pablo-carpio-slave2.jpeg',
330
+ img: {
331
+ url: 'https://min.int.gamelearn.io/cooked.gl-lms-storage/clients/58dccfba26561500117caf53/image/609e3d358782ea00116a7eee/pablo-carpio-slave2.jpeg',
332
+ imgName: 'Paz-Vizla-Concept.png',
333
+ resourceId: '609e3d358782ea00116a7eee'
334
+ },
335
+ width: 1920,
336
+ height: 1099
337
+ },
338
+ areas: [{
339
+ id: 'Dos',
340
+ name: 'Uno',
341
+ x: 0,
342
+ y: 0,
343
+ fill: 'rgba(68, 215, 171, 0.56)',
344
+ draggable: true,
345
+ points: [1305.4777227722775, 606.8812654702971, 1455.094059405941, 593.2797803217823, 1463.2549504950498, 941.4778001237626, 1346.282178217822, 1012.2055228960397, 1275.5544554455448, 906.1139387376239],
346
+ stroke: 'rgb(101,154,93)',
347
+ closed: true
348
+ }, {
349
+ id: 'Tres',
350
+ name: 'Dos',
351
+ x: 0,
352
+ y: 0,
353
+ fill: 'rgba(68, 215, 171, 0.56)',
354
+ draggable: true,
355
+ points: [171.1138613861387, 506.23027537128723, 312.5693069306932, 519.8317605198021, 304.4084158415843, 593.2797803217823, 157.51237623762387, 585.1188892326734],
356
+ stroke: 'rgb(101,154,93)',
357
+ closed: true
358
+ }],
359
+ badAreas: [{
360
+ id: 'AllArea',
361
+ name: 'BadArea',
362
+ x: 0,
363
+ y: 0,
364
+ fill: 'rgba(255, 255, 255, 0.1)',
365
+ draggable: true,
366
+ points: [0, 0, 1920, 0, 1920, 1099, 0, 1099, 0, 0],
367
+ stroke: '#ff634d',
368
+ strokeWidth: 2,
369
+ closed: true
370
+ }],
371
+ hasClickOrder: true,
372
+ hasHighlights: true,
373
+ specificFeedbacks: {
374
+ correctFeedbacks: [{
375
+ id: 'Uno',
376
+ desc: 'specificFeedbacks 1 correcto',
377
+ rewards: [{
378
+ id: 'k2koxnkq',
379
+ name: 'Power',
380
+ points: 10,
381
+ type: 'score'
382
+ }]
383
+ }, {
384
+ id: 'Dos',
385
+ desc: 'specificFeedbacks 2 correcto',
386
+ rewards: [{
387
+ id: 'k2koxnkq',
388
+ name: 'Power',
389
+ points: 10,
390
+ type: 'score'
391
+ }]
392
+ }, {
393
+ id: 'Tres',
394
+ desc: 'specificFeedbacks 3 correcto',
395
+ rewards: [{
396
+ id: 'k2koxnkq',
397
+ name: 'Power',
398
+ points: 10,
399
+ type: 'score'
400
+ }]
401
+ }],
402
+ wrongFeedbacks: [{
403
+ id: 'Uno_bad',
404
+ desc: 'specificFeedbacks 1 incorrecto',
405
+ rewards: [{
406
+ id: 'k2koxnkq',
407
+ name: 'Power',
408
+ points: -10,
409
+ type: 'score'
410
+ }]
411
+ }, {
412
+ id: 'Dos_bad',
413
+ desc: 'specificFeedbacks 2 incorrecto',
414
+ rewards: [{
415
+ id: 'k2koxnkq',
416
+ name: 'Power',
417
+ points: -10,
418
+ type: 'score'
419
+ }]
420
+ }]
421
+ }
422
+ }]
423
+ };
424
+ exports.mockProps2 = mockProps2;
@@ -19,9 +19,7 @@ var Message = function Message(_ref) {
19
19
  className: "conversation--message ".concat(voiceOver ? 'voice--over' : '')
20
20
  }, voiceOver ? /*#__PURE__*/_react.default.createElement("div", {
21
21
  className: "conversation--voice__over"
22
- }, /*#__PURE__*/_react.default.createElement("span", {
23
- className: "icon-voice-over"
24
- }), /*#__PURE__*/_react.default.createElement("span", null, current.name ? current.name : 'Voice-Over')) : /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement("span", {
22
+ }, /*#__PURE__*/_react.default.createElement("span", null, current.name ? current.name : 'Voice-Over')) : /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement("span", {
25
23
  className: "conversation--main__text"
26
24
  }, currentText));
27
25
  };
@@ -44,7 +44,6 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
44
44
  framesCompleted = _ref.framesCompleted,
45
45
  handleFinish = _ref.handleFinish,
46
46
  setRewards = _ref.setRewards,
47
- accRewards = _ref.accRewards,
48
47
  setIndex = _ref.setIndex,
49
48
  setFramesCompleted = _ref.setFramesCompleted,
50
49
  loadPuzzleStatus = _ref.loadPuzzleStatus,
@@ -55,14 +54,18 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
55
54
  translateFromParent = _ref.translateFromParent,
56
55
  setInfo = _ref.setInfo,
57
56
  emitEvent = _ref.emitEvent,
58
- nodeId = _ref.nodeId;
57
+ nodeId = _ref.nodeId,
58
+ setSelected = _ref.setSelected,
59
+ selected = _ref.selected;
59
60
 
60
61
  var _soundActions = _slicedToArray(soundActions, 1),
61
62
  playSound = _soundActions[0];
62
63
 
63
64
  var props = list[index];
64
- var info = props.info;
65
+ var info = props.info,
66
+ specificFeedbacks = props.specificFeedbacks;
65
67
  info.description = description;
68
+ var correctClicked = (0, _react.useRef)(0);
66
69
  var puzzleId = "frame-image-click-puzzle_".concat(index, "_").concat(nodeId);
67
70
  (0, _react.useEffect)(function () {
68
71
  puzzlesCompiledRef.current += 1;
@@ -72,18 +75,49 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
72
75
  hintId: puzzleId
73
76
  }));
74
77
  }, [setInfo, info, puzzleId]);
78
+ (0, _react.useEffect)(function () {
79
+ correctClicked.current = 0;
80
+ }, [index]);
75
81
  var onComplete = (0, _react.useCallback)(function (rw) {
76
- var updatedCompleted = _objectSpread(_objectSpread({}, framesCompleted), {}, _defineProperty({}, index, true));
82
+ var correct = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
83
+
84
+ var updatedCompleted = _objectSpread({}, framesCompleted);
85
+
86
+ if (correct) {
87
+ var _specificFeedbacks$co;
88
+
89
+ if ((_specificFeedbacks$co = specificFeedbacks.correctFeedbacks) !== null && _specificFeedbacks$co !== void 0 && _specificFeedbacks$co.length) {
90
+ correctClicked.current += 1;
91
+ setSelected(selected + 1);
92
+ } else {
93
+ correctClicked.current += props.areas.length;
94
+ setSelected(selected + props.areas.length);
95
+ }
96
+
97
+ if (correctClicked.current === props.areas.length) {
98
+ if (index + 1 >= list.length) {
99
+ handleFinish(rw);
100
+ }
101
+
102
+ updatedCompleted = _objectSpread(_objectSpread({}, updatedCompleted), {}, _defineProperty({}, index, true));
103
+ setFramesCompleted(updatedCompleted);
104
+ setIndex(index + 1 > list.length - 1 ? 0 : index + 1);
105
+ }
77
106
 
78
- if (Object.keys(updatedCompleted).length === list.length) {
79
- handleFinish(rw);
80
- } else {
81
107
  setRewards(rw);
82
- setIndex(index + 1 > list.length - 1 ? 0 : index + 1);
108
+ } else {
109
+ emitEvent({
110
+ type: 'addPoints',
111
+ payload: rw,
112
+ finish: false
113
+ });
114
+
115
+ if (props.hasClickOrder) {
116
+ setSelected(selected - correctClicked.current);
117
+ correctClicked.current = 0;
118
+ }
83
119
  }
84
-
85
- setFramesCompleted(updatedCompleted);
86
- }, [framesCompleted, handleFinish, index, list.length, setFramesCompleted, setIndex, setRewards]);
120
+ }, [emitEvent, specificFeedbacks, framesCompleted, props.hasClickOrder, props.areas.length, list.length, selected, setSelected, setRewards, index, setFramesCompleted, setIndex, handleFinish]);
87
121
  var handleResolve = (0, _react.useCallback)(function () {
88
122
  playSound('score');
89
123
  emitEvent({
@@ -114,6 +148,7 @@ var CurrentFramePuzzle = function CurrentFramePuzzle(_ref) {
114
148
  name: "",
115
149
  component: 'frame-click-puzzle'
116
150
  },
151
+ specificFeedbacks: specificFeedbacks,
117
152
  emitFinish: onComplete,
118
153
  emitResolve: handleResolve,
119
154
  hideContinue: true,
@@ -63,6 +63,11 @@ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
63
63
  framesCompleted = _useState4[0],
64
64
  setFramesCompleted = _useState4[1];
65
65
 
66
+ var _useState5 = (0, _react.useState)(0),
67
+ _useState6 = _slicedToArray(_useState5, 2),
68
+ selected = _useState6[0],
69
+ setSelected = _useState6[1];
70
+
66
71
  var puzzlesCompiledRef = (0, _react.useRef)(0);
67
72
  var hideTooltipRef = (0, _react.useRef)(false);
68
73
 
@@ -125,6 +130,8 @@ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
125
130
  handleFinish: handleFinish,
126
131
  setRewards: setRewards,
127
132
  accRewards: accRewards,
133
+ setSelected: setSelected,
134
+ selected: selected,
128
135
  setIndex: setIndex,
129
136
  setFramesCompleted: setFramesCompleted,
130
137
  loadPuzzleStatus: loadPuzzleStatus,
@@ -165,7 +172,7 @@ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
165
172
  }))), showFrames ? /*#__PURE__*/_react.default.createElement("div", {
166
173
  className: "puzzle-frame__info"
167
174
  }, /*#__PURE__*/_react.default.createElement(_Counter.default, {
168
- current: Object.values(framesCompleted).length,
175
+ current: selected,
169
176
  total: totalCorrects,
170
177
  tooltip: !hideTooltipRef.current,
171
178
  emitEvent: emitEvent