@gamelearn/arcade-components 0.2.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 (107) hide show
  1. package/README.md +53 -0
  2. package/dist/components/arcade-render/background/index.js +33 -0
  3. package/dist/components/arcade-render/background/scene-elements/customGeometry/index.js +46 -0
  4. package/dist/components/arcade-render/background/scene-elements/index.js +90 -0
  5. package/dist/components/arcade-render/element/AnimateElement.js +60 -0
  6. package/dist/components/arcade-render/element/Projection.js +38 -0
  7. package/dist/components/arcade-render/element/index.js +134 -0
  8. package/dist/components/arcade-render/elements-list/ClickableArea.js +76 -0
  9. package/dist/components/arcade-render/elements-list/Poster.js +80 -0
  10. package/dist/components/arcade-render/elements-list/index.js +152 -0
  11. package/dist/components/arcade-render/light/index.js +33 -0
  12. package/dist/components/arcade-render/light/useLight.js +51 -0
  13. package/dist/components/arcade-render/loading/Loading.js +55 -0
  14. package/dist/components/arcade-render/loading/LoadingLogic.js +54 -0
  15. package/dist/components/arcade-render/loading/index.js +21 -0
  16. package/dist/components/arcade-render/mocks/index.js +12 -0
  17. package/dist/components/arcade-render/scene/index.js +152 -0
  18. package/dist/components/cartel-component/components/CartelComponent.js +102 -0
  19. package/dist/components/cartel-component/index.js +13 -0
  20. package/dist/components/comic-component/components/ComicComponent.js +106 -0
  21. package/dist/components/comic-component/components/Slide.js +74 -0
  22. package/dist/components/comic-component/components/Vignette.js +29 -0
  23. package/dist/components/comic-component/index.js +13 -0
  24. package/dist/components/comic-component/mocks/mockForStory.js +58 -0
  25. package/dist/components/conversational-component/components/ConversationalComponent.js +116 -0
  26. package/dist/components/conversational-component/index.js +13 -0
  27. package/dist/components/conversational-pro-component/components/ConversationalProComponent.js +226 -0
  28. package/dist/components/conversational-pro-component/components/Message.js +42 -0
  29. package/dist/components/conversational-pro-component/components/Slot.js +67 -0
  30. package/dist/components/conversational-pro-component/components/SlotList.js +112 -0
  31. package/dist/components/conversational-pro-component/components/scene/Panel.js +114 -0
  32. package/dist/components/conversational-pro-component/components/scene/Panels.js +35 -0
  33. package/dist/components/conversational-pro-component/components/scene/index.js +90 -0
  34. package/dist/components/conversational-pro-component/index.js +13 -0
  35. package/dist/components/conversational-pro-component/mocks/mockForStory.js +591 -0
  36. package/dist/components/cracker-puzzle-component/components/CrackerPuzzleComponent.js +316 -0
  37. package/dist/components/cracker-puzzle-component/components/DrawGrid/index.js +44 -0
  38. package/dist/components/cracker-puzzle-component/components/DrawItem/index.js +53 -0
  39. package/dist/components/cracker-puzzle-component/components/DrawRow/index.js +48 -0
  40. package/dist/components/cracker-puzzle-component/components/colors.js +12 -0
  41. package/dist/components/cracker-puzzle-component/components/helpers.js +168 -0
  42. package/dist/components/cracker-puzzle-component/index.js +13 -0
  43. package/dist/components/cracker-puzzle-component/mocks/mockForStory.js +219 -0
  44. package/dist/components/decision-component/components/DecisionBody.js +167 -0
  45. package/dist/components/decision-component/components/DecisionComponent.js +231 -0
  46. package/dist/components/decision-component/components/Feedback.js +83 -0
  47. package/dist/components/decision-component/components/Options.js +37 -0
  48. package/dist/components/decision-component/components/Rewards.js +203 -0
  49. package/dist/components/decision-component/index.js +13 -0
  50. package/dist/components/decision-component/mocks/mockForStory.js +43 -0
  51. package/dist/components/hacker-puzzle-component/components/HackerPuzzleComponent.js +294 -0
  52. package/dist/components/hacker-puzzle-component/components/languages.js +12 -0
  53. package/dist/components/hacker-puzzle-component/index.js +13 -0
  54. package/dist/components/hacker-puzzle-component/mocks/mockForStory.js +101 -0
  55. package/dist/components/image-component/components/ImageComponent.js +66 -0
  56. package/dist/components/image-component/index.js +13 -0
  57. package/dist/components/image-component/mocks/mockForStory.js +50 -0
  58. package/dist/components/index.js +163 -0
  59. package/dist/components/inventory-item/components/InventoryItem.js +100 -0
  60. package/dist/components/inventory-item/index.js +13 -0
  61. package/dist/components/inventory-item/mocks/mockForStory.js +28 -0
  62. package/dist/components/keyboard-puzzle-component/components/FeedbackMessage.js +30 -0
  63. package/dist/components/keyboard-puzzle-component/components/KeyboardPuzzleComponent.js +160 -0
  64. package/dist/components/keyboard-puzzle-component/index.js +13 -0
  65. package/dist/components/keyboard-puzzle-component/mocks/mockForStory.js +36 -0
  66. package/dist/components/lectures-component/components/LectureButtons.js +50 -0
  67. package/dist/components/lectures-component/components/LecturesComponent.js +140 -0
  68. package/dist/components/lectures-component/index.js +13 -0
  69. package/dist/components/lectures-component/mocks/mockForStory.js +22 -0
  70. package/dist/components/login-puzzle-component/components/LoginPuzzleComponent.js +170 -0
  71. package/dist/components/login-puzzle-component/index.js +13 -0
  72. package/dist/components/login-puzzle-component/mocks/mockForStory.js +38 -0
  73. package/dist/components/notice-component/components/NoticeComponent.js +61 -0
  74. package/dist/components/notice-component/index.js +13 -0
  75. package/dist/components/notice-component/mocks/mockForStory.js +20 -0
  76. package/dist/components/pdf-component/components/PdfComponent.js +79 -0
  77. package/dist/components/pdf-component/components/PdfVisor.js +84 -0
  78. package/dist/components/pdf-component/index.js +23 -0
  79. package/dist/components/pdf-component/mocks/mockForProps.js +23 -0
  80. package/dist/components/pikachu-component/components/PikachuComponent.js +24 -0
  81. package/dist/components/pikachu-component/index.js +13 -0
  82. package/dist/components/pikachu-component/mocks/mockForStory.js +15 -0
  83. package/dist/components/url-component/components/UrlComponent.js +92 -0
  84. package/dist/components/url-component/index.js +13 -0
  85. package/dist/components/url-component/mocks/mockForProps.js +1 -0
  86. package/dist/components/video-component/components/VideoComponent.js +72 -0
  87. package/dist/components/video-component/index.js +13 -0
  88. package/dist/components/video-component/mocks/mockForStory.js +84 -0
  89. package/dist/components/video-visor/components/VideoControllers/BufferBar.js +130 -0
  90. package/dist/components/video-visor/components/VideoControllers/ControlButtons.js +36 -0
  91. package/dist/components/video-visor/components/VideoControllers/FinishedVideoButtons.js +45 -0
  92. package/dist/components/video-visor/components/VideoControllers/PlayInitButton.js +46 -0
  93. package/dist/components/video-visor/components/VideoControllers/SkipButton.js +44 -0
  94. package/dist/components/video-visor/components/VideoControllers/Timer.js +42 -0
  95. package/dist/components/video-visor/components/VideoControllers/VolumeBar.js +108 -0
  96. package/dist/components/video-visor/components/VideoControllers/index.js +122 -0
  97. package/dist/components/video-visor/components/VideoVisor.js +308 -0
  98. package/dist/components/video-visor/index.js +13 -0
  99. package/dist/components/video-visor/mocks/mockForStory.js +27 -0
  100. package/dist/helpers/LightSet.js +39 -0
  101. package/dist/helpers/LodController.js +37 -0
  102. package/dist/helpers/drawLOD.js +358 -0
  103. package/dist/helpers/index.js +82 -0
  104. package/dist/helpers/lodStats.js +51 -0
  105. package/dist/helpers/useGLB.js +62 -0
  106. package/dist/index.js +18 -0
  107. package/package.json +75 -0
