@pie-element/hotspot 9.0.2-esm.0 → 9.2.0-mui-update.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 (125) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/configure/CHANGELOG.md +74 -0
  3. package/configure/lib/DeleteWidget.js +31 -44
  4. package/configure/lib/DeleteWidget.js.map +1 -1
  5. package/configure/lib/__tests__/DeleteWidget.test.js +60 -0
  6. package/configure/lib/__tests__/hotspot-container.test.js +377 -0
  7. package/configure/lib/__tests__/hotspot-drawable.test.js +233 -0
  8. package/configure/lib/__tests__/index.test.js +211 -0
  9. package/configure/lib/__tests__/root.test.js +440 -0
  10. package/configure/lib/__tests__/utils.test.js +287 -0
  11. package/configure/lib/button.js +27 -46
  12. package/configure/lib/button.js.map +1 -1
  13. package/configure/lib/buttons/circle.js +21 -28
  14. package/configure/lib/buttons/circle.js.map +1 -1
  15. package/configure/lib/buttons/polygon.js +27 -34
  16. package/configure/lib/buttons/polygon.js.map +1 -1
  17. package/configure/lib/buttons/rectangle.js +27 -34
  18. package/configure/lib/buttons/rectangle.js.map +1 -1
  19. package/configure/lib/defaults.js +3 -4
  20. package/configure/lib/defaults.js.map +1 -1
  21. package/configure/lib/hotspot-circle.js +133 -199
  22. package/configure/lib/hotspot-circle.js.map +1 -1
  23. package/configure/lib/hotspot-container.js +251 -356
  24. package/configure/lib/hotspot-container.js.map +1 -1
  25. package/configure/lib/hotspot-drawable.js +361 -473
  26. package/configure/lib/hotspot-drawable.js.map +1 -1
  27. package/configure/lib/hotspot-palette.js +93 -140
  28. package/configure/lib/hotspot-palette.js.map +1 -1
  29. package/configure/lib/hotspot-polygon.js +213 -318
  30. package/configure/lib/hotspot-polygon.js.map +1 -1
  31. package/configure/lib/hotspot-rectangle.js +129 -193
  32. package/configure/lib/hotspot-rectangle.js.map +1 -1
  33. package/configure/lib/icons.js +4 -8
  34. package/configure/lib/icons.js.map +1 -1
  35. package/configure/lib/image-konva.js +47 -87
  36. package/configure/lib/image-konva.js.map +1 -1
  37. package/configure/lib/index.js +163 -223
  38. package/configure/lib/index.js.map +1 -1
  39. package/configure/lib/root.js +302 -394
  40. package/configure/lib/root.js.map +1 -1
  41. package/configure/lib/shapes/circle.js +70 -102
  42. package/configure/lib/shapes/circle.js.map +1 -1
  43. package/configure/lib/shapes/index.js +5 -13
  44. package/configure/lib/shapes/index.js.map +1 -1
  45. package/configure/lib/shapes/polygon.js +65 -97
  46. package/configure/lib/shapes/polygon.js.map +1 -1
  47. package/configure/lib/shapes/rectagle.js +70 -102
  48. package/configure/lib/shapes/rectagle.js.map +1 -1
  49. package/configure/lib/shapes/utils.js +3 -9
  50. package/configure/lib/shapes/utils.js.map +1 -1
  51. package/configure/lib/upload-control.js +26 -53
  52. package/configure/lib/upload-control.js.map +1 -1
  53. package/configure/lib/utils.js +85 -138
  54. package/configure/lib/utils.js.map +1 -1
  55. package/configure/package.json +11 -10
  56. package/configure/src/__tests__/index.test.js +11 -5
  57. package/configure/src/button.jsx +12 -20
  58. package/configure/src/hotspot-circle.jsx +5 -18
  59. package/configure/src/hotspot-container.jsx +82 -98
  60. package/configure/src/hotspot-drawable.jsx +43 -45
  61. package/configure/src/hotspot-palette.jsx +45 -37
  62. package/configure/src/hotspot-polygon.jsx +4 -20
  63. package/configure/src/hotspot-rectangle.jsx +4 -17
  64. package/configure/src/icons.js +4 -2
  65. package/configure/src/index.js +12 -2
  66. package/configure/src/root.jsx +85 -79
  67. package/configure/src/upload-control.jsx +6 -16
  68. package/controller/CHANGELOG.md +60 -0
  69. package/controller/lib/__tests__/index.test.js +586 -0
  70. package/controller/lib/__tests__/utils.test.js +8 -0
  71. package/controller/lib/defaults.js +3 -4
  72. package/controller/lib/defaults.js.map +1 -1
  73. package/controller/lib/index.js +152 -206
  74. package/controller/lib/index.js.map +1 -1
  75. package/controller/lib/utils.js +15 -35
  76. package/controller/lib/utils.js.map +1 -1
  77. package/controller/package.json +2 -2
  78. package/docs/demo/pie.manifest.json +11 -0
  79. package/lib/__tests__/container.test.js +221 -0
  80. package/lib/__tests__/index.test.js +113 -0
  81. package/lib/__tests__/polygon.test.js +245 -0
  82. package/lib/__tests__/rectangle.test.js +236 -0
  83. package/lib/__tests__/session-updater.test.js +69 -0
  84. package/lib/hotspot/circle.js +111 -170
  85. package/lib/hotspot/circle.js.map +1 -1
  86. package/lib/hotspot/container.js +175 -261
  87. package/lib/hotspot/container.js.map +1 -1
  88. package/lib/hotspot/icons.js +5 -10
  89. package/lib/hotspot/icons.js.map +1 -1
  90. package/lib/hotspot/image-konva-tooltip.js +66 -113
  91. package/lib/hotspot/image-konva-tooltip.js.map +1 -1
  92. package/lib/hotspot/index.js +136 -199
  93. package/lib/hotspot/index.js.map +1 -1
  94. package/lib/hotspot/polygon.js +151 -215
  95. package/lib/hotspot/polygon.js.map +1 -1
  96. package/lib/hotspot/rectangle.js +130 -186
  97. package/lib/hotspot/rectangle.js.map +1 -1
  98. package/lib/index.js +188 -257
  99. package/lib/index.js.map +1 -1
  100. package/lib/session-updater.js +13 -19
  101. package/lib/session-updater.js.map +1 -1
  102. package/package.json +15 -29
  103. package/src/hotspot/circle.jsx +2 -13
  104. package/src/hotspot/container.jsx +35 -50
  105. package/src/hotspot/icons.js +6 -5
  106. package/src/hotspot/index.jsx +16 -28
  107. package/src/hotspot/polygon.jsx +4 -13
  108. package/src/hotspot/rectangle.jsx +4 -13
  109. package/src/index.js +21 -12
  110. package/LICENSE.md +0 -5
  111. package/configure/node_modules/debug/CHANGELOG.md +0 -395
  112. package/configure/node_modules/debug/LICENSE +0 -19
  113. package/configure/node_modules/debug/README.md +0 -437
  114. package/configure/node_modules/debug/node.js +0 -1
  115. package/configure/node_modules/debug/package.json +0 -51
  116. package/configure/node_modules/debug/src/browser.js +0 -180
  117. package/configure/node_modules/debug/src/common.js +0 -249
  118. package/configure/node_modules/debug/src/index.js +0 -12
  119. package/configure/node_modules/debug/src/node.js +0 -177
  120. package/esm/configure.js +0 -25986
  121. package/esm/configure.js.map +0 -1
  122. package/esm/controller.js +0 -344
  123. package/esm/controller.js.map +0 -1
  124. package/esm/element.js +0 -1312
  125. package/esm/element.js.map +0 -1
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _enzyme = require("enzyme");
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _hotspotContainer = require("../hotspot-container");
7
+ var _utils = require("../utils");
8
+ const model = () => ({
9
+ imageUrl: 'https://cdn.fluence.net/image/0240eb1455ce4c4bb6180232347b6aef_W',
10
+ shapes: (0, _utils.groupShapes)((0, _utils.getAllShapes)({
11
+ rectangles: [{
12
+ id: '0',
13
+ height: 140,
14
+ width: 130,
15
+ x: 1,
16
+ y: 1,
17
+ correct: true
18
+ }, {
19
+ id: '1',
20
+ height: 140,
21
+ width: 130,
22
+ x: 140,
23
+ y: 1
24
+ }, {
25
+ id: '2',
26
+ height: 140,
27
+ width: 130,
28
+ x: 280,
29
+ y: 1
30
+ }],
31
+ polygons: [{
32
+ id: '3',
33
+ points: [{
34
+ x: 1,
35
+ y: 148
36
+ }, {
37
+ x: 1,
38
+ y: 288
39
+ }, {
40
+ y: 288,
41
+ x: 129
42
+ }, {
43
+ y: 148,
44
+ x: 129
45
+ }],
46
+ correct: true
47
+ }, {
48
+ id: '4',
49
+ points: [{
50
+ y: 151,
51
+ x: 141
52
+ }, {
53
+ y: 289,
54
+ x: 141
55
+ }, {
56
+ y: 289,
57
+ x: 269
58
+ }, {
59
+ x: 269,
60
+ y: 151
61
+ }],
62
+ correct: false
63
+ }, {
64
+ id: '5',
65
+ points: [{
66
+ x: 279,
67
+ y: 150
68
+ }, {
69
+ x: 279,
70
+ y: 289
71
+ }, {
72
+ x: 407,
73
+ y: 289
74
+ }, {
75
+ x: 407,
76
+ y: 150
77
+ }],
78
+ correct: false
79
+ }],
80
+ circles: [{
81
+ id: '6',
82
+ radius: 70,
83
+ x: 100,
84
+ y: 100,
85
+ correct: false
86
+ }, {
87
+ id: '7',
88
+ radius: 30,
89
+ x: 200,
90
+ y: 150,
91
+ correct: true
92
+ }]
93
+ })),
94
+ dimensions: {
95
+ height: 291,
96
+ width: 410
97
+ },
98
+ hotspotColor: 'rgba(137, 183, 244, 0.65)',
99
+ outlineColor: 'blue',
100
+ multipleCorrect: true
101
+ });
102
+ describe('HotspotContainer', () => {
103
+ let w,
104
+ onImageUpload = jest.fn(),
105
+ onUpdateImageDimension = jest.fn(),
106
+ onDeleteShape = jest.fn(),
107
+ onUpdateShapes = jest.fn(),
108
+ initialModel = model();
109
+ beforeEach(() => {
110
+ w = extras => {
111
+ const props = {
112
+ classes: {},
113
+ dimensions: initialModel.dimensions,
114
+ imageUrl: initialModel.imageUrl,
115
+ multipleCorrect: initialModel.multipleCorrect,
116
+ hotspotColor: initialModel.hotspotColor,
117
+ outlineColor: initialModel.outlineColor,
118
+ onUpdateImageDimension: onUpdateImageDimension,
119
+ onUpdateShapes: onUpdateShapes,
120
+ onDeleteShape: onDeleteShape,
121
+ onImageUpload: onImageUpload,
122
+ shapes: initialModel.shapes,
123
+ ...extras
124
+ };
125
+ return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_hotspotContainer.Container, props));
126
+ };
127
+ });
128
+ describe('render', () => {
129
+ it('renders', () => {
130
+ expect(w()).toMatchSnapshot();
131
+ });
132
+ });
133
+ describe('logic', () => {
134
+ let wrapper;
135
+ let formattedShapes = [{
136
+ id: '0',
137
+ height: 140,
138
+ width: 130,
139
+ x: 1,
140
+ y: 1,
141
+ correct: true,
142
+ group: 'rectangles',
143
+ index: 0
144
+ }, {
145
+ id: '1',
146
+ height: 140,
147
+ width: 130,
148
+ x: 140,
149
+ y: 1,
150
+ group: 'rectangles',
151
+ index: 1
152
+ }, {
153
+ id: '2',
154
+ height: 140,
155
+ width: 130,
156
+ x: 280,
157
+ y: 1,
158
+ group: 'rectangles',
159
+ index: 2
160
+ }, {
161
+ id: '3',
162
+ points: [{
163
+ x: 1,
164
+ y: 148
165
+ }, {
166
+ x: 1,
167
+ y: 288
168
+ }, {
169
+ y: 288,
170
+ x: 129
171
+ }, {
172
+ y: 148,
173
+ x: 129
174
+ }],
175
+ correct: true,
176
+ group: 'polygons',
177
+ index: 3
178
+ }, {
179
+ id: '4',
180
+ points: [{
181
+ y: 151,
182
+ x: 141
183
+ }, {
184
+ y: 289,
185
+ x: 141
186
+ }, {
187
+ y: 289,
188
+ x: 269
189
+ }, {
190
+ x: 269,
191
+ y: 151
192
+ }],
193
+ correct: false,
194
+ group: 'polygons',
195
+ index: 4
196
+ }, {
197
+ id: '5',
198
+ points: [{
199
+ x: 279,
200
+ y: 150
201
+ }, {
202
+ x: 279,
203
+ y: 289
204
+ }, {
205
+ x: 407,
206
+ y: 289
207
+ }, {
208
+ x: 407,
209
+ y: 150
210
+ }],
211
+ correct: false,
212
+ group: 'polygons',
213
+ index: 5
214
+ }, {
215
+ id: '6',
216
+ radius: 70,
217
+ x: 100,
218
+ y: 100,
219
+ correct: false,
220
+ group: 'circles',
221
+ index: 6
222
+ }, {
223
+ id: '7',
224
+ radius: 30,
225
+ x: 200,
226
+ y: 150,
227
+ correct: true,
228
+ group: 'circles',
229
+ index: 7
230
+ }];
231
+ beforeEach(() => {
232
+ wrapper = w();
233
+ });
234
+ it('state will contain formatted shapes', () => {
235
+ expect(wrapper.instance().state.shapes).toEqual(expect.arrayContaining(formattedShapes));
236
+ });
237
+ it('onUpdateShapes with new added shape', () => {
238
+ const newShape = {
239
+ id: '8',
240
+ height: 140,
241
+ width: 130,
242
+ x: 280,
243
+ y: 1,
244
+ group: 'rectangles'
245
+ };
246
+ wrapper.instance().onUpdateShapes([...formattedShapes, newShape]);
247
+ expect(onUpdateShapes).toHaveBeenLastCalledWith({
248
+ rectangles: [...initialModel.shapes.rectangles, {
249
+ id: '8',
250
+ height: 140,
251
+ width: 130,
252
+ x: 280,
253
+ y: 1
254
+ }],
255
+ polygons: initialModel.shapes.polygons,
256
+ circles: initialModel.shapes.circles
257
+ });
258
+ });
259
+ it('onDeleteShape by id', () => {
260
+ console.log('wrapper', wrapper.instance());
261
+ wrapper.instance().onDeleteShape('8');
262
+ expect(onUpdateShapes).toHaveBeenCalledWith((0, _utils.groupShapes)([{
263
+ correct: true,
264
+ group: 'rectangles',
265
+ height: 140,
266
+ id: '0',
267
+ index: 0,
268
+ width: 130,
269
+ x: 1,
270
+ y: 1
271
+ }, {
272
+ group: 'rectangles',
273
+ height: 140,
274
+ id: '1',
275
+ index: 1,
276
+ width: 130,
277
+ x: 140,
278
+ y: 1
279
+ }, {
280
+ group: 'rectangles',
281
+ height: 140,
282
+ id: '2',
283
+ index: 2,
284
+ width: 130,
285
+ x: 280,
286
+ y: 1
287
+ }, {
288
+ correct: true,
289
+ group: 'polygons',
290
+ id: '3',
291
+ index: 3,
292
+ points: [{
293
+ x: 1,
294
+ y: 148
295
+ }, {
296
+ x: 1,
297
+ y: 288
298
+ }, {
299
+ x: 129,
300
+ y: 288
301
+ }, {
302
+ x: 129,
303
+ y: 148
304
+ }]
305
+ }, {
306
+ correct: false,
307
+ group: 'polygons',
308
+ id: '4',
309
+ index: 4,
310
+ points: [{
311
+ x: 141,
312
+ y: 151
313
+ }, {
314
+ x: 141,
315
+ y: 289
316
+ }, {
317
+ x: 269,
318
+ y: 289
319
+ }, {
320
+ x: 269,
321
+ y: 151
322
+ }]
323
+ }, {
324
+ correct: false,
325
+ group: 'polygons',
326
+ id: '5',
327
+ index: 5,
328
+ points: [{
329
+ x: 279,
330
+ y: 150
331
+ }, {
332
+ x: 279,
333
+ y: 289
334
+ }, {
335
+ x: 407,
336
+ y: 289
337
+ }, {
338
+ x: 407,
339
+ y: 150
340
+ }]
341
+ }, {
342
+ id: '6',
343
+ radius: 70,
344
+ x: 100,
345
+ y: 100,
346
+ correct: false,
347
+ group: 'circles',
348
+ index: 6
349
+ }, {
350
+ id: '7',
351
+ radius: 30,
352
+ x: 200,
353
+ y: 150,
354
+ correct: true,
355
+ group: 'circles',
356
+ index: 7
357
+ }]));
358
+ });
359
+ it('onUpdateShapes with no shapes', () => {
360
+ wrapper.instance().onUpdateShapes([]);
361
+ expect(onUpdateShapes).toHaveBeenLastCalledWith({
362
+ rectangles: [],
363
+ polygons: [],
364
+ circles: []
365
+ });
366
+ });
367
+ it('handleClearAll', () => {
368
+ wrapper.instance().handleClearAll();
369
+ expect(onUpdateShapes).toHaveBeenLastCalledWith({
370
+ rectangles: [],
371
+ polygons: [],
372
+ circles: []
373
+ });
374
+ });
375
+ });
376
+ });
377
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZW56eW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaG90c3BvdENvbnRhaW5lciIsIl91dGlscyIsIm1vZGVsIiwiaW1hZ2VVcmwiLCJzaGFwZXMiLCJncm91cFNoYXBlcyIsImdldEFsbFNoYXBlcyIsInJlY3RhbmdsZXMiLCJpZCIsImhlaWdodCIsIndpZHRoIiwieCIsInkiLCJjb3JyZWN0IiwicG9seWdvbnMiLCJwb2ludHMiLCJjaXJjbGVzIiwicmFkaXVzIiwiZGltZW5zaW9ucyIsImhvdHNwb3RDb2xvciIsIm91dGxpbmVDb2xvciIsIm11bHRpcGxlQ29ycmVjdCIsImRlc2NyaWJlIiwidyIsIm9uSW1hZ2VVcGxvYWQiLCJqZXN0IiwiZm4iLCJvblVwZGF0ZUltYWdlRGltZW5zaW9uIiwib25EZWxldGVTaGFwZSIsIm9uVXBkYXRlU2hhcGVzIiwiaW5pdGlhbE1vZGVsIiwiYmVmb3JlRWFjaCIsImV4dHJhcyIsInByb3BzIiwiY2xhc3NlcyIsInNoYWxsb3ciLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Iiwid3JhcHBlciIsImZvcm1hdHRlZFNoYXBlcyIsImdyb3VwIiwiaW5kZXgiLCJpbnN0YW5jZSIsInN0YXRlIiwidG9FcXVhbCIsImFycmF5Q29udGFpbmluZyIsIm5ld1NoYXBlIiwidG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoIiwiY29uc29sZSIsImxvZyIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiaGFuZGxlQ2xlYXJBbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2hvdHNwb3QtY29udGFpbmVyLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnLi4vaG90c3BvdC1jb250YWluZXInO1xuaW1wb3J0IHsgZ2V0QWxsU2hhcGVzLCBncm91cFNoYXBlcyB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgbW9kZWwgPSAoKSA9PiAoe1xuICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmZsdWVuY2UubmV0L2ltYWdlLzAyNDBlYjE0NTVjZTRjNGJiNjE4MDIzMjM0N2I2YWVmX1cnLFxuICBzaGFwZXM6IGdyb3VwU2hhcGVzKFxuICAgIGdldEFsbFNoYXBlcyh7XG4gICAgICByZWN0YW5nbGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAnLFxuICAgICAgICAgIGhlaWdodDogMTQwLFxuICAgICAgICAgIHdpZHRoOiAxMzAsXG4gICAgICAgICAgeDogMSxcbiAgICAgICAgICB5OiAxLFxuICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgIGhlaWdodDogMTQwLFxuICAgICAgICAgIHdpZHRoOiAxMzAsXG4gICAgICAgICAgeDogMTQwLFxuICAgICAgICAgIHk6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzInLFxuICAgICAgICAgIGhlaWdodDogMTQwLFxuICAgICAgICAgIHdpZHRoOiAxMzAsXG4gICAgICAgICAgeDogMjgwLFxuICAgICAgICAgIHk6IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcG9seWdvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMycsXG4gICAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICB7IHg6IDEsIHk6IDE0OCB9LFxuICAgICAgICAgICAgeyB4OiAxLCB5OiAyODggfSxcbiAgICAgICAgICAgIHsgeTogMjg4LCB4OiAxMjkgfSxcbiAgICAgICAgICAgIHsgeTogMTQ4LCB4OiAxMjkgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzQnLFxuICAgICAgICAgIHBvaW50czogW1xuICAgICAgICAgICAgeyB5OiAxNTEsIHg6IDE0MSB9LFxuICAgICAgICAgICAgeyB5OiAyODksIHg6IDE0MSB9LFxuICAgICAgICAgICAgeyB5OiAyODksIHg6IDI2OSB9LFxuICAgICAgICAgICAgeyB4OiAyNjksIHk6IDE1MSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzUnLFxuICAgICAgICAgIHBvaW50czogW1xuICAgICAgICAgICAgeyB4OiAyNzksIHk6IDE1MCB9LFxuICAgICAgICAgICAgeyB4OiAyNzksIHk6IDI4OSB9LFxuICAgICAgICAgICAgeyB4OiA0MDcsIHk6IDI4OSB9LFxuICAgICAgICAgICAgeyB4OiA0MDcsIHk6IDE1MCB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2lyY2xlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2JyxcbiAgICAgICAgICByYWRpdXM6IDcwLFxuICAgICAgICAgIHg6IDEwMCxcbiAgICAgICAgICB5OiAxMDAsXG4gICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzcnLFxuICAgICAgICAgIHJhZGl1czogMzAsXG4gICAgICAgICAgeDogMjAwLFxuICAgICAgICAgIHk6IDE1MCxcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KSxcbiAgKSxcbiAgZGltZW5zaW9uczoge1xuICAgIGhlaWdodDogMjkxLFxuICAgIHdpZHRoOiA0MTAsXG4gIH0sXG4gIGhvdHNwb3RDb2xvcjogJ3JnYmEoMTM3LCAxODMsIDI0NCwgMC42NSknLFxuICBvdXRsaW5lQ29sb3I6ICdibHVlJyxcbiAgbXVsdGlwbGVDb3JyZWN0OiB0cnVlLFxufSk7XG5cbmRlc2NyaWJlKCdIb3RzcG90Q29udGFpbmVyJywgKCkgPT4ge1xuICBsZXQgdyxcbiAgICBvbkltYWdlVXBsb2FkID0gamVzdC5mbigpLFxuICAgIG9uVXBkYXRlSW1hZ2VEaW1lbnNpb24gPSBqZXN0LmZuKCksXG4gICAgb25EZWxldGVTaGFwZSA9IGplc3QuZm4oKSxcbiAgICBvblVwZGF0ZVNoYXBlcyA9IGplc3QuZm4oKSxcbiAgICBpbml0aWFsTW9kZWwgPSBtb2RlbCgpO1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB3ID0gKGV4dHJhcykgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgICBkaW1lbnNpb25zOiBpbml0aWFsTW9kZWwuZGltZW5zaW9ucyxcbiAgICAgICAgaW1hZ2VVcmw6IGluaXRpYWxNb2RlbC5pbWFnZVVybCxcbiAgICAgICAgbXVsdGlwbGVDb3JyZWN0OiBpbml0aWFsTW9kZWwubXVsdGlwbGVDb3JyZWN0LFxuICAgICAgICBob3RzcG90Q29sb3I6IGluaXRpYWxNb2RlbC5ob3RzcG90Q29sb3IsXG4gICAgICAgIG91dGxpbmVDb2xvcjogaW5pdGlhbE1vZGVsLm91dGxpbmVDb2xvcixcbiAgICAgICAgb25VcGRhdGVJbWFnZURpbWVuc2lvbjogb25VcGRhdGVJbWFnZURpbWVuc2lvbixcbiAgICAgICAgb25VcGRhdGVTaGFwZXM6IG9uVXBkYXRlU2hhcGVzLFxuICAgICAgICBvbkRlbGV0ZVNoYXBlOiBvbkRlbGV0ZVNoYXBlLFxuICAgICAgICBvbkltYWdlVXBsb2FkOiBvbkltYWdlVXBsb2FkLFxuICAgICAgICBzaGFwZXM6IGluaXRpYWxNb2RlbC5zaGFwZXMsXG4gICAgICAgIC4uLmV4dHJhcyxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxDb250YWluZXIgey4uLnByb3BzfSAvPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3KCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgbGV0IHdyYXBwZXI7XG4gICAgbGV0IGZvcm1hdHRlZFNoYXBlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgaGVpZ2h0OiAxNDAsXG4gICAgICAgIHdpZHRoOiAxMzAsXG4gICAgICAgIHg6IDEsXG4gICAgICAgIHk6IDEsXG4gICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgIGdyb3VwOiAncmVjdGFuZ2xlcycsXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgaGVpZ2h0OiAxNDAsXG4gICAgICAgIHdpZHRoOiAxMzAsXG4gICAgICAgIHg6IDE0MCxcbiAgICAgICAgeTogMSxcbiAgICAgICAgZ3JvdXA6ICdyZWN0YW5nbGVzJyxcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJzInLFxuICAgICAgICBoZWlnaHQ6IDE0MCxcbiAgICAgICAgd2lkdGg6IDEzMCxcbiAgICAgICAgeDogMjgwLFxuICAgICAgICB5OiAxLFxuICAgICAgICBncm91cDogJ3JlY3RhbmdsZXMnLFxuICAgICAgICBpbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnMycsXG4gICAgICAgIHBvaW50czogW1xuICAgICAgICAgIHsgeDogMSwgeTogMTQ4IH0sXG4gICAgICAgICAgeyB4OiAxLCB5OiAyODggfSxcbiAgICAgICAgICB7IHk6IDI4OCwgeDogMTI5IH0sXG4gICAgICAgICAgeyB5OiAxNDgsIHg6IDEyOSB9LFxuICAgICAgICBdLFxuICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICBncm91cDogJ3BvbHlnb25zJyxcbiAgICAgICAgaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJzQnLFxuICAgICAgICBwb2ludHM6IFtcbiAgICAgICAgICB7IHk6IDE1MSwgeDogMTQxIH0sXG4gICAgICAgICAgeyB5OiAyODksIHg6IDE0MSB9LFxuICAgICAgICAgIHsgeTogMjg5LCB4OiAyNjkgfSxcbiAgICAgICAgICB7IHg6IDI2OSwgeTogMTUxIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICBncm91cDogJ3BvbHlnb25zJyxcbiAgICAgICAgaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJzUnLFxuICAgICAgICBwb2ludHM6IFtcbiAgICAgICAgICB7IHg6IDI3OSwgeTogMTUwIH0sXG4gICAgICAgICAgeyB4OiAyNzksIHk6IDI4OSB9LFxuICAgICAgICAgIHsgeDogNDA3LCB5OiAyODkgfSxcbiAgICAgICAgICB7IHg6IDQwNywgeTogMTUwIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICBncm91cDogJ3BvbHlnb25zJyxcbiAgICAgICAgaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJzYnLFxuICAgICAgICByYWRpdXM6IDcwLFxuICAgICAgICB4OiAxMDAsXG4gICAgICAgIHk6IDEwMCxcbiAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgIGdyb3VwOiAnY2lyY2xlcycsXG4gICAgICAgIGluZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICc3JyxcbiAgICAgICAgcmFkaXVzOiAzMCxcbiAgICAgICAgeDogMjAwLFxuICAgICAgICB5OiAxNTAsXG4gICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgIGdyb3VwOiAnY2lyY2xlcycsXG4gICAgICAgIGluZGV4OiA3LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3cmFwcGVyID0gdygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N0YXRlIHdpbGwgY29udGFpbiBmb3JtYXR0ZWQgc2hhcGVzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIuaW5zdGFuY2UoKS5zdGF0ZS5zaGFwZXMpLnRvRXF1YWwoZXhwZWN0LmFycmF5Q29udGFpbmluZyhmb3JtYXR0ZWRTaGFwZXMpKTtcbiAgICB9KTtcblxuICAgIGl0KCdvblVwZGF0ZVNoYXBlcyB3aXRoIG5ldyBhZGRlZCBzaGFwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NoYXBlID0ge1xuICAgICAgICBpZDogJzgnLFxuICAgICAgICBoZWlnaHQ6IDE0MCxcbiAgICAgICAgd2lkdGg6IDEzMCxcbiAgICAgICAgeDogMjgwLFxuICAgICAgICB5OiAxLFxuICAgICAgICBncm91cDogJ3JlY3RhbmdsZXMnLFxuICAgICAgfTtcblxuICAgICAgd3JhcHBlci5pbnN0YW5jZSgpLm9uVXBkYXRlU2hhcGVzKFsuLi5mb3JtYXR0ZWRTaGFwZXMsIG5ld1NoYXBlXSk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZVNoYXBlcykudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKHtcbiAgICAgICAgcmVjdGFuZ2xlczogW1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbC5zaGFwZXMucmVjdGFuZ2xlcyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAxNDAsXG4gICAgICAgICAgICB3aWR0aDogMTMwLFxuICAgICAgICAgICAgeDogMjgwLFxuICAgICAgICAgICAgeTogMSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwb2x5Z29uczogaW5pdGlhbE1vZGVsLnNoYXBlcy5wb2x5Z29ucyxcbiAgICAgICAgY2lyY2xlczogaW5pdGlhbE1vZGVsLnNoYXBlcy5jaXJjbGVzLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnb25EZWxldGVTaGFwZSBieSBpZCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCd3cmFwcGVyJywgd3JhcHBlci5pbnN0YW5jZSgpKTtcbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5vbkRlbGV0ZVNoYXBlKCc4Jyk7XG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBncm91cFNoYXBlcyhbXG4gICAgICAgICAgeyBjb3JyZWN0OiB0cnVlLCBncm91cDogJ3JlY3RhbmdsZXMnLCBoZWlnaHQ6IDE0MCwgaWQ6ICcwJywgaW5kZXg6IDAsIHdpZHRoOiAxMzAsIHg6IDEsIHk6IDEgfSxcbiAgICAgICAgICB7IGdyb3VwOiAncmVjdGFuZ2xlcycsIGhlaWdodDogMTQwLCBpZDogJzEnLCBpbmRleDogMSwgd2lkdGg6IDEzMCwgeDogMTQwLCB5OiAxIH0sXG4gICAgICAgICAgeyBncm91cDogJ3JlY3RhbmdsZXMnLCBoZWlnaHQ6IDE0MCwgaWQ6ICcyJywgaW5kZXg6IDIsIHdpZHRoOiAxMzAsIHg6IDI4MCwgeTogMSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICBncm91cDogJ3BvbHlnb25zJyxcbiAgICAgICAgICAgIGlkOiAnMycsXG4gICAgICAgICAgICBpbmRleDogMyxcbiAgICAgICAgICAgIHBvaW50czogW1xuICAgICAgICAgICAgICB7IHg6IDEsIHk6IDE0OCB9LFxuICAgICAgICAgICAgICB7IHg6IDEsIHk6IDI4OCB9LFxuICAgICAgICAgICAgICB7IHg6IDEyOSwgeTogMjg4IH0sXG4gICAgICAgICAgICAgIHsgeDogMTI5LCB5OiAxNDggfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIGdyb3VwOiAncG9seWdvbnMnLFxuICAgICAgICAgICAgaWQ6ICc0JyxcbiAgICAgICAgICAgIGluZGV4OiA0LFxuICAgICAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICAgIHsgeDogMTQxLCB5OiAxNTEgfSxcbiAgICAgICAgICAgICAgeyB4OiAxNDEsIHk6IDI4OSB9LFxuICAgICAgICAgICAgICB7IHg6IDI2OSwgeTogMjg5IH0sXG4gICAgICAgICAgICAgIHsgeDogMjY5LCB5OiAxNTEgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIGdyb3VwOiAncG9seWdvbnMnLFxuICAgICAgICAgICAgaWQ6ICc1JyxcbiAgICAgICAgICAgIGluZGV4OiA1LFxuICAgICAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICAgIHsgeDogMjc5LCB5OiAxNTAgfSxcbiAgICAgICAgICAgICAgeyB4OiAyNzksIHk6IDI4OSB9LFxuICAgICAgICAgICAgICB7IHg6IDQwNywgeTogMjg5IH0sXG4gICAgICAgICAgICAgIHsgeDogNDA3LCB5OiAxNTAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzYnLFxuICAgICAgICAgICAgcmFkaXVzOiA3MCxcbiAgICAgICAgICAgIHg6IDEwMCxcbiAgICAgICAgICAgIHk6IDEwMCxcbiAgICAgICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgZ3JvdXA6ICdjaXJjbGVzJyxcbiAgICAgICAgICAgIGluZGV4OiA2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICc3JyxcbiAgICAgICAgICAgIHJhZGl1czogMzAsXG4gICAgICAgICAgICB4OiAyMDAsXG4gICAgICAgICAgICB5OiAxNTAsXG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgZ3JvdXA6ICdjaXJjbGVzJyxcbiAgICAgICAgICAgIGluZGV4OiA3LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdvblVwZGF0ZVNoYXBlcyB3aXRoIG5vIHNoYXBlcycsICgpID0+IHtcbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5vblVwZGF0ZVNoYXBlcyhbXSk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZVNoYXBlcykudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKHtcbiAgICAgICAgcmVjdGFuZ2xlczogW10sXG4gICAgICAgIHBvbHlnb25zOiBbXSxcbiAgICAgICAgY2lyY2xlczogW10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVDbGVhckFsbCcsICgpID0+IHtcbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5oYW5kbGVDbGVhckFsbCgpO1xuICAgICAgZXhwZWN0KG9uVXBkYXRlU2hhcGVzKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoe1xuICAgICAgICByZWN0YW5nbGVzOiBbXSxcbiAgICAgICAgcG9seWdvbnM6IFtdLFxuICAgICAgICBjaXJjbGVzOiBbXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBRUEsTUFBTUssS0FBSyxHQUFHQSxDQUFBLE1BQU87RUFDbkJDLFFBQVEsRUFBRSxrRUFBa0U7RUFDNUVDLE1BQU0sRUFBRSxJQUFBQyxrQkFBVyxFQUNqQixJQUFBQyxtQkFBWSxFQUFDO0lBQ1hDLFVBQVUsRUFBRSxDQUNWO01BQ0VDLEVBQUUsRUFBRSxHQUFHO01BQ1BD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
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _enzyme = require("enzyme");
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _hotspotDrawable = require("../hotspot-drawable");
7
+ const model = () => ({
8
+ imageUrl: 'https://cdn.fluence.net/image/0240eb1455ce4c4bb6180232347b6aef_W',
9
+ shapes: [{
10
+ id: '0',
11
+ height: 140,
12
+ width: 130,
13
+ x: 1,
14
+ y: 1,
15
+ correct: true,
16
+ group: 'rectangles'
17
+ }, {
18
+ id: '1',
19
+ height: 140,
20
+ width: 130,
21
+ x: 140,
22
+ y: 1,
23
+ group: 'rectangles'
24
+ }, {
25
+ id: '2',
26
+ height: 140,
27
+ width: 130,
28
+ x: 280,
29
+ y: 1,
30
+ group: 'rectangles'
31
+ }, {
32
+ id: '3',
33
+ points: [{
34
+ x: 1,
35
+ y: 148
36
+ }, {
37
+ x: 1,
38
+ y: 288
39
+ }, {
40
+ y: 288,
41
+ x: 129
42
+ }, {
43
+ y: 148,
44
+ x: 129
45
+ }],
46
+ correct: true,
47
+ group: 'polygons'
48
+ }, {
49
+ id: '4',
50
+ points: [{
51
+ y: 151,
52
+ x: 141
53
+ }, {
54
+ y: 289,
55
+ x: 141
56
+ }, {
57
+ y: 289,
58
+ x: 269
59
+ }, {
60
+ x: 269,
61
+ y: 151
62
+ }],
63
+ correct: false,
64
+ group: 'polygons'
65
+ }, {
66
+ id: '5',
67
+ points: [{
68
+ x: 279,
69
+ y: 150
70
+ }, {
71
+ x: 279,
72
+ y: 289
73
+ }, {
74
+ x: 407,
75
+ y: 289
76
+ }, {
77
+ x: 407,
78
+ y: 150
79
+ }],
80
+ correct: false,
81
+ group: 'polygons'
82
+ }],
83
+ dimensions: {
84
+ height: 291,
85
+ width: 410
86
+ },
87
+ hotspotColor: 'rgba(137, 183, 244, 0.65)',
88
+ outlineColor: 'blue',
89
+ multipleCorrect: true
90
+ });
91
+ describe('HotspotDrawable', () => {
92
+ let w,
93
+ handleDisableDrag = jest.fn(),
94
+ handleEnableDrag = jest.fn(),
95
+ onUpdateImageDimension = jest.fn(),
96
+ onUpdateShapes = jest.fn(),
97
+ initialModel = model();
98
+ beforeEach(() => {
99
+ w = extras => {
100
+ const props = {
101
+ classes: {},
102
+ dimensions: initialModel.dimensions,
103
+ disableDrag: handleDisableDrag,
104
+ enableDrag: handleEnableDrag,
105
+ imageUrl: initialModel.imageUrl,
106
+ hotspotColor: initialModel.hotspotColor,
107
+ multipleCorrect: initialModel.multipleCorrect,
108
+ onUpdateImageDimension: onUpdateImageDimension,
109
+ onUpdateShapes: onUpdateShapes,
110
+ outlineColor: initialModel.outlineColor,
111
+ shapes: initialModel.shapes,
112
+ strokeWidth: 5,
113
+ shapeType: 'rectangle',
114
+ handleFinishDrawing: jest.fn(),
115
+ onDeleteShape: jest.fn(),
116
+ ...extras
117
+ };
118
+ return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_hotspotDrawable.Drawable, props));
119
+ };
120
+ });
121
+ describe('render', () => {
122
+ it('renders with default strokeWidth', () => {
123
+ expect(w()).toMatchSnapshot();
124
+ });
125
+ it('renders with given strokeWidth', () => {
126
+ expect(w({
127
+ strokeWidth: 10
128
+ })).toMatchSnapshot();
129
+ });
130
+ it('renders', () => {
131
+ expect(w()).toMatchSnapshot();
132
+ });
133
+ });
134
+ describe('logic', () => {
135
+ let wrapper;
136
+ beforeEach(() => {
137
+ wrapper = w();
138
+ });
139
+ it('handleOnMouseDown target != Stage', () => {
140
+ wrapper.instance().state.stateShapes = initialModel.shapes;
141
+ const event = {
142
+ target: 'Line',
143
+ currentTarget: 'Stage',
144
+ evt: {
145
+ layerX: 20,
146
+ layerY: 30
147
+ }
148
+ };
149
+ wrapper.instance().handleOnMouseDown(event);
150
+ expect(onUpdateShapes).not.toBeCalled();
151
+ });
152
+ it('handleOnMouseDown target = Stage', () => {
153
+ const event = {
154
+ target: 'Stage',
155
+ currentTarget: 'Stage',
156
+ evt: {
157
+ layerX: 20,
158
+ layerY: 30
159
+ }
160
+ };
161
+ wrapper.instance().handleOnMouseDown(event);
162
+ expect(onUpdateShapes).toHaveBeenCalledWith([...initialModel.shapes, {
163
+ id: '6',
164
+ height: 0,
165
+ width: 0,
166
+ x: 20,
167
+ y: 30,
168
+ group: 'rectangles',
169
+ index: 6
170
+ }]);
171
+ });
172
+ it('handleOnMouseUp isDrawing = true', () => {
173
+ wrapper.instance().state.isDrawing = true;
174
+ wrapper.instance().state.shapes = initialModel.shapes.slice(0, 2);
175
+ wrapper.instance().handleOnMouseUp({
176
+ evt: {
177
+ layerX: 20,
178
+ layerY: 30
179
+ }
180
+ });
181
+ expect(onUpdateShapes).toHaveBeenCalledWith([...initialModel.shapes.slice(0, 2)]);
182
+
183
+ // at this point, state.stateShapes is false, so we don't want to update shapes with false (onUpdateShapes)
184
+ expect(wrapper.instance().state.stateShapes).toEqual(false);
185
+ wrapper.instance().handleOnMouseUp({
186
+ evt: {
187
+ layerX: 20,
188
+ layerY: 30
189
+ }
190
+ });
191
+ expect(onUpdateShapes).not.toBeCalledWith(false);
192
+ wrapper.instance().handleOnMouseUp({});
193
+ expect(onUpdateShapes).toHaveBeenCalledWith(initialModel.shapes.slice(0, 2));
194
+ });
195
+ it('handleOnSetAsCorrect correct', () => {
196
+ wrapper.instance().handleOnSetAsCorrect({
197
+ id: '1'
198
+ });
199
+ expect(onUpdateShapes).toHaveBeenCalledWith([initialModel.shapes[0], {
200
+ ...initialModel.shapes[1],
201
+ correct: true
202
+ }, ...initialModel.shapes.slice(2)]);
203
+ });
204
+ it('handleOnSetAsCorrect incorrect', () => {
205
+ wrapper.instance().handleOnSetAsCorrect({
206
+ id: '0'
207
+ });
208
+ expect(onUpdateShapes).toHaveBeenCalledWith([{
209
+ ...initialModel.shapes[0],
210
+ correct: false
211
+ }, ...initialModel.shapes.slice(1)]);
212
+ });
213
+ it('handleOnDragEnd', () => {
214
+ wrapper.instance().handleOnDragEnd('0', {
215
+ x: 1,
216
+ y: 1
217
+ });
218
+ expect(onUpdateShapes).toHaveBeenCalledWith([{
219
+ ...initialModel.shapes[0],
220
+ x: 1,
221
+ y: 1
222
+ }, ...initialModel.shapes.slice(1)]);
223
+ });
224
+ it('handleOnDragEnd unexistent id', () => {
225
+ wrapper.instance().handleOnDragEnd('10', {
226
+ x: 1,
227
+ y: 1
228
+ });
229
+ expect(onUpdateShapes).toHaveBeenCalledWith(initialModel.shapes);
230
+ });
231
+ });
232
+ });
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZW56eW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaG90c3BvdERyYXdhYmxlIiwibW9kZWwiLCJpbWFnZVVybCIsInNoYXBlcyIsImlkIiwiaGVpZ2h0Iiwid2lkdGgiLCJ4IiwieSIsImNvcnJlY3QiLCJncm91cCIsInBvaW50cyIsImRpbWVuc2lvbnMiLCJob3RzcG90Q29sb3IiLCJvdXRsaW5lQ29sb3IiLCJtdWx0aXBsZUNvcnJlY3QiLCJkZXNjcmliZSIsInciLCJoYW5kbGVEaXNhYmxlRHJhZyIsImplc3QiLCJmbiIsImhhbmRsZUVuYWJsZURyYWciLCJvblVwZGF0ZUltYWdlRGltZW5zaW9uIiwib25VcGRhdGVTaGFwZXMiLCJpbml0aWFsTW9kZWwiLCJiZWZvcmVFYWNoIiwiZXh0cmFzIiwicHJvcHMiLCJjbGFzc2VzIiwiZGlzYWJsZURyYWciLCJlbmFibGVEcmFnIiwic3Ryb2tlV2lkdGgiLCJzaGFwZVR5cGUiLCJoYW5kbGVGaW5pc2hEcmF3aW5nIiwib25EZWxldGVTaGFwZSIsInNoYWxsb3ciLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIkRyYXdhYmxlIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3cmFwcGVyIiwiaW5zdGFuY2UiLCJzdGF0ZSIsInN0YXRlU2hhcGVzIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiZXZ0IiwibGF5ZXJYIiwibGF5ZXJZIiwiaGFuZGxlT25Nb3VzZURvd24iLCJub3QiLCJ0b0JlQ2FsbGVkIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJpbmRleCIsImlzRHJhd2luZyIsInNsaWNlIiwiaGFuZGxlT25Nb3VzZVVwIiwidG9FcXVhbCIsInRvQmVDYWxsZWRXaXRoIiwiaGFuZGxlT25TZXRBc0NvcnJlY3QiLCJoYW5kbGVPbkRyYWdFbmQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2hvdHNwb3QtZHJhd2FibGUudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEcmF3YWJsZSB9IGZyb20gJy4uL2hvdHNwb3QtZHJhd2FibGUnO1xuXG5jb25zdCBtb2RlbCA9ICgpID0+ICh7XG4gIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uZmx1ZW5jZS5uZXQvaW1hZ2UvMDI0MGViMTQ1NWNlNGM0YmI2MTgwMjMyMzQ3YjZhZWZfVycsXG4gIHNoYXBlczogW1xuICAgIHtcbiAgICAgIGlkOiAnMCcsXG4gICAgICBoZWlnaHQ6IDE0MCxcbiAgICAgIHdpZHRoOiAxMzAsXG4gICAgICB4OiAxLFxuICAgICAgeTogMSxcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICBncm91cDogJ3JlY3RhbmdsZXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxJyxcbiAgICAgIGhlaWdodDogMTQwLFxuICAgICAgd2lkdGg6IDEzMCxcbiAgICAgIHg6IDE0MCxcbiAgICAgIHk6IDEsXG4gICAgICBncm91cDogJ3JlY3RhbmdsZXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcyJyxcbiAgICAgIGhlaWdodDogMTQwLFxuICAgICAgd2lkdGg6IDEzMCxcbiAgICAgIHg6IDI4MCxcbiAgICAgIHk6IDEsXG4gICAgICBncm91cDogJ3JlY3RhbmdsZXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICczJyxcbiAgICAgIHBvaW50czogW1xuICAgICAgICB7IHg6IDEsIHk6IDE0OCB9LFxuICAgICAgICB7IHg6IDEsIHk6IDI4OCB9LFxuICAgICAgICB7IHk6IDI4OCwgeDogMTI5IH0sXG4gICAgICAgIHsgeTogMTQ4LCB4OiAxMjkgfSxcbiAgICAgIF0sXG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgZ3JvdXA6ICdwb2x5Z29ucycsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzQnLFxuICAgICAgcG9pbnRzOiBbXG4gICAgICAgIHsgeTogMTUxLCB4OiAxNDEgfSxcbiAgICAgICAgeyB5OiAyODksIHg6IDE0MSB9LFxuICAgICAgICB7IHk6IDI4OSwgeDogMjY5IH0sXG4gICAgICAgIHsgeDogMjY5LCB5OiAxNTEgfSxcbiAgICAgIF0sXG4gICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgIGdyb3VwOiAncG9seWdvbnMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc1JyxcbiAgICAgIHBvaW50czogW1xuICAgICAgICB7IHg6IDI3OSwgeTogMTUwIH0sXG4gICAgICAgIHsgeDogMjc5LCB5OiAyODkgfSxcbiAgICAgICAgeyB4OiA0MDcsIHk6IDI4OSB9LFxuICAgICAgICB7IHg6IDQwNywgeTogMTUwIH0sXG4gICAgICBdLFxuICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICBncm91cDogJ3BvbHlnb25zJyxcbiAgICB9LFxuICBdLFxuICBkaW1lbnNpb25zOiB7XG4gICAgaGVpZ2h0OiAyOTEsXG4gICAgd2lkdGg6IDQxMCxcbiAgfSxcbiAgaG90c3BvdENvbG9yOiAncmdiYSgxMzcsIDE4MywgMjQ0LCAwLjY1KScsXG4gIG91dGxpbmVDb2xvcjogJ2JsdWUnLFxuICBtdWx0aXBsZUNvcnJlY3Q6IHRydWUsXG59KTtcblxuZGVzY3JpYmUoJ0hvdHNwb3REcmF3YWJsZScsICgpID0+IHtcbiAgbGV0IHcsXG4gICAgaGFuZGxlRGlzYWJsZURyYWcgPSBqZXN0LmZuKCksXG4gICAgaGFuZGxlRW5hYmxlRHJhZyA9IGplc3QuZm4oKSxcbiAgICBvblVwZGF0ZUltYWdlRGltZW5zaW9uID0gamVzdC5mbigpLFxuICAgIG9uVXBkYXRlU2hhcGVzID0gamVzdC5mbigpLFxuICAgIGluaXRpYWxNb2RlbCA9IG1vZGVsKCk7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHcgPSAoZXh0cmFzKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGRpbWVuc2lvbnM6IGluaXRpYWxNb2RlbC5kaW1lbnNpb25zLFxuICAgICAgICBkaXNhYmxlRHJhZzogaGFuZGxlRGlzYWJsZURyYWcsXG4gICAgICAgIGVuYWJsZURyYWc6IGhhbmRsZUVuYWJsZURyYWcsXG4gICAgICAgIGltYWdlVXJsOiBpbml0aWFsTW9kZWwuaW1hZ2VVcmwsXG4gICAgICAgIGhvdHNwb3RDb2xvcjogaW5pdGlhbE1vZGVsLmhvdHNwb3RDb2xvcixcbiAgICAgICAgbXVsdGlwbGVDb3JyZWN0OiBpbml0aWFsTW9kZWwubXVsdGlwbGVDb3JyZWN0LFxuICAgICAgICBvblVwZGF0ZUltYWdlRGltZW5zaW9uOiBvblVwZGF0ZUltYWdlRGltZW5zaW9uLFxuICAgICAgICBvblVwZGF0ZVNoYXBlczogb25VcGRhdGVTaGFwZXMsXG4gICAgICAgIG91dGxpbmVDb2xvcjogaW5pdGlhbE1vZGVsLm91dGxpbmVDb2xvcixcbiAgICAgICAgc2hhcGVzOiBpbml0aWFsTW9kZWwuc2hhcGVzLFxuICAgICAgICBzdHJva2VXaWR0aDogNSxcbiAgICAgICAgc2hhcGVUeXBlOiAncmVjdGFuZ2xlJyxcbiAgICAgICAgaGFuZGxlRmluaXNoRHJhd2luZzogamVzdC5mbigpLFxuICAgICAgICBvbkRlbGV0ZVNoYXBlOiBqZXN0LmZuKCksXG4gICAgICAgIC4uLmV4dHJhcyxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxEcmF3YWJsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICB9O1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggZGVmYXVsdCBzdHJva2VXaWR0aCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3KCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBnaXZlbiBzdHJva2VXaWR0aCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3KHsgc3Ryb2tlV2lkdGg6IDEwIH0pKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHcoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBsZXQgd3JhcHBlcjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgd3JhcHBlciA9IHcoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbk1vdXNlRG93biB0YXJnZXQgIT0gU3RhZ2UnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyLmluc3RhbmNlKCkuc3RhdGUuc3RhdGVTaGFwZXMgPSBpbml0aWFsTW9kZWwuc2hhcGVzO1xuXG4gICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgdGFyZ2V0OiAnTGluZScsXG4gICAgICAgIGN1cnJlbnRUYXJnZXQ6ICdTdGFnZScsXG4gICAgICAgIGV2dDoge1xuICAgICAgICAgIGxheWVyWDogMjAsXG4gICAgICAgICAgbGF5ZXJZOiAzMCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5oYW5kbGVPbk1vdXNlRG93bihldmVudCk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZVNoYXBlcykubm90LnRvQmVDYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbk1vdXNlRG93biB0YXJnZXQgPSBTdGFnZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICB0YXJnZXQ6ICdTdGFnZScsXG4gICAgICAgIGN1cnJlbnRUYXJnZXQ6ICdTdGFnZScsXG4gICAgICAgIGV2dDoge1xuICAgICAgICAgIGxheWVyWDogMjAsXG4gICAgICAgICAgbGF5ZXJZOiAzMCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5oYW5kbGVPbk1vdXNlRG93bihldmVudCk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZVNoYXBlcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoW1xuICAgICAgICAuLi5pbml0aWFsTW9kZWwuc2hhcGVzLFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2JyxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgeDogMjAsXG4gICAgICAgICAgeTogMzAsXG4gICAgICAgICAgZ3JvdXA6ICdyZWN0YW5nbGVzJyxcbiAgICAgICAgICBpbmRleDogNixcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZU9uTW91c2VVcCBpc0RyYXdpbmcgPSB0cnVlJywgKCkgPT4ge1xuICAgICAgd3JhcHBlci5pbnN0YW5jZSgpLnN0YXRlLmlzRHJhd2luZyA9IHRydWU7XG4gICAgICB3cmFwcGVyLmluc3RhbmNlKCkuc3RhdGUuc2hhcGVzID0gaW5pdGlhbE1vZGVsLnNoYXBlcy5zbGljZSgwLCAyKTtcblxuICAgICAgd3JhcHBlci5pbnN0YW5jZSgpLmhhbmRsZU9uTW91c2VVcCh7XG4gICAgICAgIGV2dDoge1xuICAgICAgICAgIGxheWVyWDogMjAsXG4gICAgICAgICAgbGF5ZXJZOiAzMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFsuLi5pbml0aWFsTW9kZWwuc2hhcGVzLnNsaWNlKDAsIDIpXSk7XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHN0YXRlLnN0YXRlU2hhcGVzIGlzIGZhbHNlLCBzbyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBzaGFwZXMgd2l0aCBmYWxzZSAob25VcGRhdGVTaGFwZXMpXG4gICAgICBleHBlY3Qod3JhcHBlci5pbnN0YW5jZSgpLnN0YXRlLnN0YXRlU2hhcGVzKS50b0VxdWFsKGZhbHNlKTtcblxuICAgICAgd3JhcHBlci5pbnN0YW5jZSgpLmhhbmRsZU9uTW91c2VVcCh7XG4gICAgICAgIGV2dDoge1xuICAgICAgICAgIGxheWVyWDogMjAsXG4gICAgICAgICAgbGF5ZXJZOiAzMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLm5vdC50b0JlQ2FsbGVkV2l0aChmYWxzZSk7XG5cbiAgICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5oYW5kbGVPbk1vdXNlVXAoe30pO1xuXG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGluaXRpYWxNb2RlbC5zaGFwZXMuc2xpY2UoMCwgMikpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZU9uU2V0QXNDb3JyZWN0IGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyLmluc3RhbmNlKCkuaGFuZGxlT25TZXRBc0NvcnJlY3Qoe1xuICAgICAgICBpZDogJzEnLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChvblVwZGF0ZVNoYXBlcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoW1xuICAgICAgICBpbml0aWFsTW9kZWwuc2hhcGVzWzBdLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uaW5pdGlhbE1vZGVsLnNoYXBlc1sxXSxcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAuLi5pbml0aWFsTW9kZWwuc2hhcGVzLnNsaWNlKDIpLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlT25TZXRBc0NvcnJlY3QgaW5jb3JyZWN0JywgKCkgPT4ge1xuICAgICAgd3JhcHBlci5pbnN0YW5jZSgpLmhhbmRsZU9uU2V0QXNDb3JyZWN0KHtcbiAgICAgICAgaWQ6ICcwJyxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcbiAgICAgICAge1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbC5zaGFwZXNbMF0sXG4gICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmluaXRpYWxNb2RlbC5zaGFwZXMuc2xpY2UoMSksXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVPbkRyYWdFbmQnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyLmluc3RhbmNlKCkuaGFuZGxlT25EcmFnRW5kKCcwJywgeyB4OiAxLCB5OiAxIH0pO1xuXG4gICAgICBleHBlY3Qob25VcGRhdGVTaGFwZXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcbiAgICAgICAge1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbC5zaGFwZXNbMF0sXG4gICAgICAgICAgeDogMSxcbiAgICAgICAgICB5OiAxLFxuICAgICAgICB9LFxuICAgICAgICAuLi5pbml0aWFsTW9kZWwuc2hhcGVzLnNsaWNlKDEpLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlT25EcmFnRW5kIHVuZXhpc3RlbnQgaWQnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyLmluc3RhbmNlKCkuaGFuZGxlT25EcmFnRW5kKCcxMCcsIHsgeDogMSwgeTogMSB9KTtcblxuICAgICAgZXhwZWN0KG9uVXBkYXRlU2hhcGVzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChpbml0aWFsTW9kZWwuc2hhcGVzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUVBLE1BQU1JLEtBQUssR0FBR0EsQ0FBQSxNQUFPO0VBQ25CQyxRQUFRLEVBQUUsa0VBQWtFO0VBQzVFQyxNQUFNLEVBQUUsQ0FDTjtJQUNFQyxFQUFFLEVBQUUsR0FBRztJQUNQQyxNQUFNLEVBQUUsR0FBRztJQUNYQyxLQUFLLEVBQUUsR0FBRztJQUNWQyxDQUFDLEVB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