three-stdlib 2.7.0 → 2.8.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 (78) hide show
  1. package/{Nodes-ec4e1143.js → Nodes-894ac9dc.js} +0 -0
  2. package/{Nodes-427f68b0.js → Nodes-af575af7.js} +0 -0
  3. package/cameras/CinematicCamera.cjs.js +1 -1
  4. package/cameras/CinematicCamera.js +3 -8
  5. package/controls/ArcballControls.cjs.js +1 -1
  6. package/controls/ArcballControls.d.ts +6 -9
  7. package/controls/ArcballControls.js +188 -234
  8. package/controls/FirstPersonControls.cjs.js +1 -1
  9. package/controls/FirstPersonControls.d.ts +4 -5
  10. package/controls/FirstPersonControls.js +36 -45
  11. package/controls/TransformControls.cjs.js +1 -1
  12. package/controls/TransformControls.d.ts +2 -1
  13. package/controls/TransformControls.js +25 -26
  14. package/exporters/GLTFExporter.cjs.js +1 -1
  15. package/exporters/GLTFExporter.js +9 -18
  16. package/geometries/TeapotGeometry.js +2 -2
  17. package/index.cjs.js +1 -1
  18. package/loaders/EXRLoader.cjs.js +1 -1
  19. package/loaders/EXRLoader.js +21 -10
  20. package/loaders/GLTFLoader.cjs.js +1 -1
  21. package/loaders/GLTFLoader.js +5 -6
  22. package/loaders/HDRCubeTextureLoader.cjs.js +1 -1
  23. package/loaders/HDRCubeTextureLoader.js +1 -3
  24. package/loaders/LDrawLoader.cjs.js +1 -1
  25. package/loaders/LDrawLoader.js +1450 -1105
  26. package/loaders/LUT3dlLoader.cjs.js +1 -1
  27. package/loaders/LUT3dlLoader.js +18 -11
  28. package/loaders/LUTCubeLoader.cjs.js +1 -1
  29. package/loaders/LUTCubeLoader.js +4 -5
  30. package/loaders/NodeMaterialLoader.cjs.js +1 -1
  31. package/loaders/PCDLoader.cjs.js +1 -1
  32. package/loaders/PCDLoader.js +2 -2
  33. package/loaders/RGBELoader.cjs.js +1 -1
  34. package/loaders/RGBELoader.js +6 -6
  35. package/loaders/STLLoader.js +7 -7
  36. package/loaders/VRMLLoader.cjs.js +1 -1
  37. package/loaders/VRMLLoader.js +10 -18
  38. package/modifiers/CurveModifier.cjs.js +1 -1
  39. package/modifiers/CurveModifier.js +9 -8
  40. package/nodes/accessors/CameraNode.js +12 -12
  41. package/nodes/accessors/PositionNode.js +3 -3
  42. package/nodes/accessors/ReflectNode.js +3 -3
  43. package/nodes/core/FunctionNode.js +3 -3
  44. package/nodes/core/InputNode.js +3 -3
  45. package/nodes/core/Node.js +6 -6
  46. package/nodes/core/TempNode.js +6 -6
  47. package/nodes/effects/BlurNode.js +3 -3
  48. package/nodes/math/MathNode.js +3 -3
  49. package/nodes/utils/VelocityNode.js +6 -6
  50. package/objects/Lensflare.cjs.js +1 -1
  51. package/objects/Lensflare.js +3 -11
  52. package/objects/Reflector.cjs.js +1 -1
  53. package/objects/Reflector.js +16 -12
  54. package/objects/ReflectorForSSRPass.cjs.js +1 -1
  55. package/objects/ReflectorForSSRPass.js +1 -9
  56. package/objects/Refractor.cjs.js +1 -1
  57. package/objects/Refractor.js +7 -12
  58. package/objects/Water.cjs.js +1 -1
  59. package/objects/Water.js +5 -16
  60. package/package.json +2 -2
  61. package/postprocessing/GlitchPass.cjs.js +1 -1
  62. package/postprocessing/GlitchPass.js +36 -33
  63. package/postprocessing/SMAAPass.cjs.js +1 -1
  64. package/postprocessing/SMAAPass.js +93 -96
  65. package/postprocessing/SSAOPass.cjs.js +1 -1
  66. package/postprocessing/SSAOPass.js +151 -152
  67. package/postprocessing/SavePass.cjs.js +1 -1
  68. package/postprocessing/SavePass.js +27 -28
  69. package/renderers/nodes/accessors/UVNode.js +1 -3
  70. package/renderers/nodes/core/AttributeNode.js +1 -3
  71. package/renderers/nodes/core/Node.js +4 -12
  72. package/renderers/nodes/core/NodeBuilder.js +6 -18
  73. package/renderers/webgpu/WebGPUTextures.cjs.js +1 -1
  74. package/renderers/webgpu/WebGPUTextures.js +1 -2
  75. package/utils/LDrawUtils.cjs.js +1 -0
  76. package/utils/LDrawUtils.js +144 -0
  77. package/webxr/ARButton.js +6 -6
  78. package/webxr/VRButton.js +6 -6
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { Matrix4, EventDispatcher, EllipseCurve, BufferGeometry, Mesh, PerspectiveCamera, MathUtils, OrthographicCamera, Vector3, GridHelper, LineBasicMaterial, Line, Raycaster, Vector2, Quaternion, Group, Box3, Sphere } from 'three';
2
+ import { Matrix4, EventDispatcher, EllipseCurve, BufferGeometry, MathUtils, Vector3, GridHelper, LineBasicMaterial, Line, Raycaster, Vector2, Quaternion, Group, Box3, Sphere } from 'three';
3
3
 
4
4
  //trackball state
