@labelbee/lb-annotation 1.14.0-alpha.3 → 1.14.0-alpha.6

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 (189) hide show
  1. package/dist/_virtual/MathUtilsWorker.js +1 -8
  2. package/dist/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +2 -35
  3. package/dist/_virtual/filterBoxWorker.js +1 -8
  4. package/dist/_virtual/highlightWorker.js +1 -8
  5. package/dist/assets/attributeIcon/icon_canvasEdit0.svg.js +1 -5
  6. package/dist/assets/attributeIcon/icon_canvasEdit1.svg.js +1 -5
  7. package/dist/assets/attributeIcon/icon_canvasEdit2.svg.js +1 -5
  8. package/dist/assets/attributeIcon/icon_canvasEdit3.svg.js +1 -5
  9. package/dist/assets/attributeIcon/icon_canvasEdit4.svg.js +1 -5
  10. package/dist/assets/attributeIcon/icon_canvasEdit5.svg.js +1 -5
  11. package/dist/assets/attributeIcon/icon_canvasEdit6.svg.js +1 -5
  12. package/dist/assets/attributeIcon/icon_canvasEdit7.svg.js +1 -5
  13. package/dist/assets/attributeIcon/icon_canvasEdit8.svg.js +1 -5
  14. package/dist/assets/attributeIcon/icon_canvasEdit_miss.svg.js +1 -5
  15. package/dist/assets/attributeIcon/icon_cuboidFAB.svg.js +5 -5
  16. package/dist/assets/attributeIcon/icon_cuboidLeft.svg.js +7 -5
  17. package/dist/assets/attributeIcon/icon_cuboidMore.svg.js +5 -5
  18. package/dist/assets/attributeIcon/icon_cuboidRight.svg.js +5 -5
  19. package/dist/assets/attributeIcon/icon_cuboidTop.svg.js +12 -5
  20. package/dist/assets/attributeIcon/icon_editFEN.svg.js +1 -5
  21. package/dist/assets/attributeIcon/icon_editHUANG.svg.js +1 -5
  22. package/dist/assets/attributeIcon/icon_editLAN.svg.js +1 -5
  23. package/dist/assets/attributeIcon/icon_editLV.svg.js +1 -5
  24. package/dist/assets/attributeIcon/icon_editQING.svg.js +1 -5
  25. package/dist/constant/annotation.js +1 -127
  26. package/dist/constant/annotationTask.js +1 -30
  27. package/dist/constant/defaultConfig.js +1 -266
  28. package/dist/constant/keyCode.js +1 -38
  29. package/dist/constant/style.js +1 -98
  30. package/dist/constant/tool.js +1 -236
  31. package/dist/core/index.js +1 -150
  32. package/dist/core/pointCloud/OrbitControls.js +1 -665
  33. package/dist/core/pointCloud/PCDLoader.js +2 -260
  34. package/dist/core/pointCloud/annotation.js +1 -215
  35. package/dist/core/pointCloud/cache.js +1 -53
  36. package/dist/core/pointCloud/index.js +5 -991
  37. package/dist/core/pointCloud/matrix.js +1 -138
  38. package/dist/core/scheduler.js +1 -233
  39. package/dist/core/toolOperation/LineToolOperation.js +1 -1434
  40. package/dist/core/toolOperation/ScribbleTool.js +1 -292
  41. package/dist/core/toolOperation/TextToolOperation.js +1 -131
  42. package/dist/core/toolOperation/ViewOperation.js +1 -556
  43. package/dist/core/toolOperation/basicToolOperation.js +1 -881
  44. package/dist/core/toolOperation/checkOperation.js +1 -208
  45. package/dist/core/toolOperation/cuboidOperation.js +1 -754
  46. package/dist/core/toolOperation/cuboidToggleButtonClass.js +7 -152
  47. package/dist/core/toolOperation/eventListener.js +1 -37
  48. package/dist/core/toolOperation/measureOperation.js +1 -41
  49. package/dist/core/toolOperation/pointCloud2dOperation.js +1 -365
  50. package/dist/core/toolOperation/pointOperation.js +1 -696
  51. package/dist/core/toolOperation/polygonOperation.js +1 -1251
  52. package/dist/core/toolOperation/rectOperation.js +1 -1233
  53. package/dist/core/toolOperation/segmentByRect.js +1 -174
  54. package/dist/core/toolOperation/tagOperation.js +3 -201
  55. package/dist/core/toolOperation/textAttributeClass.js +16 -182
  56. package/dist/index.js +1 -185
  57. package/dist/locales/constants.js +1 -24
  58. package/dist/locales/en_US/message.js +1 -25
  59. package/dist/locales/index.js +1 -19
  60. package/dist/locales/zh_CN/message.js +1 -25
  61. package/dist/newCore/CanvasScheduler.js +1 -35
  62. package/dist/types/core/pointCloud/index.d.ts +2 -2
  63. package/dist/utils/ActionsHistory.js +1 -84
  64. package/dist/utils/ImgUtils.js +1 -23
  65. package/dist/utils/MathUtils.js +2 -385
  66. package/dist/utils/VectorUtils.js +1 -25
  67. package/dist/utils/tool/AttributeUtils.js +1 -218
  68. package/dist/utils/tool/AxisUtils.js +1 -340
  69. package/dist/utils/tool/CanvasUtils.js +1 -62
  70. package/dist/utils/tool/CommonToolUtils.js +1 -174
  71. package/dist/utils/tool/CuboidUtils.js +1 -704
  72. package/dist/utils/tool/DblClickEventListener.js +1 -102
  73. package/dist/utils/tool/DrawUtils.js +3 -492
  74. package/dist/utils/tool/EnhanceCommonToolUtils.js +1 -53
  75. package/dist/utils/tool/ImgPosUtils.js +1 -58
  76. package/dist/utils/tool/LineToolUtils.js +1 -261
  77. package/dist/utils/tool/MarkerUtils.js +1 -56
  78. package/dist/utils/tool/PolygonUtils.js +1 -460
  79. package/dist/utils/tool/RectUtils.js +1 -155
  80. package/dist/utils/tool/RenderDomClass.js +7 -57
  81. package/dist/utils/tool/RenderDomUtils.js +4 -21
  82. package/dist/utils/tool/StyleUtils.js +1 -31
  83. package/dist/utils/tool/TagUtils.js +1 -129
  84. package/dist/utils/tool/UnitUtils.js +1 -12
  85. package/dist/utils/tool/ZoomUtils.js +1 -72
  86. package/dist/utils/tool/polygonTool.js +1 -133
  87. package/dist/utils/uuid.js +1 -26
  88. package/es/_virtual/MathUtilsWorker.js +1 -6
  89. package/es/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +2 -31
  90. package/es/_virtual/filterBoxWorker.js +1 -6
  91. package/es/_virtual/highlightWorker.js +1 -6
  92. package/es/assets/attributeIcon/icon_canvasEdit0.svg.js +1 -3
  93. package/es/assets/attributeIcon/icon_canvasEdit1.svg.js +1 -3
  94. package/es/assets/attributeIcon/icon_canvasEdit2.svg.js +1 -3
  95. package/es/assets/attributeIcon/icon_canvasEdit3.svg.js +1 -3
  96. package/es/assets/attributeIcon/icon_canvasEdit4.svg.js +1 -3
  97. package/es/assets/attributeIcon/icon_canvasEdit5.svg.js +1 -3
  98. package/es/assets/attributeIcon/icon_canvasEdit6.svg.js +1 -3
  99. package/es/assets/attributeIcon/icon_canvasEdit7.svg.js +1 -3
  100. package/es/assets/attributeIcon/icon_canvasEdit8.svg.js +1 -3
  101. package/es/assets/attributeIcon/icon_canvasEdit_miss.svg.js +1 -3
  102. package/es/assets/attributeIcon/icon_cuboidFAB.svg.js +5 -3
  103. package/es/assets/attributeIcon/icon_cuboidLeft.svg.js +7 -3
  104. package/es/assets/attributeIcon/icon_cuboidMore.svg.js +5 -3
  105. package/es/assets/attributeIcon/icon_cuboidRight.svg.js +5 -3
  106. package/es/assets/attributeIcon/icon_cuboidTop.svg.js +12 -3
  107. package/es/assets/attributeIcon/icon_editFEN.svg.js +1 -3
  108. package/es/assets/attributeIcon/icon_editHUANG.svg.js +1 -3
  109. package/es/assets/attributeIcon/icon_editLAN.svg.js +1 -3
  110. package/es/assets/attributeIcon/icon_editLV.svg.js +1 -3
  111. package/es/assets/attributeIcon/icon_editQING.svg.js +1 -3
  112. package/es/constant/annotation.js +1 -113
  113. package/es/constant/annotationTask.js +1 -25
  114. package/es/constant/defaultConfig.js +1 -260
  115. package/es/constant/keyCode.js +1 -36
  116. package/es/constant/style.js +1 -74
  117. package/es/constant/tool.js +1 -220
  118. package/es/core/index.js +1 -148
  119. package/es/core/pointCloud/OrbitControls.js +1 -661
  120. package/es/core/pointCloud/PCDLoader.js +2 -256
  121. package/es/core/pointCloud/annotation.js +1 -211
  122. package/es/core/pointCloud/cache.js +1 -49
  123. package/es/core/pointCloud/index.js +5 -962
  124. package/es/core/pointCloud/matrix.js +1 -109
  125. package/es/core/scheduler.js +1 -228
  126. package/es/core/toolOperation/LineToolOperation.js +1 -1421
  127. package/es/core/toolOperation/ScribbleTool.js +1 -290
  128. package/es/core/toolOperation/TextToolOperation.js +1 -129
  129. package/es/core/toolOperation/ViewOperation.js +1 -549
  130. package/es/core/toolOperation/basicToolOperation.js +1 -877
  131. package/es/core/toolOperation/checkOperation.js +1 -206
  132. package/es/core/toolOperation/cuboidOperation.js +1 -752
  133. package/es/core/toolOperation/cuboidToggleButtonClass.js +7 -150
  134. package/es/core/toolOperation/eventListener.js +1 -35
  135. package/es/core/toolOperation/measureOperation.js +1 -39
  136. package/es/core/toolOperation/pointCloud2dOperation.js +1 -359
  137. package/es/core/toolOperation/pointOperation.js +1 -690
  138. package/es/core/toolOperation/polygonOperation.js +1 -1245
  139. package/es/core/toolOperation/rectOperation.js +1 -1228
  140. package/es/core/toolOperation/segmentByRect.js +1 -172
  141. package/es/core/toolOperation/tagOperation.js +3 -199
  142. package/es/core/toolOperation/textAttributeClass.js +16 -180
  143. package/es/index.js +1 -46
  144. package/es/locales/constants.js +1 -22
  145. package/es/locales/en_US/message.js +1 -23
  146. package/es/locales/index.js +1 -17
  147. package/es/locales/zh_CN/message.js +1 -23
  148. package/es/newCore/CanvasScheduler.js +1 -31
  149. package/es/utils/ActionsHistory.js +1 -78
  150. package/es/utils/ImgUtils.js +1 -21
  151. package/es/utils/MathUtils.js +2 -380
  152. package/es/utils/VectorUtils.js +1 -23
  153. package/es/utils/tool/AttributeUtils.js +1 -212
  154. package/es/utils/tool/AxisUtils.js +1 -335
  155. package/es/utils/tool/CanvasUtils.js +1 -60
  156. package/es/utils/tool/CommonToolUtils.js +1 -172
  157. package/es/utils/tool/CuboidUtils.js +1 -680
  158. package/es/utils/tool/DblClickEventListener.js +1 -100
  159. package/es/utils/tool/DrawUtils.js +3 -490
  160. package/es/utils/tool/EnhanceCommonToolUtils.js +1 -48
  161. package/es/utils/tool/ImgPosUtils.js +1 -56
  162. package/es/utils/tool/LineToolUtils.js +1 -255
  163. package/es/utils/tool/MarkerUtils.js +1 -54
  164. package/es/utils/tool/PolygonUtils.js +1 -458
  165. package/es/utils/tool/RectUtils.js +1 -153
  166. package/es/utils/tool/RenderDomClass.js +7 -55
  167. package/es/utils/tool/RenderDomUtils.js +4 -19
  168. package/es/utils/tool/StyleUtils.js +1 -29
  169. package/es/utils/tool/TagUtils.js +1 -127
  170. package/es/utils/tool/UnitUtils.js +1 -10
  171. package/es/utils/tool/ZoomUtils.js +1 -70
  172. package/es/utils/tool/polygonTool.js +1 -126
  173. package/es/utils/uuid.js +1 -24
  174. package/package.json +3 -4
  175. package/LICENSE +0 -203
  176. package/dist/core/pointCloud/segmentation.js +0 -144
  177. package/dist/core/pointCloud/selector/Sse3dLassoSelector.js +0 -26
  178. package/dist/core/pointCloud/selector/Sse3dSelector.js +0 -16
  179. package/dist/types/core/pointCloud/segmentation.d.ts +0 -0
  180. package/dist/types/core/pointCloud/selector/Sse3dLassoSelector.d.ts +0 -0
  181. package/dist/types/core/pointCloud/selector/Sse3dSelector.d.ts +0 -0
  182. package/es/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +0 -12
  183. package/es/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +0 -7
  184. package/es/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +0 -11
  185. package/es/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +0 -18
  186. package/es/core/pointCloud/segmentation.js +0 -120
  187. package/es/core/pointCloud/selector/Sse3dLassoSelector.js +0 -24
  188. package/es/core/pointCloud/selector/Sse3dSelector.js +0 -14
  189. package/es/core/toolOperation/scribbleTool2.js +0 -249
