@aibee/owlly 1.0.26 → 1.0.29

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 (359) hide show
  1. package/lib/external/lines/line-geometry.d.ts +9 -0
  2. package/lib/external/lines/line-geometry.js +51 -0
  3. package/lib/external/lines/line-material.d.ts +10 -0
  4. package/lib/external/lines/line-material.js +376 -0
  5. package/lib/external/lines/line-segments-2.d.ts +7 -0
  6. package/lib/external/lines/line-segments-2.js +143 -0
  7. package/lib/external/lines/line-segments-geometry.d.ts +15 -0
  8. package/lib/external/lines/line-segments-geometry.js +140 -0
  9. package/lib/external/loaders/gltf-loader.d.ts +77 -0
  10. package/lib/external/loaders/gltf-loader.js +2318 -0
  11. package/lib/external/orbit-controls.d.ts +44 -0
  12. package/lib/external/orbit-controls.js +745 -0
  13. package/lib/external/renderers/css-2d-renderer.d.ts +16 -0
  14. package/lib/external/renderers/css-2d-renderer.js +121 -0
  15. package/lib/external/renderers/css-3d-renderer.d.ts +18 -0
  16. package/lib/external/renderers/css-3d-renderer.js +138 -0
  17. package/lib/external/transform-controls.d.ts +106 -0
  18. package/lib/external/transform-controls.js +1112 -0
  19. package/lib/owlly/controller/aerial-element-controller.d.ts +65 -0
  20. package/lib/owlly/controller/aerial-element-controller.js +235 -0
  21. package/lib/owlly/controller/basic-controller.d.ts +324 -0
  22. package/lib/owlly/controller/basic-controller.js +1238 -0
  23. package/lib/owlly/controller/camera-controller.d.ts +37 -0
  24. package/lib/owlly/controller/camera-controller.js +137 -0
  25. package/lib/owlly/controller/controller.d.ts +61 -0
  26. package/lib/owlly/controller/controller.js +23 -0
  27. package/lib/owlly/controller/index.d.ts +2 -0
  28. package/lib/owlly/controller/index.js +13 -0
  29. package/lib/owlly/controller/mouse-indicator-controller.d.ts +34 -0
  30. package/lib/owlly/controller/mouse-indicator-controller.js +118 -0
  31. package/lib/owlly/controller/orbit-control.d.ts +147 -0
  32. package/lib/owlly/controller/orbit-control.js +264 -0
  33. package/lib/owlly/controller/panorama-adjust-controller.d.ts +45 -0
  34. package/lib/owlly/controller/panorama-adjust-controller.js +157 -0
  35. package/lib/owlly/controller/panorama-controller.d.ts +441 -0
  36. package/lib/owlly/controller/panorama-controller.js +1943 -0
  37. package/lib/owlly/controller/panorama-transform-controller.d.ts +66 -0
  38. package/lib/owlly/controller/panorama-transform-controller.js +136 -0
  39. package/lib/owlly/controller/plane-controller.d.ts +43 -0
  40. package/lib/owlly/controller/plane-controller.js +173 -0
  41. package/lib/owlly/controller/texture-controller.d.ts +181 -0
  42. package/lib/owlly/controller/texture-controller.js +875 -0
  43. package/lib/owlly/controller/tile-panorama-controller.d.ts +308 -0
  44. package/lib/owlly/controller/tile-panorama-controller.js +1353 -0
  45. package/lib/owlly/controller/transform-controller.d.ts +106 -0
  46. package/lib/owlly/controller/transform-controller.js +545 -0
  47. package/lib/owlly/element/bottom-nav-element.d.ts +65 -0
  48. package/lib/owlly/element/bottom-nav-element.js +257 -0
  49. package/lib/owlly/element/camera.d.ts +82 -0
  50. package/lib/owlly/element/camera.js +283 -0
  51. package/lib/owlly/element/dom-2d-element.d.ts +35 -0
  52. package/lib/owlly/element/dom-2d-element.js +48 -0
  53. package/lib/owlly/element/dom-3d-element.d.ts +27 -0
  54. package/lib/owlly/element/dom-3d-element.js +33 -0
  55. package/lib/owlly/element/dom-label-2d.d.ts +116 -0
  56. package/lib/owlly/element/dom-label-2d.js +382 -0
  57. package/lib/owlly/element/element.d.ts +53 -0
  58. package/lib/owlly/element/element.js +75 -0
  59. package/lib/owlly/element/floor-model.d.ts +83 -0
  60. package/lib/owlly/element/floor-model.js +227 -0
  61. package/lib/owlly/element/gif-kit/Gif.d.ts +96 -0
  62. package/lib/owlly/element/gif-kit/Gif.js +432 -0
  63. package/lib/owlly/element/gif-kit/GifColor.d.ts +21 -0
  64. package/lib/owlly/element/gif-kit/GifColor.js +37 -0
  65. package/lib/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.d.ts +20 -0
  66. package/lib/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.js +50 -0
  67. package/lib/owlly/element/gif-kit/GifFrame.d.ts +31 -0
  68. package/lib/owlly/element/gif-kit/GifFrame.js +96 -0
  69. package/lib/owlly/element/gif-kit/GifImage.d.ts +23 -0
  70. package/lib/owlly/element/gif-kit/GifImage.js +7 -0
  71. package/lib/owlly/element/gif-kit/GifParser.d.ts +17 -0
  72. package/lib/owlly/element/gif-kit/GifParser.js +196 -0
  73. package/lib/owlly/element/gif-kit/GifPresenter.d.ts +20 -0
  74. package/lib/owlly/element/gif-kit/GifPresenter.js +43 -0
  75. package/lib/owlly/element/gif-kit/GifVersion.d.ts +10 -0
  76. package/lib/owlly/element/gif-kit/GifVersion.js +12 -0
  77. package/lib/owlly/element/gltf-mesh-element.d.ts +31 -0
  78. package/lib/owlly/element/gltf-mesh-element.js +136 -0
  79. package/lib/owlly/element/index.d.ts +20 -0
  80. package/lib/owlly/element/index.js +24 -0
  81. package/lib/owlly/element/map-kit/shape.d.ts +131 -0
  82. package/lib/owlly/element/map-kit/shape.js +189 -0
  83. package/lib/owlly/element/mesh-element.d.ts +22 -0
  84. package/lib/owlly/element/mesh-element.js +63 -0
  85. package/lib/owlly/element/mesh-line-2d.d.ts +82 -0
  86. package/lib/owlly/element/mesh-line-2d.js +887 -0
  87. package/lib/owlly/element/meshline-o.d.ts +64 -0
  88. package/lib/owlly/element/meshline-o.js +678 -0
  89. package/lib/owlly/element/panorama-group.d.ts +241 -0
  90. package/lib/owlly/element/panorama-group.js +966 -0
  91. package/lib/owlly/element/panorama.d.ts +132 -0
  92. package/lib/owlly/element/panorama.js +812 -0
  93. package/lib/owlly/element/path-group.d.ts +69 -0
  94. package/lib/owlly/element/path-group.js +171 -0
  95. package/lib/owlly/element/path.d.ts +99 -0
  96. package/lib/owlly/element/path.js +531 -0
  97. package/lib/owlly/element/placeable-2d.d.ts +158 -0
  98. package/lib/owlly/element/placeable-2d.js +470 -0
  99. package/lib/owlly/element/polygon-mesh.d.ts +107 -0
  100. package/lib/owlly/element/polygon-mesh.js +307 -0
  101. package/lib/owlly/element/ring-element.d.ts +79 -0
  102. package/lib/owlly/element/ring-element.js +383 -0
  103. package/lib/owlly/element/sphere-mesh.d.ts +28 -0
  104. package/lib/owlly/element/sphere-mesh.js +69 -0
  105. package/lib/owlly/element/svg-floor-model.d.ts +22 -0
  106. package/lib/owlly/element/svg-floor-model.js +184 -0
  107. package/lib/owlly/element/svg-floors.d.ts +27 -0
  108. package/lib/owlly/element/svg-floors.js +109 -0
  109. package/lib/owlly/element/tile-panorama-group.d.ts +335 -0
  110. package/lib/owlly/element/tile-panorama-group.js +1006 -0
  111. package/lib/owlly/element/tile-panorama.d.ts +161 -0
  112. package/lib/owlly/element/tile-panorama.js +509 -0
  113. package/lib/owlly/element/tile-plane.d.ts +105 -0
  114. package/lib/owlly/element/tile-plane.js +360 -0
  115. package/lib/owlly/element/video-element.d.ts +33 -0
  116. package/lib/owlly/element/video-element.js +159 -0
  117. package/lib/owlly/geometries/ExtrudeGeometry2.d.ts +15 -0
  118. package/lib/owlly/geometries/ExtrudeGeometry2.js +210 -0
  119. package/lib/owlly/index.d.ts +13 -0
  120. package/lib/owlly/index.js +16 -0
  121. package/lib/owlly/overlay/canvas-overlay.d.ts +96 -0
  122. package/lib/owlly/overlay/canvas-overlay.js +510 -0
  123. package/lib/owlly/overlay/css-2d-overlay.d.ts +14 -0
  124. package/lib/owlly/overlay/css-2d-overlay.js +35 -0
  125. package/lib/owlly/overlay/css-3d-overlay.d.ts +16 -0
  126. package/lib/owlly/overlay/css-3d-overlay.js +36 -0
  127. package/lib/owlly/overlay/index.d.ts +6 -0
  128. package/lib/owlly/overlay/index.js +11 -0
  129. package/lib/owlly/overlay/label-overlay.d.ts +62 -0
  130. package/lib/owlly/overlay/label-overlay.js +328 -0
  131. package/lib/owlly/overlay/overlay.d.ts +14 -0
  132. package/lib/owlly/overlay/overlay.js +4 -0
  133. package/lib/owlly/overlay/path-overlay.d.ts +39 -0
  134. package/lib/owlly/overlay/path-overlay.js +124 -0
  135. package/lib/owlly/overlay/path-overlay2.d.ts +35 -0
  136. package/lib/owlly/overlay/path-overlay2.js +118 -0
  137. package/lib/owlly/overlay/poi-overlay-3d.d.ts +278 -0
  138. package/lib/owlly/overlay/poi-overlay-3d.js +1432 -0
  139. package/lib/owlly/overlay/poi-overlay.d.ts +277 -0
  140. package/lib/owlly/overlay/poi-overlay.js +1411 -0
  141. package/lib/owlly/owlly-2d/index.d.ts +28 -0
  142. package/lib/owlly/owlly-2d/index.js +92 -0
  143. package/lib/owlly/screen/index.d.ts +1 -0
  144. package/lib/owlly/screen/index.js +1 -0
  145. package/lib/owlly/screen/screen.d.ts +73 -0
  146. package/lib/owlly/screen/screen.js +236 -0
  147. package/lib/owlly/stage/externals.d.ts +19 -0
  148. package/lib/owlly/stage/externals.js +24 -0
  149. package/lib/owlly/stage/index.d.ts +4 -0
  150. package/lib/owlly/stage/index.js +6 -0
  151. package/lib/owlly/stage/owlly.d.ts +38 -0
  152. package/lib/owlly/stage/owlly.js +168 -0
  153. package/lib/owlly/stage/stage.d.ts +108 -0
  154. package/lib/owlly/stage/stage.js +234 -0
  155. package/lib/owlly/utils/alignment-utils.d.ts +20 -0
  156. package/lib/owlly/utils/alignment-utils.js +63 -0
  157. package/lib/owlly/utils/basic-calc.d.ts +18 -0
  158. package/lib/owlly/utils/basic-calc.js +129 -0
  159. package/lib/owlly/utils/basic-tools.d.ts +71 -0
  160. package/lib/owlly/utils/basic-tools.js +235 -0
  161. package/lib/owlly/utils/bvh-tree.d.ts +105 -0
  162. package/lib/owlly/utils/bvh-tree.js +539 -0
  163. package/lib/owlly/utils/camera.d.ts +37 -0
  164. package/lib/owlly/utils/camera.js +50 -0
  165. package/lib/owlly/utils/cube-texture-cache.d.ts +25 -0
  166. package/lib/owlly/utils/cube-texture-cache.js +143 -0
  167. package/lib/owlly/utils/device-utils.d.ts +18 -0
  168. package/lib/owlly/utils/device-utils.js +41 -0
  169. package/lib/owlly/utils/environment-utils.d.ts +37 -0
  170. package/lib/owlly/utils/environment-utils.js +73 -0
  171. package/lib/owlly/utils/event-hub.d.ts +50 -0
  172. package/lib/owlly/utils/event-hub.js +106 -0
  173. package/lib/owlly/utils/events.d.ts +219 -0
  174. package/lib/owlly/utils/events.js +219 -0
  175. package/lib/owlly/utils/geometry-utils.d.ts +119 -0
  176. package/lib/owlly/utils/geometry-utils.js +622 -0
  177. package/lib/owlly/utils/helper.d.ts +6 -0
  178. package/lib/owlly/utils/helper.js +24 -0
  179. package/lib/owlly/utils/index.d.ts +14 -0
  180. package/lib/owlly/utils/index.js +17 -0
  181. package/lib/owlly/utils/lru-cache.d.ts +26 -0
  182. package/lib/owlly/utils/lru-cache.js +109 -0
  183. package/lib/owlly/utils/map-utils.d.ts +7 -0
  184. package/lib/owlly/utils/map-utils.js +52 -0
  185. package/lib/owlly/utils/number-utils.d.ts +8 -0
  186. package/lib/owlly/utils/number-utils.js +72 -0
  187. package/lib/owlly/utils/panorama-model-util.d.ts +46 -0
  188. package/lib/owlly/utils/panorama-model-util.js +245 -0
  189. package/lib/owlly/utils/path-utils.d.ts +80 -0
  190. package/lib/owlly/utils/path-utils.js +728 -0
  191. package/lib/owlly/utils/svgutils.d.ts +138 -0
  192. package/lib/owlly/utils/svgutils.js +561 -0
  193. package/lib/owlly/utils/texture-cache.d.ts +29 -0
  194. package/lib/owlly/utils/texture-cache.js +115 -0
  195. package/lib/owlly/utils/tile-util.d.ts +187 -0
  196. package/lib/owlly/utils/tile-util.js +456 -0
  197. package/lib/owlly/utils/time-profiler.d.ts +21 -0
  198. package/lib/owlly/utils/time-profiler.js +48 -0
  199. package/lib/owlly/view/camera-view.d.ts +35 -0
  200. package/lib/owlly/view/camera-view.js +101 -0
  201. package/lib/owlly/view/index.d.ts +3 -0
  202. package/lib/owlly/view/index.js +5 -0
  203. package/lib/owlly/view/orthographic-view.d.ts +40 -0
  204. package/lib/owlly/view/orthographic-view.js +94 -0
  205. package/lib/owlly/view/perspective-view.d.ts +40 -0
  206. package/lib/owlly/view/perspective-view.js +95 -0
  207. package/lib/owlly/view/svg-map-view.d.ts +46 -0
  208. package/lib/owlly/view/svg-map-view.js +144 -0
  209. package/lib/owlly/view/view.d.ts +146 -0
  210. package/lib/owlly/view/view.js +317 -0
  211. package/lib/prod/owlly.esm.js +93462 -0
  212. package/lib/prod/owlly.esm.js.map +1 -0
  213. package/lib/prod/owlly.esm.min.js +54 -0
  214. package/lib/prod/owlly.iife.js +93560 -0
  215. package/lib/prod/owlly.iife.js.map +1 -0
  216. package/lib/prod/owlly.iife.min.js +69 -0
  217. package/lib/prod/owlly.miniapp.js +73845 -0
  218. package/lib/prod/owlly.miniapp.js.map +1 -0
  219. package/lib/prod/owlly.miniapp.min.js +63 -0
  220. package/lib/prod/src/external/lines/line-geometry.d.ts +9 -0
  221. package/lib/prod/src/external/lines/line-material.d.ts +10 -0
  222. package/lib/prod/src/external/lines/line-segments-2.d.ts +7 -0
  223. package/lib/prod/src/external/lines/line-segments-geometry.d.ts +15 -0
  224. package/lib/prod/src/external/loaders/gltf-loader.d.ts +77 -0
  225. package/lib/prod/src/external/orbit-controls.d.ts +44 -0
  226. package/lib/prod/src/external/renderers/css-2d-renderer.d.ts +16 -0
  227. package/lib/prod/src/external/renderers/css-3d-renderer.d.ts +18 -0
  228. package/lib/prod/src/external/transform-controls.d.ts +106 -0
  229. package/lib/prod/src/external/util/buffer-geometry-utils.d.ts +45 -0
  230. package/lib/prod/src/owlly/controller/aerial-element-controller.d.ts +65 -0
  231. package/lib/prod/src/owlly/controller/basic-controller.d.ts +324 -0
  232. package/lib/prod/src/owlly/controller/camera-controller.d.ts +37 -0
  233. package/lib/prod/src/owlly/controller/controller.d.ts +61 -0
  234. package/lib/prod/src/owlly/controller/index.d.ts +2 -0
  235. package/lib/prod/src/owlly/controller/mouse-indicator-controller.d.ts +34 -0
  236. package/lib/prod/src/owlly/controller/orbit-control.d.ts +147 -0
  237. package/lib/prod/src/owlly/controller/panorama-adjust-controller.d.ts +45 -0
  238. package/lib/prod/src/owlly/controller/panorama-controller.d.ts +441 -0
  239. package/lib/prod/src/owlly/controller/panorama-transform-controller.d.ts +66 -0
  240. package/lib/prod/src/owlly/controller/plane-controller.d.ts +43 -0
  241. package/lib/prod/src/owlly/controller/texture-controller.d.ts +183 -0
  242. package/lib/prod/src/owlly/controller/tile-panorama-controller.d.ts +308 -0
  243. package/lib/prod/src/owlly/controller/transform-controller.d.ts +106 -0
  244. package/lib/prod/src/owlly/element/bottom-nav-element.d.ts +65 -0
  245. package/lib/prod/src/owlly/element/camera.d.ts +82 -0
  246. package/lib/prod/src/owlly/element/dom-2d-element.d.ts +35 -0
  247. package/lib/prod/src/owlly/element/dom-3d-element.d.ts +27 -0
  248. package/lib/prod/src/owlly/element/dom-label-2d.d.ts +116 -0
  249. package/lib/prod/src/owlly/element/element.d.ts +53 -0
  250. package/lib/prod/src/owlly/element/floor-model.d.ts +83 -0
  251. package/lib/prod/src/owlly/element/gif-kit/Gif.d.ts +96 -0
  252. package/lib/prod/src/owlly/element/gif-kit/GifColor.d.ts +21 -0
  253. package/lib/prod/src/owlly/element/gif-kit/GifCompressedCodesToByteArrayConverter.d.ts +20 -0
  254. package/lib/prod/src/owlly/element/gif-kit/GifFrame.d.ts +31 -0
  255. package/lib/prod/src/owlly/element/gif-kit/GifImage.d.ts +23 -0
  256. package/lib/prod/src/owlly/element/gif-kit/GifParser.d.ts +17 -0
  257. package/lib/prod/src/owlly/element/gif-kit/GifPresenter.d.ts +20 -0
  258. package/lib/prod/src/owlly/element/gif-kit/GifVersion.d.ts +10 -0
  259. package/lib/prod/src/owlly/element/gltf-mesh-element.d.ts +31 -0
  260. package/lib/prod/src/owlly/element/index.d.ts +6 -0
  261. package/lib/prod/src/owlly/element/map-kit/area.d.ts +24 -0
  262. package/lib/prod/src/owlly/element/map-kit/block-set.d.ts +39 -0
  263. package/lib/prod/src/owlly/element/map-kit/block.d.ts +77 -0
  264. package/lib/prod/src/owlly/element/map-kit/index.d.ts +3 -0
  265. package/lib/prod/src/owlly/element/map-kit/shape.d.ts +131 -0
  266. package/lib/prod/src/owlly/element/mesh-element.d.ts +22 -0
  267. package/lib/prod/src/owlly/element/mesh-line-2d.d.ts +82 -0
  268. package/lib/prod/src/owlly/element/meshline-o.d.ts +64 -0
  269. package/lib/prod/src/owlly/element/panorama-group.d.ts +241 -0
  270. package/lib/prod/src/owlly/element/panorama.d.ts +132 -0
  271. package/lib/prod/src/owlly/element/path-group.d.ts +69 -0
  272. package/lib/prod/src/owlly/element/path.d.ts +99 -0
  273. package/lib/prod/src/owlly/element/placeable-2d.d.ts +158 -0
  274. package/lib/prod/src/owlly/element/polygon-mesh.d.ts +107 -0
  275. package/lib/prod/src/owlly/element/ring-element.d.ts +79 -0
  276. package/lib/prod/src/owlly/element/sphere-mesh.d.ts +28 -0
  277. package/lib/prod/src/owlly/element/svg-floor-model.d.ts +22 -0
  278. package/lib/prod/src/owlly/element/svg-floors.d.ts +27 -0
  279. package/lib/prod/src/owlly/element/tile-panorama-group.d.ts +335 -0
  280. package/lib/prod/src/owlly/element/tile-panorama.d.ts +162 -0
  281. package/lib/prod/src/owlly/element/tile-plane.d.ts +114 -0
  282. package/lib/prod/src/owlly/element/video-element.d.ts +33 -0
  283. package/lib/prod/src/owlly/geometries/ExtrudeGeometry2.d.ts +15 -0
  284. package/lib/prod/src/owlly/index.d.ts +13 -0
  285. package/lib/prod/src/owlly/overlay/canvas-overlay.d.ts +96 -0
  286. package/lib/prod/src/owlly/overlay/css-2d-overlay.d.ts +14 -0
  287. package/lib/prod/src/owlly/overlay/css-3d-overlay.d.ts +16 -0
  288. package/lib/prod/src/owlly/overlay/index.d.ts +5 -0
  289. package/lib/prod/src/owlly/overlay/label-overlay.d.ts +62 -0
  290. package/lib/prod/src/owlly/overlay/overlay.d.ts +14 -0
  291. package/lib/prod/src/owlly/overlay/path-overlay.d.ts +39 -0
  292. package/lib/prod/src/owlly/overlay/path-overlay2.d.ts +35 -0
  293. package/lib/prod/src/owlly/overlay/poi-overlay-3d.d.ts +278 -0
  294. package/lib/prod/src/owlly/overlay/poi-overlay.d.ts +277 -0
  295. package/lib/prod/src/owlly/owlly-2d/index.d.ts +28 -0
  296. package/lib/prod/src/owlly/screen/index.d.ts +1 -0
  297. package/lib/prod/src/owlly/screen/screen.d.ts +73 -0
  298. package/lib/prod/src/owlly/stage/__test__/stage.spec.d.ts +1 -0
  299. package/lib/prod/src/owlly/stage/externals.d.ts +19 -0
  300. package/lib/prod/src/owlly/stage/index.d.ts +3 -0
  301. package/lib/prod/src/owlly/stage/owlly.d.ts +38 -0
  302. package/lib/prod/src/owlly/stage/stage.d.ts +108 -0
  303. package/lib/prod/src/owlly/utils/alignment-utils.d.ts +20 -0
  304. package/lib/prod/src/owlly/utils/basic-calc.d.ts +18 -0
  305. package/lib/prod/src/owlly/utils/basic-tools.d.ts +71 -0
  306. package/lib/prod/src/owlly/utils/bvh-tree.d.ts +105 -0
  307. package/lib/prod/src/owlly/utils/camera.d.ts +37 -0
  308. package/lib/prod/src/owlly/utils/cube-texture-cache.d.ts +25 -0
  309. package/lib/prod/src/owlly/utils/device-utils.d.ts +18 -0
  310. package/lib/prod/src/owlly/utils/environment-utils.d.ts +37 -0
  311. package/lib/prod/src/owlly/utils/event-hub.d.ts +50 -0
  312. package/lib/prod/src/owlly/utils/events.d.ts +219 -0
  313. package/lib/prod/src/owlly/utils/geometry-utils.d.ts +119 -0
  314. package/lib/prod/src/owlly/utils/helper.d.ts +6 -0
  315. package/lib/prod/src/owlly/utils/index.d.ts +13 -0
  316. package/lib/prod/src/owlly/utils/lru-cache.d.ts +26 -0
  317. package/lib/prod/src/owlly/utils/map-utils.d.ts +7 -0
  318. package/lib/prod/src/owlly/utils/number-utils.d.ts +8 -0
  319. package/lib/prod/src/owlly/utils/panorama-model-util.d.ts +46 -0
  320. package/lib/prod/src/owlly/utils/path-utils.d.ts +80 -0
  321. package/lib/prod/src/owlly/utils/svgutils.d.ts +138 -0
  322. package/lib/prod/src/owlly/utils/texture-cache.d.ts +29 -0
  323. package/lib/prod/src/owlly/utils/tile-util.d.ts +187 -0
  324. package/lib/prod/src/owlly/utils/time-profiler.d.ts +21 -0
  325. package/lib/prod/src/owlly/view/__test__/perspective-view.spec.d.ts +0 -0
  326. package/lib/prod/src/owlly/view/camera-view.d.ts +35 -0
  327. package/lib/prod/src/owlly/view/index.d.ts +3 -0
  328. package/lib/prod/src/owlly/view/orthographic-view.d.ts +40 -0
  329. package/lib/prod/src/owlly/view/perspective-view.d.ts +40 -0
  330. package/lib/prod/src/owlly/view/svg-map-view.d.ts +46 -0
  331. package/lib/prod/src/owlly/view/view.d.ts +146 -0
  332. package/lib/src/owlly/controller/texture-controller.d.ts +3 -1
  333. package/lib/src/owlly/controller/texture-controller.js +16 -1
  334. package/lib/src/owlly/controller/texture-controller.js.map +1 -1
  335. package/lib/src/owlly/controller/tile-panorama-controller.js +4 -0
  336. package/lib/src/owlly/controller/tile-panorama-controller.js.map +1 -1
  337. package/lib/src/owlly/element/tile-panorama.d.ts +1 -0
  338. package/lib/src/owlly/element/tile-panorama.js +16 -3
  339. package/lib/src/owlly/element/tile-panorama.js.map +1 -1
  340. package/lib/src/owlly/element/tile-plane.d.ts +9 -0
  341. package/lib/src/owlly/element/tile-plane.js +27 -0
  342. package/lib/src/owlly/element/tile-plane.js.map +1 -1
  343. package/lib/src/owlly/overlay/poi-overlay-3d.js.map +1 -1
  344. package/lib/src/owlly/overlay/poi-overlay.js.map +1 -1
  345. package/lib/src/owlly/stage/owlly.js +7 -1
  346. package/lib/src/owlly/stage/owlly.js.map +1 -1
  347. package/lib/src/owlly/stage/stage.js +2 -0
  348. package/lib/src/owlly/stage/stage.js.map +1 -1
  349. package/lib/src/web/main.rpeng.mes.plane.js.map +1 -1
  350. package/package.json +16 -7
  351. package/src/owlly/controller/texture-controller.ts +18 -1
  352. package/src/owlly/controller/tile-panorama-controller.ts +3 -1
  353. package/src/owlly/element/tile-panorama.ts +14 -0
  354. package/src/owlly/element/tile-plane.ts +26 -0
  355. package/src/owlly/overlay/poi-overlay-3d.ts +0 -4
  356. package/src/owlly/overlay/poi-overlay.ts +0 -4
  357. package/src/owlly/stage/owlly.ts +6 -1
  358. package/src/owlly/stage/stage.ts +2 -0
  359. package/src/web/main.rpeng.mes.plane.ts +0 -6
