@shopware-ag/dive 1.16.0 → 1.16.2

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 (143) hide show
  1. package/README.md +271 -40
  2. package/build/dive.cjs +575 -159
  3. package/build/dive.cjs.map +1 -1
  4. package/build/dive.d.cts +83 -57
  5. package/build/dive.d.ts +83 -57
  6. package/build/dive.js +614 -164
  7. package/build/dive.js.map +1 -1
  8. package/package.json +72 -60
  9. package/src/__test__/DIVE.test.ts +35 -31
  10. package/src/animation/AnimationSystem.ts +4 -4
  11. package/src/animation/__test__/AnimationSystem.test.ts +3 -3
  12. package/src/axiscamera/AxisCamera.ts +31 -11
  13. package/src/axiscamera/__test__/AxisCamera.test.ts +18 -10
  14. package/src/camera/PerspectiveCamera.ts +28 -13
  15. package/src/camera/__test__/PerspectiveCamera.test.ts +2 -2
  16. package/src/com/Communication.ts +282 -100
  17. package/src/com/__test__/Communication.test.ts +207 -141
  18. package/src/com/actions/camera/computeencompassingview.ts +8 -7
  19. package/src/com/actions/camera/getcameratransform.ts +8 -7
  20. package/src/com/actions/camera/movecamera.ts +16 -13
  21. package/src/com/actions/camera/resetcamera.ts +4 -3
  22. package/src/com/actions/camera/setcameralayer.ts +4 -3
  23. package/src/com/actions/camera/setcameratransform.ts +8 -7
  24. package/src/com/actions/camera/zoomcamera.ts +4 -3
  25. package/src/com/actions/index.ts +54 -54
  26. package/src/com/actions/media/generatemedia.ts +17 -13
  27. package/src/com/actions/object/addobject.ts +5 -4
  28. package/src/com/actions/object/deleteobject.ts +5 -4
  29. package/src/com/actions/object/deselectobject.ts +5 -4
  30. package/src/com/actions/object/getallobjects.ts +5 -4
  31. package/src/com/actions/object/getobjects.ts +5 -4
  32. package/src/com/actions/object/model/dropit.ts +4 -3
  33. package/src/com/actions/object/model/modelloaded.ts +4 -3
  34. package/src/com/actions/object/model/placeonfloor.ts +4 -3
  35. package/src/com/actions/object/selectobject.ts +5 -4
  36. package/src/com/actions/object/setparent.ts +8 -7
  37. package/src/com/actions/object/updateobject.ts +5 -4
  38. package/src/com/actions/scene/exportscene.ts +5 -4
  39. package/src/com/actions/scene/getallscenedata.ts +24 -18
  40. package/src/com/actions/scene/setbackground.ts +4 -3
  41. package/src/com/actions/scene/updatescene.ts +10 -9
  42. package/src/com/actions/toolbox/select/setgizmomode.ts +4 -3
  43. package/src/com/actions/toolbox/transform/setgizmovisible.ts +4 -3
  44. package/src/com/actions/toolbox/usetool.ts +5 -4
  45. package/src/com/types/COMBaseEntity.ts +2 -2
  46. package/src/com/types/COMEntity.ts +6 -6
  47. package/src/com/types/COMEntityType.ts +1 -1
  48. package/src/com/types/COMGeometry.ts +2 -2
  49. package/src/com/types/COMGroup.ts +3 -3
  50. package/src/com/types/COMLight.ts +3 -3
  51. package/src/com/types/COMMaterial.ts +2 -2
  52. package/src/com/types/COMModel.ts +4 -4
  53. package/src/com/types/COMPov.ts +3 -3
  54. package/src/com/types/COMPrimitive.ts +5 -5
  55. package/src/com/types/index.ts +10 -10
  56. package/src/constant/AxisHelperColors.ts +1 -1
  57. package/src/constant/GridColors.ts +1 -1
  58. package/src/controls/OrbitControls.ts +62 -29
  59. package/src/controls/__test__/OrbitControls.test.ts +133 -39
  60. package/src/dive.ts +82 -36
  61. package/src/gizmo/Gizmo.ts +21 -13
  62. package/src/gizmo/handles/AxisHandle.ts +40 -17
  63. package/src/gizmo/handles/RadialHandle.ts +39 -15
  64. package/src/gizmo/handles/ScaleHandle.ts +62 -25
  65. package/src/gizmo/plane/GizmoPlane.ts +5 -6
  66. package/src/gizmo/rotate/RotateGizmo.ts +58 -16
  67. package/src/gizmo/scale/ScaleGizmo.ts +37 -15
  68. package/src/gizmo/translate/TranslateGizmo.ts +34 -14
  69. package/src/grid/Grid.ts +13 -5
  70. package/src/grid/__test__/Grid.test.ts +5 -3
  71. package/src/group/Group.ts +9 -7
  72. package/src/group/__test__/Group.test.ts +8 -6
  73. package/src/helper/applyMixins/__test__/applyMixins.test.ts +9 -6
  74. package/src/helper/applyMixins/applyMixins.ts +6 -3
  75. package/src/helper/findInterface/__test__/findInterface.test.ts +28 -18
  76. package/src/helper/findInterface/findInterface.ts +7 -4
  77. package/src/helper/findSceneRecursive/__test__/findSceneRecursive.test.ts +1 -1
  78. package/src/helper/findSceneRecursive/findSceneRecursive.ts +1 -1
  79. package/src/helper/getObjectDelta/__test__/getObjectDelta.test.ts +43 -7
  80. package/src/helper/getObjectDelta/getObjectDelta.ts +13 -9
  81. package/src/helper/isInterface/__test__/implementsInterface.test.ts +1 -1
  82. package/src/helper/isInterface/implementsInterface.ts +6 -3
  83. package/src/info/Info.ts +20 -16
  84. package/src/info/__test__/Info.test.ts +67 -36
  85. package/src/interface/Draggable.ts +2 -2
  86. package/src/interface/Hoverable.ts +2 -2
  87. package/src/interface/Movable.ts +1 -1
  88. package/src/interface/Rotatable.ts +1 -1
  89. package/src/interface/Scalable.ts +1 -1
  90. package/src/io/IO.ts +21 -43
  91. package/src/io/__test__/IO.test.ts +16 -62
  92. package/src/io/gltf/GLTFIO.ts +34 -31
  93. package/src/io/gltf/__test__/GLTFIO.test.ts +88 -78
  94. package/src/light/PointLight.ts +42 -9
  95. package/src/light/SceneLight.ts +5 -5
  96. package/src/light/__test__/AmbientLight.test.ts +5 -4
  97. package/src/light/__test__/PointLight.test.ts +14 -10
  98. package/src/light/__test__/SceneLight.test.ts +19 -13
  99. package/src/loadingmanager/LoadingManager.ts +11 -6
  100. package/src/loadingmanager/__test__/LoadingManager.test.ts +14 -9
  101. package/src/math/__test__/DIVEMath.test.ts +1 -1
  102. package/src/math/ceil/__test__/ceilExp.test.ts +1 -1
  103. package/src/math/ceil/ceilExp.ts +2 -2
  104. package/src/math/floor/__test__/floorExp.test.ts +1 -1
  105. package/src/math/floor/floorExp.ts +2 -2
  106. package/src/math/helper/__test__/shift.test.ts +1 -1
  107. package/src/math/helper/shift.ts +1 -1
  108. package/src/math/index.ts +7 -7
  109. package/src/math/round/__test__/roundExp.test.ts +1 -1
  110. package/src/math/round/roundExp.ts +6 -3
  111. package/src/math/signedAngleTo/__test__/signedAngleTo.test.ts +10 -4
  112. package/src/math/signedAngleTo/signedAngleTo.ts +11 -4
  113. package/src/math/toFixed/__test__/toFixedExp.test.ts +9 -9
  114. package/src/math/toFixed/toFixedExp.ts +6 -3
  115. package/src/math/truncate/__test__/truncateExp.test.ts +1 -1
  116. package/src/math/truncate/truncateExp.ts +6 -3
  117. package/src/mediacreator/MediaCreator.ts +20 -10
  118. package/src/mediacreator/__test__/MediaCreator.test.ts +27 -12
  119. package/src/model/Model.ts +35 -7
  120. package/src/model/__test__/Model.test.ts +71 -44
  121. package/src/node/Node.ts +34 -12
  122. package/src/node/__test__/Node.test.ts +17 -13
  123. package/src/primitive/Primitive.ts +78 -13
  124. package/src/primitive/__test__/Primitive.test.ts +49 -38
  125. package/src/primitive/floor/Floor.ts +14 -3
  126. package/src/primitive/floor/__test__/Floor.test.ts +10 -4
  127. package/src/renderer/Renderer.ts +46 -15
  128. package/src/renderer/__test__/Renderer.test.ts +74 -24
  129. package/src/scene/Scene.ts +9 -3
  130. package/src/scene/__test__/Scene.test.ts +2 -2
  131. package/src/scene/root/Root.ts +142 -75
  132. package/src/scene/root/__test__/Root.test.ts +439 -111
  133. package/src/toolbox/BaseTool.ts +69 -33
  134. package/src/toolbox/Toolbox.ts +37 -17
  135. package/src/toolbox/__test__/BaseTool.test.ts +324 -160
  136. package/src/toolbox/__test__/Toolbox.test.ts +31 -14
  137. package/src/toolbox/select/SelectTool.ts +24 -19
  138. package/src/toolbox/select/__test__/SelectTool.test.ts +95 -59
  139. package/src/toolbox/transform/TransformTool.ts +40 -17
  140. package/src/toolbox/transform/__test__/TransformTool.test.ts +22 -15
  141. package/src/types/SceneObjects.ts +8 -8
  142. package/src/types/SceneType.ts +3 -3
  143. package/src/types/index.ts +3 -6
