@gamelearn/arcade-components 0.6.2 → 0.7.0

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 (32) hide show
  1. package/README.md +32 -0
  2. package/dist/components/arcade-render/element/index.js +16 -8
  3. package/dist/components/arcade-render/scene/index.js +1 -0
  4. package/dist/components/cards-selector-puzzle-component/components/Board/index.js +195 -0
  5. package/dist/components/cards-selector-puzzle-component/components/Card/index.js +134 -0
  6. package/dist/components/cards-selector-puzzle-component/components/CardsSelectorPuzzleComponent.js +155 -0
  7. package/dist/components/cards-selector-puzzle-component/index.js +13 -0
  8. package/dist/components/cards-selector-puzzle-component/mocks/mockForStory.js +159 -0
  9. package/dist/components/comic-component/components/ComicComponent.js +5 -2
  10. package/dist/components/comic-component/components/Slide.js +9 -11
  11. package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +13 -25
  12. package/dist/components/decision-component/components/DecisionBody.js +2 -2
  13. package/dist/components/{image-click-wrapper-component/components/Feedback/index.js → feedback-component/components/FeedbackComponent.js} +22 -14
  14. package/dist/components/feedback-component/index.js +13 -0
  15. package/dist/components/feedback-component/mocks/mockForStory.js +20 -0
  16. package/dist/components/frame-click-puzzle-component/components/Counter/index.js +29 -0
  17. package/dist/components/frame-click-puzzle-component/components/CurrentFramePuzzle.js +121 -0
  18. package/dist/components/frame-click-puzzle-component/components/FrameClickPuzzleComponent.js +174 -0
  19. package/dist/components/frame-click-puzzle-component/components/PlayButton/index.js +76 -0
  20. package/dist/components/frame-click-puzzle-component/components/Tooltip/index.js +28 -0
  21. package/dist/components/frame-click-puzzle-component/index.js +13 -0
  22. package/dist/components/frame-click-puzzle-component/mocks/mockForStory.js +164 -0
  23. package/dist/components/image-click-puzzle-component/mocks/mockForStory.js +7 -0
  24. package/dist/components/image-click-wrapper-component/components/ImageClickWrapperComponent.js +14 -63
  25. package/dist/components/image-click-wrapper-component/mocks/mockForStory.js +3 -0
  26. package/dist/components/index.js +8 -0
  27. package/dist/components/keyboard-puzzle-component/components/KeyboardPuzzleComponent.js +31 -6
  28. package/dist/components/terminal-puzzle-component/components/Visor/index.js +10 -4
  29. package/dist/helpers/drawLOD.js +28 -12
  30. package/dist/helpers/useGLB.js +2 -2
  31. package/package.json +4 -5
  32. package/dist/components/keyboard-puzzle-component/components/FeedbackMessage.js +0 -30
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _CurrentFramePuzzle = _interopRequireDefault(require("./CurrentFramePuzzle"));
13
+
14
+ var _PlayButton = _interopRequireDefault(require("./PlayButton"));
15
+
16
+ var _Counter = _interopRequireDefault(require("./Counter"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
21
+
22
+ 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; }
23
+
24
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
25
+
26
+ 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."); }
27
+
28
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
29
+
30
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
31
+
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
+
34
+ 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."); }
35
+
36
+ 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); }
37
+
38
+ 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; }
39
+
40
+ 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; }
41
+
42
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
43
+
44
+ var FrameImageClickComponent = function FrameImageClickComponent(_ref) {
45
+ var emitEvent = _ref.emitEvent,
46
+ nodeId = _ref.nodeId,
47
+ list = _ref.list,
48
+ description = _ref.description,
49
+ showFrames = _ref.showFrames,
50
+ setInfo = _ref.setInfo,
51
+ soundActions = _ref.soundActions,
52
+ disableExit = _ref.disableExit,
53
+ setResolveAction = _ref.setResolveAction;
54
+
55
+ var _useState = (0, _react.useState)([]),
56
+ _useState2 = _slicedToArray(_useState, 2),
57
+ accRewards = _useState2[0],
58
+ setRewards = _useState2[1];
59
+
60
+ var _useState3 = (0, _react.useState)(0),
61
+ _useState4 = _slicedToArray(_useState3, 2),
62
+ index = _useState4[0],
63
+ setIndex = _useState4[1];
64
+
65
+ var _useState5 = (0, _react.useState)({}),
66
+ _useState6 = _slicedToArray(_useState5, 2),
67
+ framesCompleted = _useState6[0],
68
+ setFramesCompleted = _useState6[1];
69
+
70
+ var puzzlesCompiledRef = (0, _react.useRef)(0);
71
+ var hideTooltipRef = (0, _react.useRef)(false);
72
+ var totalCorrects = list.reduce(function (acc, current) {
73
+ return acc + current.areas.length;
74
+ }, 0);
75
+ var puzzleId = "frame-image-click-puzzle_".concat(index, "_").concat(nodeId);
76
+ var loadPuzzleStatus = (0, _react.useMemo)(function () {
77
+ return emitEvent({
78
+ type: 'loadObjectStatus',
79
+ payload: puzzleId
80
+ });
81
+ }, [emitEvent, puzzleId]);
82
+ var handleFinish = (0, _react.useCallback)(function (rewards) {
83
+ emitEvent({
84
+ type: 'addPoints',
85
+ payload: [].concat(_toConsumableArray(accRewards), _toConsumableArray(rewards))
86
+ });
87
+ }, [accRewards, emitEvent]);
88
+
89
+ var handlePlaying = function handlePlaying() {
90
+ setIndex(index + 1);
91
+ };
92
+
93
+ var handleBack = function handleBack() {
94
+ if (index > 0) {
95
+ setIndex(index - 1);
96
+ }
97
+ };
98
+
99
+ var handleForw = function handleForw() {
100
+ if (index !== list.length - 1) {
101
+ setIndex(index + 1);
102
+ }
103
+ };
104
+
105
+ var handleResolve = (0, _react.useCallback)(function () {
106
+ emitEvent({
107
+ type: 'puzzleAction',
108
+ action: 'resolve',
109
+ payload: {
110
+ element: puzzleId,
111
+ rewards: accRewards.current
112
+ }
113
+ });
114
+ }, [accRewards, emitEvent, puzzleId]);
115
+ var currentPuzzleProps = {
116
+ list: list,
117
+ description: description,
118
+ index: index,
119
+ puzzlesCompiledRef: puzzlesCompiledRef,
120
+ framesCompleted: framesCompleted,
121
+ handleFinish: handleFinish,
122
+ setRewards: setRewards,
123
+ accRewards: accRewards,
124
+ setIndex: setIndex,
125
+ setFramesCompleted: setFramesCompleted,
126
+ handleResolve: handleResolve,
127
+ loadPuzzleStatus: loadPuzzleStatus,
128
+ soundActions: soundActions,
129
+ setResolveAction: setResolveAction,
130
+ disableExit: disableExit
131
+ };
132
+ return /*#__PURE__*/_react.default.createElement("div", {
133
+ className: "puzzle-frame"
134
+ }, /*#__PURE__*/_react.default.createElement(_CurrentFramePuzzle.default, currentPuzzleProps), /*#__PURE__*/_react.default.createElement("div", {
135
+ className: "puzzle-frame__content"
136
+ }, /*#__PURE__*/_react.default.createElement("div", {
137
+ className: "puzzle-frame__controls"
138
+ }, /*#__PURE__*/_react.default.createElement("span", {
139
+ onClick: handleBack,
140
+ className: "icon-video-backward ".concat(index <= 0 ? 'disabled' : '')
141
+ }), /*#__PURE__*/_react.default.createElement(_PlayButton.default, {
142
+ canPlay: index < list.length - 1,
143
+ emitPlaying: handlePlaying,
144
+ onClick: function onClick() {
145
+ hideTooltipRef.current = true;
146
+ }
147
+ }), /*#__PURE__*/_react.default.createElement("span", {
148
+ onClick: handleForw,
149
+ className: "icon-video-forward ".concat(index === list.length - 1 ? 'disabled' : '')
150
+ }), /*#__PURE__*/_react.default.createElement("div", {
151
+ className: "puzzle-frame__progress"
152
+ }, /*#__PURE__*/_react.default.createElement("div", {
153
+ style: {
154
+ width: "".concat((index > 0 ? index + 1 : index) * 100 / list.length, "%")
155
+ },
156
+ className: "puzzle-frame__progress--handle"
157
+ }))), showFrames ? /*#__PURE__*/_react.default.createElement("div", {
158
+ className: "puzzle-frame__info"
159
+ }, /*#__PURE__*/_react.default.createElement(_Counter.default, {
160
+ current: Object.values(framesCompleted).length,
161
+ total: totalCorrects,
162
+ tooltip: !hideTooltipRef.current,
163
+ emitEvent: emitEvent
164
+ })) : null));
165
+ };
166
+
167
+ FrameImageClickComponent.defaultProps = {
168
+ description: '',
169
+ context: {},
170
+ nodeId: 0,
171
+ showFrames: false
172
+ };
173
+ var _default = FrameImageClickComponent;
174
+ exports.default = _default;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
13
+
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
+
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
+
28
+ var Playbutton = function Playbutton(_ref) {
29
+ var onClick = _ref.onClick,
30
+ canPlay = _ref.canPlay,
31
+ emitPlaying = _ref.emitPlaying;
32
+
33
+ var _useState = (0, _react.useState)(false),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ play = _useState2[0],
36
+ setPlay = _useState2[1];
37
+
38
+ var _useState3 = (0, _react.useState)(0),
39
+ _useState4 = _slicedToArray(_useState3, 2),
40
+ playingTime = _useState4[0],
41
+ setPlayingTime = _useState4[1];
42
+
43
+ var timeOut = (0, _react.useRef)(null);
44
+
45
+ var playAction = function playAction() {
46
+ if (canPlay) {
47
+ setPlay(!play);
48
+ onClick();
49
+ }
50
+ };
51
+
52
+ (0, _react.useEffect)(function () {
53
+ if (play) {
54
+ timeOut.current = setTimeout(function () {
55
+ setPlayingTime(playingTime + 1);
56
+ emitPlaying();
57
+ }, 2000);
58
+ }
59
+ }, [emitPlaying, play, playingTime]);
60
+ (0, _react.useEffect)(function () {
61
+ if (!canPlay) {
62
+ setPlay(false);
63
+
64
+ if (timeOut.current) {
65
+ clearTimeout(timeOut.current);
66
+ }
67
+ }
68
+ }, [canPlay]);
69
+ return /*#__PURE__*/_react.default.createElement("span", {
70
+ onClick: playAction,
71
+ className: " ".concat(play ? 'icon-pause' : 'icon-play')
72
+ });
73
+ };
74
+
75
+ var _default = Playbutton;
76
+ exports.default = _default;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var Tooltip = function Tooltip(_ref) {
13
+ var emitEvent = _ref.emitEvent;
14
+
15
+ var translate = function translate(id) {
16
+ return emitEvent({
17
+ type: 'translate',
18
+ payload: id
19
+ });
20
+ };
21
+
22
+ return /*#__PURE__*/_react.default.createElement("div", {
23
+ className: "puzzle-frame__info--tooltip"
24
+ }, translate('puzzles.counterTooltip'));
25
+ };
26
+
27
+ var _default = Tooltip;
28
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _FrameClickPuzzleComponent = _interopRequireDefault(require("./components/FrameClickPuzzleComponent"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _FrameClickPuzzleComponent.default;
13
+ exports.default = _default;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mockProps = void 0;
7
+
8
+ var emitEvent = function emitEvent() {
9
+ console.log('Emit event called');
10
+ };
11
+
12
+ var soundActions = [function (sound) {
13
+ console.log('PlaySound called :', sound);
14
+ }, function () {}];
15
+ var mockProps = {
16
+ nodeId: 'xxas',
17
+ description: 'Dale al arma',
18
+ isFrame: true,
19
+ showFrames: true,
20
+ setInfo: function setInfo() {},
21
+ emitEvent: emitEvent,
22
+ soundActions: soundActions,
23
+ disableExit: function disableExit() {},
24
+ setResolveAction: function setResolveAction() {},
25
+ list: [{
26
+ info: {
27
+ hint: {
28
+ active: true,
29
+ desc: 'hint',
30
+ rewards: []
31
+ },
32
+ resolve: {
33
+ rewards: []
34
+ },
35
+ solution: {
36
+ right: {
37
+ desc: 'Estupendo',
38
+ desc_labelId: 'alfalfa01',
39
+ rewards: []
40
+ },
41
+ wrong: {
42
+ desc: 'BUUUU',
43
+ desc_labelId: 'fabada01',
44
+ rewards: [{
45
+ id: 'grade',
46
+ name: 'grade',
47
+ points: -17,
48
+ type: 'grade'
49
+ }]
50
+ }
51
+ },
52
+ instructions: 'instructions'
53
+ },
54
+ itemOrder: 1,
55
+ image: {
56
+ imgName: 'Paz-Vizla-Concept.png',
57
+ img: {
58
+ url: 'https://gl-lms-storage.s3-eu-west-1.amazonaws.com/development/clients/58dccfba26561500117caf53/image/609a9b30901f3e001247c031/Paz-Vizla-Concept.png',
59
+ imgName: 'Paz-Vizla-Concept.png',
60
+ resourceId: '609a9b30901f3e001247c031'
61
+ },
62
+ width: 1920,
63
+ height: 1097
64
+ },
65
+ areas: [{
66
+ name: 'Uno',
67
+ x: 0,
68
+ y: 0,
69
+ fill: 'rgba(255, 255, 255, 0.1)',
70
+ draggable: true,
71
+ points: [1150.0742574257429, 217.48228650990103, 1570.95297029703, 65.42288056930694, 1704.0049504950498, 195.7595142326733, 1576.383663366337, 421.13327660891093, 1247.8267326732675, 510.73971225247533],
72
+ stroke: 'rgb(101,154,93)',
73
+ closed: true
74
+ }],
75
+ badAreas: [{
76
+ id: 'AllArea',
77
+ name: 'BadArea',
78
+ x: 0,
79
+ y: 0,
80
+ fill: 'rgba(255, 255, 255, 0.1)',
81
+ draggable: true,
82
+ points: [0, 0, 1920, 0, 1920, 1097, 0, 1097, 0, 0],
83
+ stroke: '#ff634d',
84
+ strokeWidth: 2,
85
+ closed: true
86
+ }],
87
+ hasClickOrder: false,
88
+ hasHighlights: true
89
+ }, {
90
+ info: {
91
+ hint: {
92
+ active: true,
93
+ desc: 'hint',
94
+ rewards: []
95
+ },
96
+ resolve: {
97
+ rewards: []
98
+ },
99
+ solution: {
100
+ right: {
101
+ desc: 'Estupendo',
102
+ desc_labelId: 'alfalfa01',
103
+ rewards: []
104
+ },
105
+ wrong: {
106
+ desc: 'BUUUU',
107
+ desc_labelId: 'fabada01',
108
+ rewards: [{
109
+ id: 'grade',
110
+ name: 'grade',
111
+ points: -17,
112
+ type: 'grade'
113
+ }]
114
+ }
115
+ },
116
+ instructions: 'instructions'
117
+ },
118
+ itemOrder: 2,
119
+ image: {
120
+ imgName: 'pablo-carpio-slave2.jpeg',
121
+ img: {
122
+ url: 'https://gl-lms-storage.s3-eu-west-1.amazonaws.com/development/clients/58dccfba26561500117caf53/image/609e3d358782ea00116a7eee/pablo-carpio-slave2.jpeg',
123
+ imgName: 'Paz-Vizla-Concept.png',
124
+ resourceId: '609e3d358782ea00116a7eee'
125
+ },
126
+ width: 1920,
127
+ height: 1099
128
+ },
129
+ areas: [{
130
+ name: 'Uno',
131
+ x: 0,
132
+ y: 0,
133
+ fill: 'rgba(68, 215, 171, 0.56)',
134
+ draggable: true,
135
+ points: [1305.4777227722775, 606.8812654702971, 1455.094059405941, 593.2797803217823, 1463.2549504950498, 941.4778001237626, 1346.282178217822, 1012.2055228960397, 1275.5544554455448, 906.1139387376239],
136
+ stroke: 'rgb(101,154,93)',
137
+ closed: true
138
+ }, {
139
+ name: 'Dos',
140
+ x: 0,
141
+ y: 0,
142
+ fill: 'rgba(68, 215, 171, 0.56)',
143
+ draggable: true,
144
+ points: [171.1138613861387, 506.23027537128723, 312.5693069306932, 519.8317605198021, 304.4084158415843, 593.2797803217823, 157.51237623762387, 585.1188892326734],
145
+ stroke: 'rgb(101,154,93)',
146
+ closed: true
147
+ }],
148
+ badAreas: [{
149
+ id: 'AllArea',
150
+ name: 'BadArea',
151
+ x: 0,
152
+ y: 0,
153
+ fill: 'rgba(255, 255, 255, 0.1)',
154
+ draggable: true,
155
+ points: [0, 0, 1920, 0, 1920, 1099, 0, 1099, 0, 0],
156
+ stroke: '#ff634d',
157
+ strokeWidth: 2,
158
+ closed: true
159
+ }],
160
+ hasClickOrder: true,
161
+ hasHighlights: true
162
+ }]
163
+ };
164
+ exports.mockProps = mockProps;
@@ -9,8 +9,12 @@ var emitEvent = function emitEvent() {
9
9
  console.log('Emit event called');
10
10
  };
11
11
 
12
+ var soundActions = [function (sound) {
13
+ console.log('PlaySound called :', sound);
14
+ }, function () {}];
12
15
  var mockProps = {
13
16
  emitEvent: emitEvent,
17
+ soundActions: soundActions,
14
18
  disableExit: function disableExit() {},
15
19
  setResolveAction: function setResolveAction() {},
16
20
  info: {
@@ -114,6 +118,7 @@ var mockProps = {
114
118
  exports.mockProps = mockProps;
115
119
  var mockProps2 = {
116
120
  emitEvent: emitEvent,
121
+ soundActions: soundActions,
117
122
  disableExit: function disableExit() {},
118
123
  setResolveAction: function setResolveAction() {},
119
124
  info: {
@@ -217,6 +222,7 @@ var mockProps2 = {
217
222
  exports.mockProps2 = mockProps2;
218
223
  var mockProps3 = {
219
224
  emitEvent: emitEvent,
225
+ soundActions: soundActions,
220
226
  disableExit: function disableExit() {},
221
227
  setResolveAction: function setResolveAction() {},
222
228
  info: {
@@ -320,6 +326,7 @@ var mockProps3 = {
320
326
  exports.mockProps3 = mockProps3;
321
327
  var mockProps4 = {
322
328
  emitEvent: emitEvent,
329
+ soundActions: soundActions,
323
330
  disableExit: function disableExit() {},
324
331
  setResolveAction: function setResolveAction() {},
325
332
  info: {
@@ -9,11 +9,9 @@ exports.default = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
12
  var _KonvaMapper = _interopRequireDefault(require("./KonvaMapper"));
15
13
 
16
- var _Feedback = _interopRequireDefault(require("./Feedback"));
14
+ var _FeedbackComponent = _interopRequireDefault(require("../../feedback-component/components/FeedbackComponent"));
17
15
 
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
@@ -52,7 +50,7 @@ var defaultImg = 'https://min.gamelearn.io/css-resources/gamelearn/resources/puz
52
50
  var CompletedMessage = function CompletedMessage(_ref) {
53
51
  var text = _ref.text,
54
52
  playSound = _ref.playSound;
55
- return /*#__PURE__*/_react.default.createElement(_Feedback.default, {
53
+ return /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
56
54
  playSound: playSound,
57
55
  text: text,
58
56
  success: true
@@ -71,7 +69,7 @@ var FailedMessage = function FailedMessage(_ref2) {
71
69
  clearTimeout(timeout);
72
70
  };
73
71
  }, [onClose]);
74
- return /*#__PURE__*/_react.default.createElement(_Feedback.default, {
72
+ return /*#__PURE__*/_react.default.createElement(_FeedbackComponent.default, {
75
73
  text: text,
76
74
  playSound: playSound
77
75
  });
@@ -230,6 +228,16 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
230
228
  }
231
229
  };
232
230
 
231
+ var handleOncloseWrongFeedback = (0, _react.useCallback)(function () {
232
+ setShowWrongFeedback(false);
233
+ !!emitEvent && emitEvent({
234
+ type: 'addPoints',
235
+ payload: solution.wrong.rewards,
236
+ finish: false
237
+ });
238
+ console.log('solution.wrong.rewards', solution.wrong.rewards);
239
+ }, [emitEvent, solution]);
240
+
233
241
  var handleAreaClick = function handleAreaClick(area) {
234
242
  if (!clickedZones.some(function (zone) {
235
243
  return zone.index === area.index;
@@ -262,14 +270,7 @@ var ImageClickWrapperComponent = function ImageClickWrapperComponent(props) {
262
270
  className: className
263
271
  }, showWrongFeedback ? /*#__PURE__*/_react.default.createElement(FailedMessage, {
264
272
  playSound: playSound,
265
- onClose: function onClose() {
266
- setShowWrongFeedback(false);
267
- emitEvent({
268
- type: 'addPoints',
269
- payload: info.solution.wrong.rewards,
270
- finish: false
271
- });
272
- },
273
+ onClose: handleOncloseWrongFeedback,
273
274
  text: info.solution.wrong.desc
274
275
  }) : null, completed ? /*#__PURE__*/_react.default.createElement(CompletedMessage, {
275
276
  playSound: playSound,
@@ -311,55 +312,5 @@ ImageClickWrapperComponent.defaultProps = {
311
312
  isLast: true,
312
313
  emitAreaClick: function emitAreaClick() {}
313
314
  };
314
- ImageClickWrapperComponent.propTypes = {
315
- hideContinue: _propTypes.default.bool,
316
- className: _propTypes.default.string,
317
- isLast: _propTypes.default.bool,
318
- list: _propTypes.default.arrayOf(_propTypes.default.shape({
319
- info: _propTypes.default.shape({
320
- instructions: _propTypes.default.string,
321
- solution: _propTypes.default.shape({
322
- title: _propTypes.default.string,
323
- right: _propTypes.default.shape({
324
- rewards: _propTypes.default.arrayOf(_propTypes.default.shape({})),
325
- desc: _propTypes.default.string
326
- }),
327
- wrong: _propTypes.default.shape({
328
- rewards: _propTypes.default.arrayOf(_propTypes.default.shape({})),
329
- desc_labelId: _propTypes.default.string,
330
- desc: _propTypes.default.string
331
- })
332
- }),
333
- hint: _propTypes.default.shape({}),
334
- title: _propTypes.default.string,
335
- resolve: _propTypes.default.shape({})
336
- }),
337
- image: _propTypes.default.shape({
338
- img: _propTypes.default.shape({
339
- imgName: _propTypes.default.string,
340
- imgUurlrl: _propTypes.default.string
341
- }),
342
- imgId: _propTypes.default.string,
343
- width: _propTypes.default.number,
344
- height: _propTypes.default.number
345
- }),
346
- areas: _propTypes.default.arrayOf(_propTypes.default.shape({
347
- id: _propTypes.default.string,
348
- name: _propTypes.default.string,
349
- shape: _propTypes.default.oneOf(['poly', 'rect', 'circle']),
350
- points: _propTypes.default.array
351
- })).isRequired,
352
- badAreas: _propTypes.default.arrayOf(_propTypes.default.shape({
353
- id: _propTypes.default.string,
354
- name: _propTypes.default.string,
355
- shape: _propTypes.default.oneOf(['poly', 'rect', 'circle']),
356
- points: _propTypes.default.array
357
- }))
358
- })),
359
- defaultCompleted: _propTypes.default.bool,
360
- hasClickOrder: _propTypes.default.bool,
361
- hasHighlights: _propTypes.default.bool,
362
- hasImageReview: _propTypes.default.bool
363
- };
364
315
  var _default = ImageClickWrapperComponent;
365
316
  exports.default = _default;
@@ -88,6 +88,7 @@ var mockProps = {
88
88
  exports.mockProps = mockProps;
89
89
  var mockProps2 = {
90
90
  emitEvent: emitEvent,
91
+ soundActions: soundActions,
91
92
  disableExit: function disableExit() {},
92
93
  setResolveAction: function setResolveAction() {},
93
94
  transitionEffects: null,
@@ -161,6 +162,7 @@ var mockProps2 = {
161
162
  exports.mockProps2 = mockProps2;
162
163
  var mockProps3 = {
163
164
  emitEvent: emitEvent,
165
+ soundActions: soundActions,
164
166
  disableExit: function disableExit() {},
165
167
  setResolveAction: function setResolveAction() {},
166
168
  transitionEffects: null,
@@ -234,6 +236,7 @@ var mockProps3 = {
234
236
  exports.mockProps3 = mockProps3;
235
237
  var mockProps4 = {
236
238
  emitEvent: emitEvent,
239
+ soundActions: soundActions,
237
240
  disableExit: function disableExit() {},
238
241
  setResolveAction: function setResolveAction() {},
239
242
  transitionEffects: null,
@@ -143,6 +143,12 @@ Object.defineProperty(exports, "WebBuilderPuzzleComponent", {
143
143
  return _webBuilderPuzzleComponent.default;
144
144
  }
145
145
  });
146
+ Object.defineProperty(exports, "CardsSelectorPuzzleComponent", {
147
+ enumerable: true,
148
+ get: function get() {
149
+ return _cardsSelectorPuzzleComponent.default;
150
+ }
151
+ });
146
152
  Object.defineProperty(exports, "WriterPuzzleComponent", {
147
153
  enumerable: true,
148
154
  get: function get() {
@@ -206,6 +212,8 @@ var _chainedImageClickPuzzleComponent = _interopRequireDefault(require("./chaine
206
212
 
207
213
  var _webBuilderPuzzleComponent = _interopRequireDefault(require("./web-builder-puzzle-component"));
208
214
 
215
+ var _cardsSelectorPuzzleComponent = _interopRequireDefault(require("./cards-selector-puzzle-component"));
216
+
209
217
  var _writerPuzzleComponent = _interopRequireDefault(require("./writer-puzzle-component"));
210
218
 
211
219
  var _terminalPuzzleComponent = _interopRequireDefault(require("./terminal-puzzle-component"));