@gamelearn/arcade-components 0.12.0 → 0.14.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 (50) hide show
  1. package/dist/components/arcade-render/loading/LoadingLogic.js +4 -3
  2. package/dist/components/arcade-render/scene/ConfigController.js +70 -4
  3. package/dist/components/arcade-render/scene/index.js +8 -3
  4. package/dist/components/cards-selector-puzzle-component/components/CardsSelectorPuzzleComponent.js +7 -1
  5. package/dist/components/cards-selector-puzzle-component/mocks/mockForStory.js +1 -0
  6. package/dist/components/cartel-component/components/CartelComponent.js +24 -6
  7. package/dist/components/chained-image-click-puzzle-component/components/CurrentImagePuzzle.js +7 -2
  8. package/dist/components/conversational-component/components/ConversationalComponent.js +3 -1
  9. package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +5 -2
  10. package/dist/components/conversational-pro-component/components/SlotList.js +3 -1
  11. package/dist/components/conversational-pro-component/components/scene/Panel.js +4 -3
  12. package/dist/components/conversational-pro-component/components/scene/Panels.js +4 -2
  13. package/dist/components/conversational-pro-component/components/scene/index.js +4 -2
  14. package/dist/components/conversational-pro-component/mocks/mockForStory.js +266 -2
  15. package/dist/components/cracker-puzzle-component/components/CrackerPuzzleComponent.js +11 -21
  16. package/dist/components/cracker-puzzle-component/mocks/mockForStory.js +1 -0
  17. package/dist/components/decision-component/components/DecisionBody.js +0 -2
  18. package/dist/components/decision-component/components/DecisionComponent.js +9 -2
  19. package/dist/components/decision-component/components/Feedback.js +0 -2
  20. package/dist/components/decision-component/mocks/mockForStory.js +20 -6
  21. package/dist/components/frame-click-puzzle-component/components/FrameClickPuzzleComponent.js +0 -1
  22. package/dist/components/frame-click-puzzle-component/components/PlayButton/index.js +2 -2
  23. package/dist/components/hacker-puzzle-component/components/HackerPuzzleComponent.js +6 -8
  24. package/dist/components/hacker-puzzle-component/components/languages.js +2 -1
  25. package/dist/components/hacker-puzzle-component/mocks/mockForStory.js +3 -0
  26. package/dist/components/hanged-puzzle-component/components/HangedPuzzleComponent.js +33 -64
  27. package/dist/components/index.js +8 -0
  28. package/dist/components/inventory-item/components/InventoryItem.js +3 -2
  29. package/dist/components/keyboard-puzzle-component/components/KeyboardPuzzleComponent.js +10 -1
  30. package/dist/components/keyboard-puzzle-component/mocks/mockForStory.js +1 -0
  31. package/dist/components/login-puzzle-component/components/LoginPuzzleComponent.js +6 -0
  32. package/dist/components/login-puzzle-component/mocks/mockForStory.js +1 -0
  33. package/dist/components/media-visor/components/MediaVisor.js +140 -0
  34. package/dist/components/media-visor/index.js +13 -0
  35. package/dist/components/media-visor/mocks/mockForStory.js +27 -0
  36. package/dist/components/pdf-component/components/PdfComponent.js +1 -1
  37. package/dist/components/pdf-component/components/PdfVisor.js +4 -5
  38. package/dist/components/rewards-component/components/RewardsComponent.js +0 -1
  39. package/dist/components/survey-component/components/SurveyComponent.js +13 -8
  40. package/dist/components/terminal-puzzle-component/components/TerminalPuzzleComponent.js +6 -1
  41. package/dist/components/terminal-puzzle-component/mocks/mockForStory.js +1 -0
  42. package/dist/components/web-builder-puzzle-component/components/WebBuilderPuzzleComponent.js +5 -0
  43. package/dist/components/web-builder-puzzle-component/mocks/mockForStory.js +1 -0
  44. package/dist/components/writer-puzzle-component/components/WriterPuzzleComponent.js +7 -6
  45. package/dist/components/writer-puzzle-component/mocks/mockForStory.js +1 -0
  46. package/dist/helpers/deviceDetection.js +13 -0
  47. package/dist/helpers/drawLOD.js +16 -10
  48. package/dist/helpers/index.js +7 -1
  49. package/dist/helpers/useWindowSize.js +56 -0
  50. package/package.json +4 -4
