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

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