@@ -0,0 +1,316 @@
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 _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _reactTypist = _interopRequireDefault(require("react-typist"));
15
+
16
+ var _helpers = require("./helpers");
17
+
18
+ var _DrawGrid = _interopRequireDefault(require("./DrawGrid"));
19
+
20
+ var _colors = require("./colors");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
25
+
26
+ 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; }
27
+
28
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
29
+
30
+ 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."); }
31
+
32
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
33
+
34
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
35
+
36
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
+
38
+ 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."); }
39
+
40
+ 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); }
41
+
42
+ 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; }
43
+
44
+ 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; }
45
+
46
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
+
48
+ var VELOCITY_MAP = {
49
+ slow: 2,
50
+ fast: 5,
51
+ fastest: 10
52
+ };
53
+ var DIFFICULTY_MAP = {
54
+ easy: {
55
+ visibleRows: 'auto',
56
+ visibleColumns: 40,
57
+ totalRows: 25
58
+ },
59
+ medium: {
60
+ visibleRows: 'auto',
61
+ visibleColumns: 40,
62
+ totalRows: 40
63
+ },
64
+ hard: {
65
+ visibleRows: 'auto',
66
+ visibleColumns: 40,
67
+ totalRows: 80
68
+ }
69
+ };
70
+
71
+ var CrackerPuzzleComponent = function CrackerPuzzleComponent(_ref) {
72
+ var emitEvent = _ref.emitEvent,
73
+ info = _ref.info,
74
+ velocity = _ref.velocity,
75
+ password = _ref.password,
76
+ disableExit = _ref.disableExit,
77
+ difficulty = _ref.difficulty,
78
+ setResolveAction = _ref.setResolveAction;
79
+
80
+ var translate = function translate(id) {
81
+ return emitEvent({
82
+ type: 'translate',
83
+ payload: id
84
+ });
85
+ };
86
+
87
+ var requestRef = _react.default.useRef();
88
+
89
+ var previousTimeRef = _react.default.useRef(); // Common PuzzleComponent
90
+
91
+
92
+ var solution = info.solution;
93
+
94
+ var _useState = (0, _react.useState)(password.toLowerCase()),
95
+ _useState2 = _slicedToArray(_useState, 2),
96
+ remainingPassword = _useState2[0],
97
+ setRemainingPassword = _useState2[1];
98
+
99
+ var _useState3 = (0, _react.useState)(),
100
+ _useState4 = _slicedToArray(_useState3, 2),
101
+ passwordPosition = _useState4[0],
102
+ setPasswordPosition = _useState4[1];
103
+
104
+ var _useState5 = (0, _react.useState)(Array(password.toLowerCase().length).fill('')),
105
+ _useState6 = _slicedToArray(_useState5, 2),
106
+ paintSolution = _useState6[0],
107
+ setPaintSolution = _useState6[1];
108
+
109
+ var _useState7 = (0, _react.useState)(false),
110
+ _useState8 = _slicedToArray(_useState7, 2),
111
+ finished = _useState8[0],
112
+ setFinished = _useState8[1];
113
+
114
+ var _useState9 = (0, _react.useState)([0, 0]),
115
+ _useState10 = _slicedToArray(_useState9, 2),
116
+ cursorPosition = _useState10[0],
117
+ setCursorPosition = _useState10[1];
118
+
119
+ var crackedPasswordMsg = translate('puzzle.cracker.crackedPassword');
120
+ var feedbackMessage = info.solution.right.desc && info.solution.right.desc !== '' ? translate(info.solution.right.desc) : '';
121
+ var congratulationsMsg = translate('puzzle.cracker.congratulations');
122
+
123
+ var _useState11 = (0, _react.useState)([[]]),
124
+ _useState12 = _slicedToArray(_useState11, 2),
125
+ grid = _useState12[0],
126
+ setGrid = _useState12[1];
127
+
128
+ var _DIFFICULTY_MAP$diffi = DIFFICULTY_MAP[difficulty],
129
+ visibleRows = _DIFFICULTY_MAP$diffi.visibleRows,
130
+ numberOfColumns = _DIFFICULTY_MAP$diffi.visibleColumns;
131
+ var numberOfRows = visibleRows === 'auto' ? Math.ceil(window.innerHeight * 0.025) : visibleRows;
132
+ numberOfRows = numberOfRows >= 20 ? numberOfRows : 20;
133
+ (0, _react.useEffect)(function () {
134
+ if (finished) {
135
+ disableExit(true);
136
+ }
137
+ }, [finished]);
138
+ (0, _react.useEffect)(function () {
139
+ setResolveAction(function (resolve) {
140
+ setFinished(true);
141
+ setTimeout(function () {
142
+ resolve();
143
+ }, 4000);
144
+ });
145
+ }, [setResolveAction]);
146
+
147
+ var handleFinish = function handleFinish() {
148
+ emitEvent({
149
+ type: 'playSound',
150
+ payload: 'click-ui'
151
+ });
152
+ var rewards = solution.right.rewards;
153
+ emitEvent({
154
+ type: 'addPoints',
155
+ payload: rewards
156
+ });
157
+ };
158
+
159
+ var generatePasswordPositions = function generatePasswordPositions() {
160
+ var tempArray = password.toLowerCase().split('');
161
+ return tempArray.map(function (char, index) {
162
+ return {
163
+ char: char,
164
+ index: index,
165
+ used: false
166
+ };
167
+ });
168
+ };
169
+
170
+ var getRemainingPassword = function getRemainingPassword(positions) {
171
+ return positions.filter(function (obj) {
172
+ return obj.used === false;
173
+ }).map(function (word) {
174
+ return word.char;
175
+ }).join('');
176
+ };
177
+
178
+ var handleSetGrid = function handleSetGrid(prevGrid) {
179
+ if (prevGrid[0].length > 0 && !finished) {
180
+ var shiftedGrid = _toConsumableArray(prevGrid);
181
+
182
+ shiftedGrid.push(shiftedGrid.shift());
183
+ return shiftedGrid;
184
+ }
185
+
186
+ return prevGrid;
187
+ };
188
+
189
+ var ms = 0;
190
+
191
+ var loop = function loop(time) {
192
+ if (previousTimeRef.current !== undefined) {
193
+ var deltaTime = time - previousTimeRef.current;
194
+ ms += deltaTime;
195
+
196
+ if (ms > 1000 / VELOCITY_MAP[velocity]) {
197
+ setGrid(handleSetGrid);
198
+ ms = 0;
199
+ }
200
+ }
201
+
202
+ previousTimeRef.current = time;
203
+ requestRef.current = requestAnimationFrame(loop);
204
+ };
205
+
206
+ (0, _react.useEffect)(function () {
207
+ setRemainingPassword(password.toLowerCase());
208
+ var generatedGrid = (0, _helpers.makeSomeNoise)({
209
+ numberOfColumns: numberOfColumns,
210
+ numberOfRows: numberOfRows,
211
+ password: password.toLowerCase()
212
+ });
213
+ setGrid(generatedGrid);
214
+ setPasswordPosition(generatePasswordPositions());
215
+ requestRef.current = requestAnimationFrame(loop);
216
+ return function () {
217
+ return cancelAnimationFrame(requestRef.current);
218
+ };
219
+ }, []);
220
+
221
+ var handleMouseOver = function handleMouseOver() {
222
+ if (grid.length <= 1) return;
223
+
224
+ var _cursorPosition = _slicedToArray(cursorPosition, 2),
225
+ gridX = _cursorPosition[0],
226
+ gridY = _cursorPosition[1];
227
+
228
+ var currentElement = grid[gridX][gridY];
229
+
230
+ if (currentElement.hiddenColor === _colors.GREEN) {
231
+ var char = passwordPosition.filter(function (obj) {
232
+ return obj.char === currentElement.value.toLowerCase() && obj.used === false;
233
+ })[0];
234
+
235
+ if (char) {
236
+ var index = char.index; // emitEvent({ type: 'playSound', payload: 'score' }); // Mirar problema con rerenderizado
237
+
238
+ var newPasswordPosition = passwordPosition;
239
+ newPasswordPosition[index].used = true;
240
+ setPasswordPosition(newPasswordPosition);
241
+
242
+ var currentPaintSolution = _toConsumableArray(paintSolution);
243
+
244
+ currentPaintSolution[index] = currentElement.value;
245
+ var newRemainPswd = getRemainingPassword(newPasswordPosition);
246
+ setRemainingPassword(newRemainPswd);
247
+ var repaintedGrid = (0, _helpers.repaintGridPassword)(grid, newRemainPswd, numberOfRows, numberOfColumns);
248
+ setGrid(repaintedGrid);
249
+ setPaintSolution(currentPaintSolution);
250
+ }
251
+ }
252
+
253
+ if (remainingPassword <= 0) {
254
+ emitEvent({
255
+ type: 'playSound',
256
+ payload: 'finish-level'
257
+ });
258
+ setFinished(true);
259
+ }
260
+ };
261
+
262
+ (0, _react.useEffect)(function () {
263
+ if (!finished) handleMouseOver();
264
+ }, [cursorPosition]);
265
+ return /*#__PURE__*/_react.default.createElement("div", {
266
+ className: "puzzle--cracker__container"
267
+ }, /*#__PURE__*/_react.default.createElement("div", {
268
+ className: "puzzle--cracker__header"
269
+ }, /*#__PURE__*/_react.default.createElement("span", {
270
+ className: "title"
271
+ }, "Dcoder.exe"), /*#__PURE__*/_react.default.createElement("div", {
272
+ className: "puzzle--pieces"
273
+ }, paintSolution.map(function (char, ind) {
274
+ return /*#__PURE__*/_react.default.createElement("span", {
275
+ key: ind,
276
+ className: "puzzle--pieces__item"
277
+ }, char && /*#__PURE__*/_react.default.createElement("span", {
278
+ className: "character success-transition-animation",
279
+ "data-testid": "solution".concat(ind)
280
+ }, char));
281
+ }))), /*#__PURE__*/_react.default.createElement(_DrawGrid.default, {
282
+ grid: finished ? [[]] : grid,
283
+ cursorPosition: cursorPosition,
284
+ setCursorPosition: setCursorPosition
285
+ }), finished && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactTypist.default, {
286
+ avgTypingDelay: 110,
287
+ cursor: {
288
+ hideWhenDone: true
289
+ },
290
+ className: "puzzle--cracker__result"
291
+ }, /*#__PURE__*/_react.default.createElement(_reactTypist.default.Delay, {
292
+ ms: 300
293
+ }), /*#__PURE__*/_react.default.createElement("span", null, "".concat(crackedPasswordMsg, ": ").concat(password.toLowerCase())), /*#__PURE__*/_react.default.createElement("span", null, congratulationsMsg), feedbackMessage !== '' && /*#__PURE__*/_react.default.createElement("span", null, feedbackMessage)), /*#__PURE__*/_react.default.createElement("div", {
294
+ className: "position--absolute bottom center"
295
+ }, /*#__PURE__*/_react.default.createElement("button", {
296
+ type: "button",
297
+ className: "gat--btn gat--btn__primary gat--btn__cracker",
298
+ onClick: handleFinish
299
+ }, translate('screens.continue')))));
300
+ };
301
+
302
+ CrackerPuzzleComponent.defaultProps = {
303
+ velocity: 'slow',
304
+ difficulty: 'easy',
305
+ context: {},
306
+ info: {}
307
+ };
308
+ CrackerPuzzleComponent.propTypes = {
309
+ password: _propTypes.default.string.isRequired,
310
+ velocity: _propTypes.default.string,
311
+ difficulty: _propTypes.default.string,
312
+ context: _propTypes.default.shape({}),
313
+ info: _propTypes.default.shape({})
314
+ };
315
+ var _default = CrackerPuzzleComponent;
316
+ exports.default = _default;
@@ -0,0 +1,44 @@
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
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _index = _interopRequireDefault(require("../DrawRow/index"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ /* eslint-disable react/no-array-index-key */
17
+ // Draws the characters map
18
+ var DrawGrid = function DrawGrid(_ref) {
19
+ var grid = _ref.grid,
20
+ cursorPosition = _ref.cursorPosition,
21
+ setCursorPosition = _ref.setCursorPosition;
22
+ return /*#__PURE__*/_react.default.createElement("div", {
23
+ className: "puzzle--cracker__canvas"
24
+ }, grid.map(function (row, rowIndex) {
25
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
26
+ key: rowIndex,
27
+ row: row,
28
+ rowIndex: rowIndex,
29
+ cursorPosition: cursorPosition,
30
+ setCursorPosition: setCursorPosition
31
+ });
32
+ }));
33
+ };
34
+
35
+ DrawGrid.defaultProps = {
36
+ setCursorPosition: function setCursorPosition() {}
37
+ };
38
+ DrawGrid.propTypes = {
39
+ grid: _propTypes.default.arrayOf(_propTypes.default.array).isRequired,
40
+ cursorPosition: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
41
+ setCursorPosition: _propTypes.default.func
42
+ };
43
+ var _default = DrawGrid;
44
+ exports.default = _default;
@@ -0,0 +1,53 @@
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
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ // Draws the square of colors around item
15
+ var DrawItem = function DrawItem(_ref) {
16
+ var item = _ref.item,
17
+ rowIndex = _ref.rowIndex,
18
+ columnIndex = _ref.columnIndex,
19
+ setCursorPosition = _ref.setCursorPosition,
20
+ cursorPosition = _ref.cursorPosition;
21
+ var isNear = Math.abs(rowIndex - cursorPosition[0]) < 3 && Math.abs(columnIndex - cursorPosition[1]) < 3;
22
+ return /*#__PURE__*/_react.default.createElement("span", {
23
+ className: "puzzle--cracker__item",
24
+ style: {
25
+ backgroundColor: "".concat(isNear ? item.hiddenColor : item.color),
26
+ flexGrow: 1,
27
+ textAlign: 'center'
28
+ },
29
+ onMouseOver: function onMouseOver() {
30
+ setCursorPosition([rowIndex, columnIndex]);
31
+ },
32
+ onFocus: function onFocus() {
33
+ setCursorPosition([rowIndex, columnIndex]);
34
+ }
35
+ }, item.value);
36
+ };
37
+
38
+ DrawItem.defaultProps = {
39
+ setCursorPosition: function setCursorPosition() {}
40
+ };
41
+ DrawItem.propTypes = {
42
+ item: _propTypes.default.shape({
43
+ color: _propTypes.default.string,
44
+ hiddenColor: _propTypes.default.string,
45
+ value: _propTypes.default.string
46
+ }).isRequired,
47
+ rowIndex: _propTypes.default.number.isRequired,
48
+ columnIndex: _propTypes.default.number.isRequired,
49
+ cursorPosition: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
50
+ setCursorPosition: _propTypes.default.func
51
+ };
52
+ var _default = DrawItem;
53
+ exports.default = _default;
@@ -0,0 +1,48 @@
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
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _DrawItem = _interopRequireDefault(require("../DrawItem"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ /* eslint-disable react/no-array-index-key */
17
+ // Draws the characters map
18
+ var DrawRow = function DrawRow(_ref) {
19
+ var row = _ref.row,
20
+ rowIndex = _ref.rowIndex,
21
+ setCursorPosition = _ref.setCursorPosition,
22
+ cursorPosition = _ref.cursorPosition;
23
+ if (!row.length) return null;
24
+ return /*#__PURE__*/_react.default.createElement("div", {
25
+ className: "puzzle--cracker"
26
+ }, row.map(function (item, columnIndex) {
27
+ return /*#__PURE__*/_react.default.createElement(_DrawItem.default, {
28
+ key: columnIndex,
29
+ item: item,
30
+ rowIndex: rowIndex,
31
+ columnIndex: columnIndex,
32
+ setCursorPosition: setCursorPosition,
33
+ cursorPosition: cursorPosition
34
+ });
35
+ }));
36
+ };
37
+
38
+ DrawRow.defaultProps = {
39
+ row: []
40
+ };
41
+ DrawRow.propTypes = {
42
+ row: _propTypes.default.arrayOf(_propTypes.default.shape({})),
43
+ rowIndex: _propTypes.default.number.isRequired,
44
+ setCursorPosition: _propTypes.default.func.isRequired,
45
+ cursorPosition: _propTypes.default.arrayOf(_propTypes.default.number).isRequired
46
+ };
47
+ var _default = DrawRow;
48
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RED = exports.ORANGE = exports.GREEN = void 0;
7
+ var GREEN = '#44d7ab';
8
+ exports.GREEN = GREEN;
9
+ var ORANGE = '#FFB34B';
10
+ exports.ORANGE = ORANGE;
11
+ var RED = '#FF634D';
12
+ exports.RED = RED;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.repaintGridPassword = exports.makeSomeNoise = void 0;
7
+
8
+ var _colors = require("./colors");
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 _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; }
15
+
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+
18
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
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
+ var getDistance = function getDistance(point1, point2) {
25
+ return Math.max(Math.abs(point1[0] - point2[0]), Math.abs(point1[1] - point2[1]));
26
+ };
27
+
28
+ var generatePasswordPositions = function generatePasswordPositions(grid, password, numberOfRows, numberOfColumns) {
29
+ var passwordPositions = [];
30
+ var tempGrid = grid;
31
+
32
+ var _iterator = _createForOfIteratorHelper(password.toLowerCase()),
33
+ _step;
34
+
35
+ try {
36
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
37
+ var char = _step.value;
38
+ var randomRow = Math.floor(Math.random() * numberOfRows);
39
+ var randomColumn = Math.floor(Math.random() * numberOfColumns);
40
+ tempGrid[randomRow][randomColumn].value = char;
41
+ passwordPositions.push({
42
+ char: char,
43
+ position: [randomRow, randomColumn]
44
+ });
45
+ }
46
+ } catch (err) {
47
+ _iterator.e(err);
48
+ } finally {
49
+ _iterator.f();
50
+ }
51
+
52
+ return [tempGrid, passwordPositions];
53
+ };
54
+
55
+ var paintedGridPassword = function paintedGridPassword(blackGrid, numberOfRows, numberOfColumns, passwordPositions) {
56
+ var coloredGrid = blackGrid;
57
+
58
+ var _loop = function _loop(rowIndex) {
59
+ var _loop2 = function _loop2(columnIndex) {
60
+ var distanceToPassword = passwordPositions.reduce(function (acc, cur) {
61
+ var gridPosition = [rowIndex, columnIndex];
62
+ var distance = getDistance(cur.position, gridPosition);
63
+ return distance < acc ? distance : acc;
64
+ }, 9999);
65
+
66
+ switch (distanceToPassword) {
67
+ case 0:
68
+ coloredGrid[rowIndex][columnIndex].hiddenColor = _colors.GREEN;
69
+ break;
70
+
71
+ case 1:
72
+ coloredGrid[rowIndex][columnIndex].hiddenColor = _colors.ORANGE;
73
+ break;
74
+
75
+ case 2:
76
+ coloredGrid[rowIndex][columnIndex].hiddenColor = _colors.RED;
77
+ break;
78
+
79
+ default:
80
+ break;
81
+ }
82
+ };
83
+
84
+ for (var columnIndex = 0; columnIndex < numberOfColumns; columnIndex += 1) {
85
+ _loop2(columnIndex);
86
+ }
87
+ };
88
+
89
+ for (var rowIndex = 0; rowIndex < numberOfRows; rowIndex += 1) {
90
+ _loop(rowIndex);
91
+ }
92
+
93
+ return coloredGrid;
94
+ };
95
+
96
+ var resetColors = function resetColors(numberOfRows, numberOfColumns, actualGrid) {
97
+ var cleanGrid = actualGrid;
98
+
99
+ for (var rowIndex = 0; rowIndex < numberOfRows; rowIndex += 1) {
100
+ for (var columnIndex = 0; columnIndex < numberOfColumns; columnIndex += 1) {
101
+ cleanGrid[rowIndex][columnIndex].color = '';
102
+ cleanGrid[rowIndex][columnIndex].hiddenColor = _colors.RED;
103
+ }
104
+ }
105
+
106
+ return cleanGrid;
107
+ };
108
+
109
+ var repaintGridPassword = function repaintGridPassword(actualGrid, newPassword, numberOfRows, numberOfColumns) {
110
+ var resetedColorsGrid = resetColors(numberOfRows, numberOfColumns, actualGrid);
111
+
112
+ var _generatePasswordPosi = generatePasswordPositions(resetedColorsGrid, newPassword, numberOfRows, numberOfColumns),
113
+ _generatePasswordPosi2 = _slicedToArray(_generatePasswordPosi, 2),
114
+ blackGrid = _generatePasswordPosi2[0],
115
+ passwordPositions = _generatePasswordPosi2[1];
116
+
117
+ var paintedGrid = paintedGridPassword(blackGrid, numberOfRows, numberOfColumns, passwordPositions);
118
+ return paintedGrid;
119
+ };
120
+
121
+ exports.repaintGridPassword = repaintGridPassword;
122
+
123
+ var prepareAcceptedChars = function prepareAcceptedChars(password) {
124
+ return '0123456789abcdefghijklmnopqrstuvwxyz'.split('').filter(function (character) {
125
+ return !password.includes(character);
126
+ }).join('');
127
+ };
128
+
129
+ var generateBasicGrid = function generateBasicGrid(numberOfRows, numberOfColumns, acceptedChars) {
130
+ var basicGrid = [];
131
+
132
+ for (var rowIndex = 0; rowIndex < numberOfRows; rowIndex += 1) {
133
+ var row = [];
134
+
135
+ for (var columnIndex = 0; columnIndex < numberOfColumns; columnIndex += 1) {
136
+ var cell = {
137
+ color: '',
138
+ hiddenColor: _colors.RED,
139
+ value: acceptedChars[Math.floor(Math.random() * acceptedChars.length)]
140
+ };
141
+ row.push(cell);
142
+ }
143
+
144
+ basicGrid.push(row);
145
+ }
146
+
147
+ return basicGrid;
148
+ }; // generates the character map with the password and puts colors attribute
149
+
150
+
151
+ var makeSomeNoise = function makeSomeNoise(_ref) {
152
+ var numberOfColumns = _ref.numberOfColumns,
153
+ numberOfRows = _ref.numberOfRows,
154
+ password = _ref.password;
155
+ var acceptedChars = prepareAcceptedChars(password);
156
+ var grid = generateBasicGrid(numberOfRows, numberOfColumns, acceptedChars);
157
+
158
+ var _generatePasswordPosi3 = generatePasswordPositions(grid, password, numberOfRows, numberOfColumns),
159
+ _generatePasswordPosi4 = _slicedToArray(_generatePasswordPosi3, 2),
160
+ blackGrid = _generatePasswordPosi4[0],
161
+ passwordPositions = _generatePasswordPosi4[1];
162
+
163
+ var paintedGrid = paintedGridPassword(blackGrid, numberOfRows, numberOfColumns, passwordPositions);
164
+ return paintedGrid;
165
+ }; // eslint-disable-next-line import/prefer-default-export
166
+
167
+
168
+ exports.makeSomeNoise = makeSomeNoise;
@@ -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 _CrackerPuzzleComponent = _interopRequireDefault(require("./components/CrackerPuzzleComponent"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _CrackerPuzzleComponent.default;
13
+ exports.default = _default;