@@ -1,665 +1 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var THREE = require('three');
6
-
7
- var __defProp = Object.defineProperty;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
9
- var __publicField = (obj, key, value) => {
10
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
- return value;
12
- };
13
- const _changeEvent = {type: "change"};
14
- const _startEvent = {type: "start"};
15
- const _endEvent = {type: "end"};
16
- class OrbitControls extends THREE.EventDispatcher {
17
- constructor(object, domElement) {
18
- super();
19
- __publicField(this, "listenToKeyEvents", (domElement) => {
20
- domElement.addEventListener("keydown", onKeyDown);
21
- this._domElementKeyEvents = domElement;
22
- });
23
- if (domElement === void 0)
24
- console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.');
25
- if (domElement === document)
26
- console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');
27
- this.object = object;
28
- this.domElement = domElement;
29
- this.domElement.style.touchAction = "none";
30
- this.enabled = true;
31
- this.target = new THREE.Vector3();
32
- this.minDistance = 0;
33
- this.maxDistance = Infinity;
34
- this.minZoom = 0;
35
- this.maxZoom = Infinity;
36
- this.minPolarAngle = 0;
37
- this.maxPolarAngle = Math.PI;
38
- this.minAzimuthAngle = -Infinity;
39
- this.maxAzimuthAngle = Infinity;
40
- this.enableDamping = false;
41
- this.dampingFactor = 0.05;
42
- this.enableZoom = true;
43
- this.zoomSpeed = 1;
44
- this.enableRotate = true;
45
- this.rotateSpeed = 1;
46
- this.enablePan = true;
47
- this.panSpeed = 1;
48
- this.screenSpacePanning = true;
49
- this.keyPanSpeed = 7;
50
- this.autoRotate = false;
51
- this.autoRotateSpeed = 2;
52
- this.keys = {LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown"};
53
- this.mouseButtons = {LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN};
54
- this.touches = {ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN};
55
- this.target0 = this.target.clone();
56
- this.position0 = this.object.position.clone();
57
- this.zoom0 = this.object.zoom;
58
- this._domElementKeyEvents = null;
59
- this.getPolarAngle = function() {
60
- return spherical.phi;
61
- };
62
- this.getAzimuthalAngle = function() {
63
- return spherical.theta;
64
- };
65
- this.getDistance = function() {
66
- return this.object.position.distanceTo(this.target);
67
- };
68
- this.saveState = function() {
69
- scope.target0.copy(scope.target);
70
- scope.position0.copy(scope.object.position);
71
- scope.zoom0 = scope.object.zoom;
72
- };
73
- this.reset = function() {
74
- scope.target.copy(scope.target0);
75
- scope.object.position.copy(scope.position0);
76
- scope.object.zoom = scope.zoom0;
77
- scope.object.updateProjectionMatrix();
78
- scope.dispatchEvent(_changeEvent);
79
- scope.update();
80
- state = STATE.NONE;
81
- };
82
- this.update = function() {
83
- const offset = new THREE.Vector3();
84
- const quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));
85
- const quatInverse = quat.clone().invert();
86
- const lastPosition = new THREE.Vector3();
87
- const lastQuaternion = new THREE.Quaternion();
88
- const twoPI = 2 * Math.PI;
89
- return function update() {
90
- const {position} = scope.object;
91
- offset.copy(position).sub(scope.target);
92
- offset.applyQuaternion(quat);
93
- spherical.setFromVector3(offset);
94
- if (scope.autoRotate && state === STATE.NONE) {
95
- rotateLeft(getAutoRotationAngle());
96
- }
97
- if (scope.enableDamping) {
98
- spherical.theta += sphericalDelta.theta * scope.dampingFactor;
99
- spherical.phi += sphericalDelta.phi * scope.dampingFactor;
100
- } else {
101
- spherical.theta += sphericalDelta.theta;
102
- spherical.phi += sphericalDelta.phi;
103
- }
104
- let min = scope.minAzimuthAngle;
105
- let max = scope.maxAzimuthAngle;
106
- if (isFinite(min) && isFinite(max)) {
107
- if (min < -Math.PI)
108
- min += twoPI;
109
- else if (min > Math.PI)
110
- min -= twoPI;
111
- if (max < -Math.PI)
112
- max += twoPI;
113
- else if (max > Math.PI)
114
- max -= twoPI;
115
- if (min <= max) {
116
- spherical.theta = Math.max(min, Math.min(max, spherical.theta));
117
- } else {
118
- spherical.theta = spherical.theta > (min + max) / 2 ? Math.max(min, spherical.theta) : Math.min(max, spherical.theta);
119
- }
120
- }
121
- spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));
122
- spherical.makeSafe();
123
- spherical.radius *= scale;
124
- spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));
125
- if (scope.enableDamping === true) {
126
- scope.target.addScaledVector(panOffset, scope.dampingFactor);
127
- } else {
128
- scope.target.add(panOffset);
129
- }
130
- offset.setFromSpherical(spherical);
131
- offset.applyQuaternion(quatInverse);
132
- position.copy(scope.target).add(offset);
133
- scope.object.lookAt(scope.target);
134
- if (scope.enableDamping === true) {
135
- sphericalDelta.theta *= 1 - scope.dampingFactor;
136
- sphericalDelta.phi *= 1 - scope.dampingFactor;
137
- panOffset.multiplyScalar(1 - scope.dampingFactor);
138
- } else {
139
- sphericalDelta.set(0, 0, 0);
140
- panOffset.set(0, 0, 0);
141
- }
142
- scale = 1;
143
- if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {
144
- scope.dispatchEvent(_changeEvent);
145
- lastPosition.copy(scope.object.position);
146
- lastQuaternion.copy(scope.object.quaternion);
147
- zoomChanged = false;
148
- return true;
149
- }
150
- return false;
151
- };
152
- }();
153
- this.dispose = function() {
154
- scope.domElement.removeEventListener("contextmenu", onContextMenu);
155
- scope.domElement.removeEventListener("pointerdown", onPointerDown);
156
- scope.domElement.removeEventListener("pointercancel", onPointerCancel);
157
- scope.domElement.removeEventListener("wheel", onMouseWheel);
158
- scope.domElement.removeEventListener("pointermove", onPointerMove);
159
- scope.domElement.removeEventListener("pointerup", onPointerUp);
160
- if (scope._domElementKeyEvents !== null) {
161
- scope._domElementKeyEvents.removeEventListener("keydown", onKeyDown2);
162
- }
163
- };
164
- const scope = this;
165
- const STATE = {
166
- NONE: -1,
167
- ROTATE: 0,
168
- DOLLY: 1,
169
- PAN: 2,
170
- TOUCH_ROTATE: 3,
171
- TOUCH_PAN: 4,
172
- TOUCH_DOLLY_PAN: 5,
173
- TOUCH_DOLLY_ROTATE: 6
174
- };
175
- let state = STATE.NONE;
176
- const EPS = 1e-6;
177
- const spherical = new THREE.Spherical();
178
- const sphericalDelta = new THREE.Spherical();
179
- let scale = 1;
180
- const panOffset = new THREE.Vector3();
181
- let zoomChanged = false;
182
- const rotateStart = new THREE.Vector2();
183
- const rotateEnd = new THREE.Vector2();
184
- const rotateDelta = new THREE.Vector2();
185
- const panStart = new THREE.Vector2();
186
- const panEnd = new THREE.Vector2();
187
- const panDelta = new THREE.Vector2();
188
- const dollyStart = new THREE.Vector2();
189
- const dollyEnd = new THREE.Vector2();
190
- const dollyDelta = new THREE.Vector2();
191
- const pointers = [];
192
- const pointerPositions = {};
193
- function getAutoRotationAngle() {
194
- return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
195
- }
196
- function getZoomScale() {
197
- return Math.pow(0.95, scope.zoomSpeed);
198
- }
199
- function rotateLeft(angle) {
200
- sphericalDelta.theta -= angle;
201
- }
202
- function rotateUp(angle) {
203
- sphericalDelta.phi -= angle;
204
- }
205
- const panLeft = function() {
206
- const v = new THREE.Vector3();
207
- return function panLeft2(distance, objectMatrix) {
208
- v.setFromMatrixColumn(objectMatrix, 0);
209
- v.multiplyScalar(-distance);
210
- panOffset.add(v);
211
- };
212
- }();
213
- const panUp = function() {
214
- const v = new THREE.Vector3();
215
- return function panUp2(distance, objectMatrix) {
216
- if (scope.screenSpacePanning === true) {
217
- v.setFromMatrixColumn(objectMatrix, 1);
218
- } else {
219
- v.setFromMatrixColumn(objectMatrix, 0);
220
- v.crossVectors(scope.object.up, v);
221
- }
222
- v.multiplyScalar(distance);
223
- panOffset.add(v);
224
- };
225
- }();
226
- const pan = function() {
227
- const offset = new THREE.Vector3();
228
- return function pan2(deltaX, deltaY) {
229
- const element = scope.domElement;
230
- if (scope.object.isPerspectiveCamera) {
231
- const {position} = scope.object;
232
- offset.copy(position).sub(scope.target);
233
- let targetDistance = offset.length();
234
- targetDistance *= Math.tan(scope.object.fov / 2 * Math.PI / 180);
235
- panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);
236
- panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);
237
- } else if (scope.object.isOrthographicCamera) {
238
- panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);
239
- panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);
240
- } else {
241
- console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.");
242
- scope.enablePan = false;
243
- }
244
- };
245
- }();
246
- function dollyOut(dollyScale) {
247
- if (scope.object.isPerspectiveCamera) {
248
- scale /= dollyScale;
249
- } else if (scope.object.isOrthographicCamera) {
250
- scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));
251
- scope.object.updateProjectionMatrix();
252
- zoomChanged = true;
253
- } else {
254
- console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");
255
- scope.enableZoom = false;
256
- }
257
- }
258
- function dollyIn(dollyScale) {
259
- if (scope.object.isPerspectiveCamera) {
260
- scale *= dollyScale;
261
- } else if (scope.object.isOrthographicCamera) {
262
- scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));
263
- scope.object.updateProjectionMatrix();
264
- zoomChanged = true;
265
- } else {
266
- console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");
267
- scope.enableZoom = false;
268
- }
269
- }
270
- function handleMouseDownRotate(event) {
271
- rotateStart.set(event.clientX, event.clientY);
272
- }
273
- function handleMouseDownDolly(event) {
274
- dollyStart.set(event.clientX, event.clientY);
275
- }
276
- function handleMouseDownPan(event) {
277
- panStart.set(event.clientX, event.clientY);
278
- }
279
- function handleMouseMoveRotate(event) {
280
- rotateEnd.set(event.clientX, event.clientY);
281
- rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
282
- const element = scope.domElement;
283
- rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight);
284
- rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
285
- rotateStart.copy(rotateEnd);
286
- scope.update();
287
- }
288
- function handleMouseMoveDolly(event) {
289
- dollyEnd.set(event.clientX, event.clientY);
290
- dollyDelta.subVectors(dollyEnd, dollyStart);
291
- if (dollyDelta.y > 0) {
292
- dollyOut(getZoomScale());
293
- } else if (dollyDelta.y < 0) {
294
- dollyIn(getZoomScale());
295
- }
296
- dollyStart.copy(dollyEnd);
297
- scope.update();
298
- }
299
- function handleMouseMovePan(event) {
300
- panEnd.set(event.clientX, event.clientY);
301
- panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
302
- pan(panDelta.x, panDelta.y);
303
- panStart.copy(panEnd);
304
- scope.update();
305
- }
306
- function handleMouseWheel(event) {
307
- if (event.deltaY < 0) {
308
- dollyIn(getZoomScale());
309
- } else if (event.deltaY > 0) {
310
- dollyOut(getZoomScale());
311
- }
312
- scope.update();
313
- }
314
- function handleKeyDown(event) {
315
- let needsUpdate = false;
316
- switch (event.code) {
317
- case scope.keys.UP:
318
- pan(0, scope.keyPanSpeed);
319
- needsUpdate = true;
320
- break;
321
- case scope.keys.BOTTOM:
322
- pan(0, -scope.keyPanSpeed);
323
- needsUpdate = true;
324
- break;
325
- case scope.keys.LEFT:
326
- pan(scope.keyPanSpeed, 0);
327
- needsUpdate = true;
328
- break;
329
- case scope.keys.RIGHT:
330
- pan(-scope.keyPanSpeed, 0);
331
- needsUpdate = true;
332
- break;
333
- }
334
- if (needsUpdate) {
335
- event.preventDefault();
336
- scope.update();
337
- }
338
- }
339
- function handleTouchStartRotate() {
340
- if (pointers.length === 1) {
341
- rotateStart.set(pointers[0].pageX, pointers[0].pageY);
342
- } else {
343
- const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);
344
- const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);
345
- rotateStart.set(x, y);
346
- }
347
- }
348
- function handleTouchStartPan() {
349
- if (pointers.length === 1) {
350
- panStart.set(pointers[0].pageX, pointers[0].pageY);
351
- } else {
352
- const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);
353
- const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);
354
- panStart.set(x, y);
355
- }
356
- }
357
- function handleTouchStartDolly() {
358
- const dx = pointers[0].pageX - pointers[1].pageX;
359
- const dy = pointers[0].pageY - pointers[1].pageY;
360
- const distance = Math.sqrt(dx * dx + dy * dy);
361
- dollyStart.set(0, distance);
362
- }
363
- function handleTouchStartDollyPan() {
364
- if (scope.enableZoom)
365
- handleTouchStartDolly();
366
- if (scope.enablePan)
367
- handleTouchStartPan();
368
- }
369
- function handleTouchStartDollyRotate() {
370
- if (scope.enableZoom)
371
- handleTouchStartDolly();
372
- if (scope.enableRotate)
373
- handleTouchStartRotate();
374
- }
375
- function handleTouchMoveRotate(event) {
376
- if (pointers.length == 1) {
377
- rotateEnd.set(event.pageX, event.pageY);
378
- } else {
379
- const position = getSecondPointerPosition(event);
380
- const x = 0.5 * (event.pageX + position.x);
381
- const y = 0.5 * (event.pageY + position.y);
382
- rotateEnd.set(x, y);
383
- }
384
- rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
385
- const element = scope.domElement;
386
- rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight);
387
- rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
388
- rotateStart.copy(rotateEnd);
389
- }
390
- function handleTouchMovePan(event) {
391
- if (pointers.length === 1) {
392
- panEnd.set(event.pageX, event.pageY);
393
- } else {
394
- const position = getSecondPointerPosition(event);
395
- const x = 0.5 * (event.pageX + position.x);
396
- const y = 0.5 * (event.pageY + position.y);
397
- panEnd.set(x, y);
398
- }
399
- panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
400
- pan(panDelta.x, panDelta.y);
401
- panStart.copy(panEnd);
402
- }
403
- function handleTouchMoveDolly(event) {
404
- const position = getSecondPointerPosition(event);
405
- const dx = event.pageX - position.x;
406
- const dy = event.pageY - position.y;
407
- const distance = Math.sqrt(dx * dx + dy * dy);
408
- dollyEnd.set(0, distance);
409
- dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));
410
- dollyOut(dollyDelta.y);
411
- dollyStart.copy(dollyEnd);
412
- }
413
- function handleTouchMoveDollyPan(event) {
414
- if (scope.enableZoom)
415
- handleTouchMoveDolly(event);
416
- if (scope.enablePan)
417
- handleTouchMovePan(event);
418
- }
419
- function handleTouchMoveDollyRotate(event) {
420
- if (scope.enableZoom)
421
- handleTouchMoveDolly(event);
422
- if (scope.enableRotate)
423
- handleTouchMoveRotate(event);
424
- }
425
- function onPointerDown(event) {
426
- if (scope.enabled === false)
427
- return;
428
- if (pointers.length === 0) {
429
- scope.domElement.setPointerCapture(event.pointerId);
430
- scope.domElement.addEventListener("pointermove", onPointerMove);
431
- scope.domElement.addEventListener("pointerup", onPointerUp);
432
- }
433
- addPointer(event);
434
- if (event.pointerType === "touch") {
435
- onTouchStart(event);
436
- } else {
437
- onMouseDown(event);
438
- }
439
- }
440
- function onPointerMove(event) {
441
- if (scope.enabled === false)
442
- return;
443
- if (event.pointerType === "touch") {
444
- onTouchMove(event);
445
- } else {
446
- onMouseMove(event);
447
- }
448
- }
449
- function onPointerUp(event) {
450
- removePointer(event);
451
- if (pointers.length === 0) {
452
- scope.domElement.releasePointerCapture(event.pointerId);
453
- scope.domElement.removeEventListener("pointermove", onPointerMove);
454
- scope.domElement.removeEventListener("pointerup", onPointerUp);
455
- }
456
- scope.dispatchEvent(_endEvent);
457
- state = STATE.NONE;
458
- }
459
- function onPointerCancel(event) {
460
- removePointer(event);
461
- }
462
- function onMouseDown(event) {
463
- let mouseAction;
464
- switch (event.button) {
465
- case 0:
466
- mouseAction = scope.mouseButtons.LEFT;
467
- break;
468
- case 1:
469
- mouseAction = scope.mouseButtons.MIDDLE;
470
- break;
471
- case 2:
472
- mouseAction = scope.mouseButtons.RIGHT;
473
- break;
474
- default:
475
- mouseAction = -1;
476
- }
477
- switch (mouseAction) {
478
- case THREE.MOUSE.DOLLY:
479
- if (scope.enableZoom === false)
480
- return;
481
- handleMouseDownDolly(event);
482
- state = STATE.DOLLY;
483
- break;
484
- case THREE.MOUSE.ROTATE:
485
- if (event.ctrlKey || event.metaKey || event.shiftKey) {
486
- if (scope.enablePan === false)
487
- return;
488
- handleMouseDownPan(event);
489
- state = STATE.PAN;
490
- } else {
491
- if (scope.enableRotate === false)
492
- return;
493
- handleMouseDownRotate(event);
494
- state = STATE.ROTATE;
495
- }
496
- break;
497
- case THREE.MOUSE.PAN:
498
- if (event.ctrlKey || event.metaKey || event.shiftKey) {
499
- if (scope.enableRotate === false)
500
- return;
501
- handleMouseDownRotate(event);
502
- state = STATE.ROTATE;
503
- } else {
504
- if (scope.enablePan === false)
505
- return;
506
- handleMouseDownPan(event);
507
- state = STATE.PAN;
508
- }
509
- break;
510
- default:
511
- state = STATE.NONE;
512
- }
513
- if (state !== STATE.NONE) {
514
- scope.dispatchEvent(_startEvent);
515
- }
516
- }
517
- function onMouseMove(event) {
518
- if (scope.enabled === false)
519
- return;
520
- switch (state) {
521
- case STATE.ROTATE:
522
- if (scope.enableRotate === false)
523
- return;
524
- handleMouseMoveRotate(event);
525
- break;
526
- case STATE.DOLLY:
527
- if (scope.enableZoom === false)
528
- return;
529
- handleMouseMoveDolly(event);
530
- break;
531
- case STATE.PAN:
532
- if (scope.enablePan === false)
533
- return;
534
- handleMouseMovePan(event);
535
- break;
536
- }
537
- }
538
- function onMouseWheel(event) {
539
- if (scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE)
540
- return;
541
- event.preventDefault();
542
- scope.dispatchEvent(_startEvent);
543
- handleMouseWheel(event);
544
- scope.dispatchEvent(_endEvent);
545
- }
546
- function onKeyDown2(event) {
547
- if (scope.enabled === false || scope.enablePan === false)
548
- return;
549
- handleKeyDown(event);
550
- }
551
- function onTouchStart(event) {
552
- trackPointer(event);
553
- switch (pointers.length) {
554
- case 1:
555
- switch (scope.touches.ONE) {
556
- case THREE.TOUCH.ROTATE:
557
- if (scope.enableRotate === false)
558
- return;
559
- handleTouchStartRotate();
560
- state = STATE.TOUCH_ROTATE;
561
- break;
562
- case THREE.TOUCH.PAN:
563
- if (scope.enablePan === false)
564
- return;
565
- handleTouchStartPan();
566
- state = STATE.TOUCH_PAN;
567
- break;
568
- default:
569
- state = STATE.NONE;
570
- }
571
- break;
572
- case 2:
573
- switch (scope.touches.TWO) {
574
- case THREE.TOUCH.DOLLY_PAN:
575
- if (scope.enableZoom === false && scope.enablePan === false)
576
- return;
577
- handleTouchStartDollyPan();
578
- state = STATE.TOUCH_DOLLY_PAN;
579
- break;
580
- case THREE.TOUCH.DOLLY_ROTATE:
581
- if (scope.enableZoom === false && scope.enableRotate === false)
582
- return;
583
- handleTouchStartDollyRotate();
584
- state = STATE.TOUCH_DOLLY_ROTATE;
585
- break;
586
- default:
587
- state = STATE.NONE;
588
- }
589
- break;
590
- default:
591
- state = STATE.NONE;
592
- }
593
- if (state !== STATE.NONE) {
594
- scope.dispatchEvent(_startEvent);
595
- }
596
- }
597
- function onTouchMove(event) {
598
- trackPointer(event);
599
- switch (state) {
600
- case STATE.TOUCH_ROTATE:
601
- if (scope.enableRotate === false)
602
- return;
603
- handleTouchMoveRotate(event);
604
- scope.update();
605
- break;
606
- case STATE.TOUCH_PAN:
607
- if (scope.enablePan === false)
608
- return;
609
- handleTouchMovePan(event);
610
- scope.update();
611
- break;
612
- case STATE.TOUCH_DOLLY_PAN:
613
- if (scope.enableZoom === false && scope.enablePan === false)
614
- return;
615
- handleTouchMoveDollyPan(event);
616
- scope.update();
617
- break;
618
- case STATE.TOUCH_DOLLY_ROTATE:
619
- if (scope.enableZoom === false && scope.enableRotate === false)
620
- return;
621
- handleTouchMoveDollyRotate(event);
622
- scope.update();
623
- break;
624
- default:
625
- state = STATE.NONE;
626
- }
627
- }
628
- function onContextMenu(event) {
629
- if (scope.enabled === false)
630
- return;
631
- event.preventDefault();
632
- }
633
- function addPointer(event) {
634
- pointers.push(event);
635
- }
636
- function removePointer(event) {
637
- delete pointerPositions[event.pointerId];
638
- for (let i = 0; i < pointers.length; i++) {
639
- if (pointers[i].pointerId == event.pointerId) {
640
- pointers.splice(i, 1);
641
- return;
642
- }
643
- }
644
- }
645
- function trackPointer(event) {
646
- let position = pointerPositions[event.pointerId];
647
- if (position === void 0) {
648
- position = new THREE.Vector2();
649
- pointerPositions[event.pointerId] = position;
650
- }
651
- position.set(event.pageX, event.pageY);
652
- }
653
- function getSecondPointerPosition(event) {
654
- const pointer = event.pointerId === pointers[0].pointerId ? pointers[1] : pointers[0];
655
- return pointerPositions[pointer.pointerId];
656
- }
657
- scope.domElement.addEventListener("contextmenu", onContextMenu);
658
- scope.domElement.addEventListener("pointerdown", onPointerDown);
659
- scope.domElement.addEventListener("pointercancel", onPointerCancel);
660
- scope.domElement.addEventListener("wheel", onMouseWheel, {passive: false});
661
- this.update();
662
- }
663
- }
664
-
665
- exports.OrbitControls = OrbitControls;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var THREE=require("three"),__defProp=Object.defineProperty,__defNormalProp=(y,u,p)=>u in y?__defProp(y,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):y[u]=p,__publicField=(y,u,p)=>(__defNormalProp(y,typeof u!="symbol"?u+"":u,p),p);const _changeEvent={type:"change"},_startEvent={type:"start"},_endEvent={type:"end"};class OrbitControls extends THREE.EventDispatcher{constructor(u,p){super();__publicField(this,"listenToKeyEvents",t=>{t.addEventListener("keydown",onKeyDown),this._domElementKeyEvents=t}),p===void 0&&console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.'),p===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.object=u,this.domElement=p,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new THREE.Vector3,this.minDistance=0,this.maxDistance=Infinity,this.minZoom=0,this.maxZoom=Infinity,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-Infinity,this.maxAzimuthAngle=Infinity,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:THREE.MOUSE.ROTATE,MIDDLE:THREE.MOUSE.DOLLY,RIGHT:THREE.MOUSE.PAN},this.touches={ONE:THREE.TOUCH.ROTATE,TWO:THREE.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return s.phi},this.getAzimuthalAngle=function(){return s.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.saveState=function(){e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=function(){e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(_changeEvent),e.update(),i=a.NONE},this.update=function(){const t=new THREE.Vector3,n=new THREE.Quaternion().setFromUnitVectors(u.up,new THREE.Vector3(0,1,0)),r=n.clone().invert(),c=new THREE.Vector3,l=new THREE.Quaternion,L=2*Math.PI;return function(){const{position:oe}=e.object;t.copy(oe).sub(e.target),t.applyQuaternion(n),s.setFromVector3(t),e.autoRotate&&i===a.NONE&&C(ae()),e.enableDamping?(s.theta+=d.theta*e.dampingFactor,s.phi+=d.phi*e.dampingFactor):(s.theta+=d.theta,s.phi+=d.phi);let h=e.minAzimuthAngle,m=e.maxAzimuthAngle;return isFinite(h)&&isFinite(m)&&(h<-Math.PI?h+=L:h>Math.PI&&(h-=L),m<-Math.PI?m+=L:m>Math.PI&&(m-=L),h<=m?s.theta=Math.max(h,Math.min(m,s.theta)):s.theta=s.theta>(h+m)/2?Math.max(h,s.theta):Math.min(m,s.theta)),s.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,s.phi)),s.makeSafe(),s.radius*=N,s.radius=Math.max(e.minDistance,Math.min(e.maxDistance,s.radius)),e.enableDamping===!0?e.target.addScaledVector(O,e.dampingFactor):e.target.add(O),t.setFromSpherical(s),t.applyQuaternion(r),oe.copy(e.target).add(t),e.object.lookAt(e.target),e.enableDamping===!0?(d.theta*=1-e.dampingFactor,d.phi*=1-e.dampingFactor,O.multiplyScalar(1-e.dampingFactor)):(d.set(0,0,0),O.set(0,0,0)),N=1,S||c.distanceToSquared(e.object.position)>U||8*(1-l.dot(e.object.quaternion))>U?(e.dispatchEvent(_changeEvent),c.copy(e.object.position),l.copy(e.object.quaternion),S=!1,!0):!1}}(),this.dispose=function(){e.domElement.removeEventListener("contextmenu",ee),e.domElement.removeEventListener("pointerdown",Q),e.domElement.removeEventListener("pointercancel",J),e.domElement.removeEventListener("wheel",$),e.domElement.removeEventListener("pointermove",k),e.domElement.removeEventListener("pointerup",_),e._domElementKeyEvents!==null&&e._domElementKeyEvents.removeEventListener("keydown",Ee)};const e=this,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let i=a.NONE;const U=1e-6,s=new THREE.Spherical,d=new THREE.Spherical;let N=1;const O=new THREE.Vector3;let S=!1;const f=new THREE.Vector2,b=new THREE.Vector2,P=new THREE.Vector2,E=new THREE.Vector2,g=new THREE.Vector2,T=new THREE.Vector2,M=new THREE.Vector2,w=new THREE.Vector2,D=new THREE.Vector2,o=[],R={};function ae(){return 2*Math.PI/60/60*e.autoRotateSpeed}function j(){return Math.pow(.95,e.zoomSpeed)}function C(t){d.theta-=t}function H(t){d.phi-=t}const V=function(){const t=new THREE.Vector3;return function(r,c){t.setFromMatrixColumn(c,0),t.multiplyScalar(-r),O.add(t)}}(),v=function(){const t=new THREE.Vector3;return function(r,c){e.screenSpacePanning===!0?t.setFromMatrixColumn(c,1):(t.setFromMatrixColumn(c,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(r),O.add(t)}}(),A=function(){const t=new THREE.Vector3;return function(r,c){const l=e.domElement;if(e.object.isPerspectiveCamera){const{position:L}=e.object;t.copy(L).sub(e.target);let x=t.length();x*=Math.tan(e.object.fov/2*Math.PI/180),V(2*r*x/l.clientHeight,e.object.matrix),v(2*c*x/l.clientHeight,e.object.matrix)}else e.object.isOrthographicCamera?(V(r*(e.object.right-e.object.left)/e.object.zoom/l.clientWidth,e.object.matrix),v(c*(e.object.top-e.object.bottom)/e.object.zoom/l.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}}();function I(t){e.object.isPerspectiveCamera?N/=t:e.object.isOrthographicCamera?(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom*t)),e.object.updateProjectionMatrix(),S=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function z(t){e.object.isPerspectiveCamera?N*=t:e.object.isOrthographicCamera?(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/t)),e.object.updateProjectionMatrix(),S=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function Z(t){f.set(t.clientX,t.clientY)}function ie(t){M.set(t.clientX,t.clientY)}function F(t){E.set(t.clientX,t.clientY)}function se(t){b.set(t.clientX,t.clientY),P.subVectors(b,f).multiplyScalar(e.rotateSpeed);const n=e.domElement;C(2*Math.PI*P.x/n.clientHeight),H(2*Math.PI*P.y/n.clientHeight),f.copy(b),e.update()}function re(t){w.set(t.clientX,t.clientY),D.subVectors(w,M),D.y>0?I(j()):D.y<0&&z(j()),M.copy(w),e.update()}function ce(t){g.set(t.clientX,t.clientY),T.subVectors(g,E).multiplyScalar(e.panSpeed),A(T.x,T.y),E.copy(g),e.update()}function le(t){t.deltaY<0?z(j()):t.deltaY>0&&I(j()),e.update()}function ue(t){let n=!1;switch(t.code){case e.keys.UP:A(0,e.keyPanSpeed),n=!0;break;case e.keys.BOTTOM:A(0,-e.keyPanSpeed),n=!0;break;case e.keys.LEFT:A(e.keyPanSpeed,0),n=!0;break;case e.keys.RIGHT:A(-e.keyPanSpeed,0),n=!0;break}n&&(t.preventDefault(),e.update())}function X(){if(o.length===1)f.set(o[0].pageX,o[0].pageY);else{const t=.5*(o[0].pageX+o[1].pageX),n=.5*(o[0].pageY+o[1].pageY);f.set(t,n)}}function K(){if(o.length===1)E.set(o[0].pageX,o[0].pageY);else{const t=.5*(o[0].pageX+o[1].pageX),n=.5*(o[0].pageY+o[1].pageY);E.set(t,n)}}function q(){const t=o[0].pageX-o[1].pageX,n=o[0].pageY-o[1].pageY,r=Math.sqrt(t*t+n*n);M.set(0,r)}function pe(){e.enableZoom&&q(),e.enablePan&&K()}function de(){e.enableZoom&&q(),e.enableRotate&&X()}function W(t){if(o.length==1)b.set(t.pageX,t.pageY);else{const r=Y(t),c=.5*(t.pageX+r.x),l=.5*(t.pageY+r.y);b.set(c,l)}P.subVectors(b,f).multiplyScalar(e.rotateSpeed);const n=e.domElement;C(2*Math.PI*P.x/n.clientHeight),H(2*Math.PI*P.y/n.clientHeight),f.copy(b)}function G(t){if(o.length===1)g.set(t.pageX,t.pageY);else{const n=Y(t),r=.5*(t.pageX+n.x),c=.5*(t.pageY+n.y);g.set(r,c)}T.subVectors(g,E).multiplyScalar(e.panSpeed),A(T.x,T.y),E.copy(g)}function B(t){const n=Y(t),r=t.pageX-n.x,c=t.pageY-n.y,l=Math.sqrt(r*r+c*c);w.set(0,l),D.set(0,Math.pow(w.y/M.y,e.zoomSpeed)),I(D.y),M.copy(w)}function he(t){e.enableZoom&&B(t),e.enablePan&&G(t)}function me(t){e.enableZoom&&B(t),e.enableRotate&&W(t)}function Q(t){e.enabled!==!1&&(o.length===0&&(e.domElement.setPointerCapture(t.pointerId),e.domElement.addEventListener("pointermove",k),e.domElement.addEventListener("pointerup",_)),Oe(t),t.pointerType==="touch"?ge(t):fe(t))}function k(t){e.enabled!==!1&&(t.pointerType==="touch"?ye(t):be(t))}function _(t){te(t),o.length===0&&(e.domElement.releasePointerCapture(t.pointerId),e.domElement.removeEventListener("pointermove",k),e.domElement.removeEventListener("pointerup",_)),e.dispatchEvent(_endEvent),i=a.NONE}function J(t){te(t)}function fe(t){let n;switch(t.button){case 0:n=e.mouseButtons.LEFT;break;case 1:n=e.mouseButtons.MIDDLE;break;case 2:n=e.mouseButtons.RIGHT;break;default:n=-1}switch(n){case THREE.MOUSE.DOLLY:if(e.enableZoom===!1)return;ie(t),i=a.DOLLY;break;case THREE.MOUSE.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enablePan===!1)return;F(t),i=a.PAN}else{if(e.enableRotate===!1)return;Z(t),i=a.ROTATE}break;case THREE.MOUSE.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enableRotate===!1)return;Z(t),i=a.ROTATE}else{if(e.enablePan===!1)return;F(t),i=a.PAN}break;default:i=a.NONE}i!==a.NONE&&e.dispatchEvent(_startEvent)}function be(t){if(e.enabled!==!1)switch(i){case a.ROTATE:if(e.enableRotate===!1)return;se(t);break;case a.DOLLY:if(e.enableZoom===!1)return;re(t);break;case a.PAN:if(e.enablePan===!1)return;ce(t);break}}function $(t){e.enabled===!1||e.enableZoom===!1||i!==a.NONE||(t.preventDefault(),e.dispatchEvent(_startEvent),le(t),e.dispatchEvent(_endEvent))}function Ee(t){e.enabled===!1||e.enablePan===!1||ue(t)}function ge(t){switch(ne(t),o.length){case 1:switch(e.touches.ONE){case THREE.TOUCH.ROTATE:if(e.enableRotate===!1)return;X(),i=a.TOUCH_ROTATE;break;case THREE.TOUCH.PAN:if(e.enablePan===!1)return;K(),i=a.TOUCH_PAN;break;default:i=a.NONE}break;case 2:switch(e.touches.TWO){case THREE.TOUCH.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;pe(),i=a.TOUCH_DOLLY_PAN;break;case THREE.TOUCH.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;de(),i=a.TOUCH_DOLLY_ROTATE;break;default:i=a.NONE}break;default:i=a.NONE}i!==a.NONE&&e.dispatchEvent(_startEvent)}function ye(t){switch(ne(t),i){case a.TOUCH_ROTATE:if(e.enableRotate===!1)return;W(t),e.update();break;case a.TOUCH_PAN:if(e.enablePan===!1)return;G(t),e.update();break;case a.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;he(t),e.update();break;case a.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;me(t),e.update();break;default:i=a.NONE}}function ee(t){e.enabled!==!1&&t.preventDefault()}function Oe(t){o.push(t)}function te(t){delete R[t.pointerId];for(let n=0;n<o.length;n++)if(o[n].pointerId==t.pointerId){o.splice(n,1);return}}function ne(t){let n=R[t.pointerId];n===void 0&&(n=new THREE.Vector2,R[t.pointerId]=n),n.set(t.pageX,t.pageY)}function Y(t){const n=t.pointerId===o[0].pointerId?o[1]:o[0];return R[n.pointerId]}e.domElement.addEventListener("contextmenu",ee),e.domElement.addEventListener("pointerdown",Q),e.domElement.addEventListener("pointercancel",J),e.domElement.addEventListener("wheel",$,{passive:!1}),this.update()}}exports.OrbitControls=OrbitControls;