5
5
  const STATE = {
@@ -44,13 +44,13 @@ const _endEvent = {
44
44
  };
45
45
  /**
46
46
  *
47
- * @param {Camera} camera Virtual camera used in the scene
48
- * @param {HTMLElement} domElement Renderer's dom element
49
- * @param {Scene} scene The scene to be rendered
47
+ * @param {CamOrthographicCamera | PerspectiveCameraera} camera Virtual camera used in the scene
48
+ * @param {HTMLElement=null} domElement Renderer's dom element
49
+ * @param {Scene=null} scene The scene to be rendered
50
50
  */
51
51
 
52
52
  class ArcballControls extends EventDispatcher {
53
- constructor(_camera, domElement, scene = null) {
53
+ constructor(_camera, _domElement = null, scene = null) {
54
54
  super();
55
55
 
56
56
  _defineProperty(this, "camera", void 0);
@@ -143,8 +143,6 @@ class ArcballControls extends EventDispatcher {
143
143
 
144
144
  _defineProperty(this, "_downEvents", void 0);
145
145
 
146
- _defineProperty(this, "_downStart", void 0);
147
-
148
146
  _defineProperty(this, "_clickStart", void 0);
149
147
 
150
148
  _defineProperty(this, "_maxDownTime", void 0);
@@ -215,8 +213,6 @@ class ArcballControls extends EventDispatcher {
215
213
 
216
214
  _defineProperty(this, "enableZoom", void 0);
217
215
 
218
- _defineProperty(this, "enableGizmos", void 0);
219
-
220
216
  _defineProperty(this, "minDistance", void 0);
221
217
 
222
218
  _defineProperty(this, "maxDistance", void 0);
@@ -236,7 +232,7 @@ class ArcballControls extends EventDispatcher {
236
232
  _defineProperty(this, "onWindowResize", () => {
237
233
  const scale = (this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z) / 3;
238
234
 
239
- if (this.camera !== null) {
235
+ if (this.camera) {
240
236
  const tbRadius = this.calculateTbRadius(this.camera);
241
237
 
242
238
  if (tbRadius !== undefined) {
@@ -252,10 +248,7 @@ class ArcballControls extends EventDispatcher {
252
248
 
253
249
  for (const gizmo in this._gizmos.children) {
254
250
  const child = this._gizmos.children[gizmo];
255
-
256
- if (child instanceof Mesh) {
257
- child.geometry = curveGeometry;
258
- }
251
+ child.geometry = curveGeometry;
259
252
  }
260
253
 
261
254
  this.dispatchEvent(_changeEvent);
@@ -288,8 +281,6 @@ class ArcballControls extends EventDispatcher {
288
281
  this._downValid = true;
289
282
 
290
283
  this._downEvents.push(event);
291
-
292
- this._downStart = performance.now();
293
284
  } else {
294
285
  this._downValid = false;
295
286
  }
@@ -334,7 +325,7 @@ class ArcballControls extends EventDispatcher {
334
325
 
335
326
  this._mouseOp = this.getOpFromAction(event.button, modifier);
336
327
 
337
- if (this._mouseOp != null) {
328
+ if (this._mouseOp) {
338
329
  window.addEventListener('pointermove', this.onPointerMove);
339
330
  window.addEventListener('pointerup', this.onPointerUp); //singleStart
340
331
 
@@ -392,7 +383,7 @@ class ArcballControls extends EventDispatcher {
392
383
 
393
384
  const mouseOpState = this.getOpStateFromAction(this._button, modifier);
394
385
 
395
- if (mouseOpState != null) {
386
+ if (mouseOpState) {
396
387
  this.onSinglePanMove(event, mouseOpState);
397
388
  }
398
389
  } //checkDistance
@@ -505,7 +496,9 @@ class ArcballControls extends EventDispatcher {
505
496
  });
506
497
 
507
498
  _defineProperty(this, "onWheel", event => {
508
- if (this.enabled && this.enableZoom) {
499
+ var _this$camera3;
500
+
501
+ if (this.enabled && this.enableZoom && this.domElement) {
509
502
  let modifier = null;
510
503
 
511
504
  if (event.ctrlKey || event.metaKey) {
@@ -516,7 +509,7 @@ class ArcballControls extends EventDispatcher {
516
509
 
517
510
  const mouseOp = this.getOpFromAction('WHEEL', modifier);
518
511
 
519
- if (mouseOp != null) {
512
+ if (mouseOp) {
520
513
  event.preventDefault();
521
514
  this.dispatchEvent(_startEvent);
522
515
  const notchDeltaY = 125; //distance of one notch of mouse wheel
@@ -541,13 +534,17 @@ class ArcballControls extends EventDispatcher {
541
534
  }
542
535
 
543
536
  if (this.cursorZoom && this.enablePan) {
537
+ var _this$camera, _this$camera2;
538
+
544
539
  let scalePoint;
545
540
 
546
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
541
+ if (((_this$camera = this.camera) === null || _this$camera === void 0 ? void 0 : _this$camera.type) === 'OrthographicCamera') {
547
542
  var _this$unprojectOnTbPl;
548
543
 
549
544
  scalePoint = (_this$unprojectOnTbPl = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement)) === null || _this$unprojectOnTbPl === void 0 ? void 0 : _this$unprojectOnTbPl.applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position);
550
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
545
+ }
546
+
547
+ if (((_this$camera2 = this.camera) === null || _this$camera2 === void 0 ? void 0 : _this$camera2.type) === 'PerspectiveCamera') {
551
548
  var _this$unprojectOnTbPl2;
552
549
 
553
550
  scalePoint = (_this$unprojectOnTbPl2 = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement)) === null || _this$unprojectOnTbPl2 === void 0 ? void 0 : _this$unprojectOnTbPl2.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);
@@ -558,7 +555,7 @@ class ArcballControls extends EventDispatcher {
558
555
  this.applyTransformMatrix(this.applyScale(size, this._gizmos.position));
559
556
  }
560
557
 
561
- if (this._grid != null) {
558
+ if (this._grid) {
562
559
  this.disposeGrid();
563
560
  this.drawGrid();
564
561
  }
@@ -569,7 +566,7 @@ class ArcballControls extends EventDispatcher {
569
566
  break;
570
567
 
571
568
  case 'FOV':
572
- if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
569
+ if (((_this$camera3 = this.camera) === null || _this$camera3 === void 0 ? void 0 : _this$camera3.type) === 'PerspectiveCamera') {
573
570
  this.updateTbState(STATE.FOV, true); //Vertigo effect
574
571
  // fov / 2
575
572
  // |\
@@ -617,7 +614,7 @@ class ArcballControls extends EventDispatcher {
617
614
  this.applyTransformMatrix(this.applyScale(size, this._gizmos.position, false));
618
615
  }
619
616
 
620
- if (this._grid != null) {
617
+ if (this._grid) {
621
618
  this.disposeGrid();
622
619
  this.drawGrid();
623
620
  }
@@ -631,28 +628,16 @@ class ArcballControls extends EventDispatcher {
631
628
  }
632
629
  });
633
630
 
634
- _defineProperty(this, "onKeyDown", event => {
635
- if (event.key == 'c') {
636
- if (event.ctrlKey || event.metaKey) {
637
- this.copyState();
638
- }
639
- } else if (event.key == 'v') {
640
- if (event.ctrlKey || event.metaKey) {
641
- this.pasteState();
642
- }
643
- }
644
- });
645
-
646
631
  _defineProperty(this, "onSinglePanStart", (event, operation) => {
647
- if (this.enabled) {
632
+ var _this$camera4;
633
+
634
+ if (this.enabled && this.domElement) {
648
635
  this.dispatchEvent(_startEvent);
649
636
  this.setCenter(event.clientX, event.clientY);
650
637
 
651
638
  switch (operation) {
652
639
  case 'PAN':
653
- if (!this.enablePan) {
654
- return;
655
- }
640
+ if (!this.enablePan) return;
656
641
 
657
642
  if (this._animationId != -1) {
658
643
  cancelAnimationFrame(this._animationId);
@@ -662,7 +647,7 @@ class ArcballControls extends EventDispatcher {
662
647
  this.dispatchEvent(_changeEvent);
663
648
  }
664
649
 
665
- if (this.camera !== null) {
650
+ if (this.camera) {
666
651
  this.updateTbState(STATE.PAN, true);
667
652
  const rayDir = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement);
668
653
 
@@ -679,9 +664,7 @@ class ArcballControls extends EventDispatcher {
679
664
  break;
680
665
 
681
666
  case 'ROTATE':
682
- if (!this.enableRotate) {
683
- return;
684
- }
667
+ if (!this.enableRotate) return;
685
668
 
686
669
  if (this._animationId != -1) {
687
670
  cancelAnimationFrame(this._animationId);
@@ -689,7 +672,7 @@ class ArcballControls extends EventDispatcher {
689
672
  this._timeStart = -1;
690
673
  }
691
674
 
692
- if (this.camera !== null) {
675
+ if (this.camera) {
693
676
  this.updateTbState(STATE.ROTATE, true);
694
677
  const rayDir = this.unprojectOnTbSurface(this.camera, _center.x, _center.y, this.domElement, this._tbRadius);
695
678
 
@@ -716,30 +699,28 @@ class ArcballControls extends EventDispatcher {
716
699
  break;
717
700
 
718
701
  case 'FOV':
719
- if (!(this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) || !this.enableZoom) {
720
- return;
721
- }
702
+ if (!this.enableZoom) return;
722
703
 
723
- if (this._animationId != -1) {
724
- cancelAnimationFrame(this._animationId);
725
- this._animationId = -1;
726
- this._timeStart = -1;
727
- this.activateGizmos(false);
728
- this.dispatchEvent(_changeEvent);
729
- }
704
+ if (((_this$camera4 = this.camera) === null || _this$camera4 === void 0 ? void 0 : _this$camera4.type) === 'PerspectiveCamera') {
705
+ if (this._animationId != -1) {
706
+ cancelAnimationFrame(this._animationId);
707
+ this._animationId = -1;
708
+ this._timeStart = -1;
709
+ this.activateGizmos(false);
710
+ this.dispatchEvent(_changeEvent);
711
+ }
730
712
 
731
- this.updateTbState(STATE.FOV, true);
713
+ this.updateTbState(STATE.FOV, true);
732
714
 
733
- this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5);
715
+ this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5);
734
716
 
735
- this._currentCursorPosition.copy(this._startCursorPosition);
717
+ this._currentCursorPosition.copy(this._startCursorPosition);
718
+ }
736
719
 
737
720
  break;
738
721
 
739
722
  case 'ZOOM':
740
- if (!this.enableZoom) {
741
- return;
742
- }
723
+ if (!this.enableZoom) return;
743
724
 
744
725
  if (this._animationId != -1) {
745
726
  cancelAnimationFrame(this._animationId);
@@ -761,13 +742,15 @@ class ArcballControls extends EventDispatcher {
761
742
  });
762
743
 
763
744
  _defineProperty(this, "onSinglePanMove", (event, opState) => {
764
- if (this.enabled) {
745
+ var _this$camera5;
746
+
747
+ if (this.enabled && this.domElement) {
765
748
  const restart = opState != this._state;
766
749
  this.setCenter(event.clientX, event.clientY);
767
750
 
768
751
  switch (opState) {
769
752
  case STATE.PAN:
770
- if (this.enablePan && this.camera !== null) {
753
+ if (this.enablePan && this.camera) {
771
754
  if (restart) {
772
755
  //switch to pan operation
773
756
  this.dispatchEvent(_endEvent);
@@ -799,7 +782,7 @@ class ArcballControls extends EventDispatcher {
799
782
  break;
800
783
 
801
784
  case STATE.ROTATE:
802
- if (this.enableRotate && this.camera !== null) {
785
+ if (this.enableRotate && this.camera) {
803
786
  if (restart) {
804
787
  //switch to rotate operation
805
788
  this.dispatchEvent(_endEvent);
@@ -889,7 +872,7 @@ class ArcballControls extends EventDispatcher {
889
872
  break;
890
873
 
891
874
  case STATE.FOV:
892
- if (this.enableZoom && this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
875
+ if (this.enableZoom && ((_this$camera5 = this.camera) === null || _this$camera5 === void 0 ? void 0 : _this$camera5.type) === 'PerspectiveCamera') {
893
876
  if (restart) {
894
877
  //switch to fov operation
895
878
  this.dispatchEvent(_endEvent);
@@ -998,12 +981,12 @@ class ArcballControls extends EventDispatcher {
998
981
  });
999
982
 
1000
983
  _defineProperty(this, "onDoubleTap", event => {
1001
- if (this.enabled && this.enablePan && this.scene != null && this.camera !== null) {
984
+ if (this.enabled && this.enablePan && this.scene && this.camera && this.domElement) {
1002
985
  this.dispatchEvent(_startEvent);
1003
986
  this.setCenter(event.clientX, event.clientY);
1004
987
  const hitP = this.unprojectOnObj(this.getCursorNDC(_center.x, _center.y, this.domElement), this.camera);
1005
988
 
1006
- if (hitP != null && this.enableAnimations) {
989
+ if (hitP && this.enableAnimations) {
1007
990
  const self = this;
1008
991
 
1009
992
  if (this._animationId != -1) {
@@ -1015,7 +998,7 @@ class ArcballControls extends EventDispatcher {
1015
998
  self.updateTbState(STATE.ANIMATION_FOCUS, true);
1016
999
  self.onFocusAnim(t, hitP, self._cameraMatrixState, self._gizmoMatrixState);
1017
1000
  });
1018
- } else if (hitP != null && !this.enableAnimations) {
1001
+ } else if (hitP && !this.enableAnimations) {
1019
1002
  this.updateTbState(STATE.FOCUS, true);
1020
1003
  this.focus(hitP, this.scaleFactor);
1021
1004
  this.updateTbState(STATE.IDLE, false);
@@ -1027,7 +1010,7 @@ class ArcballControls extends EventDispatcher {
1027
1010
  });
1028
1011
 
1029
1012
  _defineProperty(this, "onDoublePanStart", () => {
1030
- if (this.enabled && this.enablePan && this.camera !== null) {
1013
+ if (this.enabled && this.enablePan && this.camera && this.domElement) {
1031
1014
  this.dispatchEvent(_startEvent);
1032
1015
  this.updateTbState(STATE.PAN, true);
1033
1016
  this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
@@ -1044,7 +1027,7 @@ class ArcballControls extends EventDispatcher {
1044
1027
  });
1045
1028
 
1046
1029
  _defineProperty(this, "onDoublePanMove", () => {
1047
- if (this.enabled && this.enablePan && this.camera !== null) {
1030
+ if (this.enabled && this.enablePan && this.camera && this.domElement) {
1048
1031
  this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
1049
1032
 
1050
1033
  if (this._state != STATE.PAN) {
@@ -1067,14 +1050,14 @@ class ArcballControls extends EventDispatcher {
1067
1050
 
1068
1051
  _defineProperty(this, "onRotateStart", () => {
1069
1052
  if (this.enabled && this.enableRotate) {
1070
- var _this$camera;
1053
+ var _this$camera6;
1071
1054
 
1072
1055
  this.dispatchEvent(_startEvent);
1073
1056
  this.updateTbState(STATE.ZROTATE, true); //this._startFingerRotation = event.rotation;
1074
1057
 
1075
1058
  this._startFingerRotation = this.getAngle(this._touchCurrent[1], this._touchCurrent[0]) + this.getAngle(this._touchStart[1], this._touchStart[0]);
1076
1059
  this._currentFingerRotation = this._startFingerRotation;
1077
- (_this$camera = this.camera) === null || _this$camera === void 0 ? void 0 : _this$camera.getWorldDirection(this._rotationAxis); //rotation axis
1060
+ (_this$camera6 = this.camera) === null || _this$camera6 === void 0 ? void 0 : _this$camera6.getWorldDirection(this._rotationAxis); //rotation axis
1078
1061
 
1079
1062
  if (!this.enablePan && !this.enableZoom) {
1080
1063
  this.activateGizmos(true);
@@ -1083,7 +1066,7 @@ class ArcballControls extends EventDispatcher {
1083
1066
  });
1084
1067
 
1085
1068
  _defineProperty(this, "onRotateMove", () => {
1086
- if (this.enabled && this.enableRotate && this.camera !== null) {
1069
+ if (this.enabled && this.enableRotate && this.camera && this.domElement) {
1087
1070
  this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
1088
1071
  let rotationPoint;
1089
1072
 
@@ -1097,7 +1080,7 @@ class ArcballControls extends EventDispatcher {
1097
1080
 
1098
1081
  if (!this.enablePan) {
1099
1082
  rotationPoint = new Vector3().setFromMatrixPosition(this._gizmoMatrixState);
1100
- } else if (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) {
1083
+ } else if (this.camera) {
1101
1084
  var _this$unprojectOnTbPl3;
1102
1085
 
1103
1086
  this._v3_2.setFromMatrixPosition(this._gizmoMatrixState);
@@ -1132,7 +1115,7 @@ class ArcballControls extends EventDispatcher {
1132
1115
  });
1133
1116
 
1134
1117
  _defineProperty(this, "onPinchMove", () => {
1135
- if (this.enabled && this.enableZoom) {
1118
+ if (this.enabled && this.enableZoom && this.domElement) {
1136
1119
  this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
1137
1120
  const minDistance = 12; //minimum distance between fingers (in css pixels)
1138
1121
 
@@ -1148,11 +1131,13 @@ class ArcballControls extends EventDispatcher {
1148
1131
  if (!this.enablePan) {
1149
1132
  scalePoint = this._gizmos.position;
1150
1133
  } else {
1151
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
1134
+ var _this$camera7, _this$camera8;
1135
+
1136
+ if (((_this$camera7 = this.camera) === null || _this$camera7 === void 0 ? void 0 : _this$camera7.type) === 'OrthographicCamera') {
1152
1137
  var _this$unprojectOnTbPl4;
1153
1138
 
1154
1139
  scalePoint = (_this$unprojectOnTbPl4 = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)) === null || _this$unprojectOnTbPl4 === void 0 ? void 0 : _this$unprojectOnTbPl4.applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position);
1155
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1140
+ } else if (((_this$camera8 = this.camera) === null || _this$camera8 === void 0 ? void 0 : _this$camera8.type) === 'PerspectiveCamera') {
1156
1141
  var _this$unprojectOnTbPl5;
1157
1142
 
1158
1143
  scalePoint = (_this$unprojectOnTbPl5 = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)) === null || _this$unprojectOnTbPl5 === void 0 ? void 0 : _this$unprojectOnTbPl5.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);
@@ -1173,7 +1158,7 @@ class ArcballControls extends EventDispatcher {
1173
1158
  });
1174
1159
 
1175
1160
  _defineProperty(this, "onTriplePanStart", () => {
1176
- if (this.enabled && this.enableZoom) {
1161
+ if (this.enabled && this.enableZoom && this.domElement) {
1177
1162
  this.dispatchEvent(_startEvent);
1178
1163
  this.updateTbState(STATE.SCALE, true); //const center = event.center;
1179
1164
 
@@ -1195,7 +1180,7 @@ class ArcballControls extends EventDispatcher {
1195
1180
  });
1196
1181
 
1197
1182
  _defineProperty(this, "onTriplePanMove", () => {
1198
- if (this.enabled && this.enableZoom && this.camera !== null) {
1183
+ if (this.enabled && this.enableZoom && this.camera && this.domElement) {
1199
1184
  // fov / 2
1200
1185
  // |\
1201
1186
  // | \
@@ -1278,18 +1263,6 @@ class ArcballControls extends EventDispatcher {
1278
1263
  this.setMouseAction('FOV', 1, 'SHIFT');
1279
1264
  });
1280
1265
 
1281
- _defineProperty(this, "compareMouseAction", (action1, action2) => {
1282
- if (action1.operation == action2.operation) {
1283
- if (action1.mouse == action2.mouse && action1.key == action2.key) {
1284
- return true;
1285
- } else {
1286
- return false;
1287
- }
1288
- } else {
1289
- return false;
1290
- }
1291
- });
1292
-
1293
1266
  _defineProperty(this, "setMouseAction", (operation, mouse, key = null) => {
1294
1267
  const operationInput = ['PAN', 'ROTATE', 'ZOOM', 'FOV'];
1295
1268
  const mouseInput = [0, 1, 2, 'WHEEL'];
@@ -1344,17 +1317,6 @@ class ArcballControls extends EventDispatcher {
1344
1317
  return true;
1345
1318
  });
1346
1319
 
1347
- _defineProperty(this, "unsetMouseAction", (mouse, key = null) => {
1348
- for (let i = 0; i < this.mouseActions.length; i++) {
1349
- if (this.mouseActions[i].mouse == mouse && this.mouseActions[i].key == key) {
1350
- this.mouseActions.splice(i, 1);
1351
- return true;
1352
- }
1353
- }
1354
-
1355
- return false;
1356
- });
1357
-
1358
1320
  _defineProperty(this, "getOpFromAction", (mouse, key) => {
1359
1321
  let action;
1360
1322
 
@@ -1366,7 +1328,7 @@ class ArcballControls extends EventDispatcher {
1366
1328
  }
1367
1329
  }
1368
1330
 
1369
- if (key != null) {
1331
+ if (key) {
1370
1332
  for (let i = 0; i < this.mouseActions.length; i++) {
1371
1333
  action = this.mouseActions[i];
1372
1334
 
@@ -1390,7 +1352,7 @@ class ArcballControls extends EventDispatcher {
1390
1352
  }
1391
1353
  }
1392
1354
 
1393
- if (key != null) {
1355
+ if (key) {
1394
1356
  for (let i = 0; i < this.mouseActions.length; i++) {
1395
1357
  action = this.mouseActions[i];
1396
1358
 
@@ -1446,19 +1408,19 @@ class ArcballControls extends EventDispatcher {
1446
1408
  const factor = 0.67;
1447
1409
  const distance = camera.position.distanceTo(this._gizmos.position);
1448
1410
 
1449
- if (camera.type == 'PerspectiveCamera' && camera instanceof PerspectiveCamera) {
1411
+ if (camera.type == 'PerspectiveCamera') {
1450
1412
  const halfFovV = MathUtils.DEG2RAD * camera.fov * 0.5; //vertical fov/2 in radians
1451
1413
 
1452
1414
  const halfFovH = Math.atan(camera.aspect * Math.tan(halfFovV)); //horizontal fov/2 in radians
1453
1415
 
1454
1416
  return Math.tan(Math.min(halfFovV, halfFovH)) * distance * factor;
1455
- } else if (camera.type == 'OrthographicCamera' && camera instanceof OrthographicCamera) {
1417
+ } else if (camera.type == 'OrthographicCamera') {
1456
1418
  return Math.min(camera.top, camera.right) * factor;
1457
1419
  }
1458
1420
  });
1459
1421
 
1460
1422
  _defineProperty(this, "focus", (point, size, amount = 1) => {
1461
- if (this.camera !== null) {
1423
+ if (this.camera) {
1462
1424
  const focusPoint = point.clone(); //move center of camera (along with gizmos) towards point of interest
1463
1425
 
1464
1426
  focusPoint.sub(this._gizmos.position).multiplyScalar(amount);
@@ -1489,19 +1451,21 @@ class ArcballControls extends EventDispatcher {
1489
1451
  });
1490
1452
 
1491
1453
  _defineProperty(this, "drawGrid", () => {
1492
- if (this.scene != null) {
1454
+ if (this.scene) {
1455
+ var _this$camera9, _this$camera10;
1456
+
1493
1457
  const color = 0x888888;
1494
1458
  const multiplier = 3;
1495
1459
  let size, divisions, maxLength, tick;
1496
1460
 
1497
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
1461
+ if (((_this$camera9 = this.camera) === null || _this$camera9 === void 0 ? void 0 : _this$camera9.type) === 'OrthographicCamera') {
1498
1462
  const width = this.camera.right - this.camera.left;
1499
1463
  const height = this.camera.bottom - this.camera.top;
1500
1464
  maxLength = Math.max(width, height);
1501
1465
  tick = maxLength / 20;
1502
1466
  size = maxLength / this.camera.zoom * multiplier;
1503
1467
  divisions = size / tick * this.camera.zoom;
1504
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1468
+ } else if (((_this$camera10 = this.camera) === null || _this$camera10 === void 0 ? void 0 : _this$camera10.type) === 'PerspectiveCamera') {
1505
1469
  const distance = this.camera.position.distanceTo(this._gizmos.position);
1506
1470
  const halfFovV = MathUtils.DEG2RAD * this.camera.fov * 0.5;
1507
1471
  const halfFovH = Math.atan(this.camera.aspect * Math.tan(halfFovV));
@@ -1511,7 +1475,7 @@ class ArcballControls extends EventDispatcher {
1511
1475
  divisions = size / tick;
1512
1476
  }
1513
1477
 
1514
- if (this._grid == null && this.camera !== null) {
1478
+ if (this._grid == null && this.camera) {
1515
1479
  this._grid = new GridHelper(size, divisions, color, color);
1516
1480
 
1517
1481
  this._grid.position.copy(this._gizmos.position);
@@ -1527,27 +1491,43 @@ class ArcballControls extends EventDispatcher {
1527
1491
  }
1528
1492
  });
1529
1493
 
1494
+ _defineProperty(this, "connect", domElement => {
1495
+ // https://github.com/mrdoob/three.js/issues/20575
1496
+ if (domElement === document) {
1497
+ console.error('THREE.ArcballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');
1498
+ }
1499
+
1500
+ this.domElement = domElement; // disables touch scroll
1501
+ // touch-action needs to be defined for pointer events to work on mobile
1502
+ // https://stackoverflow.com/a/48254578
1503
+
1504
+ this.domElement.style.touchAction = 'none';
1505
+ this.domElement.addEventListener('contextmenu', this.onContextMenu);
1506
+ this.domElement.addEventListener('pointerdown', this.onPointerDown);
1507
+ this.domElement.addEventListener('pointercancel', this.onPointerCancel);
1508
+ this.domElement.addEventListener('wheel', this.onWheel);
1509
+ });
1510
+
1530
1511
  _defineProperty(this, "dispose", () => {
1531
- var _this$scene;
1512
+ var _this$domElement, _this$domElement2, _this$domElement3, _this$domElement4, _this$scene;
1532
1513
 
1533
1514
  if (this._animationId != -1) {
1534
1515
  window.cancelAnimationFrame(this._animationId);
1535
1516
  }
1536
1517
 
1537
- this.domElement.removeEventListener('pointerdown', this.onPointerDown);
1538
- this.domElement.removeEventListener('pointercancel', this.onPointerCancel);
1539
- this.domElement.removeEventListener('wheel', this.onWheel);
1540
- this.domElement.removeEventListener('contextmenu', this.onContextMenu);
1518
+ (_this$domElement = this.domElement) === null || _this$domElement === void 0 ? void 0 : _this$domElement.removeEventListener('pointerdown', this.onPointerDown);
1519
+ (_this$domElement2 = this.domElement) === null || _this$domElement2 === void 0 ? void 0 : _this$domElement2.removeEventListener('pointercancel', this.onPointerCancel);
1520
+ (_this$domElement3 = this.domElement) === null || _this$domElement3 === void 0 ? void 0 : _this$domElement3.removeEventListener('wheel', this.onWheel);
1521
+ (_this$domElement4 = this.domElement) === null || _this$domElement4 === void 0 ? void 0 : _this$domElement4.removeEventListener('contextmenu', this.onContextMenu);
1541
1522
  window.removeEventListener('pointermove', this.onPointerMove);
1542
1523
  window.removeEventListener('pointerup', this.onPointerUp);
1543
1524
  window.removeEventListener('resize', this.onWindowResize);
1544
- window.addEventListener('keydown', this.onKeyDown);
1545
1525
  (_this$scene = this.scene) === null || _this$scene === void 0 ? void 0 : _this$scene.remove(this._gizmos);
1546
1526
  this.disposeGrid();
1547
1527
  });
1548
1528
 
1549
1529
  _defineProperty(this, "disposeGrid", () => {
1550
- if (this._grid != null && this.scene != null) {
1530
+ if (this._grid && this.scene) {
1551
1531
  this.scene.remove(this._grid);
1552
1532
  this._grid = null;
1553
1533
  }
@@ -1558,29 +1538,9 @@ class ArcballControls extends EventDispatcher {
1558
1538
  });
1559
1539
 
1560
1540
  _defineProperty(this, "activateGizmos", isActive => {
1561
- const gizmoX = this._gizmos.children[0];
1562
- const gizmoY = this._gizmos.children[1];
1563
- const gizmoZ = this._gizmos.children[2];
1564
-
1565
- if (isActive) {
1566
- gizmoX.material.setValues({
1567
- opacity: 1
1568
- });
1569
- gizmoY.material.setValues({
1570
- opacity: 1
1571
- });
1572
- gizmoZ.material.setValues({
1573
- opacity: 1
1574
- });
1575
- } else {
1576
- gizmoX.material.setValues({
1577
- opacity: 0.6
1578
- });
1579
- gizmoY.material.setValues({
1580
- opacity: 0.6
1581
- });
1582
- gizmoZ.material.setValues({
1583
- opacity: 0.6
1541
+ for (const gizmo of this._gizmos.children) {
1542
+ gizmo.material.setValues({
1543
+ opacity: isActive ? 1 : 0.6
1584
1544
  });
1585
1545
  }
1586
1546
  });
@@ -1596,9 +1556,11 @@ class ArcballControls extends EventDispatcher {
1596
1556
  });
1597
1557
 
1598
1558
  _defineProperty(this, "getCursorPosition", (cursorX, cursorY, canvas) => {
1559
+ var _this$camera11;
1560
+
1599
1561
  this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas));
1600
1562
 
1601
- if (this.camera instanceof OrthographicCamera) {
1563
+ if (((_this$camera11 = this.camera) === null || _this$camera11 === void 0 ? void 0 : _this$camera11.type) === 'OrthographicCamera') {
1602
1564
  this._v2_1.x *= (this.camera.right - this.camera.left) * 0.5;
1603
1565
  this._v2_1.y *= (this.camera.top - this.camera.bottom) * 0.5;
1604
1566
  }
@@ -1607,11 +1569,11 @@ class ArcballControls extends EventDispatcher {
1607
1569
  });
1608
1570
 
1609
1571
  _defineProperty(this, "setCamera", camera => {
1610
- if (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {
1572
+ if (camera) {
1611
1573
  camera.lookAt(this.target);
1612
1574
  camera.updateMatrix(); //setting state
1613
1575
 
1614
- if ((camera === null || camera === void 0 ? void 0 : camera.type) == 'PerspectiveCamera' && camera instanceof PerspectiveCamera) {
1576
+ if ((camera === null || camera === void 0 ? void 0 : camera.type) == 'PerspectiveCamera') {
1615
1577
  this._fov0 = camera.fov;
1616
1578
  this._fovState = camera.fov;
1617
1579
  }
@@ -1636,11 +1598,7 @@ class ArcballControls extends EventDispatcher {
1636
1598
  this._upState.copy(camera.up);
1637
1599
 
1638
1600
  this.camera = camera;
1639
-
1640
- if (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) {
1641
- this.camera.updateProjectionMatrix();
1642
- } //making gizmos
1643
-
1601
+ this.camera.updateProjectionMatrix(); //making gizmos
1644
1602
 
1645
1603
  const tbRadius = this.calculateTbRadius(camera);
1646
1604
 
@@ -1689,7 +1647,7 @@ class ArcballControls extends EventDispatcher {
1689
1647
 
1690
1648
  this._gizmoMatrixState.copy(this._gizmoMatrixState0);
1691
1649
 
1692
- if ((this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) && this.camera.zoom != 1) {
1650
+ if (this.camera && this.camera.zoom != 1) {
1693
1651
  //adapt gizmos size to camera zoom
1694
1652
  const size = 1 / this.camera.zoom;
1695
1653
 
@@ -1798,13 +1756,15 @@ class ArcballControls extends EventDispatcher {
1798
1756
  });
1799
1757
 
1800
1758
  _defineProperty(this, "pan", (p0, p1, adjust = false) => {
1801
- if (this.camera !== null) {
1759
+ if (this.camera) {
1802
1760
  const movement = p0.clone().sub(p1);
1803
1761
 
1804
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
1762
+ if (this.camera.type === 'OrthographicCamera') {
1805
1763
  //adjust movement amount
1806
1764
  movement.multiplyScalar(1 / this.camera.zoom);
1807
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera && adjust) {
1765
+ }
1766
+
1767
+ if (this.camera.type === 'PerspectiveCamera' && adjust) {
1808
1768
  //adjust movement amount
1809
1769
  this._v3_1.setFromMatrixPosition(this._cameraMatrixState0); //camera's initial position
1810
1770
 
@@ -1827,10 +1787,10 @@ class ArcballControls extends EventDispatcher {
1827
1787
  });
1828
1788
 
1829
1789
  _defineProperty(this, "reset", () => {
1830
- if (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) {
1790
+ if (this.camera) {
1831
1791
  this.camera.zoom = this._zoom0;
1832
1792
 
1833
- if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1793
+ if (this.camera.type === 'PerspectiveCamera') {
1834
1794
  this.camera.fov = this._fov0;
1835
1795
  }
1836
1796
 
@@ -1883,10 +1843,10 @@ class ArcballControls extends EventDispatcher {
1883
1843
  });
1884
1844
 
1885
1845
  _defineProperty(this, "copyState", () => {
1886
- let state;
1846
+ if (this.camera) {
1847
+ var _this$camera12;
1887
1848
 
1888
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
1889
- state = JSON.stringify({
1849
+ const state = JSON.stringify(((_this$camera12 = this.camera) === null || _this$camera12 === void 0 ? void 0 : _this$camera12.type) === 'OrthographicCamera' ? {
1890
1850
  arcballState: {
1891
1851
  cameraFar: this.camera.far,
1892
1852
  cameraMatrix: this.camera.matrix,
@@ -1895,9 +1855,7 @@ class ArcballControls extends EventDispatcher {
1895
1855
  cameraZoom: this.camera.zoom,
1896
1856
  gizmoMatrix: this._gizmos.matrix
1897
1857
  }
1898
- });
1899
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1900
- state = JSON.stringify({
1858
+ } : {
1901
1859
  arcballState: {
1902
1860
  cameraFar: this.camera.far,
1903
1861
  cameraFov: this.camera.fov,
@@ -1908,9 +1866,6 @@ class ArcballControls extends EventDispatcher {
1908
1866
  gizmoMatrix: this._gizmos.matrix
1909
1867
  }
1910
1868
  });
1911
- }
1912
-
1913
- if (state !== undefined) {
1914
1869
  navigator.clipboard.writeText(state);
1915
1870
  }
1916
1871
  });
@@ -1923,28 +1878,29 @@ class ArcballControls extends EventDispatcher {
1923
1878
  });
1924
1879
 
1925
1880
  _defineProperty(this, "saveState", () => {
1926
- if (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) {
1927
- this._cameraMatrixState0.copy(this.camera.matrix);
1881
+ if (!this.camera) return;
1928
1882
 
1929
- this._gizmoMatrixState0.copy(this._gizmos.matrix);
1883
+ this._cameraMatrixState0.copy(this.camera.matrix);
1930
1884
 
1931
- this._nearPos = this.camera.near;
1932
- this._farPos = this.camera.far;
1933
- this._zoom0 = this.camera.zoom;
1885
+ this._gizmoMatrixState0.copy(this._gizmos.matrix);
1934
1886
 
1935
- this._up0.copy(this.camera.up);
1887
+ this._nearPos = this.camera.near;
1888
+ this._farPos = this.camera.far;
1889
+ this._zoom0 = this.camera.zoom;
1936
1890
 
1937
- if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1938
- this._fov0 = this.camera.fov;
1939
- }
1891
+ this._up0.copy(this.camera.up);
1892
+
1893
+ if (this.camera.type === 'PerspectiveCamera') {
1894
+ this._fov0 = this.camera.fov;
1940
1895
  }
1941
1896
  });
1942
1897
 
1943
1898
  _defineProperty(this, "applyScale", (size, point, scaleGizmos = true) => {
1899
+ if (!this.camera) return;
1944
1900
  const scalePoint = point.clone();
1945
1901
  let sizeInverse = 1 / size;
1946
1902
 
1947
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
1903
+ if (this.camera.type === 'OrthographicCamera') {
1948
1904
  //camera zoom
1949
1905
  this.camera.zoom = this._zoomState;
1950
1906
  this.camera.zoom *= size; //check min and max zoom
@@ -1982,7 +1938,9 @@ class ArcballControls extends EventDispatcher {
1982
1938
 
1983
1939
  this.setTransformationMatrices(this._m4_1, this._m4_2);
1984
1940
  return _transformation;
1985
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1941
+ }
1942
+
1943
+ if (this.camera.type === 'PerspectiveCamera') {
1986
1944
  this._v3_1.setFromMatrixPosition(this._cameraMatrixState);
1987
1945
 
1988
1946
  this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); //move camera
@@ -2035,14 +1993,16 @@ class ArcballControls extends EventDispatcher {
2035
1993
  });
2036
1994
 
2037
1995
  _defineProperty(this, "setFov", value => {
2038
- if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
1996
+ var _this$camera13;
1997
+
1998
+ if (((_this$camera13 = this.camera) === null || _this$camera13 === void 0 ? void 0 : _this$camera13.type) === 'PerspectiveCamera') {
2039
1999
  this.camera.fov = MathUtils.clamp(value, this.minFov, this.maxFov);
2040
2000
  this.camera.updateProjectionMatrix();
2041
2001
  }
2042
2002
  });
2043
2003
 
2044
2004
  _defineProperty(this, "setTarget", (x, y, z) => {
2045
- if (this.camera !== null) {
2005
+ if (this.camera) {
2046
2006
  this.target.set(x, y, z);
2047
2007
 
2048
2008
  this._gizmos.position.set(x, y, z); //for correct radius calculation
@@ -2085,17 +2045,16 @@ class ArcballControls extends EventDispatcher {
2085
2045
  });
2086
2046
 
2087
2047
  _defineProperty(this, "unprojectOnObj", (cursor, camera) => {
2088
- if ((camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) && this.scene != null) {
2089
- const raycaster = new Raycaster();
2090
- raycaster.near = camera.near;
2091
- raycaster.far = camera.far;
2092
- raycaster.setFromCamera(cursor, camera);
2093
- const intersect = raycaster.intersectObjects(this.scene.children, true);
2094
-
2095
- for (let i = 0; i < intersect.length; i++) {
2096
- if (intersect[i].object.uuid != this._gizmos.uuid && intersect[i].face != null) {
2097
- return intersect[i].point.clone();
2098
- }
2048
+ if (!this.scene) return null;
2049
+ const raycaster = new Raycaster();
2050
+ raycaster.near = camera.near;
2051
+ raycaster.far = camera.far;
2052
+ raycaster.setFromCamera(cursor, camera);
2053
+ const intersect = raycaster.intersectObjects(this.scene.children, true);
2054
+
2055
+ for (let i = 0; i < intersect.length; i++) {
2056
+ if (intersect[i].object.uuid != this._gizmos.uuid && intersect[i].face) {
2057
+ return intersect[i].point.clone();
2099
2058
  }
2100
2059
  }
2101
2060
 
@@ -2121,7 +2080,9 @@ class ArcballControls extends EventDispatcher {
2121
2080
  }
2122
2081
 
2123
2082
  return this._v3_1;
2124
- } else if (camera.type == 'PerspectiveCamera') {
2083
+ }
2084
+
2085
+ if (camera.type == 'PerspectiveCamera') {
2125
2086
  //unproject cursor on the near plane
2126
2087
  this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas));
2127
2088
 
@@ -2216,7 +2177,9 @@ class ArcballControls extends EventDispatcher {
2216
2177
  this._v3_1.set(this._v2_1.x, this._v2_1.y, 0);
2217
2178
 
2218
2179
  return this._v3_1.clone();
2219
- } else if (camera.type == 'PerspectiveCamera') {
2180
+ }
2181
+
2182
+ if (camera.type == 'PerspectiveCamera') {
2220
2183
  this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas)); //unproject cursor on the near plane
2221
2184
 
2222
2185
 
@@ -2271,20 +2234,21 @@ class ArcballControls extends EventDispatcher {
2271
2234
  });
2272
2235
 
2273
2236
  _defineProperty(this, "updateMatrixState", () => {
2274
- if (this.camera !== null) {
2275
- //update camera and gizmos state
2276
- this._cameraMatrixState.copy(this.camera.matrix);
2237
+ if (!this.camera) return; //update camera and gizmos state
2277
2238
 
2278
- this._gizmoMatrixState.copy(this._gizmos.matrix);
2239
+ this._cameraMatrixState.copy(this.camera.matrix);
2279
2240
 
2280
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
2281
- this._cameraProjectionState.copy(this.camera.projectionMatrix);
2241
+ this._gizmoMatrixState.copy(this._gizmos.matrix);
2282
2242
 
2283
- this.camera.updateProjectionMatrix();
2284
- this._zoomState = this.camera.zoom;
2285
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
2286
- this._fovState = this.camera.fov;
2287
- }
2243
+ if (this.camera.type === 'OrthographicCamera') {
2244
+ this._cameraProjectionState.copy(this.camera.projectionMatrix);
2245
+
2246
+ this.camera.updateProjectionMatrix();
2247
+ this._zoomState = this.camera.zoom;
2248
+ }
2249
+
2250
+ if (this.camera.type === 'PerspectiveCamera') {
2251
+ this._fovState = this.camera.fov;
2288
2252
  }
2289
2253
  });
2290
2254
 
@@ -2297,11 +2261,9 @@ class ArcballControls extends EventDispatcher {
2297
2261
  });
2298
2262
 
2299
2263
  _defineProperty(this, "update", () => {
2300
- var _this$camera2;
2301
-
2302
2264
  const EPS = 0.000001; // Update target and gizmos state
2303
2265
 
2304
- if (!this.target.equals(this._currentTarget) && this.camera !== null) {
2266
+ if (!this.target.equals(this._currentTarget) && this.camera) {
2305
2267
  this._gizmos.position.set(this.target.x, this.target.y, this.target.z); //for correct radius calculation
2306
2268
 
2307
2269
 
@@ -2314,16 +2276,19 @@ class ArcballControls extends EventDispatcher {
2314
2276
  this.makeGizmos(this.target, this._tbRadius);
2315
2277
 
2316
2278
  this._currentTarget.copy(this.target);
2317
- } //check min/max parameters
2279
+ }
2318
2280
 
2281
+ if (!this.camera) return; //check min/max parameters
2319
2282
 
2320
- if (this.camera instanceof OrthographicCamera && this.camera.isOrthographicCamera) {
2283
+ if (this.camera.type === 'OrthographicCamera') {
2321
2284
  //check zoom
2322
2285
  if (this.camera.zoom > this.maxZoom || this.camera.zoom < this.minZoom) {
2323
2286
  const newZoom = MathUtils.clamp(this.camera.zoom, this.minZoom, this.maxZoom);
2324
2287
  this.applyTransformMatrix(this.applyScale(newZoom / this.camera.zoom, this._gizmos.position, true));
2325
2288
  }
2326
- } else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
2289
+ }
2290
+
2291
+ if (this.camera.type === 'PerspectiveCamera') {
2327
2292
  //check distance
2328
2293
  const distance = this.camera.position.distanceTo(this._gizmos.position);
2329
2294
 
@@ -2356,21 +2321,18 @@ class ArcballControls extends EventDispatcher {
2356
2321
 
2357
2322
  for (const gizmo in this._gizmos.children) {
2358
2323
  const child = this._gizmos.children[gizmo];
2359
-
2360
- if (child instanceof Mesh) {
2361
- child.geometry = curveGeometry;
2362
- }
2324
+ child.geometry = curveGeometry;
2363
2325
  }
2364
2326
  }
2365
2327
  }
2366
2328
 
2367
- (_this$camera2 = this.camera) === null || _this$camera2 === void 0 ? void 0 : _this$camera2.lookAt(this._gizmos.position);
2329
+ this.camera.lookAt(this._gizmos.position);
2368
2330
  });
2369
2331
 
2370
2332
  _defineProperty(this, "setStateFromJSON", json => {
2371
2333
  const state = JSON.parse(json);
2372
2334
 
2373
- if (state.arcballState != undefined && (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera)) {
2335
+ if (state.arcballState && this.camera) {
2374
2336
  this._cameraMatrixState.fromArray(state.arcballState.cameraMatrix.elements);
2375
2337
 
2376
2338
  this._cameraMatrixState.decompose(this.camera.position, this.camera.quaternion, this.camera.scale);
@@ -2380,7 +2342,7 @@ class ArcballControls extends EventDispatcher {
2380
2342
  this.camera.far = state.arcballState.cameraFar;
2381
2343
  this.camera.zoom = state.arcballState.cameraZoom;
2382
2344
 
2383
- if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
2345
+ if (this.camera.type === 'PerspectiveCamera') {
2384
2346
  this.camera.fov = state.arcballState.cameraFov;
2385
2347
  }
2386
2348
 
@@ -2411,7 +2373,7 @@ class ArcballControls extends EventDispatcher {
2411
2373
  });
2412
2374
 
2413
2375
  this.camera = null;
2414
- this.domElement = domElement;
2376
+ this.domElement = _domElement;
2415
2377
  this.scene = scene;
2416
2378
  this.mouseActions = [];
2417
2379
  this._mouseOp = null; //global vectors and matrices that are used in some operations to avoid creating new objects every time (e.g. every time cursor moves)
@@ -2469,8 +2431,6 @@ class ArcballControls extends EventDispatcher {
2469
2431
  this._downValid = true;
2470
2432
  this._nclicks = 0;
2471
2433
  this._downEvents = [];
2472
- this._downStart = 0; //pointerDown time
2473
-
2474
2434
  this._clickStart = 0; //first click time
2475
2435
 
2476
2436
  this._maxDownTime = 250;
@@ -2530,7 +2490,6 @@ class ArcballControls extends EventDispatcher {
2530
2490
  this.enablePan = true;
2531
2491
  this.enableRotate = true;
2532
2492
  this.enableZoom = true;
2533
- this.enableGizmos = true;
2534
2493
  this.minDistance = 0;
2535
2494
  this.maxDistance = Infinity;
2536
2495
  this.minZoom = 0;
@@ -2543,18 +2502,13 @@ class ArcballControls extends EventDispatcher {
2543
2502
  this._state = STATE.IDLE;
2544
2503
  this.setCamera(_camera);
2545
2504
 
2546
- if (this.scene != null) {
2505
+ if (this.scene) {
2547
2506
  this.scene.add(this._gizmos);
2548
2507
  }
2549
2508
 
2550
- this.domElement.style.touchAction = 'none';
2551
2509
  this._devPxRatio = window.devicePixelRatio;
2552
2510
  this.initializeMouseActions();
2553
- this.domElement.addEventListener('contextmenu', this.onContextMenu);
2554
- this.domElement.addEventListener('wheel', this.onWheel);
2555
- this.domElement.addEventListener('pointerdown', this.onPointerDown);
2556
- this.domElement.addEventListener('pointercancel', this.onPointerCancel);
2557
- window.addEventListener('keydown', this.onKeyDown);
2511
+ if (this.domElement) this.connect(this.domElement);
2558
2512
  window.addEventListener('resize', this.onWindowResize);
2559
2513
  } //listeners
2560
2514
 
@@ -2564,7 +2518,7 @@ class ArcballControls extends EventDispatcher {
2564
2518
  * @param {Object} transformation Object containing matrices to apply to camera and gizmos
2565
2519
  */
2566
2520
  applyTransformMatrix(transformation) {
2567
- if ((transformation === null || transformation === void 0 ? void 0 : transformation.camera) != null && this.camera !== null) {
2521
+ if (transformation !== null && transformation !== void 0 && transformation.camera && this.camera) {
2568
2522
  this._m4_1.copy(this._cameraMatrixState).premultiply(transformation.camera);
2569
2523
 
2570
2524
  this._m4_1.decompose(this.camera.position, this.camera.quaternion, this.camera.scale);
@@ -2576,7 +2530,7 @@ class ArcballControls extends EventDispatcher {
2576
2530
  }
2577
2531
  }
2578
2532
 
2579
- if ((transformation === null || transformation === void 0 ? void 0 : transformation.gizmos) != null) {
2533
+ if (transformation !== null && transformation !== void 0 && transformation.gizmos) {
2580
2534
  this._m4_1.copy(this._gizmoMatrixState).premultiply(transformation.gizmos);
2581
2535
 
2582
2536
  this._m4_1.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale);
@@ -2584,7 +2538,7 @@ class ArcballControls extends EventDispatcher {
2584
2538
  this._gizmos.updateMatrix();
2585
2539
  }
2586
2540
 
2587
- if ((this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS) && (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera)) {
2541
+ if ((this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS) && this.camera) {
2588
2542
  const tbRadius = this.calculateTbRadius(this.camera);
2589
2543
 
2590
2544
  if (tbRadius !== undefined) {
@@ -2655,8 +2609,8 @@ class ArcballControls extends EventDispatcher {
2655
2609
  * @param {Matrix4} gizmos Transformation to be applied to gizmos
2656
2610
  */
2657
2611
  setTransformationMatrices(camera = null, gizmos = null) {
2658
- if (camera != null) {
2659
- if (_transformation.camera != null) {
2612
+ if (camera) {
2613
+ if (_transformation.camera) {
2660
2614
  _transformation.camera.copy(camera);
2661
2615
  } else {
2662
2616
  _transformation.camera = camera.clone();
@@ -2665,8 +2619,8 @@ class ArcballControls extends EventDispatcher {
2665
2619
  _transformation.camera = null;
2666
2620
  }
2667
2621
 
2668
- if (gizmos != null) {
2669
- if (_transformation.gizmos != null) {
2622
+ if (gizmos) {
2623
+ if (_transformation.gizmos) {
2670
2624
  _transformation.gizmos.copy(gizmos);
2671
2625
  } else {
2672
2626
  _transformation.gizmos = gizmos.clone();