@roomle/web-sdk 2.103.0-alpha.4 → 2.103.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/lib/{TextGeometry-a4cc5df3.nomodule.js → TextGeometry-05d9b32c.nomodule.js} +2 -2
  2. package/lib/{TextGeometry-a4cc5df3.nomodule.js.map → TextGeometry-05d9b32c.nomodule.js.map} +1 -1
  3. package/lib/{TextGeometry-086a9652.js → TextGeometry-35cc09bc.js} +2 -2
  4. package/lib/{TextGeometry-086a9652.js.map → TextGeometry-35cc09bc.js.map} +1 -1
  5. package/lib/{banana-for-scale-04e05566.nomodule.js → banana-for-scale-83e88e09.nomodule.js} +2 -2
  6. package/lib/{banana-for-scale-04e05566.nomodule.js.map → banana-for-scale-83e88e09.nomodule.js.map} +1 -1
  7. package/lib/{banana-for-scale-8a30a41f.js → banana-for-scale-d5a10b03.js} +2 -2
  8. package/lib/{banana-for-scale-8a30a41f.js.map → banana-for-scale-d5a10b03.js.map} +1 -1
  9. package/lib/{budgeteer-measure-99563441.js → budgeteer-measure-20f928bc.js} +2 -2
  10. package/lib/{budgeteer-measure-99563441.js.map → budgeteer-measure-20f928bc.js.map} +1 -1
  11. package/lib/budgeteer-measure.nomodule.js +1 -1
  12. package/lib/{camera-behaviour-441440ad.js → camera-behaviour-00d42274.js} +2 -2
  13. package/lib/{camera-behaviour-441440ad.js.map → camera-behaviour-00d42274.js.map} +1 -1
  14. package/lib/{camera-behaviour-4428afc0.nomodule.js → camera-behaviour-a40d4a32.nomodule.js} +2 -2
  15. package/lib/{camera-behaviour-4428afc0.nomodule.js.map → camera-behaviour-a40d4a32.nomodule.js.map} +1 -1
  16. package/lib/{component-dimensioning-3ca8bd25.nomodule.js → component-dimensioning-9c2129a9.nomodule.js} +2 -2
  17. package/lib/component-dimensioning-9c2129a9.nomodule.js.map +1 -0
  18. package/lib/{component-dimensioning-5cc7957b.js → component-dimensioning-ebfde7a0.js} +2 -2
  19. package/lib/component-dimensioning-ebfde7a0.js.map +1 -0
  20. package/lib/{component-raycast-helper-8ef66bdb.nomodule.js → component-raycast-helper-9593e66f.nomodule.js} +2 -2
  21. package/lib/component-raycast-helper-9593e66f.nomodule.js.map +1 -0
  22. package/lib/{component-raycast-helper-0d329b22.js → component-raycast-helper-d75ece44.js} +2 -2
  23. package/lib/component-raycast-helper-d75ece44.js.map +1 -0
  24. package/lib/{configurator-a4097617.js → configurator-0839ce62.js} +2 -2
  25. package/lib/configurator-0839ce62.js.map +1 -0
  26. package/lib/{configurator-56372693.nomodule.js → configurator-89472388.nomodule.js} +2 -2
  27. package/lib/configurator-89472388.nomodule.js.map +1 -0
  28. package/lib/configurator-main-cdc71ec4.js +2 -0
  29. package/lib/configurator-main-cdc71ec4.js.map +1 -0
  30. package/lib/configurator-main.nomodule.js +1 -1
  31. package/lib/{continuous-drawing-helper-8c01593d.nomodule.js → continuous-drawing-helper-4fa3665f.nomodule.js} +2 -2
  32. package/lib/continuous-drawing-helper-4fa3665f.nomodule.js.map +1 -0
  33. package/lib/{continuous-drawing-helper-c17f39be.js → continuous-drawing-helper-692f596b.js} +2 -2
  34. package/lib/continuous-drawing-helper-692f596b.js.map +1 -0
  35. package/lib/{default-light-setting-4983b1cf.js → default-light-setting-0432345a.js} +2 -2
  36. package/lib/default-light-setting-0432345a.js.map +1 -0
  37. package/lib/{default-light-setting-73eeaef3.nomodule.js → default-light-setting-13f4fc0f.nomodule.js} +2 -2
  38. package/lib/default-light-setting-13f4fc0f.nomodule.js.map +1 -0
  39. package/lib/definitions/common-core/src/utils/clipboard-manager.d.ts +40 -0
  40. package/lib/definitions/common-core/src/utils/common-utils.d.ts +1 -0
  41. package/lib/definitions/packages/common-core/src/utils/clipboard-manager.d.ts +40 -0
  42. package/lib/definitions/packages/common-core/src/utils/common-utils.d.ts +1 -0
  43. package/lib/definitions/packages/planner-core/src/roomle-planner.d.ts +8 -0
  44. package/lib/definitions/packages/planner-core/src/webgl/planner-scene-manager.d.ts +5 -2
  45. package/lib/definitions/planner-core/src/roomle-planner.d.ts +8 -0
  46. package/lib/definitions/planner-core/src/webgl/planner-scene-manager.d.ts +5 -2
  47. package/lib/{dimensioning-helper-c9eeb58c.js → dimensioning-helper-3f472a62.js} +2 -2
  48. package/lib/{dimensioning-helper-c9eeb58c.js.map → dimensioning-helper-3f472a62.js.map} +1 -1
  49. package/lib/{dimensioning-helper-a0ed4a8d.nomodule.js → dimensioning-helper-a612db43.nomodule.js} +2 -2
  50. package/lib/{dimensioning-helper-a0ed4a8d.nomodule.js.map → dimensioning-helper-a612db43.nomodule.js.map} +1 -1
  51. package/lib/{external-objects-bf17eb19.js → external-objects-17074bf3.js} +2 -2
  52. package/lib/external-objects-17074bf3.js.map +1 -0
  53. package/lib/{external-objects-5b70c3f6.nomodule.js → external-objects-925fd215.nomodule.js} +2 -2
  54. package/lib/external-objects-925fd215.nomodule.js.map +1 -0
  55. package/lib/{glb-viewer-6b74b7a9.js → glb-viewer-8f17219b.js} +2 -2
  56. package/lib/{glb-viewer-6b74b7a9.js.map → glb-viewer-8f17219b.js.map} +1 -1
  57. package/lib/{glb-viewer-camera-behaviour-9096c432.js → glb-viewer-camera-behaviour-1739e163.js} +2 -2
  58. package/lib/glb-viewer-camera-behaviour-1739e163.js.map +1 -0
  59. package/lib/{glb-viewer-camera-behaviour-579cffd0.nomodule.js → glb-viewer-camera-behaviour-e9129a9f.nomodule.js} +2 -2
  60. package/lib/glb-viewer-camera-behaviour-e9129a9f.nomodule.js.map +1 -0
  61. package/lib/{glb-viewer-1570efe0.nomodule.js → glb-viewer-e02812f6.nomodule.js} +2 -2
  62. package/lib/{glb-viewer-1570efe0.nomodule.js.map → glb-viewer-e02812f6.nomodule.js.map} +1 -1
  63. package/lib/glb-viewer-main-431d41aa.js +2 -0
  64. package/lib/glb-viewer-main-431d41aa.js.map +1 -0
  65. package/lib/glb-viewer-main.nomodule.js +1 -1
  66. package/lib/{imos-ix-poc-export-helper-50807d59.js → imos-ix-poc-export-helper-5ef6cb43.js} +2 -2
  67. package/lib/imos-ix-poc-export-helper-5ef6cb43.js.map +1 -0
  68. package/lib/{imos-ix-poc-export-helper-b319c2be.nomodule.js → imos-ix-poc-export-helper-829d3167.nomodule.js} +2 -2
  69. package/lib/imos-ix-poc-export-helper-829d3167.nomodule.js.map +1 -0
  70. package/lib/legacy/{Object3D-1f141c55.legacy.js → Object3D-75e1e628.legacy.js} +2 -2
  71. package/lib/legacy/{Object3D-1f141c55.legacy.js.map → Object3D-75e1e628.legacy.js.map} +1 -1
  72. package/lib/legacy/{SpotLightHelper-28698e83.legacy.js → SpotLightHelper-28e7faac.legacy.js} +2 -2
  73. package/lib/legacy/{SpotLightHelper-28698e83.legacy.js.map → SpotLightHelper-28e7faac.legacy.js.map} +1 -1
  74. package/lib/legacy/{TextGeometry-559f28ce.legacy.js → TextGeometry-207abd3d.legacy.js} +2 -2
  75. package/lib/legacy/{TextGeometry-559f28ce.legacy.js.map → TextGeometry-207abd3d.legacy.js.map} +1 -1
  76. package/lib/legacy/{banana-for-scale-294ebc3c.legacy.js → banana-for-scale-98f408ad.legacy.js} +2 -2
  77. package/lib/legacy/{banana-for-scale-294ebc3c.legacy.js.map → banana-for-scale-98f408ad.legacy.js.map} +1 -1
  78. package/lib/legacy/budgeteer-measure.legacy.js +1 -1
  79. package/lib/legacy/{camera-behaviour-a570b504.legacy.js → camera-behaviour-cbf198b0.legacy.js} +2 -2
  80. package/lib/legacy/{camera-behaviour-a570b504.legacy.js.map → camera-behaviour-cbf198b0.legacy.js.map} +1 -1
  81. package/lib/legacy/{component-dimensioning-b33df41e.legacy.js → component-dimensioning-3a3fe8b3.legacy.js} +2 -2
  82. package/lib/legacy/component-dimensioning-3a3fe8b3.legacy.js.map +1 -0
  83. package/lib/legacy/{component-raycast-helper-34787e08.legacy.js → component-raycast-helper-bed3ba5b.legacy.js} +2 -2
  84. package/lib/legacy/component-raycast-helper-bed3ba5b.legacy.js.map +1 -0
  85. package/lib/legacy/{configurator-ec400bc6.legacy.js → configurator-de9f67e0.legacy.js} +2 -2
  86. package/lib/legacy/configurator-de9f67e0.legacy.js.map +1 -0
  87. package/lib/legacy/configurator-main.legacy.js +1 -1
  88. package/lib/legacy/{continuous-drawing-helper-5cc0ec68.legacy.js → continuous-drawing-helper-bb28a620.legacy.js} +2 -2
  89. package/lib/legacy/continuous-drawing-helper-bb28a620.legacy.js.map +1 -0
  90. package/lib/legacy/{default-light-setting-fe41d36f.legacy.js → default-light-setting-ca7e01d1.legacy.js} +2 -2
  91. package/lib/legacy/default-light-setting-ca7e01d1.legacy.js.map +1 -0
  92. package/lib/legacy/{dimensioning-helper-27288411.legacy.js → dimensioning-helper-2f5cfb38.legacy.js} +2 -2
  93. package/lib/legacy/{dimensioning-helper-27288411.legacy.js.map → dimensioning-helper-2f5cfb38.legacy.js.map} +1 -1
  94. package/lib/legacy/external-objects-f737274d.legacy.js +2 -0
  95. package/lib/legacy/external-objects-f737274d.legacy.js.map +1 -0
  96. package/lib/legacy/{glb-viewer-d44cd71c.legacy.js → glb-viewer-2e4d478a.legacy.js} +2 -2
  97. package/lib/legacy/{glb-viewer-d44cd71c.legacy.js.map → glb-viewer-2e4d478a.legacy.js.map} +1 -1
  98. package/lib/legacy/{glb-viewer-camera-behaviour-e07fb14c.legacy.js → glb-viewer-camera-behaviour-3bcbd03f.legacy.js} +2 -2
  99. package/lib/legacy/glb-viewer-camera-behaviour-3bcbd03f.legacy.js.map +1 -0
  100. package/lib/legacy/glb-viewer-main.legacy.js +1 -1
  101. package/lib/legacy/{imos-ix-poc-export-helper-b772a8da.legacy.js → imos-ix-poc-export-helper-f930e10d.legacy.js} +2 -2
  102. package/lib/legacy/imos-ix-poc-export-helper-f930e10d.legacy.js.map +1 -0
  103. package/lib/legacy/{main-thread-to-worker-32b45184.legacy.js → main-thread-to-worker-aeb15e90.legacy.js} +3 -3
  104. package/lib/legacy/{main-thread-to-worker-32b45184.legacy.js.map → main-thread-to-worker-aeb15e90.legacy.js.map} +1 -1
  105. package/lib/legacy/{material-viewer-cb079ae6.legacy.js → material-viewer-039eb21c.legacy.js} +2 -2
  106. package/lib/legacy/material-viewer-039eb21c.legacy.js.map +1 -0
  107. package/lib/legacy/material-viewer-main.legacy.js +1 -1
  108. package/lib/legacy/planner-47f326f8.legacy.js +2 -0
  109. package/lib/legacy/{planner-ad708926.legacy.js.map → planner-47f326f8.legacy.js.map} +1 -1
  110. package/lib/legacy/planner-main.legacy.js +1 -1
  111. package/lib/legacy/query-params-helper-e441981e.legacy.js +2 -0
  112. package/lib/legacy/query-params-helper-e441981e.legacy.js.map +1 -0
  113. package/lib/legacy/{roomle-configurator-17c87810.legacy.js → roomle-configurator-683245b9.legacy.js} +2 -2
  114. package/lib/legacy/{roomle-configurator-17c87810.legacy.js.map → roomle-configurator-683245b9.legacy.js.map} +1 -1
  115. package/lib/legacy/{roomle-dependency-injection-d9e2d42d.legacy.js → roomle-dependency-injection-c5a3e547.legacy.js} +3 -3
  116. package/lib/legacy/{roomle-dependency-injection-d9e2d42d.legacy.js.map → roomle-dependency-injection-c5a3e547.legacy.js.map} +1 -1
  117. package/lib/legacy/roomle-sdk.legacy.js +1 -1
  118. package/lib/legacy/{script-loader-c684ebc2.legacy.js → script-loader-0cce949b.legacy.js} +2 -2
  119. package/lib/legacy/script-loader-0cce949b.legacy.js.map +1 -0
  120. package/lib/legacy/{stats-helper-8804fe48.legacy.js → stats-helper-c6d7f4c8.legacy.js} +2 -2
  121. package/lib/legacy/stats-helper-c6d7f4c8.legacy.js.map +1 -0
  122. package/lib/legacy/tools-core-34aa726d.legacy.js +2 -0
  123. package/lib/legacy/tools-core-34aa726d.legacy.js.map +1 -0
  124. package/lib/{main-thread-to-worker-ff3b0e7b.nomodule.js → main-thread-to-worker-707405ab.nomodule.js} +3 -3
  125. package/lib/{main-thread-to-worker-ff3b0e7b.nomodule.js.map → main-thread-to-worker-707405ab.nomodule.js.map} +1 -1
  126. package/lib/{main-thread-to-worker-4e303a39.js → main-thread-to-worker-7f1066e7.js} +2 -2
  127. package/lib/{main-thread-to-worker-4e303a39.js.map → main-thread-to-worker-7f1066e7.js.map} +1 -1
  128. package/lib/{material-viewer-4600c103.nomodule.js → material-viewer-1b8fda76.nomodule.js} +2 -2
  129. package/lib/material-viewer-1b8fda76.nomodule.js.map +1 -0
  130. package/lib/{material-viewer-4b738670.js → material-viewer-fcaf29c8.js} +2 -2
  131. package/lib/material-viewer-fcaf29c8.js.map +1 -0
  132. package/lib/material-viewer-main-c780a01f.js +2 -0
  133. package/lib/material-viewer-main-c780a01f.js.map +1 -0
  134. package/lib/material-viewer-main.nomodule.js +1 -1
  135. package/lib/planner-634124c2.js +2 -0
  136. package/lib/{planner-70129bc4.js.map → planner-634124c2.js.map} +1 -1
  137. package/lib/planner-ed231e1d.nomodule.js +2 -0
  138. package/lib/{planner-e47f1c07.nomodule.js.map → planner-ed231e1d.nomodule.js.map} +1 -1
  139. package/lib/planner-main-df796398.js +2 -0
  140. package/lib/planner-main-df796398.js.map +1 -0
  141. package/lib/planner-main.nomodule.js +1 -1
  142. package/lib/{query-params-helper-8731c6a6.nomodule.js → query-params-helper-0afbebc7.nomodule.js} +2 -2
  143. package/lib/query-params-helper-0afbebc7.nomodule.js.map +1 -0
  144. package/lib/{query-params-helper-7890ce69.js → query-params-helper-37c38de6.js} +2 -2
  145. package/lib/query-params-helper-37c38de6.js.map +1 -0
  146. package/lib/{roomle-configurator-ed1d3a9d.js → roomle-configurator-7f0ced3f.js} +2 -2
  147. package/lib/{roomle-configurator-ed1d3a9d.js.map → roomle-configurator-7f0ced3f.js.map} +1 -1
  148. package/lib/{roomle-configurator-60b83429.nomodule.js → roomle-configurator-7f31be96.nomodule.js} +2 -2
  149. package/lib/{roomle-configurator-60b83429.nomodule.js.map → roomle-configurator-7f31be96.nomodule.js.map} +1 -1
  150. package/lib/{roomle-dependency-injection-0a596693.nomodule.js → roomle-dependency-injection-8327332a.nomodule.js} +2 -2
  151. package/lib/{roomle-dependency-injection-0a596693.nomodule.js.map → roomle-dependency-injection-8327332a.nomodule.js.map} +1 -1
  152. package/lib/{roomle-dependency-injection-f2eff3aa.js → roomle-dependency-injection-96d52877.js} +2 -2
  153. package/lib/{roomle-dependency-injection-f2eff3aa.js.map → roomle-dependency-injection-96d52877.js.map} +1 -1
  154. package/lib/{roomle-sdk-6ffd1e90.js → roomle-sdk-df64553c.js} +2 -2
  155. package/lib/roomle-sdk-df64553c.js.map +1 -0
  156. package/lib/roomle-sdk.nomodule.js +1 -1
  157. package/lib/{script-loader-67051e2d.nomodule.js → script-loader-799a326f.nomodule.js} +2 -2
  158. package/lib/script-loader-799a326f.nomodule.js.map +1 -0
  159. package/lib/{script-loader-9a814bc6.js → script-loader-80b3f29a.js} +2 -2
  160. package/lib/script-loader-80b3f29a.js.map +1 -0
  161. package/lib/{stats-helper-d85c9a58.nomodule.js → stats-helper-34bf125b.nomodule.js} +2 -2
  162. package/lib/stats-helper-34bf125b.nomodule.js.map +1 -0
  163. package/lib/{stats-helper-535b71de.js → stats-helper-b816dec9.js} +2 -2
  164. package/lib/stats-helper-b816dec9.js.map +1 -0
  165. package/lib/{tools-core-53acb53f.js → tools-core-038fc495.js} +2 -2
  166. package/lib/tools-core-038fc495.js.map +1 -0
  167. package/lib/{tools-core-909024de.nomodule.js → tools-core-9694ba7b.nomodule.js} +2 -2
  168. package/lib/tools-core-9694ba7b.nomodule.js.map +1 -0
  169. package/package.json +2 -2
  170. package/lib/component-dimensioning-3ca8bd25.nomodule.js.map +0 -1
  171. package/lib/component-dimensioning-5cc7957b.js.map +0 -1
  172. package/lib/component-raycast-helper-0d329b22.js.map +0 -1
  173. package/lib/component-raycast-helper-8ef66bdb.nomodule.js.map +0 -1
  174. package/lib/configurator-56372693.nomodule.js.map +0 -1
  175. package/lib/configurator-a4097617.js.map +0 -1
  176. package/lib/configurator-main-c9bb655e.js +0 -2
  177. package/lib/configurator-main-c9bb655e.js.map +0 -1
  178. package/lib/continuous-drawing-helper-8c01593d.nomodule.js.map +0 -1
  179. package/lib/continuous-drawing-helper-c17f39be.js.map +0 -1
  180. package/lib/default-light-setting-4983b1cf.js.map +0 -1
  181. package/lib/default-light-setting-73eeaef3.nomodule.js.map +0 -1
  182. package/lib/external-objects-5b70c3f6.nomodule.js.map +0 -1
  183. package/lib/external-objects-bf17eb19.js.map +0 -1
  184. package/lib/glb-viewer-camera-behaviour-579cffd0.nomodule.js.map +0 -1
  185. package/lib/glb-viewer-camera-behaviour-9096c432.js.map +0 -1
  186. package/lib/glb-viewer-main-acc399ef.js +0 -2
  187. package/lib/glb-viewer-main-acc399ef.js.map +0 -1
  188. package/lib/imos-ix-poc-export-helper-50807d59.js.map +0 -1
  189. package/lib/imos-ix-poc-export-helper-b319c2be.nomodule.js.map +0 -1
  190. package/lib/legacy/component-dimensioning-b33df41e.legacy.js.map +0 -1
  191. package/lib/legacy/component-raycast-helper-34787e08.legacy.js.map +0 -1
  192. package/lib/legacy/configurator-ec400bc6.legacy.js.map +0 -1
  193. package/lib/legacy/continuous-drawing-helper-5cc0ec68.legacy.js.map +0 -1
  194. package/lib/legacy/default-light-setting-fe41d36f.legacy.js.map +0 -1
  195. package/lib/legacy/external-objects-01d5a216.legacy.js +0 -2
  196. package/lib/legacy/external-objects-01d5a216.legacy.js.map +0 -1
  197. package/lib/legacy/glb-viewer-camera-behaviour-e07fb14c.legacy.js.map +0 -1
  198. package/lib/legacy/imos-ix-poc-export-helper-b772a8da.legacy.js.map +0 -1
  199. package/lib/legacy/material-viewer-cb079ae6.legacy.js.map +0 -1
  200. package/lib/legacy/planner-ad708926.legacy.js +0 -2
  201. package/lib/legacy/query-params-helper-ad6b6b64.legacy.js +0 -2
  202. package/lib/legacy/query-params-helper-ad6b6b64.legacy.js.map +0 -1
  203. package/lib/legacy/script-loader-c684ebc2.legacy.js.map +0 -1
  204. package/lib/legacy/stats-helper-8804fe48.legacy.js.map +0 -1
  205. package/lib/legacy/tools-core-57afb1e2.legacy.js +0 -2
  206. package/lib/legacy/tools-core-57afb1e2.legacy.js.map +0 -1
  207. package/lib/material-viewer-4600c103.nomodule.js.map +0 -1
  208. package/lib/material-viewer-4b738670.js.map +0 -1
  209. package/lib/material-viewer-main-228dae04.js +0 -2
  210. package/lib/material-viewer-main-228dae04.js.map +0 -1
  211. package/lib/planner-70129bc4.js +0 -2
  212. package/lib/planner-e47f1c07.nomodule.js +0 -2
  213. package/lib/planner-main-11467f43.js +0 -2
  214. package/lib/planner-main-11467f43.js.map +0 -1
  215. package/lib/query-params-helper-7890ce69.js.map +0 -1
  216. package/lib/query-params-helper-8731c6a6.nomodule.js.map +0 -1
  217. package/lib/roomle-sdk-6ffd1e90.js.map +0 -1
  218. package/lib/script-loader-67051e2d.nomodule.js.map +0 -1
  219. package/lib/script-loader-9a814bc6.js.map +0 -1
  220. package/lib/stats-helper-535b71de.js.map +0 -1
  221. package/lib/stats-helper-d85c9a58.nomodule.js.map +0 -1
  222. package/lib/tools-core-53acb53f.js.map +0 -1
  223. package/lib/tools-core-909024de.nomodule.js.map +0 -1