@@ -0,0 +1,745 @@
1
+ /* eslint-disable max-len, no-continue, @typescript-eslint/no-explicit-any, no-underscore-dangle, func-names, @typescript-eslint/no-this-alias, no-console */
2
+ import { Externals, NS_THREE } from '../owlly/stage/externals';
3
+ class OrbitControls extends NS_THREE.EventDispatcher {
4
+ constructor(object, domElement) {
5
+ super();
6
+ const { THREE } = Externals.getInstance();
7
+ if (domElement === undefined)
8
+ console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.');
9
+ if (domElement === document)
10
+ console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');
11
+ this.object = object;
12
+ this.domElement = domElement;
13
+ // Set to false to disable this control
14
+ this.enabled = true;
15
+ // "target" sets the location of focus, where the object orbits around
16
+ this.target = new THREE.Vector3();
17
+ // How far you can dolly in and out ( PerspectiveCamera only )
18
+ this.minDistance = 0;
19
+ this.maxDistance = Infinity;
20
+ // How far you can zoom in and out ( OrthographicCamera only )
21
+ this.minZoom = 0;
22
+ this.maxZoom = Infinity;
23
+ // How far you can orbit vertically, upper and lower limits.
24
+ // Range is 0 to Math.PI radians.
25
+ this.minPolarAngle = 0; // radians
26
+ this.maxPolarAngle = Math.PI; // radians
27
+ // How far you can orbit horizontally, upper and lower limits.
28
+ // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
29
+ this.minAzimuthAngle = -Infinity; // radians
30
+ this.maxAzimuthAngle = Infinity; // radians
31
+ // Set to true to enable damping (inertia)
32
+ // If damping is enabled, you must call controls.update() in your animation loop
33
+ this.enableDamping = false;
34
+ this.dampingFactor = 0.05;
35
+ // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
36
+ // Set to false to disable zooming
37
+ this.enableZoom = true;
38
+ this.zoomSpeed = 1.0;
39
+ // Set to false to disable rotating
40
+ this.enableRotate = true;
41
+ this.rotateSpeed = 1.0;
42
+ // Set to false to disable panning
43
+ this.enablePan = true;
44
+ this.panSpeed = 1.0;
45
+ this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
46
+ this.keyPanSpeed = 7.0; // pixels moved per arrow key push
47
+ // Set to true to automatically rotate around the target
48
+ // If auto-rotate is enabled, you must call controls.update() in your animation loop
49
+ this.autoRotate = false;
50
+ this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
51
+ this.enableKeys = false;
52
+ // The four arrow keys
53
+ this.keys = {
54
+ LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40,
55
+ };
56
+ // Mouse buttons
57
+ this.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN };
58
+ // Touch fingers
59
+ this.touches = { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN };
60
+ // for reset
61
+ this.target0 = this.target.clone();
62
+ this.position0 = this.object.position.clone();
63
+ this.zoom0 = this.object.zoom;
64
+ // the target DOM element for key events
65
+ this._domElementKeyEvents = null;
66
+ //
67
+ // internals
68
+ //
69
+ const scope = this;
70
+ const changeEvent = { type: 'change' };
71
+ const startEvent = { type: 'start' };
72
+ const endEvent = { type: 'end' };
73
+ const STATE = {
74
+ NONE: -1,
75
+ ROTATE: 0,
76
+ DOLLY: 1,
77
+ PAN: 2,
78
+ TOUCH_ROTATE: 3,
79
+ TOUCH_PAN: 4,
80
+ TOUCH_DOLLY_PAN: 5,
81
+ TOUCH_DOLLY_ROTATE: 6,
82
+ };
83
+ let state = STATE.NONE;
84
+ const EPS = 0.000001;
85
+ // current position in spherical coordinates
86
+ const spherical = new THREE.Spherical();
87
+ const sphericalDelta = new THREE.Spherical();
88
+ let scale = 1;
89
+ const panOffset = new THREE.Vector3();
90
+ let zoomChanged = false;
91
+ const rotateStart = new THREE.Vector2();
92
+ const rotateEnd = new THREE.Vector2();
93
+ const rotateDelta = new THREE.Vector2();
94
+ const panStart = new THREE.Vector2();
95
+ const panEnd = new THREE.Vector2();
96
+ const panDelta = new THREE.Vector2();
97
+ const dollyStart = new THREE.Vector2();
98
+ const dollyEnd = new THREE.Vector2();
99
+ const dollyDelta = new THREE.Vector2();
100
+ function getAutoRotationAngle() {
101
+ return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
102
+ }
103
+ function getZoomScale() {
104
+ return Math.pow(0.95, scope.zoomSpeed); // eslint-disable-line
105
+ }
106
+ function rotateLeft(angle) {
107
+ sphericalDelta.theta -= angle;
108
+ }
109
+ function rotateUp(angle) {
110
+ sphericalDelta.phi -= angle;
111
+ }
112
+ const panLeft = (function () {
113
+ const v = new THREE.Vector3();
114
+ return function (distance, objectMatrix) {
115
+ v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix
116
+ v.multiplyScalar(-distance);
117
+ panOffset.add(v);
118
+ };
119
+ }());
120
+ const panUp = (function () {
121
+ const v = new THREE.Vector3();
122
+ return function (distance, objectMatrix) {
123
+ if (scope.screenSpacePanning === true) {
124
+ v.setFromMatrixColumn(objectMatrix, 1);
125
+ }
126
+ else {
127
+ v.setFromMatrixColumn(objectMatrix, 0);
128
+ v.crossVectors(scope.object.up, v);
129
+ }
130
+ v.multiplyScalar(distance);
131
+ panOffset.add(v);
132
+ };
133
+ }());
134
+ // deltaX and deltaY are in pixels; right and down are positive
135
+ const pan = (function () {
136
+ const offset = new THREE.Vector3();
137
+ return function (deltaX, deltaY) {
138
+ const element = scope.domElement;
139
+ if (scope.object.isPerspectiveCamera) {
140
+ // perspective
141
+ const { position } = scope.object;
142
+ offset.copy(position).sub(scope.target);
143
+ let targetDistance = offset.length();
144
+ // half of the fov is center to top of screen
145
+ targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);
146
+ // we use only clientHeight here so aspect ratio does not distort speed
147
+ panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);
148
+ panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);
149
+ }
150
+ else if (scope.object.isOrthographicCamera) {
151
+ const ortho = scope.object;
152
+ // orthographic
153
+ panLeft(deltaX * (ortho.right - ortho.left) / ortho.zoom / element.clientWidth, ortho.matrix);
154
+ panUp(deltaY * (ortho.top - ortho.bottom) / ortho.zoom / element.clientHeight, ortho.matrix);
155
+ }
156
+ else {
157
+ // camera neither orthographic nor perspective
158
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');
159
+ scope.enablePan = false;
160
+ }
161
+ };
162
+ }());
163
+ function dollyOut(dollyScale) {
164
+ if (scope.object.isPerspectiveCamera) {
165
+ scale /= dollyScale;
166
+ }
167
+ else if (scope.object.isOrthographicCamera) {
168
+ scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));
169
+ scope.object.updateProjectionMatrix();
170
+ zoomChanged = true;
171
+ }
172
+ else {
173
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');
174
+ scope.enableZoom = false;
175
+ }
176
+ }
177
+ function dollyIn(dollyScale) {
178
+ if (scope.object.isPerspectiveCamera) {
179
+ scale *= dollyScale;
180
+ }
181
+ else if (scope.object.isOrthographicCamera) {
182
+ scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));
183
+ scope.object.updateProjectionMatrix();
184
+ zoomChanged = true;
185
+ }
186
+ else {
187
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');
188
+ scope.enableZoom = false;
189
+ }
190
+ }
191
+ //
192
+ // event callbacks - update the object state
193
+ //
194
+ function handleMouseDownRotate(event) {
195
+ rotateStart.set(event.clientX, event.clientY);
196
+ }
197
+ function handleMouseDownDolly(event) {
198
+ dollyStart.set(event.clientX, event.clientY);
199
+ }
200
+ function handleMouseDownPan(event) {
201
+ panStart.set(event.clientX, event.clientY);
202
+ }
203
+ function handleMouseMoveRotate(event) {
204
+ rotateEnd.set(event.clientX, event.clientY);
205
+ rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
206
+ const element = scope.domElement;
207
+ rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height
208
+ rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
209
+ rotateStart.copy(rotateEnd);
210
+ scope.update();
211
+ }
212
+ function handleMouseMoveDolly(event) {
213
+ dollyEnd.set(event.clientX, event.clientY);
214
+ dollyDelta.subVectors(dollyEnd, dollyStart);
215
+ if (dollyDelta.y > 0) {
216
+ dollyOut(getZoomScale());
217
+ }
218
+ else if (dollyDelta.y < 0) {
219
+ dollyIn(getZoomScale());
220
+ }
221
+ dollyStart.copy(dollyEnd);
222
+ scope.update();
223
+ }
224
+ function handleMouseMovePan(event) {
225
+ panEnd.set(event.clientX, event.clientY);
226
+ panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
227
+ pan(panDelta.x, panDelta.y);
228
+ panStart.copy(panEnd);
229
+ scope.update();
230
+ }
231
+ function handleMouseUp( /* event */) {
232
+ // no-op
233
+ }
234
+ function handleMouseWheel(event) {
235
+ if (event.deltaY < 0) {
236
+ dollyIn(getZoomScale());
237
+ }
238
+ else if (event.deltaY > 0) {
239
+ dollyOut(getZoomScale());
240
+ }
241
+ scope.update();
242
+ }
243
+ function handleKeyDown(event) {
244
+ let needsUpdate = false;
245
+ switch (event.keyCode) {
246
+ case scope.keys.UP:
247
+ pan(0, scope.keyPanSpeed);
248
+ needsUpdate = true;
249
+ break;
250
+ case scope.keys.BOTTOM:
251
+ pan(0, -scope.keyPanSpeed);
252
+ needsUpdate = true;
253
+ break;
254
+ case scope.keys.LEFT:
255
+ pan(scope.keyPanSpeed, 0);
256
+ needsUpdate = true;
257
+ break;
258
+ case scope.keys.RIGHT:
259
+ pan(-scope.keyPanSpeed, 0);
260
+ needsUpdate = true;
261
+ break;
262
+ default: break;
263
+ }
264
+ if (needsUpdate) {
265
+ // prevent the browser from scrolling on cursor keys
266
+ event.preventDefault();
267
+ scope.update();
268
+ }
269
+ }
270
+ function handleTouchStartRotate(event) {
271
+ if (event.touches.length === 1) {
272
+ rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);
273
+ }
274
+ else {
275
+ const x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
276
+ const y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
277
+ rotateStart.set(x, y);
278
+ }
279
+ }
280
+ function handleTouchStartPan(event) {
281
+ if (event.touches.length === 1) {
282
+ panStart.set(event.touches[0].pageX, event.touches[0].pageY);
283
+ }
284
+ else {
285
+ const x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
286
+ const y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
287
+ panStart.set(x, y);
288
+ }
289
+ }
290
+ function handleTouchStartDolly(event) {
291
+ const dx = event.touches[0].pageX - event.touches[1].pageX;
292
+ const dy = event.touches[0].pageY - event.touches[1].pageY;
293
+ const distance = Math.sqrt(dx * dx + dy * dy);
294
+ dollyStart.set(0, distance);
295
+ }
296
+ function handleTouchStartDollyPan(event) {
297
+ if (scope.enableZoom)
298
+ handleTouchStartDolly(event);
299
+ if (scope.enablePan)
300
+ handleTouchStartPan(event);
301
+ }
302
+ function handleTouchStartDollyRotate(event) {
303
+ if (scope.enableZoom)
304
+ handleTouchStartDolly(event);
305
+ if (scope.enableRotate)
306
+ handleTouchStartRotate(event);
307
+ }
308
+ function handleTouchMoveRotate(event) {
309
+ if (event.touches.length === 1) {
310
+ rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);
311
+ }
312
+ else {
313
+ const x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
314
+ const y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
315
+ rotateEnd.set(x, y);
316
+ }
317
+ rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
318
+ const element = scope.domElement;
319
+ rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height
320
+ rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
321
+ rotateStart.copy(rotateEnd);
322
+ }
323
+ function handleTouchMovePan(event) {
324
+ if (event.touches.length === 1) {
325
+ panEnd.set(event.touches[0].pageX, event.touches[0].pageY);
326
+ }
327
+ else {
328
+ const x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
329
+ const y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
330
+ panEnd.set(x, y);
331
+ }
332
+ panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
333
+ pan(panDelta.x, panDelta.y);
334
+ panStart.copy(panEnd);
335
+ }
336
+ function handleTouchMoveDolly(event) {
337
+ const dx = event.touches[0].pageX - event.touches[1].pageX;
338
+ const dy = event.touches[0].pageY - event.touches[1].pageY;
339
+ const distance = Math.sqrt(dx * dx + dy * dy);
340
+ dollyEnd.set(0, distance);
341
+ // eslint-disable-next-line
342
+ dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));
343
+ dollyOut(dollyDelta.y);
344
+ dollyStart.copy(dollyEnd);
345
+ }
346
+ function handleTouchMoveDollyPan(event) {
347
+ if (scope.enableZoom)
348
+ handleTouchMoveDolly(event);
349
+ if (scope.enablePan)
350
+ handleTouchMovePan(event);
351
+ }
352
+ function handleTouchMoveDollyRotate(event) {
353
+ if (scope.enableZoom)
354
+ handleTouchMoveDolly(event);
355
+ if (scope.enableRotate)
356
+ handleTouchMoveRotate(event);
357
+ }
358
+ function handleTouchEnd( /* event */) {
359
+ // no-op
360
+ }
361
+ //
362
+ // event handlers - FSM: listen for events and reset state
363
+ //
364
+ function onPointerDown(event) {
365
+ if (scope.enabled === false)
366
+ return;
367
+ switch (event.pointerType) {
368
+ case 'mouse':
369
+ case 'pen':
370
+ onMouseDown(event); // eslint-disable-line @typescript-eslint/no-use-before-define
371
+ break;
372
+ // TODO touch
373
+ default: break;
374
+ }
375
+ }
376
+ function onPointerMove(event) {
377
+ if (scope.enabled === false)
378
+ return;
379
+ switch (event.pointerType) {
380
+ case 'mouse':
381
+ case 'pen':
382
+ onMouseMove(event); // eslint-disable-line @typescript-eslint/no-use-before-define
383
+ break;
384
+ // TODO touch
385
+ default: break;
386
+ }
387
+ }
388
+ function onPointerUp(event) {
389
+ switch (event.pointerType) {
390
+ case 'mouse':
391
+ case 'pen':
392
+ onMouseUp(); // eslint-disable-line @typescript-eslint/no-use-before-define
393
+ break;
394
+ // TODO touch
395
+ default: break;
396
+ }
397
+ }
398
+ function onMouseDown(event) {
399
+ // Prevent the browser from scrolling.
400
+ event.preventDefault();
401
+ // Manually set the focus since calling preventDefault above
402
+ // prevents the browser from setting it automatically.
403
+ // eslint-disable-next-line
404
+ scope.domElement.focus ? scope.domElement.focus() : window.focus();
405
+ let mouseAction;
406
+ switch (event.button) {
407
+ case 0:
408
+ mouseAction = scope.mouseButtons.LEFT;
409
+ break;
410
+ case 1:
411
+ mouseAction = scope.mouseButtons.MIDDLE;
412
+ break;
413
+ case 2:
414
+ mouseAction = scope.mouseButtons.RIGHT;
415
+ break;
416
+ default:
417
+ mouseAction = -1;
418
+ }
419
+ switch (mouseAction) {
420
+ case THREE.MOUSE.DOLLY:
421
+ if (scope.enableZoom === false)
422
+ return;
423
+ handleMouseDownDolly(event);
424
+ state = STATE.DOLLY;
425
+ break;
426
+ case THREE.MOUSE.ROTATE:
427
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
428
+ if (scope.enablePan === false)
429
+ return;
430
+ handleMouseDownPan(event);
431
+ state = STATE.PAN;
432
+ }
433
+ else {
434
+ if (scope.enableRotate === false)
435
+ return;
436
+ handleMouseDownRotate(event);
437
+ state = STATE.ROTATE;
438
+ }
439
+ break;
440
+ case THREE.MOUSE.PAN:
441
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
442
+ if (scope.enableRotate === false)
443
+ return;
444
+ handleMouseDownRotate(event);
445
+ state = STATE.ROTATE;
446
+ }
447
+ else {
448
+ if (scope.enablePan === false)
449
+ return;
450
+ handleMouseDownPan(event);
451
+ state = STATE.PAN;
452
+ }
453
+ break;
454
+ default:
455
+ state = STATE.NONE;
456
+ }
457
+ if (state !== STATE.NONE) {
458
+ scope.domElement.ownerDocument.addEventListener('pointermove', onPointerMove);
459
+ scope.domElement.ownerDocument.addEventListener('pointerup', onPointerUp);
460
+ scope.dispatchEvent(startEvent);
461
+ }
462
+ }
463
+ function onMouseMove(event) {
464
+ if (scope.enabled === false)
465
+ return;
466
+ event.preventDefault();
467
+ switch (state) {
468
+ case STATE.ROTATE:
469
+ if (scope.enableRotate === false)
470
+ return;
471
+ handleMouseMoveRotate(event);
472
+ break;
473
+ case STATE.DOLLY:
474
+ if (scope.enableZoom === false)
475
+ return;
476
+ handleMouseMoveDolly(event);
477
+ break;
478
+ case STATE.PAN:
479
+ if (scope.enablePan === false)
480
+ return;
481
+ handleMouseMovePan(event);
482
+ break;
483
+ default: break;
484
+ }
485
+ }
486
+ function onMouseUp() {
487
+ scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove);
488
+ scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp);
489
+ if (scope.enabled === false)
490
+ return;
491
+ handleMouseUp();
492
+ scope.dispatchEvent(endEvent);
493
+ state = STATE.NONE;
494
+ }
495
+ function onMouseWheel(event) {
496
+ if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE))
497
+ return;
498
+ event.preventDefault();
499
+ scope.dispatchEvent(startEvent);
500
+ handleMouseWheel(event);
501
+ scope.dispatchEvent(endEvent);
502
+ }
503
+ function onKeyDown(event) {
504
+ if (scope.enabled === false || scope.enablePan === false || scope.enableKeys === false)
505
+ return;
506
+ handleKeyDown(event);
507
+ }
508
+ function onTouchStart(event) {
509
+ if (scope.enabled === false)
510
+ return;
511
+ event.preventDefault(); // prevent scrolling
512
+ switch (event.touches.length) {
513
+ case 1:
514
+ switch (scope.touches.ONE) {
515
+ case THREE.TOUCH.ROTATE:
516
+ if (scope.enableRotate === false)
517
+ return;
518
+ handleTouchStartRotate(event);
519
+ state = STATE.TOUCH_ROTATE;
520
+ break;
521
+ case THREE.TOUCH.PAN:
522
+ if (scope.enablePan === false)
523
+ return;
524
+ handleTouchStartPan(event);
525
+ state = STATE.TOUCH_PAN;
526
+ break;
527
+ default:
528
+ state = STATE.NONE;
529
+ }
530
+ break;
531
+ case 2:
532
+ switch (scope.touches.TWO) {
533
+ case THREE.TOUCH.DOLLY_PAN:
534
+ if (scope.enableZoom === false && scope.enablePan === false)
535
+ return;
536
+ handleTouchStartDollyPan(event);
537
+ state = STATE.TOUCH_DOLLY_PAN;
538
+ break;
539
+ case THREE.TOUCH.DOLLY_ROTATE:
540
+ if (scope.enableZoom === false && scope.enableRotate === false)
541
+ return;
542
+ handleTouchStartDollyRotate(event);
543
+ state = STATE.TOUCH_DOLLY_ROTATE;
544
+ break;
545
+ default:
546
+ state = STATE.NONE;
547
+ }
548
+ break;
549
+ default:
550
+ state = STATE.NONE;
551
+ }
552
+ if (state !== STATE.NONE) {
553
+ scope.dispatchEvent(startEvent);
554
+ }
555
+ }
556
+ function onTouchMove(event) {
557
+ if (scope.enabled === false)
558
+ return;
559
+ event.preventDefault(); // prevent scrolling
560
+ switch (state) {
561
+ case STATE.TOUCH_ROTATE:
562
+ if (scope.enableRotate === false)
563
+ return;
564
+ handleTouchMoveRotate(event);
565
+ scope.update();
566
+ break;
567
+ case STATE.TOUCH_PAN:
568
+ if (scope.enablePan === false)
569
+ return;
570
+ handleTouchMovePan(event);
571
+ scope.update();
572
+ break;
573
+ case STATE.TOUCH_DOLLY_PAN:
574
+ if (scope.enableZoom === false && scope.enablePan === false)
575
+ return;
576
+ handleTouchMoveDollyPan(event);
577
+ scope.update();
578
+ break;
579
+ case STATE.TOUCH_DOLLY_ROTATE:
580
+ if (scope.enableZoom === false && scope.enableRotate === false)
581
+ return;
582
+ handleTouchMoveDollyRotate(event);
583
+ scope.update();
584
+ break;
585
+ default:
586
+ state = STATE.NONE;
587
+ }
588
+ }
589
+ function onTouchEnd() {
590
+ if (scope.enabled === false)
591
+ return;
592
+ handleTouchEnd();
593
+ scope.dispatchEvent(endEvent);
594
+ state = STATE.NONE;
595
+ }
596
+ function onContextMenu(event) {
597
+ if (scope.enabled === false)
598
+ return;
599
+ event.preventDefault();
600
+ }
601
+ //
602
+ scope.domElement.addEventListener('contextmenu', onContextMenu);
603
+ scope.domElement.addEventListener('pointerdown', onPointerDown);
604
+ scope.domElement.addEventListener('wheel', onMouseWheel);
605
+ scope.domElement.addEventListener('touchstart', onTouchStart);
606
+ scope.domElement.addEventListener('touchend', onTouchEnd);
607
+ scope.domElement.addEventListener('touchmove', onTouchMove);
608
+ //
609
+ // public methods
610
+ //
611
+ this.getPolarAngle = function () {
612
+ return spherical.phi;
613
+ };
614
+ this.getAzimuthalAngle = function () {
615
+ return spherical.theta;
616
+ };
617
+ // eslint-disable-next-line no-shadow
618
+ this.listenToKeyEvents = function (domElement) {
619
+ domElement.addEventListener('keydown', onKeyDown);
620
+ this._domElementKeyEvents = domElement;
621
+ };
622
+ this.saveState = function () {
623
+ scope.target0.copy(scope.target);
624
+ scope.position0.copy(scope.object.position);
625
+ scope.zoom0 = scope.object.zoom;
626
+ };
627
+ this.reset = function () {
628
+ scope.target.copy(scope.target0);
629
+ scope.object.position.copy(scope.position0);
630
+ scope.object.zoom = scope.zoom0;
631
+ scope.object.updateProjectionMatrix();
632
+ scope.dispatchEvent(changeEvent);
633
+ scope.update();
634
+ state = STATE.NONE;
635
+ };
636
+ // this method is exposed, but perhaps it would be better if we can make it private...
637
+ this.update = (function () {
638
+ const offset = new THREE.Vector3();
639
+ // so camera.up is the orbit axis
640
+ const quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));
641
+ const quatInverse = quat.clone().invert();
642
+ const lastPosition = new THREE.Vector3();
643
+ const lastQuaternion = new THREE.Quaternion();
644
+ const twoPI = 2 * Math.PI;
645
+ return function update() {
646
+ const { position } = scope.object;
647
+ offset.copy(position).sub(scope.target);
648
+ // rotate offset to "y-axis-is-up" space
649
+ offset.applyQuaternion(quat);
650
+ // angle from z-axis around y-axis
651
+ spherical.setFromVector3(offset);
652
+ if (scope.autoRotate && state === STATE.NONE) {
653
+ rotateLeft(getAutoRotationAngle());
654
+ }
655
+ if (scope.enableDamping) {
656
+ spherical.theta += sphericalDelta.theta * scope.dampingFactor;
657
+ spherical.phi += sphericalDelta.phi * scope.dampingFactor;
658
+ }
659
+ else {
660
+ spherical.theta += sphericalDelta.theta;
661
+ spherical.phi += sphericalDelta.phi;
662
+ }
663
+ // restrict theta to be between desired limits
664
+ let min = scope.minAzimuthAngle;
665
+ let max = scope.maxAzimuthAngle;
666
+ if (Number.isFinite(min) && Number.isFinite(max)) {
667
+ if (min < -Math.PI)
668
+ min += twoPI;
669
+ else if (min > Math.PI)
670
+ min -= twoPI;
671
+ if (max < -Math.PI)
672
+ max += twoPI;
673
+ else if (max > Math.PI)
674
+ max -= twoPI;
675
+ if (min <= max) {
676
+ spherical.theta = Math.max(min, Math.min(max, spherical.theta));
677
+ }
678
+ else {
679
+ spherical.theta = (spherical.theta > (min + max) / 2)
680
+ ? Math.max(min, spherical.theta)
681
+ : Math.min(max, spherical.theta);
682
+ }
683
+ }
684
+ // restrict phi to be between desired limits
685
+ spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));
686
+ spherical.makeSafe();
687
+ spherical.radius *= scale;
688
+ // restrict radius to be between desired limits
689
+ spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));
690
+ // move target to panned location
691
+ if (scope.enableDamping === true) {
692
+ scope.target.addScaledVector(panOffset, scope.dampingFactor);
693
+ }
694
+ else {
695
+ scope.target.add(panOffset);
696
+ }
697
+ offset.setFromSpherical(spherical);
698
+ // rotate offset back to "camera-up-vector-is-up" space
699
+ offset.applyQuaternion(quatInverse);
700
+ position.copy(scope.target).add(offset);
701
+ scope.object.lookAt(scope.target);
702
+ if (scope.enableDamping === true) {
703
+ sphericalDelta.theta *= (1 - scope.dampingFactor);
704
+ sphericalDelta.phi *= (1 - scope.dampingFactor);
705
+ panOffset.multiplyScalar(1 - scope.dampingFactor);
706
+ }
707
+ else {
708
+ sphericalDelta.set(0, 0, 0);
709
+ panOffset.set(0, 0, 0);
710
+ }
711
+ scale = 1;
712
+ // update condition is:
713
+ // min(camera displacement, camera rotation in radians)^2 > EPS
714
+ // using small-angle approximation cos(x/2) = 1 - x^2 / 8
715
+ if (zoomChanged
716
+ || lastPosition.distanceToSquared(scope.object.position) > EPS
717
+ || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {
718
+ scope.dispatchEvent(changeEvent);
719
+ lastPosition.copy(scope.object.position);
720
+ lastQuaternion.copy(scope.object.quaternion);
721
+ zoomChanged = false;
722
+ return true;
723
+ }
724
+ return false;
725
+ };
726
+ }());
727
+ this.dispose = function () {
728
+ scope.domElement.removeEventListener('contextmenu', onContextMenu);
729
+ scope.domElement.removeEventListener('pointerdown', onPointerDown);
730
+ scope.domElement.removeEventListener('wheel', onMouseWheel);
731
+ scope.domElement.removeEventListener('touchstart', onTouchStart);
732
+ scope.domElement.removeEventListener('touchend', onTouchEnd);
733
+ scope.domElement.removeEventListener('touchmove', onTouchMove);
734
+ scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove);
735
+ scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp);
736
+ if (scope._domElementKeyEvents !== null) {
737
+ scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown);
738
+ }
739
+ // scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
740
+ };
741
+ // force an update at start
742
+ this.update();
743
+ }
744
+ }
745
+ export { OrbitControls };