@shopware-ag/dive 1.19.0 → 1.19.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/build/dive.cjs +388 -220
  2. package/build/dive.cjs.map +1 -1
  3. package/build/dive.js +395 -21946
  4. package/build/dive.js.map +1 -1
  5. package/build/dive.mjs +28206 -0
  6. package/build/dive.mjs.map +1 -0
  7. package/build/src/ar/AR.d.ts +37 -14
  8. package/build/src/ar/arquicklook/ARQuickLook.d.ts +5 -6
  9. package/build/src/ar/sceneviewer/SceneViewer.d.ts +42 -6
  10. package/build/src/com/actions/scene/launchar.d.ts +5 -2
  11. package/build/src/converter/Converter.d.ts +21 -0
  12. package/build/src/dive.d.ts +3 -2
  13. package/build/src/exporter/Exporter.d.ts +11 -0
  14. package/build/src/helper/applyMixins/applyMixins.d.ts +22 -6
  15. package/build/src/info/Info.d.ts +37 -13
  16. package/build/src/interface/Movable.d.ts +5 -5
  17. package/build/src/interface/Selectable.d.ts +4 -4
  18. package/build/src/loader/Loader.d.ts +11 -0
  19. package/build/src/model/Model.d.ts +2 -2
  20. package/build/src/node/Node.d.ts +3 -3
  21. package/build/src/scene/root/Root.d.ts +1 -1
  22. package/build/src/types/ExporterOptions.d.ts +15 -0
  23. package/build/src/types/FileTypes.d.ts +27 -0
  24. package/build/src/types/index.d.ts +4 -0
  25. package/build/src/types/info/index.d.ts +66 -0
  26. package/package.json +17 -3
  27. package/build/src/exporters/usdz/USDZExporter.d.ts +0 -15
  28. package/build/src/loadingmanager/LoadingManager.d.ts +0 -14
  29. package/src/__test__/DIVE.test.ts +0 -274
  30. package/src/animation/AnimationSystem.ts +0 -34
  31. package/src/animation/__test__/AnimationSystem.test.ts +0 -40
  32. package/src/ar/AR.ts +0 -98
  33. package/src/ar/__test__/AR.test.ts +0 -187
  34. package/src/ar/arquicklook/ARQuickLook.ts +0 -93
  35. package/src/ar/arquicklook/__test__/ARQuickLook.test.ts +0 -93
  36. package/src/ar/sceneviewer/SceneViewer.ts +0 -74
  37. package/src/ar/sceneviewer/__test__/SceneViewer.test.ts +0 -93
  38. package/src/ar/webxr/WebXR.ts +0 -176
  39. package/src/ar/webxr/controller/WebXRController.ts +0 -340
  40. package/src/ar/webxr/crosshair/WebXRCrosshair.ts +0 -35
  41. package/src/ar/webxr/origin/WebXROrigin.ts +0 -192
  42. package/src/ar/webxr/overlay/Overlay.ts +0 -50
  43. package/src/ar/webxr/raycaster/WebXRRaycaster.ts +0 -131
  44. package/src/ar/webxr/raycaster/ar/WebXRRaycasterAR.ts +0 -102
  45. package/src/ar/webxr/raycaster/three/WebXRRaycasterTHREE.ts +0 -49
  46. package/src/ar/webxr/touchscreencontrols/WebXRTouchscreenControls.ts +0 -356
  47. package/src/axiscamera/AxisCamera.ts +0 -108
  48. package/src/axiscamera/__test__/AxisCamera.test.ts +0 -150
  49. package/src/camera/PerspectiveCamera.ts +0 -63
  50. package/src/camera/__test__/PerspectiveCamera.test.ts +0 -36
  51. package/src/com/Communication.ts +0 -808
  52. package/src/com/__test__/Communication.test.ts +0 -1024
  53. package/src/com/actions/camera/computeencompassingview.ts +0 -10
  54. package/src/com/actions/camera/getcameratransform.ts +0 -10
  55. package/src/com/actions/camera/movecamera.ts +0 -18
  56. package/src/com/actions/camera/resetcamera.ts +0 -5
  57. package/src/com/actions/camera/setcameralayer.ts +0 -5
  58. package/src/com/actions/camera/setcameratransform.ts +0 -10
  59. package/src/com/actions/camera/zoomcamera.ts +0 -5
  60. package/src/com/actions/index.ts +0 -61
  61. package/src/com/actions/media/generatemedia.ts +0 -18
  62. package/src/com/actions/object/addobject.ts +0 -7
  63. package/src/com/actions/object/deleteobject.ts +0 -7
  64. package/src/com/actions/object/deselectobject.ts +0 -7
  65. package/src/com/actions/object/getallobjects.ts +0 -7
  66. package/src/com/actions/object/getobjects.ts +0 -7
  67. package/src/com/actions/object/model/dropit.ts +0 -5
  68. package/src/com/actions/object/model/modelloaded.ts +0 -5
  69. package/src/com/actions/object/model/placeonfloor.ts +0 -5
  70. package/src/com/actions/object/selectobject.ts +0 -7
  71. package/src/com/actions/object/setparent.ts +0 -10
  72. package/src/com/actions/object/updateobject.ts +0 -7
  73. package/src/com/actions/renderer/startrender.ts +0 -5
  74. package/src/com/actions/scene/exportscene.ts +0 -7
  75. package/src/com/actions/scene/getallscenedata.ts +0 -7
  76. package/src/com/actions/scene/launchar.ts +0 -7
  77. package/src/com/actions/scene/setbackground.ts +0 -5
  78. package/src/com/actions/scene/updatescene.ts +0 -11
  79. package/src/com/actions/toolbox/select/setgizmomode.ts +0 -5
  80. package/src/com/actions/toolbox/transform/setgizmoscalelinked.ts +0 -5
  81. package/src/com/actions/toolbox/transform/setgizmovisible.ts +0 -5
  82. package/src/com/actions/toolbox/usetool.ts +0 -7
  83. package/src/com/types/COMBaseEntity.ts +0 -9
  84. package/src/com/types/COMEntity.ts +0 -7
  85. package/src/com/types/COMEntityType.ts +0 -1
  86. package/src/com/types/COMGeometry.ts +0 -8
  87. package/src/com/types/COMGeometryType.ts +0 -9
  88. package/src/com/types/COMGroup.ts +0 -9
  89. package/src/com/types/COMLight.ts +0 -11
  90. package/src/com/types/COMMaterial.ts +0 -12
  91. package/src/com/types/COMModel.ts +0 -12
  92. package/src/com/types/COMPov.ts +0 -8
  93. package/src/com/types/COMPrimitive.ts +0 -12
  94. package/src/com/types/index.ts +0 -23
  95. package/src/constant/AxisHelperColors.ts +0 -7
  96. package/src/constant/GridColors.ts +0 -2
  97. package/src/constant/VisibilityLayerMask.ts +0 -5
  98. package/src/controls/OrbitControls.ts +0 -211
  99. package/src/controls/__test__/OrbitControls.test.ts +0 -256
  100. package/src/dive.ts +0 -363
  101. package/src/events/EventExecutor.ts +0 -35
  102. package/src/exporters/usdz/USDZExporter.ts +0 -21
  103. package/src/exporters/usdz/__test__/USDZExporter.test.ts +0 -57
  104. package/src/gizmo/Gizmo.ts +0 -144
  105. package/src/gizmo/handles/AxisHandle.ts +0 -153
  106. package/src/gizmo/handles/RadialHandle.ts +0 -149
  107. package/src/gizmo/handles/ScaleHandle.ts +0 -195
  108. package/src/gizmo/plane/GizmoPlane.ts +0 -84
  109. package/src/gizmo/rotate/RotateGizmo.ts +0 -143
  110. package/src/gizmo/scale/ScaleGizmo.ts +0 -125
  111. package/src/gizmo/translate/TranslateGizmo.ts +0 -114
  112. package/src/grid/Grid.ts +0 -34
  113. package/src/grid/__test__/Grid.test.ts +0 -28
  114. package/src/group/Group.ts +0 -184
  115. package/src/group/__test__/Group.test.ts +0 -212
  116. package/src/helper/applyMixins/__test__/applyMixins.test.ts +0 -30
  117. package/src/helper/applyMixins/applyMixins.ts +0 -18
  118. package/src/helper/findInterface/__test__/findInterface.test.ts +0 -63
  119. package/src/helper/findInterface/findInterface.ts +0 -13
  120. package/src/helper/findSceneRecursive/__test__/findSceneRecursive.test.ts +0 -40
  121. package/src/helper/findSceneRecursive/findSceneRecursive.ts +0 -16
  122. package/src/helper/getObjectDelta/__test__/getObjectDelta.test.ts +0 -186
  123. package/src/helper/getObjectDelta/getObjectDelta.ts +0 -105
  124. package/src/helper/isInterface/__test__/implementsInterface.test.ts +0 -19
  125. package/src/helper/isInterface/implementsInterface.ts +0 -9
  126. package/src/info/Info.ts +0 -154
  127. package/src/info/__test__/Info.test.ts +0 -338
  128. package/src/interface/Draggable.ts +0 -14
  129. package/src/interface/Hoverable.ts +0 -14
  130. package/src/interface/Movable.ts +0 -12
  131. package/src/interface/Rotatable.ts +0 -10
  132. package/src/interface/Scalable.ts +0 -10
  133. package/src/interface/Selectable.ts +0 -11
  134. package/src/io/IO.ts +0 -62
  135. package/src/io/__test__/IO.test.ts +0 -116
  136. package/src/io/gltf/GLTFIO.ts +0 -56
  137. package/src/io/gltf/__test__/GLTFIO.test.ts +0 -108
  138. package/src/light/AmbientLight.ts +0 -39
  139. package/src/light/PointLight.ts +0 -115
  140. package/src/light/SceneLight.ts +0 -63
  141. package/src/light/__test__/AmbientLight.test.ts +0 -29
  142. package/src/light/__test__/PointLight.test.ts +0 -74
  143. package/src/light/__test__/SceneLight.test.ts +0 -47
  144. package/src/loadingmanager/LoadingManager.ts +0 -50
  145. package/src/loadingmanager/__test__/LoadingManager.test.ts +0 -27
  146. package/src/math/__test__/DIVEMath.test.ts +0 -12
  147. package/src/math/ceil/__test__/ceilExp.test.ts +0 -12
  148. package/src/math/ceil/ceilExp.ts +0 -6
  149. package/src/math/degToRad/__test__/degToRad.test.ts +0 -172
  150. package/src/math/degToRad/degToRad.ts +0 -5
  151. package/src/math/floor/__test__/floorExp.test.ts +0 -14
  152. package/src/math/floor/floorExp.ts +0 -6
  153. package/src/math/helper/__test__/shift.test.ts +0 -12
  154. package/src/math/helper/shift.ts +0 -4
  155. package/src/math/index.ts +0 -28
  156. package/src/math/radToDeg/__test__/radToDeg.test.ts +0 -155
  157. package/src/math/radToDeg/radToDeg.ts +0 -5
  158. package/src/math/round/__test__/roundExp.test.ts +0 -14
  159. package/src/math/round/roundExp.ts +0 -10
  160. package/src/math/signedAngleTo/__test__/signedAngleTo.test.ts +0 -20
  161. package/src/math/signedAngleTo/signedAngleTo.ts +0 -20
  162. package/src/math/toFixed/__test__/toFixedExp.test.ts +0 -14
  163. package/src/math/toFixed/toFixedExp.ts +0 -9
  164. package/src/math/truncate/__test__/truncateExp.test.ts +0 -14
  165. package/src/math/truncate/truncateExp.ts +0 -9
  166. package/src/mediacreator/MediaCreator.ts +0 -75
  167. package/src/mediacreator/__test__/MediaCreator.test.ts +0 -155
  168. package/src/model/Model.ts +0 -185
  169. package/src/model/__test__/Model.test.ts +0 -222
  170. package/src/module/Module.ts +0 -45
  171. package/src/module/__test__/Module.test.ts +0 -54
  172. package/src/node/Node.ts +0 -98
  173. package/src/node/__test__/Node.test.ts +0 -120
  174. package/src/primitive/Primitive.ts +0 -299
  175. package/src/primitive/__test__/Primitive.test.ts +0 -281
  176. package/src/primitive/floor/Floor.ts +0 -45
  177. package/src/primitive/floor/__test__/Floor.test.ts +0 -24
  178. package/src/renderer/Renderer.ts +0 -215
  179. package/src/renderer/__test__/Renderer.test.ts +0 -228
  180. package/src/scene/Scene.ts +0 -106
  181. package/src/scene/__test__/Scene.test.ts +0 -124
  182. package/src/scene/root/Root.ts +0 -426
  183. package/src/scene/root/__test__/Root.test.ts +0 -903
  184. package/src/scene/xrroot/XRRoot.ts +0 -56
  185. package/src/scene/xrroot/xrlightroot/XRLightRoot.ts +0 -80
  186. package/src/toolbox/BaseTool.ts +0 -319
  187. package/src/toolbox/Toolbox.ts +0 -129
  188. package/src/toolbox/__test__/BaseTool.test.ts +0 -627
  189. package/src/toolbox/__test__/Toolbox.test.ts +0 -143
  190. package/src/toolbox/select/SelectTool.ts +0 -92
  191. package/src/toolbox/select/__test__/SelectTool.test.ts +0 -237
  192. package/src/toolbox/transform/TransformTool.ts +0 -166
  193. package/src/toolbox/transform/__test__/TransformTool.test.ts +0 -147
  194. package/src/types/SceneData.ts +0 -26
  195. package/src/types/SceneObjects.ts +0 -14
  196. package/src/types/SceneType.ts +0 -14
  197. package/src/types/index.ts +0 -5
