@gamelearn/arcade-components 2.23.10 → 2.24.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.
@@ -29,14 +29,15 @@ var ResultsComponent = function ResultsComponent(_ref) {
29
29
  var result = _ref.result,
30
30
  time = _ref.time,
31
31
  mandatory = _ref.mandatory,
32
- correctAnswers = _ref.correctAnswers,
32
+ correctQuestions = _ref.correctQuestions,
33
33
  isFirst = _ref.isFirst,
34
34
  reviewTest = _ref.reviewTest,
35
35
  finishTest = _ref.finishTest,
36
36
  restartTest = _ref.restartTest,
37
37
  timeOver = _ref.timeOver,
38
38
  timeOverText = _ref.timeOverText,
39
- emitEvent = _ref.emitEvent;
39
+ emitEvent = _ref.emitEvent,
40
+ minimumPercentage = _ref.minimumPercentage;
40
41
 
41
42
  var _useState = (0, _react.useState)(0),
42
43
  _useState2 = _slicedToArray(_useState, 2),
@@ -48,12 +49,88 @@ var ResultsComponent = function ResultsComponent(_ref) {
48
49
  interval = _useState4[0],
49
50
  saveInterval = _useState4[1];
50
51
 
51
- var correctAnswersChecked = correctAnswers.filter(function (a) {
52
- return result[a.question] && result[a.question].id === a.answer;
53
- }).length;
54
- var totalCorrectAnswers = correctAnswers.length;
55
- var showFinishButton = mandatory ? correctAnswersChecked === totalCorrectAnswers : true;
56
- var showRetryButton = mandatory ? correctAnswersChecked < totalCorrectAnswers : false;
52
+ var _useState5 = (0, _react.useState)([]),
53
+ _useState6 = _slicedToArray(_useState5, 2),
54
+ allCorrectAnswers = _useState6[0],
55
+ setAllCorrectAnswers = _useState6[1];
56
+
57
+ var _useState7 = (0, _react.useState)([]),
58
+ _useState8 = _slicedToArray(_useState7, 2),
59
+ allSelectedCorrectAnswers = _useState8[0],
60
+ setAllSelectedCorrectAnswers = _useState8[1];
61
+
62
+ var _useState9 = (0, _react.useState)([]),
63
+ _useState10 = _slicedToArray(_useState9, 2),
64
+ numberOfQuestionsCorrectlyAnswered = _useState10[0],
65
+ setNumberOfQuestionsCorrectlyAnswered = _useState10[1];
66
+
67
+ var getAllAnswersCorrectFromEditor = (0, _react.useCallback)(function () {
68
+ var valueToReturn = [];
69
+ correctQuestions.forEach(function (el) {
70
+ return valueToReturn.push(el.answers);
71
+ });
72
+ return valueToReturn;
73
+ }, [correctQuestions]);
74
+ var getAllSelectedCorrectAnswers = (0, _react.useCallback)(function () {
75
+ var valueToReturn = [];
76
+ Object.values(result).forEach(function (answers) {
77
+ if (answers.length > 1) {
78
+ var thereAreWrongAnswersSelected = answers.find(function (el) {
79
+ return el.isCorrect === false;
80
+ });
81
+ var multiAnswersPerQuestions = [];
82
+
83
+ if (thereAreWrongAnswersSelected) {
84
+ valueToReturn.push([]);
85
+ } else {
86
+ answers.forEach(function (answer) {
87
+ if (answer.isCorrect) {
88
+ multiAnswersPerQuestions.push(answer.id);
89
+ }
90
+ });
91
+ valueToReturn.push(multiAnswersPerQuestions);
92
+ }
93
+ } else if (answers[0].isCorrect) {
94
+ valueToReturn.push([answers[0].id]);
95
+ } else if (answers[0].isCorrect === false) {
96
+ valueToReturn.push('');
97
+ }
98
+ });
99
+ return valueToReturn;
100
+ }, [result]);
101
+ var getNumberOfQuestionsCorrectlyAnswered = (0, _react.useCallback)(function () {
102
+ var valueToReturn = 0;
103
+
104
+ if (allSelectedCorrectAnswers.length > 0) {
105
+ allCorrectAnswers.forEach(function (question, index) {
106
+ if (question.length > 1) {
107
+ if (question.every(function (answer) {
108
+ return allSelectedCorrectAnswers[index].includes(answer);
109
+ })) {
110
+ valueToReturn += 1;
111
+ }
112
+ } else if (question.length === 1) {
113
+ if (!!allSelectedCorrectAnswers[index] && question[0] === allSelectedCorrectAnswers[index][0]) {
114
+ valueToReturn += 1;
115
+ }
116
+ }
117
+ });
118
+ return valueToReturn;
119
+ }
120
+
121
+ return valueToReturn;
122
+ }, [allCorrectAnswers, allSelectedCorrectAnswers]);
123
+ (0, _react.useEffect)(function () {
124
+ setAllCorrectAnswers(getAllAnswersCorrectFromEditor);
125
+ setAllSelectedCorrectAnswers(getAllSelectedCorrectAnswers);
126
+ setNumberOfQuestionsCorrectlyAnswered(getNumberOfQuestionsCorrectlyAnswered);
127
+ }, [getAllAnswersCorrectFromEditor, getAllSelectedCorrectAnswers, getNumberOfQuestionsCorrectlyAnswered]);
128
+ var totalCorrectAnswers = correctQuestions.length;
129
+ var allIsCorrect = getNumberOfQuestionsCorrectlyAnswered() === totalCorrectAnswers;
130
+ var minimumPercentageNotExceeded = numberOfQuestionsCorrectlyAnswered < minimumPercentage;
131
+ var minimumPercentageExceeded = numberOfQuestionsCorrectlyAnswered >= minimumPercentage;
132
+ console.info('adadf');
133
+ var showFinishButton = !mandatory || minimumPercentageExceeded;
57
134
  var bar = Math.trunc(points / totalCorrectAnswers * 100);
58
135
 
59
136
  var translate = function translate(id, values) {
@@ -64,8 +141,11 @@ var ResultsComponent = function ResultsComponent(_ref) {
64
141
  });
65
142
  };
66
143
 
144
+ var failedColor = {
145
+ '--chart-color': "var(--color-error)"
146
+ };
67
147
  (0, _react.useEffect)(function () {
68
- if (points < correctAnswersChecked) {
148
+ if (points < numberOfQuestionsCorrectlyAnswered) {
69
149
  var timeout = setInterval(function () {
70
150
  setPoints(function (t) {
71
151
  return t + 1;
@@ -78,41 +158,53 @@ var ResultsComponent = function ResultsComponent(_ref) {
78
158
  }
79
159
 
80
160
  return undefined;
81
- }, [correctAnswersChecked, points]);
161
+ }, [numberOfQuestionsCorrectlyAnswered, points]);
82
162
  (0, _react.useEffect)(function () {
83
- if (points >= correctAnswersChecked) {
163
+ if (points >= numberOfQuestionsCorrectlyAnswered) {
84
164
  clearInterval(interval);
85
165
  }
86
- }, [correctAnswersChecked, interval, points]);
166
+ }, [numberOfQuestionsCorrectlyAnswered, interval, points]);
87
167
  return /*#__PURE__*/_react.default.createElement("div", {
88
- className: "test--results"
89
- }, isFirst && correctAnswersChecked === totalCorrectAnswers ? /*#__PURE__*/_react.default.createElement("div", {
168
+ className: "test--results ".concat(minimumPercentageNotExceeded || timeOver || minimumPercentage === 0 && mandatory && !allIsCorrect ? 'test--results--failed' : '')
169
+ }, isFirst && allIsCorrect ? /*#__PURE__*/_react.default.createElement("div", {
90
170
  className: "fireworks"
91
171
  }, /*#__PURE__*/_react.default.createElement("div", {
92
172
  className: "before"
93
173
  }), /*#__PURE__*/_react.default.createElement("div", {
94
174
  className: "after"
95
- })) : null, /*#__PURE__*/_react.default.createElement("div", {
175
+ })) : null, !timeOver && minimumPercentageNotExceeded || !timeOver && minimumPercentage === 0 && mandatory && !allIsCorrect ? /*#__PURE__*/_react.default.createElement("div", {
176
+ className: "test--results__title"
177
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.NotFinishedSuccessfully'))) : null, !timeOver && minimumPercentage > 0 && minimumPercentageExceeded || allIsCorrect ? /*#__PURE__*/_react.default.createElement("div", {
178
+ className: "test--results__title"
179
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.finishedSuccessfully'))) : null, timeOver ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
96
180
  className: "test--results__title"
97
- }, /*#__PURE__*/_react.default.createElement("span", null, timeOver ? timeOverText : translate('tests.finished'))), time ? /*#__PURE__*/_react.default.createElement("div", {
181
+ }, /*#__PURE__*/_react.default.createElement("span", null, timeOverText)), /*#__PURE__*/_react.default.createElement("div", {
98
182
  className: "test--results__time",
99
183
  id: "results-time"
100
- }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.time', time))) : null, /*#__PURE__*/_react.default.createElement("div", {
184
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.time', time)))) : null, minimumPercentage === 0 && !mandatory ? /*#__PURE__*/_react.default.createElement("div", {
185
+ className: "test--results__title"
186
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.finished'))) : null, /*#__PURE__*/_react.default.createElement("div", {
101
187
  className: "chart center chart".concat(bar)
102
188
  }, /*#__PURE__*/_react.default.createElement("div", {
103
189
  className: "chart-slice"
104
190
  }, /*#__PURE__*/_react.default.createElement("div", {
105
- className: "chart-bar"
191
+ className: "chart-bar",
192
+ style: minimumPercentage === 0 && mandatory && !allIsCorrect || minimumPercentageNotExceeded || timeOver ? failedColor : {}
106
193
  }), /*#__PURE__*/_react.default.createElement("div", {
107
- className: "chart-fill"
194
+ className: "chart-fill",
195
+ style: minimumPercentage === 0 && mandatory && !allIsCorrect || minimumPercentageNotExceeded || timeOver ? failedColor : {}
108
196
  })), /*#__PURE__*/_react.default.createElement("span", {
109
197
  className: "chart-value"
110
198
  }, /*#__PURE__*/_react.default.createElement("div", {
111
199
  className: "test--results__chart"
112
200
  }, /*#__PURE__*/_react.default.createElement("span", null, points), /*#__PURE__*/_react.default.createElement("span", null, "/", totalCorrectAnswers)), /*#__PURE__*/_react.default.createElement("div", {
113
201
  className: "test--results__chart--label"
114
- }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.success'))))), /*#__PURE__*/_react.default.createElement("div", {
115
- className: "test--buttons"
202
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.success'))))), minimumPercentage > 0 ? /*#__PURE__*/_react.default.createElement("div", {
203
+ className: "test--results__minimum"
204
+ }, /*#__PURE__*/_react.default.createElement("div", {
205
+ className: "icon-bell"
206
+ }), /*#__PURE__*/_react.default.createElement("div", null, translate('tests.minimumQuestionsMessage'), "\xA0", /*#__PURE__*/_react.default.createElement("strong", null, minimumPercentage))) : null, /*#__PURE__*/_react.default.createElement("div", {
207
+ className: "test--results__buttons"
116
208
  }, !timeOver ? /*#__PURE__*/_react.default.createElement("button", {
117
209
  className: "gat--btn gat--btn__secondary",
118
210
  id: "review-button",
@@ -120,7 +212,7 @@ var ResultsComponent = function ResultsComponent(_ref) {
120
212
  return reviewTest();
121
213
  },
122
214
  type: "button"
123
- }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.review'))) : null, showRetryButton ? /*#__PURE__*/_react.default.createElement("button", {
215
+ }, /*#__PURE__*/_react.default.createElement("span", null, translate('tests.review'))) : null, !showFinishButton ? /*#__PURE__*/_react.default.createElement("button", {
124
216
  className: "gat--btn gat--btn__primary",
125
217
  id: "restart-button",
126
218
  onClick: function onClick() {
@@ -53,11 +53,9 @@ var TestComponent = function TestComponent(_ref) {
53
53
  soundActions = _ref.soundActions,
54
54
  audio = _ref.audio,
55
55
  required = _ref.required,
56
- pause = _ref.pause;
56
+ pause = _ref.pause,
57
+ minimumPercentage = _ref.minimumPercentage;
57
58
  var questions = test.questions;
58
- var indicators = emitEvent({
59
- type: 'loadIndicators'
60
- });
61
59
 
62
60
  var _useState = (0, _react.useState)({}),
63
61
  _useState2 = _slicedToArray(_useState, 2),
@@ -76,8 +74,8 @@ var TestComponent = function TestComponent(_ref) {
76
74
 
77
75
  var _useState7 = (0, _react.useState)([]),
78
76
  _useState8 = _slicedToArray(_useState7, 2),
79
- correctAnswers = _useState8[0],
80
- setCorrectAnswers = _useState8[1];
77
+ correctQuestions = _useState8[0],
78
+ setCorrectQuestions = _useState8[1];
81
79
 
82
80
  var _useState9 = (0, _react.useState)(countdown.time),
83
81
  _useState10 = _slicedToArray(_useState9, 2),
@@ -117,22 +115,61 @@ var TestComponent = function TestComponent(_ref) {
117
115
  var isRequired = required || test.required || false;
118
116
  var rewardedCorrectAnswers = (0, _react.useRef)({});
119
117
 
118
+ var _useState23 = (0, _react.useState)(),
119
+ _useState24 = _slicedToArray(_useState23, 2),
120
+ calculatedMinimum = _useState24[0],
121
+ setCalculateMinimum = _useState24[1];
122
+
120
123
  var _soundActions = _slicedToArray(soundActions, 2),
121
124
  playSound = _soundActions[0],
122
125
  stop = _soundActions[1];
123
126
 
124
- var updateForm = function updateForm(optionSelected, question, index) {
125
- var actualQuestion = _objectSpread(_objectSpread({}, optionSelected), {}, {
127
+ var updateForm = function updateForm(optionSelected, question, index, inputType, answerId) {
128
+ var actualAnswer = _objectSpread(_objectSpread({}, optionSelected), {}, {
126
129
  index: index
127
130
  });
128
131
 
129
132
  if (tries > 0) {
130
- actualQuestion.rewards = actualQuestion.rewards.filter(function (reward) {
133
+ actualAnswer.rewards = actualAnswer.rewards.filter(function (reward) {
131
134
  return !historicAnswers[optionSelected.id] || reward.points < 0;
132
135
  });
133
136
  }
134
137
 
135
- var actualResult = _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, question, actualQuestion));
138
+ if (result[question]) {
139
+ // Check if any answer is checked in order to be able to unchecked it
140
+ var checkIfOptionExisted = result[question].find(function (element) {
141
+ return element.id === answerId;
142
+ });
143
+
144
+ if (checkIfOptionExisted) {
145
+ if (checkIfOptionExisted.id === optionSelected.id) {
146
+ var answerToUnCheck = result[question].find(function (element) {
147
+ return element.id === answerId;
148
+ });
149
+ var indexOfAnswerToUnCheck = result[question].indexOf(answerToUnCheck);
150
+ result[question].splice(indexOfAnswerToUnCheck, 1); // no answers, no run
151
+
152
+ if (result[question].length === 0) {
153
+ answerPage(false);
154
+ return;
155
+ }
156
+ }
157
+ } // if there is already an option checked
158
+ else {
159
+ result[question].push(actualAnswer);
160
+ }
161
+ } // if no option is checked
162
+ else {
163
+ result[question] = [actualAnswer];
164
+ }
165
+
166
+ var actualResult;
167
+
168
+ if (inputType === 'isRadio') {
169
+ actualResult = _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, question, [actualAnswer]));
170
+ } else {
171
+ actualResult = _objectSpread({}, result);
172
+ }
136
173
 
137
174
  setResult(actualResult);
138
175
  setShowingResult(actualResult);
@@ -145,18 +182,28 @@ var TestComponent = function TestComponent(_ref) {
145
182
  playSound(audio.url, 'tts');
146
183
  }
147
184
  }, [playSound, audio]);
148
- (0, _react.useEffect)(function () {
149
- var answers = questions.map(function (q) {
150
- var answer = q.answers.find(function (a) {
151
- return a.isCorrect;
152
- });
153
- return {
154
- question: q.id,
155
- answer: answer.id
156
- };
185
+ var getCorrectQuestions = questions.map(function (q) {
186
+ var allQuestionsWithHisCorrectAnswers = q.answers.filter(function (a) {
187
+ return a.isCorrect;
157
188
  });
158
- setCorrectAnswers(answers);
159
- }, [questions]);
189
+ var correctAnswersPerQuestions = [];
190
+ allQuestionsWithHisCorrectAnswers.forEach(function (el) {
191
+ correctAnswersPerQuestions.push(el.id);
192
+ });
193
+ return {
194
+ question: q.id,
195
+ answers: correctAnswersPerQuestions
196
+ };
197
+ });
198
+ (0, _react.useEffect)(function () {
199
+ setCorrectQuestions(getCorrectQuestions);
200
+ }, [getCorrectQuestions]);
201
+ (0, _react.useEffect)(function () {
202
+ if (minimumPercentage) {
203
+ var calculateMinimum = Math.ceil(questions.length * minimumPercentage / 100);
204
+ setCalculateMinimum(calculateMinimum);
205
+ }
206
+ }, [questions.length, minimumPercentage]);
160
207
  (0, _react.useEffect)(function () {
161
208
  if (time === 0) {
162
209
  clearInterval(interval);
@@ -180,15 +227,17 @@ var TestComponent = function TestComponent(_ref) {
180
227
 
181
228
  var finishTest = function finishTest() {
182
229
  var actualResult = {
183
- correctAnswers: correctAnswers.length,
230
+ correctQuestions: correctQuestions.length,
184
231
  result: result,
185
232
  status: 'resolved'
186
233
  };
187
234
  var resultKeys = Object.keys(result);
188
235
  resultKeys.forEach(function (k) {
189
- if (rewardedCorrectAnswers.current[result[k].id]) {
190
- result[k].rewards = [];
191
- }
236
+ result[k].forEach(function (option) {
237
+ if (rewardedCorrectAnswers.current[option.id]) {
238
+ option.rewards = [];
239
+ }
240
+ });
192
241
  });
193
242
  emitEvent({
194
243
  type: 'saveTest',
@@ -211,17 +260,23 @@ var TestComponent = function TestComponent(_ref) {
211
260
  };
212
261
 
213
262
  var resultAnswers = Object.values(result);
214
- resultAnswers.forEach(function (a) {
215
- if (a.isCorrect) {
216
- if (!rewardedCorrectAnswers.current[a.id]) {
217
- rewardedCorrectAnswers.current[a.id] = true;
218
- } else {
219
- a.rewards = [];
263
+ resultAnswers.forEach(function (question) {
264
+ question.forEach(function (a) {
265
+ if (a.isCorrect) {
266
+ if (!rewardedCorrectAnswers.current[a.id]) {
267
+ rewardedCorrectAnswers.current[a.id] = true;
268
+ } else {
269
+ a.rewards = [];
270
+ }
220
271
  }
221
- }
272
+ });
222
273
  });
223
274
  var rewards = resultAnswers.reduce(function (acc, current) {
224
- return [].concat(_toConsumableArray(acc), _toConsumableArray(current.rewards));
275
+ var valueToReturn = [];
276
+ current.forEach(function (answer) {
277
+ valueToReturn.push(answer.rewards);
278
+ });
279
+ return [].concat(_toConsumableArray(acc), _toConsumableArray(valueToReturn.flat()));
225
280
  }, []);
226
281
 
227
282
  if (timeOver && countdown.rewards) {
@@ -254,7 +309,6 @@ var TestComponent = function TestComponent(_ref) {
254
309
  className: "test--container",
255
310
  dir: "auto"
256
311
  }, view !== 'results' ? /*#__PURE__*/_react.default.createElement(_Container.default, {
257
- type: test.type,
258
312
  result: result,
259
313
  time: time,
260
314
  setTries: setTries,
@@ -269,7 +323,9 @@ var TestComponent = function TestComponent(_ref) {
269
323
  updateForm: updateForm,
270
324
  showResults: showResults,
271
325
  translate: translate,
272
- soundActions: soundActions
326
+ soundActions: soundActions,
327
+ view: view,
328
+ correctQuestions: correctQuestions
273
329
  }) : /*#__PURE__*/_react.default.createElement(_Results.default, {
274
330
  reviewTest: function reviewTest() {
275
331
  changeFirst(false);
@@ -279,16 +335,14 @@ var TestComponent = function TestComponent(_ref) {
279
335
  finishTest: finishTest,
280
336
  time: time,
281
337
  mandatory: isRequired,
282
- type: test.type,
283
338
  restartTest: restartTest,
284
339
  result: result,
285
- showingResult: showingResult,
286
- correctAnswers: correctAnswers,
287
- indicators: indicators,
340
+ correctQuestions: correctQuestions,
288
341
  timeOver: timeOver,
289
342
  timeOverText: countdown.text,
290
343
  emitEvent: emitEvent,
291
- soundActions: soundActions
344
+ soundActions: soundActions,
345
+ minimumPercentage: calculatedMinimum || 0
292
346
  })));
293
347
  };
294
348
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@gamelearn/arcade-components",
3
3
  "author": "Gamelearn",
4
4
  "license": "unlicense",
5
- "version": "2.23.10",
5
+ "version": "2.24.1",
6
6
  "main": "dist/index.js",
7
7
  "files": [
8
8
  "dist",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@babel/runtime": "^7.18.6",
17
- "@gamelearn/arcade-styles": "2.16.1",
17
+ "@gamelearn/arcade-styles": "2.17.1",
18
18
  "@gamelearn/arcade-three-core": "1.24.3",
19
19
  "@react-three/a11y": "^3.0.0",
20
20
  "@react-three/drei": "9.4.3",
@@ -1,143 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _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
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
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
-
20
- 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); }
21
-
22
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
-
24
- 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."); }
25
-
26
- 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); }
27
-
28
- 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; }
29
-
30
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : 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; }
31
-
32
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
-
34
- var defaultBgImageForAudio = 'https://min.gamelearn.io/css-resources/gamelearn/resources/bgAudioPiece.jpg';
35
-
36
- var VideoVisor = function VideoVisor(_ref) {
37
- var documentType = _ref.documentType,
38
- url = _ref.url,
39
- backgroundImage = _ref.backgroundImage,
40
- endVideo = _ref.endVideo;
41
-
42
- var _useState = (0, _react.useState)(),
43
- _useState2 = _slicedToArray(_useState, 2),
44
- videoPlayer = _useState2[0],
45
- setVideo = _useState2[1];
46
-
47
- var isHls = url && url.match(/\.m3u8(\?.+=.+)*$/i) && _hls.default.isSupported();
48
-
49
- var isEmbeddedVideo = url && (url.match(/youtube/i) || url.match(/vimeo/i));
50
- var isAudio = url && (url.match(/.mp3/i) || url.match(/.ogg/i) || url.match(/.wav/i));
51
- var videoProps = {
52
- ref: function ref(videoRef) {
53
- setVideo(videoRef);
54
- },
55
- src: url,
56
- style: {
57
- height: '100%',
58
- width: '100%'
59
- }
60
- };
61
-
62
- var onEnded = function onEnded() {
63
- videoPlayer.pause();
64
-
65
- if (documentType !== 'document' && documentType !== 'lesson') {
66
- endVideo();
67
- }
68
- };
69
-
70
- var onError = function onError() {
71
- endVideo();
72
- };
73
-
74
- (0, _react.useEffect)(function () {
75
- var hls;
76
-
77
- if (videoPlayer) {
78
- if (isHls) {
79
- hls = new _hls.default();
80
- var URL_RAND = "".concat(url, "?v=").concat(Math.floor(Math.random() * 99999999));
81
- hls.loadSource(URL_RAND);
82
- hls.attachMedia(videoPlayer);
83
- }
84
-
85
- return function () {
86
- if (hls) {
87
- hls.destroy();
88
- }
89
-
90
- hls = null;
91
- };
92
- }
93
-
94
- return undefined;
95
- }, [isHls, url, videoPlayer]);
96
- var audioBackgroundImage = backgroundImage || defaultBgImageForAudio;
97
- var CoverOrContain = audioBackgroundImage === defaultBgImageForAudio ? 'cover' : 'contain';
98
- var configForAudio = {
99
- backgroundImage: "url(\"".concat(audioBackgroundImage, "\")"),
100
- backgroundSize: CoverOrContain,
101
- backgroundRepeat: 'no-repeat',
102
- backgroundPosition: 'center center'
103
- };
104
- return /*#__PURE__*/_react.default.createElement("div", {
105
- className: "video media-visor",
106
- style: isAudio ? configForAudio : null
107
- }, !isEmbeddedVideo ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("video", _extends({
108
- onEnded: onEnded,
109
- onError: onError
110
- }, videoProps, {
111
- controls: true,
112
- disablePictureInPicture: true,
113
- controlsList: "nofullscreen nodownload noremoteplayback"
114
- }), /*#__PURE__*/_react.default.createElement("track", {
115
- kind: "captions"
116
- }))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
117
- className: "position--absolute right top z-index1"
118
- }, /*#__PURE__*/_react.default.createElement("div", {
119
- className: "gat--btn__round gat--btn__close",
120
- role: "button",
121
- tabIndex: 0,
122
- onKeyUp: function onKeyUp() {},
123
- "aria-label": "close button",
124
- onClick: endVideo
125
- }, /*#__PURE__*/_react.default.createElement("span", {
126
- className: "icon-close"
127
- }))), /*#__PURE__*/_react.default.createElement("iframe", _extends({
128
- className: "embeddedVideo",
129
- title: "title"
130
- }, videoProps))));
131
- };
132
-
133
- VideoVisor.defaultProps = {
134
- url: '',
135
- name: '',
136
- backgroundImage: null,
137
- documentType: '',
138
- required: false,
139
- viewed: false,
140
- endVideo: function endVideo() {}
141
- };
142
- var _default = VideoVisor;
143
- exports.default = _default;
@@ -1,13 +0,0 @@
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;
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.mockProps = exports.default = void 0;
7
-
8
- /* eslint-disable max-len */
9
- var path = 'https://min.gamelearn.io/statics.triskelion';
10
- var cloudfront = 'https://dszv2c8p7i9xo.cloudfront.net/';
11
- var mockProps = [{
12
- name: 'video',
13
- required: true,
14
- documentType: 'document',
15
- url: "".concat(cloudfront, "10fdf3ba-8bcb-49ef-b6fd-2cdd083b8e0d/hls/radio.m3u8"),
16
- viewed: false
17
- }, {
18
- url: "".concat(path, "/triskelion-statics/videos/ada_hack.mp4")
19
- }, {
20
- url: "https://www.youtube.com/embed/5KcuphEhO8Q"
21
- }, {
22
- url: 'https://player.vimeo.com/video/144094036'
23
- }, {
24
- url: 'https://pokemoncries.com/cries-old/1.mp3'
25
- }, {
26
- imgId: 'https://min.int.gamelearn.io/cooked.gl-lms-storage/clients/58dccfba26561500117caf53/image/60224b7a901f3e0012350158/vista-vertical-torre-eiffel-paris-francia_1258-3169.jpg',
27
- url: 'https://pokemoncries.com/cries-old/1.mp3'
28
- }];
29
- exports.mockProps = mockProps;
30
- var _default = mockProps;
31
- exports.default = _default;