@@ -1,4 +1,3 @@
1
-
2
1
  import { DIVEBaseTool } from '../BaseTool';
3
2
  import type DIVEOrbitControls from '../../controls/OrbitControls';
4
3
  import type { DIVEScene } from '../../scene/Scene';
@@ -10,7 +9,6 @@ import { type DIVEDraggable } from '../../interface/Draggable';
10
9
  * @jest-environment jsdom
11
10
  */
12
11
 
13
-
14
12
  const mock_Canvas = {
15
13
  width: 0,
16
14
  height: 0,
@@ -25,8 +23,8 @@ const mockController = {
25
23
  domElement: mock_Canvas,
26
24
  object: {
27
25
  isPerspectiveCamera: true,
28
- type: 'cameraP'
29
- }
26
+ type: 'cameraP',
27
+ },
30
28
  } as unknown as DIVEOrbitControls;
31
29
 
32
30
  const mockScene = {
@@ -36,7 +34,7 @@ const mockScene = {
36
34
  const abstractWrapper = class Wrapper extends DIVEBaseTool {
37
35
  constructor(scene: DIVEScene, controller: DIVEOrbitControls) {
38
36
  super(scene, controller);
39
- this.name = "DIVEBaseTool";
37
+ this.name = 'DIVEBaseTool';
40
38
  }
41
39
  };
42
40
 
@@ -95,9 +93,15 @@ describe('dive/toolbox/DIVEBaseTool', () => {
95
93
 
96
94
  it('should execute onPointerDown correctly', () => {
97
95
  const toolBox = new abstractWrapper(mockScene, mockController);
98
- expect(() => toolBox.onPointerDown({ button: 0 } as PointerEvent)).not.toThrow();
99
- expect(() => toolBox.onPointerDown({ button: 1 } as PointerEvent)).not.toThrow();
100
- expect(() => toolBox.onPointerDown({ button: 2 } as PointerEvent)).not.toThrow();
96
+ expect(() =>
97
+ toolBox.onPointerDown({ button: 0 } as PointerEvent),
98
+ ).not.toThrow();
99
+ expect(() =>
100
+ toolBox.onPointerDown({ button: 1 } as PointerEvent),
101
+ ).not.toThrow();
102
+ expect(() =>
103
+ toolBox.onPointerDown({ button: 2 } as PointerEvent),
104
+ ).not.toThrow();
101
105
 
102
106
  toolBox['_intersects'] = [
103
107
  {
@@ -107,12 +111,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
107
111
  return {
108
112
  x: 1,
109
113
  y: 1,
110
- z: 1
114
+ z: 1,
111
115
  } as unknown as Vector3;
112
116
  },
113
117
  x: 1,
114
118
  y: 1,
115
- z: 1
119
+ z: 1,
116
120
  } as unknown as Vector3,
117
121
  object: {
118
122
  uuid: 'uuid2',
@@ -120,13 +124,19 @@ describe('dive/toolbox/DIVEBaseTool', () => {
120
124
  onPointerEnter() {
121
125
  return;
122
126
  },
123
- } as unknown as Object3D & DIVEHoverable
124
- }
127
+ } as unknown as Object3D & DIVEHoverable,
128
+ },
125
129
  ];
126
130
 
127
- expect(() => toolBox.onPointerDown({ button: 0 } as PointerEvent)).not.toThrow();
128
- expect(() => toolBox.onPointerDown({ button: 1 } as PointerEvent)).not.toThrow();
129
- expect(() => toolBox.onPointerDown({ button: 2 } as PointerEvent)).not.toThrow();
131
+ expect(() =>
132
+ toolBox.onPointerDown({ button: 0 } as PointerEvent),
133
+ ).not.toThrow();
134
+ expect(() =>
135
+ toolBox.onPointerDown({ button: 1 } as PointerEvent),
136
+ ).not.toThrow();
137
+ expect(() =>
138
+ toolBox.onPointerDown({ button: 2 } as PointerEvent),
139
+ ).not.toThrow();
130
140
  });
131
141
 
132
142
  it('should execute onPointerMove correctly', () => {
@@ -134,7 +144,10 @@ describe('dive/toolbox/DIVEBaseTool', () => {
134
144
  jest.spyOn(toolBox['_raycaster'], 'setFromCamera').mockImplementation();
135
145
 
136
146
  // test with no hit with hovered object before
137
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce([]);
147
+ jest.spyOn(
148
+ toolBox['_raycaster'],
149
+ 'intersectObjects',
150
+ ).mockReturnValueOnce([]);
138
151
 
139
152
  toolBox['_hovered'] = {
140
153
  uuid: 'uuid',
@@ -143,82 +156,139 @@ describe('dive/toolbox/DIVEBaseTool', () => {
143
156
  },
144
157
  } as Object3D & DIVEHoverable;
145
158
 
146
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
147
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
148
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
159
+ expect(() =>
160
+ toolBox.onPointerMove({
161
+ button: 0,
162
+ offsetX: 100,
163
+ offsetY: 100,
164
+ } as PointerEvent),
165
+ ).not.toThrow();
166
+ expect(() =>
167
+ toolBox.onPointerMove({
168
+ button: 1,
169
+ offsetX: 100,
170
+ offsetY: 100,
171
+ } as PointerEvent),
172
+ ).not.toThrow();
173
+ expect(() =>
174
+ toolBox.onPointerMove({
175
+ button: 2,
176
+ offsetX: 100,
177
+ offsetY: 100,
178
+ } as PointerEvent),
179
+ ).not.toThrow();
149
180
 
150
181
  // test with no hovered object
151
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce(
152
- [
153
- {
154
- distance: 1,
155
- point: {
156
- x: 1,
157
- y: 1,
158
- z: 1
159
- } as unknown as Vector3,
160
- object: {
161
- uuid: 'uuid',
162
- isHoverable: true,
163
- visible: true,
164
- } as Object3D & DIVEHoverable
165
- }
166
- ]
167
- );
182
+ jest.spyOn(
183
+ toolBox['_raycaster'],
184
+ 'intersectObjects',
185
+ ).mockReturnValueOnce([
186
+ {
187
+ distance: 1,
188
+ point: {
189
+ x: 1,
190
+ y: 1,
191
+ z: 1,
192
+ } as unknown as Vector3,
193
+ object: {
194
+ uuid: 'uuid',
195
+ isHoverable: true,
196
+ visible: true,
197
+ } as Object3D & DIVEHoverable,
198
+ },
199
+ ]);
168
200
 
169
201
  toolBox['_hovered'] = null;
170
202
 
171
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
172
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
173
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
203
+ expect(() =>
204
+ toolBox.onPointerMove({
205
+ button: 0,
206
+ offsetX: 100,
207
+ offsetY: 100,
208
+ } as PointerEvent),
209
+ ).not.toThrow();
210
+ expect(() =>
211
+ toolBox.onPointerMove({
212
+ button: 1,
213
+ offsetX: 100,
214
+ offsetY: 100,
215
+ } as PointerEvent),
216
+ ).not.toThrow();
217
+ expect(() =>
218
+ toolBox.onPointerMove({
219
+ button: 2,
220
+ offsetX: 100,
221
+ offsetY: 100,
222
+ } as PointerEvent),
223
+ ).not.toThrow();
174
224
 
175
225
  // test with no hovered object with onPointerEnter
176
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce(
177
- [
178
- {
179
- distance: 1,
180
- point: {
181
- x: 1,
182
- y: 1,
183
- z: 1
184
- } as unknown as Vector3,
185
- object: {
186
- uuid: 'uuid',
187
- isHoverable: true,
188
- visible: true,
189
- onPointerEnter() {
190
- return;
191
- },
192
- } as unknown as Object3D & DIVEHoverable
193
- }
194
- ]
195
- );
196
-
197
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
198
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
199
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
226
+ jest.spyOn(
227
+ toolBox['_raycaster'],
228
+ 'intersectObjects',
229
+ ).mockReturnValueOnce([
230
+ {
231
+ distance: 1,
232
+ point: {
233
+ x: 1,
234
+ y: 1,
235
+ z: 1,
236
+ } as unknown as Vector3,
237
+ object: {
238
+ uuid: 'uuid',
239
+ isHoverable: true,
240
+ visible: true,
241
+ onPointerEnter() {
242
+ return;
243
+ },
244
+ } as unknown as Object3D & DIVEHoverable,
245
+ },
246
+ ]);
247
+
248
+ expect(() =>
249
+ toolBox.onPointerMove({
250
+ button: 0,
251
+ offsetX: 100,
252
+ offsetY: 100,
253
+ } as PointerEvent),
254
+ ).not.toThrow();
255
+ expect(() =>
256
+ toolBox.onPointerMove({
257
+ button: 1,
258
+ offsetX: 100,
259
+ offsetY: 100,
260
+ } as PointerEvent),
261
+ ).not.toThrow();
262
+ expect(() =>
263
+ toolBox.onPointerMove({
264
+ button: 2,
265
+ offsetX: 100,
266
+ offsetY: 100,
267
+ } as PointerEvent),
268
+ ).not.toThrow();
200
269
 
201
270
  // test with same hovered object
202
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce(
203
- [
204
- {
205
- distance: 1,
206
- point: {
207
- x: 1,
208
- y: 1,
209
- z: 1
210
- } as unknown as Vector3,
211
- object: {
212
- uuid: 'uuid',
213
- isHoverable: true,
214
- visible: true,
215
- onPointerOver() {
216
- return;
217
- }
218
- } as unknown as Object3D & DIVEHoverable
219
- }
220
- ]
221
- );
271
+ jest.spyOn(
272
+ toolBox['_raycaster'],
273
+ 'intersectObjects',
274
+ ).mockReturnValueOnce([
275
+ {
276
+ distance: 1,
277
+ point: {
278
+ x: 1,
279
+ y: 1,
280
+ z: 1,
281
+ } as unknown as Vector3,
282
+ object: {
283
+ uuid: 'uuid',
284
+ isHoverable: true,
285
+ visible: true,
286
+ onPointerOver() {
287
+ return;
288
+ },
289
+ } as unknown as Object3D & DIVEHoverable,
290
+ },
291
+ ]);
222
292
 
223
293
  toolBox['_hovered'] = {
224
294
  uuid: 'uuid',
@@ -228,31 +298,50 @@ describe('dive/toolbox/DIVEBaseTool', () => {
228
298
  },
229
299
  } as Object3D & DIVEHoverable;
230
300
 
231
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
232
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
233
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
301
+ expect(() =>
302
+ toolBox.onPointerMove({
303
+ button: 0,
304
+ offsetX: 100,
305
+ offsetY: 100,
306
+ } as PointerEvent),
307
+ ).not.toThrow();
308
+ expect(() =>
309
+ toolBox.onPointerMove({
310
+ button: 1,
311
+ offsetX: 100,
312
+ offsetY: 100,
313
+ } as PointerEvent),
314
+ ).not.toThrow();
315
+ expect(() =>
316
+ toolBox.onPointerMove({
317
+ button: 2,
318
+ offsetX: 100,
319
+ offsetY: 100,
320
+ } as PointerEvent),
321
+ ).not.toThrow();
234
322
 
235
323
  // test with different hovered object
236
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce(
237
- [
238
- {
239
- distance: 1,
240
- point: {
241
- x: 1,
242
- y: 1,
243
- z: 1
244
- } as unknown as Vector3,
245
- object: {
246
- uuid: 'uuid2',
247
- isHoverable: true,
248
- visible: true,
249
- onPointerEnter() {
250
- return;
251
- },
252
- } as unknown as Object3D & DIVEHoverable
253
- }
254
- ]
255
- );
324
+ jest.spyOn(
325
+ toolBox['_raycaster'],
326
+ 'intersectObjects',
327
+ ).mockReturnValueOnce([
328
+ {
329
+ distance: 1,
330
+ point: {
331
+ x: 1,
332
+ y: 1,
333
+ z: 1,
334
+ } as unknown as Vector3,
335
+ object: {
336
+ uuid: 'uuid2',
337
+ isHoverable: true,
338
+ visible: true,
339
+ onPointerEnter() {
340
+ return;
341
+ },
342
+ } as unknown as Object3D & DIVEHoverable,
343
+ },
344
+ ]);
256
345
 
257
346
  toolBox['_hovered'] = {
258
347
  uuid: 'uuid',
@@ -262,31 +351,93 @@ describe('dive/toolbox/DIVEBaseTool', () => {
262
351
  },
263
352
  } as Object3D & DIVEHoverable;
264
353
 
265
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
266
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
267
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
354
+ expect(() =>
355
+ toolBox.onPointerMove({
356
+ button: 0,
357
+ offsetX: 100,
358
+ offsetY: 100,
359
+ } as PointerEvent),
360
+ ).not.toThrow();
361
+ expect(() =>
362
+ toolBox.onPointerMove({
363
+ button: 1,
364
+ offsetX: 100,
365
+ offsetY: 100,
366
+ } as PointerEvent),
367
+ ).not.toThrow();
368
+ expect(() =>
369
+ toolBox.onPointerMove({
370
+ button: 2,
371
+ offsetX: 100,
372
+ offsetY: 100,
373
+ } as PointerEvent),
374
+ ).not.toThrow();
268
375
 
269
376
  // test with pointer down
270
377
  toolBox['_pointerPrimaryDown'] = true;
271
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
272
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
273
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
378
+ expect(() =>
379
+ toolBox.onPointerMove({
380
+ button: 0,
381
+ offsetX: 100,
382
+ offsetY: 100,
383
+ } as PointerEvent),
384
+ ).not.toThrow();
385
+ expect(() =>
386
+ toolBox.onPointerMove({
387
+ button: 1,
388
+ offsetX: 100,
389
+ offsetY: 100,
390
+ } as PointerEvent),
391
+ ).not.toThrow();
392
+ expect(() =>
393
+ toolBox.onPointerMove({
394
+ button: 2,
395
+ offsetX: 100,
396
+ offsetY: 100,
397
+ } as PointerEvent),
398
+ ).not.toThrow();
274
399
 
275
400
  // test with pointer down while already dragging
276
401
  toolBox['_pointerPrimaryDown'] = true;
277
402
  toolBox['_dragging'] = true;
278
- expect(() => toolBox.onPointerMove({ button: 0, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
279
- expect(() => toolBox.onPointerMove({ button: 1, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
280
- expect(() => toolBox.onPointerMove({ button: 2, offsetX: 100, offsetY: 100 } as PointerEvent)).not.toThrow();
403
+ expect(() =>
404
+ toolBox.onPointerMove({
405
+ button: 0,
406
+ offsetX: 100,
407
+ offsetY: 100,
408
+ } as PointerEvent),
409
+ ).not.toThrow();
410
+ expect(() =>
411
+ toolBox.onPointerMove({
412
+ button: 1,
413
+ offsetX: 100,
414
+ offsetY: 100,
415
+ } as PointerEvent),
416
+ ).not.toThrow();
417
+ expect(() =>
418
+ toolBox.onPointerMove({
419
+ button: 2,
420
+ offsetX: 100,
421
+ offsetY: 100,
422
+ } as PointerEvent),
423
+ ).not.toThrow();
281
424
  });
282
425
 
283
426
  it('should execute onPointerUp correctly', () => {
284
427
  const toolBox = new abstractWrapper(mockScene, mockController);
285
- expect(() => toolBox.onPointerUp({ button: 0 } as PointerEvent)).not.toThrow();
286
- expect(() => toolBox.onPointerUp({ button: 1 } as PointerEvent)).not.toThrow();
287
- expect(() => toolBox.onPointerUp({ button: 2 } as PointerEvent)).not.toThrow();
288
-
289
- toolBox['pointerWasDragged'] = () => { return true; };
428
+ expect(() =>
429
+ toolBox.onPointerUp({ button: 0 } as PointerEvent),
430
+ ).not.toThrow();
431
+ expect(() =>
432
+ toolBox.onPointerUp({ button: 1 } as PointerEvent),
433
+ ).not.toThrow();
434
+ expect(() =>
435
+ toolBox.onPointerUp({ button: 2 } as PointerEvent),
436
+ ).not.toThrow();
437
+
438
+ toolBox['pointerWasDragged'] = () => {
439
+ return true;
440
+ };
290
441
  toolBox['_dragging'] = true;
291
442
  toolBox['_intersects'] = [
292
443
  {
@@ -296,12 +447,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
296
447
  return {
297
448
  x: 1,
298
449
  y: 1,
299
- z: 1
450
+ z: 1,
300
451
  } as unknown as Vector3;
301
452
  },
302
453
  x: 1,
303
454
  y: 1,
304
- z: 1
455
+ z: 1,
305
456
  } as unknown as Vector3,
306
457
  object: {
307
458
  uuid: 'uuid2',
@@ -309,17 +460,23 @@ describe('dive/toolbox/DIVEBaseTool', () => {
309
460
  onPointerEnter() {
310
461
  return;
311
462
  },
312
- } as unknown as Object3D & DIVEHoverable
313
- }
463
+ } as unknown as Object3D & DIVEHoverable,
464
+ },
314
465
  ];
315
466
  toolBox['_draggable'] = {
316
467
  onDragEnd() {
317
468
  return;
318
469
  },
319
470
  } as unknown as Object3D & DIVEDraggable;
320
- expect(() => toolBox.onPointerUp({ button: 0 } as PointerEvent)).not.toThrow();
321
- expect(() => toolBox.onPointerUp({ button: 1 } as PointerEvent)).not.toThrow();
322
- expect(() => toolBox.onPointerUp({ button: 2 } as PointerEvent)).not.toThrow();
471
+ expect(() =>
472
+ toolBox.onPointerUp({ button: 0 } as PointerEvent),
473
+ ).not.toThrow();
474
+ expect(() =>
475
+ toolBox.onPointerUp({ button: 1 } as PointerEvent),
476
+ ).not.toThrow();
477
+ expect(() =>
478
+ toolBox.onPointerUp({ button: 2 } as PointerEvent),
479
+ ).not.toThrow();
323
480
  });
324
481
 
325
482
  it('should execute onDragStart correctly', () => {
@@ -336,10 +493,16 @@ describe('dive/toolbox/DIVEBaseTool', () => {
336
493
  toolBox['_dragRaycastOnObjects'] = [];
337
494
  expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
338
495
 
339
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce([]);
496
+ jest.spyOn(
497
+ toolBox['_raycaster'],
498
+ 'intersectObjects',
499
+ ).mockReturnValueOnce([]);
340
500
  expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
341
501
 
342
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce([
502
+ jest.spyOn(
503
+ toolBox['_raycaster'],
504
+ 'intersectObjects',
505
+ ).mockReturnValueOnce([
343
506
  {
344
507
  distance: 1,
345
508
  point: {
@@ -347,12 +510,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
347
510
  return {
348
511
  x: 1,
349
512
  y: 1,
350
- z: 1
513
+ z: 1,
351
514
  } as unknown as Vector3;
352
515
  },
353
516
  x: 1,
354
517
  y: 1,
355
- z: 1
518
+ z: 1,
356
519
  } as unknown as Vector3,
357
520
  object: {
358
521
  uuid: 'uuid2',
@@ -360,8 +523,8 @@ describe('dive/toolbox/DIVEBaseTool', () => {
360
523
  onPointerEnter() {
361
524
  return;
362
525
  },
363
- } as unknown as Object3D & DIVEHoverable
364
- }
526
+ } as unknown as Object3D & DIVEHoverable,
527
+ },
365
528
  ]);
366
529
  expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
367
530
 
@@ -385,32 +548,33 @@ describe('dive/toolbox/DIVEBaseTool', () => {
385
548
  return;
386
549
  },
387
550
  } as unknown as Object3D & DIVEDraggable;
388
- jest.spyOn(toolBox['_raycaster'], 'intersectObjects').mockReturnValueOnce(
389
- [
390
- {
391
- distance: 1,
392
- point: {
393
- clone() {
394
- return {
395
- x: 1,
396
- y: 1,
397
- z: 1
398
- } as unknown as Vector3;
399
- },
400
- x: 1,
401
- y: 1,
402
- z: 1
403
- } as unknown as Vector3,
404
- object: {
405
- uuid: 'uuid2',
406
- isHoverable: true,
407
- onPointerEnter() {
408
- return;
409
- },
410
- } as unknown as Object3D & DIVEHoverable
411
- }
412
- ]
413
- );
551
+ jest.spyOn(
552
+ toolBox['_raycaster'],
553
+ 'intersectObjects',
554
+ ).mockReturnValueOnce([
555
+ {
556
+ distance: 1,
557
+ point: {
558
+ clone() {
559
+ return {
560
+ x: 1,
561
+ y: 1,
562
+ z: 1,
563
+ } as unknown as Vector3;
564
+ },
565
+ x: 1,
566
+ y: 1,
567
+ z: 1,
568
+ } as unknown as Vector3,
569
+ object: {
570
+ uuid: 'uuid2',
571
+ isHoverable: true,
572
+ onPointerEnter() {
573
+ return;
574
+ },
575
+ } as unknown as Object3D & DIVEHoverable,
576
+ },
577
+ ]);
414
578
  expect(() => toolBox.onDrag({} as PointerEvent)).not.toThrow();
415
579
  });
416
580
 
@@ -428,4 +592,4 @@ describe('dive/toolbox/DIVEBaseTool', () => {
428
592
  const toolBox = new abstractWrapper(mockScene, mockController);
429
593
  expect(() => toolBox.onWheel({} as WheelEvent)).not.toThrow();
430
594
  });
431
- });
595
+ });