@@ -1,627 +0,0 @@
1
- import { DIVEBaseTool } from '../BaseTool';
2
- import type DIVEOrbitControls from '../../controls/OrbitControls';
3
- import type { DIVEScene } from '../../scene/Scene';
4
- import { Vector3, type Intersection, type Object3D } from 'three';
5
- import { type DIVEHoverable } from '../../interface/Hoverable';
6
- import { type DIVEDraggable } from '../../interface/Draggable';
7
- import { RaycasterIntersectObjectMock } from '../../../__mocks__/three';
8
-
9
- /**
10
- * @jest-environment jsdom
11
- */
12
-
13
- const mock_Canvas = {
14
- width: 0,
15
- height: 0,
16
- getContext: jest.fn(),
17
- clientWidth: 1000,
18
- clientHeight: 1000,
19
- offsetLeft: 0,
20
- offsetTop: 0,
21
- };
22
-
23
- const mockController = {
24
- domElement: mock_Canvas,
25
- object: {
26
- isPerspectiveCamera: true,
27
- type: 'cameraP',
28
- },
29
- } as unknown as DIVEOrbitControls;
30
-
31
- const mockScene = {
32
- children: [],
33
- } as unknown as DIVEScene;
34
-
35
- const abstractWrapper = class Wrapper extends DIVEBaseTool {
36
- constructor(scene: DIVEScene, controller: DIVEOrbitControls) {
37
- super(scene, controller);
38
- this.name = 'DIVEBaseTool';
39
- }
40
- };
41
-
42
- describe('dive/toolbox/DIVEBaseTool', () => {
43
- afterEach(() => {
44
- jest.clearAllMocks();
45
- });
46
-
47
- it('should instantiate', () => {
48
- const baseTool = new abstractWrapper(mockScene, mockController);
49
- expect(baseTool).toBeDefined();
50
- });
51
-
52
- it('should Activate', () => {
53
- const baseTool = new abstractWrapper(mockScene, mockController);
54
- expect(() => baseTool.Activate()).not.toThrow();
55
- });
56
-
57
- it('should Deactivate', () => {
58
- const baseTool = new abstractWrapper(mockScene, mockController);
59
- expect(() => baseTool.Deactivate()).not.toThrow();
60
- });
61
-
62
- it('should raycast', () => {
63
- const toolBox = new abstractWrapper(mockScene, mockController);
64
- RaycasterIntersectObjectMock.mockImplementationOnce(() => {
65
- return [
66
- {
67
- object: {
68
- visible: true,
69
- },
70
- } as unknown as Intersection,
71
- ];
72
- });
73
- expect(() => toolBox['raycast']()).not.toThrow();
74
- expect(RaycasterIntersectObjectMock).toHaveBeenCalled();
75
- });
76
-
77
- it('should raycast with selection of objects', () => {
78
- const toolBox = new abstractWrapper(mockScene, mockController);
79
- const spy = jest
80
- .spyOn(toolBox['_raycaster'], 'intersectObjects')
81
- .mockImplementationOnce(() => {
82
- return [
83
- {
84
- object: {
85
- visible: true,
86
- },
87
- } as unknown as Intersection,
88
- ];
89
- });
90
- expect(() => toolBox['raycast']([])).not.toThrow();
91
- expect(spy).toHaveBeenCalled();
92
- });
93
-
94
- it('should return correct pointerAnyDown', () => {
95
- const toolBox = new abstractWrapper(mockScene, mockController);
96
- expect(toolBox).toBeDefined();
97
- expect(toolBox['_pointerAnyDown']).toBeDefined();
98
- expect(toolBox['_pointerAnyDown']).toBe(false);
99
-
100
- toolBox['_pointerPrimaryDown'] = false;
101
- toolBox['_pointerMiddleDown'] = false;
102
- toolBox['_pointerSecondaryDown'] = false;
103
- expect(toolBox['_pointerAnyDown']).toBe(false);
104
-
105
- toolBox['_pointerPrimaryDown'] = true;
106
- toolBox['_pointerMiddleDown'] = false;
107
- toolBox['_pointerSecondaryDown'] = false;
108
- expect(toolBox['_pointerAnyDown']).toBe(true);
109
-
110
- toolBox['_pointerPrimaryDown'] = false;
111
- toolBox['_pointerMiddleDown'] = true;
112
- toolBox['_pointerSecondaryDown'] = false;
113
- expect(toolBox['_pointerAnyDown']).toBe(true);
114
-
115
- toolBox['_pointerPrimaryDown'] = false;
116
- toolBox['_pointerMiddleDown'] = false;
117
- toolBox['_pointerSecondaryDown'] = true;
118
- expect(toolBox['_pointerAnyDown']).toBe(true);
119
- });
120
-
121
- it('should execute onPointerDown correctly', () => {
122
- const toolBox = new abstractWrapper(mockScene, mockController);
123
- expect(() =>
124
- toolBox.onPointerDown({ button: 0 } as PointerEvent),
125
- ).not.toThrow();
126
-
127
- expect(() =>
128
- toolBox.onPointerDown({ button: 1 } as PointerEvent),
129
- ).not.toThrow();
130
-
131
- expect(() =>
132
- toolBox.onPointerDown({ button: 2 } as PointerEvent),
133
- ).not.toThrow();
134
-
135
- const spy = jest.spyOn(console, 'warn').mockImplementation();
136
- expect(() =>
137
- toolBox.onPointerDown({ button: 666 } as PointerEvent),
138
- ).not.toThrow();
139
- expect(spy).toHaveBeenCalled();
140
-
141
- toolBox['_intersects'] = [
142
- {
143
- distance: 1,
144
- point: {
145
- clone() {
146
- return {
147
- x: 1,
148
- y: 1,
149
- z: 1,
150
- } as unknown as Vector3;
151
- },
152
- x: 1,
153
- y: 1,
154
- z: 1,
155
- } as unknown as Vector3,
156
- object: {
157
- uuid: 'uuid2',
158
- isHoverable: true,
159
- onPointerEnter() {
160
- return;
161
- },
162
- } as unknown as Object3D & DIVEHoverable,
163
- },
164
- ];
165
-
166
- expect(() =>
167
- toolBox.onPointerDown({ button: 0 } as PointerEvent),
168
- ).not.toThrow();
169
- expect(() =>
170
- toolBox.onPointerDown({ button: 1 } as PointerEvent),
171
- ).not.toThrow();
172
- expect(() =>
173
- toolBox.onPointerDown({ button: 2 } as PointerEvent),
174
- ).not.toThrow();
175
- });
176
-
177
- it('should execute onPointerMove correctly', () => {
178
- const toolBox = new abstractWrapper(mockScene, mockController);
179
- jest.spyOn(toolBox['_raycaster'], 'setFromCamera').mockImplementation();
180
-
181
- const spy = jest.spyOn(toolBox['_raycaster'], 'intersectObjects');
182
-
183
- // test with no hit with hovered object before
184
- spy.mockReturnValue([]);
185
-
186
- toolBox['_hovered'] = {
187
- uuid: 'uuid',
188
- onPointerLeave() {
189
- return;
190
- },
191
- } as Object3D & DIVEHoverable;
192
-
193
- expect(() =>
194
- toolBox.onPointerMove({
195
- button: 0,
196
- offsetX: 100,
197
- offsetY: 100,
198
- } as PointerEvent),
199
- ).not.toThrow();
200
- expect(() =>
201
- toolBox.onPointerMove({
202
- button: 1,
203
- offsetX: 100,
204
- offsetY: 100,
205
- } as PointerEvent),
206
- ).not.toThrow();
207
- expect(() =>
208
- toolBox.onPointerMove({
209
- button: 2,
210
- offsetX: 100,
211
- offsetY: 100,
212
- } as PointerEvent),
213
- ).not.toThrow();
214
-
215
- // test with no hovered object
216
- spy.mockReturnValue([
217
- {
218
- distance: 1,
219
- point: {
220
- x: 1,
221
- y: 1,
222
- z: 1,
223
- } as unknown as Vector3,
224
- object: {
225
- uuid: 'uuid',
226
- isHoverable: true,
227
- visible: true,
228
- } as Object3D & DIVEHoverable,
229
- },
230
- ]);
231
-
232
- toolBox['_hovered'] = null;
233
-
234
- expect(() =>
235
- toolBox.onPointerMove({
236
- button: 0,
237
- offsetX: 100,
238
- offsetY: 100,
239
- } as PointerEvent),
240
- ).not.toThrow();
241
- expect(() =>
242
- toolBox.onPointerMove({
243
- button: 1,
244
- offsetX: 100,
245
- offsetY: 100,
246
- } as PointerEvent),
247
- ).not.toThrow();
248
- expect(() =>
249
- toolBox.onPointerMove({
250
- button: 2,
251
- offsetX: 100,
252
- offsetY: 100,
253
- } as PointerEvent),
254
- ).not.toThrow();
255
-
256
- // test with no hovered object with onPointerEnter
257
- spy.mockReturnValue([
258
- {
259
- distance: 1,
260
- point: {
261
- x: 1,
262
- y: 1,
263
- z: 1,
264
- } as unknown as Vector3,
265
- object: {
266
- uuid: 'uuid',
267
- isHoverable: true,
268
- visible: true,
269
- onPointerEnter() {
270
- return;
271
- },
272
- } as unknown as Object3D & DIVEHoverable,
273
- },
274
- ]);
275
-
276
- expect(() =>
277
- toolBox.onPointerMove({
278
- button: 0,
279
- offsetX: 100,
280
- offsetY: 100,
281
- } as PointerEvent),
282
- ).not.toThrow();
283
- expect(() =>
284
- toolBox.onPointerMove({
285
- button: 1,
286
- offsetX: 100,
287
- offsetY: 100,
288
- } as PointerEvent),
289
- ).not.toThrow();
290
- expect(() =>
291
- toolBox.onPointerMove({
292
- button: 2,
293
- offsetX: 100,
294
- offsetY: 100,
295
- } as PointerEvent),
296
- ).not.toThrow();
297
-
298
- // test with same hovered object
299
- spy.mockReturnValue([
300
- {
301
- distance: 1,
302
- point: {
303
- x: 1,
304
- y: 1,
305
- z: 1,
306
- } as unknown as Vector3,
307
- object: {
308
- uuid: 'uuid',
309
- isHoverable: true,
310
- visible: true,
311
- onPointerOver() {
312
- return;
313
- },
314
- } as unknown as Object3D & DIVEHoverable,
315
- },
316
- ]);
317
-
318
- toolBox['_hovered'] = {
319
- uuid: 'uuid',
320
- visible: true,
321
- onPointerLeave() {
322
- return;
323
- },
324
- } as Object3D & DIVEHoverable;
325
-
326
- expect(() =>
327
- toolBox.onPointerMove({
328
- button: 0,
329
- offsetX: 100,
330
- offsetY: 100,
331
- } as PointerEvent),
332
- ).not.toThrow();
333
- expect(() =>
334
- toolBox.onPointerMove({
335
- button: 1,
336
- offsetX: 100,
337
- offsetY: 100,
338
- } as PointerEvent),
339
- ).not.toThrow();
340
- expect(() =>
341
- toolBox.onPointerMove({
342
- button: 2,
343
- offsetX: 100,
344
- offsetY: 100,
345
- } as PointerEvent),
346
- ).not.toThrow();
347
-
348
- // test with different hovered object
349
- spy.mockReturnValue([
350
- {
351
- distance: 1,
352
- point: new Vector3(1, 1, 1),
353
- object: {
354
- uuid: 'uuid2',
355
- isHoverable: true,
356
- visible: true,
357
- onPointerEnter() {
358
- return;
359
- },
360
- } as unknown as Object3D & DIVEHoverable,
361
- },
362
- ]);
363
-
364
- toolBox['_hovered'] = {
365
- uuid: 'uuid',
366
- visible: true,
367
- onPointerLeave() {
368
- return;
369
- },
370
- } as Object3D & DIVEHoverable;
371
-
372
- expect(() =>
373
- toolBox.onPointerMove({
374
- button: 0,
375
- offsetX: 100,
376
- offsetY: 100,
377
- } as PointerEvent),
378
- ).not.toThrow();
379
- expect(() =>
380
- toolBox.onPointerMove({
381
- button: 1,
382
- offsetX: 100,
383
- offsetY: 100,
384
- } as PointerEvent),
385
- ).not.toThrow();
386
- expect(() =>
387
- toolBox.onPointerMove({
388
- button: 2,
389
- offsetX: 100,
390
- offsetY: 100,
391
- } as PointerEvent),
392
- ).not.toThrow();
393
-
394
- // test with pointer down
395
- toolBox['_pointerPrimaryDown'] = true;
396
- expect(() =>
397
- toolBox.onPointerMove({
398
- button: 0,
399
- offsetX: 100,
400
- offsetY: 100,
401
- } as PointerEvent),
402
- ).not.toThrow();
403
- expect(() =>
404
- toolBox.onPointerMove({
405
- button: 1,
406
- offsetX: 100,
407
- offsetY: 100,
408
- } as PointerEvent),
409
- ).not.toThrow();
410
- expect(() =>
411
- toolBox.onPointerMove({
412
- button: 2,
413
- offsetX: 100,
414
- offsetY: 100,
415
- } as PointerEvent),
416
- ).not.toThrow();
417
-
418
- // test with pointer down while already dragging
419
- toolBox['_pointerPrimaryDown'] = true;
420
- toolBox['_dragging'] = true;
421
- expect(() =>
422
- toolBox.onPointerMove({
423
- button: 0,
424
- offsetX: 100,
425
- offsetY: 100,
426
- } as PointerEvent),
427
- ).not.toThrow();
428
- expect(() =>
429
- toolBox.onPointerMove({
430
- button: 1,
431
- offsetX: 100,
432
- offsetY: 100,
433
- } as PointerEvent),
434
- ).not.toThrow();
435
- expect(() =>
436
- toolBox.onPointerMove({
437
- button: 2,
438
- offsetX: 100,
439
- offsetY: 100,
440
- } as PointerEvent),
441
- ).not.toThrow();
442
-
443
- spy.mockRestore();
444
- });
445
-
446
- it('should execute onPointerUp correctly', () => {
447
- const toolBox = new abstractWrapper(mockScene, mockController);
448
- expect(() =>
449
- toolBox.onPointerUp({ button: 0 } as PointerEvent),
450
- ).not.toThrow();
451
- expect(() =>
452
- toolBox.onPointerUp({ button: 1 } as PointerEvent),
453
- ).not.toThrow();
454
- expect(() =>
455
- toolBox.onPointerUp({ button: 2 } as PointerEvent),
456
- ).not.toThrow();
457
-
458
- toolBox['pointerWasDragged'] = () => {
459
- return true;
460
- };
461
- toolBox['_dragging'] = true;
462
- toolBox['_intersects'] = [
463
- {
464
- distance: 1,
465
- point: {
466
- clone() {
467
- return {
468
- x: 1,
469
- y: 1,
470
- z: 1,
471
- } as unknown as Vector3;
472
- },
473
- x: 1,
474
- y: 1,
475
- z: 1,
476
- } as unknown as Vector3,
477
- object: {
478
- uuid: 'uuid2',
479
- isHoverable: true,
480
- onPointerEnter() {
481
- return;
482
- },
483
- } as unknown as Object3D & DIVEHoverable,
484
- },
485
- ];
486
- toolBox['_draggable'] = {
487
- onDragEnd() {
488
- return;
489
- },
490
- } as unknown as Object3D & DIVEDraggable;
491
- expect(() =>
492
- toolBox.onPointerUp({ button: 0 } as PointerEvent),
493
- ).not.toThrow();
494
- expect(() =>
495
- toolBox.onPointerUp({ button: 1 } as PointerEvent),
496
- ).not.toThrow();
497
- expect(() =>
498
- toolBox.onPointerUp({ button: 2 } as PointerEvent),
499
- ).not.toThrow();
500
- });
501
-
502
- it('should execute onDragStart correctly', () => {
503
- const toolBox = new abstractWrapper(mockScene, mockController);
504
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
505
-
506
- toolBox['_draggable'] = {
507
- onDragStart() {
508
- return;
509
- },
510
- } as unknown as Object3D & DIVEDraggable;
511
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
512
-
513
- toolBox['_dragRaycastOnObjects'] = [];
514
- jest.spyOn(
515
- toolBox['_raycaster'],
516
- 'intersectObjects',
517
- ).mockReturnValueOnce([]);
518
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
519
-
520
- jest.spyOn(
521
- toolBox['_raycaster'],
522
- 'intersectObjects',
523
- ).mockReturnValueOnce([]);
524
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
525
-
526
- jest.spyOn(
527
- toolBox['_raycaster'],
528
- 'intersectObjects',
529
- ).mockReturnValueOnce([
530
- {
531
- distance: 1,
532
- point: {
533
- clone() {
534
- return {
535
- x: 1,
536
- y: 1,
537
- z: 1,
538
- } as unknown as Vector3;
539
- },
540
- x: 1,
541
- y: 1,
542
- z: 1,
543
- } as unknown as Vector3,
544
- object: {
545
- uuid: 'uuid2',
546
- isHoverable: true,
547
- onPointerEnter() {
548
- return;
549
- },
550
- } as unknown as Object3D & DIVEHoverable,
551
- },
552
- ]);
553
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
554
-
555
- toolBox['_draggable'] = {
556
- onDragStart() {
557
- return;
558
- },
559
- } as unknown as Object3D & DIVEDraggable;
560
- jest.spyOn(
561
- toolBox['_raycaster'],
562
- 'intersectObjects',
563
- ).mockReturnValueOnce([]);
564
- expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
565
- });
566
-
567
- it('should execute onDrag correctly', () => {
568
- const toolBox = new abstractWrapper(mockScene, mockController);
569
- expect(() => toolBox.onDrag({} as PointerEvent)).not.toThrow();
570
-
571
- toolBox['_dragRaycastOnObjects'] = [];
572
- jest.spyOn(
573
- toolBox['_raycaster'],
574
- 'intersectObjects',
575
- ).mockReturnValueOnce([]);
576
- expect(() => toolBox.onDrag({} as PointerEvent)).not.toThrow();
577
-
578
- toolBox['_draggable'] = {
579
- onDrag() {
580
- return;
581
- },
582
- } as unknown as Object3D & DIVEDraggable;
583
- jest.spyOn(
584
- toolBox['_raycaster'],
585
- 'intersectObjects',
586
- ).mockReturnValueOnce([
587
- {
588
- distance: 1,
589
- point: {
590
- clone() {
591
- return {
592
- x: 1,
593
- y: 1,
594
- z: 1,
595
- } as unknown as Vector3;
596
- },
597
- x: 1,
598
- y: 1,
599
- z: 1,
600
- } as unknown as Vector3,
601
- object: {
602
- uuid: 'uuid2',
603
- isHoverable: true,
604
- onPointerEnter() {
605
- return;
606
- },
607
- } as unknown as Object3D & DIVEHoverable,
608
- },
609
- ]);
610
- expect(() => toolBox.onDrag({} as PointerEvent)).not.toThrow();
611
- });
612
-
613
- it('should execute onCLick correctly', () => {
614
- const toolBox = new abstractWrapper(mockScene, mockController);
615
- expect(() => toolBox.onClick({} as PointerEvent)).not.toThrow();
616
- });
617
-
618
- it('should execute onDragEnd correctly', () => {
619
- const toolBox = new abstractWrapper(mockScene, mockController);
620
- expect(() => toolBox.onDragEnd({} as PointerEvent)).not.toThrow();
621
- });
622
-
623
- it('should execute onWheel correctly', () => {
624
- const toolBox = new abstractWrapper(mockScene, mockController);
625
- expect(() => toolBox.onWheel({} as WheelEvent)).not.toThrow();
626
- });
627
- });