@@ -9,12 +9,8 @@ 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 _utils = require("../utils");
15
13
 
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
14
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
19
15
 
20
16
  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; }
@@ -33,10 +29,6 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
33
29
 
34
30
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
31
 
36
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
37
-
38
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
39
-
40
32
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
41
33
 
42
34
  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."); }
@@ -67,7 +59,7 @@ var AnswerPanel = function AnswerPanel(_ref) {
67
59
  wordIndex += 1;
68
60
  }
69
61
  });
70
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, words.map(function (word, index) {
62
+ return words.map(function (word, index) {
71
63
  return /*#__PURE__*/_react.default.createElement("div", {
72
64
  key: index,
73
65
  className: "puzzle--hanged__word",
@@ -83,12 +75,9 @@ var AnswerPanel = function AnswerPanel(_ref) {
83
75
  className: "puzzle--hanged__letter ".concat(!fixed ? 'active' : '')
84
76
  }, char);
85
77
  }));
86
- }));
78
+ });
87
79
  };
88
80
 
89
- AnswerPanel.propTypes = {
90
- answer: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired
91
- };
92
81
  var defaultImage = 'https://min.gamelearn.io/css-resources/gamelearn/resources/partenon.jpg';
93
82
 
94
83
  var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
@@ -101,8 +90,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
101
90
  image = _ref4.image,
102
91
  info = _ref4.info,
103
92
  answer = _ref4.answer,
104
- hintUsed = _ref4.hintUsed,
105
- props = _objectWithoutProperties(_ref4, ["soundActions", "emitEvent", "disableExit", "question", "image", "info", "answer", "hintUsed"]);
93
+ hintUsed = _ref4.hintUsed;
106
94
 
107
95
  var _soundActions = _slicedToArray(soundActions, 1),
108
96
  playSound = _soundActions[0];
@@ -114,32 +102,36 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
114
102
  poolLetters = _useState2[0],
115
103
  setPoolLetters = _useState2[1];
116
104
 
117
- var _useState3 = (0, _react.useState)([]),
105
+ var _useState3 = (0, _react.useState)(false),
118
106
  _useState4 = _slicedToArray(_useState3, 2),
119
- resolvedAnswer = _useState4[0],
120
- setAnswer = _useState4[1];
107
+ mounted = _useState4[0],
108
+ setMounted = _useState4[1];
121
109
 
122
- var _useState5 = (0, _react.useState)(''),
110
+ var _useState5 = (0, _react.useState)([]),
123
111
  _useState6 = _slicedToArray(_useState5, 2),
124
- resolvedClass = _useState6[0],
125
- setResolveClass = _useState6[1];
112
+ resolvedAnswer = _useState6[0],
113
+ setAnswer = _useState6[1];
126
114
 
127
- var _useState7 = (0, _react.useState)(false),
115
+ var _useState7 = (0, _react.useState)(''),
128
116
  _useState8 = _slicedToArray(_useState7, 2),
129
- failed = _useState8[0],
130
- setFailed = _useState8[1];
117
+ resolvedClass = _useState8[0],
118
+ setResolveClass = _useState8[1];
131
119
 
132
120
  var _useState9 = (0, _react.useState)(false),
133
121
  _useState10 = _slicedToArray(_useState9, 2),
134
- disabled = _useState10[0],
135
- setDisable = _useState10[1];
122
+ failed = _useState10[0],
123
+ setFailed = _useState10[1];
124
+
125
+ var _useState11 = (0, _react.useState)(false),
126
+ _useState12 = _slicedToArray(_useState11, 2),
127
+ disabled = _useState12[0],
128
+ setDisable = _useState12[1];
136
129
 
137
130
  var translatedAnswer = answer.toUpperCase().split('');
138
131
  var answerPanel = translatedAnswer.filter(function (char) {
139
132
  return (0, _utils.restrictCharacters)(char, 'and');
140
133
  });
