@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
@@ -76,6 +76,7 @@ var WebBuilderPuzzleComponent = function WebBuilderPuzzleComponent(_ref) {
76
76
  info = _ref.info,
77
77
  emitEvent = _ref.emitEvent,
78
78
  setResolveAction = _ref.setResolveAction,
79
+ soundActions = _ref.soundActions,
79
80
  disableExit = _ref.disableExit;
80
81
 
81
82
  var _useState = (0, _react.useState)(false),
@@ -129,6 +130,9 @@ var WebBuilderPuzzleComponent = function WebBuilderPuzzleComponent(_ref) {
129
130
  body = _useState18[0],
130
131
  setBody = _useState18[1];
131
132
 
133
+ var _soundActions = _slicedToArray(soundActions, 1),
134
+ playSound = _soundActions[0];
135
+
132
136
  var translate = function translate(id) {
133
137
  return emitEvent({
134
138
  type: 'translate',
@@ -168,6 +172,7 @@ var WebBuilderPuzzleComponent = function WebBuilderPuzzleComponent(_ref) {
168
172
  if (info.solution) {
169
173
  var rewards = info.solution.right.rewards;
170
174
  var wrongRewards = info.solution.wrong.rewards;
175
+ playSound(failed ? 'fail' : 'score');
171
176
  emitEvent({
172
177
  type: 'addPoints',
173
178
  payload: failed ? rewards : wrongRewards
@@ -22,6 +22,7 @@ var mockProps = {
22
22
  wrong: {}
23
23
  }
24
24
  },
25
+ soundActions: [function () {}, function () {}],
25
26
  emitEvent: emitEvent,
26
27
  setResolveAction: noop,
27
28
  disableExit: noop
@@ -51,10 +51,6 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
51
51
 
52
52
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
53
53
 
54
- 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; }
55
-
56
- 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; }
57
-
58
54
  var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
59
55
  var emitEvent = _ref.emitEvent,
60
56
  info = _ref.info,
@@ -65,7 +61,7 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
65
61
  type = _ref.type,
66
62
  documentTitle = _ref.documentTitle,
67
63
  texts = _ref.texts,
68
- props = _objectWithoutProperties(_ref, ["emitEvent", "info", "styles", "nodeId", "retry", "skip", "type", "documentTitle", "texts"]);
64
+ soundActions = _ref.soundActions;
69
65
 
70
66
  var translate = function translate(id) {
71
67
  return emitEvent({
@@ -144,6 +140,9 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
144
140
  disableExit = _useState27[0],
145
141
  setDisableExit = _useState27[1];
146
142
 
143
+ var _soundActions = _slicedToArray(soundActions, 1),
144
+ playSound = _soundActions[0];
145
+
147
146
  (0, _react.useEffect)(function () {
148
147
  if (finished) {
149
148
  setDisableExit(false);
@@ -238,7 +237,7 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
238
237
  var handleLectures = function handleLectures() {
239
238
  var text = createLecture();
240
239
  emitEvent({
241
- type: 'finishLecture??',
240
+ type: 'finishLecture',
242
241
  payload: {
243
242
  name: documentTitle,
244
243
  text: text,
@@ -269,8 +268,10 @@ var WriterPuzzleComponent = function WriterPuzzleComponent(_ref) {
269
268
  var pointsToEmit = [];
270
269
 
271
270
  if (failed) {
271
+ playSound('fail');
272
272
  pointsToEmit = accumulatedRewards;
273
273
  } else {
274
+ playSound(AllDecisionsCorrect ? 'score' : 'fail');
274
275
  pointsToEmit = AllDecisionsCorrect ? rightRewards : wrongRewards;
275
276
  }
276
277
 
@@ -83,6 +83,7 @@ var messages = {
83
83
  exports.messages = messages;
84
84
  var mock = {
85
85
  emitEvent: emitEvent,
86
+ soundActions: [function () {}, function () {}],
86
87
  texts: [{
87
88
  type: 'fixed',
88
89
  fullText: messages.fullText1
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DeviceDetection = void 0;
7
+
8
+ var DeviceDetection = function DeviceDetection() {
9
+ return navigator.userAgent.match(/(android)/i) || ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || // iPad on iOS 13 detection
10
+ navigator.userAgent.includes('Mac') && 'ontouchend' in document;
11
+ };
12
+
13
+ exports.DeviceDetection = DeviceDetection;
@@ -111,7 +111,7 @@ var materialize = function materialize(params, lod) {
111
111
  if (doneLods >= totalLods) {
112
112
  if (progressiveMode) {
113
113
  var currentIndex = progressiveOrder.indexOf(lod);
114
- var lastIndex = progressiveOrder.indexOf(currentLOD);
114
+ var lastIndex = progressiveOrder.indexOf(params._currentLOD);
115
115
 
116
116
  if (currentIndex < lastIndex) {
117
117
  materialize(params, progressiveOrder[currentIndex + 1]);
@@ -132,7 +132,7 @@ var materialize = function materialize(params, lod) {
132
132
  return response.json();
133
133
  }).then(function (materials) {
134
134
  elem.traverse(function (obj) {
135
- if ((obj.isMesh || obj.isSkinnedMesh) && (!obj.material._isDone || !obj.material._isDone[lod])) {
135
+ if ((obj.isMesh || obj.isSkinnedMesh) && (!obj.material._isDone || !obj.material._isDone[lod] || params._forceRender)) {
136
136
  obj.material.wireframe = false;
137
137
  if (!obj.material._isDone) obj.material._isDone = {};
138
138
  obj.material._isDone[lod] = true;
@@ -141,13 +141,13 @@ var materialize = function materialize(params, lod) {
141
141
  materials[obj.material.name].forEach(function (item) {
142
142
  var imgSrc = "".concat(elem.userData.url, ".textures.").concat(lod, ".").concat(item.positionInArray, ".png");
143
143
  imgLoader.load(imgSrc, function (result) {
144
- if (showStats) {
144
+ if (params._showStats) {
145
145
  statsTextures(lod, imgSrc, result);
146
146
  }
147
147
 
148
148
  obj.material[item.key].image = result;
149
149
 
150
- if (rgbSimulation) {
150
+ if (params._rgbSimulation) {
151
151
  var image;
152
152
 
153
153
  switch (lod) {
@@ -188,7 +188,7 @@ var updateSceneLods = function updateSceneLods(params) {
188
188
  if (progressiveMode) {
189
189
  materialize(params, progressiveOrder[0]);
190
190
  } else {
191
- materialize(params, currentLOD);
191
+ materialize(params, params._currentLOD);
192
192
  }
193
193
  }
194
194
  };
@@ -201,7 +201,7 @@ var invalidateOutOfFrustum = function invalidateOutOfFrustum(params) {
201
201
 
202
202
  elem.bbox = bbox;
203
203
 
204
- if (showHelpers) {
204
+ if (params._showHelpers) {
205
205
  var boundingHelper = new THREE.Box3Helper(bbox, insideFrustum ? 0x00ff00 : 0xff0000);
206
206
 
207
207
  params._helpers.add(boundingHelper);
@@ -219,7 +219,7 @@ var checkDistances = function checkDistances(params) {
219
219
  var distance = params._camera.position.distanceTo(center) - bsphere.radius;
220
220
  elem.distanceToCam = distance;
221
221
 
222
- if (showHelpers) {
222
+ if (params._showHelpers) {
223
223
  var sphere = new THREE.Mesh(new THREE.SphereGeometry(bsphere.radius, 32, 32), new THREE.MeshStandardMaterial({
224
224
  color: 0xffffff,
225
225
  opacity: 0.3,
@@ -277,7 +277,7 @@ var setTexturableElements = function setTexturableElements(params) {
277
277
  reset: true
278
278
  });
279
279
 
280
- if (showStats) {
280
+ if (params._showStats) {
281
281
  statsGeometries(params);
282
282
  }
283
283
  };
@@ -292,7 +292,7 @@ var getHelpers = function getHelpers(scene) {
292
292
  return helper;
293
293
  };
294
294
 
295
- var drawLOD = function drawLOD(scene, camera) {
295
+ var drawLOD = function drawLOD(scene, camera, settings) {
296
296
  var currentCamera = camera;
297
297
 
298
298
  if (!currentCamera.parent) {
@@ -306,6 +306,12 @@ var drawLOD = function drawLOD(scene, camera) {
306
306
  }
307
307
 
308
308
  var params = {};
309
+ params._currentLOD = settings !== null && settings !== void 0 && settings.currentLOD ? settings.currentLOD : currentLOD;
310
+ params._rgbSimulation = settings !== null && settings !== void 0 && settings.rgbSimulation ? settings.rgbSimulation : rgbSimulation;
311
+ params._showHelpers = settings !== null && settings !== void 0 && settings.showHelpers ? settings.showHelpers : showHelpers;
312
+ params._showStats = settings !== null && settings !== void 0 && settings.showStats ? settings.showStats : showStats;
313
+ params._forceRender = (scene === null || scene === void 0 ? void 0 : scene.lastLOD) !== (settings === null || settings === void 0 ? void 0 : settings.currentLOD);
314
+ scene.lastLOD = settings === null || settings === void 0 ? void 0 : settings.currentLOD;
309
315
  params._texturesFrustum = texturesFrustum;
310
316
  params._texturesDistance = texturesDistance;
311
317
  params._scene = scene;
@@ -333,7 +339,7 @@ var drawLOD = function drawLOD(scene, camera) {
333
339
  params._texturesFrustum = params._texturesDistance = false;
334
340
  }
335
341
 
336
- if (showHelpers) {
342
+ if (params._showHelpers) {
337
343
  var helper = new THREE.CameraHelper(params._camera.clone());
338
344
 
339
345
  params._helpers.add(helper);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getObjectPosition = exports.cameraFitAnyObject = exports.usePrevious = exports.formatMessage = void 0;
6
+ exports.getObjectPosition = exports.cameraFitAnyObject = exports.roundFloat = exports.usePrevious = exports.formatMessage = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
@@ -30,6 +30,12 @@ var usePrevious = function usePrevious(value) {
30
30
 
31
31
  exports.usePrevious = usePrevious;
32
32
 
33
+ var roundFloat = function roundFloat(number, decimals) {
34
+ return parseFloat(number.toFixed(decimals));
35
+ };
36
+
37
+ exports.roundFloat = roundFloat;
38
+
33
39
  var cameraFitAnyObject = function cameraFitAnyObject(object, camera) {
34
40
  var uOff = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
35
41
  var controls = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useWindowSize = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
+
12
+ 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."); }
13
+
14
+ 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); }
15
+
16
+ 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; }
17
+
18
+ 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; }
19
+
20
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
+
22
+ 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); }
23
+
24
+ // Hook
25
+ var useWindowSize = function useWindowSize() {
26
+ var isClient = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object';
27
+
28
+ var _useState = (0, _react.useState)({
29
+ width: isClient ? window.innerWidth : undefined,
30
+ height: isClient ? window.innerHeight : undefined
31
+ }),
32
+ _useState2 = _slicedToArray(_useState, 2),
33
+ windowSize = _useState2[0],
34
+ setWindowSize = _useState2[1];
35
+
36
+ (0, _react.useEffect)(function () {
37
+ if (!isClient) {
38
+ return false;
39
+ }
40
+
41
+ function handleResize() {
42
+ setWindowSize({
43
+ width: isClient ? window.innerWidth : undefined,
44
+ height: isClient ? window.innerHeight : undefined
45
+ });
46
+ }
47
+
48
+ window.addEventListener('resize', handleResize);
49
+ return function () {
50
+ return window.removeEventListener('resize', handleResize);
51
+ };
52
+ }, [isClient]);
53
+ return windowSize;
54
+ };
55
+
56
+ exports.useWindowSize = useWindowSize;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gamelearn/arcade-components",
3
3
  "license": "Gamelearn",
4
- "version": "0.12.0",
4
+ "version": "0.14.1",
5
5
  "main": "dist/index.js",
6
6
  "files": [
7
7
  "dist",
@@ -12,8 +12,8 @@
12
12
  "url": "https://github.com/gamelearn/arcade-components"
13
13
  },
14
14
  "dependencies": {
15
- "@react-three/drei": "^5.3.1",
16
- "@react-three/fiber": "6.0.16",
15
+ "@react-three/drei": "6.1.1",
16
+ "@react-three/fiber": "6.2.3",
17
17
  "@testing-library/jest-dom": "5.11.4",
18
18
  "@testing-library/react": "11.1.0",
19
19
  "@testing-library/user-event": "12.1.10",
@@ -76,4 +76,4 @@
76
76
  "^react-pdf$": "react-pdf/dist/umd/entry.jest"
77
77
  }
78
78
  }
79
- }
79
+ }