@roomle/web-sdk 2.99.0 → 2.100.0

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 (281) hide show
  1. package/lib/Object3D-2abce9d8.nomodule.js +2 -0
  2. package/lib/Object3D-2abce9d8.nomodule.js.map +1 -0
  3. package/lib/Object3D-80e9d0f8.js +2 -0
  4. package/lib/Object3D-80e9d0f8.js.map +1 -0
  5. package/lib/SpotLightHelper-56c85cfb.nomodule.js +2 -0
  6. package/lib/SpotLightHelper-56c85cfb.nomodule.js.map +1 -0
  7. package/lib/SpotLightHelper-79188e47.js +2 -0
  8. package/lib/SpotLightHelper-79188e47.js.map +1 -0
  9. package/lib/{banana-for-scale-22ad6a20.nomodule.js → banana-for-scale-795d9c6c.nomodule.js} +2 -2
  10. package/lib/{banana-for-scale-22ad6a20.nomodule.js.map → banana-for-scale-795d9c6c.nomodule.js.map} +1 -1
  11. package/lib/{banana-for-scale-da4282fd.js → banana-for-scale-c5d8d13e.js} +2 -2
  12. package/lib/{banana-for-scale-da4282fd.js.map → banana-for-scale-c5d8d13e.js.map} +1 -1
  13. package/lib/camera-behaviour-ceced6f1.nomodule.js +2 -0
  14. package/lib/{camera-behaviour-90408ba5.nomodule.js.map → camera-behaviour-ceced6f1.nomodule.js.map} +1 -1
  15. package/lib/camera-behaviour-fe3f4008.js +2 -0
  16. package/lib/{camera-behaviour-2f2ffe82.js.map → camera-behaviour-fe3f4008.js.map} +1 -1
  17. package/lib/{component-dimensioning-a5e291d6.nomodule.js → component-dimensioning-5417ce83.nomodule.js} +2 -2
  18. package/lib/component-dimensioning-5417ce83.nomodule.js.map +1 -0
  19. package/lib/{component-dimensioning-ca877f31.js → component-dimensioning-b575bfa7.js} +2 -2
  20. package/lib/component-dimensioning-b575bfa7.js.map +1 -0
  21. package/lib/{component-raycast-helper-785b39cd.js → component-raycast-helper-8faecce8.js} +2 -2
  22. package/lib/component-raycast-helper-8faecce8.js.map +1 -0
  23. package/lib/{component-raycast-helper-40f9eb14.nomodule.js → component-raycast-helper-cde6065c.nomodule.js} +2 -2
  24. package/lib/component-raycast-helper-cde6065c.nomodule.js.map +1 -0
  25. package/lib/configurator-0ad4d1f9.nomodule.js +2 -0
  26. package/lib/configurator-0ad4d1f9.nomodule.js.map +1 -0
  27. package/lib/configurator-4565594d.js +2 -0
  28. package/lib/configurator-4565594d.js.map +1 -0
  29. package/lib/configurator-main-c79ddf0c.js +2 -0
  30. package/lib/configurator-main-c79ddf0c.js.map +1 -0
  31. package/lib/configurator-main.nomodule.js +1 -1
  32. package/lib/continuous-drawing-helper-6a23cf51.js +2 -0
  33. package/lib/continuous-drawing-helper-6a23cf51.js.map +1 -0
  34. package/lib/continuous-drawing-helper-70637238.nomodule.js +2 -0
  35. package/lib/continuous-drawing-helper-70637238.nomodule.js.map +1 -0
  36. package/lib/default-light-setting-755cfddc.js +2 -0
  37. package/lib/default-light-setting-755cfddc.js.map +1 -0
  38. package/lib/default-light-setting-e6087240.nomodule.js +2 -0
  39. package/lib/default-light-setting-e6087240.nomodule.js.map +1 -0
  40. package/lib/definitions/common-core/src/cameracontrol/camera-control-3d.d.ts +2 -1
  41. package/lib/definitions/common-core/src/cameracontrol/configurator-camera-behaviour.d.ts +1 -1
  42. package/lib/definitions/common-core/src/utils/common-utils.d.ts +1 -0
  43. package/lib/definitions/common-core/src/utils/init-data.d.ts +3 -0
  44. package/lib/definitions/common-core/src/utils/shims.d.ts +8 -3
  45. package/lib/definitions/common-core/src/webgl/image-renderer.d.ts +1 -0
  46. package/lib/definitions/common-core/src/webgl/roomle-webgl-renderer.d.ts +3 -0
  47. package/lib/definitions/common-core/src/webgl/scene-manager.d.ts +1 -0
  48. package/lib/definitions/packages/common-core/src/cameracontrol/camera-control-3d.d.ts +2 -1
  49. package/lib/definitions/packages/common-core/src/cameracontrol/configurator-camera-behaviour.d.ts +1 -1
  50. package/lib/definitions/packages/common-core/src/utils/common-utils.d.ts +1 -0
  51. package/lib/definitions/packages/common-core/src/utils/init-data.d.ts +3 -0
  52. package/lib/definitions/packages/common-core/src/utils/shims.d.ts +8 -3
  53. package/lib/definitions/packages/common-core/src/webgl/image-renderer.d.ts +1 -0
  54. package/lib/definitions/packages/common-core/src/webgl/roomle-webgl-renderer.d.ts +3 -0
  55. package/lib/definitions/packages/common-core/src/webgl/scene-manager.d.ts +1 -0
  56. package/lib/definitions/packages/planner-core/src/lights/ceiling-light.d.ts +19 -0
  57. package/lib/definitions/packages/planner-core/src/lights/lamp-light.d.ts +9 -0
  58. package/lib/definitions/packages/planner-core/src/lights/light-group.d.ts +11 -0
  59. package/lib/definitions/packages/planner-core/src/lights/rect-area-light.d.ts +7 -0
  60. package/lib/definitions/packages/planner-core/src/roomle-planner-ui-callback.d.ts +1 -1
  61. package/lib/definitions/packages/planner-core/src/roomle-planner.d.ts +10 -2
  62. package/lib/definitions/packages/planner-core/src/utils/{planner-scene-manager.d.ts → planner-scene-utils.d.ts} +5 -2
  63. package/lib/definitions/packages/planner-core/src/view-model/floor-plan-element-view-model.d.ts +1 -0
  64. package/lib/definitions/packages/planner-core/src/view-model/plan-view-model.d.ts +21 -0
  65. package/lib/definitions/packages/planner-core/src/webgl/planner-scene-manager.d.ts +3 -6
  66. package/lib/definitions/packages/typings/planner.d.ts +7 -1
  67. package/lib/definitions/planner-core/src/lights/ceiling-light.d.ts +19 -0
  68. package/lib/definitions/planner-core/src/lights/lamp-light.d.ts +9 -0
  69. package/lib/definitions/planner-core/src/lights/light-group.d.ts +11 -0
  70. package/lib/definitions/planner-core/src/lights/rect-area-light.d.ts +7 -0
  71. package/lib/definitions/planner-core/src/roomle-planner-ui-callback.d.ts +1 -1
  72. package/lib/definitions/planner-core/src/roomle-planner.d.ts +10 -2
  73. package/lib/definitions/planner-core/src/utils/{planner-scene-manager.d.ts → planner-scene-utils.d.ts} +5 -2
  74. package/lib/definitions/planner-core/src/view-model/floor-plan-element-view-model.d.ts +1 -0
  75. package/lib/definitions/planner-core/src/view-model/plan-view-model.d.ts +21 -0
  76. package/lib/definitions/planner-core/src/webgl/planner-scene-manager.d.ts +3 -6
  77. package/lib/definitions/typings/planner.d.ts +7 -1
  78. package/lib/dimensioning-helper-089673fa.nomodule.js +2 -0
  79. package/lib/dimensioning-helper-089673fa.nomodule.js.map +1 -0
  80. package/lib/dimensioning-helper-ba9dbb6f.js +2 -0
  81. package/lib/{dimensioning-helper-fb456f28.js.map → dimensioning-helper-ba9dbb6f.js.map} +1 -1
  82. package/lib/glb-viewer-232298a7.nomodule.js +2 -0
  83. package/lib/{glb-viewer-58aa56b3.nomodule.js.map → glb-viewer-232298a7.nomodule.js.map} +1 -1
  84. package/lib/glb-viewer-bc27fd7c.js +2 -0
  85. package/lib/{glb-viewer-d4c6c346.js.map → glb-viewer-bc27fd7c.js.map} +1 -1
  86. package/lib/{glb-viewer-camera-behaviour-1b347e77.nomodule.js → glb-viewer-camera-behaviour-b9f0adaa.nomodule.js} +2 -2
  87. package/lib/glb-viewer-camera-behaviour-b9f0adaa.nomodule.js.map +1 -0
  88. package/lib/{glb-viewer-camera-behaviour-24e823bc.js → glb-viewer-camera-behaviour-f8871d34.js} +2 -2
  89. package/lib/glb-viewer-camera-behaviour-f8871d34.js.map +1 -0
  90. package/lib/glb-viewer-main-058270a7.js +2 -0
  91. package/lib/glb-viewer-main-058270a7.js.map +1 -0
  92. package/lib/glb-viewer-main.nomodule.js +1 -1
  93. package/lib/{imos-ix-poc-export-helper-b7a91cdb.nomodule.js → imos-ix-poc-export-helper-29ce417b.nomodule.js} +2 -2
  94. package/lib/imos-ix-poc-export-helper-29ce417b.nomodule.js.map +1 -0
  95. package/lib/{imos-ix-poc-export-helper-7b16b54e.js → imos-ix-poc-export-helper-43b4c646.js} +2 -2
  96. package/lib/imos-ix-poc-export-helper-43b4c646.js.map +1 -0
  97. package/lib/legacy/Object3D-1f141c55.legacy.js +2 -0
  98. package/lib/legacy/Object3D-1f141c55.legacy.js.map +1 -0
  99. package/lib/legacy/SpotLightHelper-28698e83.legacy.js +2 -0
  100. package/lib/legacy/SpotLightHelper-28698e83.legacy.js.map +1 -0
  101. package/lib/legacy/TextGeometry-559f28ce.legacy.js +2 -0
  102. package/lib/legacy/{TextGeometry-778d127b.legacy.js.map → TextGeometry-559f28ce.legacy.js.map} +1 -1
  103. package/lib/legacy/{banana-for-scale-b274801d.legacy.js → banana-for-scale-8a3d4091.legacy.js} +2 -2
  104. package/lib/legacy/{banana-for-scale-b274801d.legacy.js.map → banana-for-scale-8a3d4091.legacy.js.map} +1 -1
  105. package/lib/legacy/budgeteer-measure.legacy.js +1 -1
  106. package/lib/legacy/camera-behaviour-363a4e78.legacy.js +2 -0
  107. package/lib/legacy/{camera-behaviour-b47dbdd3.legacy.js.map → camera-behaviour-363a4e78.legacy.js.map} +1 -1
  108. package/lib/legacy/{component-dimensioning-a3ba2ba6.legacy.js → component-dimensioning-f92c2840.legacy.js} +2 -2
  109. package/lib/legacy/component-dimensioning-f92c2840.legacy.js.map +1 -0
  110. package/lib/legacy/{component-raycast-helper-a5178cda.legacy.js → component-raycast-helper-91c67dd6.legacy.js} +2 -2
  111. package/lib/legacy/component-raycast-helper-91c67dd6.legacy.js.map +1 -0
  112. package/lib/legacy/configurator-bdb72223.legacy.js +2 -0
  113. package/lib/legacy/configurator-bdb72223.legacy.js.map +1 -0
  114. package/lib/legacy/configurator-main.legacy.js +1 -1
  115. package/lib/legacy/continuous-drawing-helper-e8db250c.legacy.js +2 -0
  116. package/lib/legacy/continuous-drawing-helper-e8db250c.legacy.js.map +1 -0
  117. package/lib/legacy/default-light-setting-07ced87c.legacy.js +2 -0
  118. package/lib/legacy/default-light-setting-07ced87c.legacy.js.map +1 -0
  119. package/lib/legacy/dimensioning-helper-bb3492c7.legacy.js +2 -0
  120. package/lib/legacy/dimensioning-helper-bb3492c7.legacy.js.map +1 -0
  121. package/lib/legacy/external-objects-01d5a216.legacy.js +2 -0
  122. package/lib/legacy/external-objects-01d5a216.legacy.js.map +1 -0
  123. package/lib/legacy/{glb-viewer-camera-behaviour-4be0da6a.legacy.js → glb-viewer-camera-behaviour-8a35f77c.legacy.js} +2 -2
  124. package/lib/legacy/glb-viewer-camera-behaviour-8a35f77c.legacy.js.map +1 -0
  125. package/lib/legacy/glb-viewer-d69f6cae.legacy.js +2 -0
  126. package/lib/legacy/{glb-viewer-d3854b02.legacy.js.map → glb-viewer-d69f6cae.legacy.js.map} +1 -1
  127. package/lib/legacy/glb-viewer-main.legacy.js +1 -1
  128. package/lib/legacy/{imos-ix-poc-export-helper-ee70d653.legacy.js → imos-ix-poc-export-helper-ca5160da.legacy.js} +2 -2
  129. package/lib/legacy/imos-ix-poc-export-helper-ca5160da.legacy.js.map +1 -0
  130. package/lib/legacy/{main-thread-to-worker-da6ad96a.legacy.js → main-thread-to-worker-32b45184.legacy.js} +3 -3
  131. package/lib/legacy/{main-thread-to-worker-da6ad96a.legacy.js.map → main-thread-to-worker-32b45184.legacy.js.map} +1 -1
  132. package/lib/legacy/material-viewer-770e3a93.legacy.js +2 -0
  133. package/lib/legacy/material-viewer-770e3a93.legacy.js.map +1 -0
  134. package/lib/legacy/material-viewer-main.legacy.js +1 -1
  135. package/lib/legacy/planner-53e1ae1f.legacy.js +2 -0
  136. package/lib/legacy/{planner-f0a71818.legacy.js.map → planner-53e1ae1f.legacy.js.map} +1 -1
  137. package/lib/legacy/planner-main.legacy.js +1 -1
  138. package/lib/legacy/query-params-helper-ad6b6b64.legacy.js +2 -0
  139. package/lib/legacy/query-params-helper-ad6b6b64.legacy.js.map +1 -0
  140. package/lib/legacy/roomle-configurator-2ab0523e.legacy.js +2 -0
  141. package/lib/legacy/roomle-configurator-2ab0523e.legacy.js.map +1 -0
  142. package/lib/legacy/roomle-dependency-injection-39798155.legacy.js +9 -0
  143. package/lib/legacy/{roomle-dependency-injection-058aa06f.legacy.js.map → roomle-dependency-injection-39798155.legacy.js.map} +1 -1
  144. package/lib/legacy/roomle-sdk.legacy.js +1 -1
  145. package/lib/legacy/{script-loader-9921991a.legacy.js → script-loader-6f4bb7db.legacy.js} +2 -2
  146. package/lib/legacy/script-loader-6f4bb7db.legacy.js.map +1 -0
  147. package/lib/legacy/static/ConfiguratorKernel-eb2b45aa8bdd5c73.wasm +0 -0
  148. package/lib/legacy/static/RoomleCore-a4df483fa6f93517.wasm +0 -0
  149. package/lib/legacy/static/RoomleToolsCore-9ea339d54e57756a.wasm +0 -0
  150. package/lib/legacy/{stats-helper-c7bf779b.legacy.js → stats-helper-e75d2585.legacy.js} +2 -2
  151. package/lib/legacy/stats-helper-e75d2585.legacy.js.map +1 -0
  152. package/lib/legacy/{tools-core-645fb16a.legacy.js → tools-core-c5e76ffc.legacy.js} +2 -2
  153. package/lib/legacy/tools-core-c5e76ffc.legacy.js.map +1 -0
  154. package/lib/material-viewer-a489d3c2.nomodule.js +2 -0
  155. package/lib/material-viewer-a489d3c2.nomodule.js.map +1 -0
  156. package/lib/material-viewer-f818f681.js +2 -0
  157. package/lib/material-viewer-f818f681.js.map +1 -0
  158. package/lib/material-viewer-main-a4985787.js +2 -0
  159. package/lib/material-viewer-main-a4985787.js.map +1 -0
  160. package/lib/material-viewer-main.nomodule.js +1 -1
  161. package/lib/planner-32c9b79e.nomodule.js +2 -0
  162. package/lib/{planner-cb1acb4d.nomodule.js.map → planner-32c9b79e.nomodule.js.map} +1 -1
  163. package/lib/planner-9b39cf77.js +2 -0
  164. package/lib/{planner-a30840a8.js.map → planner-9b39cf77.js.map} +1 -1
  165. package/lib/planner-main-32eac04d.js +2 -0
  166. package/lib/planner-main-32eac04d.js.map +1 -0
  167. package/lib/planner-main.nomodule.js +1 -1
  168. package/lib/roomle-configurator-2d336119.nomodule.js +2 -0
  169. package/lib/roomle-configurator-2d336119.nomodule.js.map +1 -0
  170. package/lib/roomle-configurator-3bf23b9e.js +2 -0
  171. package/lib/roomle-configurator-3bf23b9e.js.map +1 -0
  172. package/lib/{roomle-dependency-injection-8fd89dfe.js → roomle-dependency-injection-c52a0000.js} +3 -3
  173. package/lib/{roomle-dependency-injection-8fd89dfe.js.map → roomle-dependency-injection-c52a0000.js.map} +1 -1
  174. package/lib/roomle-dependency-injection-e789a72d.nomodule.js +9 -0
  175. package/lib/{roomle-dependency-injection-22befdc7.nomodule.js.map → roomle-dependency-injection-e789a72d.nomodule.js.map} +1 -1
  176. package/lib/{roomle-sdk-3f72ba15.js → roomle-sdk-b28548bd.js} +2 -2
  177. package/lib/roomle-sdk-b28548bd.js.map +1 -0
  178. package/lib/roomle-sdk.nomodule.js +1 -1
  179. package/lib/{script-loader-36a9dcdc.js → script-loader-524d3415.js} +2 -2
  180. package/lib/script-loader-524d3415.js.map +1 -0
  181. package/lib/{script-loader-8e8886dd.nomodule.js → script-loader-f57678af.nomodule.js} +2 -2
  182. package/lib/script-loader-f57678af.nomodule.js.map +1 -0
  183. package/lib/static/ConfiguratorKernel-eb2b45aa8bdd5c73.wasm +0 -0
  184. package/lib/static/RoomleCore-a4df483fa6f93517.wasm +0 -0
  185. package/lib/static/RoomleToolsCore-9ea339d54e57756a.wasm +0 -0
  186. package/lib/{stats-helper-b5614bb9.js → stats-helper-8557e89e.js} +2 -2
  187. package/lib/stats-helper-8557e89e.js.map +1 -0
  188. package/lib/{stats-helper-1a0748a7.nomodule.js → stats-helper-a6ed29fb.nomodule.js} +2 -2
  189. package/lib/stats-helper-a6ed29fb.nomodule.js.map +1 -0
  190. package/lib/{tools-core-43082fe5.js → tools-core-26ff177e.js} +2 -2
  191. package/lib/tools-core-26ff177e.js.map +1 -0
  192. package/lib/{tools-core-a5f68507.nomodule.js → tools-core-feefe6d1.nomodule.js} +2 -2
  193. package/lib/tools-core-feefe6d1.nomodule.js.map +1 -0
  194. package/package.json +2 -2
  195. package/lib/camera-behaviour-2f2ffe82.js +0 -2
  196. package/lib/camera-behaviour-90408ba5.nomodule.js +0 -2
  197. package/lib/component-dimensioning-a5e291d6.nomodule.js.map +0 -1
  198. package/lib/component-dimensioning-ca877f31.js.map +0 -1
  199. package/lib/component-raycast-helper-40f9eb14.nomodule.js.map +0 -1
  200. package/lib/component-raycast-helper-785b39cd.js.map +0 -1
  201. package/lib/configurator-2d025a93.nomodule.js +0 -2
  202. package/lib/configurator-2d025a93.nomodule.js.map +0 -1
  203. package/lib/configurator-3e5c27eb.js +0 -2
  204. package/lib/configurator-3e5c27eb.js.map +0 -1
  205. package/lib/configurator-main-f75e4553.js +0 -2
  206. package/lib/configurator-main-f75e4553.js.map +0 -1
  207. package/lib/continuous-drawing-helper-ae2fcdd3.js +0 -2
  208. package/lib/continuous-drawing-helper-ae2fcdd3.js.map +0 -1
  209. package/lib/continuous-drawing-helper-c71ae2ed.nomodule.js +0 -2
  210. package/lib/continuous-drawing-helper-c71ae2ed.nomodule.js.map +0 -1
  211. package/lib/default-light-setting-98201048.nomodule.js +0 -2
  212. package/lib/default-light-setting-98201048.nomodule.js.map +0 -1
  213. package/lib/default-light-setting-ba00bf2b.js +0 -2
  214. package/lib/default-light-setting-ba00bf2b.js.map +0 -1
  215. package/lib/dimensioning-helper-4d7e768a.nomodule.js +0 -2
  216. package/lib/dimensioning-helper-4d7e768a.nomodule.js.map +0 -1
  217. package/lib/dimensioning-helper-fb456f28.js +0 -2
  218. package/lib/glb-viewer-58aa56b3.nomodule.js +0 -2
  219. package/lib/glb-viewer-camera-behaviour-1b347e77.nomodule.js.map +0 -1
  220. package/lib/glb-viewer-camera-behaviour-24e823bc.js.map +0 -1
  221. package/lib/glb-viewer-d4c6c346.js +0 -2
  222. package/lib/glb-viewer-main-64179adf.js +0 -2
  223. package/lib/glb-viewer-main-64179adf.js.map +0 -1
  224. package/lib/imos-ix-poc-export-helper-7b16b54e.js.map +0 -1
  225. package/lib/imos-ix-poc-export-helper-b7a91cdb.nomodule.js.map +0 -1
  226. package/lib/legacy/TextGeometry-778d127b.legacy.js +0 -2
  227. package/lib/legacy/camera-behaviour-b47dbdd3.legacy.js +0 -2
  228. package/lib/legacy/component-dimensioning-a3ba2ba6.legacy.js.map +0 -1
  229. package/lib/legacy/component-raycast-helper-a5178cda.legacy.js.map +0 -1
  230. package/lib/legacy/configurator-002d161a.legacy.js +0 -2
  231. package/lib/legacy/configurator-002d161a.legacy.js.map +0 -1
  232. package/lib/legacy/continuous-drawing-helper-654d7604.legacy.js +0 -2
  233. package/lib/legacy/continuous-drawing-helper-654d7604.legacy.js.map +0 -1
  234. package/lib/legacy/default-light-setting-af961df8.legacy.js +0 -2
  235. package/lib/legacy/default-light-setting-af961df8.legacy.js.map +0 -1
  236. package/lib/legacy/dimensioning-helper-4baa9955.legacy.js +0 -2
  237. package/lib/legacy/dimensioning-helper-4baa9955.legacy.js.map +0 -1
  238. package/lib/legacy/external-objects-2fd4ef1a.legacy.js +0 -2
  239. package/lib/legacy/external-objects-2fd4ef1a.legacy.js.map +0 -1
  240. package/lib/legacy/glb-viewer-camera-behaviour-4be0da6a.legacy.js.map +0 -1
  241. package/lib/legacy/glb-viewer-d3854b02.legacy.js +0 -2
  242. package/lib/legacy/imos-ix-poc-export-helper-ee70d653.legacy.js.map +0 -1
  243. package/lib/legacy/material-viewer-117426bc.legacy.js +0 -2
  244. package/lib/legacy/material-viewer-117426bc.legacy.js.map +0 -1
  245. package/lib/legacy/planner-f0a71818.legacy.js +0 -2
  246. package/lib/legacy/query-params-helper-e3e05119.legacy.js +0 -2
  247. package/lib/legacy/query-params-helper-e3e05119.legacy.js.map +0 -1
  248. package/lib/legacy/roomle-configurator-6db65c94.legacy.js +0 -2
  249. package/lib/legacy/roomle-configurator-6db65c94.legacy.js.map +0 -1
  250. package/lib/legacy/roomle-dependency-injection-058aa06f.legacy.js +0 -9
  251. package/lib/legacy/script-loader-9921991a.legacy.js.map +0 -1
  252. package/lib/legacy/static/ConfiguratorKernel-e0b064b9d4228a3b.wasm +0 -0
  253. package/lib/legacy/static/RoomleCore-e599a6ccf3dd7c2a.wasm +0 -0
  254. package/lib/legacy/static/RoomleToolsCore-83af26798774f70c.wasm +0 -0
  255. package/lib/legacy/stats-helper-c7bf779b.legacy.js.map +0 -1
  256. package/lib/legacy/tools-core-645fb16a.legacy.js.map +0 -1
  257. package/lib/material-viewer-8c7e05be.nomodule.js +0 -2
  258. package/lib/material-viewer-8c7e05be.nomodule.js.map +0 -1
  259. package/lib/material-viewer-d211106c.js +0 -2
  260. package/lib/material-viewer-d211106c.js.map +0 -1
  261. package/lib/material-viewer-main-9668a68c.js +0 -2
  262. package/lib/material-viewer-main-9668a68c.js.map +0 -1
  263. package/lib/planner-a30840a8.js +0 -2
  264. package/lib/planner-cb1acb4d.nomodule.js +0 -2
  265. package/lib/planner-main-5c76b2c2.js +0 -2
  266. package/lib/planner-main-5c76b2c2.js.map +0 -1
  267. package/lib/roomle-configurator-a11055fd.nomodule.js +0 -2
  268. package/lib/roomle-configurator-a11055fd.nomodule.js.map +0 -1
  269. package/lib/roomle-configurator-ab3900ec.js +0 -2
  270. package/lib/roomle-configurator-ab3900ec.js.map +0 -1
  271. package/lib/roomle-dependency-injection-22befdc7.nomodule.js +0 -9
  272. package/lib/roomle-sdk-3f72ba15.js.map +0 -1
  273. package/lib/script-loader-36a9dcdc.js.map +0 -1
  274. package/lib/script-loader-8e8886dd.nomodule.js.map +0 -1
  275. package/lib/static/ConfiguratorKernel-e0b064b9d4228a3b.wasm +0 -0
  276. package/lib/static/RoomleCore-e599a6ccf3dd7c2a.wasm +0 -0
  277. package/lib/static/RoomleToolsCore-83af26798774f70c.wasm +0 -0
  278. package/lib/stats-helper-1a0748a7.nomodule.js.map +0 -1
  279. package/lib/stats-helper-b5614bb9.js.map +0 -1
  280. package/lib/tools-core-43082fe5.js.map +0 -1
  281. package/lib/tools-core-a5f68507.nomodule.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ System.register(["./Object3D-2abce9d8.nomodule.js"],(function(t){var e,i,s,r,n,o,a,h,l,c,u,p,d,g,m,f,y,b,x,S,M,w,v,A,B,T,k,C,z;return{setters:[function(t){e=t.V,i=t.L,s=t.e,r=t.f,n=t.g,o=t.M,a=t.N,h=t.c,l=t.l,c=t.h,u=t.E,p=t.i,d=t.j,g=t.F,m=t.k,f=t.m,y=t.A,b=t.n,x=t.o,S=t.K,M=t.p,w=t.q,v=t.r,A=t.s,B=t.b,T=t.B,k=t.S,C=t.d,z=t.O}],execute:function(){const R=new e,N=new e,O=new e,F=new e,E=new e,L=new e,I=new e;class H{constructor(t=new e,i=new e(0,0,-1)){this.origin=t,this.direction=i}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,R)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=R.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(R.copy(this.origin).addScaledVector(this.direction,e),R.distanceToSquared(t))}distanceSqToSegment(t,e,i,s){N.copy(t).add(e).multiplyScalar(.5),O.copy(e).sub(t).normalize(),F.copy(this.origin).sub(N);const r=.5*t.distanceTo(e),n=-this.direction.dot(O),o=F.dot(this.direction),a=-F.dot(O),h=F.lengthSq(),l=Math.abs(1-n*n);let c,u,p,d;if(l>0)if(c=n*a-o,u=n*o-a,d=r*l,c>=0)if(u>=-d)if(u<=d){const t=1/l;c*=t,u*=t,p=c*(c+n*u+2*o)+u*(n*c+u+2*a)+h}else u=r,c=Math.max(0,-(n*u+o)),p=-c*c+u*(u+2*a)+h;else u=-r,c=Math.max(0,-(n*u+o)),p=-c*c+u*(u+2*a)+h;else u<=-d?(c=Math.max(0,-(-n*r+o)),u=c>0?-r:Math.min(Math.max(-r,-a),r),p=-c*c+u*(u+2*a)+h):u<=d?(c=0,u=Math.min(Math.max(-r,-a),r),p=u*(u+2*a)+h):(c=Math.max(0,-(n*r+o)),u=c>0?r:Math.min(Math.max(-r,-a),r),p=-c*c+u*(u+2*a)+h);else u=n>0?-r:r,c=Math.max(0,-(n*u+o)),p=-c*c+u*(u+2*a)+h;return i&&i.copy(this.origin).addScaledVector(this.direction,c),s&&s.copy(N).addScaledVector(O,u),p}intersectSphere(t,e){R.subVectors(t.center,this.origin);const i=R.dot(this.direction),s=R.dot(R)-i*i,r=t.radius*t.radius;if(s>r)return null;const n=Math.sqrt(r-s),o=i-n,a=i+n;return a<0?null:o<0?this.at(a,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,s,r,n,o,a;const h=1/this.direction.x,l=1/this.direction.y,c=1/this.direction.z,u=this.origin;return h>=0?(i=(t.min.x-u.x)*h,s=(t.max.x-u.x)*h):(i=(t.max.x-u.x)*h,s=(t.min.x-u.x)*h),l>=0?(r=(t.min.y-u.y)*l,n=(t.max.y-u.y)*l):(r=(t.max.y-u.y)*l,n=(t.min.y-u.y)*l),i>n||r>s?null:((r>i||isNaN(i))&&(i=r),(n<s||isNaN(s))&&(s=n),c>=0?(o=(t.min.z-u.z)*c,a=(t.max.z-u.z)*c):(o=(t.max.z-u.z)*c,a=(t.min.z-u.z)*c),i>a||o>s?null:((o>i||i!=i)&&(i=o),(a<s||s!=s)&&(s=a),s<0?null:this.at(i>=0?i:s,e)))}intersectsBox(t){return null!==this.intersectBox(t,R)}intersectTriangle(t,e,i,s,r){E.subVectors(e,t),L.subVectors(i,t),I.crossVectors(E,L);let n,o=this.direction.dot(I);if(o>0){if(s)return null;n=1}else{if(!(o<0))return null;n=-1,o=-o}F.subVectors(this.origin,t);const a=n*this.direction.dot(L.crossVectors(F,L));if(a<0)return null;const h=n*this.direction.dot(E.cross(F));if(h<0)return null;if(a+h>o)return null;const l=-n*F.dot(I);return l<0?null:this.at(l/o,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}const W=(new o).set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),P=(new o).set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function X(){const t={enabled:!0,workingColorSpace:i,spaces:{},convert:function(t,e,i){return!1!==this.enabled&&e!==i&&e&&i?(this.spaces[e].transfer===n&&(t.r=q(t.r),t.g=q(t.g),t.b=q(t.b)),this.spaces[e].primaries!==this.spaces[i].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[i].fromXYZ)),this.spaces[i].transfer===n&&(t.r=Z(t.r),t.g=Z(t.g),t.b=Z(t.b)),t):t},fromWorkingColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return t===a?s:this.spaces[t].transfer},getLuminanceCoefficients:function(t,e=this.workingColorSpace){return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,i){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[i].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(t=this.workingColorSpace){return this.spaces[t].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],o=[.2126,.7152,.0722],h=[.3127,.329];return t.define({[i]:{primaries:e,whitePoint:h,transfer:s,toXYZ:W,fromXYZ:P,luminanceCoefficients:o,workingColorSpaceConfig:{unpackColorSpace:r},outputColorSpaceConfig:{drawingBufferColorSpace:r}},[r]:{primaries:e,whitePoint:h,transfer:n,toXYZ:W,fromXYZ:P,luminanceCoefficients:o,outputColorSpaceConfig:{drawingBufferColorSpace:r}}}),t}const D=X();function q(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Z(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}const J={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},G={h:0,s:0,l:0},V={h:0,s:0,l:0};function Y(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+6*(e-t)*(2/3-i):t}class U{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(void 0===e&&void 0===i){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=r){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,D.toWorkingColorSpace(this,e),this}setRGB(t,e,i,s=D.workingColorSpace){return this.r=t,this.g=e,this.b=i,D.toWorkingColorSpace(this,s),this}setHSL(t,e,i,s=D.workingColorSpace){if(t=c(t,1),e=h(e,0,1),i=h(i,0,1),0===e)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+e):i+e-i*e,r=2*i-s;this.r=Y(r,s,t+1/3),this.g=Y(r,s,t),this.b=Y(r,s,t-1/3)}return D.toWorkingColorSpace(this,s),this}setStyle(t,e=r){function i(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const n=s[1],o=s[2];switch(n){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(t)){const i=s[1],r=i.length;if(3===r)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(i,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=r){const i=J[t.toLowerCase()];return void 0!==i?this.setHex(i,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=q(t.r),this.g=q(t.g),this.b=q(t.b),this}copyLinearToSRGB(t){return this.r=Z(t.r),this.g=Z(t.g),this.b=Z(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=r){return D.fromWorkingColorSpace(j.copy(this),t),65536*Math.round(h(255*j.r,0,255))+256*Math.round(h(255*j.g,0,255))+Math.round(h(255*j.b,0,255))}getHexString(t=r){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=D.workingColorSpace){D.fromWorkingColorSpace(j.copy(this),e);const i=j.r,s=j.g,r=j.b,n=Math.max(i,s,r),o=Math.min(i,s,r);let a,h;const l=(o+n)/2;if(o===n)a=0,h=0;else{const t=n-o;switch(h=l<=.5?t/(n+o):t/(2-n-o),n){case i:a=(s-r)/t+(s<r?6:0);break;case s:a=(r-i)/t+2;break;case r:a=(i-s)/t+4}a/=6}return t.h=a,t.s=h,t.l=l,t}getRGB(t,e=D.workingColorSpace){return D.fromWorkingColorSpace(j.copy(this),e),t.r=j.r,t.g=j.g,t.b=j.b,t}getStyle(t=r){D.fromWorkingColorSpace(j.copy(this),t);const e=j.r,i=j.g,s=j.b;return t!==r?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${s.toFixed(3)})`:`rgb(${Math.round(255*e)},${Math.round(255*i)},${Math.round(255*s)})`}offsetHSL(t,e,i){return this.getHSL(G),this.setHSL(G.h+t,G.s+e,G.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(G),t.getHSL(V);const i=l(G.h,V.h,e),s=l(G.s,V.s,e),r=l(G.l,V.l,e);return this.setHSL(i,s,r),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,i=this.g,s=this.b,r=t.elements;return this.r=r[0]*e+r[3]*i+r[6]*s,this.g=r[1]*e+r[4]*i+r[7]*s,this.b=r[2]*e+r[5]*i+r[8]*s,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const j=new U;U.NAMES=J;let $=0;class _ extends u{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:$++}),this.uuid=p(),this.name="",this.type="Material",this.blending=d,this.side=g,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=m,this.blendDst=f,this.blendEquation=y,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new U(0,0,0),this.blendAlpha=0,this.depthFunc=b,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=x,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=S,this.stencilZFail=S,this.stencilZPass=S,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const i=t[e];if(void 0===i){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const s=this[e];void 0!==s?s&&s.isColor?s.set(i):s&&s.isVector3&&i&&i.isVector3?s.copy(i):this[e]=i:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function s(t){const e=[];for(const i in t){const s=t[i];delete s.metadata,e.push(s)}return e}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(i.dispersion=this.dispersion),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(i.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapRotation&&(i.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==d&&(i.blending=this.blending),this.side!==g&&(i.side=this.side),!0===this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=!0),this.blendSrc!==m&&(i.blendSrc=this.blendSrc),this.blendDst!==f&&(i.blendDst=this.blendDst),this.blendEquation!==y&&(i.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(i.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(i.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==b&&(i.depthFunc=this.depthFunc),!1===this.depthTest&&(i.depthTest=this.depthTest),!1===this.depthWrite&&(i.depthWrite=this.depthWrite),!1===this.colorWrite&&(i.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==x&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==S&&(i.stencilFail=this.stencilFail),this.stencilZFail!==S&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==S&&(i.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(i.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaHash&&(i.alphaHash=!0),!0===this.alphaToCoverage&&(i.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=!0),!0===this.forceSinglePass&&(i.forceSinglePass=!0),!0===this.wireframe&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=!0),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),e){const e=s(t.textures),r=s(t.images);e.length>0&&(i.textures=e),r.length>0&&(i.images=r)}return i}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(null!==e){const t=e.length;i=new Array(t);for(let s=0;s!==t;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class K extends _{constructor(t){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new U(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}}const Q=new e,tt=new B;let et=0;class it{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:et++}),this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=i,this.usage=M,this.updateRanges=[],this.gpuType=w,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let s=0,r=this.itemSize;s<r;s++)this.array[t+s]=e.array[i+s];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(2===this.itemSize)for(let e=0,i=this.count;e<i;e++)tt.fromBufferAttribute(this,e),tt.applyMatrix3(t),this.setXY(e,tt.x,tt.y);else if(3===this.itemSize)for(let e=0,i=this.count;e<i;e++)Q.fromBufferAttribute(this,e),Q.applyMatrix3(t),this.setXYZ(e,Q.x,Q.y,Q.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e<i;e++)Q.fromBufferAttribute(this,e),Q.applyMatrix4(t),this.setXYZ(e,Q.x,Q.y,Q.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e<i;e++)Q.fromBufferAttribute(this,e),Q.applyNormalMatrix(t),this.setXYZ(e,Q.x,Q.y,Q.z);return this}transformDirection(t){for(let e=0,i=this.count;e<i;e++)Q.fromBufferAttribute(this,e),Q.transformDirection(t),this.setXYZ(e,Q.x,Q.y,Q.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=v(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=A(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=v(e,this.array)),e}setX(t,e){return this.normalized&&(e=A(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=v(e,this.array)),e}setY(t,e){return this.normalized&&(e=A(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=v(e,this.array)),e}setZ(t,e){return this.normalized&&(e=A(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=v(e,this.array)),e}setW(t,e){return this.normalized&&(e=A(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=A(e,this.array),i=A(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,s){return t*=this.itemSize,this.normalized&&(e=A(e,this.array),i=A(i,this.array),s=A(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this}setXYZW(t,e,i,s,r){return t*=this.itemSize,this.normalized&&(e=A(e,this.array),i=A(i,this.array),s=A(s,this.array),r=A(r,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=s,this.array[t+3]=r,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(t.name=this.name),this.usage!==M&&(t.usage=this.usage),t}}class st extends it{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class rt extends it{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class nt extends it{constructor(t,e,i){super(new Float32Array(t),e,i)}}let ot=0;const at=new C,ht=new z,lt=new e,ct=new T,ut=new T,pt=new e;class dt extends u{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:ot++}),this.uuid=p(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(function(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}(t)?rt:st)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return void 0!==this.attributes[t]}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(void 0!==i){const e=(new o).getNormalMatrix(t);i.applyNormalMatrix(e),i.needsUpdate=!0}const s=this.attributes.tangent;return void 0!==s&&(s.transformDirection(t),s.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return at.makeRotationFromQuaternion(t),this.applyMatrix4(at),this}rotateX(t){return at.makeRotationX(t),this.applyMatrix4(at),this}rotateY(t){return at.makeRotationY(t),this.applyMatrix4(at),this}rotateZ(t){return at.makeRotationZ(t),this.applyMatrix4(at),this}translate(t,e,i){return at.makeTranslation(t,e,i),this.applyMatrix4(at),this}scale(t,e,i){return at.makeScale(t,e,i),this.applyMatrix4(at),this}lookAt(t){return ht.lookAt(t),ht.updateMatrix(),this.applyMatrix4(ht.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(lt).negate(),this.translate(lt.x,lt.y,lt.z),this}setFromPoints(t){const e=this.getAttribute("position");if(void 0===e){const e=[];for(let i=0,s=t.length;i<s;i++){const s=t[i];e.push(s.x,s.y,s.z||0)}this.setAttribute("position",new nt(e,3))}else{const i=Math.min(t.length,e.count);for(let s=0;s<i;s++){const i=t[s];e.setXYZ(s,i.x,i.y,i.z||0)}t.length>e.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new T);const t=this.attributes.position,i=this.morphAttributes.position;if(t&&t.isGLBufferAttribute)return console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),void this.boundingBox.set(new e(-1/0,-1/0,-1/0),new e(1/0,1/0,1/0));if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),i)for(let t=0,e=i.length;t<e;t++){const e=i[t];ct.setFromBufferAttribute(e),this.morphTargetsRelative?(pt.addVectors(this.boundingBox.min,ct.min),this.boundingBox.expandByPoint(pt),pt.addVectors(this.boundingBox.max,ct.max),this.boundingBox.expandByPoint(pt)):(this.boundingBox.expandByPoint(ct.min),this.boundingBox.expandByPoint(ct.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new k);const t=this.attributes.position,i=this.morphAttributes.position;if(t&&t.isGLBufferAttribute)return console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),void this.boundingSphere.set(new e,1/0);if(t){const e=this.boundingSphere.center;if(ct.setFromBufferAttribute(t),i)for(let t=0,e=i.length;t<e;t++){const e=i[t];ut.setFromBufferAttribute(e),this.morphTargetsRelative?(pt.addVectors(ct.min,ut.min),ct.expandByPoint(pt),pt.addVectors(ct.max,ut.max),ct.expandByPoint(pt)):(ct.expandByPoint(ut.min),ct.expandByPoint(ut.max))}ct.getCenter(e);let s=0;for(let i=0,r=t.count;i<r;i++)pt.fromBufferAttribute(t,i),s=Math.max(s,e.distanceToSquared(pt));if(i)for(let r=0,n=i.length;r<n;r++){const n=i[r],o=this.morphTargetsRelative;for(let i=0,r=n.count;i<r;i++)pt.fromBufferAttribute(n,i),o&&(lt.fromBufferAttribute(t,i),pt.add(lt)),s=Math.max(s,e.distanceToSquared(pt))}this.boundingSphere.radius=Math.sqrt(s),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,i=this.attributes;if(null===t||void 0===i.position||void 0===i.normal||void 0===i.uv)return void console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const s=i.position,r=i.normal,n=i.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new it(new Float32Array(4*s.count),4));const o=this.getAttribute("tangent"),a=[],h=[];for(let t=0;t<s.count;t++)a[t]=new e,h[t]=new e;const l=new e,c=new e,u=new e,p=new B,d=new B,g=new B,m=new e,f=new e;function y(t,e,i){l.fromBufferAttribute(s,t),c.fromBufferAttribute(s,e),u.fromBufferAttribute(s,i),p.fromBufferAttribute(n,t),d.fromBufferAttribute(n,e),g.fromBufferAttribute(n,i),c.sub(l),u.sub(l),d.sub(p),g.sub(p);const r=1/(d.x*g.y-g.x*d.y);isFinite(r)&&(m.copy(c).multiplyScalar(g.y).addScaledVector(u,-d.y).multiplyScalar(r),f.copy(u).multiplyScalar(d.x).addScaledVector(c,-g.x).multiplyScalar(r),a[t].add(m),a[e].add(m),a[i].add(m),h[t].add(f),h[e].add(f),h[i].add(f))}let b=this.groups;0===b.length&&(b=[{start:0,count:t.count}]);for(let e=0,i=b.length;e<i;++e){const i=b[e],s=i.start;for(let e=s,r=s+i.count;e<r;e+=3)y(t.getX(e+0),t.getX(e+1),t.getX(e+2))}const x=new e,S=new e,M=new e,w=new e;function v(t){M.fromBufferAttribute(r,t),w.copy(M);const e=a[t];x.copy(e),x.sub(M.multiplyScalar(M.dot(e))).normalize(),S.crossVectors(w,e);const i=S.dot(h[t])<0?-1:1;o.setXYZW(t,x.x,x.y,x.z,i)}for(let e=0,i=b.length;e<i;++e){const i=b[e],s=i.start;for(let e=s,r=s+i.count;e<r;e+=3)v(t.getX(e+0)),v(t.getX(e+1)),v(t.getX(e+2))}}computeVertexNormals(){const t=this.index,i=this.getAttribute("position");if(void 0!==i){let s=this.getAttribute("normal");if(void 0===s)s=new it(new Float32Array(3*i.count),3),this.setAttribute("normal",s);else for(let t=0,e=s.count;t<e;t++)s.setXYZ(t,0,0,0);const r=new e,n=new e,o=new e,a=new e,h=new e,l=new e,c=new e,u=new e;if(t)for(let e=0,p=t.count;e<p;e+=3){const p=t.getX(e+0),d=t.getX(e+1),g=t.getX(e+2);r.fromBufferAttribute(i,p),n.fromBufferAttribute(i,d),o.fromBufferAttribute(i,g),c.subVectors(o,n),u.subVectors(r,n),c.cross(u),a.fromBufferAttribute(s,p),h.fromBufferAttribute(s,d),l.fromBufferAttribute(s,g),a.add(c),h.add(c),l.add(c),s.setXYZ(p,a.x,a.y,a.z),s.setXYZ(d,h.x,h.y,h.z),s.setXYZ(g,l.x,l.y,l.z)}else for(let t=0,e=i.count;t<e;t+=3)r.fromBufferAttribute(i,t+0),n.fromBufferAttribute(i,t+1),o.fromBufferAttribute(i,t+2),c.subVectors(o,n),u.subVectors(r,n),c.cross(u),s.setXYZ(t+0,c.x,c.y,c.z),s.setXYZ(t+1,c.x,c.y,c.z),s.setXYZ(t+2,c.x,c.y,c.z);this.normalizeNormals(),s.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,i=t.count;e<i;e++)pt.fromBufferAttribute(t,e),pt.normalize(),t.setXYZ(e,pt.x,pt.y,pt.z)}toNonIndexed(){function t(t,e){const i=t.array,s=t.itemSize,r=t.normalized,n=new i.constructor(e.length*s);let o=0,a=0;for(let r=0,h=e.length;r<h;r++){o=t.isInterleavedBufferAttribute?e[r]*t.data.stride+t.offset:e[r]*s;for(let t=0;t<s;t++)n[a++]=i[o++]}return new it(n,s,r)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new dt,i=this.index.array,s=this.attributes;for(const r in s){const n=t(s[r],i);e.setAttribute(r,n)}const r=this.morphAttributes;for(const s in r){const n=[],o=r[s];for(let e=0,s=o.length;e<s;e++){const s=t(o[e],i);n.push(s)}e.morphAttributes[s]=n}e.morphTargetsRelative=this.morphTargetsRelative;const n=this.groups;for(let t=0,i=n.length;t<i;t++){const i=n[t];e.addGroup(i.start,i.count,i.materialIndex)}return e}toJSON(){const t={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,""!==this.name&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const e in i){const s=i[e];t.data.attributes[e]=s.toJSON(t.data)}const s={};let r=!1;for(const e in this.morphAttributes){const i=this.morphAttributes[e],n=[];for(let e=0,s=i.length;e<s;e++){const s=i[e];n.push(s.toJSON(t.data))}n.length>0&&(s[e]=n,r=!0)}r&&(t.data.morphAttributes=s,t.data.morphTargetsRelative=this.morphTargetsRelative);const n=this.groups;n.length>0&&(t.data.groups=JSON.parse(JSON.stringify(n)));const o=this.boundingSphere;return null!==o&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;null!==i&&this.setIndex(i.clone(e));const s=t.attributes;for(const t in s){const i=s[t];this.setAttribute(t,i.clone(e))}const r=t.morphAttributes;for(const t in r){const i=[],s=r[t];for(let t=0,r=s.length;t<r;t++)i.push(s[t].clone(e));this.morphAttributes[t]=i}this.morphTargetsRelative=t.morphTargetsRelative;const n=t.groups;for(let t=0,e=n.length;t<e;t++){const e=n[t];this.addGroup(e.start,e.count,e.materialIndex)}const o=t.boundingBox;null!==o&&(this.boundingBox=o.clone());const a=t.boundingSphere;return null!==a&&(this.boundingSphere=a.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const gt=new e,mt=new e,ft=new C,yt=new H,bt=new k,xt=new e,St=new e;class Mt extends z{constructor(t=new dt,e=new K){super(),this.isLine=!0,this.type="Line",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){const t=this.geometry;if(null===t.index){const e=t.attributes.position,i=[0];for(let t=1,s=e.count;t<s;t++)gt.fromBufferAttribute(e,t-1),mt.fromBufferAttribute(e,t),i[t]=i[t-1],i[t]+=gt.distanceTo(mt);t.setAttribute("lineDistance",new nt(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(t,e){const i=this.geometry,s=this.matrixWorld,r=t.params.Line.threshold,n=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),bt.copy(i.boundingSphere),bt.applyMatrix4(s),bt.radius+=r,!1===t.ray.intersectsSphere(bt))return;ft.copy(s).invert(),yt.copy(t.ray).applyMatrix4(ft);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,h=this.isLineSegments?2:1,l=i.index,c=i.attributes.position;if(null!==l){const i=Math.max(0,n.start),s=Math.min(l.count,n.start+n.count);for(let r=i,n=s-1;r<n;r+=h){const i=l.getX(r),s=l.getX(r+1),n=wt(this,t,yt,a,i,s,r);n&&e.push(n)}if(this.isLineLoop){const r=l.getX(s-1),n=l.getX(i),o=wt(this,t,yt,a,r,n,s-1);o&&e.push(o)}}else{const i=Math.max(0,n.start),s=Math.min(c.count,n.start+n.count);for(let r=i,n=s-1;r<n;r+=h){const i=wt(this,t,yt,a,r,r+1,r);i&&e.push(i)}if(this.isLineLoop){const r=wt(this,t,yt,a,s-1,i,s-1);r&&e.push(r)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=i.length;t<e;t++){const e=i[t].name||String(t);this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=t}}}}}function wt(t,e,i,s,r,n,o){const a=t.geometry.attributes.position;if(gt.fromBufferAttribute(a,r),mt.fromBufferAttribute(a,n),i.distanceSqToSegment(gt,mt,xt,St)>s)return;xt.applyMatrix4(t.matrixWorld);const h=e.ray.origin.distanceTo(xt);return h<e.near||h>e.far?void 0:{distance:h,point:St.clone().applyMatrix4(t.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:t}}const vt=new e,At=new e;class Bt extends Mt{constructor(t,e){super(t,e),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const t=this.geometry;if(null===t.index){const e=t.attributes.position,i=[];for(let t=0,s=e.count;t<s;t+=2)vt.fromBufferAttribute(e,t),At.fromBufferAttribute(e,t+1),i[t]=0===t?0:i[t-1],i[t+1]=i[t]+vt.distanceTo(At);t.setAttribute("lineDistance",new nt(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}const Tt=new e;t("SpotLightHelper",class extends z{constructor(t,e){super(),this.light=t,this.matrixAutoUpdate=!1,this.color=e,this.type="SpotLightHelper";const i=new dt,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let t=0,e=1,i=32;t<i;t++,e++){const r=t/i*Math.PI*2,n=e/i*Math.PI*2;s.push(Math.cos(r),Math.sin(r),1,Math.cos(n),Math.sin(n),1)}i.setAttribute("position",new nt(s,3));const r=new K({fog:!1,toneMapped:!1});this.cone=new Bt(i,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);const t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),Tt.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Tt),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}})}}}));
2
+ //# sourceMappingURL=SpotLightHelper-56c85cfb.nomodule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpotLightHelper-56c85cfb.nomodule.js","sources":["../../node_modules/three/src/math/Ray.js","../../node_modules/three/src/math/ColorManagement.js","../../node_modules/three/src/math/Color.js","../../node_modules/three/src/materials/Material.js","../../node_modules/three/src/materials/LineBasicMaterial.js","../../node_modules/three/src/core/BufferAttribute.js","../../node_modules/three/src/core/BufferGeometry.js","../../node_modules/three/src/utils.js","../../node_modules/three/src/objects/Line.js","../../node_modules/three/src/objects/LineSegments.js","../../node_modules/three/src/helpers/SpotLightHelper.js"],"sourcesContent":["import { Vector3 } from './Vector3.js';\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector.dot( this.direction );\n\t\tconst d2 = _vector.dot( _vector ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Ray };\n","import { SRGBColorSpace, LinearSRGBColorSpace, SRGBTransfer, LinearTransfer, NoColorSpace } from '../constants.js';\nimport { Matrix3 } from './Matrix3.js';\n\nconst LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(\n\t0.4123908, 0.3575843, 0.1804808,\n\t0.2126390, 0.7151687, 0.0721923,\n\t0.0193308, 0.1191948, 0.9505322\n);\n\nconst XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set(\n\t3.2409699, - 1.5373832, - 0.4986108,\n\t- 0.9692436, 1.8759675, 0.0415551,\n\t0.0556301, - 0.2039770, 1.0569715\n);\n\nfunction createColorManagement() {\n\n\tconst ColorManagement = {\n\n\t\tenabled: true,\n\n\t\tworkingColorSpace: LinearSRGBColorSpace,\n\n\t\t/**\n\t\t * Implementations of supported color spaces.\n\t\t *\n\t\t * Required:\n\t\t *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n\t\t *\t- whitePoint: reference white [ x y ]\n\t\t *\t- transfer: transfer function (pre-defined)\n\t\t *\t- toXYZ: Matrix3 RGB to XYZ transform\n\t\t *\t- fromXYZ: Matrix3 XYZ to RGB transform\n\t\t *\t- luminanceCoefficients: RGB luminance coefficients\n\t\t *\n\t\t * Optional:\n\t\t * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }\n\t\t * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n\t\t *\n\t\t * Reference:\n\t\t * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n\t\t */\n\t\tspaces: {},\n\n\t\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\t\treturn color;\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = SRGBToLinear( color.r );\n\t\t\t\tcolor.g = SRGBToLinear( color.g );\n\t\t\t\tcolor.b = SRGBToLinear( color.b );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) {\n\n\t\t\t\tcolor.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ );\n\t\t\t\tcolor.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = LinearToSRGB( color.r );\n\t\t\t\tcolor.g = LinearToSRGB( color.g );\n\t\t\t\tcolor.b = LinearToSRGB( color.b );\n\n\t\t\t}\n\n\t\t\treturn color;\n\n\t\t},\n\n\t\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t\t},\n\n\t\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t\t},\n\n\t\tgetPrimaries: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].primaries;\n\n\t\t},\n\n\t\tgetTransfer: function ( colorSpace ) {\n\n\t\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\t\treturn this.spaces[ colorSpace ].transfer;\n\n\t\t},\n\n\t\tgetLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );\n\n\t\t},\n\n\t\tdefine: function ( colorSpaces ) {\n\n\t\t\tObject.assign( this.spaces, colorSpaces );\n\n\t\t},\n\n\t\t// Internal APIs\n\n\t\t_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {\n\n\t\t\treturn targetMatrix\n\t\t\t\t.copy( this.spaces[ sourceColorSpace ].toXYZ )\n\t\t\t\t.multiply( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t},\n\n\t\t_getDrawingBufferColorSpace: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace;\n\n\t\t},\n\n\t\t_getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace;\n\n\t\t}\n\n\t};\n\n\t/******************************************************************************\n\t * sRGB definitions\n\t */\n\n\tconst REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ];\n\tconst REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ];\n\tconst D65 = [ 0.3127, 0.3290 ];\n\n\tColorManagement.define( {\n\n\t\t[ LinearSRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: LinearTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\tworkingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t\t[ SRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: SRGBTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t} );\n\n\treturn ColorManagement;\n\n}\n\nexport const ColorManagement = /*@__PURE__*/ createColorManagement();\n\nexport function SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nexport function LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n","import { clamp, euclideanModulo, lerp } from './MathUtils.js';\nimport { ColorManagement, SRGBToLinear, LinearToSRGB } from './ColorManagement.js';\nimport { SRGBColorSpace } from '../constants.js';\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nexport { Color };\n","import { Color } from '../math/Color.js';\nimport { EventDispatcher } from '../core/EventDispatcher.js';\nimport { FrontSide, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor, AlwaysStencilFunc, KeepStencilOp } from '../constants.js';\nimport { generateUUID } from '../math/MathUtils.js';\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\t// onBeforeRender and onBeforeCompile only supported in WebGLRenderer\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {\n\n\t\tconsole.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166\n\n\t}\n\n}\n\nexport { Material };\n","import { Material } from './Material.js';\nimport { Color } from '../math/Color.js';\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { LineBasicMaterial };\n","import { Vector3 } from '../math/Vector3.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { denormalize, normalize } from '../math/MathUtils.js';\nimport { StaticDrawUsage, FloatType } from '../constants.js';\nimport { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector2();\n\nlet _id = 0;\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2.fromBufferAttribute( this, i );\n\t\t\t\t_vector2.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2.x, _vector2.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector.fromBufferAttribute( this, i );\n\t\t\t\t_vector.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector.fromBufferAttribute( this, i );\n\n\t\t\t_vector.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector.fromBufferAttribute( this, i );\n\n\t\t\t_vector.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector.fromBufferAttribute( this, i );\n\n\t\t\t_vector.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\n//\n\nexport {\n\tFloat32BufferAttribute,\n\tFloat16BufferAttribute,\n\tUint32BufferAttribute,\n\tInt32BufferAttribute,\n\tUint16BufferAttribute,\n\tInt16BufferAttribute,\n\tUint8ClampedBufferAttribute,\n\tUint8BufferAttribute,\n\tInt8BufferAttribute,\n\tBufferAttribute\n};\n","import { Vector3 } from '../math/Vector3.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Box3 } from '../math/Box3.js';\nimport { EventDispatcher } from './EventDispatcher.js';\nimport { BufferAttribute, Float32BufferAttribute, Uint16BufferAttribute, Uint32BufferAttribute } from './BufferAttribute.js';\nimport { Sphere } from '../math/Sphere.js';\nimport { Object3D } from './Object3D.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Matrix3 } from '../math/Matrix3.js';\nimport { generateUUID } from '../math/MathUtils.js';\nimport { arrayNeedsUint32 } from '../utils.js';\n\nlet _id = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.indirect = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetIndirect( indirect ) {\n\n\t\tthis.indirect = indirect;\n\n\t\treturn this;\n\n\t}\n\n\tgetIndirect() {\n\n\t\treturn this.indirect;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute === undefined ) {\n\n\t\t\tconst position = [];\n\n\t\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\t} else {\n\n\t\t\tconst l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size\n\n\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tpositionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tif ( points.length > positionAttribute.count ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );\n\n\t\t\t}\n\n\t\t\tpositionAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector.addVectors( this.boundingBox.min, _box.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector );\n\n\t\t\t\t\t\t_vector.addVectors( this.boundingBox.max, _box.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector.addVectors( _box.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box.expandByPoint( _vector );\n\n\t\t\t\t\t\t_vector.addVectors( _box.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box.expandByPoint( _vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector.fromBufferAttribute( normals, i );\n\n\t\t\t_vector.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nexport { BufferGeometry };\n","function arrayMin( array ) {\n\n\tif ( array.length === 0 ) return Infinity;\n\n\tlet min = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] < min ) min = array[ i ];\n\n\t}\n\n\treturn min;\n\n}\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\nfunction toNormalizedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\n\t// Convert [-1, 1] to [0, 1] projection matrix\n\tm[ 2 ] = 0.5 * m[ 2 ] + 0.5 * m[ 3 ];\n\tm[ 6 ] = 0.5 * m[ 6 ] + 0.5 * m[ 7 ];\n\tm[ 10 ] = 0.5 * m[ 10 ] + 0.5 * m[ 11 ];\n\tm[ 14 ] = 0.5 * m[ 14 ] + 0.5 * m[ 15 ];\n\n}\n\nfunction toReversedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\tconst isPerspectiveMatrix = m[ 11 ] === - 1;\n\n\t// Reverse [0, 1] projection matrix\n\tif ( isPerspectiveMatrix ) {\n\n\t\tm[ 10 ] = - m[ 10 ] - 1;\n\t\tm[ 14 ] = - m[ 14 ];\n\n\t} else {\n\n\t\tm[ 10 ] = - m[ 10 ];\n\t\tm[ 14 ] = - m[ 14 ] + 1;\n\n\t}\n\n}\n\nexport { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS, createCanvasElement, warnOnce, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix };\n","import { Sphere } from '../math/Sphere.js';\nimport { Ray } from '../math/Ray.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Object3D } from '../core/Object3D.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial.js';\nimport { BufferGeometry } from '../core/BufferGeometry.js';\nimport { Float32BufferAttribute } from '../core/BufferAttribute.js';\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, i, i + 1, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, end - 1, start, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: i,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tbarycoord: null,\n\t\tobject: object\n\n\t};\n\n}\n\nexport { Line };\n","import { Line } from './Line.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Float32BufferAttribute } from '../core/BufferAttribute.js';\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { LineSegments };\n","import { Vector3 } from '../math/Vector3.js';\nimport { Object3D } from '../core/Object3D.js';\nimport { LineSegments } from '../objects/LineSegments.js';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial.js';\nimport { Float32BufferAttribute } from '../core/BufferAttribute.js';\nimport { BufferGeometry } from '../core/BufferGeometry.js';\n\nconst _vector = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { SpotLightHelper };\n"],"names":["_vector","Vector3","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","[object Object]","origin","direction","this","copy","ray","t","target","addScaledVector","v","sub","normalize","at","point","subVectors","directionDistance","dot","Math","sqrt","distanceSqToPoint","distanceToSquared","v0","v1","optionalPointOnRay","optionalPointOnSegment","add","multiplyScalar","segExtent","distanceTo","a01","b0","b1","c","lengthSq","det","abs","s0","s1","sqrDist","extDet","invDet","max","min","sphere","center","tca","d2","radius2","radius","thc","t0","t1","plane","denominator","normal","distanceToPoint","constant","distanceToPlane","distToPoint","box","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","x","invdiry","y","invdirz","z","isNaN","intersectBox","a","b","backfaceCulling","crossVectors","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","matrix4","applyMatrix4","transformDirection","equals","constructor","LINEAR_REC709_TO_XYZ","Matrix3","set","XYZ_TO_LINEAR_REC709","createColorManagement","ColorManagement","enabled","workingColorSpace","LinearSRGBColorSpace","spaces","convert","color","sourceColorSpace","targetColorSpace","transfer","SRGBTransfer","r","SRGBToLinear","g","primaries","applyMatrix3","toXYZ","fromXYZ","LinearToSRGB","fromWorkingColorSpace","toWorkingColorSpace","getPrimaries","colorSpace","getTransfer","NoColorSpace","LinearTransfer","getLuminanceCoefficients","fromArray","luminanceCoefficients","define","colorSpaces","Object","assign","_getMatrix","targetMatrix","multiply","_getDrawingBufferColorSpace","outputColorSpaceConfig","drawingBufferColorSpace","_getUnpackColorSpace","workingColorSpaceConfig","unpackColorSpace","REC709_PRIMARIES","REC709_LUMINANCE_COEFFICIENTS","D65","whitePoint","SRGBColorSpace","pow","_colorKeywords","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","_hslA","h","s","l","_hslB","hue2rgb","p","q","Color","isColor","undefined","value","setHex","setStyle","setRGB","scalar","hex","floor","euclideanModulo","clamp","style","handleAlpha","string","parseFloat","console","warn","m","exec","name","components","parseInt","setHSL","size","length","charAt","setColorName","toLowerCase","copySRGBToLinear","copyLinearToSRGB","_color","round","getHex","toString","slice","hue","saturation","lightness","delta","toFixed","getHSL","color1","color2","alpha","lerp","e","elements","array","offset","attribute","index","getX","getY","getZ","Symbol","iterator","NAMES","_materialId","Material","EventDispatcher","super","isMaterial","defineProperty","uuid","generateUUID","type","blending","NormalBlending","side","FrontSide","vertexColors","opacity","transparent","alphaHash","blendSrc","SrcAlphaFactor","blendDst","OneMinusSrcAlphaFactor","blendEquation","AddEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","blendColor","blendAlpha","depthFunc","LessEqualDepth","depthTest","depthWrite","stencilWriteMask","stencilFunc","AlwaysStencilFunc","stencilRef","stencilFuncMask","stencilFail","KeepStencilOp","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","forceSinglePass","visible","toneMapped","userData","version","_alphaTest","alphaTest","onBeforeCompile","values","key","newValue","currentValue","isVector3","meta","isRootObject","textures","images","data","metadata","generator","extractFromCache","cache","push","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","isTexture","toJSON","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","toArray","dispersion","iridescence","iridescenceIOR","iridescenceThicknessRange","iridescenceMap","iridescenceThicknessMap","anisotropy","anisotropyRotation","anisotropyMap","map","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapRotation","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","Infinity","attenuationColor","sizeAttenuation","rotation","linewidth","dashSize","gapSize","scale","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","flatShading","fog","keys","source","srcPlanes","dstPlanes","n","Array","i","clone","JSON","parse","stringify","dispatchEvent","needsUpdate","LineBasicMaterial","parameters","isLineBasicMaterial","linecap","linejoin","setValues","_vector2","Vector2","_id","BufferAttribute","itemSize","normalized","isArray","TypeError","isBufferAttribute","count","usage","StaticDrawUsage","updateRanges","gpuType","FloatType","start","index1","index2","fromBufferAttribute","setXY","setXYZ","applyNormalMatrix","component","denormalize","w","callback","onUploadCallback","from","Uint16BufferAttribute","Uint16Array","Uint32BufferAttribute","Uint32Array","Float32BufferAttribute","Float32Array","_m1","Matrix4","_obj","Object3D","_offset","_box","Box3","_boxMorphTargets","BufferGeometry","isBufferGeometry","indirect","attributes","morphAttributes","morphTargetsRelative","groups","boundingBox","boundingSphere","drawRange","arrayNeedsUint32","materialIndex","matrix","position","normalMatrix","getNormalMatrix","tangent","computeBoundingBox","computeBoundingSphere","makeRotationFromQuaternion","angle","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","vector","lookAt","updateMatrix","getCenter","negate","translate","points","positionAttribute","getAttribute","setAttribute","morphAttributesPosition","isGLBufferAttribute","error","setFromBufferAttribute","il","morphAttribute","addVectors","expandByPoint","makeEmpty","Sphere","maxRadiusSq","j","jl","uv","normalAttribute","uvAttribute","hasAttribute","tangentAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","isFinite","group","tmp","tmp2","n2","handleVertex","setXYZW","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","normals","convertBufferAttribute","indices","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","prototype","call","hasMorphAttributes","attributeArray","setIndex","_vStart","_vEnd","_inverseMatrix","_ray","_sphere","_intersectPointOnRay","_intersectPointOnSegment","Line","geometry","material","isLine","updateMorphTargets","recursive","lineDistances","raycaster","intersects","matrixWorld","threshold","params","intersectsSphere","invert","localThreshold","localThresholdSq","step","isLineSegments","end","intersect","checkIntersection","isLineLoop","morphTargetInfluences","morphTargetDictionary","ml","String","object","thresholdSq","distanceSqToSegment","distance","near","far","face","faceIndex","barycoord","_start","_end","LineSegments","exports","light","matrixAutoUpdate","positions","p1","PI","p2","cos","sin","cone","update","dispose","updateWorldMatrix","parent","coneLength","coneWidth","setFromMatrixPosition"],"mappings":"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"}