141
-
142
- var resetPool = function resetPool() {
134
+ var resetPool = (0, _react.useCallback)(function () {
143
135
  var newPool = answerPanel.map(function (char) {
144
136
  return {
145
137
  char: char
@@ -147,20 +139,16 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
147
139
  });
148
140
  var extraPool = [];
149
141
 
150
- if (true) {
151
- //true by default
152
- while (extraPool.length < MAX_EXTRA_LETTERS) {
153
- var char = (0, _utils.makeChar)();
154
- extraPool = [].concat(_toConsumableArray(extraPool), [{
155
- char: char
156
- }]);
157
- }
142
+ while (extraPool.length < MAX_EXTRA_LETTERS) {
143
+ var char = (0, _utils.makeChar)();
144
+ extraPool = [].concat(_toConsumableArray(extraPool), [{
145
+ char: char
146
+ }]);
158
147
  }
159
148
 
160
149
  return [].concat(_toConsumableArray(newPool), _toConsumableArray(extraPool));
161
- };
162
-
163
- var setHiddenAnswer = function setHiddenAnswer() {
150
+ }, [answerPanel]);
151
+ var setHiddenAnswer = (0, _react.useCallback)(function () {
164
152
  var hiddenAnswer = answer.toUpperCase().split('').map(function (char, index) {
165
153
  if ((0, _utils.restrictCharacters)(char, 'or')) {
166
154
  return {
@@ -211,7 +199,7 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
211
199
 
212
200
  setAnswer(hiddenAnswer);
213
201
  setPoolLetters(newPool);
214
- };
202
+ }, [answer, hintUsed, resetPool]);
215
203
 
216
204
  var removedPool = function removedPool(character, ind) {
217
205
  var newPool = poolLetters.map(function (letter, index) {
@@ -349,8 +337,11 @@ var HangedPuzzleComponent = function HangedPuzzleComponent(_ref4) {
349
337
  };
350
338
 
351
339
  (0, _react.useEffect)(function () {
352
- setHiddenAnswer();
353
- }, []);
340
+ if (!mounted) {
341
+ setMounted(true);
342
+ setHiddenAnswer();
343
+ }
344
+ }, [setHiddenAnswer, mounted]);
354
345
  return /*#__PURE__*/_react.default.createElement("div", {
355
346
  className: "puzzle--hanged",
356
347
  style: {
@@ -403,27 +394,5 @@ HangedPuzzleComponent.defaultProps = {
403
394
  hintBought: {}
404
395
  }
405
396
  };
406
- HangedPuzzleComponent.propTypes = {
407
- question: _propTypes.default.string,
408
- answer: _propTypes.default.string,
409
- image: _propTypes.default.shape({
410
- imgId: _propTypes.default.string
411
- }),
412
- hintBought: _propTypes.default.bool,
413
- info: _propTypes.default.shape({
414
- description: _propTypes.default.string,
415
- instructions: _propTypes.default.string,
416
- resolve: _propTypes.default.shape({}),
417
- solution: _propTypes.default.shape({
418
- right: _propTypes.default.shape({
419
- rewards: _propTypes.default.arrayOf(_propTypes.default.shape({}))
420
- }),
421
- wrong: _propTypes.default.shape({
422
- rewards: _propTypes.default.arrayOf(_propTypes.default.shape({}))
423
- })
424
- }),
425
- hintBought: _propTypes.default.shape({})
426
- })
427
- };
428
397
  var _default = HangedPuzzleComponent;
429
398
  exports.default = _default;
@@ -185,6 +185,12 @@ Object.defineProperty(exports, "SurveyComponent", {
185
185
  return _surveyComponent.default;
186
186
  }
187
187
  });
188
+ Object.defineProperty(exports, "MediaVisor", {
189
+ enumerable: true,
190
+ get: function get() {
191
+ return _mediaVisor.default;
192
+ }
193
+ });
188
194
 
189
195
  var _scene = _interopRequireDefault(require("./arcade-render/scene"));
190
196
 
@@ -244,6 +250,8 @@ var _testComponent = _interopRequireDefault(require("./test-component"));
244
250
 
245
251
  var _surveyComponent = _interopRequireDefault(require("./survey-component"));
246
252
 
253
+ var _mediaVisor = _interopRequireDefault(require("./media-visor"));
254
+
247
255
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
248
256
 
249
257
  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; }
@@ -31,7 +31,8 @@ var InventoryItem = function InventoryItem(_ref) {
31
31
  var name = _ref.name,
32
32
  description = _ref.description,
33
33
  element = _ref.element,
34
- onFinish = _ref.onFinish;
34
+ onFinish = _ref.onFinish,
35
+ lodSettings = _ref.lodSettings;
35
36
  var orbit = (0, _react.useRef)();
36
37
 
37
38
  if (!element) {
@@ -52,7 +53,7 @@ var InventoryItem = function InventoryItem(_ref) {
52
53
  camera.fov = 35;
53
54
  camera.updateProjectionMatrix();
54
55
  (0, _helpers.cameraFitAnyObject)(model, camera, null, orbit.current);
55
- (0, _drawLOD.default)(scene, camera);
56
+ (0, _drawLOD.default)(scene, camera, lodSettings);
56
57
  }
57
58
  };
58
59
 
@@ -40,6 +40,7 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
40
40
  keyboard = _ref.keyboard,
41
41
  info = _ref.info,
42
42
  disableExit = _ref.disableExit,
43
+ soundActions = _ref.soundActions,
43
44
  setResolveAction = _ref.setResolveAction;
44
45
 
45
46
  var _useState = (0, _react.useState)(false),
@@ -79,10 +80,14 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
79
80
 
80
81
  var imageURL = ((_image$img = image.img) === null || _image$img === void 0 ? void 0 : _image$img.url) || defaultImage;
81
82
 
83
+ var _soundActions = _slicedToArray(soundActions, 1),
84
+ playSound = _soundActions[0];
85
+
82
86
  var checkPass = function checkPass(current) {
83
87
  if (current === password) {
84
88
  disableExit(false);
85
89
  setPassClass('success');
90
+ playSound('score');
86
91
  setFeedbackResult(true);
87
92
  setFeedBackText(info.solution.right.desc);
88
93
  setFeedbackIsShown(true);
@@ -98,6 +103,7 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
98
103
  setFailed(true);
99
104
  setFeedbackIsShown(true);
100
105
  setPassClass('failed');
106
+ playSound('fail');
101
107
  setFeedbackResult(false);
102
108
  setFeedBackText(info.solution.wrong.desc);
103
109
  setTimeout(function () {
@@ -111,6 +117,7 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
111
117
  (0, _react.useEffect)(function () {
112
118
  setResolveAction(function (resolve) {
113
119
  disableExit(false);
120
+ playSound('score');
114
121
  setPassClass('success');
115
122
  setFeedbackResult(true);
116
123
  setFeedBackText(info.solution.right.desc);
@@ -119,10 +126,11 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
119
126
  resolve();
120
127
  }, 4000);
121
128
  });
122
- }, [setResolveAction, disableExit, info.solution.right.desc]);
129
+ }, [setResolveAction, disableExit, info.solution.right.desc, playSound]);
123
130
 
124
131
  var handleNumbClick = function handleNumbClick(row, col) {
125
132
  var char = keyboard[row][col];
133
+ playSound('click-ui');
126
134
 
127
135
  if (inputPassword.length < password.length + 1) {
128
136
  setInputPassword(inputPassword + char);
@@ -134,6 +142,7 @@ var KeyboardPuzzleComponent = function KeyboardPuzzleComponent(_ref) {
134
142
  };
135
143
 
136
144
  var handleRemoveChar = function handleRemoveChar() {
145
+ playSound('click-ui');
137
146
  setInputPassword(inputPassword.substring(0, inputPassword.length - 1));
138
147
  };
139
148
 
@@ -13,6 +13,7 @@ var mockProps = {
13
13
  emitEvent: emitEvent,
14
14
  disableExit: function disableExit() {},
15
15
  setResolveAction: function setResolveAction() {},
16
+ soundActions: [function () {}, function () {}],
16
17
  password: '1234',
17
18
  keyboard: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['*', '0', '#']],
18
19
  image: {
@@ -31,6 +31,7 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
31
31
  var _image$img;
32
32
 
33
33
  var emitEvent = _ref.emitEvent,
34
+ soundActions = _ref.soundActions,
34
35
  info = _ref.info,
35
36
  user = _ref.user,
36
37
  login = _ref.login,
@@ -74,6 +75,9 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
74
75
  failed = _useState12[0],
75
76
  setFailed = _useState12[1];
76
77
 
78
+ var _soundActions = _slicedToArray(soundActions, 1),
79
+ playSound = _soundActions[0];
80
+
77
81
  var imgURL = ((_image$img = image.img) === null || _image$img === void 0 ? void 0 : _image$img.url) || imagenPorDefecto;
78
82
 
79
83
  var handleFinish = function handleFinish() {
@@ -102,10 +106,12 @@ var LoginPuzzleComponent = function LoginPuzzleComponent(_ref) {
102
106
  setSuccessClass('success');
103
107
  setFinished(true);
104
108
  setErrorMessage(false);
109
+ playSound('score');
105
110
  setTimeout(function () {
106
111
  handleFinish();
107
112
  }, 2000);
108
113
  } else {
114
+ playSound('fail');
109
115
  setFailed(true);
110
116
  setSuccessClass('failed');
111
117
  setErrorMessage(true);
@@ -16,6 +16,7 @@ var emitEvent = function emitEvent(_ref) {
16
16
 
17
17
  var mockProps = {
18
18
  emitEvent: emitEvent,
19
+ soundActions: [function () {}, function () {}],
19
20
  user: 'pepe',
20
21
  password: '1234',
21
22
  login: true,
@@ -0,0 +1,140 @@
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 _hls = _interopRequireDefault(require("hls.js"));
13
+
14
+ require("../styles/MediaVisor.css");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
19
+
20
+ 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; }
21
+
22
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+
24
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
+
26
+ 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."); }
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ 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; }
33
+
34
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
+
36
+ var defaultBgImageForAudio = "https://min.gamelearn.io/css-resources/gamelearn/resources/bgAudioPiece.jpg";
37
+
38
+ var VideoVisor = function VideoVisor(_ref) {
39
+ var documentType = _ref.documentType,
40
+ url = _ref.url,
41
+ imgId = _ref.imgId,
42
+ endVideo = _ref.endVideo;
43
+
44
+ var _useState = (0, _react.useState)(),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ videoPlayer = _useState2[0],
47
+ setVideo = _useState2[1];
48
+
49
+ var isHls = url && url.match(/\.m3u8(\?.+=.+)*$/i) && _hls.default.isSupported();
50
+
51
+ var isEmbeddedVideo = url && (url.match(/youtube/i) || url.match(/vimeo/i));
52
+ var isAudio = url && (url.match(/.mp3/i) || url.match(/.ogg/i) || url.match(/.wav/i));
53
+ var videoProps = {
54
+ ref: function ref(videoRef) {
55
+ setVideo(videoRef);
56
+ },
57
+ src: url,
58
+ style: {
59
+ height: "100%",
60
+ width: "100%"
61
+ }
62
+ };
63
+
64
+ var onEnded = function onEnded() {
65
+ videoPlayer.pause();
66
+
67
+ if (documentType !== "document" && documentType !== "lesson") {
68
+ endVideo();
69
+ }
70
+ };
71
+
72
+ var onError = function onError() {
73
+ endVideo();
74
+ };
75
+
76
+ (0, _react.useEffect)(function () {
77
+ var hls;
78
+
79
+ if (videoPlayer) {
80
+ if (isHls) {
81
+ hls = new _hls.default();
82
+ var URL_RAND = "".concat(url, "?v=").concat(Math.floor(Math.random() * 99999999));
83
+ hls.loadSource(URL_RAND);
84
+ hls.attachMedia(videoPlayer);
85
+ }
86
+
87
+ return function () {
88
+ if (hls) {
89
+ hls.destroy();
90
+ }
91
+
92
+ hls = null;
93
+ };
94
+ }
95
+
96
+ return undefined;
97
+ }, [isHls, url, videoPlayer]);
98
+ var audioBackgroundImage = imgId || defaultBgImageForAudio;
99
+ var CoverOrContain = audioBackgroundImage === defaultBgImageForAudio ? "cover" : "contain";
100
+ var configForAudio = {
101
+ backgroundImage: "url(\"".concat(audioBackgroundImage, "\")"),
102
+ backgroundSize: CoverOrContain,
103
+ backgroundRepeat: "no-repeat",
104
+ backgroundPosition: "center center"
105
+ };
106
+ console.log('re-render control');
107
+ return /*#__PURE__*/_react.default.createElement("div", {
108
+ className: "video media-visor",
109
+ style: isAudio ? configForAudio : null
110
+ }, !isEmbeddedVideo ? /*#__PURE__*/_react.default.createElement("video", _extends({
111
+ onEnded: onEnded,
112
+ onError: onError
113
+ }, videoProps, {
114
+ controls: true,
115
+ disablePictureInPicture: true,
116
+ controlsList: "nofullscreen nodownload noremoteplayback"
117
+ })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
118
+ className: "position--absolute right top z-index1"
119
+ }, /*#__PURE__*/_react.default.createElement("div", {
120
+ className: "gat--btn__round",
121
+ onClick: endVideo
122
+ }, /*#__PURE__*/_react.default.createElement("span", {
123
+ className: "icon-close"
124
+ }))), /*#__PURE__*/_react.default.createElement("iframe", _extends({
125
+ className: "embeddedVideo",
126
+ title: "title"
127
+ }, videoProps))));
128
+ };
129
+
130
+ VideoVisor.defaultProps = {
131
+ url: "",
132
+ name: "",
133
+ imgId: null,
134
+ documentType: "",
135
+ required: false,
136
+ viewed: false,
137
+ endVideo: function endVideo() {}
138
+ };
139
+ var _default = VideoVisor;
140
+ 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 _MediaVisor = _interopRequireDefault(require("./components/MediaVisor"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _MediaVisor.default;
13
+ exports.default = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mockProps = void 0;
7
+ var path = 'https://min.gamelearn.io/statics.triskelion';
8
+ var cloudfront = 'https://dszv2c8p7i9xo.cloudfront.net/';
9
+ var mockProps = [{
10
+ name: 'video',
11
+ required: true,
12
+ documentType: 'document',
13
+ url: "".concat(cloudfront, "10fdf3ba-8bcb-49ef-b6fd-2cdd083b8e0d/hls/radio.m3u8"),
14
+ viewed: false
15
+ }, {
16
+ url: "".concat(path, "/triskelion-statics/videos/ada_hack.mp4")
17
+ }, {
18
+ url: "https://www.youtube.com/embed/5KcuphEhO8Q"
19
+ }, {
20
+ url: 'https://player.vimeo.com/video/144094036'
21
+ }, {
22
+ url: 'https://pokemoncries.com/cries-old/1.mp3'
23
+ }, {
24
+ imgId: 'https://min.int.gamelearn.io/cooked.gl-lms-storage/clients/58dccfba26561500117caf53/image/60224b7a901f3e0012350158/vista-vertical-torre-eiffel-paris-francia_1258-3169.jpg',
25
+ url: 'https://pokemoncries.com/cries-old/1.mp3'
26
+ }];
27
+ exports.mockProps = mockProps;
@@ -81,7 +81,7 @@ var PdfComponent = function PdfComponent(_ref) {
81
81
  if (!required) {
82
82
  setcloseVisible(true);
83
83
  }
84
- }, [visible, emitFinish]);
84
+ }, [visible, emitFinish, required]);
85
85
 
86
86
  if (!visible) {
87
87
  return null;
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
+ var _deviceDetection = require("../../../helpers/deviceDetection");
13
+
12
14
  var _reactPdf = require("react-pdf");
13
15
 
14
16
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
@@ -50,16 +52,13 @@ var PdfVisor = function PdfVisor(_ref) {
50
52
  currentPage = _useState6[0],
51
53
  setCurrentPage = _useState6[1];
52
54
 
53
- var isMobile = (0, _react.useMemo)(function () {
54
- return navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i);
55
- }, []);
56
- var scale = isMobile ? 1 : 2;
55
+ var scale = (0, _deviceDetection.DeviceDetection)() ? 1 : 2;
57
56
  var handleLoadSucess = (0, _react.useCallback)(function (pdf) {
58
57
  setPages(pdf.numPages);
59
58
 
60
59
  var timeOut = function timeOut() {
61
60
  setTimeout(function () {
62
- if (scrollElement.current.scrollHeight <= scrollElement.current.offsetHeight) {
61
+ if (scrollElement.current && scrollElement.current.scrollHeight <= scrollElement.current.offsetHeight) {
63
62
  setOverlay(false);
64
63
  }
65
64
  }, 1000);
@@ -39,7 +39,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
39
 
40
40
  var RewardsComponent = function RewardsComponent(_ref) {
41
41
  var rewards = _ref.rewards,
42
- addPoints = _ref.addPoints,
43
42
  emitEvent = _ref.emitEvent;
44
43
  var carouselRef = (0, _react.useRef)();
45
44
  var indicators = emitEvent({
@@ -41,16 +41,20 @@ var INIT_SURVEY = {
41
41
  };
42
42
  var PAGES = [{
43
43
  component: _ApplicableBox.default,
44
- id: 'applicable'
44
+ id: 'applicable',
45
+ disableContinue: true
45
46
  }, {
46
47
  component: _OpinionBox.default,
47
- id: 'opinion'
48
+ id: 'opinion',
49
+ disableContinue: true
48
50
  }, {
49
51
  component: _TextBox.default,
50
- id: 'comments'
52
+ id: 'comments',
53
+ disableContinue: true
51
54
  }, {
52
55
  component: _TextBox.default,
53
- id: 'suggestions'
56
+ id: 'suggestions',
57
+ disableContinue: false
54
58
  }];
55
59
 
56
60
  var SurveyComponent = function SurveyComponent(_ref) {
@@ -84,8 +88,9 @@ var SurveyComponent = function SurveyComponent(_ref) {
84
88
  });
85
89
  };
86
90
 
87
- var nextPage = function nextPage() {
88
- disable(true);
91
+ var changePage = function changePage() {
92
+ var nextPage = PAGES[page + 1];
93
+ disable(nextPage ? nextPage.disableContinue : true);
89
94
  setPage(page + 1);
90
95
  };
91
96
 
@@ -119,7 +124,7 @@ var SurveyComponent = function SurveyComponent(_ref) {
119
124
  id: "survey-button",
120
125
  type: "button",
121
126
  onClick: function onClick() {
122
- return disabled ? null : nextPage();
127
+ return disabled ? null : changePage();
123
128
  },
124
129
  className: "gat--btn__navigation"
125
130
  }, /*#__PURE__*/_react.default.createElement("span", {
@@ -131,7 +136,7 @@ var SurveyComponent = function SurveyComponent(_ref) {
131
136
  if (!finished) {
132
137
  finish();
133
138
  emitEvent({
134
- type: 'survey',
139
+ type: 'saveSurvey',
135
140
  payload: survey
136
141
  });
137
142
  }
@@ -65,7 +65,8 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
65
65
  backgroundImage = _ref.backgroundImage,
66
66
  solution = _ref.solution,
67
67
  info = _ref.info,
68
- disableExit = _ref.disableExit;
68
+ disableExit = _ref.disableExit,
69
+ soundActions = _ref.soundActions;
69
70
 
70
71
  // todo: PREPROCESS BACKGROUND IMAGE IN ARCADE
71
72
  var _useState = (0, _react.useState)({}),
@@ -82,6 +83,9 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
82
83
  breadcrumb = _useState6[0],
83
84
  setBreadcrumb = _useState6[1];
84
85
 
86
+ var _soundActions = _slicedToArray(soundActions, 1),
87
+ playSound = _soundActions[0];
88
+
85
89
  var translate = function translate(id) {
86
90
  return emitEvent({
87
91
  type: 'translate',
@@ -126,6 +130,7 @@ var TerminalPuzzleComponent = function TerminalPuzzleComponent(_ref) {
126
130
  };
127
131
 
128
132
  var resolvePuzzle = function resolvePuzzle() {
133
+ playSound('score');
129
134
  emitEvent({
130
135
  type: 'addPoints',
131
136
  payload: info.solution.right.rewards
@@ -17,6 +17,7 @@ var disableExit = function disableExit(p) {
17
17
  var mockProps = {
18
18
  emitEvent: emitEvent,
19
19
  disableExit: disableExit,
20
+ soundActions: [function () {}, function () {}],
20
21
  items: [{
21
22
  children: [{
22
23
  children: [{