@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(["./main-thread-to-worker-32b45184.legacy.js","./Object3D-1f141c55.legacy.js"],(function(t){var e,i,r,s,n,a,o,h,u,l,c,p,d,f,g,y,m,v,b,k,x,S,M,w,A,B,T,C,z,R,N,O,F,E,L,I;return{setters:[function(t){e=t.e,i=t.k,r=t.cd,s=t.bM,n=t._,a=t.a0,o=t.an},function(t){h=t.V,u=t.e,l=t.f,c=t.L,p=t.g,d=t.M,f=t.N,g=t.c,y=t.l,m=t.h,v=t.i,b=t.F,k=t.j,x=t.k,S=t.A,M=t.m,w=t.n,A=t.K,B=t.E,T=t.o,C=t.p,z=t.q,R=t.r,N=t.d,O=t.s,F=t.B,E=t.S,L=t.b,I=t.O}],execute:function(){var H=new h,W=new h,P=new h,X=new h,D=new h,q=new h,Z=new h,J=function(){return e((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new h,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new h(0,0,-1);i(this,t),this.origin=e,this.direction=r}),[{key:"set",value:function(t,e){return this.origin.copy(t),this.direction.copy(e),this}},{key:"copy",value:function(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}},{key:"at",value:function(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}},{key:"lookAt",value:function(t){return this.direction.copy(t).sub(this.origin).normalize(),this}},{key:"recast",value:function(t){return this.origin.copy(this.at(t,H)),this}},{key:"closestPointToPoint",value:function(t,e){e.subVectors(t,this.origin);var i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}},{key:"distanceToPoint",value:function(t){return Math.sqrt(this.distanceSqToPoint(t))}},{key:"distanceSqToPoint",value:function(t){var e=H.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(H.copy(this.origin).addScaledVector(this.direction,e),H.distanceToSquared(t))}},{key:"distanceSqToSegment",value:function(t,e,i,r){W.copy(t).add(e).multiplyScalar(.5),P.copy(e).sub(t).normalize(),X.copy(this.origin).sub(W);var s,n,a,o,h=.5*t.distanceTo(e),u=-this.direction.dot(P),l=X.dot(this.direction),c=-X.dot(P),p=X.lengthSq(),d=Math.abs(1-u*u);if(d>0)if(n=u*l-c,o=h*d,(s=u*c-l)>=0)if(n>=-o)if(n<=o){var f=1/d;a=(s*=f)*(s+u*(n*=f)+2*l)+n*(u*s+n+2*c)+p}else n=h,a=-(s=Math.max(0,-(u*n+l)))*s+n*(n+2*c)+p;else n=-h,a=-(s=Math.max(0,-(u*n+l)))*s+n*(n+2*c)+p;else n<=-o?a=-(s=Math.max(0,-(-u*h+l)))*s+(n=s>0?-h:Math.min(Math.max(-h,-c),h))*(n+2*c)+p:n<=o?(s=0,a=(n=Math.min(Math.max(-h,-c),h))*(n+2*c)+p):a=-(s=Math.max(0,-(u*h+l)))*s+(n=s>0?h:Math.min(Math.max(-h,-c),h))*(n+2*c)+p;else n=u>0?-h:h,a=-(s=Math.max(0,-(u*n+l)))*s+n*(n+2*c)+p;return i&&i.copy(this.origin).addScaledVector(this.direction,s),r&&r.copy(W).addScaledVector(P,n),a}},{key:"intersectSphere",value:function(t,e){H.subVectors(t.center,this.origin);var i=H.dot(this.direction),r=H.dot(H)-i*i,s=t.radius*t.radius;if(r>s)return null;var n=Math.sqrt(s-r),a=i-n,o=i+n;return o<0?null:a<0?this.at(o,e):this.at(a,e)}},{key:"intersectsSphere",value:function(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}},{key:"distanceToPlane",value:function(t){var e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}},{key:"intersectPlane",value:function(t,e){var i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}},{key:"intersectsPlane",value:function(t){var e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0}},{key:"intersectBox",value:function(t,e){var i,r,s,n,a,o,h=1/this.direction.x,u=1/this.direction.y,l=1/this.direction.z,c=this.origin;return h>=0?(i=(t.min.x-c.x)*h,r=(t.max.x-c.x)*h):(i=(t.max.x-c.x)*h,r=(t.min.x-c.x)*h),u>=0?(s=(t.min.y-c.y)*u,n=(t.max.y-c.y)*u):(s=(t.max.y-c.y)*u,n=(t.min.y-c.y)*u),i>n||s>r?null:((s>i||isNaN(i))&&(i=s),(n<r||isNaN(r))&&(r=n),l>=0?(a=(t.min.z-c.z)*l,o=(t.max.z-c.z)*l):(a=(t.max.z-c.z)*l,o=(t.min.z-c.z)*l),i>o||a>r?null:((a>i||i!=i)&&(i=a),(o<r||r!=r)&&(r=o),r<0?null:this.at(i>=0?i:r,e)))}},{key:"intersectsBox",value:function(t){return null!==this.intersectBox(t,H)}},{key:"intersectTriangle",value:function(t,e,i,r,s){D.subVectors(e,t),q.subVectors(i,t),Z.crossVectors(D,q);var n,a=this.direction.dot(Z);if(a>0){if(r)return null;n=1}else{if(!(a<0))return null;n=-1,a=-a}X.subVectors(this.origin,t);var o=n*this.direction.dot(q.crossVectors(X,q));if(o<0)return null;var h=n*this.direction.dot(D.cross(X));if(h<0)return null;if(o+h>a)return null;var u=-n*X.dot(Z);return u<0?null:this.at(u/a,s)}},{key:"applyMatrix4",value:function(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}},{key:"equals",value:function(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}}])}(),G=(new d).set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),V=(new d).set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Y(){var t={enabled:!0,workingColorSpace:c,spaces:{},convert:function(t,e,i){return!1!==this.enabled&&e!==i&&e&&i?(this.spaces[e].transfer===u&&(t.r=j(t.r),t.g=j(t.g),t.b=j(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===u&&(t.r=_(t.r),t.g=_(t.g),t.b=_(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===f?p:this.spaces[t].transfer},getLuminanceCoefficients:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.workingColorSpace;return this.spaces[t].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],i=[.2126,.7152,.0722],s=[.3127,.329];return t.define(r(r({},c,{primaries:e,whitePoint:s,transfer:p,toXYZ:G,fromXYZ:V,luminanceCoefficients:i,workingColorSpaceConfig:{unpackColorSpace:l},outputColorSpaceConfig:{drawingBufferColorSpace:l}}),l,{primaries:e,whitePoint:s,transfer:u,toXYZ:G,fromXYZ:V,luminanceCoefficients:i,outputColorSpaceConfig:{drawingBufferColorSpace:l}})),t}var U=Y();function j(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function _(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}var $={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},K={h:0,s:0,l:0},Q={h:0,s:0,l:0};function tt(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}var et=function(){return e((function t(e,r,s){return i(this,t),this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,r,s)}),[{key:"set",value:function(t,e,i){if(void 0===e&&void 0===i){var r=t;r&&r.isColor?this.copy(r):"number"==typeof r?this.setHex(r):"string"==typeof r&&this.setStyle(r)}else this.setRGB(t,e,i);return this}},{key:"setScalar",value:function(t){return this.r=t,this.g=t,this.b=t,this}},{key:"setHex",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,U.toWorkingColorSpace(this,e),this}},{key:"setRGB",value:function(t,e,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:U.workingColorSpace;return this.r=t,this.g=e,this.b=i,U.toWorkingColorSpace(this,r),this}},{key:"setHSL",value:function(t,e,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:U.workingColorSpace;if(t=m(t,1),e=g(e,0,1),i=g(i,0,1),0===e)this.r=this.g=this.b=i;else{var s=i<=.5?i*(1+e):i+e-i*e,n=2*i-s;this.r=tt(n,s,t+1/3),this.g=tt(n,s,t),this.b=tt(n,s,t-1/3)}return U.toWorkingColorSpace(this,r),this}},{key:"setStyle",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;function r(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}if(e=/^(\w+)\(([^\)]*)\)/.exec(t)){var s,n=e[1],a=e[2];switch(n){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,i);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,i);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,i);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(e=/^\#([A-Fa-f\d]+)$/.exec(t)){var o=e[1],h=o.length;if(3===h)return this.setRGB(parseInt(o.charAt(0),16)/15,parseInt(o.charAt(1),16)/15,parseInt(o.charAt(2),16)/15,i);if(6===h)return this.setHex(parseInt(o,16),i);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,i);return this}},{key:"setColorName",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l,i=$[t.toLowerCase()];return void 0!==i?this.setHex(i,e):console.warn("THREE.Color: Unknown color "+t),this}},{key:"clone",value:function(){return new this.constructor(this.r,this.g,this.b)}},{key:"copy",value:function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}},{key:"copySRGBToLinear",value:function(t){return this.r=j(t.r),this.g=j(t.g),this.b=j(t.b),this}},{key:"copyLinearToSRGB",value:function(t){return this.r=_(t.r),this.g=_(t.g),this.b=_(t.b),this}},{key:"convertSRGBToLinear",value:function(){return this.copySRGBToLinear(this),this}},{key:"convertLinearToSRGB",value:function(){return this.copyLinearToSRGB(this),this}},{key:"getHex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;return U.fromWorkingColorSpace(it.copy(this),t),65536*Math.round(g(255*it.r,0,255))+256*Math.round(g(255*it.g,0,255))+Math.round(g(255*it.b,0,255))}},{key:"getHexString",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;return("000000"+this.getHex(t).toString(16)).slice(-6)}},{key:"getHSL",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U.workingColorSpace;U.fromWorkingColorSpace(it.copy(this),e);var i,r,s=it.r,n=it.g,a=it.b,o=Math.max(s,n,a),h=Math.min(s,n,a),u=(h+o)/2;if(h===o)i=0,r=0;else{var l=o-h;switch(r=u<=.5?l/(o+h):l/(2-o-h),o){case s:i=(n-a)/l+(n<a?6:0);break;case n:i=(a-s)/l+2;break;case a:i=(s-n)/l+4}i/=6}return t.h=i,t.s=r,t.l=u,t}},{key:"getRGB",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U.workingColorSpace;return U.fromWorkingColorSpace(it.copy(this),e),t.r=it.r,t.g=it.g,t.b=it.b,t}},{key:"getStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;U.fromWorkingColorSpace(it.copy(this),t);var e=it.r,i=it.g,r=it.b;return t!==l?"color(".concat(t," ").concat(e.toFixed(3)," ").concat(i.toFixed(3)," ").concat(r.toFixed(3),")"):"rgb(".concat(Math.round(255*e),",").concat(Math.round(255*i),",").concat(Math.round(255*r),")")}},{key:"offsetHSL",value:function(t,e,i){return this.getHSL(K),this.setHSL(K.h+t,K.s+e,K.l+i)}},{key:"add",value:function(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}},{key:"addColors",value:function(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}},{key:"addScalar",value:function(t){return this.r+=t,this.g+=t,this.b+=t,this}},{key:"sub",value:function(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}},{key:"multiply",value:function(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}},{key:"multiplyScalar",value:function(t){return this.r*=t,this.g*=t,this.b*=t,this}},{key:"lerp",value:function(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}},{key:"lerpColors",value:function(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}},{key:"lerpHSL",value:function(t,e){this.getHSL(K),t.getHSL(Q);var i=y(K.h,Q.h,e),r=y(K.s,Q.s,e),s=y(K.l,Q.l,e);return this.setHSL(i,r,s),this}},{key:"setFromVector3",value:function(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}},{key:"applyMatrix3",value:function(t){var e=this.r,i=this.g,r=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*r,this.g=s[1]*e+s[4]*i+s[7]*r,this.b=s[2]*e+s[5]*i+s[8]*r,this}},{key:"equals",value:function(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}},{key:"fromArray",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}},{key:"toArray",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}},{key:"fromBufferAttribute",value:function(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}},{key:"toJSON",value:function(){return this.getHex()}},{key:Symbol.iterator,value:s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.r;case 2:return t.next=4,this.g;case 4:return t.next=6,this.b;case 6:case"end":return t.stop()}}),t,this)}))}])}(),it=new et;et.NAMES=$;var rt=0,st=function(t){function r(t){var e;return i(this,r),(e=a(this,r)).isLineBasicMaterial=!0,e.type="LineBasicMaterial",e.color=new et(16777215),e.map=null,e.linewidth=1,e.linecap="round",e.linejoin="round",e.fog=!0,e.setValues(t),e}return n(r,t),e(r,[{key:"copy",value:function(t){return o(r,"copy",this,3)([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}}])}(function(t){function r(){var t;return i(this,r),(t=a(this,r)).isMaterial=!0,Object.defineProperty(t,"id",{value:rt++}),t.uuid=T(),t.name="",t.type="Material",t.blending=v,t.side=b,t.vertexColors=!1,t.opacity=1,t.transparent=!1,t.alphaHash=!1,t.blendSrc=k,t.blendDst=x,t.blendEquation=S,t.blendSrcAlpha=null,t.blendDstAlpha=null,t.blendEquationAlpha=null,t.blendColor=new et(0,0,0),t.blendAlpha=0,t.depthFunc=M,t.depthTest=!0,t.depthWrite=!0,t.stencilWriteMask=255,t.stencilFunc=w,t.stencilRef=0,t.stencilFuncMask=255,t.stencilFail=A,t.stencilZFail=A,t.stencilZPass=A,t.stencilWrite=!1,t.clippingPlanes=null,t.clipIntersection=!1,t.clipShadows=!1,t.shadowSide=null,t.colorWrite=!0,t.precision=null,t.polygonOffset=!1,t.polygonOffsetFactor=0,t.polygonOffsetUnits=0,t.dithering=!1,t.alphaToCoverage=!1,t.premultipliedAlpha=!1,t.forceSinglePass=!1,t.visible=!0,t.toneMapped=!0,t.userData={},t.version=0,t._alphaTest=0,t}return n(r,t),e(r,[{key:"alphaTest",get:function(){return this._alphaTest},set:function(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}},{key:"onBeforeRender",value:function(){}},{key:"onBeforeCompile",value:function(){}},{key:"customProgramCacheKey",value:function(){return this.onBeforeCompile.toString()}},{key:"setValues",value:function(t){if(void 0!==t)for(var e in t){var i=t[e];if(void 0!==i){var r=this[e];void 0!==r?r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[e]=i:console.warn("THREE.Material: '".concat(e,"' is not a property of THREE.").concat(this.type,"."))}else console.warn("THREE.Material: parameter '".concat(e,"' has value of undefined."))}}},{key:"toJSON",value:function(t){var e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});var i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function r(t){var e=[];for(var i in t){var r=t[i];delete r.metadata,e.push(r)}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!==v&&(i.blending=this.blending),this.side!==b&&(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!==k&&(i.blendSrc=this.blendSrc),this.blendDst!==x&&(i.blendDst=this.blendDst),this.blendEquation!==S&&(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!==M&&(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!==w&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==A&&(i.stencilFail=this.stencilFail),this.stencilZFail!==A&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==A&&(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){var s=r(t.textures),n=r(t.images);s.length>0&&(i.textures=s),n.length>0&&(i.images=n)}return i}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(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;var e=t.clippingPlanes,i=null;if(null!==e){var r=e.length;i=new Array(r);for(var s=0;s!==r;++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}},{key:"dispose",value:function(){this.dispatchEvent({type:"dispose"})}},{key:"needsUpdate",set:function(t){!0===t&&this.version++}},{key:"onBuild",value:function(){console.warn("Material: onBuild() has been removed.")}}])}(B)),nt=new h,at=new N,ot=0,ht=function(){return e((function t(e,r){var s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(i(this,t),Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:ot++}),this.name="",this.array=e,this.itemSize=r,this.count=void 0!==e?e.length/r:0,this.normalized=s,this.usage=R,this.updateRanges=[],this.gpuType=O,this.version=0}),[{key:"onUploadCallback",value:function(){}},{key:"needsUpdate",set:function(t){!0===t&&this.version++}},{key:"setUsage",value:function(t){return this.usage=t,this}},{key:"addUpdateRange",value:function(t,e){this.updateRanges.push({start:t,count:e})}},{key:"clearUpdateRanges",value:function(){this.updateRanges.length=0}},{key:"copy",value:function(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}},{key:"copyAt",value:function(t,e,i){t*=this.itemSize,i*=e.itemSize;for(var r=0,s=this.itemSize;r<s;r++)this.array[t+r]=e.array[i+r];return this}},{key:"copyArray",value:function(t){return this.array.set(t),this}},{key:"applyMatrix3",value:function(t){if(2===this.itemSize)for(var e=0,i=this.count;e<i;e++)at.fromBufferAttribute(this,e),at.applyMatrix3(t),this.setXY(e,at.x,at.y);else if(3===this.itemSize)for(var r=0,s=this.count;r<s;r++)nt.fromBufferAttribute(this,r),nt.applyMatrix3(t),this.setXYZ(r,nt.x,nt.y,nt.z);return this}},{key:"applyMatrix4",value:function(t){for(var e=0,i=this.count;e<i;e++)nt.fromBufferAttribute(this,e),nt.applyMatrix4(t),this.setXYZ(e,nt.x,nt.y,nt.z);return this}},{key:"applyNormalMatrix",value:function(t){for(var e=0,i=this.count;e<i;e++)nt.fromBufferAttribute(this,e),nt.applyNormalMatrix(t),this.setXYZ(e,nt.x,nt.y,nt.z);return this}},{key:"transformDirection",value:function(t){for(var e=0,i=this.count;e<i;e++)nt.fromBufferAttribute(this,e),nt.transformDirection(t),this.setXYZ(e,nt.x,nt.y,nt.z);return this}},{key:"set",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.array.set(t,e),this}},{key:"getComponent",value:function(t,e){var i=this.array[t*this.itemSize+e];return this.normalized&&(i=C(i,this.array)),i}},{key:"setComponent",value:function(t,e,i){return this.normalized&&(i=z(i,this.array)),this.array[t*this.itemSize+e]=i,this}},{key:"getX",value:function(t){var e=this.array[t*this.itemSize];return this.normalized&&(e=C(e,this.array)),e}},{key:"setX",value:function(t,e){return this.normalized&&(e=z(e,this.array)),this.array[t*this.itemSize]=e,this}},{key:"getY",value:function(t){var e=this.array[t*this.itemSize+1];return this.normalized&&(e=C(e,this.array)),e}},{key:"setY",value:function(t,e){return this.normalized&&(e=z(e,this.array)),this.array[t*this.itemSize+1]=e,this}},{key:"getZ",value:function(t){var e=this.array[t*this.itemSize+2];return this.normalized&&(e=C(e,this.array)),e}},{key:"setZ",value:function(t,e){return this.normalized&&(e=z(e,this.array)),this.array[t*this.itemSize+2]=e,this}},{key:"getW",value:function(t){var e=this.array[t*this.itemSize+3];return this.normalized&&(e=C(e,this.array)),e}},{key:"setW",value:function(t,e){return this.normalized&&(e=z(e,this.array)),this.array[t*this.itemSize+3]=e,this}},{key:"setXY",value:function(t,e,i){return t*=this.itemSize,this.normalized&&(e=z(e,this.array),i=z(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}},{key:"setXYZ",value:function(t,e,i,r){return t*=this.itemSize,this.normalized&&(e=z(e,this.array),i=z(i,this.array),r=z(r,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=r,this}},{key:"setXYZW",value:function(t,e,i,r,s){return t*=this.itemSize,this.normalized&&(e=z(e,this.array),i=z(i,this.array),r=z(r,this.array),s=z(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=r,this.array[t+3]=s,this}},{key:"onUpload",value:function(t){return this.onUploadCallback=t,this}},{key:"clone",value:function(){return new this.constructor(this.array,this.itemSize).copy(this)}},{key:"toJSON",value:function(){var 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!==R&&(t.usage=this.usage),t}}])}(),ut=function(t){function r(t,e,s){return i(this,r),a(this,r,[new Uint16Array(t),e,s])}return n(r,t),e(r)}(ht),lt=function(t){function r(t,e,s){return i(this,r),a(this,r,[new Uint32Array(t),e,s])}return n(r,t),e(r)}(ht),ct=function(t){function r(t,e,s){return i(this,r),a(this,r,[new Float32Array(t),e,s])}return n(r,t),e(r)}(ht),pt=0,dt=new L,ft=new I,gt=new h,yt=new F,mt=new F,vt=new h,bt=function(t){function r(){var t;return i(this,r),(t=a(this,r)).isBufferGeometry=!0,Object.defineProperty(t,"id",{value:pt++}),t.uuid=T(),t.name="",t.type="BufferGeometry",t.index=null,t.indirect=null,t.attributes={},t.morphAttributes={},t.morphTargetsRelative=!1,t.groups=[],t.boundingBox=null,t.boundingSphere=null,t.drawRange={start:0,count:1/0},t.userData={},t}return n(r,t),e(r,[{key:"getIndex",value:function(){return this.index}},{key:"setIndex",value:function(t){return Array.isArray(t)?this.index=new(function(t){for(var e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}(t)?lt:ut)(t,1):this.index=t,this}},{key:"setIndirect",value:function(t){return this.indirect=t,this}},{key:"getIndirect",value:function(){return this.indirect}},{key:"getAttribute",value:function(t){return this.attributes[t]}},{key:"setAttribute",value:function(t,e){return this.attributes[t]=e,this}},{key:"deleteAttribute",value:function(t){return delete this.attributes[t],this}},{key:"hasAttribute",value:function(t){return void 0!==this.attributes[t]}},{key:"addGroup",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.groups.push({start:t,count:e,materialIndex:i})}},{key:"clearGroups",value:function(){this.groups=[]}},{key:"setDrawRange",value:function(t,e){this.drawRange.start=t,this.drawRange.count=e}},{key:"applyMatrix4",value:function(t){var e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);var i=this.attributes.normal;if(void 0!==i){var r=(new d).getNormalMatrix(t);i.applyNormalMatrix(r),i.needsUpdate=!0}var 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}},{key:"applyQuaternion",value:function(t){return dt.makeRotationFromQuaternion(t),this.applyMatrix4(dt),this}},{key:"rotateX",value:function(t){return dt.makeRotationX(t),this.applyMatrix4(dt),this}},{key:"rotateY",value:function(t){return dt.makeRotationY(t),this.applyMatrix4(dt),this}},{key:"rotateZ",value:function(t){return dt.makeRotationZ(t),this.applyMatrix4(dt),this}},{key:"translate",value:function(t,e,i){return dt.makeTranslation(t,e,i),this.applyMatrix4(dt),this}},{key:"scale",value:function(t,e,i){return dt.makeScale(t,e,i),this.applyMatrix4(dt),this}},{key:"lookAt",value:function(t){return ft.lookAt(t),ft.updateMatrix(),this.applyMatrix4(ft.matrix),this}},{key:"center",value:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(gt).negate(),this.translate(gt.x,gt.y,gt.z),this}},{key:"setFromPoints",value:function(t){var e=this.getAttribute("position");if(void 0===e){for(var i=[],r=0,s=t.length;r<s;r++){var n=t[r];i.push(n.x,n.y,n.z||0)}this.setAttribute("position",new ct(i,3))}else{for(var a=Math.min(t.length,e.count),o=0;o<a;o++){var h=t[o];e.setXYZ(o,h.x,h.y,h.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}},{key:"computeBoundingBox",value:function(){null===this.boundingBox&&(this.boundingBox=new F);var t=this.attributes.position,e=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 h(-1/0,-1/0,-1/0),new h(1/0,1/0,1/0));if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),e)for(var i=0,r=e.length;i<r;i++){var s=e[i];yt.setFromBufferAttribute(s),this.morphTargetsRelative?(vt.addVectors(this.boundingBox.min,yt.min),this.boundingBox.expandByPoint(vt),vt.addVectors(this.boundingBox.max,yt.max),this.boundingBox.expandByPoint(vt)):(this.boundingBox.expandByPoint(yt.min),this.boundingBox.expandByPoint(yt.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)}},{key:"computeBoundingSphere",value:function(){null===this.boundingSphere&&(this.boundingSphere=new E);var t=this.attributes.position,e=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 h,1/0);if(t){var i=this.boundingSphere.center;if(yt.setFromBufferAttribute(t),e)for(var r=0,s=e.length;r<s;r++){var n=e[r];mt.setFromBufferAttribute(n),this.morphTargetsRelative?(vt.addVectors(yt.min,mt.min),yt.expandByPoint(vt),vt.addVectors(yt.max,mt.max),yt.expandByPoint(vt)):(yt.expandByPoint(mt.min),yt.expandByPoint(mt.max))}yt.getCenter(i);for(var a=0,o=0,u=t.count;o<u;o++)vt.fromBufferAttribute(t,o),a=Math.max(a,i.distanceToSquared(vt));if(e)for(var l=0,c=e.length;l<c;l++)for(var p=e[l],d=this.morphTargetsRelative,f=0,g=p.count;f<g;f++)vt.fromBufferAttribute(p,f),d&&(gt.fromBufferAttribute(t,f),vt.add(gt)),a=Math.max(a,i.distanceToSquared(vt));this.boundingSphere.radius=Math.sqrt(a),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}},{key:"computeTangents",value:function(){var t=this.index,e=this.attributes;if(null!==t&&void 0!==e.position&&void 0!==e.normal&&void 0!==e.uv){var i=e.position,r=e.normal,s=e.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new ht(new Float32Array(4*i.count),4));for(var n=this.getAttribute("tangent"),a=[],o=[],u=0;u<i.count;u++)a[u]=new h,o[u]=new h;var l=new h,c=new h,p=new h,d=new N,f=new N,g=new N,y=new h,m=new h,v=this.groups;0===v.length&&(v=[{start:0,count:t.count}]);for(var b=0,k=v.length;b<k;++b)for(var x=v[b],S=x.start,M=S,w=S+x.count;M<w;M+=3)I(t.getX(M+0),t.getX(M+1),t.getX(M+2));for(var A=new h,B=new h,T=new h,C=new h,z=0,R=v.length;z<R;++z)for(var O=v[z],F=O.start,E=F,L=F+O.count;E<L;E+=3)H(t.getX(E+0)),H(t.getX(E+1)),H(t.getX(E+2))}else console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");function I(t,e,r){l.fromBufferAttribute(i,t),c.fromBufferAttribute(i,e),p.fromBufferAttribute(i,r),d.fromBufferAttribute(s,t),f.fromBufferAttribute(s,e),g.fromBufferAttribute(s,r),c.sub(l),p.sub(l),f.sub(d),g.sub(d);var n=1/(f.x*g.y-g.x*f.y);isFinite(n)&&(y.copy(c).multiplyScalar(g.y).addScaledVector(p,-f.y).multiplyScalar(n),m.copy(p).multiplyScalar(f.x).addScaledVector(c,-g.x).multiplyScalar(n),a[t].add(y),a[e].add(y),a[r].add(y),o[t].add(m),o[e].add(m),o[r].add(m))}function H(t){T.fromBufferAttribute(r,t),C.copy(T);var e=a[t];A.copy(e),A.sub(T.multiplyScalar(T.dot(e))).normalize(),B.crossVectors(C,e);var i=B.dot(o[t])<0?-1:1;n.setXYZW(t,A.x,A.y,A.z,i)}}},{key:"computeVertexNormals",value:function(){var t=this.index,e=this.getAttribute("position");if(void 0!==e){var i=this.getAttribute("normal");if(void 0===i)i=new ht(new Float32Array(3*e.count),3),this.setAttribute("normal",i);else for(var r=0,s=i.count;r<s;r++)i.setXYZ(r,0,0,0);var n=new h,a=new h,o=new h,u=new h,l=new h,c=new h,p=new h,d=new h;if(t)for(var f=0,g=t.count;f<g;f+=3){var y=t.getX(f+0),m=t.getX(f+1),v=t.getX(f+2);n.fromBufferAttribute(e,y),a.fromBufferAttribute(e,m),o.fromBufferAttribute(e,v),p.subVectors(o,a),d.subVectors(n,a),p.cross(d),u.fromBufferAttribute(i,y),l.fromBufferAttribute(i,m),c.fromBufferAttribute(i,v),u.add(p),l.add(p),c.add(p),i.setXYZ(y,u.x,u.y,u.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(v,c.x,c.y,c.z)}else for(var b=0,k=e.count;b<k;b+=3)n.fromBufferAttribute(e,b+0),a.fromBufferAttribute(e,b+1),o.fromBufferAttribute(e,b+2),p.subVectors(o,a),d.subVectors(n,a),p.cross(d),i.setXYZ(b+0,p.x,p.y,p.z),i.setXYZ(b+1,p.x,p.y,p.z),i.setXYZ(b+2,p.x,p.y,p.z);this.normalizeNormals(),i.needsUpdate=!0}}},{key:"normalizeNormals",value:function(){for(var t=this.attributes.normal,e=0,i=t.count;e<i;e++)vt.fromBufferAttribute(t,e),vt.normalize(),t.setXYZ(e,vt.x,vt.y,vt.z)}},{key:"toNonIndexed",value:function(){function t(t,e){for(var i=t.array,r=t.itemSize,s=t.normalized,n=new i.constructor(e.length*r),a=0,o=0,h=0,u=e.length;h<u;h++){a=t.isInterleavedBufferAttribute?e[h]*t.data.stride+t.offset:e[h]*r;for(var l=0;l<r;l++)n[o++]=i[a++]}return new ht(n,r,s)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;var e=new r,i=this.index.array,s=this.attributes;for(var n in s){var a=t(s[n],i);e.setAttribute(n,a)}var o=this.morphAttributes;for(var h in o){for(var u=[],l=o[h],c=0,p=l.length;c<p;c++){var d=t(l[c],i);u.push(d)}e.morphAttributes[h]=u}e.morphTargetsRelative=this.morphTargetsRelative;for(var f=this.groups,g=0,y=f.length;g<y;g++){var m=f[g];e.addGroup(m.start,m.count,m.materialIndex)}return e}},{key:"toJSON",value:function(){var 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){var e=this.parameters;for(var i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};var r=this.index;null!==r&&(t.data.index={type:r.array.constructor.name,array:Array.prototype.slice.call(r.array)});var s=this.attributes;for(var n in s){var a=s[n];t.data.attributes[n]=a.toJSON(t.data)}var o={},h=!1;for(var u in this.morphAttributes){for(var l=this.morphAttributes[u],c=[],p=0,d=l.length;p<d;p++){var f=l[p];c.push(f.toJSON(t.data))}c.length>0&&(o[u]=c,h=!0)}h&&(t.data.morphAttributes=o,t.data.morphTargetsRelative=this.morphTargetsRelative);var g=this.groups;g.length>0&&(t.data.groups=JSON.parse(JSON.stringify(g)));var y=this.boundingSphere;return null!==y&&(t.data.boundingSphere={center:y.center.toArray(),radius:y.radius}),t}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;var e={};this.name=t.name;var i=t.index;null!==i&&this.setIndex(i.clone(e));var r=t.attributes;for(var s in r){var n=r[s];this.setAttribute(s,n.clone(e))}var a=t.morphAttributes;for(var o in a){for(var h=[],u=a[o],l=0,c=u.length;l<c;l++)h.push(u[l].clone(e));this.morphAttributes[o]=h}this.morphTargetsRelative=t.morphTargetsRelative;for(var p=t.groups,d=0,f=p.length;d<f;d++){var g=p[d];this.addGroup(g.start,g.count,g.materialIndex)}var y=t.boundingBox;null!==y&&(this.boundingBox=y.clone());var m=t.boundingSphere;return null!==m&&(this.boundingSphere=m.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}},{key:"dispose",value:function(){this.dispatchEvent({type:"dispose"})}}])}(B),kt=new h,xt=new h,St=new L,Mt=new J,wt=new E,At=new h,Bt=new h,Tt=function(t){function r(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new bt,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new st;return i(this,r),(t=a(this,r)).isLine=!0,t.type="Line",t.geometry=e,t.material=s,t.updateMorphTargets(),t}return n(r,t),e(r,[{key:"copy",value:function(t,e){return o(r,"copy",this,3)([t,e]),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}},{key:"computeLineDistances",value:function(){var t=this.geometry;if(null===t.index){for(var e=t.attributes.position,i=[0],r=1,s=e.count;r<s;r++)kt.fromBufferAttribute(e,r-1),xt.fromBufferAttribute(e,r),i[r]=i[r-1],i[r]+=kt.distanceTo(xt);t.setAttribute("lineDistance",new ct(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}},{key:"raycast",value:function(t,e){var i=this.geometry,r=this.matrixWorld,s=t.params.Line.threshold,n=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),wt.copy(i.boundingSphere),wt.applyMatrix4(r),wt.radius+=s,!1!==t.ray.intersectsSphere(wt)){St.copy(r).invert(),Mt.copy(t.ray).applyMatrix4(St);var a=s/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,h=this.isLineSegments?2:1,u=i.index,l=i.attributes.position;if(null!==u){for(var c=Math.max(0,n.start),p=Math.min(u.count,n.start+n.count),d=c,f=p-1;d<f;d+=h){var g=u.getX(d),y=u.getX(d+1),m=Ct(this,t,Mt,o,g,y,d);m&&e.push(m)}if(this.isLineLoop){var v=u.getX(p-1),b=u.getX(c),k=Ct(this,t,Mt,o,v,b,p-1);k&&e.push(k)}}else{for(var x=Math.max(0,n.start),S=Math.min(l.count,n.start+n.count),M=x,w=S-1;M<w;M+=h){var A=Ct(this,t,Mt,o,M,M+1,M);A&&e.push(A)}if(this.isLineLoop){var B=Ct(this,t,Mt,o,S-1,x,S-1);B&&e.push(B)}}}}},{key:"updateMorphTargets",value:function(){var t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){var i=t[e[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,s=i.length;r<s;r++){var n=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[n]=r}}}}}])}(I);function Ct(t,e,i,r,s,n,a){var o=t.geometry.attributes.position;if(kt.fromBufferAttribute(o,s),xt.fromBufferAttribute(o,n),!(i.distanceSqToSegment(kt,xt,At,Bt)>r)){At.applyMatrix4(t.matrixWorld);var h=e.ray.origin.distanceTo(At);if(!(h<e.near||h>e.far))return{distance:h,point:Bt.clone().applyMatrix4(t.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:t}}}var zt=new h,Rt=new h,Nt=function(t){function r(t,e){var s;return i(this,r),(s=a(this,r,[t,e])).isLineSegments=!0,s.type="LineSegments",s}return n(r,t),e(r,[{key:"computeLineDistances",value:function(){var t=this.geometry;if(null===t.index){for(var e=t.attributes.position,i=[],r=0,s=e.count;r<s;r+=2)zt.fromBufferAttribute(e,r),Rt.fromBufferAttribute(e,r+1),i[r]=0===r?0:i[r-1],i[r+1]=i[r]+zt.distanceTo(Rt);t.setAttribute("lineDistance",new ct(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}])}(Tt),Ot=new h;t("SpotLightHelper",function(t){function r(t,e){var s;i(this,r),(s=a(this,r)).light=t,s.matrixAutoUpdate=!1,s.color=e,s.type="SpotLightHelper";for(var n=new bt,o=[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],h=0,u=1;h<32;h++,u++){var l=h/32*Math.PI*2,c=u/32*Math.PI*2;o.push(Math.cos(l),Math.sin(l),1,Math.cos(c),Math.sin(c),1)}n.setAttribute("position",new ct(o,3));var p=new st({fog:!1,toneMapped:!1});return s.cone=new Nt(n,p),s.add(s.cone),s.update(),s}return n(r,t),e(r,[{key:"dispose",value:function(){this.cone.geometry.dispose(),this.cone.material.dispose()}},{key:"update",value:function(){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);var t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),Ot.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Ot),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}])}(I))}}}));
2
+ //# sourceMappingURL=SpotLightHelper-28698e83.legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpotLightHelper-28698e83.legacy.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","_createClass","origin","arguments","length","undefined","direction","_classCallCheck","this","key","value","copy","ray","t","target","addScaledVector","v","sub","normalize","at","point","subVectors","directionDistance","dot","Math","sqrt","distanceSqToPoint","distanceToSquared","v0","v1","optionalPointOnRay","optionalPointOnSegment","add","multiplyScalar","s0","s1","sqrDist","extDet","segExtent","distanceTo","a01","b0","b1","c","lengthSq","det","abs","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","_defineProperty","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","setHex","setStyle","setRGB","scalar","hex","floor","euclideanModulo","clamp","style","m","handleAlpha","string","parseFloat","console","warn","exec","name","components","parseInt","setHSL","size","charAt","setColorName","toLowerCase","copySRGBToLinear","copyLinearToSRGB","_color","round","getHex","toString","slice","hue","saturation","lightness","delta","concat","toFixed","getHSL","color1","color2","alpha","lerp","e","elements","array","offset","attribute","index","getX","getY","getZ","Symbol","iterator","_regeneratorRuntime","mark","wrap","_context","prev","next","stop","NAMES","_materialId","LineBasicMaterial","_Material","parameters","_this","_callSuper","isLineBasicMaterial","type","map","linewidth","linecap","linejoin","fog","setValues","_inherits","source","_superPropGet","_EventDispatcher","Material","isMaterial","defineProperty","uuid","generateUUID","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","get","onBeforeCompile","values","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","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","dashSize","gapSize","scale","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","flatShading","keys","srcPlanes","dstPlanes","n","Array","i","clone","JSON","parse","stringify","dispatchEvent","EventDispatcher","_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","_BufferAttribute5","Uint16Array","Uint32BufferAttribute","_BufferAttribute7","Uint32Array","Float32BufferAttribute","_BufferAttribute9","Float32Array","_m1","Matrix4","_obj","Object3D","_offset","_box","Box3","_boxMorphTargets","BufferGeometry","isBufferGeometry","indirect","attributes","morphAttributes","morphTargetsRelative","groups","boundingBox","boundingSphere","drawRange","arrayNeedsUint32","materialIndex","matrix","position","needsUpdate","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","group","handleTriangle","tmp","tmp2","n2","handleVertex","isFinite","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","_Object3D","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","_Line","exports","SpotLightHelper","light","matrixAutoUpdate","positions","p1","PI","p2","cos","sin","cone","update","dispose","updateWorldMatrix","parent","coneLength","coneWidth","setFromMatrixPosition"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ System.register(["./main-thread-to-worker-32b45184.legacy.js"],(function(e){var t,i,n,r,v,o;return{setters:[function(e){t=e._,i=e.e,n=e.cb,r=e.k,v=e.a0,o=e.cc}],execute:function(){e("T",function(e){function n(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(this,n);var s=i.font;if(void 0===s)t=v(this,n);else{var a=s.generateShapes(e,i.size);void 0===i.depth&&(i.depth=50),void 0===i.bevelThickness&&(i.bevelThickness=10),void 0===i.bevelSize&&(i.bevelSize=8),void 0===i.bevelEnabled&&(i.bevelEnabled=!1),t=v(this,n,[a,i])}return t.type="TextGeometry",o(t)}return t(n,e),i(n)}(n))}}}));
2
+ //# sourceMappingURL=TextGeometry-559f28ce.legacy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextGeometry-778d127b.legacy.js","sources":["../../../node_modules/three/examples/jsm/geometries/TextGeometry.js"],"sourcesContent":["/**\n * Text = 3D Text\n *\n * parameters = {\n * font: <THREE.Font>, // font\n *\n * size: <float>, // size of the text\n * depth: <float>, // thickness to extrude text\n * curveSegments: <int>, // number of points on the curves\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into text bevel goes\n * bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\nimport {\n\tExtrudeGeometry\n} from 'three';\n\nclass TextGeometry extends ExtrudeGeometry {\n\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( font === undefined ) {\n\n\t\t\tsuper(); // generate default extrude geometry\n\n\t\t} else {\n\n\t\t\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t\t\t// defaults\n\n\t\t\tif ( parameters.depth === undefined ) parameters.depth = 50;\n\t\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\t\tsuper( shapes, parameters );\n\n\t\t}\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\n\nexport { TextGeometry };\n"],"names":["exports","_ExtrudeGeometry","TextGeometry","text","_this","parameters","arguments","length","undefined","_classCallCheck","font","_callSuper","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type","_assertThisInitialized","_inherits","_createClass","ExtrudeGeometry"],"mappings":"oLAqBkBA,EAAA,aAAAC,GAEjB,SAAAC,EAAaC,GAAwB,IAAAC,EAAlBC,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAEG,OAAAP,GAEjC,IAAMQ,EAAOL,EAAWK,KAExB,QAAcF,IAATE,EAEJN,EAAAO,EAAAT,KAAAA,OAEM,CAEN,IAAMU,EAASF,EAAKG,eAAgBV,EAAME,EAAWS,WAI3BN,IAArBH,EAAWU,QAAsBV,EAAWU,MAAQ,SACtBP,IAA9BH,EAAWW,iBAA+BX,EAAWW,eAAiB,SAC7CR,IAAzBH,EAAWY,YAA0BZ,EAAWY,UAAY,QAChCT,IAA5BH,EAAWa,eAA6Bb,EAAWa,cAAe,GAEvEd,EAAAO,EAAAQ,KAAAjB,EAAOU,CAAAA,EAAQP,IAIW,OAA3BD,EAAKgB,KAAO,eAAeC,EAAAjB,GAE3B,OAAAkB,EAAApB,EAAAD,GAAAsB,EAAArB,IA3ByBsB"}
1
+ {"version":3,"file":"TextGeometry-559f28ce.legacy.js","sources":["../../../node_modules/three/examples/jsm/geometries/TextGeometry.js"],"sourcesContent":["/**\n * Text = 3D Text\n *\n * parameters = {\n * font: <THREE.Font>, // font\n *\n * size: <float>, // size of the text\n * depth: <float>, // thickness to extrude text\n * curveSegments: <int>, // number of points on the curves\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into text bevel goes\n * bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\nimport {\n\tExtrudeGeometry\n} from 'three';\n\nclass TextGeometry extends ExtrudeGeometry {\n\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( font === undefined ) {\n\n\t\t\tsuper(); // generate default extrude geometry\n\n\t\t} else {\n\n\t\t\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t\t\t// defaults\n\n\t\t\tif ( parameters.depth === undefined ) parameters.depth = 50;\n\t\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\t\tsuper( shapes, parameters );\n\n\t\t}\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\n\nexport { TextGeometry };\n"],"names":["exports","_ExtrudeGeometry","TextGeometry","text","_this","parameters","arguments","length","undefined","_classCallCheck","font","_callSuper","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type","_assertThisInitialized","_inherits","_createClass","ExtrudeGeometry"],"mappings":"oLAqBkBA,EAAA,aAAAC,GAEjB,SAAAC,EAAaC,GAAwB,IAAAC,EAAlBC,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAEG,OAAAP,GAEjC,IAAMQ,EAAOL,EAAWK,KAExB,QAAcF,IAATE,EAEJN,EAAAO,EAAAT,KAAAA,OAEM,CAEN,IAAMU,EAASF,EAAKG,eAAgBV,EAAME,EAAWS,WAI3BN,IAArBH,EAAWU,QAAsBV,EAAWU,MAAQ,SACtBP,IAA9BH,EAAWW,iBAA+BX,EAAWW,eAAiB,SAC7CR,IAAzBH,EAAWY,YAA0BZ,EAAWY,UAAY,QAChCT,IAA5BH,EAAWa,eAA6Bb,EAAWa,cAAe,GAEvEd,EAAAO,EAAAQ,KAAAjB,EAAOU,CAAAA,EAAQP,IAIW,OAA3BD,EAAKgB,KAAO,eAAeC,EAAAjB,GAE3B,OAAAkB,EAAApB,EAAAD,GAAAsB,EAAArB,IA3ByBsB"}
@@ -1,2 +1,2 @@
1
- System.register(["./roomle-dependency-injection-058aa06f.legacy.js","./main-thread-to-worker-da6ad96a.legacy.js"],(function(e){var n,a,t,s,i;return{setters:[function(e){n=e.a$,a=e._,t=e.i},function(e){s=e.g,i=e.a}],execute:function(){class c extends n{setScene(e){this._scene=e,this._staticItemLoader.loadGLB(s()+"static/banana-bbcc0e46fc0ee694.glb").then(e=>{this._banana=e.scene,this.updateBounds(null)})}updateBounds(e){if(e&&(this._bounds=e),this._bounds){if(this._banana){const e=this._bounds.getSize(new i),n=this._bounds.getCenter(new i).clone();n.x-=e.x/2+.18,n.z+=e.z/2+.05,n.y=0;let a=.1;this._banana.scale.copy(new i(a,a,a)),this._banana.rotation.y=.6,this._banana.position.copy(n)}this._scene.children.includes(this._banana)||this.addToScene()}}clearScene(e,n){super.clearScene(e,n),this.removeFromScene()}addToScene(){this._scene&&this._banana&&this._scene.add(this._banana)}removeFromScene(){this._scene&&this._banana&&this._scene.remove(this._banana)}}e("default",c),a([t],c.prototype,"_staticItemLoader",void 0)}}}));
2
- //# sourceMappingURL=banana-for-scale-b274801d.legacy.js.map
1
+ System.register(["./roomle-dependency-injection-39798155.legacy.js","./main-thread-to-worker-32b45184.legacy.js"],(function(e){var n,t,a,s,i;return{setters:[function(e){n=e.b5,t=e._,a=e.i},function(e){s=e.g,i=e.a}],execute:function(){class c extends n{setScene(e){this._scene=e,this._staticItemLoader.loadGLB(s()+"static/banana-bbcc0e46fc0ee694.glb").then(e=>{this._banana=e.scene,this.updateBounds(null)})}updateBounds(e){if(e&&(this._bounds=e),this._bounds){if(this._banana){const e=this._bounds.getSize(new i),n=this._bounds.getCenter(new i).clone();n.x-=e.x/2+.18,n.z+=e.z/2+.05,n.y=0;let t=.1;this._banana.scale.copy(new i(t,t,t)),this._banana.rotation.y=.6,this._banana.position.copy(n)}this._scene.children.includes(this._banana)||this.addToScene()}}clearScene(e,n){super.clearScene(e,n),this.removeFromScene()}addToScene(){this._scene&&this._banana&&this._scene.add(this._banana)}removeFromScene(){this._scene&&this._banana&&this._scene.remove(this._banana)}}e("default",c),t([a],c.prototype,"_staticItemLoader",void 0)}}}));
2
+ //# sourceMappingURL=banana-for-scale-8a3d4091.legacy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banana-for-scale-b274801d.legacy.js","sources":["../../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"yTAAe"}
1
+ {"version":3,"file":"banana-for-scale-8a3d4091.legacy.js","sources":["../../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"yTAAe"}