@@ -1,2 +1,2 @@
1
- System.register(["./main-thread-to-worker-ff3b0e7b.nomodule.js"],(function(e){var t;return{setters:[function(e){t=e.c1}],execute:function(){e("T",class extends t{constructor(e,t={}){const s=t.font;if(void 0===s)super();else{const n=s.generateShapes(e,t.size);void 0===t.depth&&(t.depth=50),void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(n,t)}this.type="TextGeometry"}})}}}));
2
- //# sourceMappingURL=TextGeometry-a4cc5df3.nomodule.js.map
1
+ System.register(["./main-thread-to-worker-707405ab.nomodule.js"],(function(e){var t;return{setters:[function(e){t=e.c2}],execute:function(){e("T",class extends t{constructor(e,t={}){const s=t.font;if(void 0===s)super();else{const n=s.generateShapes(e,t.size);void 0===t.depth&&(t.depth=50),void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(n,t)}this.type="TextGeometry"}})}}}));
2
+ //# sourceMappingURL=TextGeometry-05d9b32c.nomodule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextGeometry-a4cc5df3.nomodule.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","[object Object]","text","parameters","font","undefined","super","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type"],"mappings":"4IAkDAA,EAAA,IA7BA,cAA2BC,EAE1BC,YAAaC,EAAMC,EAAa,IAE/B,MAAMC,EAAOD,EAAWC,KAExB,QAAcC,IAATD,EAEJE,YAEM,CAEN,MAAMC,EAASH,EAAKI,eAAgBN,EAAMC,EAAWM,WAI3BJ,IAArBF,EAAWO,QAAsBP,EAAWO,MAAQ,SACtBL,IAA9BF,EAAWQ,iBAA+BR,EAAWQ,eAAiB,SAC7CN,IAAzBF,EAAWS,YAA0BT,EAAWS,UAAY,QAChCP,IAA5BF,EAAWU,eAA6BV,EAAWU,cAAe,GAEvEP,MAAOC,EAAQJ,GAIhBW,KAAKC,KAAO"}
1
+ {"version":3,"file":"TextGeometry-05d9b32c.nomodule.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","[object Object]","text","parameters","font","undefined","super","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type"],"mappings":"4IAkDAA,EAAA,IA7BA,cAA2BC,EAE1BC,YAAaC,EAAMC,EAAa,IAE/B,MAAMC,EAAOD,EAAWC,KAExB,QAAcC,IAATD,EAEJE,YAEM,CAEN,MAAMC,EAASH,EAAKI,eAAgBN,EAAMC,EAAWM,WAI3BJ,IAArBF,EAAWO,QAAsBP,EAAWO,MAAQ,SACtBL,IAA9BF,EAAWQ,iBAA+BR,EAAWQ,eAAiB,SAC7CN,IAAzBF,EAAWS,YAA0BT,EAAWS,UAAY,QAChCP,IAA5BF,EAAWU,eAA6BV,EAAWU,cAAe,GAEvEP,MAAOC,EAAQJ,GAIhBW,KAAKC,KAAO"}
@@ -1,2 +1,2 @@
1
- import{c1 as ExtrudeGeometry}from"./main-thread-to-worker-4e303a39.js";class TextGeometry extends ExtrudeGeometry{constructor(e,t={}){const o=t.font;if(void 0===o)super();else{const s=o.generateShapes(e,t.size);void 0===t.depth&&(t.depth=50),void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(s,t)}this.type="TextGeometry"}}export{TextGeometry as T};
2
- //# sourceMappingURL=TextGeometry-086a9652.js.map
1
+ import{c2 as ExtrudeGeometry}from"./main-thread-to-worker-7f1066e7.js";class TextGeometry extends ExtrudeGeometry{constructor(e,t={}){const o=t.font;if(void 0===o)super();else{const s=o.generateShapes(e,t.size);void 0===t.depth&&(t.depth=50),void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(s,t)}this.type="TextGeometry"}}export{TextGeometry as T};
2
+ //# sourceMappingURL=TextGeometry-35cc09bc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextGeometry-086a9652.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":["TextGeometry","ExtrudeGeometry","[object Object]","text","parameters","font","undefined","super","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type"],"mappings":"uEAqBA,MAAMA,qBAAqBC,gBAE1BC,YAAaC,EAAMC,EAAa,IAE/B,MAAMC,EAAOD,EAAWC,KAExB,QAAcC,IAATD,EAEJE,YAEM,CAEN,MAAMC,EAASH,EAAKI,eAAgBN,EAAMC,EAAWM,WAI3BJ,IAArBF,EAAWO,QAAsBP,EAAWO,MAAQ,SACtBL,IAA9BF,EAAWQ,iBAA+BR,EAAWQ,eAAiB,SAC7CN,IAAzBF,EAAWS,YAA0BT,EAAWS,UAAY,QAChCP,IAA5BF,EAAWU,eAA6BV,EAAWU,cAAe,GAEvEP,MAAOC,EAAQJ,GAIhBW,KAAKC,KAAO"}
1
+ {"version":3,"file":"TextGeometry-35cc09bc.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":["TextGeometry","ExtrudeGeometry","[object Object]","text","parameters","font","undefined","super","shapes","generateShapes","size","depth","bevelThickness","bevelSize","bevelEnabled","this","type"],"mappings":"uEAqBA,MAAMA,qBAAqBC,gBAE1BC,YAAaC,EAAMC,EAAa,IAE/B,MAAMC,EAAOD,EAAWC,KAExB,QAAcC,IAATD,EAEJE,YAEM,CAEN,MAAMC,EAASH,EAAKI,eAAgBN,EAAMC,EAAWM,WAI3BJ,IAArBF,EAAWO,QAAsBP,EAAWO,MAAQ,SACtBL,IAA9BF,EAAWQ,iBAA+BR,EAAWQ,eAAiB,SAC7CN,IAAzBF,EAAWS,YAA0BT,EAAWS,UAAY,QAChCP,IAA5BF,EAAWU,eAA6BV,EAAWU,cAAe,GAEvEP,MAAOC,EAAQJ,GAIhBW,KAAKC,KAAO"}
@@ -1,2 +1,2 @@
1
- System.register(["./roomle-dependency-injection-0a596693.nomodule.js","./main-thread-to-worker-ff3b0e7b.nomodule.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 o 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",o),t([a],o.prototype,"_staticItemLoader",void 0)}}}));
2
- //# sourceMappingURL=banana-for-scale-04e05566.nomodule.js.map
1
+ System.register(["./roomle-dependency-injection-8327332a.nomodule.js","./main-thread-to-worker-707405ab.nomodule.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 o 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",o),t([a],o.prototype,"_staticItemLoader",void 0)}}}));
2
+ //# sourceMappingURL=banana-for-scale-83e88e09.nomodule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banana-for-scale-04e05566.nomodule.js","sources":["../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"6TAAe"}
1
+ {"version":3,"file":"banana-for-scale-83e88e09.nomodule.js","sources":["../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"6TAAe"}
@@ -1,2 +1,2 @@
1
- import{b5 as ScenePluginDefaultImplementation,_ as __decorate,i as inject}from"./roomle-dependency-injection-f2eff3aa.js";import{g as getAssetPath,a as Vector3}from"./main-thread-to-worker-4e303a39.js";class BananaForScale extends ScenePluginDefaultImplementation{setScene(e){this._scene=e,this._staticItemLoader.loadGLB(getAssetPath()+"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 Vector3),a=this._bounds.getCenter(new Vector3).clone();a.x-=e.x/2+.18,a.z+=e.z/2+.05,a.y=0;let n=.1;this._banana.scale.copy(new Vector3(n,n,n)),this._banana.rotation.y=.6,this._banana.position.copy(a)}this._scene.children.includes(this._banana)||this.addToScene()}}clearScene(e,a){super.clearScene(e,a),this.removeFromScene()}addToScene(){this._scene&&this._banana&&this._scene.add(this._banana)}removeFromScene(){this._scene&&this._banana&&this._scene.remove(this._banana)}}__decorate([inject],BananaForScale.prototype,"_staticItemLoader",void 0);export{BananaForScale as default};
2
- //# sourceMappingURL=banana-for-scale-8a30a41f.js.map
1
+ import{b5 as ScenePluginDefaultImplementation,_ as __decorate,i as inject}from"./roomle-dependency-injection-96d52877.js";import{g as getAssetPath,a as Vector3}from"./main-thread-to-worker-7f1066e7.js";class BananaForScale extends ScenePluginDefaultImplementation{setScene(e){this._scene=e,this._staticItemLoader.loadGLB(getAssetPath()+"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 Vector3),a=this._bounds.getCenter(new Vector3).clone();a.x-=e.x/2+.18,a.z+=e.z/2+.05,a.y=0;let n=.1;this._banana.scale.copy(new Vector3(n,n,n)),this._banana.rotation.y=.6,this._banana.position.copy(a)}this._scene.children.includes(this._banana)||this.addToScene()}}clearScene(e,a){super.clearScene(e,a),this.removeFromScene()}addToScene(){this._scene&&this._banana&&this._scene.add(this._banana)}removeFromScene(){this._scene&&this._banana&&this._scene.remove(this._banana)}}__decorate([inject],BananaForScale.prototype,"_staticItemLoader",void 0);export{BananaForScale as default};
2
+ //# sourceMappingURL=banana-for-scale-d5a10b03.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banana-for-scale-8a30a41f.js","sources":["../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"gVAAe"}
1
+ {"version":3,"file":"banana-for-scale-d5a10b03.js","sources":["../../packages/configurator-core/public/geometry/banana.glb"],"sourcesContent":["export default \"static/banana-bbcc0e46fc0ee694.glb\""],"names":[],"mappings":"gVAAe"}
@@ -1,2 +1,2 @@
1
- import{M as MainThreadToWorker,g as getAssetPath}from"./main-thread-to-worker-4e303a39.js";import{g as getAllParameters}from"./query-params-helper-7890ce69.js";new class{_addIframe(){const e="website-to-measure";if(document.getElementById(e))return void console.error("Iframe already added! Check how this can happen");const r=getAllParameters();if(!r.checkUrl)return void console.error("CAN NOT MEASURE WITHOUT A URL, add checkUrl queryParam. To encode call BudgeteerMeasure.encodeUrl(url: string)");let t=this.decodeUrl(r.checkUrl);const o=window.location.origin;if(!t.startsWith(o))return void console.error("CAN ONLY MEASURE SAME ORIGIN PLEASE CHECK",{origin:o,src:t});const a=getAllParameters(t),i=Object.keys(a).length?"&":"?";a._measureTraffic||(t+=i+"_measureTraffic=true");const s=document.createElement("iframe");s.id=e,s.src=t,document.body.appendChild(s)}_isAlreadyActive(){return navigator.serviceWorker.controller&&-1!==navigator.serviceWorker.controller.scriptURL.indexOf("budgeteer.sw")&&"activated"===navigator.serviceWorker.controller.state}_handleActiveSw(){this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller),this._addIframe(),this._alreadyAdded=!0}constructor(){this._inLimbo=!1,this._alreadyAdded=!1,window.addEventListener("beforeunload",()=>this._inLimbo=!0),this._mainThreadToWorker=new MainThreadToWorker(this,navigator.serviceWorker),this._isAlreadyActive()?this._handleActiveSw():navigator.serviceWorker.register(getAssetPath()+"static/budgeteer.sw-a4a226d2fc19672e.js",{scope:"../../"}).then(e=>{this._isAlreadyActive()&&this._handleActiveSw()},e=>console.error("Budgeteer registration failed: ",e)),navigator.serviceWorker.addEventListener("controllerchange",()=>this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller)),window.BudgeteerMeasure={encodeUrl:this.encodeUrl}}encodeUrl(e){return encodeURIComponent(e)}decodeUrl(e){return decodeURIComponent(e)}onCommand(e){if(!this._inLimbo)switch(e){case 6:this._alreadyAdded||this._addIframe()}}};
2
- //# sourceMappingURL=budgeteer-measure-99563441.js.map
1
+ import{M as MainThreadToWorker,g as getAssetPath}from"./main-thread-to-worker-7f1066e7.js";import{g as getAllParameters}from"./query-params-helper-37c38de6.js";new class{_addIframe(){const e="website-to-measure";if(document.getElementById(e))return void console.error("Iframe already added! Check how this can happen");const r=getAllParameters();if(!r.checkUrl)return void console.error("CAN NOT MEASURE WITHOUT A URL, add checkUrl queryParam. To encode call BudgeteerMeasure.encodeUrl(url: string)");let t=this.decodeUrl(r.checkUrl);const o=window.location.origin;if(!t.startsWith(o))return void console.error("CAN ONLY MEASURE SAME ORIGIN PLEASE CHECK",{origin:o,src:t});const a=getAllParameters(t),i=Object.keys(a).length?"&":"?";a._measureTraffic||(t+=i+"_measureTraffic=true");const s=document.createElement("iframe");s.id=e,s.src=t,document.body.appendChild(s)}_isAlreadyActive(){return navigator.serviceWorker.controller&&-1!==navigator.serviceWorker.controller.scriptURL.indexOf("budgeteer.sw")&&"activated"===navigator.serviceWorker.controller.state}_handleActiveSw(){this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller),this._addIframe(),this._alreadyAdded=!0}constructor(){this._inLimbo=!1,this._alreadyAdded=!1,window.addEventListener("beforeunload",()=>this._inLimbo=!0),this._mainThreadToWorker=new MainThreadToWorker(this,navigator.serviceWorker),this._isAlreadyActive()?this._handleActiveSw():navigator.serviceWorker.register(getAssetPath()+"static/budgeteer.sw-a4a226d2fc19672e.js",{scope:"../../"}).then(e=>{this._isAlreadyActive()&&this._handleActiveSw()},e=>console.error("Budgeteer registration failed: ",e)),navigator.serviceWorker.addEventListener("controllerchange",()=>this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller)),window.BudgeteerMeasure={encodeUrl:this.encodeUrl}}encodeUrl(e){return encodeURIComponent(e)}decodeUrl(e){return decodeURIComponent(e)}onCommand(e){if(!this._inLimbo)switch(e){case 6:this._alreadyAdded||this._addIframe()}}};
2
+ //# sourceMappingURL=budgeteer-measure-20f928bc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"budgeteer-measure-99563441.js","sources":["../../packages/workers/generated/budgeteer.sw.js"],"sourcesContent":["export default \"static/budgeteer.sw-a4a226d2fc19672e.js\""],"names":[],"mappings":"w8CAAe"}
1
+ {"version":3,"file":"budgeteer-measure-20f928bc.js","sources":["../../packages/workers/generated/budgeteer.sw.js"],"sourcesContent":["export default \"static/budgeteer.sw-a4a226d2fc19672e.js\""],"names":[],"mappings":"w8CAAe"}
@@ -1,2 +1,2 @@
1
- System.register(["./main-thread-to-worker-ff3b0e7b.nomodule.js","./query-params-helper-8731c6a6.nomodule.js"],(function(){var e,r,t;return{setters:[function(t){e=t.M,r=t.g},function(e){t=e.g}],execute:function(){new class{_addIframe(){const e="website-to-measure";if(document.getElementById(e))return void console.error("Iframe already added! Check how this can happen");const r=t();if(!r.checkUrl)return void console.error("CAN NOT MEASURE WITHOUT A URL, add checkUrl queryParam. To encode call BudgeteerMeasure.encodeUrl(url: string)");let o=this.decodeUrl(r.checkUrl);const i=window.location.origin;if(!o.startsWith(i))return void console.error("CAN ONLY MEASURE SAME ORIGIN PLEASE CHECK",{origin:i,src:o});const n=t(o),a=Object.keys(n).length?"&":"?";n._measureTraffic||(o+=a+"_measureTraffic=true");const s=document.createElement("iframe");s.id=e,s.src=o,document.body.appendChild(s)}_isAlreadyActive(){return navigator.serviceWorker.controller&&-1!==navigator.serviceWorker.controller.scriptURL.indexOf("budgeteer.sw")&&"activated"===navigator.serviceWorker.controller.state}_handleActiveSw(){this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller),this._addIframe(),this._alreadyAdded=!0}constructor(){this._inLimbo=!1,this._alreadyAdded=!1,window.addEventListener("beforeunload",()=>this._inLimbo=!0),this._mainThreadToWorker=new e(this,navigator.serviceWorker),this._isAlreadyActive()?this._handleActiveSw():navigator.serviceWorker.register(r()+"static/budgeteer.sw-a4a226d2fc19672e.js",{scope:"../../"}).then(e=>{this._isAlreadyActive()&&this._handleActiveSw()},e=>console.error("Budgeteer registration failed: ",e)),navigator.serviceWorker.addEventListener("controllerchange",()=>this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller)),window.BudgeteerMeasure={encodeUrl:this.encodeUrl}}encodeUrl(e){return encodeURIComponent(e)}decodeUrl(e){return decodeURIComponent(e)}onCommand(e){if(!this._inLimbo)switch(e){case 6:this._alreadyAdded||this._addIframe()}}}}}}));
1
+ System.register(["./main-thread-to-worker-707405ab.nomodule.js","./query-params-helper-0afbebc7.nomodule.js"],(function(){var e,r,t;return{setters:[function(t){e=t.M,r=t.g},function(e){t=e.g}],execute:function(){new class{_addIframe(){const e="website-to-measure";if(document.getElementById(e))return void console.error("Iframe already added! Check how this can happen");const r=t();if(!r.checkUrl)return void console.error("CAN NOT MEASURE WITHOUT A URL, add checkUrl queryParam. To encode call BudgeteerMeasure.encodeUrl(url: string)");let o=this.decodeUrl(r.checkUrl);const i=window.location.origin;if(!o.startsWith(i))return void console.error("CAN ONLY MEASURE SAME ORIGIN PLEASE CHECK",{origin:i,src:o});const n=t(o),a=Object.keys(n).length?"&":"?";n._measureTraffic||(o+=a+"_measureTraffic=true");const s=document.createElement("iframe");s.id=e,s.src=o,document.body.appendChild(s)}_isAlreadyActive(){return navigator.serviceWorker.controller&&-1!==navigator.serviceWorker.controller.scriptURL.indexOf("budgeteer.sw")&&"activated"===navigator.serviceWorker.controller.state}_handleActiveSw(){this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller),this._addIframe(),this._alreadyAdded=!0}constructor(){this._inLimbo=!1,this._alreadyAdded=!1,window.addEventListener("beforeunload",()=>this._inLimbo=!0),this._mainThreadToWorker=new e(this,navigator.serviceWorker),this._isAlreadyActive()?this._handleActiveSw():navigator.serviceWorker.register(r()+"static/budgeteer.sw-a4a226d2fc19672e.js",{scope:"../../"}).then(e=>{this._isAlreadyActive()&&this._handleActiveSw()},e=>console.error("Budgeteer registration failed: ",e)),navigator.serviceWorker.addEventListener("controllerchange",()=>this._mainThreadToWorker.setEventPoster(navigator.serviceWorker.controller)),window.BudgeteerMeasure={encodeUrl:this.encodeUrl}}encodeUrl(e){return encodeURIComponent(e)}decodeUrl(e){return decodeURIComponent(e)}onCommand(e){if(!this._inLimbo)switch(e){case 6:this._alreadyAdded||this._addIframe()}}}}}}));
2
2
  //# sourceMappingURL=budgeteer-measure.nomodule.js.map
@@ -1,2 +1,2 @@
1
- import{_ as __decorate,i as inject,E as EventDispatcher,z as toRadiant,a7 as position3VectorsAreEqual,a8 as position2VectorsAreEqual,v as compareBox3Size,X as getIdealDistance,Z as toDegrees,c as convertToThreeMatrix,a9 as setObjectMatrix,aa as animateObjectMatrix,ab as DOCK_PREVIEW_MATERIAL_OPACITY,ac as DOCK_PREVIEW_MATERIAL_ROUGHNESS,ad as DOCK_PREVIEW_MATERIAL_METALNESS,ae as DOCK_PREVIEW_MATERIAL_OPACITY_HOVERED,x as disposeMesh,af as MaterialCreator,ag as PREVIEW_MATERIAL_OPACITY,ah as PREVIEW_MATERIAL_COLOR,k as kernelBoxToThreeBox,y as convertToKernel,s as convertToTHREE,ai as PREVIEW_LINE_MATERIAL_OPACITY,m as mergeGeometries,aj as createMaterial,ak as addTexture,n as getGUI,al as rotationQuaternionsAreEqual,am as getDelta,an as MIN_MOVE_DISTANCE,ao as LightSourceDetector,ap as EnvironmentMapDecodeMaterial,aq as RoomleWebGLRenderer,ar as lutImages,as as standaloneConfiguratorQualityLevels,at as DEFAULT_ENV_MAP_INTENSITY,au as DEFAULT_ENV_MAP_ROTATION,av as ENV_HDR_256_FILE_NAME,U as dispose,K as DynamicLightSettingLoader}from"./roomle-dependency-injection-f2eff3aa.js";import{a as Vector3,U as PerspectiveCamera,bG as debounce,V as Vector2,bI as areCameraParametersEqual,ae as Sphere,bM as clamp,Q as Quaternion,ag as Euler,aC as deepMerge,k as Matrix4,v as MeshStandardMaterial,C as Color,bN as setCursor,z as Mesh,O as Object3D,E as LineSegments,a_ as EdgesGeometry,bO as LineDashedMaterial,aP as BoxGeometry,ad as Box3,B as BufferGeometry,bP as CylinderGeometry,bQ as Line3,X as OrthographicCamera,bR as Shape,bS as Path,bT as ShapeGeometry,m as TextureLoader,bU as Fog,r as RepeatWrapping,w as DoubleSide,aZ as handleJsonResponse,S as SpotLight,A as AmbientLight,D as DirectionalLight,R as RectAreaLight,aS as SphereGeometry,h as MeshBasicMaterial,b9 as PlaneGeometry,a$ as CircleGeometry,u as LineBasicMaterial,bV as PMREMGenerator,ap as ShaderMaterial,ao as Matrix3,av as NoBlending,ah as CubeTexture,a9 as Texture,al as Scene,W as MathUtils,bW as Clock,bL as sanitizedCameraMode,bC as WebGLRenderer,i as SRGBColorSpace,bl as PCFSoftShadowMap,bJ as download,bX as traceMethodCalls}from"./main-thread-to-worker-4e303a39.js";var TWEEN_FILE_NAME="static/Tween-d57ee5d181fce582.js";class CameraControl extends EventDispatcher{constructor(e,t,i){var s,n;if(super(),this._tweenEnd=null,this._cameraStandingStill=!0,this._distance=-1,this._locked=!1,this._inputListeners=[],this._lerpEnabled=!0,this._creator_=e,this._inputManager=t,this._initInputListener(),this._addInputListeners(),this._cameraPosition=new Vector3,this._targetPosition=new Vector3,i?this.setCurrentCameraParameters(i):(this._cameraPosition=new Vector3(0,.5,3),this._pitch=toRadiant(null!==(s=this._initData.verticalCameraAngle)&&void 0!==s?s:10),this._yaw=toRadiant(null!==(n=this._initData.horizontalCameraAngle)&&void 0!==n?n:-30)),this._initData.debug&&this._getCamera()instanceof PerspectiveCamera){const e=this.getDebugCameraPosition();e&&this.setCurrentCameraParameters(e)}let a=this._domHelper.getClientDimensions();this._width=a.x,this._height=a.y,this._dispatchCameraIdle=debounce(this._dispatchCameraIdle.bind(this),32)}getCamera(){return this._getCamera()}_addInputListeners(){this._inputListeners.forEach(e=>{this._inputManager.addEventListener(e.key,e.fun,this)})}_removeInputListeners(){this._inputListeners.forEach(e=>{this._inputManager.removeEventListener(e.key,e.fun)})}setUp(){this._inputListeners.length&&this._inputManager.hasEventListener(this._inputListeners[0].key,this._inputListeners[0].fun,this)||this._addInputListeners()}cleanUp(){this._removeInputListeners()}animateCamera(e){let t=this._cameraPosition;if(!t||position3VectorsAreEqual(t,this.getCamera().position))return this._cameraStandingStill||(this._cameraStandingStill=!0,setTimeout(()=>this._dispatchCameraIdle(),16),this._initData.debug&&this.saveDebugCameraPosition()),!1;if(this._cameraStandingStill&&this.dispatchEvent(7,3),this._cameraStandingStill=!1,!this._lerpEnabled||this._tweenEnd||this._globalInitData.e2e)this.getCamera().position.copy(t);else{let i=this.getCamera().position.clone();const s=Math.min(10*e,1);i.lerp(t,s),this.getCamera().position.copy(i)}return!0}getDebugCameraPosition(){return JSON.parse(localStorage.getItem("debug_camera_position"))}saveDebugCameraPosition(){localStorage.setItem("debug_camera_position",JSON.stringify(this.getCurrentCameraParameters()))}_dispatchCameraIdle(){this.dispatchEvent(8,3)}_tweenCameraParameter(e,t,i=!1){return this._globalInitData.e2e||!this._initData.animateCamera?(this.dispatchEvent(0,3),this.dispatchEvent(1,3),this._yaw=t.yaw,this._pitch=t.pitch,this._distance=t.distance,this._setCameraNear(),this._update(new Vector3(t.targetX,t.targetY,t.targetZ),i),this.dispatchEvent(1,3),this.dispatchEvent(2,3),this.dispatchEvent(8,3),Promise.resolve()):new Promise(s=>{if(t.yaw-e.yaw<=-Math.PI?e.yaw-=2*Math.PI:t.yaw-e.yaw>=Math.PI&&(e.yaw+=2*Math.PI),window.TWEEN){if(null!==this._tweenEnd&&this._tweenEnd.blockOtherTweens)return;this._tweenEnd=t,new TWEEN.Tween(e).to(t,400).easing(TWEEN.Easing.Sinusoidal.In).onUpdate(()=>{this.dispatchEvent(1,3),this._yaw=e.yaw,this._pitch=e.pitch,this._distance=e.distance,this._setCameraNear(),this._update(new Vector3(e.targetX,e.targetY,e.targetZ),i,!0)}).onComplete(()=>{this.dispatchEvent(2,3),this._dispatchCameraIdle(),this._tweenEnd=null,s()}).start(),this.dispatchEvent(0,3)}})}_setCameraNear(){const e=this.getCamera();if(e instanceof PerspectiveCamera){const t=Math.max(.1,this._distance/6);e.near=t}}getCurrentCameraParameters(){const e=this._targetPosition.clone();return{yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:e.x,targetY:e.y,targetZ:e.z}}setCurrentCameraParameters(e){var t,i,s;this._yaw=null!==(t=e.yaw)&&void 0!==t?t:0,this._pitch=null!==(i=e.pitch)&&void 0!==i?i:0,this._distance=null!==(s=e.distance)&&void 0!==s?s:0,this._targetPosition.copy(new Vector3(e.targetX,e.targetY,e.targetZ)),this._update(null,!0,!0)}_rotateHorizontal(e){this._yaw-=e,this._yaw<-Math.PI?this._yaw+=2*Math.PI:this._yaw>Math.PI&&(this._yaw-=2*Math.PI)}_rotateVertical(e){this._pitch+=e,this._pitch<-Math.PI?this._pitch+=2*Math.PI:this._pitch>Math.PI&&(this._pitch-=2*Math.PI)}saveState(e){if(e||!this._stateSaved){let e=this._yaw,t=this._pitch,i=this._distance,s=this._targetPosition.clone();if(this._stateSaved={yaw:e,pitch:t,distance:i,targetX:s.x,targetY:s.y,targetZ:s.z,blockOtherTweens:!0},this._getCamera().fov){let e=this._getCamera();this._stateSaved.fov=e.fov,this._stateSaved.near=e.near,this._stateSaved.far=e.far}return this._stateSaved}return null}resetToState(){if(this._stateSaved){this._stateSaved.blockOtherTweens=!1;let e=this._targetPosition.clone();this._tweenCameraParameter({yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:e.x,targetY:e.y,targetZ:e.z},this._stateSaved,!0)}this._stateSaved=null}async setToState(e,t){await this._tweenCameraParameter(e,t,!0)}hasSavedState(){return null!=this._stateSaved}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}getTargetPosition(){return this._targetPosition}_saveYawAndPitch(){this._getCamera().userData.yaw=this._yaw,this._getCamera().userData.pitch=this._pitch}getInputPosition(e){const{x:t,y:i}=this._domHelper.getClientDimensions();return new Vector3(e.x/t*2-1,-e.y/i*2+1,.5)}addLightContainer(e){e.name="lights";const t=this._getCamera(),i=t.children.find(e=>"lights"===e.name);i&&t.remove(i),t.add(e)}checkNearFarDistance(e){if(!e)return;const t=this._cameraPosition.distanceTo(e),i=this._getCamera();i instanceof PerspectiveCamera&&t>i.far&&(i.far=t+1)}setBounds(e){this._boundingBox=e}get domHelper(){return this._domHelper}}__decorate([inject],CameraControl.prototype,"_domHelper",void 0),__decorate([inject],CameraControl.prototype,"_initData",void 0),__decorate([inject],CameraControl.prototype,"_globalInitData",void 0);class ZoomChangeEvent{constructor(e,t){this.minZoom=!1,this.maxZoom=!1,this.minZoom=e,this.maxZoom=t}}const DISTANCE_FACTOR=2.725;class CameraControl3D extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._bounds=new Vector3,this._scale=1,this._state=0,this._zoomSpeed=Math.pow(.95,3),this.minDistance=0,this.maxDistance=5,this.minPolarAngle=toRadiant(0),this.maxPolarAngle=toRadiant(85),this._objectRotation=0,this._lookAtSide=0,this.minAzimuthAngle=Number.NEGATIVE_INFINITY,this.maxAzimuthAngle=Number.POSITIVE_INFINITY,this._zoomDistance=.1,this._userInteraction=!1,this._currentZoomHash="",this._maxZoomedIn=!1,this._maxZoomedOut=!1,this._panningEnabled=!1,this._targetPositionIsPanned=!1,s?this._camera=s:this._initCamera(),this._camera.fov=30,this._targetPosition||(this._targetPosition=new Vector3(0,0,0),this._targetPositionIsPanned=!1);const{cameraRestriction:n,zoomDistance:a,minVerticalCameraAngle:o,maxVerticalCameraAngle:r,minHorizontalCameraAngle:h,maxHorizontalCameraAngle:c}=this._initData;if(a&&(this._zoomDistance=a/100),void 0!==o&&(this.minPolarAngle=toRadiant(o<0?o:-1*o)),void 0!==r&&(this.maxPolarAngle=toRadiant(r)),void 0!==h&&(this.minAzimuthAngle=toRadiant(h<0?h:-1*h)),void 0!==c&&(this.maxAzimuthAngle=toRadiant(c)),void 0!==n){let e=Math.abs(toRadiant(n));this.minAzimuthAngle=-e,this.maxAzimuthAngle=e,this.maxPolarAngle=Math.min(e,toRadiant(85))}this._update()}_getCamera(){return this._camera||this._initCamera(),this._camera}getCamera(){return super.getCamera()}_initCamera(){this._camera=new PerspectiveCamera,this._camera.fov=30,this._camera.aspect=this._width/this._height,this._camera.near=.1,this._camera.far=100,this._camera.updateProjectionMatrix(),this._camera.layers.set(3),this._camera.layers.enable(1),this._camera.layers.enable(2),this._camera.layers.enable(6),this._camera.layers.enable(5)}setObjectRotation(e,t=0){this._objectRotation=e,this._lookAtSide=t}getObjectRotation(){return this._objectRotation}updateCamera(){let{x:e,y:t}=this._domHelper.getClientDimensions();this._camera.aspect=e/t,this._camera.updateProjectionMatrix()}animateCamera(e){if(!super.animateCamera(e))return!1;let t=this._targetPosition;return!!t&&(this.getCamera().lookAt(t),!0)}_initInputListener(){this._inputListeners.push({key:3,fun:()=>{this._state=1}}),this._inputListeners.push({key:6,fun:e=>{var t,i;1!==this._state||this._locked||(this._userInteraction=!0,!(void 0!==(null===(t=e.event)||void 0===t?void 0:t.shiftKey)&&(null===(i=e.event)||void 0===i?void 0:i.shiftKey))&&this._panningEnabled&&this.disablePanning(),this._move(new Vector2(e.position.x,e.position.y),e.type))}}),this._inputListeners.push({key:11,fun:e=>{1===this._state||this._locked||(this._userInteraction=!0,this._pan(new Vector2(e.position.x,e.position.y),e.type))}}),this._inputListeners.push({key:4,fun:e=>{1===this._state&&this.dispatchEvent(2,e.type),this._state=0,this._orbitPosition=null,this._lerpEnabled=!0}}),this._inputListeners.push({key:7,fun:({event:e})=>{this._maxZoomedIn||(e&&(e.preventDefault(),e.stopPropagation()),this.zoomIn())}}),this._inputListeners.push({key:8,fun:({event:e})=>{this._maxZoomedOut||(e&&(e.preventDefault(),e.stopPropagation()),this.zoomOut())}})}_panTargetPosition(e){const t=e.clone().sub(this._orbitPosition),i=this._domHelper.element,s=this._targetPosition.project(this._camera),n=Math.max(2,4*(1-this._distance/this.maxDistance));s.x=s.x-t.x/i.clientHeight*n,s.y=s.y+t.y/i.clientHeight*n,this._targetPositionIsPanned=!0,this._targetPosition.copy(s.unproject(this._camera))}_pan(e,t){this._lerpEnabled=!1,this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0,t)),this._panTargetPosition(e),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1,t),this._orbitPosition.copy(e),this._update()}_move(e,t){this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0,t));const i=e.clone().sub(this._orbitPosition),s=this._domHelper.element;this._panningEnabled?this._panTargetPosition(e):(this._rotateHorizontal(2*Math.PI*i.x/s.clientWidth*1),this._rotateVertical(2*Math.PI*i.y/s.clientHeight*1)),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1,t),this._orbitPosition.copy(e),this._update()}checkBoundsAndPlaceCamera(e,t=!0){this._boundingBox&&compareBox3Size(e,this._boundingBox)<=0?this.setBounds(e):this.zoomToFitBounds(e,t)}adjustToBoundsWithoutChangingDistance(e){this.setBounds(e);const t=e.getSize(new Vector3);if(this._initData.debug||t.x+t.y+t.z===0)return;const i=this.getCurrentCameraParameters(),s=e.getCenter(new Vector3);this._setDistanceAndRangesBasedOnBounds(t,!1);const n={yaw:i.yaw,pitch:i.pitch,distance:this._distance,targetX:s.x,targetY:s.y,targetZ:s.z};areCameraParametersEqual(i,n)||this._tweenCameraParameter(i,n,!1)}zoomToFitBounds(e,t=!0){this.setBounds(e);const i=e.getSize(new Vector3);if(this._initData.debug||i.x+i.y+i.z===0)return;const s=this.getCurrentCameraParameters(),n=e.getCenter(new Vector3),a=this._setDistanceAndRangesBasedOnBounds(i);this._checkZoomDistance(e,a);const o={yaw:t?this._yaw:s.yaw,pitch:t?this._pitch:s.pitch,distance:a,targetX:n.x,targetY:n.y,targetZ:n.z};areCameraParametersEqual(s,o)||this._tweenCameraParameter(s,o,!1)}updateToBounds(e,t,i=!0,s){if(this.setBounds(e),this._initData.debug)return;const n=e.getCenter(new Vector3);s?(this._targetPosition=s.clone(),this._targetPositionIsPanned=!1):this._targetPositionIsPanned||(this._targetPosition=new Vector3(n.x,n.y,n.z));const a=this.getCurrentCameraParameters(),o=e.getSize(new Vector3);if(i){const i=this._setDistanceAndRangesBasedOnBounds(o);this._distance=i,this._checkZoomDistance(e,i),this._userInteraction?this._tweenCameraParameter(a,{yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:this._targetPosition.x,targetY:this._targetPosition.y,targetZ:this._targetPosition.z},t):this._update()}else this._setDistanceAndRangesBasedOnBounds(o,!1);this._update()}_checkZoomDistance(e,t){const i=e.getBoundingSphere(new Sphere);t-i.radius<this._zoomDistance&&(console.warn("the initial camera position is closer than the zoomDistance param, zoomDistance is set to initial camera position."),this._zoomDistance=t-i.radius)}_setDistanceAndRangesBasedOnBounds(e,t=!0){const{offsetWidth:i,offsetHeight:s}=this._getOffset();this._bounds.copy(e);const{cameraSpacing:n}=this._initData;e.addScalar(n/100),this.minDistance=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z);const a=Math.max(e.x,e.y),{x:o,y:r}=this._getMargin(i,s),h=getIdealDistance(e.x+o,e.y+r,e.z,this._camera.fov,i,s);return this._distance<h&&t&&(this._distance=h),this.maxDistance=h+a,this.maxDistance<2&&(this.maxDistance=2),this._camera.far=5*this.maxDistance,this._setCameraNear(),h}_getIdealDistance(){const{offsetWidth:e,offsetHeight:t}=this._getOffset(),{x:i,y:s}=this._getMargin(e,t);return getIdealDistance(this._bounds.x+i,this._bounds.y+s,this._bounds.z,this._camera.fov,e,t)}_getOffset(){const e=this._domHelper.getClientDimensions(),t=e.x,i=e.y;return{offsetWidth:this._camera.offset?t-t*this._camera.offset.left-t*(1-this._camera.offset.right):t,offsetHeight:this._camera.offset?i-i*this._camera.offset.bottom-i*(1-this._camera.offset.top):i}}_getMargin(e,t){const i=Math.max(this._bounds.x,this._bounds.y);let s=i>3?0:this._bounds.x/2,n=i>3?0:this._bounds.y/2;return e>1080&&(s+=i<.3?.1:0,s+=(i>3?0:this._bounds.x)*(e/1080-1)),t>1080&&(s+=i<.3?.1:0,n+=(i>3?0:this._bounds.y)*(t/1080-1)),{x:s,y:n}}reset(e,t,i,s,n=!0){var a,o;const r=e.getSize(new Vector3);if(r){if(t)this._targetPosition.copy(t);else{const t=e.getCenter(new Vector3);this._targetPosition.copy(t)}const h=this.getCurrentCameraParameters();if(i||(i=null!==(a=this._initData.horizontalCameraAngle)&&void 0!==a?a:-30),s||(s=null!==(o=this._initData.verticalCameraAngle)&&void 0!==o?o:10),i+=toDegrees(this._objectRotation),this._initData.debug)return this._distance=this._setDistanceAndRangesBasedOnBounds(r),this._update(this._targetPosition),void this._setDistanceAndRangesBasedOnBounds(r);const c=this._setDistanceAndRangesBasedOnBounds(r),l=toRadiant(s),d=toRadiant(i);let _=this._targetPosition.clone();n?this._tweenCameraParameter(h,{yaw:d,pitch:l,distance:c,targetX:_.x,targetY:_.y,targetZ:_.z},!0):(this._pitch=l,this._yaw=d,this._distance=c,this._update(this._targetPosition))}else console.warn("you cant reset without bounds!")}updateDistanceAndRangesBasedOnBounds(e){if(!e)return;const t=e.getSize(new Vector3),i=e.getCenter(new Vector3);this.setBounds(e),this._targetPosition.copy(i),this._setDistanceAndRangesBasedOnBounds(t,!1)}async updateAndReset(e,t=!0){var i,s;const n=e.getSize(new Vector3),a=e.getCenter(new Vector3);this.setBounds(e),this._targetPosition.copy(a),-1===this._distance&&(this._distance=this._setDistanceAndRangesBasedOnBounds(n));const o=this.getCurrentCameraParameters();this._camera.fov=30,this._pitch=toRadiant(null!==(i=this._initData.verticalCameraAngle)&&void 0!==i?i:10);const r=null!==(s=this._initData.horizontalCameraAngle)&&void 0!==s?s:-30;this._yaw=toRadiant(r*(this._lookAtSide<0?-1:1)+toDegrees(this._objectRotation)),this._setDistanceAndRangesBasedOnBounds(n);let h=this._targetPosition.clone();t?await this._tweenCameraParameter(o,{yaw:this._yaw,pitch:this._pitch,distance:this.maxDistance,targetX:h.x,targetY:h.y,targetZ:h.z},!0):this._update(this._targetPosition)}_update(e,t,i){i||(this._yaw=clamp(this._yaw,this.minAzimuthAngle,this.maxAzimuthAngle),this._pitch=this._initData.debug?clamp(this._pitch,toRadiant(-89),toRadiant(89)):clamp(this._pitch,this.minPolarAngle,this.maxPolarAngle),this._saveYawAndPitch());const s=(new Quaternion).setFromEuler(new Euler(-this._pitch,this._yaw,0,"ZYX")),n=new Vector3(0,0,-1).applyQuaternion(s);i||(this._distance*=this._scale,this._initData.debug||(this._distance=Math.min(this.maxDistance,this._distance))),e&&this._targetPosition.copy(e);const a=this._targetPosition.clone().sub(n.multiplyScalar(this._distance));if(this._initData.debug)this._cameraPosition.copy(a),this._zoomChanged(!1,!1);else if(t)this._cameraPosition.copy(a);else{const e=this._getCameraSphere(a);null!=this._boundingBox&&this._boundingBox.intersectsSphere(e)&&this._scale>=1?this._distance+=.1:null==this._boundingBox||this._boundingBox.intersectsSphere(e)?this._zoomChanged(!1,!0):(this._cameraPosition.copy(a),this._zoomChanged(this._distance===this.maxDistance,!1))}this._scale=1}_zoomChanged(e,t){var i;let s=e+""+t;0===(null===(i=this._currentZoomHash)||void 0===i?void 0:i.length)||this._currentZoomHash!==s?(this.dispatchEvent(5,new ZoomChangeEvent(e,t)),this._currentZoomHash=s):e||t||this.dispatchEvent(5,new ZoomChangeEvent(e,t)),this._maxZoomedIn=t,this._maxZoomedOut=e}zoomTo(e){return this._tweenCameraParameter(this.getCurrentCameraParameters(),e,!0)}_getCameraSphere(e){const t=Math.max(this._bounds.x,this._bounds.y),i=Math.max(t/10,this._zoomDistance);return new Sphere(e,i)}zoomIn(e){this._lerpEnabled=!0,this._scale*=e?Math.pow(.95,e):this._zoomSpeed,this._setCameraNear(),this._update(),this.dispatchEvent(3)}zoomOut(e){this._lerpEnabled=!0,this._scale/=e?Math.pow(.95,e):this._zoomSpeed,this._setCameraNear(),this._update(),this.dispatchEvent(4)}clear(){this._userInteraction=!1,this._initData.debug||(this._distance=-1,this._targetPosition=new Vector3(0,0,0),this._targetPositionIsPanned=!1)}async moveCamera(e){const{x:t,y:i,z:s}=this._boundingBox.getCenter(new Vector3);e.targetX=e.targetX||t,e.targetY=e.targetY||i,e.targetZ=e.targetZ||s,e.distance=e.distance||this._getIdealDistance();const n=this.getCurrentCameraParameters(),a=deepMerge(JSON.parse(JSON.stringify(n)),e);return this._tweenCameraParameter(n,a,!0)}enablePanning(){this._lerpEnabled=!1,this._panningEnabled=!0}disablePanning(){this._lerpEnabled=!1,this._panningEnabled=!1}getKernelZoomFactor(){const e=this.maxDistance;return 1-this._distance/(e-2)+.2}}class ObjectAnimations{constructor(){this.animationMap=new Map}static setObjectAnimations(e,t,i){if(!t||0===Object.keys(t).length)return void(e.userData.objectAnimations=void 0);e.userData.objectAnimations=new ObjectAnimations;const s=new Map;for(const e in t)s.set(e,{matrix:convertToThreeMatrix(t[e].matrix),visible:t[e].visibility,initial:t[e].initial});this.addObjectAnimations(e,s,i)}static addObjectAnimations(e,t,i){var s,n;if(!t||0===t.size)return;null!==(s=(n=e.userData).objectAnimations)&&void 0!==s||(n.objectAnimations=new ObjectAnimations);const a=e.userData.objectAnimations;t.forEach((t,s)=>{var n;if(a.animationMap.set(s,t),null===(n=null==i?void 0:i.animationValueMap)||void 0===n?void 0:n.hasKeyAndValue(s)){if(e.userData.transform){const i=e.userData.transform.clone().multiply(t.matrix);setObjectMatrix(e,i)}e.visible=t.visible}})}static removeObjectAnimations(e,t){var i;if(!(null===(i=e.userData)||void 0===i?void 0:i.objectAnimations))return;const s=e.userData.objectAnimations;s.animationMap.delete(t),0===s.animationMap.size&&(e.userData.objectAnimations=void 0)}static animateObject(e,t,i,s=!0,n){e.userData.objectAnimations instanceof ObjectAnimations&&e.userData.objectAnimations._animate(e,t,i,s,n)}_animate(e,t,i,s=!0,n){let a=new Matrix4,o=this.animationMap.get(`${t}:${i.from}`),r=this.animationMap.get(`${t}:${i.to}`);if(i.priorAnimations.length>0||i.subsequentAnimations.length>0){a=this._calculateCombinedAnimationMatrix(i.priorAnimations);const e=this._calculateCombinedAnimationMatrix(i.subsequentAnimations);o=this._calculateAnimationTransformation(o,e),r=this._calculateAnimationTransformation(r,e)}this._animateMesh(e,a,o,r,s,n)}_calculateCombinedAnimationMatrix(e){const t=new Matrix4;return e.forEach(e=>{const i=this.animationMap.get(e);(null==i?void 0:i.matrix)&&t.multiply(i.matrix)}),t}_calculateAnimationTransformation(e,t){var i;const s=t.clone();return(null==e?void 0:e.matrix)&&s.multiply(e.matrix),{matrix:s,visible:null===(i=null==e?void 0:e.visible)||void 0===i||i,initial:!1}}_animateMesh(e,t,i,s,n=!0,a){var o,r;if(!e.userData||!i&&!s)return;null!==(o=(r=e.userData).transform)&&void 0!==o||(r.transform=e.matrix.clone());const h=e.userData.transform;let c=h.clone(),l=h.clone();(null==i?void 0:i.matrix)&&c.multiply(i.matrix),(null==s?void 0:s.matrix)&&l.multiply(s.matrix),n?animateObjectMatrix(e,t,c,l,a):(setObjectMatrix(e,l.clone().multiply(t)),void 0!==(null==s?void 0:s.visible)&&(e.visible=s.visible),a&&a())}}const PULSE_DURATION=1500,PULSE_LOOPS=5;function RoomleComponentFactoryInitializer(){class e extends Object3D{static _generateOutline(e,t){let i=new LineSegments(new EdgesGeometry(e),new LineDashedMaterial({color:"#000000",dashSize:.03,gapSize:.01,linewidth:1}));return i.translateOnAxis(t,1),i.userData.ignoreComponentRaycast=!0,i}static cloneDockLine(e,t){let i=new LineSegments(e.geometry,e.material);return i.translateOnAxis(t.getCenter(new Vector3),1),i.name="dockline",i.layers.set(5),i.userData.ignoreComponentRaycast=!0,i}_setValues(e,t,i,s,n){e&&(this.runtimeId=e,this.name=e.toString()),t&&(this.roomlePosition=Object.assign({},t)),i&&(this.roomleRotation=Object.assign({},i)),s&&(this.parentObjectId=s),n&&(this.isRootComponent=n)}constructor(e,t,i,s,n){super(),this._selected=!1,this.isChildPlanObject=!1,this.geometryChanged=!0,this.meshes=[],this.castShadow=!1,this.receiveShadow=!0,this._setValues(e,t,i,s,n)}get loadingMesh(){return this._loadingMesh}get boundingBoxMesh(){return this._boundingBoxMesh}get boundingBox(){return this._boundingBox}set roomlePosition(e){this._roomlePosition=e,e&&this.position.set(e.x/1e3,e.z/1e3,e.y/-1e3)}get roomlePosition(){return this._roomlePosition}set roomleRotation(e){this._roomleRotation=e,e&&this.rotation.set(e.x,e.z,-e.y)}get roomleRotation(){return this._roomleRotation}replaceMeshes(e){this.removeAllMeshes(),e.forEach(e=>{this.addMesh(new Mesh(e.geometry,e.material))})}addMesh(e,t){e.renderOrder=2,e.userData.meshType=0,t&&e.applyMatrix4(convertToThreeMatrix(t)),this.add(e),this.meshes.push(e)}getMeshById(e){return this.meshes.find(t=>t.userData.meshId===e)}removeMeshById(e){const t=this.getMeshById(e);t?this.removeMesh(t):console.warn("Could not remove mesh with id "+e,this.runtimeId,this.meshes)}removeMesh(e){const t=this.meshes.indexOf(e);this.remove(e),disposeMesh(e),t<0||this.meshes.splice(t,1)}removeAllMeshes(e=!0){this.meshes.forEach(t=>{this.remove(t),e&&disposeMesh(t)}),this.meshes=[],this._removeLoadingMesh(),this.remove(this._boundingBoxMesh),disposeMesh(this._boundingBoxMesh),this._boundingBoxMesh=null}_hideAllMeshes(){this.meshes.forEach(e=>e.visible=!1)}_showAllMeshes(){this.meshes.forEach(e=>e.visible=!0)}select(){this._selected=!0}loading(){if(!this._kernelBoundingBox)return void console.warn("Bounding box (box for measurements) for component "+this.runtimeId+" not set, can not show external mesh loading box!");this._removeLoadingMesh(),this._hideAllMeshes();const{x:e,y:t,z:i}=this._kernelBoundingBox.getSize(new Vector3);let s=new BoxGeometry(e,t,i);this._loadingMesh=new Mesh(s,MaterialCreator.createMeshStandardMaterial({transparent:!0,opacity:PREVIEW_MATERIAL_OPACITY,color:new Color(PREVIEW_MATERIAL_COLOR)})),this._loadingMesh.name="loading mesh",this._loadingMesh.receiveShadow=!1,this._loadingMesh.castShadow=!1,this._loadingMesh.layers.set(5),this._loadingMesh.translateOnAxis(this._kernelBoundingBox.getCenter(new Vector3),1),this._loadingMesh.renderOrder=3,this.add(this._loadingMesh)}_removeLoadingMesh(){this._loadingMesh&&(this.remove(this._loadingMesh),disposeMesh(this._loadingMesh),this._loadingMesh=null)}loadingFinished(){this._removeLoadingMesh(),this._showAllMeshes()}deselect(){this._selected=!1}hoverOn(){setCursor("pointer")}hoverOff(){setCursor("default")}computeBoundingBox(t,i=!1){if(this._boundingBoxMesh&&this.remove(this._boundingBoxMesh),!i&&t&&0===t.size.x&&0===t.size.y&&0===t.size.z)return;let s;if(!t||i){this._boundingBox=new Box3;let e=new Vector3;this.meshes.forEach(t=>{if(t.geometry instanceof BufferGeometry){let i=t.geometry.attributes.position;if(void 0!==i)for(let s=0,n=i.count;s<n;s++)e.fromBufferAttribute(i,s).applyMatrix4(t.matrix),this._boundingBox.expandByPoint(e)}}),this._kernelBoundingBox=this._boundingBox.clone();let t=this._boundingBox.max.x-this._boundingBox.min.x,i=this._boundingBox.max.y-this._boundingBox.min.y,n=this._boundingBox.max.z-this._boundingBox.min.z;s=new BoxGeometry(t,i,n)}else{this._kernelBoundingBox=kernelBoxToThreeBox(t),this._boundingBox=this._kernelBoundingBox.clone();let{x:e,y:i,z:n}=this._boundingBox.getSize(new Vector3);s=new BoxGeometry(e,i,n)}this._boundingBoxMesh=new Mesh(s,MaterialCreator.createMeshStandardMaterial({color:"#FFFFFF",transparent:!0,opacity:0,polygonOffset:!0,polygonOffsetFactor:-1,visible:!1})),this._boundingBoxMesh.name="bounding box mesh";let n=this._boundingBox.getCenter(new Vector3);this._boundingBoxMesh.position.add(n),this._boundingBoxMesh.layers.set(5),this._boundingBoxMesh.renderOrder=3,this._boundingBoxMesh.castShadow=!1,this._boundingBoxMesh.receiveShadow=!1,this.add(this._boundingBoxMesh),this._dockline=e._generateOutline(s,n),this._dockline.name="bounding box outline",this._dockline.layers.set(5),this._selected&&this.add(this._dockline)}recursiveMeshes(){let t=this.meshes.slice();return this.children.forEach(i=>{i instanceof e&&t.push(...i.recursiveMeshes())}),t}isChild(t){let i=!1;return this.children.forEach(s=>{s instanceof e&&!i&&(i=s.runtimeId===t||s.isChild(t))}),i}getKernelPosition(e){let t=this.parent.localToWorld(this.position);return convertToKernel(e.worldToLocal(t))}animateMeshes(e,t,i=!0,s){this.meshes.forEach(n=>ObjectAnimations.animateObject(n,e,t,i,s))}}class t extends e{constructor(e,t){super(e,null,null,null,!1),this.glbUrl=t}}class i extends e{constructor(e,t,i,s,n,a){super(t,i,s,n,a),this._stringId=null,this.receivedPointAssociation=!1,this.castShadow=!1,this.receiveShadow=!1,this._creator_=e}get stringId(){return this._stringId?this._stringId:this.runtimeId.toString()}addMesh(e,t){super.addMesh(e,t),e.material instanceof MeshStandardMaterial&&(e.material.opacity=DOCK_PREVIEW_MATERIAL_OPACITY,e.material.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.material.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.material.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)),e.renderOrder=1,e.castShadow=!1,e.receiveShadow=!1}startPulsating(){var e,t;if(null===(t=null===(e=this._initData)||void 0===e?void 0:e.featureFlags)||void 0===t?void 0:t.pulsePreview)for(const e of this.meshes){const t={opacity:DOCK_PREVIEW_MATERIAL_OPACITY},i={opacity:.3};new TWEEN.Tween(t).to(i,1500).easing(TWEEN.Easing.Sinusoidal.In).onUpdate(()=>{e.material.opacity=t.opacity}).yoyo(!0).repeat(5).start()}}hoverOn(){this.remove(this._dockline),this.meshes.forEach(({material:e})=>{e.opacity=DOCK_PREVIEW_MATERIAL_OPACITY_HOVERED,e.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)}),setCursor("pointer")}hoverOff(){this.add(this._dockline),this.meshes.forEach(({material:e})=>{e.opacity=DOCK_PREVIEW_MATERIAL_OPACITY,e.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)}),setCursor("default")}clonePreview(t){const s=new i(this._creator_,this.runtimeId,this.roomlePosition,this.roomleRotation,this.parentObjectId,this.isRootComponent);return s._stringId=this.runtimeId+"_"+t,this.children.forEach(e=>{e instanceof Mesh&&0===e.userData.meshType&&s.meshes.push(e.clone(!0))}),s.meshes.forEach(e=>{e.material=e.material.clone(),e.geometry=e.geometry.clone(),s.add(e)}),this._dockline&&(s._dockline=e.cloneDockLine(this._dockline,this._boundingBox)),this._boundingBoxMesh&&(s._boundingBoxMesh=this._boundingBoxMesh.clone(!0)),this._boundingBox&&(s._boundingBox=this._boundingBox.clone()),s}preparePreview(){this.add(this._dockline),this.add(this._boundingBoxMesh)}}__decorate([inject],i.prototype,"_initData",void 0);class s extends i{constructor(e,t,i,s,n,a){super(e,t,i,s,n,!1),this.lineSegments=[],a&&(this._stringId=this.runtimeId+"_has_additional_dock_point_copy")}set roomleLineFrom(e){this._roomleLineFrom=e,this.lineFrom=convertToTHREE(e)}get roomleLineFrom(){return this._roomleLineFrom}set roomleLineTo(e){this._roomleLineTo=e;let t=convertToTHREE(e);t.equals(this.lineFrom)&&(console.warn("lineFrom and lineTo are equal!"),t.add(new Vector3(0,.01,0))),this.lineTo=t}get roomleLineTo(){return this._roomleLineTo}set roomlePositionFrom(e){this._roomlePositionFrom=e,this.positionFrom=convertToTHREE(e)}get roomlePositionFrom(){return this._roomlePositionFrom}set roomlePositionTo(e){this._roomlePositionTo=e;let t=convertToTHREE(e);t.equals(this.positionFrom)&&(console.warn("positionFrom and positionTo are equal!"),t.add(new Vector3(0,.01,0))),this.positionTo=t}get roomlePositionTo(){return this._roomlePositionTo}addMesh(e,t){super.addMesh(e,t),e.visible=!1,e.renderOrder=3}hoverOn(){this._dockline.visible=!0,setCursor("pointer")}hoverOff(){this._dockline.visible=!1,setCursor("default")}preparePreview(){super.preparePreview(),this._dockline.visible=!1;let e=this.lineTo.clone(),t=this.lineFrom.clone();const i=(new Vector3).subVectors(e,t);let s=i.length(),n=i.normalize();this._createLineMesh(.01,s,this.lineSegments);const a=(new Quaternion).setFromUnitVectors(new Vector3(0,1,0),n);this.lineMesh.quaternion.multiply(a),this.lineMesh.renderOrder=1;let o=(new Vector3).addVectors(e,t).multiplyScalar(.5);this.lineMesh.position.copy((new Vector3).subVectors(o,this.position.clone())),this.add(this.lineMesh);let r=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation),h=null,c=0,l=Math.abs(n.x),d=Math.abs(n.y),_=Math.abs(n.z);l>=d&&l>=_?(h=new Vector3(r.x,0,0),c=Math.sqrt(r.y*r.y+r.z*r.z)):d>=l&&d>=_?(h=new Vector3(0,r.y,0),c=Math.sqrt(r.x*r.x+r.z*r.z)):_>=d&&_>=l&&(h=new Vector3(0,0,r.z),c=Math.sqrt(r.y*r.y+r.x*r.x)),c=c>0?c:.01;let m=(new Vector3).subVectors(this.positionTo.clone(),this.positionFrom.clone()).length()+h.length();this._createBoundingLineMesh(1.1*c,m,this.lineSegments);let u=this.positionTo.clone(),g=this.positionFrom.clone(),p=(new Vector3).subVectors(u,g).normalize();const v=(new Quaternion).setFromUnitVectors(new Vector3(0,1,0),p);this.boundingLineMesh.quaternion.multiply(v),this.boundingLineMesh.renderOrder=3;let f=(new Vector3).addVectors(this.positionTo.clone(),this.positionFrom.clone()).multiplyScalar(.5).add(r);this.boundingLineMesh.position.copy((new Vector3).subVectors(f,this.position.clone())),this.add(this.boundingLineMesh)}_createLineMesh(e,t,i){this.lineMesh=this._createPreviewMesh(e,t,i,16,MaterialCreator.createMeshStandardMaterial({color:PREVIEW_MATERIAL_COLOR,transparent:!0,opacity:PREVIEW_LINE_MATERIAL_OPACITY})),this.lineMesh.name="line mesh"}_createBoundingLineMesh(e,t,i){this.boundingLineMesh=this._createPreviewMesh(e,t,i,32,MaterialCreator.createMeshStandardMaterial({color:"#ffffff",transparent:!0,opacity:0})),this.boundingLineMesh.name="bounding line mesh",this.boundingLineMesh.userData.ignoreComponentRaycast=!0,this.boundingLineMesh.layers.set(5)}_createPreviewMesh(e,t,i,s,n){let a;if(0===i.length)a=new CylinderGeometry(e,e,t,s,1);else{const n=[];for(const a of i){const i=a.to-a.from,o=(a.from+a.to)/2,r=new CylinderGeometry(e,e,i,s,1);r.translate(0,o-t/2,0),n.push(r)}a=mergeGeometries(n,!1)}return new Mesh(a,n)}clonePreviewLine(t){let i=new s(this._creator_,this.runtimeId,this.roomlePosition,this.roomleRotation,this.parentObjectId,this.receivedPointAssociation);return i._stringId=this.runtimeId+"_"+t,this.children.forEach(e=>{e instanceof Mesh&&0===e.userData.meshType&&i.meshes.push(e.clone(!0))}),i.meshes.forEach(e=>{e.material=e.material.clone(),e.geometry=e.geometry.clone(),i.add(e)}),this._dockline&&(i._dockline=e.cloneDockLine(this._dockline,this._boundingBox)),this._boundingBoxMesh&&(i._boundingBoxMesh=this._boundingBoxMesh.clone(!0)),this._boundingBox&&(i._boundingBox=this._boundingBox.clone()),i}getPositionForIntersectionPoint(e){let t=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation),i=this.positionTo.clone().add(t),s=this.positionFrom.clone().add(t),n=new Line3(s,i).closestPointToPoint(e,!0,new Vector3);return(isNaN(n.x)||isNaN(n.y)||isNaN(n.z))&&n.copy(e),n.sub(t)}updatePreviewPosition(e){let t=this.getPositionForIntersectionPoint(e),i=this.parent.localToWorld(t);this._newPosition=this.worldToLocal(i);let s=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation);this._dockline.position.copy((new Vector3).addVectors(this._newPosition,s)),this._dockline.rotation.copy(this.docklineRotation)}hideSelectionLine(){this._dockline.visible=!1}getKernelPosition(e){if(this._newPosition){let t=this.localToWorld(this._newPosition);return convertToKernel(e.worldToLocal(t))}return super.getKernelPosition(e)}}class n extends OrthographicCamera{constructor(e,t,i,s,n,a,o){super(e,t,i,s,n,a),o||(o={left:0,top:1,right:1,bottom:0}),this.offset=o}set offset(e){this._offset=e,this.updateProjectionMatrix()}get offset(){return this._offset}resetOffset(){this._offset={left:0,top:1,right:1,bottom:0}}updateProjectionMatrix(){this._offset?(this.projectionMatrix=this._calculateProjectionMatrix(),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()):super.updateProjectionMatrix()}_calculateProjectionMatrix(){const e=this._calculate2DPlanes();if(this._offset.left>=this._offset.right||this._offset.bottom>this._offset.top)return(new Matrix4).makeOrthographic(e.left,e.right,e.top,e.bottom,this.near,this.far);const t=this._scaleRange(e.left,e.right,this._offset.left,this._offset.right);let i=t.from,s=t.to;const n=this._scaleRange(e.bottom,e.top,this._offset.bottom,this._offset.top);let a=n.from,o=n.to;const r=(e.right-e.left)/(e.top-e.bottom),h=(s-i)/(o-a);if(h>r){const e=(a+o)/2,t=(o-a)*h/r;a=e-t/2,o=e+t/2}else{const e=(i+s)/2,t=(s-i)*r/h;i=e-t/2,s=e+t/2}return(new Matrix4).makeOrthographic(i,s,o,a,this.near,this.far)}_scaleRange(e,t,i,s){const n=(t-e)/(s-i);return{from:e-n*i,to:t+n*(1-s)}}_calculate2DPlanes(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2;let n=i-e,a=i+e,o=s+t,r=s-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;n+=e*this.view.offsetX,a=n+e*this.view.width,o-=t*this.view.offsetY,r=o-t*this.view.height}return{left:n,right:a,top:o,bottom:r}}}class a extends PerspectiveCamera{constructor(e,t,i,s,n){super(e,t,i,s),n||(n={left:0,top:1,right:1,bottom:0}),this.offset=n}copy(e,t){return super.copy(e,t),this._offset=e._offset,this}set offset(e){this._offset=e,this.updateProjectionMatrix()}get offset(){return this._offset}resetOffset(){this._offset={left:0,top:1,right:1,bottom:0}}_calculateProjectionMatrix(){let e,t,i,s,n=this.fov*(2*Math.PI/360)/2;i=Math.tan(n),s=-i;let a=Math.atan(this.aspect*Math.tan(n));t=Math.tan(a),e=-t;let o=this._offset.left,r=this._offset.right,h=this._offset.top,c=this._offset.bottom,l=new Vector2(r-o,h-c),d=new Vector2(o+l.x/2,c+l.y/2);if(l.x<l.y){let n=(1-d.x)/(l.x/2),a=d.x/(l.x/2);t*=n,e*=a;let o=(n+a)/2;i*=o,s*=o}else{let n=(1-d.y)/(l.y/2),a=d.y/(l.y/2);i*=n,s*=a;let o=(a+n)/2;e*=o,t*=o}e*=this.near,t*=this.near,i*=this.near,s*=this.near;let _=this.near*Math.tan(Math.PI/180*.5*this.fov)/this.zoom*2,m=this.aspect*_;return this.view&&this.view.enabled&&(e+=this.view.offsetX*m/this.view.fullWidth,i-=this.view.offsetY*_/this.view.fullHeight,t+=this.view.offsetX*m/this.view.fullWidth,s-=this.view.offsetY*_/this.view.fullHeight),(new Matrix4).makePerspective(e,t,i,s,this.near,this.far)}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){this._offset?(this.projectionMatrix=this._calculateProjectionMatrix(),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()):super.updateProjectionMatrix()}}return{create:function(t,i,s,n,a){return new e(t,i,s,n,a)},createPreview:function(e,t,s){return new i(s,e,{x:0,y:0,z:0},{x:0,y:0,z:0},t,!1)},createStatic:function(e,i){return new t(e,i)},createPreviewLine:function(e,t){let i=new s(t,e.id,e.roomlePosition,e.roomleRotation,e.parentObjectId,e.receivedPointAssociation);return e.meshes.forEach(e=>{let t=e.clone();t.material=e.material.clone(),t.geometry=e.geometry.clone(),i.addMesh(t)}),i.computeBoundingBox(),i},isPreview:function(e){return e instanceof i},isPreviewLine:function(e){return e instanceof s},createPerspectiveCamera:function(e,t,i,s,n){return new a(e,t,i,s,n)},createOrthographicCamera:function(e,t,i,s,a,o,r){return new n(e,t,i,s,a,o,r)}}}class Environment{constructor(e,t){this._scene=e,t&&(t.removeFromScene(),t.cleanUp())}updateCamera(e){}reload(){this.removeFromScene(),this.addToScene()}updateBounds(e,t){this._bounds=e}cleanUp(){this._scene=null}}class BakedShadowPlane{constructor(e){this._innerSize=1,this._outerSize=100,this._plane=new Object3D,this._plane.rotation.x=-Math.PI/2;const t=MaterialCreator.createMeshStandardMaterial({});this._innerPlaneMesh=new Mesh,this._innerPlaneMesh.layers.set(2),this._innerPlaneMesh.material=t,this._innerPlaneMesh.receiveShadow=!0,this._outerPlaneMesh=new Mesh,this._outerPlaneMesh.layers.set(2),this._outerPlaneMesh.material=t,this._outerPlaneMesh.receiveShadow=!0,this._plane.add(this._innerPlaneMesh),this._plane.add(this._outerPlaneMesh),this._innerSize=1,this._outerSize=e,this._updatePlane(this._innerSize,this._outerSize)}getRootNode(){return this._plane}getInnerPlane(){return this._innerPlaneMesh}getOuterPlane(){return this._outerPlaneMesh}updateSize(e){this._innerSize=e,this._updatePlane(this._innerSize,this._outerSize)}_updatePlane(e,t){const i=new Shape;i.moveTo(-e/2,-e/2),i.lineTo(-e/2,e/2),i.lineTo(e/2,e/2),i.lineTo(e/2,-e/2),i.lineTo(-e/2,-e/2);const s=new Shape;s.moveTo(-t/2,-t/2),s.lineTo(-t/2,t/2),s.lineTo(t/2,t/2),s.lineTo(t/2,-t/2),s.lineTo(-t/2,-t/2);const n=new Path;n.moveTo(-e/2,-e/2),n.lineTo(-e/2,e/2),n.lineTo(e/2,e/2),n.lineTo(e/2,-e/2),n.lineTo(-e/2,-e/2),s.holes.push(n);const a=new ShapeGeometry(i);this._innerPlaneMesh.geometry&&this._innerPlaneMesh.geometry.dispose(),this._innerPlaneMesh.geometry=a;const o=new ShapeGeometry(s);this._outerPlaneMesh.geometry&&this._outerPlaneMesh.geometry.dispose(),this._outerPlaneMesh.geometry=o;const r=a.attributes.uv.clone();a.setAttribute("uv2",r);const h=a.attributes.uv2.array;for(let e=0;e<h.length;++e)h[e]+=.5}}class FloorEnvironment extends Environment{constructor(e,t,i){super(e,t),this._longestSide=2,this._bakedShadowPlane=new BakedShadowPlane(100),this._fog=i||!1,this._textureLoader=new TextureLoader,this.addToScene()}needsBounds(){return!0}needsCamera(){return this._fog}needsRotation(){return!1}updateBounds(e){return super.updateBounds(e),this._longestSide=Math.max(e.x,e.z),this._update(),!0}updateCamera(e){this._cameraDistance=e.position.distanceTo(new Vector3(0,0,0)),this._update()}_update(){this._fog&&this._updateFog()}_updateFog(){let e=this._longestSide/2;this._scene.fog=new Fog(16185078,this._cameraDistance+e+3,this._cameraDistance+e+3+1),this._scene.background=new Color(16185078)}_updateFloor(){if(this._floorMaterial)this._bakedShadowPlane.getOuterPlane().material=this._floorMaterial,this._bakedShadowPlane.getInnerPlane().material=this._floorMaterial;else{let e=this._width/1e3,t=this._height/1e3;this._repeatable&&(this._floorTexture.wrapS=RepeatWrapping,this._floorTexture.wrapT=RepeatWrapping,this._floorTexture.repeat.set(100/e,100/t));let i=MaterialCreator.createMeshStandardMaterial({map:this._floorTexture,side:DoubleSide});this._bakedShadowPlane.getInnerPlane().material=i,this._bakedShadowPlane.getOuterPlane().material=i}}addToScene(){this._scene&&this._scene.add(this._bakedShadowPlane.getRootNode())}removeFromScene(){this._scene.remove(this._bakedShadowPlane.getRootNode())}setFloorMaterial(e,t,i,s){return this._width=t,this._height=i,this._repeatable=s,this._floorPromise=new Promise((t,i)=>{this._textureLoader.load(e,e=>{this._floorTexture=e,t()},null,i)}),new Promise((e,t)=>{this._floorPromise.then(()=>{this._updateFloor(),this._update(),e()},t)})}changeFloorMaterial(e,t){this._floorPromise=new Promise((i,s)=>{this._floorMaterial=createMaterial(e),this._rapiAccess.getTexturesOf(e).then(e=>{if(e.length>0){let n=[];e.forEach(e=>{n.push(addTexture(this._dataSyncer.requestAsset(e.image,!0),e,this._floorMaterial,t,1,1))}),Promise.all(n).then(()=>{setTimeout(()=>i(),0)},s)}else setTimeout(()=>i(),0)})});let i=[this._floorPromise];return new Promise((e,t)=>{Promise.all(i).then(()=>{this._updateFloor(),this._update(),e()},t)})}showGUI(){this._floorMaterial?this._addGUI():this._floorPromise&&this._floorPromise.then(()=>this._addGUI())}_addGUI(){let e=getGUI();if(!e)return;let t=e.addFolder("Floor");t.add(this._floorMaterial,"roughness").min(0).max(1).step(.01),t.add(this._floorMaterial,"reflectivity").min(0).max(1).step(.01),t.add(this._floorMaterial,"clearCoat").min(0).max(1).step(.01),t.add(this._floorMaterial,"clearCoatRoughness").min(0).max(1).step(.01),t.add(this._floorMaterial,"opacity").min(0).max(1).step(.01),t.add(this._floorMaterial,"metalness").min(0).max(1).step(.01),t.add(this._floorMaterial,"bumpScale").min(0).max(1).step(.01)}}__decorate([inject],FloorEnvironment.prototype,"_rapiAccess",void 0),__decorate([inject],FloorEnvironment.prototype,"_dataSyncer",void 0);const KEYBOARD_ROTATION_ANGLE=Math.PI/4;class CameraControlFirstPerson extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._state=0,this._cameraRotation=new Quaternion,this._rotationSpeed=1,this._keyMap=new Map,this.minPolarAngle=toRadiant(-60),this.maxPolarAngle=toRadiant(60),this._camera=s||new PerspectiveCamera,this._camera.fov=75,this._camera.aspect=this._width/this._height,this._camera.near=.1,this._camera.far=100,this._camera.updateProjectionMatrix(),this._camera.layers.set(3),this._camera.layers.enable(1),this._camera.layers.enable(2),this._camera.layers.enable(6),this._camera.layers.enable(5),i||this._camera.position.set(0,1.5,0),this._cameraPosition=new Vector3,this._cameraPosition.copy(this._camera.position),this._pitch=0,this._yaw=0;let n=new Euler(-this._pitch,this._yaw,0,"ZYX");this._cameraRotation.setFromEuler(n),window.addEventListener("gamepadconnected",this._gamepadConnected.bind(this)),window.addEventListener("gamepaddisconnected",this._gamepadDisconnected.bind(this))}setUp(){super.setUp(),this._camera.fov=75,this._initInputListener()}_gamepadConnected(e){this.startButtonPressListener()}_gamepadDisconnected(e){window.cancelAnimationFrame(this._listenerLoopAnimationFrame)}startButtonPressListener(){this._listenerLoopAnimationFrame=window.requestAnimationFrame(()=>{this.buttonPressListener()})}buttonPressListener(){let e=navigator.getGamepads()[0];this._checkRightStick(e),this._checkLeftStick(e),this._checkButtons(e),this._processKeyMap(this._keyMap,.001),this.startButtonPressListener()}_checkRightStick(e){let t=e.axes[2],i=e.axes[3];Math.abs(t)>.2&&(this._rotateHorizontal(.01*KEYBOARD_ROTATION_ANGLE*t),this._update(),this.dispatchEvent(1)),Math.abs(i)>.2&&(this._rotateVertical(.01*KEYBOARD_ROTATION_ANGLE*i),this._update(),this.dispatchEvent(1))}_checkLeftStick(e){let t=e.axes[0],i=e.axes[1];Math.abs(i)>.2?i<0?this._keyMap.set(87,!0):this._keyMap.set(83,!0):e.buttons&&e.buttons[12]&&e.buttons[12].pressed?this._keyMap.set(87,!0):e.buttons&&e.buttons[13]&&e.buttons[13].pressed?this._keyMap.set(83,!0):(this._keyMap.set(87,!1),this._keyMap.set(83,!1)),Math.abs(t)>.2?t<0?this._keyMap.set(65,!0):this._keyMap.set(68,!0):(this._keyMap.set(65,!1),this._keyMap.set(68,!1))}_checkButtons(e){e.buttons&&e.buttons[6]&&e.buttons[6].pressed?this._keyMap.set(16,!0):this._keyMap.set(16,!1),e.buttons&&e.buttons[14]&&e.buttons[14].pressed?(this._keyMap.set(37,!0),this.dispatchEvent(1)):this._keyMap.set(37,!1),e.buttons&&e.buttons[15]&&e.buttons[15].pressed?(this._keyMap.set(39,!0),this.dispatchEvent(1)):this._keyMap.set(39,!1)}animateCamera(e){let t=this._cameraPosition,i=this._cameraRotation,s=this.getCamera(),n=position3VectorsAreEqual(t,s.position),a=rotationQuaternionsAreEqual(i,s.quaternion);if(!t||n&&a)return!1;let o=this.getCamera().position.clone(),r=Math.min(10*e,1);o.lerp(t,r),this.getCamera().position.copy(o);let h=this.getCamera().quaternion.clone(),c=Math.min(5*e,1);h.slerp(i,c),this.getCamera().setRotationFromQuaternion(h);let l=!1;return this._keyMap.forEach(e=>{e&&(l=!0)}),l&&this._processKeyMap(this._keyMap,e),!0}_getCamera(){return this._camera}_initInputListener(){this._onKeyChanged=this._onKeyChanged.bind(this),this._inputListeners.push({key:16,fun:e=>{this._onKeyChanged(e.event)}}),this._inputListeners.push({key:17,fun:e=>{this._onKeyChanged(e.event)}}),this._inputListeners.push({key:3,fun:e=>{this._down(e)}}),this._inputListeners.push({key:6,fun:e=>{this._move(e)}}),this._inputListeners.push({key:4,fun:e=>{this._up(e)}})}_removeInputListener(){this._inputListeners=this._inputListeners.filter(e=>17!==e.key&&16!==e.key)}_down(e){this._downPosition=e.position,this._position=e.position,this._state=1,2===e.type&&window.setTimeout(this._onLongDown.bind(this),350),2===e.type?this._rotationSpeed=.1:this._rotationSpeed=1}_move(e){this._position=e.position,1!==this._state||this._locked||this._orbit(new Vector2(e.position.x,e.position.y)),2!==this._state||this._locked||(this._orbit(new Vector2(e.position.x,e.position.y)),this._moveForward())}_up(e){1===this._state&&this.dispatchEvent(2),2===this._state&&this._keyMap.set(87,!1),this._state=0,this._orbitPosition=null}_onLongDown(){getDelta(this._downPosition,this._position)<MIN_MOVE_DISTANCE&&1===this._state&&(this._state=2,this._orbit(new Vector2(this._position.x,this._position.y)),this._moveForward())}_update(e){var t;let i=new Euler(-this._pitch,this._yaw,0,"ZYX");null===(t=this._cameraRotation)||void 0===t||t.setFromEuler(i)}updateCamera(){let{x:e,y:t}=this._domHelper.getClientDimensions();this._camera.aspect=e/t,this._camera.updateProjectionMatrix(),this._camera.near=.1,this._camera.far=100}_onKeyChanged(e){this._keyMap.set(e.keyCode,"keydown"===e.type),this.dispatchEvent(6),this._processKeyMap(this._keyMap,.001)&&e.preventDefault()}_processKeyMap(e,t){t=Math.min(t,.1);let i=new Vector3(0,0,0),s=!1;return this._processUpDown(e,i,t),e.get(65)&&(i.x=-1.5*t),e.get(68)&&(i.x=1.5*t),e.get(37)&&(this._rotateHorizontal(-KEYBOARD_ROTATION_ANGLE*this._rotationSpeed*t),s=!0),e.get(39)&&(this._rotateHorizontal(KEYBOARD_ROTATION_ANGLE*this._rotationSpeed*t),s=!0),e.get(16)&&(i.x*=3,i.z*=3),!(0===i.x&&0===i.y&&0===i.z&&!s||(i.applyQuaternion(this.getCamera().quaternion),this._cameraPosition.add(new Vector3(i.x,0,i.z)),this._update(),0))}_processUpDown(e,t,i){(e.get(87)||e.get(38))&&(t.z=-1.5*i),(e.get(83)||e.get(40))&&(t.z=1.5*i)}_orbit(e){this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0));let t=e.clone().sub(this._orbitPosition),i=this._domHelper.element instanceof Document?this._domHelper.element.body:this._domHelper.element;t.multiplyScalar(-1),this._rotateHorizontal(2*Math.PI*t.x/i.clientWidth*1),this._rotateVertical(2*Math.PI*t.y/i.clientHeight*1),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1),this._orbitPosition.copy(e),this._update()}_moveForward(){this._keyMap.set(87,!0),this._processKeyMap(this._keyMap,.001)}_rotateVertical(e){let t=this._pitch+e;t>this.maxPolarAngle||t<this.minPolarAngle||(this._pitch=t,this._pitch<-Math.PI?this._pitch+=2*Math.PI:this._pitch>Math.PI&&(this._pitch-=2*Math.PI),this._saveYawAndPitch())}getKernelZoomFactor(){return this._camera.zoom}}class BackgroundEnvironment extends Environment{constructor(e,t,i,s,n){if(super(e,t),this._color=i,this._oldBackground=e.background,s&&n){this._canvas=s,this._style=document.createElement("style");let e='background-image: url("'+n+'"); background-size: cover;';this._style.innerText=".rml-scene-background {"+e+"}",this._canvas.appendChild(this._style)}}needsBounds(){return!0}needsCamera(){return!1}needsRotation(){return!1}addToScene(){this._scene&&this._color&&(this._scene.background=this._color),this._canvas&&this._canvas.classList&&(this._scene.background=null,this._canvas.classList.add("rml-scene-background"))}removeFromScene(){this._oldBackground&&(this._scene.background=this._oldBackground),this._canvas&&this._canvas.classList.remove("rml-scene-background")}showGUI(){}}class DynamicEnvironmentSettingLoader{parse(e,t,i,s,n){let a=JSON.parse(s);return a.environment?this.load(e,t,i,a,n):null}load(e,t,i,s,n){let a,o=s.environment;if(!o)return console.warn("No environment set in scene settings"),Promise.resolve(null);switch(o.type){case"color":a=new Promise(t=>t(new BackgroundEnvironment(e,i,new Color(o.details.color))));break;case"image":a=new Promise(s=>s(new BackgroundEnvironment(e,i,null,t,o.details.imageUrl)));break;case"floor":a=new Promise(t=>{this._rapiAccess.getMaterial(o.details.material).then(s=>{let a=void 0===o.details.fog||o.details.fog,r=new FloorEnvironment(e,i,a);r.changeFloorMaterial(s,n).then(()=>{t(r)})})});break;default:console.warn("Could not load environment, return old environment"),a=new Promise(e=>e(i))}return a}}__decorate([inject],DynamicEnvironmentSettingLoader.prototype,"_rapiAccess",void 0);class LightSetting{constructor(e,t){this._scene=e,t&&t.removeFromScene()}needsBounds(){return!1}updateBounds(e){}getCameraContainer(){return this._cameraContainer||(this._cameraContainer=new Object3D),this._cameraContainer}}class DynamicLightSetting extends LightSetting{constructor(e,t){super(e,t),this._lights=[]}needsBounds(){return!0}updateBounds(e){if(this._cameraLight){const t=this._cameraLight,i=new Vector3;e.getSize(i);const s=1.5*Math.max(Math.max(i.x,i.y),i.z);this._boundingSize=s,t.shadow.camera.top=s/2,t.shadow.camera.bottom=-s/2,t.shadow.camera.left=-s/2,t.shadow.camera.right=s/2,t.shadow.camera.updateProjectionMatrix()}}loadFromJSON(e){return new Promise(t=>{this._lights=this._dynamicLightSettingLoader.parse(e),this.addToScene(),t()})}loadFromObject(e){return new Promise(t=>{(null==e?void 0:e.lights)||t(),this._lights=this._dynamicLightSettingLoader.load(e),this._lights.forEach((e,t)=>{e.userData.movesWithCamera&&(this._cameraLight=e,this._lights.splice(t,1))}),this.addToScene(),t()})}loadFromURL(e){return new Promise((t,i)=>{fetch(new Request(e,{method:"GET"})).then(handleJsonResponse).then(e=>this.loadFromObject(e).then(t,i))})}addToScene(){this._lights.forEach(e=>{this._scene.add(e)}),this._cameraLight&&this._scene.add(this._cameraLight)}update(e,t){if(!this._cameraLight)return;let i=new Vector3;e.getWorldDirection(i),i.multiplyScalar(-this._boundingSize);let s=t.clone().add(i);this._cameraLight.position.copy(s)}removeFromScene(){this._lights.forEach(e=>{this._scene.remove(e)}),this._cameraLight&&this._scene.remove(this._cameraLight)}reload(){this.removeFromScene(),this.addToScene()}showGUI(){let e=getGUI();this._cameraLight&&this._addToGUI(e,this._cameraLight),this._lights.forEach(t=>{this._addToGUI(e,t)})}_addToGUI(e,t){e&&(t instanceof SpotLight&&this._addSpotLightToGUI(e,t),t instanceof AmbientLight&&this._addAmbientLightToGUI(e,t),t instanceof DirectionalLight&&this._addDirectionalLightToGUI(e,t),t instanceof RectAreaLight&&this._addRectAreaLightToGUI(e,t))}_addRectAreaLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString(),intensity:t.intensity*(t.width*t.height)};i.add(t,"visible"),i.add(s,"intensity").min(10).max(400).step(10).onChange(e=>{t.intensity=e/(t.width*t.height)}),i.add(t,"castShadow"),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}_addSpotLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString(),angle:180*t.angle/Math.PI};i.add(t,"visible"),i.add(t,"intensity").min(0).max(5).step(.1),i.add(t,"penumbra").min(0).max(1).step(.1),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(s,"angle").min(10).max(180).step(1).onChange(e=>{t.angle=e*Math.PI/180}),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}_addAmbientLightToGUI(e,t){let i={name:t.name,color:"#"+t.color.getHexString()},s=e.addFolder(t.name);s.add(t,"visible"),s.add(t,"intensity").min(0).max(5).step(.1),s.addColor(i,"color").onChange(e=>{t.color=new Color(e)})}_addDirectionalLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString()};i.add(t,"visible"),i.add(t,"intensity").min(0).max(5).step(.1),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(t,"castShadow"),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}}__decorate([inject],DynamicLightSetting.prototype,"_dynamicLightSettingLoader",void 0);class GroundedSkybox extends Mesh{constructor(e,t,i,s=128){if(t<=0||i<=0||s<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const n=new SphereGeometry(i,2*s,s);n.scale(1,1,-1);const a=n.getAttribute("position"),o=new Vector3;for(let e=0;e<a.count;++e)if(o.fromBufferAttribute(a,e),o.y<0){const i=3*-t/2,s=o.y<i?-t/o.y:1-o.y*o.y/(3*i*i);o.multiplyScalar(s),o.toArray(a.array,3*e)}a.needsUpdate=!0,super(n,new MeshBasicMaterial({map:e,depthWrite:!1}))}}class GroundProjectedEnvironment extends Environment{constructor(e,t,i){super(e,t),this.updateEnvironmentTexture(i)}updateEnvironmentTexture(e){e&&(this._environmentTexture=e,this._skybox=new GroundedSkybox(this._environmentTexture,15,100),this._skybox.name="Ground projected skybox",this._skybox.scale.setScalar(100)),this.reload()}needsBounds(){return!1}needsCamera(){return!1}needsRotation(){return!1}addToScene(){this._scene&&this._skybox&&this._scene.add(this._skybox)}removeFromScene(){this._scene&&this._skybox&&this._scene.remove(this._skybox)}showGUI(e){let t=getGUI();if(!t)return;let i=t.addFolder("Ground Projected Environment");i.add(this._skybox,"height").min(10).max(100).step(.1).onChange(e),i.add(this._skybox,"radius").min(20).max(200).step(.1).onChange(e)}}class LightSourceDetectorDebug{constructor(e){this._lightSourceDetector=e}static createPlane(e,t){const i=new PlaneGeometry(2,1),s=null!=t?t:new MeshBasicMaterial({color:12632256,side:DoubleSide}),n=new Mesh(i,s);return n.position.z=-.1,e.add(n),n}createDebugScene(e,t){this._scene=e,this._createLightGraphInMap(this._lightSourceDetector.sampleUVs,this._lightSourceDetector.lightSamples,this._lightSourceDetector.lightGraph,t)}_createLightGraphInMap(e,t,i,s){const n=[],a=[];for(let e=0;e<this._lightSourceDetector.lightGraph.noOfNodes;++e)0===i.adjacent[e].length?n.push(t[e]):a.push(t[e]);const o=n.map(e=>e.uv),r=a.map(e=>e.uv),h=e.filter(e=>!o.includes(e)&&!r.includes(e));this._createSamplePointsInMap(h,.005,16711680),this._createSamplePointsInMap(o,.01,255),this._createSamplePointsInMap(r,.01,65280),this._createClusterLinesInMap(this._lightSourceDetector.lightSamples,this._lightSourceDetector.lightGraph.edges,128);const c=this._lightSourceDetector.lightSources.map(e=>e.uv);this._createSamplePointsInMap(c,.015,16776960);let l=this._lightSourceDetector.lightSources;void 0!==s&&s>=0&&s<l.length&&(l=l.slice(0,s)),this._createCirclesInMap(l,8421376)}_createSamplePointsInMap(e,t,i){const s=new CircleGeometry(t,8,4),n=new MeshBasicMaterial({color:i});e.forEach(e=>{var t;const i=new Mesh(s,n);i.position.copy(this._uvToMapPosition(e)),i.name="samplePoint",null===(t=this._scene)||void 0===t||t.add(i)})}_createCirclesInMap(e,t){const i=new MeshBasicMaterial({color:t,transparent:!0,opacity:.5});e.forEach(e=>{var t;const s=new CircleGeometry(e.size,8,4),n=new Mesh(s,i);n.position.copy(this._uvToMapPosition(e.uv)),n.name="samplePoint",null===(t=this._scene)||void 0===t||t.add(n)})}_createClusterLinesInMap(e,t,i){var s;const n=new LineBasicMaterial({color:i}),a=[];t.forEach(t=>{for(let i=1;i<t.length;i++){const s=e[t[0]].uv,n=e[t[i]].uv;if(a.push(this._uvToMapPosition(s)),Math.abs(s.x-n.x)>.5){const e=(s.y+n.y)/2,t=s.x<n.x?0:1;a.push(this._uvToMapPosition(new Vector2(t,e))),a.push(this._uvToMapPosition(new Vector2(1-t,e)))}a.push(this._uvToMapPosition(n))}});const o=(new BufferGeometry).setFromPoints(a),r=new LineSegments(o,n);r.name="clusterLine",null===(s=this._scene)||void 0===s||s.add(r)}_uvToMapPosition(e){return new Vector3(2*e.x-1,e.y-.5,0)}}class EnvironmentPmremGenertor extends PMREMGenerator{constructor(e){super(e),this._extendedEquirectMaterial=this._createEquirectMaterial()}fromEquirectangularTexture(e,t){var i,s;const n=null!==(i=null==t?void 0:t.rotation)&&void 0!==i?i:0,a=null!==(s=null==t?void 0:t.intensity)&&void 0!==s?s:1;return this._extendedEquirectMaterial.uniforms.intensity.value=a,this._extendedEquirectMaterial.uniforms.rotationMatrix.value.set(Math.cos(n),0,-Math.sin(n),0,1,0,Math.sin(n),0,Math.cos(n)),super.fromEquirectangular(e)}_createEquirectMaterial(){const e=new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},intensity:{value:1},rotationMatrix:{value:new Matrix3}},vertexShader:equilateralVertexShader,fragmentShader:equilateralFragmentShader,blending:NoBlending,depthTest:!1,depthWrite:!1});return this._equirectMaterial=e,e}}const equilateralVertexShader="\nprecision mediump float;\nprecision mediump int;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nuniform mat3 rotationMatrix;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection( vec2 uv, float face ) {\n uv = 2.0 * uv - 1.0;\n vec3 direction = vec3( uv, 1.0 );\n if ( face == 0.0 ) {\n direction = direction.zyx; // ( 1, v, u ) pos x\n } else if ( face == 1.0 ) {\n direction = direction.xzy;\n direction.xz *= -1.0; // ( -u, 1, -v ) pos y\n } else if ( face == 2.0 ) {\n direction.x *= -1.0; // ( -u, v, 1 ) pos z\n } else if ( face == 3.0 ) {\n direction = direction.zyx;\n direction.xz *= -1.0; // ( -1, v, -u ) neg x\n } else if ( face == 4.0 ) {\n direction = direction.xzy;\n direction.xy *= -1.0; // ( -u, -1, v ) neg y\n } else if ( face == 5.0 ) {\n direction.z *= -1.0; // ( u, v, -1 ) neg z\n }\n return direction;\n}\n\nvoid main() {\n vOutputDirection = rotationMatrix * getDirection(uv, faceIndex);\n gl_Position = vec4(position, 1.0);\n}\n",equilateralFragmentShader="\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform float intensity;\n\n#include <common>\n\nvoid main() { \n vec3 outputDirection = normalize(vOutputDirection);\n vec2 uv = equirectUv(outputDirection);\n gl_FragColor = vec4(texture2D(envMap, uv).rgb * intensity, 1.0);\n}\n";class EnvironmentSceneGenerator{}class EnvironmentDefinition{get lightSources(){return this._lightSources}set rotation(e){this._rotation!==e&&(this._rotation=e,this.needsUpdate=!0)}set intensity(e){this._intensity!==e&&(this._intensity=e,this.needsUpdate=!0)}set maxNoOfLightSources(e){this._maxNoOfLightSources!==e&&(this._maxNoOfLightSources=e,this.needsUpdate=!0)}get maxNoOfLightSources(){return this._maxNoOfLightSources}constructor(e,t){var i,s;this.needsUpdate=!0,this._lightSources=[],e instanceof EnvironmentSceneGenerator?this.environmentSceneGenerator=e:e instanceof CubeTexture?this.cubeTexture=e:e instanceof Texture&&(this.equirectangularTexture=e),(null==t?void 0:t.textureData)&&(this.textureData=null==t?void 0:t.textureData),this._rotation=null!==(i=null==t?void 0:t.rotation)&&void 0!==i?i:0,this._intensity=null!==(s=null==t?void 0:t.intensity)&&void 0!==s?s:1,void 0!==(null==t?void 0:t.maxNoOfLightSources)&&(this._maxNoOfLightSources=t.maxNoOfLightSources),this._parameters=t,this._environment=e}clone(){return new EnvironmentDefinition(this._environment,this._parameters)}createNewEnvironment(e){const t=this._createPmremTexture(e),i=this._detectLightSources(e,t);return this._lightSources=i.lightSources,null!=t?t:null}_getTextureOffset(){const e=this._rotation/(2*Math.PI)%1;return new Vector2(e,0)}_createPmremTexture(e){const t=new EnvironmentPmremGenertor(e);let i;if(this.equirectangularTexture)this.equirectangularTexture.offset.copy(this._getTextureOffset()),i=t.fromEquirectangularTexture(this.equirectangularTexture,{rotation:this._rotation,intensity:this._intensity});else if(this.cubeTexture)i=t.fromCubemap(this.cubeTexture);else if(this.environmentSceneGenerator){const e=this.environmentSceneGenerator.generateScene(this._intensity,this._rotation);i=t.fromScene(e,.04)}return this._debugScene=void 0,this.needsUpdate=!1,null==i?void 0:i.texture}_detectLightSources(e,t){const i=new LightSourceDetector;return this.equirectangularTexture&&0===this.rotation?i.detectLightSources(e,this.equirectangularTexture,this.textureData):t&&i.detectLightSources(e,t),i}createDebugScene(e,t,i){const s=null!=i?i:-1;if(this._debugScene&&s===this._debugScene.userData.maximumNumberOfLightSources)return this._debugScene;this._debugScene=new Scene;const n=new EnvironmentMapDecodeMaterial(!0,!1);n.setSourceTexture(t.environment),LightSourceDetectorDebug.createPlane(this._debugScene,n);const a=this._detectLightSources(e,t.environment);return new LightSourceDetectorDebug(a).createDebugScene(this._debugScene,s),this._debugScene.userData.maximumNumberOfLightSources=s,this._debugScene}}class DefaultEnvironmentSceneGenerator extends EnvironmentSceneGenerator{constructor(e={}){super(),this._parameters={},this._parameters=e}generateScene(e,t){const i=new DefaultEnvironmentScene({...this._parameters,lightIntensity:e*(this._parameters.lightIntensity||1),topLightIntensity:e*(this._parameters.topLightIntensity||1),sidLightIntensity:e*(this._parameters.sidLightIntensity||1)});return i.rotation.y=t,i}}class DefaultEnvironmentScene extends Scene{constructor(e={}){var t;super(),this._type=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:"all_around",this._topLightIntensity=(null==e?void 0:e.topLightIntensity)||(null==e?void 0:e.lightIntensity)||1,this._sideLightIntensity=(null==e?void 0:e.sidLightIntensity)||(null==e?void 0:e.lightIntensity)||1,this._sideReflectorIntensity=(null==e?void 0:e.sidLightIntensity)||(null==e?void 0:e.lightIntensity)||1;const i="front"===this._type?.3:0;this._ambientLightIntensity=(null==e?void 0:e.ambientLightIntensity)||i,this._colorVariation=(null==e?void 0:e.colorVariation)||.5,this._lightGeometry=new BoxGeometry,this._lightGeometry.deleteAttribute("uv"),this._reflectorLightGeometry=new CylinderGeometry(.7,.4,2,32),this._reflectorLightGeometry.deleteAttribute("uv"),this.generateScene(this)}generateScene(e){switch(this._type){default:case"all_around":this._createAllAroundSceneLight(e);break;case"front":this._createFrontSceneLight(e)}}dispose(){const e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(const t of e)t.dispose()}_createAllAroundSceneLight(e){const t=this._ambientLightIntensity;this.background=new Color(t,t,t),this._createTopLight(e,6,1);for(let t=0;t<6;t++){const i=t*Math.PI*2/6,s=Math.sin(i),n=Math.cos(i);t%2==0?this._createReflector(e,new Vector2(s,n),3,1,.8,.2):this._createSideLight(e,new Vector2(s,n),(t-1)/2,15,1.1,.33,1)}}_createFrontSceneLight(e){const t=this._ambientLightIntensity;this.background=new Color(t,t,t),this._createTopLight(e,6,.7);for(let t=0;t<6;t++){const i=t*Math.PI*2/6,s=Math.sin(i),n=Math.cos(i);if(0===t){this._createReflector(e,new Vector2(s,n),1.1,.6,.8,-.4);for(let i=0;i<2;i++){const s=(t-.3+.6*i)*Math.PI*2/6,n=Math.sin(s),a=Math.cos(s);this._createSideLight(e,new Vector2(n,a),(t-1)/2,50,1.2,.7,.8)}}else this._createReflector(e,new Vector2(s,n),1.1,.7,1.4,0)}}_createAreaLightMaterial(e,t,i){const s=new MeshBasicMaterial;return s.color.set(e,null!=t?t:e,null!=i?i:e),s}_createTopLight(e,t,i){const s=new Mesh(this._lightGeometry,this._createAreaLightMaterial(t*this._topLightIntensity));s.position.set(0,20,0),s.scale.set(5*i,.1,5*i),e.add(s)}_createSideLight(e,t,i,s,n,a,o){for(let r=0;r<3;r++){const h=s*this._sideLightIntensity,c=new Mesh(this._lightGeometry,this._createAreaLightMaterial((r+i)%3==0?h:h*(1-this._colorVariation),(r+i)%3==1?h:h*(1-this._colorVariation),(r+i)%3==2?h:h*(1-this._colorVariation))),l=(1===r?-t.y:2===r?t.y:0)/Math.sqrt(2),d=0===r?0:1,_=(1===r?t.x:2===r?-t.x:0)/Math.sqrt(2);c.position.set(t.x*o*15+1.1*l*n,15*a+1.1*d*n,t.y*o*15+1.1*_*n),c.rotation.set(0,Math.atan2(t.x,t.y),0),c.scale.setScalar(n),e.add(c)}}_createReflector(e,t,i,s,n,a){const o=new Mesh(this._reflectorLightGeometry,this._createAreaLightMaterial(i*this._sideReflectorIntensity));o.position.set(15*t.x,10*a,15*t.y),o.scale.set(10*s,10*n,10*s),e.add(o)}}class CameraControl2D extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._scale=1,this._cameraZoom=1,this._state=0,this._size=5,this._lastPosition=new Vector2,this._zoomPosition=new Vector3,this._lastZoom=0,this._wasZooming=!1,this._zoomSpeed=Math.pow(.95,2),s?(this._camera=s,this._cameraPosition=(new Vector3).copy(this._camera.position)):this._initCamera(i?new Vector3(i.targetX,10,i.targetZ):new Vector3(0,10,0)),this._lerpEnabled=!1}_getCamera(){return this._camera||this._initCamera(new Vector3(0,10,0)),this._camera}_initCamera(e){let{x:t,y:i}=this._domHelper.getClientDimensions(),s=(t/i||1)*this._size,n=this._size;this._camera=new OrthographicCamera(s/-2,s/2,n/2,n/-2,1,1e3),this._camera.position.copy(e),this._cameraPosition=e,this._camera.lookAt(new Vector3(0,0,0))}updateCamera(){let e=this._domHelper.getAspectRatio()*this._size,t=this._size;this._camera.left=e/-2,this._camera.right=e/2,this._camera.top=t/2,this._camera.bottom=t/-2,this._camera.updateProjectionMatrix()}_initInputListener(){this._inputListeners.push({key:3,fun:e=>{this._locked||(this._state=1,this._lastPosition.set(e.positionRelative.x,e.positionRelative.y),this.dispatchEvent(0))}}),this._inputListeners.push({key:6,fun:e=>{this._lastPosition.x===e.positionRelative.x&&this._lastPosition.y===e.positionRelative.y||1!==this._state||this._locked||(this._move(new Vector2(e.positionRelative.x,e.positionRelative.y),e.type),this.dispatchEvent(1))}}),this._inputListeners.push({key:4,fun:e=>{1===this._state&&this.dispatchEvent(2),this._state=0}}),this._inputListeners.push({key:7,fun:e=>{e.event&&(e.event.stopPropagation(),e.event.preventDefault()),this.dispatchEvent(3),this._scale/=this._zoomSpeed,this._zoomTo(e.positionRelative),this._update()}}),this._inputListeners.push({key:8,fun:e=>{e.event&&(e.event.stopPropagation(),e.event.preventDefault()),this.dispatchEvent(4),this._scale*=this._zoomSpeed,this._zoomTo(e.positionRelative),this._update()}})}_zoomTo(e){if(Date.now()-this._lastZoom>200){let t=new Vector3(e.x,e.y,0);t.unproject(this._camera),this._zoomPosition.copy(t)}this._lastZoom=Date.now()}_move(e,t){let i=new Vector3,s=new Vector3(this._lastPosition.x,this._lastPosition.y,0),n=new Vector3(e.x,e.y,0);s.unproject(this._camera),n.unproject(this._camera),i.subVectors(n,s),this._cameraPosition.x-=i.x*(2===t?1.1:1),this._cameraPosition.z-=i.z*(2===t?1.1:1),this._lastPosition.copy(e)}zoomToFitBounds(e,t,i){if(compareBox3Size(e,this._boundingBox)<0&&!i)return void this.setBounds(e);this.setBounds(e);const s=e.getSize(new Vector3),n=e.getCenter(new Vector3),a=s.x/-2/this._camera.left,o=s.z/-2/this._camera.bottom,r=1/Math.max(a,o);(r<this._cameraZoom||t)&&(this._scale=r,this._cameraZoom=r,this._cameraPosition.x=n.x,this._cameraPosition.z=n.z)}_update(e,t,i){this._scale=Math.min(this._scale,5),this._scale=Math.max(this._scale,.1);let s=(new Vector3).subVectors(this._zoomPosition,this._cameraPosition).multiplyScalar((this._scale-this._cameraZoom)/this._scale);this._cameraPosition.x+=s.x,this._cameraPosition.z+=s.z,this._cameraZoom!==this._scale&&this.dispatchEvent(5,new ZoomChangeEvent(.1===this._scale,5===this._scale)),this._cameraZoom=this._scale,this._camera.updateProjectionMatrix()}animateCamera(e){const t=Math.abs(this._cameraZoom-this._camera.zoom)>.01;if(this._lerpEnabled=t,t&&(this._wasZooming=!0),this._wasZooming&&!t&&(setTimeout(()=>this._dispatchCameraIdle(),16),this._wasZooming=!1),!super.animateCamera(e)&&!t)return!1;this._lerpEnabled=!1;const i=Math.min(10*e,1);return this._camera.zoom=MathUtils.lerp(this._camera.zoom,this._cameraZoom,i),!0}getKernelZoomFactor(){const e=1e3*(this._camera.right-this._camera.left);return this._domHelper.element.clientWidth/e*this._camera.zoom}}const INTERIOR_LIGHTS_ENV_MAP_INTENSITY=.35,INTERIOR_LIGHTS_ENV_MAP_ROTATION=1.16;class SceneManager{get cameraBehaviour(){return this._cameraBehaviour}onBeforeRender(){}constructor(e,t,i,s){this._depthWriteMaterial=new MeshBasicMaterial({colorWrite:!1}),this._maxAnisotropy=1,this._clock=new Clock,this._delta=0,this._renderListener=null,this._stopRendering=!1,this._roomleRenderer=null,this._forceRender=!1,this._lastChange=Date.now(),this._running=!1,this._isInteriorLightActive=!1,this._perspectiveOffsetCamera=null,this._orthographicOffsetCamera=null,this._onAfterRender=()=>{},this._creator_=e,this._canvasID=i,this._isInteriorLightActive=this._initData.featureFlags.interiorLights,this._renderListener=()=>{this._requestRender()},this.createCameraControl(sanitizedCameraMode(s),t),this._setupScene(t,this._initData.transparentBackground),this._lifeCycleManager.addEventListener(this)}addEventListener(e){throw new Error("Method not implemented.")}removeEventListener(e){throw new Error("Method not implemented.")}_changeCameraBehaviour(e){this._cameraBehaviour&&(this.cameraBehaviour.cameraControl instanceof CameraControlFirstPerson&&(this._getInputManager().removeEventListener(7,this._renderListener),this._getInputManager().removeEventListener(8,this._renderListener)),this._cameraBehaviour.cameraControl.cleanUp()),this._cameraBehaviour=e,this._cameraBehaviour.cameraControl.setUp(),this._cameraBehaviour.setCameraChangeListener(this.onCameraChanged.bind(this)),e.cameraControl instanceof CameraControlFirstPerson&&(this._getInputManager().addEventListener(7,this._renderListener,this),this._getInputManager().addEventListener(8,this._renderListener,this)),this.cameraBehaviourChanged()}onCameraChanged(){}cameraBehaviourChanged(){this.cameraBehaviour.cameraControl instanceof CameraControl3D&&this.cameraBehaviour.cameraControl.updateDistanceAndRangesBasedOnBounds(this.getBounds())}_addCameraControlListener(){this.cameraBehaviour.cameraControl.addEventListener(0,()=>{var e;null===(e=this._roomleRenderer)||void 0===e||e.movingCameraStarts(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(1,this._requestRender,this),this.cameraBehaviour.cameraControl.addEventListener(2,()=>{var e;null===(e=this._roomleRenderer)||void 0===e||e.movingCameraStops(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(6,this._requestRender,this)}_renderEverything(){this._roomleRenderer&&(this._forceRender=!0,this._roomleRenderer.forceShadowUpdates(!1)),this._requestRender()}_renderWithoutShadowsAndAO(){this._roomleRenderer&&(this._forceRender=!0),this._requestRender()}_requestRender(){if(!this._renderer||this._stopRendering)return;const e=()=>{var t,i;if(this._delta=this._clock.getDelta(),this._animateCamera(),this.cameraBehaviour.cameraControl.getCamera().layers.mask=65535,this._renderLoopFunction&&(this._renderLoopFunction(),this._renderLoopFunction=null),this.onBeforeRender(),this._globalInitData.e2e&&window.TWEEN){const e=TWEEN.getAll();for(const t of e)t.end()}if(this._roomleRenderer)null===(t=this._statsHelper)||void 0===t||t.updateRenderInfo(this._roomleRenderer.renderer.info),this._roomleRenderer.render(this._scene,this.cameraBehaviour.cameraControl.getCamera()),this._forceRender=!1,this._shouldRenderUi()&&this._renderUi();else{null===(i=this._statsHelper)||void 0===i||i.updateRenderInfo(this._renderer.info);const e=this.cameraBehaviour.cameraControl.getCamera();e.updateMatrixWorld(),e.updateProjectionMatrix(),this._renderer.render(this._scene,e)}this._onAfterRender(),window.TWEEN&&TWEEN.update(),this._lastChange+3e3<Date.now()||this._stopRendering?this._running=!1:(this._running=!0,requestAnimationFrame(e))};this._lastChange=Date.now(),this._running||this._stopRendering||(this._running=!0,requestAnimationFrame(e))}_shouldRenderUi(){var e;return null===(e=this._pluginSystem)||void 0===e?void 0:e.needsUiScene()}_renderUi(){const e=this._scene.background?this._scene.background.clone():null;this._scene.overrideMaterial=this._depthWriteMaterial,this._scene.background=null,this._renderer.render(this._scene,this.cameraBehaviour.cameraControl.getCamera()),this._scene.overrideMaterial=null;const t=this._renderer.autoClear;this._renderer.autoClear=!1,this._renderer.clearDepth(),this._renderer.render(this._uiScene,this.cameraBehaviour.cameraControl.getCamera()),this._renderer.autoClear=t,this._scene.background=e}_animateCamera(){this.cameraBehaviour.cameraControl&&(this.cameraBehaviour.cameraControl.animateCamera(this._delta)||!this.shouldClearShadowsAndAO()||this._forceRender)&&this._lightSetting instanceof DynamicLightSetting&&this.cameraBehaviour.cameraControl.getCamera()instanceof PerspectiveCamera&&this._lightSetting.update(this.cameraBehaviour.cameraControl.getCamera(),this.cameraBehaviour.cameraControl.getTargetPosition()),this._environment&&this._environment.needsCamera()&&this.cameraBehaviour.cameraControl instanceof CameraControl3D&&this._environment.updateCamera(this.cameraBehaviour.cameraControl.getCamera())}shouldClearShadowsAndAO(){return!1}_setupScene(e,t){var i,s,n,a;const{x:o,y:r}=this._domHelper.getClientDimensions();this._scene=new Scene,this._uiScene=new Scene,(t=t||!1)||(this._scene.background=this._initData.colors.DEFAULT_BACKGROUND),this._renderer=new WebGLRenderer({antialias:!this._globalInitData.e2e,alpha:!0}),!0!==(null===(i=this._initData)||void 0===i?void 0:i.debug)&&void 0!==(null===(s=this._renderer)||void 0===s?void 0:s.debug)&&(this._renderer.debug.checkShaderErrors=!1);const h=this._initData.autoQuality?Math.min(window.devicePixelRatio,1.5):window.devicePixelRatio;this._renderer.setPixelRatio(h),this._renderer.setSize(o,r),this._renderer.outputColorSpace=SRGBColorSpace,this._renderer.autoClear=!1,this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=PCFSoftShadowMap,this._maxAnisotropy=this._renderer.capabilities.getMaxAnisotropy(),this._globalInitData.e2e||(this._roomleRenderer=new RoomleWebGLRenderer(this._renderer,o,r,null!==(n=this._initData.linearAoFilter)&&void 0!==n&&n),this._initData.debug&&this._roomleRenderer.sceneRenderer.loadLutImages(lutImages),this._roomleRenderer.setQualityMap(standaloneConfiguratorQualityLevels),this._roomleRenderer.setAutoQuality(this._initData.autoQuality),this._roomleRenderer.setShadingType(this._initData.shading),this._roomleRenderer.setCustomShadingParameters(this._initData.customShading,this._initData.customShadingMoc),null===(a=this._roomleRenderer)||void 0===a||a.setSize(o,r),this._roomleRenderer.sceneRenderer.outlineRenderer.parameters.hiddenEdgeColor=this._initData.colors.SELECTION.getHex(),this._roomleRenderer.sceneRenderer.outlineRenderer.parameters.visibleEdgeColor=this._initData.colors.SELECTION.getHex(),this._roomleRenderer.sceneRenderer.outlineRenderer.applyParameters()),this._renderer.domElement.classList.add(this._canvasID),this._domHelper.element.appendChild(this._renderer.domElement),this._getInputManager().addEvents(this._renderer.domElement),this._hdrEnvironmentLoader.registerEnvironmentChangedCallback(e=>{this._setEnvMap(e)}),this._initData.legacyLight?this.loadEnvMap("static/legacy_env-d5810ec5057d4716.exr"):this._initData.sceneLight?this._setDefaultEnvironmentScene():this.loadEnvMap(this._initData.envMapUrl),this._requestRender(),window.addEventListener("resize",this,!1),window.addEventListener("keydown",this,!1),window.addEventListener("keyup",this,!1),document.addEventListener("visibilitychange",this),this._pluginSystem.init(this._scene,this._uiScene,this.cameraBehaviour.cameraControl.getCamera().position),this._addCameraControlListener(),this.sceneChanged()}async loadEnvMap(e){await this._hdrEnvironmentLoader.loadUrl(this._renderer,e)}_getEnvMapIntensityAndRotation(){let e=this._initData.envMapIntensity,t=this._initData.envMapRotation;return e===DEFAULT_ENV_MAP_INTENSITY&&this._isInteriorLightActive&&(e=.35),t===DEFAULT_ENV_MAP_ROTATION&&this._isInteriorLightActive&&(t=1.16),{intensity:e,rotation:t}}_setDefaultEnvironmentScene(){const e=this._initData.sceneLight,{intensity:t,rotation:i}=this._getEnvMapIntensityAndRotation();this._scene.userData.environmentDefinition=new EnvironmentDefinition(new DefaultEnvironmentSceneGenerator({type:e}),{rotation:i,intensity:t,maxNoOfLightSources:this._initData.maxLightSources}),this._scene.userData.shadowFromEnvironment=!0,this._requestRender()}_setEnvMap(e){const{url:t,environmentMap:i}=e,{intensity:s,rotation:n}=this._getEnvMapIntensityAndRotation();this._scene.environment=i,this._scene.userData.environmentDefinition=new EnvironmentDefinition(i,{rotation:n,intensity:this._initData.legacyLight?.9:s,maxNoOfLightSources:this._initData.maxLightSources}),this._scene.userData.shadowFromEnvironment=!this._initData.legacyLight,this._environment instanceof GroundProjectedEnvironment&&this._environment.updateEnvironmentTexture(i),t!==ENV_HDR_256_FILE_NAME||this._globalInitData.e2e||window.requestIdleCallback(this.loadEnvMap.bind(this,"static/default_1k-2aa6d42244d30fb1.exr")),this._requestRender()}_tabVisible(){this.updateCamera(!1)}_releaseKeystrokeStates(){const e=["Shift","Meta","Control","Escape"];for(const t of e){const e=new KeyboardEvent("keyup",{key:t});this._onKeyUp(e,!0)}}updateCamera(e=!0){var t;const{x:i,y:s}=this._domHelper.getClientDimensions();null===(t=this._roomleRenderer)||void 0===t||t.setSize(i,s),this.cameraBehaviour.cameraControl.updateCamera(),this._renderEverything()}_onWindowResize(){const e=this._getInputManager();e&&e.updateSize(),this.updateCamera(),this._requestRender()}_isPartOfScene(e){return"Object3D"===e.type||"Mesh"===e.type||"GLB"===e.type||"GLTF"===e.type||"Group"===e.type}cleanUp(){this._getInputManager().removeEventListener(7,this._renderListener),this._getInputManager().removeEventListener(8,this._renderListener),this.cameraBehaviour.cameraControl&&this.cameraBehaviour.cameraControl.cleanUp(),this._stopRendering=!0}clearScene(){let e=[];this._scene.children.forEach(t=>{this._isPartOfScene(t)&&e.push(t)}),e.forEach(e=>{dispose(e),this._scene.remove(e)}),this._renderer.renderLists.dispose()}enableHD(e){this._renderer.capabilities.maxTextures>8&&e&&this.loadDynamicLightSetting(e),this._requestRender()}_loadGLTF(e,t,i,s,n,a,o){return new Promise((r,h)=>{this._staticItemLoader.loadGLTF(e,t,i,s,n,a,null,o).then(e=>{r(e.scene)},h)})}_loadGLB(e,t,i,s,n,a,o,r){return new Promise((h,c)=>{this._staticItemLoader.loadGLB(e,t,i,s,n,a,o,r).then(e=>{h(e.scene)},c)})}showGUI(){if(this._initData.disableDebugGUI)return;const e=document.createElement("style");e.innerText=".dg.main{position:absolute;z-index:999;top:0;left:0;}",document.head.appendChild(e);let t=getGUI(!1);t&&(this._domHelper.element.appendChild(t.domElement),t.domElement.style.zIndex="999",t.domElement.style.overflowY="auto",t.domElement.style.maxHeight=this._domHelper.element.clientHeight+"px",this._guiLoaded())}_guiLoaded(){let e=getGUI();if(!e)return;const t=e.addFolder("Scene Parameter"),i={intensity:this._initData.envMapIntensity,rotation:this._initData.envMapRotation};t.add(i,"intensity",0,4,.01).name("env map intensity").onChange(e=>{this.changeEnvironmentMapIntensity(e),this._requestRender()}),t.add(i,"rotation",0,2*Math.PI,.01).name("env map rotation").onChange(e=>{this._scene.userData.environmentDefinition.rotation=e,this._requestRender()}),this._lightSetting&&this._lightSetting.showGUI(),this._roomleRenderer&&this._roomleRenderer.showGUI(()=>this._requestRender()),this._environment&&this._environment.showGUI(()=>this._requestRender()),this._addGUIListener(e)}_addGUIListener(e){let t=e.__folders;Object.keys(t).forEach(e=>{let i=t[e];i.__folders&&Object.keys(i.__folders).forEach(e=>{let t=i.__folders[e];this._addGUIListener(t)}),i.__controllers&&i.__controllers.forEach(e=>{e.onFinishChange(()=>{this._guiParamChanged()})})})}_guiParamChanged(){this._renderEverything()}showStats(){import("./stats-helper-535b71de.js").then(e=>this._statsHelper=new e.default)}_onKeyDown(e){}_onKeyUp(e,t=!1){}pause(){this._getInputManager().removeEvents(this._renderer.domElement),window.removeEventListener("resize",this,!1),window.removeEventListener("keydown",this,!1),window.removeEventListener("keyup",this,!1),document.removeEventListener("visibilitychange",this)}resume(){this._renderer.domElement.classList.add(this._canvasID),this._domHelper.element.appendChild(this._renderer.domElement),this._getInputManager().addEvents(this._renderer.domElement),window.addEventListener("resize",this,!1),window.addEventListener("keydown",this,!1),window.addEventListener("keyup",this,!1),document.addEventListener("visibilitychange",this),this.updateCamera()}destroy(){this.pause(),this.cleanUp()}handleEvent(e){switch(e.type){case"resize":this._onWindowResize();break;case"keydown":if(e.target&&(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))break;this._onKeyDown(e);break;case"keyup":if(e.target&&(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))break;this._onKeyUp(e);break;case"visibilitychange":this._tabVisible(),this._releaseKeystrokeStates()}}async loadSceneSettings(e){let t,i;return t=e.environment?new Promise(t=>{(new DynamicEnvironmentSettingLoader).load(this._scene,this._renderer.domElement,this._environment,e,this._maxAnisotropy).then(e=>{this._setEnvironment(e),t()})}):Promise.resolve(),e.lights?(this._lightSetting=new DynamicLightSetting(this._scene,this._lightSetting),i=this._lightSetting.loadFromObject(e)):i=Promise.resolve(),new Promise((e,s)=>{Promise.all([t,i]).then(()=>{this._renderEverything(),e()},s)})}setBackgroundColor(e){this._setEnvironment(new BackgroundEnvironment(this._scene,this._environment,new Color(e)))}setBackgroundImage(e){this._setEnvironment(new BackgroundEnvironment(this._scene,this._environment,null,this._renderer.domElement,e))}_setEnvironment(e){this._environment=e,this._renderEverything()}async loadDynamicLightSetting(e){this._lightSetting=new DynamicLightSetting(this._scene,this._lightSetting);let t=!1;if(e.url)await this._lightSetting.loadFromURL(e.url),t=!0;else if(e.json)await this._lightSetting.loadFromJSON(e.json),t=!0;else if(e.object)await this._lightSetting.loadFromObject(e.object),t=!0;else if(e.ls){const i=DynamicLightSettingLoader.createDynamicLightSettingSource(null,e.ls);await this._lightSetting.loadFromURL(i.url),t=!0}if(!t)throw new Error("No dynamic light setting source set");this._requestRender()}getScene(){return this._scene}updateScene(){var e;this._updateBounds(this.getBounds(),this.getGeometryBounds()),null===(e=this._roomleRenderer)||void 0===e||e.forceShadowUpdates(!0),this._renderEverything()}_updateBounds(e,t,i=!1){var s;if(!e)return;const n=null!=t?t:e;this.updateEnvironment(n,i),this._lightSetting&&this._lightSetting.needsBounds()&&this._lightSetting.updateBounds(e),null===(s=this._roomleRenderer)||void 0===s||s.updateBounds(n),this._requestRender(),this._pluginSystem.updateBounds(e)}setCameraOffset(e){const t=this.cameraBehaviour.cameraControl.getCamera(),i=t||t;(null==i?void 0:i.offset)?(i.offset=e,this._renderEverything()):console.warn("Cannot set offset, current camera does not support it")}getCameraOffset(){var e,t;const i=null===(t=null===(e=this.cameraBehaviour)||void 0===e?void 0:e.cameraControl)||void 0===t?void 0:t.getCamera(),s=i||i;return(null==s?void 0:s.offset)?JSON.parse(JSON.stringify(s.offset)):{left:0,top:0,right:1,bottom:1}}getOrthographicOffsetCamera(){if(!this._orthographicOffsetCamera){const e=this.getCameraOffset(),t=5;let i=this._domHelper.getAspectRatio()*t,s=t;const n=RoomleComponentFactoryInitializer();this._orthographicOffsetCamera=n.createOrthographicCamera(i/-2,i/2,s/2,s/-2,1,1e3,e),this._orthographicOffsetCamera.position.set(0,10,0),this._orthographicOffsetCamera.lookAt(new Vector3(0,0,0))}return this._orthographicOffsetCamera}getPerspectiveOffsetCamera(){if(!this._perspectiveOffsetCamera){const e=this.getCameraOffset(),t=this._domHelper.getClientDimensions(),i=t.x,s=t.y,n=RoomleComponentFactoryInitializer();this._perspectiveOffsetCamera=n.createPerspectiveCamera(30,i/s,.1,20,e)}return this._perspectiveOffsetCamera}updateEnvironment(e,t=!1){var i;if(e&&this._environment&&this._environment.needsBounds()){const i=e.getSize(new Vector3);(i.x+i.y+i.z!==0||t)&&this._environment.updateBounds(e.getSize(new Vector3),t)}null===(i=this._roomleRenderer)||void 0===i||i.updateBounds(e)}_onCameraIdle(){return!0}_onCameraMove(){return!0}_waitForAssets(){return Promise.resolve()}async exportCanvasScreenshot(e=1){return await this._waitForAssets(),new Promise(t=>{this._onAfterRender=()=>{const i=this._renderer.domElement.toDataURL(this._initData.transparentBackground?"image/png":"image/jpeg",e);t(i),this._onAfterRender=()=>{}},this._requestRender()})}async exportImageFromCamera(e,t=!1){return t&&await this._waitForAssets(),new Promise((t,i)=>{this._onAfterRender=()=>{this._onAfterRender=()=>{};const s=this._renderer.domElement.toDataURL("image/jpeg",1),{left:n,right:a,top:o,bottom:r}=this.getCameraOffset(),h=a-n,c=o-r;if(1===h&&1===c)return download(e,s),void t();const l=new Image;l.src=s,l.onload=()=>{const{naturalWidth:i,naturalHeight:s}=l,a=document.createElement("canvas");a.width=i*h,a.height=s*c;const r=a.getContext("2d"),d=i*n*-1,_=s*(1-o)*-1;r.drawImage(l,d,_),r.save(),download(e,a.toDataURL("image/jpeg",1)),t()},l.onerror=i},this._requestRender()})}changeEnvironmentMapIntensity(e){this._scene.userData.environmentDefinition.intensity=e}lockCamera(){this.cameraBehaviour.cameraControl.lock()}unlockCamera(){this.cameraBehaviour.cameraControl.unlock()}setEnvironmentMap(e,t,i,s){void 0!==e&&this._hdrEnvironmentLoader.loadUrl(this._renderer,e),void 0!==t&&(this._scene.userData.environmentDefinition.intensity=t),void 0!==i&&(this._scene.userData.environmentDefinition.rotation=i),void 0!==s&&(this._scene.userData.environmentDefinition.maxNoOfLightSources=s,this._roomleRenderer.forceShadowUpdates(!1)),this._requestRender()}_getCameraControl3D(e){return this._cameraControl3D?e&&this._cameraControl3D.setCurrentCameraParameters(e):this._cameraControl3D=new CameraControl3D(this._creator_,this._getInputManager(),e,this.getPerspectiveOffsetCamera()),this._cameraControl3D}_getCameraControl2D(){return this._cameraControl2D||(this._cameraControl2D=new CameraControl2D(this._creator_,this._getInputManager(),null,this.getOrthographicOffsetCamera())),this._cameraControl2D}_getCameraControlFirstPerson(){return this._cameraControlFirstPerson||(this._cameraControlFirstPerson=new CameraControlFirstPerson(this._creator_,this._getInputManager(),null,this.getPerspectiveOffsetCamera())),this._cameraControlFirstPerson}}__decorate([inject],SceneManager.prototype,"_domHelper",void 0),__decorate([inject],SceneManager.prototype,"_scriptLoader",void 0),__decorate([inject],SceneManager.prototype,"_lifeCycleManager",void 0),__decorate([inject],SceneManager.prototype,"_staticItemLoader",void 0),__decorate([inject],SceneManager.prototype,"_hdrEnvironmentLoader",void 0),__decorate([inject],SceneManager.prototype,"_initData",void 0),__decorate([inject],SceneManager.prototype,"_globalInitData",void 0),__decorate([inject],SceneManager.prototype,"_globalCallback",void 0),__decorate([inject],SceneManager.prototype,"_idbManager",void 0),__decorate([inject],SceneManager.prototype,"_pluginSystem",void 0),__decorate([inject],SceneManager.prototype,"_imageRenderer",void 0),__decorate([inject],SceneManager.prototype,"_cameraBehaviourState",void 0);class CameraBehaviour{constructor(e,t){var i;return this._state=null,this._cameraChangeListener=null,this._cameraControl=e,this._state=t,(null===(i=window.__RML__DEBUG__)||void 0===i?void 0:i.camera)?traceMethodCalls(this,"CameraBehaviour"):this}get state(){return this._state}setCameraChangeListener(e){this._cameraChangeListener=e}removeCameraChangeListener(){this._cameraChangeListener=null}_onCameraChanged(){this._cameraChangeListener&&this._cameraChangeListener()}}export{BackgroundEnvironment as B,CameraControl3D as C,DISTANCE_FACTOR as D,FloorEnvironment as F,INTERIOR_LIGHTS_ENV_MAP_ROTATION as I,LightSetting as L,ObjectAnimations as O,PULSE_LOOPS as P,RoomleComponentFactoryInitializer as R,SceneManager as S,TWEEN_FILE_NAME as T,CameraControl as a,CameraBehaviour as b,PULSE_DURATION as c,CameraControl2D as d,CameraControlFirstPerson as e,INTERIOR_LIGHTS_ENV_MAP_INTENSITY as f};
2
- //# sourceMappingURL=camera-behaviour-441440ad.js.map
1
+ import{_ as __decorate,i as inject,E as EventDispatcher,z as toRadiant,a7 as position3VectorsAreEqual,a8 as position2VectorsAreEqual,v as compareBox3Size,X as getIdealDistance,Z as toDegrees,c as convertToThreeMatrix,a9 as setObjectMatrix,aa as animateObjectMatrix,ab as DOCK_PREVIEW_MATERIAL_OPACITY,ac as DOCK_PREVIEW_MATERIAL_ROUGHNESS,ad as DOCK_PREVIEW_MATERIAL_METALNESS,ae as DOCK_PREVIEW_MATERIAL_OPACITY_HOVERED,x as disposeMesh,af as MaterialCreator,ag as PREVIEW_MATERIAL_OPACITY,ah as PREVIEW_MATERIAL_COLOR,k as kernelBoxToThreeBox,y as convertToKernel,s as convertToTHREE,ai as PREVIEW_LINE_MATERIAL_OPACITY,m as mergeGeometries,aj as createMaterial,ak as addTexture,n as getGUI,al as rotationQuaternionsAreEqual,am as getDelta,an as MIN_MOVE_DISTANCE,ao as LightSourceDetector,ap as EnvironmentMapDecodeMaterial,aq as RoomleWebGLRenderer,ar as lutImages,as as standaloneConfiguratorQualityLevels,at as DEFAULT_ENV_MAP_INTENSITY,au as DEFAULT_ENV_MAP_ROTATION,av as ENV_HDR_256_FILE_NAME,U as dispose,K as DynamicLightSettingLoader}from"./roomle-dependency-injection-96d52877.js";import{a as Vector3,U as PerspectiveCamera,bG as debounce,V as Vector2,bI as areCameraParametersEqual,ae as Sphere,bM as clamp,Q as Quaternion,ag as Euler,aC as deepMerge,k as Matrix4,v as MeshStandardMaterial,C as Color,bN as setCursor,z as Mesh,O as Object3D,E as LineSegments,a_ as EdgesGeometry,bO as LineDashedMaterial,aP as BoxGeometry,ad as Box3,B as BufferGeometry,bP as CylinderGeometry,bQ as Line3,X as OrthographicCamera,bR as Shape,bS as Path,bT as ShapeGeometry,m as TextureLoader,bU as Fog,r as RepeatWrapping,w as DoubleSide,aZ as handleJsonResponse,S as SpotLight,A as AmbientLight,D as DirectionalLight,R as RectAreaLight,aS as SphereGeometry,h as MeshBasicMaterial,b9 as PlaneGeometry,a$ as CircleGeometry,u as LineBasicMaterial,bV as PMREMGenerator,ap as ShaderMaterial,ao as Matrix3,av as NoBlending,ah as CubeTexture,a9 as Texture,al as Scene,W as MathUtils,bW as Clock,bL as sanitizedCameraMode,bC as WebGLRenderer,i as SRGBColorSpace,bl as PCFSoftShadowMap,bJ as download,bX as traceMethodCalls}from"./main-thread-to-worker-7f1066e7.js";var TWEEN_FILE_NAME="static/Tween-d57ee5d181fce582.js";class CameraControl extends EventDispatcher{constructor(e,t,i){var s,n;if(super(),this._tweenEnd=null,this._cameraStandingStill=!0,this._distance=-1,this._locked=!1,this._inputListeners=[],this._lerpEnabled=!0,this._creator_=e,this._inputManager=t,this._initInputListener(),this._addInputListeners(),this._cameraPosition=new Vector3,this._targetPosition=new Vector3,i?this.setCurrentCameraParameters(i):(this._cameraPosition=new Vector3(0,.5,3),this._pitch=toRadiant(null!==(s=this._initData.verticalCameraAngle)&&void 0!==s?s:10),this._yaw=toRadiant(null!==(n=this._initData.horizontalCameraAngle)&&void 0!==n?n:-30)),this._initData.debug&&this._getCamera()instanceof PerspectiveCamera){const e=this.getDebugCameraPosition();e&&this.setCurrentCameraParameters(e)}let a=this._domHelper.getClientDimensions();this._width=a.x,this._height=a.y,this._dispatchCameraIdle=debounce(this._dispatchCameraIdle.bind(this),32)}getCamera(){return this._getCamera()}_addInputListeners(){this._inputListeners.forEach(e=>{this._inputManager.addEventListener(e.key,e.fun,this)})}_removeInputListeners(){this._inputListeners.forEach(e=>{this._inputManager.removeEventListener(e.key,e.fun)})}setUp(){this._inputListeners.length&&this._inputManager.hasEventListener(this._inputListeners[0].key,this._inputListeners[0].fun,this)||this._addInputListeners()}cleanUp(){this._removeInputListeners()}animateCamera(e){let t=this._cameraPosition;if(!t||position3VectorsAreEqual(t,this.getCamera().position))return this._cameraStandingStill||(this._cameraStandingStill=!0,setTimeout(()=>this._dispatchCameraIdle(),16),this._initData.debug&&this.saveDebugCameraPosition()),!1;if(this._cameraStandingStill&&this.dispatchEvent(7,3),this._cameraStandingStill=!1,!this._lerpEnabled||this._tweenEnd||this._globalInitData.e2e)this.getCamera().position.copy(t);else{let i=this.getCamera().position.clone();const s=Math.min(10*e,1);i.lerp(t,s),this.getCamera().position.copy(i)}return!0}getDebugCameraPosition(){return JSON.parse(localStorage.getItem("debug_camera_position"))}saveDebugCameraPosition(){localStorage.setItem("debug_camera_position",JSON.stringify(this.getCurrentCameraParameters()))}_dispatchCameraIdle(){this.dispatchEvent(8,3)}_tweenCameraParameter(e,t,i=!1){return this._globalInitData.e2e||!this._initData.animateCamera?(this.dispatchEvent(0,3),this.dispatchEvent(1,3),this._yaw=t.yaw,this._pitch=t.pitch,this._distance=t.distance,this._setCameraNear(),this._update(new Vector3(t.targetX,t.targetY,t.targetZ),i),this.dispatchEvent(1,3),this.dispatchEvent(2,3),this.dispatchEvent(8,3),Promise.resolve()):new Promise(s=>{if(t.yaw-e.yaw<=-Math.PI?e.yaw-=2*Math.PI:t.yaw-e.yaw>=Math.PI&&(e.yaw+=2*Math.PI),window.TWEEN){if(null!==this._tweenEnd&&this._tweenEnd.blockOtherTweens)return;this._tweenEnd=t,new TWEEN.Tween(e).to(t,400).easing(TWEEN.Easing.Sinusoidal.In).onUpdate(()=>{this.dispatchEvent(1,3),this._yaw=e.yaw,this._pitch=e.pitch,this._distance=e.distance,this._setCameraNear(),this._update(new Vector3(e.targetX,e.targetY,e.targetZ),i,!0)}).onComplete(()=>{this.dispatchEvent(2,3),this._dispatchCameraIdle(),this._tweenEnd=null,s()}).start(),this.dispatchEvent(0,3)}})}_setCameraNear(){const e=this.getCamera();if(e instanceof PerspectiveCamera){const t=Math.max(.1,this._distance/6);e.near=t}}getCurrentCameraParameters(){const e=this._targetPosition.clone();return{yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:e.x,targetY:e.y,targetZ:e.z}}setCurrentCameraParameters(e){var t,i,s;this._yaw=null!==(t=e.yaw)&&void 0!==t?t:0,this._pitch=null!==(i=e.pitch)&&void 0!==i?i:0,this._distance=null!==(s=e.distance)&&void 0!==s?s:0,this._targetPosition.copy(new Vector3(e.targetX,e.targetY,e.targetZ)),this._update(null,!0,!0)}_rotateHorizontal(e){this._yaw-=e,this._yaw<-Math.PI?this._yaw+=2*Math.PI:this._yaw>Math.PI&&(this._yaw-=2*Math.PI)}_rotateVertical(e){this._pitch+=e,this._pitch<-Math.PI?this._pitch+=2*Math.PI:this._pitch>Math.PI&&(this._pitch-=2*Math.PI)}saveState(e){if(e||!this._stateSaved){let e=this._yaw,t=this._pitch,i=this._distance,s=this._targetPosition.clone();if(this._stateSaved={yaw:e,pitch:t,distance:i,targetX:s.x,targetY:s.y,targetZ:s.z,blockOtherTweens:!0},this._getCamera().fov){let e=this._getCamera();this._stateSaved.fov=e.fov,this._stateSaved.near=e.near,this._stateSaved.far=e.far}return this._stateSaved}return null}resetToState(){if(this._stateSaved){this._stateSaved.blockOtherTweens=!1;let e=this._targetPosition.clone();this._tweenCameraParameter({yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:e.x,targetY:e.y,targetZ:e.z},this._stateSaved,!0)}this._stateSaved=null}async setToState(e,t){await this._tweenCameraParameter(e,t,!0)}hasSavedState(){return null!=this._stateSaved}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}getTargetPosition(){return this._targetPosition}_saveYawAndPitch(){this._getCamera().userData.yaw=this._yaw,this._getCamera().userData.pitch=this._pitch}getInputPosition(e){const{x:t,y:i}=this._domHelper.getClientDimensions();return new Vector3(e.x/t*2-1,-e.y/i*2+1,.5)}addLightContainer(e){e.name="lights";const t=this._getCamera(),i=t.children.find(e=>"lights"===e.name);i&&t.remove(i),t.add(e)}checkNearFarDistance(e){if(!e)return;const t=this._cameraPosition.distanceTo(e),i=this._getCamera();i instanceof PerspectiveCamera&&t>i.far&&(i.far=t+1)}setBounds(e){this._boundingBox=e}get domHelper(){return this._domHelper}}__decorate([inject],CameraControl.prototype,"_domHelper",void 0),__decorate([inject],CameraControl.prototype,"_initData",void 0),__decorate([inject],CameraControl.prototype,"_globalInitData",void 0);class ZoomChangeEvent{constructor(e,t){this.minZoom=!1,this.maxZoom=!1,this.minZoom=e,this.maxZoom=t}}const DISTANCE_FACTOR=2.725;class CameraControl3D extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._bounds=new Vector3,this._scale=1,this._state=0,this._zoomSpeed=Math.pow(.95,3),this.minDistance=0,this.maxDistance=5,this.minPolarAngle=toRadiant(0),this.maxPolarAngle=toRadiant(85),this._objectRotation=0,this._lookAtSide=0,this.minAzimuthAngle=Number.NEGATIVE_INFINITY,this.maxAzimuthAngle=Number.POSITIVE_INFINITY,this._zoomDistance=.1,this._userInteraction=!1,this._currentZoomHash="",this._maxZoomedIn=!1,this._maxZoomedOut=!1,this._panningEnabled=!1,this._targetPositionIsPanned=!1,s?this._camera=s:this._initCamera(),this._camera.fov=30,this._targetPosition||(this._targetPosition=new Vector3(0,0,0),this._targetPositionIsPanned=!1);const{cameraRestriction:n,zoomDistance:a,minVerticalCameraAngle:o,maxVerticalCameraAngle:r,minHorizontalCameraAngle:h,maxHorizontalCameraAngle:c}=this._initData;if(a&&(this._zoomDistance=a/100),void 0!==o&&(this.minPolarAngle=toRadiant(o<0?o:-1*o)),void 0!==r&&(this.maxPolarAngle=toRadiant(r)),void 0!==h&&(this.minAzimuthAngle=toRadiant(h<0?h:-1*h)),void 0!==c&&(this.maxAzimuthAngle=toRadiant(c)),void 0!==n){let e=Math.abs(toRadiant(n));this.minAzimuthAngle=-e,this.maxAzimuthAngle=e,this.maxPolarAngle=Math.min(e,toRadiant(85))}this._update()}_getCamera(){return this._camera||this._initCamera(),this._camera}getCamera(){return super.getCamera()}_initCamera(){this._camera=new PerspectiveCamera,this._camera.fov=30,this._camera.aspect=this._width/this._height,this._camera.near=.1,this._camera.far=100,this._camera.updateProjectionMatrix(),this._camera.layers.set(3),this._camera.layers.enable(1),this._camera.layers.enable(2),this._camera.layers.enable(6),this._camera.layers.enable(5)}setObjectRotation(e,t=0){this._objectRotation=e,this._lookAtSide=t}getObjectRotation(){return this._objectRotation}updateCamera(){let{x:e,y:t}=this._domHelper.getClientDimensions();this._camera.aspect=e/t,this._camera.updateProjectionMatrix()}animateCamera(e){if(!super.animateCamera(e))return!1;let t=this._targetPosition;return!!t&&(this.getCamera().lookAt(t),!0)}_initInputListener(){this._inputListeners.push({key:3,fun:()=>{this._state=1}}),this._inputListeners.push({key:6,fun:e=>{var t,i;1!==this._state||this._locked||(this._userInteraction=!0,!(void 0!==(null===(t=e.event)||void 0===t?void 0:t.shiftKey)&&(null===(i=e.event)||void 0===i?void 0:i.shiftKey))&&this._panningEnabled&&this.disablePanning(),this._move(new Vector2(e.position.x,e.position.y),e.type))}}),this._inputListeners.push({key:11,fun:e=>{1===this._state||this._locked||(this._userInteraction=!0,this._pan(new Vector2(e.position.x,e.position.y),e.type))}}),this._inputListeners.push({key:4,fun:e=>{1===this._state&&this.dispatchEvent(2,e.type),this._state=0,this._orbitPosition=null,this._lerpEnabled=!0}}),this._inputListeners.push({key:7,fun:({event:e})=>{this._maxZoomedIn||(e&&(e.preventDefault(),e.stopPropagation()),this.zoomIn())}}),this._inputListeners.push({key:8,fun:({event:e})=>{this._maxZoomedOut||(e&&(e.preventDefault(),e.stopPropagation()),this.zoomOut())}})}_panTargetPosition(e){const t=e.clone().sub(this._orbitPosition),i=this._domHelper.element,s=this._targetPosition.project(this._camera),n=Math.max(2,4*(1-this._distance/this.maxDistance));s.x=s.x-t.x/i.clientHeight*n,s.y=s.y+t.y/i.clientHeight*n,this._targetPositionIsPanned=!0,this._targetPosition.copy(s.unproject(this._camera))}_pan(e,t){this._lerpEnabled=!1,this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0,t)),this._panTargetPosition(e),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1,t),this._orbitPosition.copy(e),this._update()}_move(e,t){this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0,t));const i=e.clone().sub(this._orbitPosition),s=this._domHelper.element;this._panningEnabled?this._panTargetPosition(e):(this._rotateHorizontal(2*Math.PI*i.x/s.clientWidth*1),this._rotateVertical(2*Math.PI*i.y/s.clientHeight*1)),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1,t),this._orbitPosition.copy(e),this._update()}checkBoundsAndPlaceCamera(e,t=!0){this._boundingBox&&compareBox3Size(e,this._boundingBox)<=0?this.setBounds(e):this.zoomToFitBounds(e,t)}adjustToBoundsWithoutChangingDistance(e){this.setBounds(e);const t=e.getSize(new Vector3);if(this._initData.debug||t.x+t.y+t.z===0)return;const i=this.getCurrentCameraParameters(),s=e.getCenter(new Vector3);this._setDistanceAndRangesBasedOnBounds(t,!1);const n={yaw:i.yaw,pitch:i.pitch,distance:this._distance,targetX:s.x,targetY:s.y,targetZ:s.z};areCameraParametersEqual(i,n)||this._tweenCameraParameter(i,n,!1)}zoomToFitBounds(e,t=!0){this.setBounds(e);const i=e.getSize(new Vector3);if(this._initData.debug||i.x+i.y+i.z===0)return;const s=this.getCurrentCameraParameters(),n=e.getCenter(new Vector3),a=this._setDistanceAndRangesBasedOnBounds(i);this._checkZoomDistance(e,a);const o={yaw:t?this._yaw:s.yaw,pitch:t?this._pitch:s.pitch,distance:a,targetX:n.x,targetY:n.y,targetZ:n.z};areCameraParametersEqual(s,o)||this._tweenCameraParameter(s,o,!1)}updateToBounds(e,t,i=!0,s){if(this.setBounds(e),this._initData.debug)return;const n=e.getCenter(new Vector3);s?(this._targetPosition=s.clone(),this._targetPositionIsPanned=!1):this._targetPositionIsPanned||(this._targetPosition=new Vector3(n.x,n.y,n.z));const a=this.getCurrentCameraParameters(),o=e.getSize(new Vector3);if(i){const i=this._setDistanceAndRangesBasedOnBounds(o);this._distance=i,this._checkZoomDistance(e,i),this._userInteraction?this._tweenCameraParameter(a,{yaw:this._yaw,pitch:this._pitch,distance:this._distance,targetX:this._targetPosition.x,targetY:this._targetPosition.y,targetZ:this._targetPosition.z},t):this._update()}else this._setDistanceAndRangesBasedOnBounds(o,!1);this._update()}_checkZoomDistance(e,t){const i=e.getBoundingSphere(new Sphere);t-i.radius<this._zoomDistance&&(console.warn("the initial camera position is closer than the zoomDistance param, zoomDistance is set to initial camera position."),this._zoomDistance=t-i.radius)}_setDistanceAndRangesBasedOnBounds(e,t=!0){const{offsetWidth:i,offsetHeight:s}=this._getOffset();this._bounds.copy(e);const{cameraSpacing:n}=this._initData;e.addScalar(n/100),this.minDistance=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z);const a=Math.max(e.x,e.y),{x:o,y:r}=this._getMargin(i,s),h=getIdealDistance(e.x+o,e.y+r,e.z,this._camera.fov,i,s);return this._distance<h&&t&&(this._distance=h),this.maxDistance=h+a,this.maxDistance<2&&(this.maxDistance=2),this._camera.far=5*this.maxDistance,this._setCameraNear(),h}_getIdealDistance(){const{offsetWidth:e,offsetHeight:t}=this._getOffset(),{x:i,y:s}=this._getMargin(e,t);return getIdealDistance(this._bounds.x+i,this._bounds.y+s,this._bounds.z,this._camera.fov,e,t)}_getOffset(){const e=this._domHelper.getClientDimensions(),t=e.x,i=e.y;return{offsetWidth:this._camera.offset?t-t*this._camera.offset.left-t*(1-this._camera.offset.right):t,offsetHeight:this._camera.offset?i-i*this._camera.offset.bottom-i*(1-this._camera.offset.top):i}}_getMargin(e,t){const i=Math.max(this._bounds.x,this._bounds.y);let s=i>3?0:this._bounds.x/2,n=i>3?0:this._bounds.y/2;return e>1080&&(s+=i<.3?.1:0,s+=(i>3?0:this._bounds.x)*(e/1080-1)),t>1080&&(s+=i<.3?.1:0,n+=(i>3?0:this._bounds.y)*(t/1080-1)),{x:s,y:n}}reset(e,t,i,s,n=!0){var a,o;const r=e.getSize(new Vector3);if(r){if(t)this._targetPosition.copy(t);else{const t=e.getCenter(new Vector3);this._targetPosition.copy(t)}const h=this.getCurrentCameraParameters();if(i||(i=null!==(a=this._initData.horizontalCameraAngle)&&void 0!==a?a:-30),s||(s=null!==(o=this._initData.verticalCameraAngle)&&void 0!==o?o:10),i+=toDegrees(this._objectRotation),this._initData.debug)return this._distance=this._setDistanceAndRangesBasedOnBounds(r),this._update(this._targetPosition),void this._setDistanceAndRangesBasedOnBounds(r);const c=this._setDistanceAndRangesBasedOnBounds(r),l=toRadiant(s),d=toRadiant(i);let _=this._targetPosition.clone();n?this._tweenCameraParameter(h,{yaw:d,pitch:l,distance:c,targetX:_.x,targetY:_.y,targetZ:_.z},!0):(this._pitch=l,this._yaw=d,this._distance=c,this._update(this._targetPosition))}else console.warn("you cant reset without bounds!")}updateDistanceAndRangesBasedOnBounds(e){if(!e)return;const t=e.getSize(new Vector3),i=e.getCenter(new Vector3);this.setBounds(e),this._targetPosition.copy(i),this._setDistanceAndRangesBasedOnBounds(t,!1)}async updateAndReset(e,t=!0){var i,s;const n=e.getSize(new Vector3),a=e.getCenter(new Vector3);this.setBounds(e),this._targetPosition.copy(a),-1===this._distance&&(this._distance=this._setDistanceAndRangesBasedOnBounds(n));const o=this.getCurrentCameraParameters();this._camera.fov=30,this._pitch=toRadiant(null!==(i=this._initData.verticalCameraAngle)&&void 0!==i?i:10);const r=null!==(s=this._initData.horizontalCameraAngle)&&void 0!==s?s:-30;this._yaw=toRadiant(r*(this._lookAtSide<0?-1:1)+toDegrees(this._objectRotation)),this._setDistanceAndRangesBasedOnBounds(n);let h=this._targetPosition.clone();t?await this._tweenCameraParameter(o,{yaw:this._yaw,pitch:this._pitch,distance:this.maxDistance,targetX:h.x,targetY:h.y,targetZ:h.z},!0):this._update(this._targetPosition)}_update(e,t,i){i||(this._yaw=clamp(this._yaw,this.minAzimuthAngle,this.maxAzimuthAngle),this._pitch=this._initData.debug?clamp(this._pitch,toRadiant(-89),toRadiant(89)):clamp(this._pitch,this.minPolarAngle,this.maxPolarAngle),this._saveYawAndPitch());const s=(new Quaternion).setFromEuler(new Euler(-this._pitch,this._yaw,0,"ZYX")),n=new Vector3(0,0,-1).applyQuaternion(s);i||(this._distance*=this._scale,this._initData.debug||(this._distance=Math.min(this.maxDistance,this._distance))),e&&this._targetPosition.copy(e);const a=this._targetPosition.clone().sub(n.multiplyScalar(this._distance));if(this._initData.debug)this._cameraPosition.copy(a),this._zoomChanged(!1,!1);else if(t)this._cameraPosition.copy(a);else{const e=this._getCameraSphere(a);null!=this._boundingBox&&this._boundingBox.intersectsSphere(e)&&this._scale>=1?this._distance+=.1:null==this._boundingBox||this._boundingBox.intersectsSphere(e)?this._zoomChanged(!1,!0):(this._cameraPosition.copy(a),this._zoomChanged(this._distance===this.maxDistance,!1))}this._scale=1}_zoomChanged(e,t){var i;let s=e+""+t;0===(null===(i=this._currentZoomHash)||void 0===i?void 0:i.length)||this._currentZoomHash!==s?(this.dispatchEvent(5,new ZoomChangeEvent(e,t)),this._currentZoomHash=s):e||t||this.dispatchEvent(5,new ZoomChangeEvent(e,t)),this._maxZoomedIn=t,this._maxZoomedOut=e}zoomTo(e){return this._tweenCameraParameter(this.getCurrentCameraParameters(),e,!0)}_getCameraSphere(e){const t=Math.max(this._bounds.x,this._bounds.y),i=Math.max(t/10,this._zoomDistance);return new Sphere(e,i)}zoomIn(e){this._lerpEnabled=!0,this._scale*=e?Math.pow(.95,e):this._zoomSpeed,this._setCameraNear(),this._update(),this.dispatchEvent(3)}zoomOut(e){this._lerpEnabled=!0,this._scale/=e?Math.pow(.95,e):this._zoomSpeed,this._setCameraNear(),this._update(),this.dispatchEvent(4)}clear(){this._userInteraction=!1,this._initData.debug||(this._distance=-1,this._targetPosition=new Vector3(0,0,0),this._targetPositionIsPanned=!1)}async moveCamera(e){const{x:t,y:i,z:s}=this._boundingBox.getCenter(new Vector3);e.targetX=e.targetX||t,e.targetY=e.targetY||i,e.targetZ=e.targetZ||s,e.distance=e.distance||this._getIdealDistance();const n=this.getCurrentCameraParameters(),a=deepMerge(JSON.parse(JSON.stringify(n)),e);return this._tweenCameraParameter(n,a,!0)}enablePanning(){this._lerpEnabled=!1,this._panningEnabled=!0}disablePanning(){this._lerpEnabled=!1,this._panningEnabled=!1}getKernelZoomFactor(){const e=this.maxDistance;return 1-this._distance/(e-2)+.2}}class ObjectAnimations{constructor(){this.animationMap=new Map}static setObjectAnimations(e,t,i){if(!t||0===Object.keys(t).length)return void(e.userData.objectAnimations=void 0);e.userData.objectAnimations=new ObjectAnimations;const s=new Map;for(const e in t)s.set(e,{matrix:convertToThreeMatrix(t[e].matrix),visible:t[e].visibility,initial:t[e].initial});this.addObjectAnimations(e,s,i)}static addObjectAnimations(e,t,i){var s,n;if(!t||0===t.size)return;null!==(s=(n=e.userData).objectAnimations)&&void 0!==s||(n.objectAnimations=new ObjectAnimations);const a=e.userData.objectAnimations;t.forEach((t,s)=>{var n;if(a.animationMap.set(s,t),null===(n=null==i?void 0:i.animationValueMap)||void 0===n?void 0:n.hasKeyAndValue(s)){if(e.userData.transform){const i=e.userData.transform.clone().multiply(t.matrix);setObjectMatrix(e,i)}e.visible=t.visible}})}static removeObjectAnimations(e,t){var i;if(!(null===(i=e.userData)||void 0===i?void 0:i.objectAnimations))return;const s=e.userData.objectAnimations;s.animationMap.delete(t),0===s.animationMap.size&&(e.userData.objectAnimations=void 0)}static animateObject(e,t,i,s=!0,n){e.userData.objectAnimations instanceof ObjectAnimations&&e.userData.objectAnimations._animate(e,t,i,s,n)}_animate(e,t,i,s=!0,n){let a=new Matrix4,o=this.animationMap.get(`${t}:${i.from}`),r=this.animationMap.get(`${t}:${i.to}`);if(i.priorAnimations.length>0||i.subsequentAnimations.length>0){a=this._calculateCombinedAnimationMatrix(i.priorAnimations);const e=this._calculateCombinedAnimationMatrix(i.subsequentAnimations);o=this._calculateAnimationTransformation(o,e),r=this._calculateAnimationTransformation(r,e)}this._animateMesh(e,a,o,r,s,n)}_calculateCombinedAnimationMatrix(e){const t=new Matrix4;return e.forEach(e=>{const i=this.animationMap.get(e);(null==i?void 0:i.matrix)&&t.multiply(i.matrix)}),t}_calculateAnimationTransformation(e,t){var i;const s=t.clone();return(null==e?void 0:e.matrix)&&s.multiply(e.matrix),{matrix:s,visible:null===(i=null==e?void 0:e.visible)||void 0===i||i,initial:!1}}_animateMesh(e,t,i,s,n=!0,a){var o,r;if(!e.userData||!i&&!s)return;null!==(o=(r=e.userData).transform)&&void 0!==o||(r.transform=e.matrix.clone());const h=e.userData.transform;let c=h.clone(),l=h.clone();(null==i?void 0:i.matrix)&&c.multiply(i.matrix),(null==s?void 0:s.matrix)&&l.multiply(s.matrix),n?animateObjectMatrix(e,t,c,l,a):(setObjectMatrix(e,l.clone().multiply(t)),void 0!==(null==s?void 0:s.visible)&&(e.visible=s.visible),a&&a())}}const PULSE_DURATION=1500,PULSE_LOOPS=5;function RoomleComponentFactoryInitializer(){class e extends Object3D{static _generateOutline(e,t){let i=new LineSegments(new EdgesGeometry(e),new LineDashedMaterial({color:"#000000",dashSize:.03,gapSize:.01,linewidth:1}));return i.translateOnAxis(t,1),i.userData.ignoreComponentRaycast=!0,i}static cloneDockLine(e,t){let i=new LineSegments(e.geometry,e.material);return i.translateOnAxis(t.getCenter(new Vector3),1),i.name="dockline",i.layers.set(5),i.userData.ignoreComponentRaycast=!0,i}_setValues(e,t,i,s,n){e&&(this.runtimeId=e,this.name=e.toString()),t&&(this.roomlePosition=Object.assign({},t)),i&&(this.roomleRotation=Object.assign({},i)),s&&(this.parentObjectId=s),n&&(this.isRootComponent=n)}constructor(e,t,i,s,n){super(),this._selected=!1,this.isChildPlanObject=!1,this.geometryChanged=!0,this.meshes=[],this.castShadow=!1,this.receiveShadow=!0,this._setValues(e,t,i,s,n)}get loadingMesh(){return this._loadingMesh}get boundingBoxMesh(){return this._boundingBoxMesh}get boundingBox(){return this._boundingBox}set roomlePosition(e){this._roomlePosition=e,e&&this.position.set(e.x/1e3,e.z/1e3,e.y/-1e3)}get roomlePosition(){return this._roomlePosition}set roomleRotation(e){this._roomleRotation=e,e&&this.rotation.set(e.x,e.z,-e.y)}get roomleRotation(){return this._roomleRotation}replaceMeshes(e){this.removeAllMeshes(),e.forEach(e=>{this.addMesh(new Mesh(e.geometry,e.material))})}addMesh(e,t){e.renderOrder=2,e.userData.meshType=0,t&&e.applyMatrix4(convertToThreeMatrix(t)),this.add(e),this.meshes.push(e)}getMeshById(e){return this.meshes.find(t=>t.userData.meshId===e)}removeMeshById(e){const t=this.getMeshById(e);t?this.removeMesh(t):console.warn("Could not remove mesh with id "+e,this.runtimeId,this.meshes)}removeMesh(e){const t=this.meshes.indexOf(e);this.remove(e),disposeMesh(e),t<0||this.meshes.splice(t,1)}removeAllMeshes(e=!0){this.meshes.forEach(t=>{this.remove(t),e&&disposeMesh(t)}),this.meshes=[],this._removeLoadingMesh(),this.remove(this._boundingBoxMesh),disposeMesh(this._boundingBoxMesh),this._boundingBoxMesh=null}_hideAllMeshes(){this.meshes.forEach(e=>e.visible=!1)}_showAllMeshes(){this.meshes.forEach(e=>e.visible=!0)}select(){this._selected=!0}loading(){if(!this._kernelBoundingBox)return void console.warn("Bounding box (box for measurements) for component "+this.runtimeId+" not set, can not show external mesh loading box!");this._removeLoadingMesh(),this._hideAllMeshes();const{x:e,y:t,z:i}=this._kernelBoundingBox.getSize(new Vector3);let s=new BoxGeometry(e,t,i);this._loadingMesh=new Mesh(s,MaterialCreator.createMeshStandardMaterial({transparent:!0,opacity:PREVIEW_MATERIAL_OPACITY,color:new Color(PREVIEW_MATERIAL_COLOR)})),this._loadingMesh.name="loading mesh",this._loadingMesh.receiveShadow=!1,this._loadingMesh.castShadow=!1,this._loadingMesh.layers.set(5),this._loadingMesh.translateOnAxis(this._kernelBoundingBox.getCenter(new Vector3),1),this._loadingMesh.renderOrder=3,this.add(this._loadingMesh)}_removeLoadingMesh(){this._loadingMesh&&(this.remove(this._loadingMesh),disposeMesh(this._loadingMesh),this._loadingMesh=null)}loadingFinished(){this._removeLoadingMesh(),this._showAllMeshes()}deselect(){this._selected=!1}hoverOn(){setCursor("pointer")}hoverOff(){setCursor("default")}computeBoundingBox(t,i=!1){if(this._boundingBoxMesh&&this.remove(this._boundingBoxMesh),!i&&t&&0===t.size.x&&0===t.size.y&&0===t.size.z)return;let s;if(!t||i){this._boundingBox=new Box3;let e=new Vector3;this.meshes.forEach(t=>{if(t.geometry instanceof BufferGeometry){let i=t.geometry.attributes.position;if(void 0!==i)for(let s=0,n=i.count;s<n;s++)e.fromBufferAttribute(i,s).applyMatrix4(t.matrix),this._boundingBox.expandByPoint(e)}}),this._kernelBoundingBox=this._boundingBox.clone();let t=this._boundingBox.max.x-this._boundingBox.min.x,i=this._boundingBox.max.y-this._boundingBox.min.y,n=this._boundingBox.max.z-this._boundingBox.min.z;s=new BoxGeometry(t,i,n)}else{this._kernelBoundingBox=kernelBoxToThreeBox(t),this._boundingBox=this._kernelBoundingBox.clone();let{x:e,y:i,z:n}=this._boundingBox.getSize(new Vector3);s=new BoxGeometry(e,i,n)}this._boundingBoxMesh=new Mesh(s,MaterialCreator.createMeshStandardMaterial({color:"#FFFFFF",transparent:!0,opacity:0,polygonOffset:!0,polygonOffsetFactor:-1,visible:!1})),this._boundingBoxMesh.name="bounding box mesh";let n=this._boundingBox.getCenter(new Vector3);this._boundingBoxMesh.position.add(n),this._boundingBoxMesh.layers.set(5),this._boundingBoxMesh.renderOrder=3,this._boundingBoxMesh.castShadow=!1,this._boundingBoxMesh.receiveShadow=!1,this.add(this._boundingBoxMesh),this._dockline=e._generateOutline(s,n),this._dockline.name="bounding box outline",this._dockline.layers.set(5),this._selected&&this.add(this._dockline)}recursiveMeshes(){let t=this.meshes.slice();return this.children.forEach(i=>{i instanceof e&&t.push(...i.recursiveMeshes())}),t}isChild(t){let i=!1;return this.children.forEach(s=>{s instanceof e&&!i&&(i=s.runtimeId===t||s.isChild(t))}),i}getKernelPosition(e){let t=this.parent.localToWorld(this.position);return convertToKernel(e.worldToLocal(t))}animateMeshes(e,t,i=!0,s){this.meshes.forEach(n=>ObjectAnimations.animateObject(n,e,t,i,s))}}class t extends e{constructor(e,t){super(e,null,null,null,!1),this.glbUrl=t}}class i extends e{constructor(e,t,i,s,n,a){super(t,i,s,n,a),this._stringId=null,this.receivedPointAssociation=!1,this.castShadow=!1,this.receiveShadow=!1,this._creator_=e}get stringId(){return this._stringId?this._stringId:this.runtimeId.toString()}addMesh(e,t){super.addMesh(e,t),e.material instanceof MeshStandardMaterial&&(e.material.opacity=DOCK_PREVIEW_MATERIAL_OPACITY,e.material.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.material.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.material.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)),e.renderOrder=1,e.castShadow=!1,e.receiveShadow=!1}startPulsating(){var e,t;if(null===(t=null===(e=this._initData)||void 0===e?void 0:e.featureFlags)||void 0===t?void 0:t.pulsePreview)for(const e of this.meshes){const t={opacity:DOCK_PREVIEW_MATERIAL_OPACITY},i={opacity:.3};new TWEEN.Tween(t).to(i,1500).easing(TWEEN.Easing.Sinusoidal.In).onUpdate(()=>{e.material.opacity=t.opacity}).yoyo(!0).repeat(5).start()}}hoverOn(){this.remove(this._dockline),this.meshes.forEach(({material:e})=>{e.opacity=DOCK_PREVIEW_MATERIAL_OPACITY_HOVERED,e.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)}),setCursor("pointer")}hoverOff(){this.add(this._dockline),this.meshes.forEach(({material:e})=>{e.opacity=DOCK_PREVIEW_MATERIAL_OPACITY,e.roughness=DOCK_PREVIEW_MATERIAL_ROUGHNESS,e.metalness=DOCK_PREVIEW_MATERIAL_METALNESS,e.color=new Color(this._initData.colors.PREVIEW_DOCKING_COLOR)}),setCursor("default")}clonePreview(t){const s=new i(this._creator_,this.runtimeId,this.roomlePosition,this.roomleRotation,this.parentObjectId,this.isRootComponent);return s._stringId=this.runtimeId+"_"+t,this.children.forEach(e=>{e instanceof Mesh&&0===e.userData.meshType&&s.meshes.push(e.clone(!0))}),s.meshes.forEach(e=>{e.material=e.material.clone(),e.geometry=e.geometry.clone(),s.add(e)}),this._dockline&&(s._dockline=e.cloneDockLine(this._dockline,this._boundingBox)),this._boundingBoxMesh&&(s._boundingBoxMesh=this._boundingBoxMesh.clone(!0)),this._boundingBox&&(s._boundingBox=this._boundingBox.clone()),s}preparePreview(){this.add(this._dockline),this.add(this._boundingBoxMesh)}}__decorate([inject],i.prototype,"_initData",void 0);class s extends i{constructor(e,t,i,s,n,a){super(e,t,i,s,n,!1),this.lineSegments=[],a&&(this._stringId=this.runtimeId+"_has_additional_dock_point_copy")}set roomleLineFrom(e){this._roomleLineFrom=e,this.lineFrom=convertToTHREE(e)}get roomleLineFrom(){return this._roomleLineFrom}set roomleLineTo(e){this._roomleLineTo=e;let t=convertToTHREE(e);t.equals(this.lineFrom)&&(console.warn("lineFrom and lineTo are equal!"),t.add(new Vector3(0,.01,0))),this.lineTo=t}get roomleLineTo(){return this._roomleLineTo}set roomlePositionFrom(e){this._roomlePositionFrom=e,this.positionFrom=convertToTHREE(e)}get roomlePositionFrom(){return this._roomlePositionFrom}set roomlePositionTo(e){this._roomlePositionTo=e;let t=convertToTHREE(e);t.equals(this.positionFrom)&&(console.warn("positionFrom and positionTo are equal!"),t.add(new Vector3(0,.01,0))),this.positionTo=t}get roomlePositionTo(){return this._roomlePositionTo}addMesh(e,t){super.addMesh(e,t),e.visible=!1,e.renderOrder=3}hoverOn(){this._dockline.visible=!0,setCursor("pointer")}hoverOff(){this._dockline.visible=!1,setCursor("default")}preparePreview(){super.preparePreview(),this._dockline.visible=!1;let e=this.lineTo.clone(),t=this.lineFrom.clone();const i=(new Vector3).subVectors(e,t);let s=i.length(),n=i.normalize();this._createLineMesh(.01,s,this.lineSegments);const a=(new Quaternion).setFromUnitVectors(new Vector3(0,1,0),n);this.lineMesh.quaternion.multiply(a),this.lineMesh.renderOrder=1;let o=(new Vector3).addVectors(e,t).multiplyScalar(.5);this.lineMesh.position.copy((new Vector3).subVectors(o,this.position.clone())),this.add(this.lineMesh);let r=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation),h=null,c=0,l=Math.abs(n.x),d=Math.abs(n.y),_=Math.abs(n.z);l>=d&&l>=_?(h=new Vector3(r.x,0,0),c=Math.sqrt(r.y*r.y+r.z*r.z)):d>=l&&d>=_?(h=new Vector3(0,r.y,0),c=Math.sqrt(r.x*r.x+r.z*r.z)):_>=d&&_>=l&&(h=new Vector3(0,0,r.z),c=Math.sqrt(r.y*r.y+r.x*r.x)),c=c>0?c:.01;let m=(new Vector3).subVectors(this.positionTo.clone(),this.positionFrom.clone()).length()+h.length();this._createBoundingLineMesh(1.1*c,m,this.lineSegments);let u=this.positionTo.clone(),g=this.positionFrom.clone(),p=(new Vector3).subVectors(u,g).normalize();const v=(new Quaternion).setFromUnitVectors(new Vector3(0,1,0),p);this.boundingLineMesh.quaternion.multiply(v),this.boundingLineMesh.renderOrder=3;let f=(new Vector3).addVectors(this.positionTo.clone(),this.positionFrom.clone()).multiplyScalar(.5).add(r);this.boundingLineMesh.position.copy((new Vector3).subVectors(f,this.position.clone())),this.add(this.boundingLineMesh)}_createLineMesh(e,t,i){this.lineMesh=this._createPreviewMesh(e,t,i,16,MaterialCreator.createMeshStandardMaterial({color:PREVIEW_MATERIAL_COLOR,transparent:!0,opacity:PREVIEW_LINE_MATERIAL_OPACITY})),this.lineMesh.name="line mesh"}_createBoundingLineMesh(e,t,i){this.boundingLineMesh=this._createPreviewMesh(e,t,i,32,MaterialCreator.createMeshStandardMaterial({color:"#ffffff",transparent:!0,opacity:0})),this.boundingLineMesh.name="bounding line mesh",this.boundingLineMesh.userData.ignoreComponentRaycast=!0,this.boundingLineMesh.layers.set(5)}_createPreviewMesh(e,t,i,s,n){let a;if(0===i.length)a=new CylinderGeometry(e,e,t,s,1);else{const n=[];for(const a of i){const i=a.to-a.from,o=(a.from+a.to)/2,r=new CylinderGeometry(e,e,i,s,1);r.translate(0,o-t/2,0),n.push(r)}a=mergeGeometries(n,!1)}return new Mesh(a,n)}clonePreviewLine(t){let i=new s(this._creator_,this.runtimeId,this.roomlePosition,this.roomleRotation,this.parentObjectId,this.receivedPointAssociation);return i._stringId=this.runtimeId+"_"+t,this.children.forEach(e=>{e instanceof Mesh&&0===e.userData.meshType&&i.meshes.push(e.clone(!0))}),i.meshes.forEach(e=>{e.material=e.material.clone(),e.geometry=e.geometry.clone(),i.add(e)}),this._dockline&&(i._dockline=e.cloneDockLine(this._dockline,this._boundingBox)),this._boundingBoxMesh&&(i._boundingBoxMesh=this._boundingBoxMesh.clone(!0)),this._boundingBox&&(i._boundingBox=this._boundingBox.clone()),i}getPositionForIntersectionPoint(e){let t=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation),i=this.positionTo.clone().add(t),s=this.positionFrom.clone().add(t),n=new Line3(s,i).closestPointToPoint(e,!0,new Vector3);return(isNaN(n.x)||isNaN(n.y)||isNaN(n.z))&&n.copy(e),n.sub(t)}updatePreviewPosition(e){let t=this.getPositionForIntersectionPoint(e),i=this.parent.localToWorld(t);this._newPosition=this.worldToLocal(i);let s=this._boundingBox.getCenter(new Vector3).applyEuler(this.docklineRotation);this._dockline.position.copy((new Vector3).addVectors(this._newPosition,s)),this._dockline.rotation.copy(this.docklineRotation)}hideSelectionLine(){this._dockline.visible=!1}getKernelPosition(e){if(this._newPosition){let t=this.localToWorld(this._newPosition);return convertToKernel(e.worldToLocal(t))}return super.getKernelPosition(e)}}class n extends OrthographicCamera{constructor(e,t,i,s,n,a,o){super(e,t,i,s,n,a),o||(o={left:0,top:1,right:1,bottom:0}),this.offset=o}set offset(e){this._offset=e,this.updateProjectionMatrix()}get offset(){return this._offset}resetOffset(){this._offset={left:0,top:1,right:1,bottom:0}}updateProjectionMatrix(){this._offset?(this.projectionMatrix=this._calculateProjectionMatrix(),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()):super.updateProjectionMatrix()}_calculateProjectionMatrix(){const e=this._calculate2DPlanes();if(this._offset.left>=this._offset.right||this._offset.bottom>this._offset.top)return(new Matrix4).makeOrthographic(e.left,e.right,e.top,e.bottom,this.near,this.far);const t=this._scaleRange(e.left,e.right,this._offset.left,this._offset.right);let i=t.from,s=t.to;const n=this._scaleRange(e.bottom,e.top,this._offset.bottom,this._offset.top);let a=n.from,o=n.to;const r=(e.right-e.left)/(e.top-e.bottom),h=(s-i)/(o-a);if(h>r){const e=(a+o)/2,t=(o-a)*h/r;a=e-t/2,o=e+t/2}else{const e=(i+s)/2,t=(s-i)*r/h;i=e-t/2,s=e+t/2}return(new Matrix4).makeOrthographic(i,s,o,a,this.near,this.far)}_scaleRange(e,t,i,s){const n=(t-e)/(s-i);return{from:e-n*i,to:t+n*(1-s)}}_calculate2DPlanes(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2;let n=i-e,a=i+e,o=s+t,r=s-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;n+=e*this.view.offsetX,a=n+e*this.view.width,o-=t*this.view.offsetY,r=o-t*this.view.height}return{left:n,right:a,top:o,bottom:r}}}class a extends PerspectiveCamera{constructor(e,t,i,s,n){super(e,t,i,s),n||(n={left:0,top:1,right:1,bottom:0}),this.offset=n}copy(e,t){return super.copy(e,t),this._offset=e._offset,this}set offset(e){this._offset=e,this.updateProjectionMatrix()}get offset(){return this._offset}resetOffset(){this._offset={left:0,top:1,right:1,bottom:0}}_calculateProjectionMatrix(){let e,t,i,s,n=this.fov*(2*Math.PI/360)/2;i=Math.tan(n),s=-i;let a=Math.atan(this.aspect*Math.tan(n));t=Math.tan(a),e=-t;let o=this._offset.left,r=this._offset.right,h=this._offset.top,c=this._offset.bottom,l=new Vector2(r-o,h-c),d=new Vector2(o+l.x/2,c+l.y/2);if(l.x<l.y){let n=(1-d.x)/(l.x/2),a=d.x/(l.x/2);t*=n,e*=a;let o=(n+a)/2;i*=o,s*=o}else{let n=(1-d.y)/(l.y/2),a=d.y/(l.y/2);i*=n,s*=a;let o=(a+n)/2;e*=o,t*=o}e*=this.near,t*=this.near,i*=this.near,s*=this.near;let _=this.near*Math.tan(Math.PI/180*.5*this.fov)/this.zoom*2,m=this.aspect*_;return this.view&&this.view.enabled&&(e+=this.view.offsetX*m/this.view.fullWidth,i-=this.view.offsetY*_/this.view.fullHeight,t+=this.view.offsetX*m/this.view.fullWidth,s-=this.view.offsetY*_/this.view.fullHeight),(new Matrix4).makePerspective(e,t,i,s,this.near,this.far)}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){this._offset?(this.projectionMatrix=this._calculateProjectionMatrix(),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()):super.updateProjectionMatrix()}}return{create:function(t,i,s,n,a){return new e(t,i,s,n,a)},createPreview:function(e,t,s){return new i(s,e,{x:0,y:0,z:0},{x:0,y:0,z:0},t,!1)},createStatic:function(e,i){return new t(e,i)},createPreviewLine:function(e,t){let i=new s(t,e.id,e.roomlePosition,e.roomleRotation,e.parentObjectId,e.receivedPointAssociation);return e.meshes.forEach(e=>{let t=e.clone();t.material=e.material.clone(),t.geometry=e.geometry.clone(),i.addMesh(t)}),i.computeBoundingBox(),i},isPreview:function(e){return e instanceof i},isPreviewLine:function(e){return e instanceof s},createPerspectiveCamera:function(e,t,i,s,n){return new a(e,t,i,s,n)},createOrthographicCamera:function(e,t,i,s,a,o,r){return new n(e,t,i,s,a,o,r)}}}class Environment{constructor(e,t){this._scene=e,t&&(t.removeFromScene(),t.cleanUp())}updateCamera(e){}reload(){this.removeFromScene(),this.addToScene()}updateBounds(e,t){this._bounds=e}cleanUp(){this._scene=null}}class BakedShadowPlane{constructor(e){this._innerSize=1,this._outerSize=100,this._plane=new Object3D,this._plane.rotation.x=-Math.PI/2;const t=MaterialCreator.createMeshStandardMaterial({});this._innerPlaneMesh=new Mesh,this._innerPlaneMesh.layers.set(2),this._innerPlaneMesh.material=t,this._innerPlaneMesh.receiveShadow=!0,this._outerPlaneMesh=new Mesh,this._outerPlaneMesh.layers.set(2),this._outerPlaneMesh.material=t,this._outerPlaneMesh.receiveShadow=!0,this._plane.add(this._innerPlaneMesh),this._plane.add(this._outerPlaneMesh),this._innerSize=1,this._outerSize=e,this._updatePlane(this._innerSize,this._outerSize)}getRootNode(){return this._plane}getInnerPlane(){return this._innerPlaneMesh}getOuterPlane(){return this._outerPlaneMesh}updateSize(e){this._innerSize=e,this._updatePlane(this._innerSize,this._outerSize)}_updatePlane(e,t){const i=new Shape;i.moveTo(-e/2,-e/2),i.lineTo(-e/2,e/2),i.lineTo(e/2,e/2),i.lineTo(e/2,-e/2),i.lineTo(-e/2,-e/2);const s=new Shape;s.moveTo(-t/2,-t/2),s.lineTo(-t/2,t/2),s.lineTo(t/2,t/2),s.lineTo(t/2,-t/2),s.lineTo(-t/2,-t/2);const n=new Path;n.moveTo(-e/2,-e/2),n.lineTo(-e/2,e/2),n.lineTo(e/2,e/2),n.lineTo(e/2,-e/2),n.lineTo(-e/2,-e/2),s.holes.push(n);const a=new ShapeGeometry(i);this._innerPlaneMesh.geometry&&this._innerPlaneMesh.geometry.dispose(),this._innerPlaneMesh.geometry=a;const o=new ShapeGeometry(s);this._outerPlaneMesh.geometry&&this._outerPlaneMesh.geometry.dispose(),this._outerPlaneMesh.geometry=o;const r=a.attributes.uv.clone();a.setAttribute("uv2",r);const h=a.attributes.uv2.array;for(let e=0;e<h.length;++e)h[e]+=.5}}class FloorEnvironment extends Environment{constructor(e,t,i){super(e,t),this._longestSide=2,this._bakedShadowPlane=new BakedShadowPlane(100),this._fog=i||!1,this._textureLoader=new TextureLoader,this.addToScene()}needsBounds(){return!0}needsCamera(){return this._fog}needsRotation(){return!1}updateBounds(e){return super.updateBounds(e),this._longestSide=Math.max(e.x,e.z),this._update(),!0}updateCamera(e){this._cameraDistance=e.position.distanceTo(new Vector3(0,0,0)),this._update()}_update(){this._fog&&this._updateFog()}_updateFog(){let e=this._longestSide/2;this._scene.fog=new Fog(16185078,this._cameraDistance+e+3,this._cameraDistance+e+3+1),this._scene.background=new Color(16185078)}_updateFloor(){if(this._floorMaterial)this._bakedShadowPlane.getOuterPlane().material=this._floorMaterial,this._bakedShadowPlane.getInnerPlane().material=this._floorMaterial;else{let e=this._width/1e3,t=this._height/1e3;this._repeatable&&(this._floorTexture.wrapS=RepeatWrapping,this._floorTexture.wrapT=RepeatWrapping,this._floorTexture.repeat.set(100/e,100/t));let i=MaterialCreator.createMeshStandardMaterial({map:this._floorTexture,side:DoubleSide});this._bakedShadowPlane.getInnerPlane().material=i,this._bakedShadowPlane.getOuterPlane().material=i}}addToScene(){this._scene&&this._scene.add(this._bakedShadowPlane.getRootNode())}removeFromScene(){this._scene.remove(this._bakedShadowPlane.getRootNode())}setFloorMaterial(e,t,i,s){return this._width=t,this._height=i,this._repeatable=s,this._floorPromise=new Promise((t,i)=>{this._textureLoader.load(e,e=>{this._floorTexture=e,t()},null,i)}),new Promise((e,t)=>{this._floorPromise.then(()=>{this._updateFloor(),this._update(),e()},t)})}changeFloorMaterial(e,t){this._floorPromise=new Promise((i,s)=>{this._floorMaterial=createMaterial(e),this._rapiAccess.getTexturesOf(e).then(e=>{if(e.length>0){let n=[];e.forEach(e=>{n.push(addTexture(this._dataSyncer.requestAsset(e.image,!0),e,this._floorMaterial,t,1,1))}),Promise.all(n).then(()=>{setTimeout(()=>i(),0)},s)}else setTimeout(()=>i(),0)})});let i=[this._floorPromise];return new Promise((e,t)=>{Promise.all(i).then(()=>{this._updateFloor(),this._update(),e()},t)})}showGUI(){this._floorMaterial?this._addGUI():this._floorPromise&&this._floorPromise.then(()=>this._addGUI())}_addGUI(){let e=getGUI();if(!e)return;let t=e.addFolder("Floor");t.add(this._floorMaterial,"roughness").min(0).max(1).step(.01),t.add(this._floorMaterial,"reflectivity").min(0).max(1).step(.01),t.add(this._floorMaterial,"clearCoat").min(0).max(1).step(.01),t.add(this._floorMaterial,"clearCoatRoughness").min(0).max(1).step(.01),t.add(this._floorMaterial,"opacity").min(0).max(1).step(.01),t.add(this._floorMaterial,"metalness").min(0).max(1).step(.01),t.add(this._floorMaterial,"bumpScale").min(0).max(1).step(.01)}}__decorate([inject],FloorEnvironment.prototype,"_rapiAccess",void 0),__decorate([inject],FloorEnvironment.prototype,"_dataSyncer",void 0);const KEYBOARD_ROTATION_ANGLE=Math.PI/4;class CameraControlFirstPerson extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._state=0,this._cameraRotation=new Quaternion,this._rotationSpeed=1,this._keyMap=new Map,this.minPolarAngle=toRadiant(-60),this.maxPolarAngle=toRadiant(60),this._camera=s||new PerspectiveCamera,this._camera.fov=75,this._camera.aspect=this._width/this._height,this._camera.near=.1,this._camera.far=100,this._camera.updateProjectionMatrix(),this._camera.layers.set(3),this._camera.layers.enable(1),this._camera.layers.enable(2),this._camera.layers.enable(6),this._camera.layers.enable(5),i||this._camera.position.set(0,1.5,0),this._cameraPosition=new Vector3,this._cameraPosition.copy(this._camera.position),this._pitch=0,this._yaw=0;let n=new Euler(-this._pitch,this._yaw,0,"ZYX");this._cameraRotation.setFromEuler(n),window.addEventListener("gamepadconnected",this._gamepadConnected.bind(this)),window.addEventListener("gamepaddisconnected",this._gamepadDisconnected.bind(this))}setUp(){super.setUp(),this._camera.fov=75,this._initInputListener()}_gamepadConnected(e){this.startButtonPressListener()}_gamepadDisconnected(e){window.cancelAnimationFrame(this._listenerLoopAnimationFrame)}startButtonPressListener(){this._listenerLoopAnimationFrame=window.requestAnimationFrame(()=>{this.buttonPressListener()})}buttonPressListener(){let e=navigator.getGamepads()[0];this._checkRightStick(e),this._checkLeftStick(e),this._checkButtons(e),this._processKeyMap(this._keyMap,.001),this.startButtonPressListener()}_checkRightStick(e){let t=e.axes[2],i=e.axes[3];Math.abs(t)>.2&&(this._rotateHorizontal(.01*KEYBOARD_ROTATION_ANGLE*t),this._update(),this.dispatchEvent(1)),Math.abs(i)>.2&&(this._rotateVertical(.01*KEYBOARD_ROTATION_ANGLE*i),this._update(),this.dispatchEvent(1))}_checkLeftStick(e){let t=e.axes[0],i=e.axes[1];Math.abs(i)>.2?i<0?this._keyMap.set(87,!0):this._keyMap.set(83,!0):e.buttons&&e.buttons[12]&&e.buttons[12].pressed?this._keyMap.set(87,!0):e.buttons&&e.buttons[13]&&e.buttons[13].pressed?this._keyMap.set(83,!0):(this._keyMap.set(87,!1),this._keyMap.set(83,!1)),Math.abs(t)>.2?t<0?this._keyMap.set(65,!0):this._keyMap.set(68,!0):(this._keyMap.set(65,!1),this._keyMap.set(68,!1))}_checkButtons(e){e.buttons&&e.buttons[6]&&e.buttons[6].pressed?this._keyMap.set(16,!0):this._keyMap.set(16,!1),e.buttons&&e.buttons[14]&&e.buttons[14].pressed?(this._keyMap.set(37,!0),this.dispatchEvent(1)):this._keyMap.set(37,!1),e.buttons&&e.buttons[15]&&e.buttons[15].pressed?(this._keyMap.set(39,!0),this.dispatchEvent(1)):this._keyMap.set(39,!1)}animateCamera(e){let t=this._cameraPosition,i=this._cameraRotation,s=this.getCamera(),n=position3VectorsAreEqual(t,s.position),a=rotationQuaternionsAreEqual(i,s.quaternion);if(!t||n&&a)return!1;let o=this.getCamera().position.clone(),r=Math.min(10*e,1);o.lerp(t,r),this.getCamera().position.copy(o);let h=this.getCamera().quaternion.clone(),c=Math.min(5*e,1);h.slerp(i,c),this.getCamera().setRotationFromQuaternion(h);let l=!1;return this._keyMap.forEach(e=>{e&&(l=!0)}),l&&this._processKeyMap(this._keyMap,e),!0}_getCamera(){return this._camera}_initInputListener(){this._onKeyChanged=this._onKeyChanged.bind(this),this._inputListeners.push({key:16,fun:e=>{this._onKeyChanged(e.event)}}),this._inputListeners.push({key:17,fun:e=>{this._onKeyChanged(e.event)}}),this._inputListeners.push({key:3,fun:e=>{this._down(e)}}),this._inputListeners.push({key:6,fun:e=>{this._move(e)}}),this._inputListeners.push({key:4,fun:e=>{this._up(e)}})}_removeInputListener(){this._inputListeners=this._inputListeners.filter(e=>17!==e.key&&16!==e.key)}_down(e){this._downPosition=e.position,this._position=e.position,this._state=1,2===e.type&&window.setTimeout(this._onLongDown.bind(this),350),2===e.type?this._rotationSpeed=.1:this._rotationSpeed=1}_move(e){this._position=e.position,1!==this._state||this._locked||this._orbit(new Vector2(e.position.x,e.position.y)),2!==this._state||this._locked||(this._orbit(new Vector2(e.position.x,e.position.y)),this._moveForward())}_up(e){1===this._state&&this.dispatchEvent(2),2===this._state&&this._keyMap.set(87,!1),this._state=0,this._orbitPosition=null}_onLongDown(){getDelta(this._downPosition,this._position)<MIN_MOVE_DISTANCE&&1===this._state&&(this._state=2,this._orbit(new Vector2(this._position.x,this._position.y)),this._moveForward())}_update(e){var t;let i=new Euler(-this._pitch,this._yaw,0,"ZYX");null===(t=this._cameraRotation)||void 0===t||t.setFromEuler(i)}updateCamera(){let{x:e,y:t}=this._domHelper.getClientDimensions();this._camera.aspect=e/t,this._camera.updateProjectionMatrix(),this._camera.near=.1,this._camera.far=100}_onKeyChanged(e){this._keyMap.set(e.keyCode,"keydown"===e.type),this.dispatchEvent(6),this._processKeyMap(this._keyMap,.001)&&e.preventDefault()}_processKeyMap(e,t){t=Math.min(t,.1);let i=new Vector3(0,0,0),s=!1;return this._processUpDown(e,i,t),e.get(65)&&(i.x=-1.5*t),e.get(68)&&(i.x=1.5*t),e.get(37)&&(this._rotateHorizontal(-KEYBOARD_ROTATION_ANGLE*this._rotationSpeed*t),s=!0),e.get(39)&&(this._rotateHorizontal(KEYBOARD_ROTATION_ANGLE*this._rotationSpeed*t),s=!0),e.get(16)&&(i.x*=3,i.z*=3),!(0===i.x&&0===i.y&&0===i.z&&!s||(i.applyQuaternion(this.getCamera().quaternion),this._cameraPosition.add(new Vector3(i.x,0,i.z)),this._update(),0))}_processUpDown(e,t,i){(e.get(87)||e.get(38))&&(t.z=-1.5*i),(e.get(83)||e.get(40))&&(t.z=1.5*i)}_orbit(e){this._orbitPosition||(this._orbitPosition=new Vector2(e.x,e.y),this.dispatchEvent(0));let t=e.clone().sub(this._orbitPosition),i=this._domHelper.element instanceof Document?this._domHelper.element.body:this._domHelper.element;t.multiplyScalar(-1),this._rotateHorizontal(2*Math.PI*t.x/i.clientWidth*1),this._rotateVertical(2*Math.PI*t.y/i.clientHeight*1),position2VectorsAreEqual(this._orbitPosition,e)||this.dispatchEvent(1),this._orbitPosition.copy(e),this._update()}_moveForward(){this._keyMap.set(87,!0),this._processKeyMap(this._keyMap,.001)}_rotateVertical(e){let t=this._pitch+e;t>this.maxPolarAngle||t<this.minPolarAngle||(this._pitch=t,this._pitch<-Math.PI?this._pitch+=2*Math.PI:this._pitch>Math.PI&&(this._pitch-=2*Math.PI),this._saveYawAndPitch())}getKernelZoomFactor(){return this._camera.zoom}}class BackgroundEnvironment extends Environment{constructor(e,t,i,s,n){if(super(e,t),this._color=i,this._oldBackground=e.background,s&&n){this._canvas=s,this._style=document.createElement("style");let e='background-image: url("'+n+'"); background-size: cover;';this._style.innerText=".rml-scene-background {"+e+"}",this._canvas.appendChild(this._style)}}needsBounds(){return!0}needsCamera(){return!1}needsRotation(){return!1}addToScene(){this._scene&&this._color&&(this._scene.background=this._color),this._canvas&&this._canvas.classList&&(this._scene.background=null,this._canvas.classList.add("rml-scene-background"))}removeFromScene(){this._oldBackground&&(this._scene.background=this._oldBackground),this._canvas&&this._canvas.classList.remove("rml-scene-background")}showGUI(){}}class DynamicEnvironmentSettingLoader{parse(e,t,i,s,n){let a=JSON.parse(s);return a.environment?this.load(e,t,i,a,n):null}load(e,t,i,s,n){let a,o=s.environment;if(!o)return console.warn("No environment set in scene settings"),Promise.resolve(null);switch(o.type){case"color":a=new Promise(t=>t(new BackgroundEnvironment(e,i,new Color(o.details.color))));break;case"image":a=new Promise(s=>s(new BackgroundEnvironment(e,i,null,t,o.details.imageUrl)));break;case"floor":a=new Promise(t=>{this._rapiAccess.getMaterial(o.details.material).then(s=>{let a=void 0===o.details.fog||o.details.fog,r=new FloorEnvironment(e,i,a);r.changeFloorMaterial(s,n).then(()=>{t(r)})})});break;default:console.warn("Could not load environment, return old environment"),a=new Promise(e=>e(i))}return a}}__decorate([inject],DynamicEnvironmentSettingLoader.prototype,"_rapiAccess",void 0);class LightSetting{constructor(e,t){this._scene=e,t&&t.removeFromScene()}needsBounds(){return!1}updateBounds(e){}getCameraContainer(){return this._cameraContainer||(this._cameraContainer=new Object3D),this._cameraContainer}}class DynamicLightSetting extends LightSetting{constructor(e,t){super(e,t),this._lights=[]}needsBounds(){return!0}updateBounds(e){if(this._cameraLight){const t=this._cameraLight,i=new Vector3;e.getSize(i);const s=1.5*Math.max(Math.max(i.x,i.y),i.z);this._boundingSize=s,t.shadow.camera.top=s/2,t.shadow.camera.bottom=-s/2,t.shadow.camera.left=-s/2,t.shadow.camera.right=s/2,t.shadow.camera.updateProjectionMatrix()}}loadFromJSON(e){return new Promise(t=>{this._lights=this._dynamicLightSettingLoader.parse(e),this.addToScene(),t()})}loadFromObject(e){return new Promise(t=>{(null==e?void 0:e.lights)||t(),this._lights=this._dynamicLightSettingLoader.load(e),this._lights.forEach((e,t)=>{e.userData.movesWithCamera&&(this._cameraLight=e,this._lights.splice(t,1))}),this.addToScene(),t()})}loadFromURL(e){return new Promise((t,i)=>{fetch(new Request(e,{method:"GET"})).then(handleJsonResponse).then(e=>this.loadFromObject(e).then(t,i))})}addToScene(){this._lights.forEach(e=>{this._scene.add(e)}),this._cameraLight&&this._scene.add(this._cameraLight)}update(e,t){if(!this._cameraLight)return;let i=new Vector3;e.getWorldDirection(i),i.multiplyScalar(-this._boundingSize);let s=t.clone().add(i);this._cameraLight.position.copy(s)}removeFromScene(){this._lights.forEach(e=>{this._scene.remove(e)}),this._cameraLight&&this._scene.remove(this._cameraLight)}reload(){this.removeFromScene(),this.addToScene()}showGUI(){let e=getGUI();this._cameraLight&&this._addToGUI(e,this._cameraLight),this._lights.forEach(t=>{this._addToGUI(e,t)})}_addToGUI(e,t){e&&(t instanceof SpotLight&&this._addSpotLightToGUI(e,t),t instanceof AmbientLight&&this._addAmbientLightToGUI(e,t),t instanceof DirectionalLight&&this._addDirectionalLightToGUI(e,t),t instanceof RectAreaLight&&this._addRectAreaLightToGUI(e,t))}_addRectAreaLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString(),intensity:t.intensity*(t.width*t.height)};i.add(t,"visible"),i.add(s,"intensity").min(10).max(400).step(10).onChange(e=>{t.intensity=e/(t.width*t.height)}),i.add(t,"castShadow"),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}_addSpotLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString(),angle:180*t.angle/Math.PI};i.add(t,"visible"),i.add(t,"intensity").min(0).max(5).step(.1),i.add(t,"penumbra").min(0).max(1).step(.1),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(s,"angle").min(10).max(180).step(1).onChange(e=>{t.angle=e*Math.PI/180}),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}_addAmbientLightToGUI(e,t){let i={name:t.name,color:"#"+t.color.getHexString()},s=e.addFolder(t.name);s.add(t,"visible"),s.add(t,"intensity").min(0).max(5).step(.1),s.addColor(i,"color").onChange(e=>{t.color=new Color(e)})}_addDirectionalLightToGUI(e,t){let i=e.addFolder(t.name),s={name:t.name,color:"#"+t.color.getHexString()};i.add(t,"visible"),i.add(t,"intensity").min(0).max(5).step(.1),i.addColor(s,"color").onChange(e=>{t.color=new Color(e)}),i.add(t,"castShadow"),i.add(t.position,"x").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"y").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))}),i.add(t.position,"z").min(-10).max(10).step(.1).onChange(()=>{t.lookAt(new Vector3(0,0,0))})}}__decorate([inject],DynamicLightSetting.prototype,"_dynamicLightSettingLoader",void 0);class GroundedSkybox extends Mesh{constructor(e,t,i,s=128){if(t<=0||i<=0||s<=0)throw new Error("GroundedSkybox height, radius, and resolution must be positive.");const n=new SphereGeometry(i,2*s,s);n.scale(1,1,-1);const a=n.getAttribute("position"),o=new Vector3;for(let e=0;e<a.count;++e)if(o.fromBufferAttribute(a,e),o.y<0){const i=3*-t/2,s=o.y<i?-t/o.y:1-o.y*o.y/(3*i*i);o.multiplyScalar(s),o.toArray(a.array,3*e)}a.needsUpdate=!0,super(n,new MeshBasicMaterial({map:e,depthWrite:!1}))}}class GroundProjectedEnvironment extends Environment{constructor(e,t,i){super(e,t),this.updateEnvironmentTexture(i)}updateEnvironmentTexture(e){e&&(this._environmentTexture=e,this._skybox=new GroundedSkybox(this._environmentTexture,15,100),this._skybox.name="Ground projected skybox",this._skybox.scale.setScalar(100)),this.reload()}needsBounds(){return!1}needsCamera(){return!1}needsRotation(){return!1}addToScene(){this._scene&&this._skybox&&this._scene.add(this._skybox)}removeFromScene(){this._scene&&this._skybox&&this._scene.remove(this._skybox)}showGUI(e){let t=getGUI();if(!t)return;let i=t.addFolder("Ground Projected Environment");i.add(this._skybox,"height").min(10).max(100).step(.1).onChange(e),i.add(this._skybox,"radius").min(20).max(200).step(.1).onChange(e)}}class LightSourceDetectorDebug{constructor(e){this._lightSourceDetector=e}static createPlane(e,t){const i=new PlaneGeometry(2,1),s=null!=t?t:new MeshBasicMaterial({color:12632256,side:DoubleSide}),n=new Mesh(i,s);return n.position.z=-.1,e.add(n),n}createDebugScene(e,t){this._scene=e,this._createLightGraphInMap(this._lightSourceDetector.sampleUVs,this._lightSourceDetector.lightSamples,this._lightSourceDetector.lightGraph,t)}_createLightGraphInMap(e,t,i,s){const n=[],a=[];for(let e=0;e<this._lightSourceDetector.lightGraph.noOfNodes;++e)0===i.adjacent[e].length?n.push(t[e]):a.push(t[e]);const o=n.map(e=>e.uv),r=a.map(e=>e.uv),h=e.filter(e=>!o.includes(e)&&!r.includes(e));this._createSamplePointsInMap(h,.005,16711680),this._createSamplePointsInMap(o,.01,255),this._createSamplePointsInMap(r,.01,65280),this._createClusterLinesInMap(this._lightSourceDetector.lightSamples,this._lightSourceDetector.lightGraph.edges,128);const c=this._lightSourceDetector.lightSources.map(e=>e.uv);this._createSamplePointsInMap(c,.015,16776960);let l=this._lightSourceDetector.lightSources;void 0!==s&&s>=0&&s<l.length&&(l=l.slice(0,s)),this._createCirclesInMap(l,8421376)}_createSamplePointsInMap(e,t,i){const s=new CircleGeometry(t,8,4),n=new MeshBasicMaterial({color:i});e.forEach(e=>{var t;const i=new Mesh(s,n);i.position.copy(this._uvToMapPosition(e)),i.name="samplePoint",null===(t=this._scene)||void 0===t||t.add(i)})}_createCirclesInMap(e,t){const i=new MeshBasicMaterial({color:t,transparent:!0,opacity:.5});e.forEach(e=>{var t;const s=new CircleGeometry(e.size,8,4),n=new Mesh(s,i);n.position.copy(this._uvToMapPosition(e.uv)),n.name="samplePoint",null===(t=this._scene)||void 0===t||t.add(n)})}_createClusterLinesInMap(e,t,i){var s;const n=new LineBasicMaterial({color:i}),a=[];t.forEach(t=>{for(let i=1;i<t.length;i++){const s=e[t[0]].uv,n=e[t[i]].uv;if(a.push(this._uvToMapPosition(s)),Math.abs(s.x-n.x)>.5){const e=(s.y+n.y)/2,t=s.x<n.x?0:1;a.push(this._uvToMapPosition(new Vector2(t,e))),a.push(this._uvToMapPosition(new Vector2(1-t,e)))}a.push(this._uvToMapPosition(n))}});const o=(new BufferGeometry).setFromPoints(a),r=new LineSegments(o,n);r.name="clusterLine",null===(s=this._scene)||void 0===s||s.add(r)}_uvToMapPosition(e){return new Vector3(2*e.x-1,e.y-.5,0)}}class EnvironmentPmremGenertor extends PMREMGenerator{constructor(e){super(e),this._extendedEquirectMaterial=this._createEquirectMaterial()}fromEquirectangularTexture(e,t){var i,s;const n=null!==(i=null==t?void 0:t.rotation)&&void 0!==i?i:0,a=null!==(s=null==t?void 0:t.intensity)&&void 0!==s?s:1;return this._extendedEquirectMaterial.uniforms.intensity.value=a,this._extendedEquirectMaterial.uniforms.rotationMatrix.value.set(Math.cos(n),0,-Math.sin(n),0,1,0,Math.sin(n),0,Math.cos(n)),super.fromEquirectangular(e)}_createEquirectMaterial(){const e=new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},intensity:{value:1},rotationMatrix:{value:new Matrix3}},vertexShader:equilateralVertexShader,fragmentShader:equilateralFragmentShader,blending:NoBlending,depthTest:!1,depthWrite:!1});return this._equirectMaterial=e,e}}const equilateralVertexShader="\nprecision mediump float;\nprecision mediump int;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nuniform mat3 rotationMatrix;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection( vec2 uv, float face ) {\n uv = 2.0 * uv - 1.0;\n vec3 direction = vec3( uv, 1.0 );\n if ( face == 0.0 ) {\n direction = direction.zyx; // ( 1, v, u ) pos x\n } else if ( face == 1.0 ) {\n direction = direction.xzy;\n direction.xz *= -1.0; // ( -u, 1, -v ) pos y\n } else if ( face == 2.0 ) {\n direction.x *= -1.0; // ( -u, v, 1 ) pos z\n } else if ( face == 3.0 ) {\n direction = direction.zyx;\n direction.xz *= -1.0; // ( -1, v, -u ) neg x\n } else if ( face == 4.0 ) {\n direction = direction.xzy;\n direction.xy *= -1.0; // ( -u, -1, v ) neg y\n } else if ( face == 5.0 ) {\n direction.z *= -1.0; // ( u, v, -1 ) neg z\n }\n return direction;\n}\n\nvoid main() {\n vOutputDirection = rotationMatrix * getDirection(uv, faceIndex);\n gl_Position = vec4(position, 1.0);\n}\n",equilateralFragmentShader="\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform float intensity;\n\n#include <common>\n\nvoid main() { \n vec3 outputDirection = normalize(vOutputDirection);\n vec2 uv = equirectUv(outputDirection);\n gl_FragColor = vec4(texture2D(envMap, uv).rgb * intensity, 1.0);\n}\n";class EnvironmentSceneGenerator{}class EnvironmentDefinition{get lightSources(){return this._lightSources}set rotation(e){this._rotation!==e&&(this._rotation=e,this.needsUpdate=!0)}set intensity(e){this._intensity!==e&&(this._intensity=e,this.needsUpdate=!0)}set maxNoOfLightSources(e){this._maxNoOfLightSources!==e&&(this._maxNoOfLightSources=e,this.needsUpdate=!0)}get maxNoOfLightSources(){return this._maxNoOfLightSources}constructor(e,t){var i,s;this.needsUpdate=!0,this._lightSources=[],e instanceof EnvironmentSceneGenerator?this.environmentSceneGenerator=e:e instanceof CubeTexture?this.cubeTexture=e:e instanceof Texture&&(this.equirectangularTexture=e),(null==t?void 0:t.textureData)&&(this.textureData=null==t?void 0:t.textureData),this._rotation=null!==(i=null==t?void 0:t.rotation)&&void 0!==i?i:0,this._intensity=null!==(s=null==t?void 0:t.intensity)&&void 0!==s?s:1,void 0!==(null==t?void 0:t.maxNoOfLightSources)&&(this._maxNoOfLightSources=t.maxNoOfLightSources),this._parameters=t,this._environment=e}clone(){return new EnvironmentDefinition(this._environment,this._parameters)}createNewEnvironment(e){const t=this._createPmremTexture(e),i=this._detectLightSources(e,t);return this._lightSources=i.lightSources,null!=t?t:null}_getTextureOffset(){const e=this._rotation/(2*Math.PI)%1;return new Vector2(e,0)}_createPmremTexture(e){const t=new EnvironmentPmremGenertor(e);let i;if(this.equirectangularTexture)this.equirectangularTexture.offset.copy(this._getTextureOffset()),i=t.fromEquirectangularTexture(this.equirectangularTexture,{rotation:this._rotation,intensity:this._intensity});else if(this.cubeTexture)i=t.fromCubemap(this.cubeTexture);else if(this.environmentSceneGenerator){const e=this.environmentSceneGenerator.generateScene(this._intensity,this._rotation);i=t.fromScene(e,.04)}return this._debugScene=void 0,this.needsUpdate=!1,null==i?void 0:i.texture}_detectLightSources(e,t){const i=new LightSourceDetector;return this.equirectangularTexture&&0===this.rotation?i.detectLightSources(e,this.equirectangularTexture,this.textureData):t&&i.detectLightSources(e,t),i}createDebugScene(e,t,i){const s=null!=i?i:-1;if(this._debugScene&&s===this._debugScene.userData.maximumNumberOfLightSources)return this._debugScene;this._debugScene=new Scene;const n=new EnvironmentMapDecodeMaterial(!0,!1);n.setSourceTexture(t.environment),LightSourceDetectorDebug.createPlane(this._debugScene,n);const a=this._detectLightSources(e,t.environment);return new LightSourceDetectorDebug(a).createDebugScene(this._debugScene,s),this._debugScene.userData.maximumNumberOfLightSources=s,this._debugScene}}class DefaultEnvironmentSceneGenerator extends EnvironmentSceneGenerator{constructor(e={}){super(),this._parameters={},this._parameters=e}generateScene(e,t){const i=new DefaultEnvironmentScene({...this._parameters,lightIntensity:e*(this._parameters.lightIntensity||1),topLightIntensity:e*(this._parameters.topLightIntensity||1),sidLightIntensity:e*(this._parameters.sidLightIntensity||1)});return i.rotation.y=t,i}}class DefaultEnvironmentScene extends Scene{constructor(e={}){var t;super(),this._type=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:"all_around",this._topLightIntensity=(null==e?void 0:e.topLightIntensity)||(null==e?void 0:e.lightIntensity)||1,this._sideLightIntensity=(null==e?void 0:e.sidLightIntensity)||(null==e?void 0:e.lightIntensity)||1,this._sideReflectorIntensity=(null==e?void 0:e.sidLightIntensity)||(null==e?void 0:e.lightIntensity)||1;const i="front"===this._type?.3:0;this._ambientLightIntensity=(null==e?void 0:e.ambientLightIntensity)||i,this._colorVariation=(null==e?void 0:e.colorVariation)||.5,this._lightGeometry=new BoxGeometry,this._lightGeometry.deleteAttribute("uv"),this._reflectorLightGeometry=new CylinderGeometry(.7,.4,2,32),this._reflectorLightGeometry.deleteAttribute("uv"),this.generateScene(this)}generateScene(e){switch(this._type){default:case"all_around":this._createAllAroundSceneLight(e);break;case"front":this._createFrontSceneLight(e)}}dispose(){const e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(const t of e)t.dispose()}_createAllAroundSceneLight(e){const t=this._ambientLightIntensity;this.background=new Color(t,t,t),this._createTopLight(e,6,1);for(let t=0;t<6;t++){const i=t*Math.PI*2/6,s=Math.sin(i),n=Math.cos(i);t%2==0?this._createReflector(e,new Vector2(s,n),3,1,.8,.2):this._createSideLight(e,new Vector2(s,n),(t-1)/2,15,1.1,.33,1)}}_createFrontSceneLight(e){const t=this._ambientLightIntensity;this.background=new Color(t,t,t),this._createTopLight(e,6,.7);for(let t=0;t<6;t++){const i=t*Math.PI*2/6,s=Math.sin(i),n=Math.cos(i);if(0===t){this._createReflector(e,new Vector2(s,n),1.1,.6,.8,-.4);for(let i=0;i<2;i++){const s=(t-.3+.6*i)*Math.PI*2/6,n=Math.sin(s),a=Math.cos(s);this._createSideLight(e,new Vector2(n,a),(t-1)/2,50,1.2,.7,.8)}}else this._createReflector(e,new Vector2(s,n),1.1,.7,1.4,0)}}_createAreaLightMaterial(e,t,i){const s=new MeshBasicMaterial;return s.color.set(e,null!=t?t:e,null!=i?i:e),s}_createTopLight(e,t,i){const s=new Mesh(this._lightGeometry,this._createAreaLightMaterial(t*this._topLightIntensity));s.position.set(0,20,0),s.scale.set(5*i,.1,5*i),e.add(s)}_createSideLight(e,t,i,s,n,a,o){for(let r=0;r<3;r++){const h=s*this._sideLightIntensity,c=new Mesh(this._lightGeometry,this._createAreaLightMaterial((r+i)%3==0?h:h*(1-this._colorVariation),(r+i)%3==1?h:h*(1-this._colorVariation),(r+i)%3==2?h:h*(1-this._colorVariation))),l=(1===r?-t.y:2===r?t.y:0)/Math.sqrt(2),d=0===r?0:1,_=(1===r?t.x:2===r?-t.x:0)/Math.sqrt(2);c.position.set(t.x*o*15+1.1*l*n,15*a+1.1*d*n,t.y*o*15+1.1*_*n),c.rotation.set(0,Math.atan2(t.x,t.y),0),c.scale.setScalar(n),e.add(c)}}_createReflector(e,t,i,s,n,a){const o=new Mesh(this._reflectorLightGeometry,this._createAreaLightMaterial(i*this._sideReflectorIntensity));o.position.set(15*t.x,10*a,15*t.y),o.scale.set(10*s,10*n,10*s),e.add(o)}}class CameraControl2D extends CameraControl{constructor(e,t,i,s){super(e,t,i),this._scale=1,this._cameraZoom=1,this._state=0,this._size=5,this._lastPosition=new Vector2,this._zoomPosition=new Vector3,this._lastZoom=0,this._wasZooming=!1,this._zoomSpeed=Math.pow(.95,2),s?(this._camera=s,this._cameraPosition=(new Vector3).copy(this._camera.position)):this._initCamera(i?new Vector3(i.targetX,10,i.targetZ):new Vector3(0,10,0)),this._lerpEnabled=!1}_getCamera(){return this._camera||this._initCamera(new Vector3(0,10,0)),this._camera}_initCamera(e){let{x:t,y:i}=this._domHelper.getClientDimensions(),s=(t/i||1)*this._size,n=this._size;this._camera=new OrthographicCamera(s/-2,s/2,n/2,n/-2,1,1e3),this._camera.position.copy(e),this._cameraPosition=e,this._camera.lookAt(new Vector3(0,0,0))}updateCamera(){let e=this._domHelper.getAspectRatio()*this._size,t=this._size;this._camera.left=e/-2,this._camera.right=e/2,this._camera.top=t/2,this._camera.bottom=t/-2,this._camera.updateProjectionMatrix()}_initInputListener(){this._inputListeners.push({key:3,fun:e=>{this._locked||(this._state=1,this._lastPosition.set(e.positionRelative.x,e.positionRelative.y),this.dispatchEvent(0))}}),this._inputListeners.push({key:6,fun:e=>{this._lastPosition.x===e.positionRelative.x&&this._lastPosition.y===e.positionRelative.y||1!==this._state||this._locked||(this._move(new Vector2(e.positionRelative.x,e.positionRelative.y),e.type),this.dispatchEvent(1))}}),this._inputListeners.push({key:4,fun:e=>{1===this._state&&this.dispatchEvent(2),this._state=0}}),this._inputListeners.push({key:7,fun:e=>{e.event&&(e.event.stopPropagation(),e.event.preventDefault()),this.dispatchEvent(3),this._scale/=this._zoomSpeed,this._zoomTo(e.positionRelative),this._update()}}),this._inputListeners.push({key:8,fun:e=>{e.event&&(e.event.stopPropagation(),e.event.preventDefault()),this.dispatchEvent(4),this._scale*=this._zoomSpeed,this._zoomTo(e.positionRelative),this._update()}})}_zoomTo(e){if(Date.now()-this._lastZoom>200){let t=new Vector3(e.x,e.y,0);t.unproject(this._camera),this._zoomPosition.copy(t)}this._lastZoom=Date.now()}_move(e,t){let i=new Vector3,s=new Vector3(this._lastPosition.x,this._lastPosition.y,0),n=new Vector3(e.x,e.y,0);s.unproject(this._camera),n.unproject(this._camera),i.subVectors(n,s),this._cameraPosition.x-=i.x*(2===t?1.1:1),this._cameraPosition.z-=i.z*(2===t?1.1:1),this._lastPosition.copy(e)}zoomToFitBounds(e,t,i){if(compareBox3Size(e,this._boundingBox)<0&&!i)return void this.setBounds(e);this.setBounds(e);const s=e.getSize(new Vector3),n=e.getCenter(new Vector3),a=s.x/-2/this._camera.left,o=s.z/-2/this._camera.bottom,r=1/Math.max(a,o);(r<this._cameraZoom||t)&&(this._scale=r,this._cameraZoom=r,this._cameraPosition.x=n.x,this._cameraPosition.z=n.z)}_update(e,t,i){this._scale=Math.min(this._scale,5),this._scale=Math.max(this._scale,.1);let s=(new Vector3).subVectors(this._zoomPosition,this._cameraPosition).multiplyScalar((this._scale-this._cameraZoom)/this._scale);this._cameraPosition.x+=s.x,this._cameraPosition.z+=s.z,this._cameraZoom!==this._scale&&this.dispatchEvent(5,new ZoomChangeEvent(.1===this._scale,5===this._scale)),this._cameraZoom=this._scale,this._camera.updateProjectionMatrix()}animateCamera(e){const t=Math.abs(this._cameraZoom-this._camera.zoom)>.01;if(this._lerpEnabled=t,t&&(this._wasZooming=!0),this._wasZooming&&!t&&(setTimeout(()=>this._dispatchCameraIdle(),16),this._wasZooming=!1),!super.animateCamera(e)&&!t)return!1;this._lerpEnabled=!1;const i=Math.min(10*e,1);return this._camera.zoom=MathUtils.lerp(this._camera.zoom,this._cameraZoom,i),!0}getKernelZoomFactor(){const e=1e3*(this._camera.right-this._camera.left);return this._domHelper.element.clientWidth/e*this._camera.zoom}}const INTERIOR_LIGHTS_ENV_MAP_INTENSITY=.35,INTERIOR_LIGHTS_ENV_MAP_ROTATION=1.16;class SceneManager{get cameraBehaviour(){return this._cameraBehaviour}onBeforeRender(){}constructor(e,t,i,s){this._depthWriteMaterial=new MeshBasicMaterial({colorWrite:!1}),this._maxAnisotropy=1,this._clock=new Clock,this._delta=0,this._renderListener=null,this._stopRendering=!1,this._roomleRenderer=null,this._forceRender=!1,this._lastChange=Date.now(),this._running=!1,this._isInteriorLightActive=!1,this._perspectiveOffsetCamera=null,this._orthographicOffsetCamera=null,this._onAfterRender=()=>{},this._creator_=e,this._canvasID=i,this._isInteriorLightActive=this._initData.featureFlags.interiorLights,this._renderListener=()=>{this._requestRender()},this.createCameraControl(sanitizedCameraMode(s),t),this._setupScene(t,this._initData.transparentBackground),this._lifeCycleManager.addEventListener(this)}addEventListener(e){throw new Error("Method not implemented.")}removeEventListener(e){throw new Error("Method not implemented.")}_changeCameraBehaviour(e){this._cameraBehaviour&&(this.cameraBehaviour.cameraControl instanceof CameraControlFirstPerson&&(this._getInputManager().removeEventListener(7,this._renderListener),this._getInputManager().removeEventListener(8,this._renderListener)),this._cameraBehaviour.cameraControl.cleanUp()),this._cameraBehaviour=e,this._cameraBehaviour.cameraControl.setUp(),this._cameraBehaviour.setCameraChangeListener(this.onCameraChanged.bind(this)),e.cameraControl instanceof CameraControlFirstPerson&&(this._getInputManager().addEventListener(7,this._renderListener,this),this._getInputManager().addEventListener(8,this._renderListener,this)),this.cameraBehaviourChanged()}onCameraChanged(){}cameraBehaviourChanged(){this.cameraBehaviour.cameraControl instanceof CameraControl3D&&this.cameraBehaviour.cameraControl.updateDistanceAndRangesBasedOnBounds(this.getBounds())}_addCameraControlListener(){this.cameraBehaviour.cameraControl.addEventListener(0,()=>{var e;null===(e=this._roomleRenderer)||void 0===e||e.movingCameraStarts(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(1,this._requestRender,this),this.cameraBehaviour.cameraControl.addEventListener(2,()=>{var e;null===(e=this._roomleRenderer)||void 0===e||e.movingCameraStops(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(6,this._requestRender,this)}_renderEverything(){this._roomleRenderer&&(this._forceRender=!0,this._roomleRenderer.forceShadowUpdates(!1)),this._requestRender()}_renderWithoutShadowsAndAO(){this._roomleRenderer&&(this._forceRender=!0),this._requestRender()}_requestRender(){if(!this._renderer||this._stopRendering)return;const e=()=>{var t,i;if(this._delta=this._clock.getDelta(),this._animateCamera(),this.cameraBehaviour.cameraControl.getCamera().layers.mask=65535,this._renderLoopFunction&&(this._renderLoopFunction(),this._renderLoopFunction=null),this.onBeforeRender(),this._globalInitData.e2e&&window.TWEEN){const e=TWEEN.getAll();for(const t of e)t.end()}if(this._roomleRenderer)null===(t=this._statsHelper)||void 0===t||t.updateRenderInfo(this._roomleRenderer.renderer.info),this._roomleRenderer.render(this._scene,this.cameraBehaviour.cameraControl.getCamera()),this._forceRender=!1,this._shouldRenderUi()&&this._renderUi();else{null===(i=this._statsHelper)||void 0===i||i.updateRenderInfo(this._renderer.info);const e=this.cameraBehaviour.cameraControl.getCamera();e.updateMatrixWorld(),e.updateProjectionMatrix(),this._renderer.render(this._scene,e)}this._onAfterRender(),window.TWEEN&&TWEEN.update(),this._lastChange+3e3<Date.now()||this._stopRendering?this._running=!1:(this._running=!0,requestAnimationFrame(e))};this._lastChange=Date.now(),this._running||this._stopRendering||(this._running=!0,requestAnimationFrame(e))}_shouldRenderUi(){var e;return null===(e=this._pluginSystem)||void 0===e?void 0:e.needsUiScene()}_renderUi(){const e=this._scene.background?this._scene.background.clone():null;this._scene.overrideMaterial=this._depthWriteMaterial,this._scene.background=null,this._renderer.render(this._scene,this.cameraBehaviour.cameraControl.getCamera()),this._scene.overrideMaterial=null;const t=this._renderer.autoClear;this._renderer.autoClear=!1,this._renderer.clearDepth(),this._renderer.render(this._uiScene,this.cameraBehaviour.cameraControl.getCamera()),this._renderer.autoClear=t,this._scene.background=e}_animateCamera(){this.cameraBehaviour.cameraControl&&(this.cameraBehaviour.cameraControl.animateCamera(this._delta)||!this.shouldClearShadowsAndAO()||this._forceRender)&&this._lightSetting instanceof DynamicLightSetting&&this.cameraBehaviour.cameraControl.getCamera()instanceof PerspectiveCamera&&this._lightSetting.update(this.cameraBehaviour.cameraControl.getCamera(),this.cameraBehaviour.cameraControl.getTargetPosition()),this._environment&&this._environment.needsCamera()&&this.cameraBehaviour.cameraControl instanceof CameraControl3D&&this._environment.updateCamera(this.cameraBehaviour.cameraControl.getCamera())}shouldClearShadowsAndAO(){return!1}_setupScene(e,t){var i,s,n,a;const{x:o,y:r}=this._domHelper.getClientDimensions();this._scene=new Scene,this._uiScene=new Scene,(t=t||!1)||(this._scene.background=this._initData.colors.DEFAULT_BACKGROUND),this._renderer=new WebGLRenderer({antialias:!this._globalInitData.e2e,alpha:!0}),!0!==(null===(i=this._initData)||void 0===i?void 0:i.debug)&&void 0!==(null===(s=this._renderer)||void 0===s?void 0:s.debug)&&(this._renderer.debug.checkShaderErrors=!1);const h=this._initData.autoQuality?Math.min(window.devicePixelRatio,1.5):window.devicePixelRatio;this._renderer.setPixelRatio(h),this._renderer.setSize(o,r),this._renderer.outputColorSpace=SRGBColorSpace,this._renderer.autoClear=!1,this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=PCFSoftShadowMap,this._maxAnisotropy=this._renderer.capabilities.getMaxAnisotropy(),this._globalInitData.e2e||(this._roomleRenderer=new RoomleWebGLRenderer(this._renderer,o,r,null!==(n=this._initData.linearAoFilter)&&void 0!==n&&n),this._initData.debug&&this._roomleRenderer.sceneRenderer.loadLutImages(lutImages),this._roomleRenderer.setQualityMap(standaloneConfiguratorQualityLevels),this._roomleRenderer.setAutoQuality(this._initData.autoQuality),this._roomleRenderer.setShadingType(this._initData.shading),this._roomleRenderer.setCustomShadingParameters(this._initData.customShading,this._initData.customShadingMoc),null===(a=this._roomleRenderer)||void 0===a||a.setSize(o,r),this._roomleRenderer.sceneRenderer.outlineRenderer.parameters.hiddenEdgeColor=this._initData.colors.SELECTION.getHex(),this._roomleRenderer.sceneRenderer.outlineRenderer.parameters.visibleEdgeColor=this._initData.colors.SELECTION.getHex(),this._roomleRenderer.sceneRenderer.outlineRenderer.applyParameters()),this._renderer.domElement.classList.add(this._canvasID),this._domHelper.element.appendChild(this._renderer.domElement),this._getInputManager().addEvents(this._renderer.domElement),this._hdrEnvironmentLoader.registerEnvironmentChangedCallback(e=>{this._setEnvMap(e)}),this._initData.legacyLight?this.loadEnvMap("static/legacy_env-d5810ec5057d4716.exr"):this._initData.sceneLight?this._setDefaultEnvironmentScene():this.loadEnvMap(this._initData.envMapUrl),this._requestRender(),window.addEventListener("resize",this,!1),window.addEventListener("keydown",this,!1),window.addEventListener("keyup",this,!1),document.addEventListener("visibilitychange",this),this._pluginSystem.init(this._scene,this._uiScene,this.cameraBehaviour.cameraControl.getCamera().position),this._addCameraControlListener(),this.sceneChanged()}async loadEnvMap(e){await this._hdrEnvironmentLoader.loadUrl(this._renderer,e)}_getEnvMapIntensityAndRotation(){let e=this._initData.envMapIntensity,t=this._initData.envMapRotation;return e===DEFAULT_ENV_MAP_INTENSITY&&this._isInteriorLightActive&&(e=.35),t===DEFAULT_ENV_MAP_ROTATION&&this._isInteriorLightActive&&(t=1.16),{intensity:e,rotation:t}}_setDefaultEnvironmentScene(){const e=this._initData.sceneLight,{intensity:t,rotation:i}=this._getEnvMapIntensityAndRotation();this._scene.userData.environmentDefinition=new EnvironmentDefinition(new DefaultEnvironmentSceneGenerator({type:e}),{rotation:i,intensity:t,maxNoOfLightSources:this._initData.maxLightSources}),this._scene.userData.shadowFromEnvironment=!0,this._requestRender()}_setEnvMap(e){const{url:t,environmentMap:i}=e,{intensity:s,rotation:n}=this._getEnvMapIntensityAndRotation();this._scene.environment=i,this._scene.userData.environmentDefinition=new EnvironmentDefinition(i,{rotation:n,intensity:this._initData.legacyLight?.9:s,maxNoOfLightSources:this._initData.maxLightSources}),this._scene.userData.shadowFromEnvironment=!this._initData.legacyLight,this._environment instanceof GroundProjectedEnvironment&&this._environment.updateEnvironmentTexture(i),t!==ENV_HDR_256_FILE_NAME||this._globalInitData.e2e||window.requestIdleCallback(this.loadEnvMap.bind(this,"static/default_1k-2aa6d42244d30fb1.exr")),this._requestRender()}_tabVisible(){this.updateCamera(!1)}_releaseKeystrokeStates(){const e=["Shift","Meta","Control","Escape"];for(const t of e){const e=new KeyboardEvent("keyup",{key:t});this._onKeyUp(e,!0)}}updateCamera(e=!0){var t;const{x:i,y:s}=this._domHelper.getClientDimensions();null===(t=this._roomleRenderer)||void 0===t||t.setSize(i,s),this.cameraBehaviour.cameraControl.updateCamera(),this._renderEverything()}_onWindowResize(){const e=this._getInputManager();e&&e.updateSize(),this.updateCamera(),this._requestRender()}_isPartOfScene(e){return"Object3D"===e.type||"Mesh"===e.type||"GLB"===e.type||"GLTF"===e.type||"Group"===e.type}cleanUp(){this._getInputManager().removeEventListener(7,this._renderListener),this._getInputManager().removeEventListener(8,this._renderListener),this.cameraBehaviour.cameraControl&&this.cameraBehaviour.cameraControl.cleanUp(),this._stopRendering=!0}clearScene(){let e=[];this._scene.children.forEach(t=>{this._isPartOfScene(t)&&e.push(t)}),e.forEach(e=>{dispose(e),this._scene.remove(e)}),this._renderer.renderLists.dispose()}enableHD(e){this._renderer.capabilities.maxTextures>8&&e&&this.loadDynamicLightSetting(e),this._requestRender()}_loadGLTF(e,t,i,s,n,a,o){return new Promise((r,h)=>{this._staticItemLoader.loadGLTF(e,t,i,s,n,a,null,o).then(e=>{r(e.scene)},h)})}_loadGLB(e,t,i,s,n,a,o,r){return new Promise((h,c)=>{this._staticItemLoader.loadGLB(e,t,i,s,n,a,o,r).then(e=>{h(e.scene)},c)})}showGUI(){if(this._initData.disableDebugGUI)return;const e=document.createElement("style");e.innerText=".dg.main{position:absolute;z-index:999;top:0;left:0;}",document.head.appendChild(e);let t=getGUI(!1);t&&(this._domHelper.element.appendChild(t.domElement),t.domElement.style.zIndex="999",t.domElement.style.overflowY="auto",t.domElement.style.maxHeight=this._domHelper.element.clientHeight+"px",this._guiLoaded())}_guiLoaded(){let e=getGUI();if(!e)return;const t=e.addFolder("Scene Parameter"),i={intensity:this._initData.envMapIntensity,rotation:this._initData.envMapRotation};t.add(i,"intensity",0,4,.01).name("env map intensity").onChange(e=>{this.changeEnvironmentMapIntensity(e),this._requestRender()}),t.add(i,"rotation",0,2*Math.PI,.01).name("env map rotation").onChange(e=>{this._scene.userData.environmentDefinition.rotation=e,this._requestRender()}),this._lightSetting&&this._lightSetting.showGUI(),this._roomleRenderer&&this._roomleRenderer.showGUI(()=>this._requestRender()),this._environment&&this._environment.showGUI(()=>this._requestRender()),this._addGUIListener(e)}_addGUIListener(e){let t=e.__folders;Object.keys(t).forEach(e=>{let i=t[e];i.__folders&&Object.keys(i.__folders).forEach(e=>{let t=i.__folders[e];this._addGUIListener(t)}),i.__controllers&&i.__controllers.forEach(e=>{e.onFinishChange(()=>{this._guiParamChanged()})})})}_guiParamChanged(){this._renderEverything()}showStats(){import("./stats-helper-b816dec9.js").then(e=>this._statsHelper=new e.default)}_onKeyDown(e){}_onKeyUp(e,t=!1){}pause(){this._getInputManager().removeEvents(this._renderer.domElement),window.removeEventListener("resize",this,!1),window.removeEventListener("keydown",this,!1),window.removeEventListener("keyup",this,!1),document.removeEventListener("visibilitychange",this)}resume(){this._renderer.domElement.classList.add(this._canvasID),this._domHelper.element.appendChild(this._renderer.domElement),this._getInputManager().addEvents(this._renderer.domElement),window.addEventListener("resize",this,!1),window.addEventListener("keydown",this,!1),window.addEventListener("keyup",this,!1),document.addEventListener("visibilitychange",this),this.updateCamera()}destroy(){this.pause(),this.cleanUp()}handleEvent(e){switch(e.type){case"resize":this._onWindowResize();break;case"keydown":if(e.target&&(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))break;this._onKeyDown(e);break;case"keyup":if(e.target&&(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))break;this._onKeyUp(e);break;case"visibilitychange":this._tabVisible(),this._releaseKeystrokeStates()}}async loadSceneSettings(e){let t,i;return t=e.environment?new Promise(t=>{(new DynamicEnvironmentSettingLoader).load(this._scene,this._renderer.domElement,this._environment,e,this._maxAnisotropy).then(e=>{this._setEnvironment(e),t()})}):Promise.resolve(),e.lights?(this._lightSetting=new DynamicLightSetting(this._scene,this._lightSetting),i=this._lightSetting.loadFromObject(e)):i=Promise.resolve(),new Promise((e,s)=>{Promise.all([t,i]).then(()=>{this._renderEverything(),e()},s)})}setBackgroundColor(e){this._setEnvironment(new BackgroundEnvironment(this._scene,this._environment,new Color(e)))}setBackgroundImage(e){this._setEnvironment(new BackgroundEnvironment(this._scene,this._environment,null,this._renderer.domElement,e))}_setEnvironment(e){this._environment=e,this._renderEverything()}async loadDynamicLightSetting(e){this._lightSetting=new DynamicLightSetting(this._scene,this._lightSetting);let t=!1;if(e.url)await this._lightSetting.loadFromURL(e.url),t=!0;else if(e.json)await this._lightSetting.loadFromJSON(e.json),t=!0;else if(e.object)await this._lightSetting.loadFromObject(e.object),t=!0;else if(e.ls){const i=DynamicLightSettingLoader.createDynamicLightSettingSource(null,e.ls);await this._lightSetting.loadFromURL(i.url),t=!0}if(!t)throw new Error("No dynamic light setting source set");this._requestRender()}getScene(){return this._scene}updateScene(){var e;this._updateBounds(this.getBounds(),this.getGeometryBounds()),null===(e=this._roomleRenderer)||void 0===e||e.forceShadowUpdates(!0),this._renderEverything()}_updateBounds(e,t,i=!1){var s;if(!e)return;const n=null!=t?t:e;this.updateEnvironment(n,i),this._lightSetting&&this._lightSetting.needsBounds()&&this._lightSetting.updateBounds(e),null===(s=this._roomleRenderer)||void 0===s||s.updateBounds(n),this._requestRender(),this._pluginSystem.updateBounds(e)}setCameraOffset(e){const t=this.cameraBehaviour.cameraControl.getCamera(),i=t||t;(null==i?void 0:i.offset)?(i.offset=e,this._renderEverything()):console.warn("Cannot set offset, current camera does not support it")}getCameraOffset(){var e,t;const i=null===(t=null===(e=this.cameraBehaviour)||void 0===e?void 0:e.cameraControl)||void 0===t?void 0:t.getCamera(),s=i||i;return(null==s?void 0:s.offset)?JSON.parse(JSON.stringify(s.offset)):{left:0,top:0,right:1,bottom:1}}getOrthographicOffsetCamera(){if(!this._orthographicOffsetCamera){const e=this.getCameraOffset(),t=5;let i=this._domHelper.getAspectRatio()*t,s=t;const n=RoomleComponentFactoryInitializer();this._orthographicOffsetCamera=n.createOrthographicCamera(i/-2,i/2,s/2,s/-2,1,1e3,e),this._orthographicOffsetCamera.position.set(0,10,0),this._orthographicOffsetCamera.lookAt(new Vector3(0,0,0))}return this._orthographicOffsetCamera}getPerspectiveOffsetCamera(){if(!this._perspectiveOffsetCamera){const e=this.getCameraOffset(),t=this._domHelper.getClientDimensions(),i=t.x,s=t.y,n=RoomleComponentFactoryInitializer();this._perspectiveOffsetCamera=n.createPerspectiveCamera(30,i/s,.1,20,e)}return this._perspectiveOffsetCamera}updateEnvironment(e,t=!1){var i;if(e&&this._environment&&this._environment.needsBounds()){const i=e.getSize(new Vector3);(i.x+i.y+i.z!==0||t)&&this._environment.updateBounds(e.getSize(new Vector3),t)}null===(i=this._roomleRenderer)||void 0===i||i.updateBounds(e)}_onCameraIdle(){return!0}_onCameraMove(){return!0}_waitForAssets(){return Promise.resolve()}async exportCanvasScreenshot(e=1){return await this._waitForAssets(),new Promise(t=>{this._onAfterRender=()=>{const i=this._renderer.domElement.toDataURL(this._initData.transparentBackground?"image/png":"image/jpeg",e);t(i),this._onAfterRender=()=>{}},this._requestRender()})}async exportImageFromCamera(e,t=!1){return t&&await this._waitForAssets(),new Promise((t,i)=>{this._onAfterRender=()=>{this._onAfterRender=()=>{};const s=this._renderer.domElement.toDataURL("image/jpeg",1),{left:n,right:a,top:o,bottom:r}=this.getCameraOffset(),h=a-n,c=o-r;if(1===h&&1===c)return download(e,s),void t();const l=new Image;l.src=s,l.onload=()=>{const{naturalWidth:i,naturalHeight:s}=l,a=document.createElement("canvas");a.width=i*h,a.height=s*c;const r=a.getContext("2d"),d=i*n*-1,_=s*(1-o)*-1;r.drawImage(l,d,_),r.save(),download(e,a.toDataURL("image/jpeg",1)),t()},l.onerror=i},this._requestRender()})}changeEnvironmentMapIntensity(e){this._scene.userData.environmentDefinition.intensity=e}lockCamera(){this.cameraBehaviour.cameraControl.lock()}unlockCamera(){this.cameraBehaviour.cameraControl.unlock()}setEnvironmentMap(e,t,i,s){void 0!==e&&this._hdrEnvironmentLoader.loadUrl(this._renderer,e),void 0!==t&&(this._scene.userData.environmentDefinition.intensity=t),void 0!==i&&(this._scene.userData.environmentDefinition.rotation=i),void 0!==s&&(this._scene.userData.environmentDefinition.maxNoOfLightSources=s,this._roomleRenderer.forceShadowUpdates(!1)),this._requestRender()}_getCameraControl3D(e){return this._cameraControl3D?e&&this._cameraControl3D.setCurrentCameraParameters(e):this._cameraControl3D=new CameraControl3D(this._creator_,this._getInputManager(),e,this.getPerspectiveOffsetCamera()),this._cameraControl3D}_getCameraControl2D(){return this._cameraControl2D||(this._cameraControl2D=new CameraControl2D(this._creator_,this._getInputManager(),null,this.getOrthographicOffsetCamera())),this._cameraControl2D}_getCameraControlFirstPerson(){return this._cameraControlFirstPerson||(this._cameraControlFirstPerson=new CameraControlFirstPerson(this._creator_,this._getInputManager(),null,this.getPerspectiveOffsetCamera())),this._cameraControlFirstPerson}}__decorate([inject],SceneManager.prototype,"_domHelper",void 0),__decorate([inject],SceneManager.prototype,"_scriptLoader",void 0),__decorate([inject],SceneManager.prototype,"_lifeCycleManager",void 0),__decorate([inject],SceneManager.prototype,"_staticItemLoader",void 0),__decorate([inject],SceneManager.prototype,"_hdrEnvironmentLoader",void 0),__decorate([inject],SceneManager.prototype,"_initData",void 0),__decorate([inject],SceneManager.prototype,"_globalInitData",void 0),__decorate([inject],SceneManager.prototype,"_globalCallback",void 0),__decorate([inject],SceneManager.prototype,"_idbManager",void 0),__decorate([inject],SceneManager.prototype,"_pluginSystem",void 0),__decorate([inject],SceneManager.prototype,"_imageRenderer",void 0),__decorate([inject],SceneManager.prototype,"_cameraBehaviourState",void 0);class CameraBehaviour{constructor(e,t){var i;return this._state=null,this._cameraChangeListener=null,this._cameraControl=e,this._state=t,(null===(i=window.__RML__DEBUG__)||void 0===i?void 0:i.camera)?traceMethodCalls(this,"CameraBehaviour"):this}get state(){return this._state}setCameraChangeListener(e){this._cameraChangeListener=e}removeCameraChangeListener(){this._cameraChangeListener=null}_onCameraChanged(){this._cameraChangeListener&&this._cameraChangeListener()}}export{BackgroundEnvironment as B,CameraControl3D as C,DISTANCE_FACTOR as D,FloorEnvironment as F,INTERIOR_LIGHTS_ENV_MAP_ROTATION as I,LightSetting as L,ObjectAnimations as O,PULSE_LOOPS as P,RoomleComponentFactoryInitializer as R,SceneManager as S,TWEEN_FILE_NAME as T,CameraControl as a,CameraBehaviour as b,PULSE_DURATION as c,CameraControl2D as d,CameraControlFirstPerson as e,INTERIOR_LIGHTS_ENV_MAP_INTENSITY as f};
2
+ //# sourceMappingURL=camera-behaviour-00d42274.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"camera-behaviour-441440ad.js","sources":["../../packages/common-core/public/textures/env/default_1k.exr","../../packages/three-build/src/Tween.js","../../node_modules/three/examples/jsm/objects/GroundedSkybox.js","../../packages/common-core/public/textures/env/legacy_env.exr"],"sourcesContent":["export default \"static/default_1k-2aa6d42244d30fb1.exr\"","export default \"static/Tween-d57ee5d181fce582.js\"","import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from 'three';\n\n/**\n * A ground-projected skybox. The height is how far the camera that took the photo was above the ground -\n * a larger value will magnify the downward part of the image. By default the object is centered at the camera,\n * so it is often helpful to set skybox.position.y = height to put the ground at the origin. Set the radius\n * large enough to ensure your user's camera stays inside.\n */\n\nclass GroundedSkybox extends Mesh {\n\n\tconstructor( map, height, radius, resolution = 128 ) {\n\n\t\tif ( height <= 0 || radius <= 0 || resolution <= 0 ) {\n\n\t\t\tthrow new Error( 'GroundedSkybox height, radius, and resolution must be positive.' );\n\n\t\t}\n\n\t\tconst geometry = new SphereGeometry( radius, 2 * resolution, resolution );\n\t\tgeometry.scale( 1, 1, - 1 );\n\n\t\tconst pos = geometry.getAttribute( 'position' );\n\t\tconst tmp = new Vector3();\n\n\t\tfor ( let i = 0; i < pos.count; ++ i ) {\n\n\t\t\ttmp.fromBufferAttribute( pos, i );\n\t\t\tif ( tmp.y < 0 ) {\n\n\t\t\t\t// Smooth out the transition from flat floor to sphere:\n\t\t\t\tconst y1 = - height * 3 / 2;\n\t\t\t\tconst f =\n\t\t\t\t\t\ttmp.y < y1 ? - height / tmp.y : ( 1 - tmp.y * tmp.y / ( 3 * y1 * y1 ) );\n\t\t\t\ttmp.multiplyScalar( f );\n\t\t\t\ttmp.toArray( pos.array, 3 * i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tpos.needsUpdate = true;\n\n\t\tsuper( geometry, new MeshBasicMaterial( { map, depthWrite: false } ) );\n\n\t}\n\n}\n\nexport { GroundedSkybox };\n","export default \"static/legacy_env-d5810ec5057d4716.exr\""],"names":["TWEEN_FILE_NAME","GroundedSkybox","Mesh","[object Object]","map","height","radius","resolution","Error","geometry","SphereGeometry","scale","pos","getAttribute","tmp","Vector3","i","count","fromBufferAttribute","y","y1","f","multiplyScalar","toArray","array","needsUpdate","super","MeshBasicMaterial","depthWrite"],"mappings":"0mEAAA,ICAeA,gBAAA,6qnDCSf,MAAMC,uBAAuBC,KAE5BC,YAAaC,EAAKC,EAAQC,EAAQC,EAAa,KAE9C,GAAKF,GAAU,GAAKC,GAAU,GAAKC,GAAc,EAEhD,MAAM,IAAIC,MAAO,mEAIlB,MAAMC,EAAW,IAAIC,eAAgBJ,EAAQ,EAAIC,EAAYA,GAC7DE,EAASE,MAAO,EAAG,GAAK,GAExB,MAAMC,EAAMH,EAASI,aAAc,YAC7BC,EAAM,IAAIC,QAEhB,IAAM,IAAIC,EAAI,EAAGA,EAAIJ,EAAIK,QAAUD,EAGlC,GADAF,EAAII,oBAAqBN,EAAKI,GACzBF,EAAIK,EAAI,EAAI,CAGhB,MAAMC,EAAgB,GAATf,EAAa,EACpBgB,EACJP,EAAIK,EAAIC,GAAOf,EAASS,EAAIK,EAAM,EAAIL,EAAIK,EAAIL,EAAIK,GAAM,EAAIC,EAAKA,GACnEN,EAAIQ,eAAgBD,GACpBP,EAAIS,QAASX,EAAIY,MAAO,EAAIR,GAM9BJ,EAAIa,aAAc,EAElBC,MAAOjB,EAAU,IAAIkB,kBAAmB,CAAEvB,IAAAA,EAAKwB,YAAY,8orBC3C9C,0yDHAA"}
1
+ {"version":3,"file":"camera-behaviour-00d42274.js","sources":["../../packages/common-core/public/textures/env/default_1k.exr","../../packages/three-build/src/Tween.js","../../node_modules/three/examples/jsm/objects/GroundedSkybox.js","../../packages/common-core/public/textures/env/legacy_env.exr"],"sourcesContent":["export default \"static/default_1k-2aa6d42244d30fb1.exr\"","export default \"static/Tween-d57ee5d181fce582.js\"","import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from 'three';\n\n/**\n * A ground-projected skybox. The height is how far the camera that took the photo was above the ground -\n * a larger value will magnify the downward part of the image. By default the object is centered at the camera,\n * so it is often helpful to set skybox.position.y = height to put the ground at the origin. Set the radius\n * large enough to ensure your user's camera stays inside.\n */\n\nclass GroundedSkybox extends Mesh {\n\n\tconstructor( map, height, radius, resolution = 128 ) {\n\n\t\tif ( height <= 0 || radius <= 0 || resolution <= 0 ) {\n\n\t\t\tthrow new Error( 'GroundedSkybox height, radius, and resolution must be positive.' );\n\n\t\t}\n\n\t\tconst geometry = new SphereGeometry( radius, 2 * resolution, resolution );\n\t\tgeometry.scale( 1, 1, - 1 );\n\n\t\tconst pos = geometry.getAttribute( 'position' );\n\t\tconst tmp = new Vector3();\n\n\t\tfor ( let i = 0; i < pos.count; ++ i ) {\n\n\t\t\ttmp.fromBufferAttribute( pos, i );\n\t\t\tif ( tmp.y < 0 ) {\n\n\t\t\t\t// Smooth out the transition from flat floor to sphere:\n\t\t\t\tconst y1 = - height * 3 / 2;\n\t\t\t\tconst f =\n\t\t\t\t\t\ttmp.y < y1 ? - height / tmp.y : ( 1 - tmp.y * tmp.y / ( 3 * y1 * y1 ) );\n\t\t\t\ttmp.multiplyScalar( f );\n\t\t\t\ttmp.toArray( pos.array, 3 * i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tpos.needsUpdate = true;\n\n\t\tsuper( geometry, new MeshBasicMaterial( { map, depthWrite: false } ) );\n\n\t}\n\n}\n\nexport { GroundedSkybox };\n","export default \"static/legacy_env-d5810ec5057d4716.exr\""],"names":["TWEEN_FILE_NAME","GroundedSkybox","Mesh","[object Object]","map","height","radius","resolution","Error","geometry","SphereGeometry","scale","pos","getAttribute","tmp","Vector3","i","count","fromBufferAttribute","y","y1","f","multiplyScalar","toArray","array","needsUpdate","super","MeshBasicMaterial","depthWrite"],"mappings":"0mEAAA,ICAeA,gBAAA,6qnDCSf,MAAMC,uBAAuBC,KAE5BC,YAAaC,EAAKC,EAAQC,EAAQC,EAAa,KAE9C,GAAKF,GAAU,GAAKC,GAAU,GAAKC,GAAc,EAEhD,MAAM,IAAIC,MAAO,mEAIlB,MAAMC,EAAW,IAAIC,eAAgBJ,EAAQ,EAAIC,EAAYA,GAC7DE,EAASE,MAAO,EAAG,GAAK,GAExB,MAAMC,EAAMH,EAASI,aAAc,YAC7BC,EAAM,IAAIC,QAEhB,IAAM,IAAIC,EAAI,EAAGA,EAAIJ,EAAIK,QAAUD,EAGlC,GADAF,EAAII,oBAAqBN,EAAKI,GACzBF,EAAIK,EAAI,EAAI,CAGhB,MAAMC,EAAgB,GAATf,EAAa,EACpBgB,EACJP,EAAIK,EAAIC,GAAOf,EAASS,EAAIK,EAAM,EAAIL,EAAIK,EAAIL,EAAIK,GAAM,EAAIC,EAAKA,GACnEN,EAAIQ,eAAgBD,GACpBP,EAAIS,QAASX,EAAIY,MAAO,EAAIR,GAM9BJ,EAAIa,aAAc,EAElBC,MAAOjB,EAAU,IAAIkB,kBAAmB,CAAEvB,IAAAA,EAAKwB,YAAY,8orBC3C9C,0yDHAA"}