@roomle/web-sdk 3.6.0-alpha.3 → 3.6.0-alpha.4

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 (327) hide show
  1. package/lib/BufferGeometry-DLEagG41.mjs +1022 -0
  2. package/lib/BufferGeometry-DLEagG41.mjs.map +1 -0
  3. package/lib/ConfiguratorKernel.wasm +0 -0
  4. package/lib/GLTFExporter-D8qsdwDK.mjs +1092 -0
  5. package/lib/GLTFExporter-D8qsdwDK.mjs.map +1 -0
  6. package/lib/Object3D-DSjIOhON.mjs +1713 -0
  7. package/lib/Object3D-DSjIOhON.mjs.map +1 -0
  8. package/lib/PointLightHelper-BnjxGaOG.mjs +257 -0
  9. package/lib/PointLightHelper-BnjxGaOG.mjs.map +1 -0
  10. package/lib/RoomleCore.wasm +0 -0
  11. package/lib/RoomleToolsCore.wasm +0 -0
  12. package/lib/SpotLightHelper-DqsfqCrs.mjs +154 -0
  13. package/lib/SpotLightHelper-DqsfqCrs.mjs.map +1 -0
  14. package/lib/USDZExporter-DxIqi8St.mjs +296 -0
  15. package/lib/USDZExporter-DxIqi8St.mjs.map +1 -0
  16. package/lib/Vector4-DGmBYfpK.mjs +204 -0
  17. package/lib/Vector4-DGmBYfpK.mjs.map +1 -0
  18. package/lib/api-CNoIBuvr.mjs +55 -0
  19. package/lib/api-CNoIBuvr.mjs.map +1 -0
  20. package/lib/banana-for-scale-C_iNmlCT.mjs +36 -0
  21. package/lib/banana-for-scale-C_iNmlCT.mjs.map +1 -0
  22. package/lib/common-utils-DMSTohiS.mjs +187 -0
  23. package/lib/common-utils-DMSTohiS.mjs.map +1 -0
  24. package/lib/component-dimensioning-CvRmUja4.mjs +162 -0
  25. package/lib/component-dimensioning-CvRmUja4.mjs.map +1 -0
  26. package/lib/component-raycast-helper-CEp7wy9c.mjs +97 -0
  27. package/lib/component-raycast-helper-CEp7wy9c.mjs.map +1 -0
  28. package/lib/configurator-B_5XVG2O.mjs +45 -0
  29. package/lib/configurator-B_5XVG2O.mjs.map +1 -0
  30. package/lib/configurator-DCdvMM0o.mjs +2 -0
  31. package/lib/continuous-drawing-helper-v_5UAM9A.mjs +42 -0
  32. package/lib/continuous-drawing-helper-v_5UAM9A.mjs.map +1 -0
  33. package/lib/decorate-C1QnXPYw.mjs +35 -0
  34. package/lib/decorate-C1QnXPYw.mjs.map +1 -0
  35. package/lib/dimensioning-helper-DTcW85Oq.mjs +2 -0
  36. package/lib/dimensioning-helper-Fwpt1HTT.mjs +268 -0
  37. package/lib/dimensioning-helper-Fwpt1HTT.mjs.map +1 -0
  38. package/lib/fflate.module-dFNj5UPI.mjs +536 -0
  39. package/lib/fflate.module-dFNj5UPI.mjs.map +1 -0
  40. package/lib/glb-viewer-cP8g6bcm.mjs +315 -0
  41. package/lib/glb-viewer-cP8g6bcm.mjs.map +1 -0
  42. package/lib/glb-viewer-dZThmlwM.mjs +2 -0
  43. package/lib/homag-intelligence-LoOJ7roM.mjs +381 -0
  44. package/lib/homag-intelligence-LoOJ7roM.mjs.map +1 -0
  45. package/lib/imos-ix-poc-export-helper-CQh94HsO.mjs +161 -0
  46. package/lib/imos-ix-poc-export-helper-CQh94HsO.mjs.map +1 -0
  47. package/lib/kernel-BAQSG9r5.mjs +46 -0
  48. package/lib/kernel-BAQSG9r5.mjs.map +1 -0
  49. package/lib/kernel-utils-H74uNY1h.mjs +44 -0
  50. package/lib/kernel-utils-H74uNY1h.mjs.map +1 -0
  51. package/lib/layer-C_JtkhdO.mjs +8 -0
  52. package/lib/layer-C_JtkhdO.mjs.map +1 -0
  53. package/lib/main-BxEZ11ag.mjs +20461 -0
  54. package/lib/main-BxEZ11ag.mjs.map +1 -0
  55. package/lib/material-viewer-njBFF0Zg.mjs +292 -0
  56. package/lib/material-viewer-njBFF0Zg.mjs.map +1 -0
  57. package/lib/planner-Cr495Cyn.mjs +2 -0
  58. package/lib/planner-DY73rplC.mjs +44 -0
  59. package/lib/planner-DY73rplC.mjs.map +1 -0
  60. package/lib/plugin-system-D9K46xJk.mjs +55 -0
  61. package/lib/plugin-system-D9K46xJk.mjs.map +1 -0
  62. package/lib/roomle-sdk.d.ts +15 -2
  63. package/lib/roomle-sdk.js +7 -36
  64. package/lib/scene-renderer-D8HkTFeZ.mjs +3826 -0
  65. package/lib/scene-renderer-D8HkTFeZ.mjs.map +1 -0
  66. package/lib/script-loader-KBq8SjP6.mjs +45 -0
  67. package/lib/script-loader-KBq8SjP6.mjs.map +1 -0
  68. package/lib/static/draco/node_modules/three/examples/jsm/libs/draco/draco_decoder.js +34 -0
  69. package/lib/static/draco/node_modules/three/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  70. package/lib/static/draco/node_modules/three/examples/jsm/libs/draco/draco_encoder.js +33 -0
  71. package/lib/static/draco/node_modules/three/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  72. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -0
  73. package/lib/static/roomle-core-hsc/{src → node_modules/roomle-core-hsc/src}/embind/plannerCoreInterface.d.ts +2 -0
  74. package/lib/static/roomle-core-hsc/{wasm_modern → node_modules/roomle-core-hsc/wasm_modern}/ConfiguratorKernel.wasm +0 -0
  75. package/lib/static/roomle-core-hsc/{RoomleCore.wasm → node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm} +0 -0
  76. package/lib/static/roomle-core-hsc/{wasm_modern → node_modules/roomle-core-hsc/wasm_modern}/RoomleToolsCore.wasm +0 -0
  77. package/lib/stats-helper-HM0TaIM5.mjs +95 -0
  78. package/lib/stats-helper-HM0TaIM5.mjs.map +1 -0
  79. package/lib/three.core-CLIofecG.mjs +7629 -0
  80. package/lib/three.core-CLIofecG.mjs.map +1 -0
  81. package/lib/three.module-C4Q1skJQ.mjs +5795 -0
  82. package/lib/three.module-C4Q1skJQ.mjs.map +1 -0
  83. package/lib/three.webgpu-dFspy2yF.mjs +16057 -0
  84. package/lib/three.webgpu-dFspy2yF.mjs.map +1 -0
  85. package/lib/threejs-utils-jEzvlJF1.mjs +2233 -0
  86. package/lib/threejs-utils-jEzvlJF1.mjs.map +1 -0
  87. package/lib/tools-core-CZbPygRC.mjs +30 -0
  88. package/lib/tools-core-CZbPygRC.mjs.map +1 -0
  89. package/package.json +1 -1
  90. package/lib/BufferGeometry-C1o0MiFL.mjs +0 -2064
  91. package/lib/BufferGeometry-C1o0MiFL.mjs.map +0 -1
  92. package/lib/GLTFExporter-CXMBueJw.mjs +0 -1323
  93. package/lib/GLTFExporter-CXMBueJw.mjs.map +0 -1
  94. package/lib/PointLightHelper-ICWLqwjK.mjs +0 -522
  95. package/lib/PointLightHelper-ICWLqwjK.mjs.map +0 -1
  96. package/lib/SpotLightHelper-CW5lDGFp.mjs +0 -222
  97. package/lib/SpotLightHelper-CW5lDGFp.mjs.map +0 -1
  98. package/lib/USDZExporter-CUp3dX08.mjs +0 -552
  99. package/lib/USDZExporter-CUp3dX08.mjs.map +0 -1
  100. package/lib/banana-for-scale-CfQ8dnY2.mjs +0 -50
  101. package/lib/banana-for-scale-CfQ8dnY2.mjs.map +0 -1
  102. package/lib/component-dimensioning-C9AWhxvj.mjs +0 -237
  103. package/lib/component-dimensioning-C9AWhxvj.mjs.map +0 -1
  104. package/lib/continuous-drawing-helper-B5BlbPPz.mjs +0 -48
  105. package/lib/continuous-drawing-helper-B5BlbPPz.mjs.map +0 -1
  106. package/lib/homag-intelligence-UFo9Z8FS.mjs +0 -549
  107. package/lib/homag-intelligence-UFo9Z8FS.mjs.map +0 -1
  108. package/lib/imos-ix-poc-export-helper-CGSk-8yx.mjs +0 -180
  109. package/lib/imos-ix-poc-export-helper-CGSk-8yx.mjs.map +0 -1
  110. package/lib/index-DIyMlQBA.mjs +0 -100947
  111. package/lib/index-DIyMlQBA.mjs.map +0 -1
  112. package/lib/material-viewer-QTlidNBs.mjs +0 -451
  113. package/lib/material-viewer-QTlidNBs.mjs.map +0 -1
  114. package/lib/roomle-sdk.js.map +0 -1
  115. package/lib/static/draco/gltf/draco_decoder.js +0 -33
  116. package/lib/static/draco/gltf/draco_decoder.wasm +0 -0
  117. package/lib/static/draco/gltf/draco_encoder.js +0 -33
  118. package/lib/static/draco/gltf/draco_wasm_wrapper.js +0 -116
  119. package/lib/static/roomle-core-hsc/ConfiguratorKernel.wasm +0 -0
  120. package/lib/static/roomle-core-hsc/RoomleToolsCore.wasm +0 -0
  121. package/lib/static/roomle-core-hsc/embind/configuratorCallback.d.ts +0 -82
  122. package/lib/static/roomle-core-hsc/embind/configuratorCallback.js +0 -355
  123. package/lib/static/roomle-core-hsc/embind/configuratorCallback.js.map +0 -1
  124. package/lib/static/roomle-core-hsc/embind/configuratorCore.d.ts +0 -19
  125. package/lib/static/roomle-core-hsc/embind/configuratorCore.js +0 -50
  126. package/lib/static/roomle-core-hsc/embind/configuratorCore.js.map +0 -1
  127. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.d.ts +0 -746
  128. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.js +0 -99
  129. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.js.map +0 -1
  130. package/lib/static/roomle-core-hsc/embind/configuratorUtils.d.ts +0 -3
  131. package/lib/static/roomle-core-hsc/embind/configuratorUtils.js +0 -52
  132. package/lib/static/roomle-core-hsc/embind/configuratorUtils.js.map +0 -1
  133. package/lib/static/roomle-core-hsc/embind/coreModue.d.ts +0 -4
  134. package/lib/static/roomle-core-hsc/embind/coreModue.js +0 -3
  135. package/lib/static/roomle-core-hsc/embind/coreModue.js.map +0 -1
  136. package/lib/static/roomle-core-hsc/embind/coreModule.d.ts +0 -11
  137. package/lib/static/roomle-core-hsc/embind/coreModule.js +0 -19
  138. package/lib/static/roomle-core-hsc/embind/coreModule.js.map +0 -1
  139. package/lib/static/roomle-core-hsc/embind/plannerCoreInterface.d.ts +0 -851
  140. package/lib/static/roomle-core-hsc/loader/configurableObject.d.ts +0 -30
  141. package/lib/static/roomle-core-hsc/loader/configurableObject.js +0 -111
  142. package/lib/static/roomle-core-hsc/loader/configurableObject.js.map +0 -1
  143. package/lib/static/roomle-core-hsc/loader/configurationGeometryConstructor.d.ts +0 -21
  144. package/lib/static/roomle-core-hsc/loader/configurationGeometryConstructor.js +0 -90
  145. package/lib/static/roomle-core-hsc/loader/configurationGeometryConstructor.js.map +0 -1
  146. package/lib/static/roomle-core-hsc/loader/configurationLoader.d.ts +0 -116
  147. package/lib/static/roomle-core-hsc/loader/configurationLoader.js +0 -345
  148. package/lib/static/roomle-core-hsc/loader/configurationLoader.js.map +0 -1
  149. package/lib/static/roomle-core-hsc/loader/configurationManager.d.ts +0 -41
  150. package/lib/static/roomle-core-hsc/loader/configurationManager.js +0 -147
  151. package/lib/static/roomle-core-hsc/loader/configurationManager.js.map +0 -1
  152. package/lib/static/roomle-core-hsc/loaderUtility.d.ts +0 -81
  153. package/lib/static/roomle-core-hsc/loaderUtility.js +0 -141
  154. package/lib/static/roomle-core-hsc/loaderUtility.js.map +0 -1
  155. package/lib/static/roomle-core-hsc/logger.d.ts +0 -29
  156. package/lib/static/roomle-core-hsc/logger.js +0 -61
  157. package/lib/static/roomle-core-hsc/logger.js.map +0 -1
  158. package/lib/static/roomle-core-hsc/package.json +0 -1
  159. package/lib/static/roomle-core-hsc/planElementManager.d.ts +0 -96
  160. package/lib/static/roomle-core-hsc/planElementManager.js +0 -300
  161. package/lib/static/roomle-core-hsc/planElementManager.js.map +0 -1
  162. package/lib/static/roomle-core-hsc/plannerCore.d.ts +0 -31
  163. package/lib/static/roomle-core-hsc/plannerCore.js +0 -111
  164. package/lib/static/roomle-core-hsc/plannerCore.js.map +0 -1
  165. package/lib/static/roomle-core-hsc/plannerCoreCallback.d.ts +0 -39
  166. package/lib/static/roomle-core-hsc/plannerCoreCallback.js +0 -116
  167. package/lib/static/roomle-core-hsc/plannerCoreCallback.js.map +0 -1
  168. package/lib/static/roomle-core-hsc/plannerCoreInterface.d.ts +0 -851
  169. package/lib/static/roomle-core-hsc/plannerCoreInterface.js +0 -93
  170. package/lib/static/roomle-core-hsc/plannerCoreInterface.js.map +0 -1
  171. package/lib/static/roomle-core-hsc/rapiAccess.d.ts +0 -70
  172. package/lib/static/roomle-core-hsc/rapiAccess.js +0 -227
  173. package/lib/static/roomle-core-hsc/rapiAccess.js.map +0 -1
  174. package/lib/static/roomle-core-hsc/serviceCore.d.ts +0 -20
  175. package/lib/static/roomle-core-hsc/serviceCore.js +0 -54
  176. package/lib/static/roomle-core-hsc/serviceCore.js.map +0 -1
  177. package/lib/static/roomle-core-hsc/serviceCoreInterface.d.ts +0 -13
  178. package/lib/static/roomle-core-hsc/serviceCoreInterface.js +0 -3
  179. package/lib/static/roomle-core-hsc/serviceCoreInterface.js.map +0 -1
  180. package/lib/static/roomle-core-hsc/src/embind/configuratorCallback.d.ts +0 -82
  181. package/lib/static/roomle-core-hsc/src/embind/configuratorCallback.js +0 -355
  182. package/lib/static/roomle-core-hsc/src/embind/configuratorCallback.js.map +0 -1
  183. package/lib/static/roomle-core-hsc/src/embind/configuratorCore.d.ts +0 -19
  184. package/lib/static/roomle-core-hsc/src/embind/configuratorCore.js +0 -50
  185. package/lib/static/roomle-core-hsc/src/embind/configuratorCore.js.map +0 -1
  186. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.d.ts +0 -746
  187. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.js +0 -99
  188. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.js.map +0 -1
  189. package/lib/static/roomle-core-hsc/src/embind/configuratorUtils.d.ts +0 -3
  190. package/lib/static/roomle-core-hsc/src/embind/configuratorUtils.js +0 -52
  191. package/lib/static/roomle-core-hsc/src/embind/configuratorUtils.js.map +0 -1
  192. package/lib/static/roomle-core-hsc/src/embind/coreModue.d.ts +0 -4
  193. package/lib/static/roomle-core-hsc/src/embind/coreModue.js +0 -3
  194. package/lib/static/roomle-core-hsc/src/embind/coreModue.js.map +0 -1
  195. package/lib/static/roomle-core-hsc/src/embind/coreModule.d.ts +0 -11
  196. package/lib/static/roomle-core-hsc/src/embind/coreModule.js +0 -19
  197. package/lib/static/roomle-core-hsc/src/embind/coreModule.js.map +0 -1
  198. package/lib/static/roomle-core-hsc/src/embind/plannerCore.d.ts +0 -31
  199. package/lib/static/roomle-core-hsc/src/embind/plannerCore.js +0 -111
  200. package/lib/static/roomle-core-hsc/src/embind/plannerCore.js.map +0 -1
  201. package/lib/static/roomle-core-hsc/src/embind/plannerCoreCallback.d.ts +0 -39
  202. package/lib/static/roomle-core-hsc/src/embind/plannerCoreCallback.js +0 -116
  203. package/lib/static/roomle-core-hsc/src/embind/plannerCoreCallback.js.map +0 -1
  204. package/lib/static/roomle-core-hsc/src/embind/plannerCoreInterface.js +0 -93
  205. package/lib/static/roomle-core-hsc/src/embind/plannerCoreInterface.js.map +0 -1
  206. package/lib/static/roomle-core-hsc/src/embind/serviceCore.d.ts +0 -20
  207. package/lib/static/roomle-core-hsc/src/embind/serviceCore.js +0 -54
  208. package/lib/static/roomle-core-hsc/src/embind/serviceCore.js.map +0 -1
  209. package/lib/static/roomle-core-hsc/src/embind/serviceCoreInterface.d.ts +0 -13
  210. package/lib/static/roomle-core-hsc/src/embind/serviceCoreInterface.js +0 -3
  211. package/lib/static/roomle-core-hsc/src/embind/serviceCoreInterface.js.map +0 -1
  212. package/lib/static/roomle-core-hsc/src/embind/toolsCore.d.ts +0 -17
  213. package/lib/static/roomle-core-hsc/src/embind/toolsCore.js +0 -75
  214. package/lib/static/roomle-core-hsc/src/embind/toolsCore.js.map +0 -1
  215. package/lib/static/roomle-core-hsc/src/embind/toolsCoreInterface.d.ts +0 -40
  216. package/lib/static/roomle-core-hsc/src/embind/toolsCoreInterface.js +0 -8
  217. package/lib/static/roomle-core-hsc/src/embind/toolsCoreInterface.js.map +0 -1
  218. package/lib/static/roomle-core-hsc/src/loader/configurableObject.d.ts +0 -30
  219. package/lib/static/roomle-core-hsc/src/loader/configurableObject.js +0 -111
  220. package/lib/static/roomle-core-hsc/src/loader/configurableObject.js.map +0 -1
  221. package/lib/static/roomle-core-hsc/src/loader/configurationGeometryConstructor.d.ts +0 -21
  222. package/lib/static/roomle-core-hsc/src/loader/configurationGeometryConstructor.js +0 -90
  223. package/lib/static/roomle-core-hsc/src/loader/configurationGeometryConstructor.js.map +0 -1
  224. package/lib/static/roomle-core-hsc/src/loader/configurationLoader.d.ts +0 -116
  225. package/lib/static/roomle-core-hsc/src/loader/configurationLoader.js +0 -345
  226. package/lib/static/roomle-core-hsc/src/loader/configurationLoader.js.map +0 -1
  227. package/lib/static/roomle-core-hsc/src/loader/configurationManager.d.ts +0 -41
  228. package/lib/static/roomle-core-hsc/src/loader/configurationManager.js +0 -147
  229. package/lib/static/roomle-core-hsc/src/loader/configurationManager.js.map +0 -1
  230. package/lib/static/roomle-core-hsc/src/loader/loaderUtility.d.ts +0 -81
  231. package/lib/static/roomle-core-hsc/src/loader/loaderUtility.js +0 -141
  232. package/lib/static/roomle-core-hsc/src/loader/loaderUtility.js.map +0 -1
  233. package/lib/static/roomle-core-hsc/src/loader/logger.d.ts +0 -29
  234. package/lib/static/roomle-core-hsc/src/loader/logger.js +0 -61
  235. package/lib/static/roomle-core-hsc/src/loader/logger.js.map +0 -1
  236. package/lib/static/roomle-core-hsc/src/loader/planElementManager.d.ts +0 -96
  237. package/lib/static/roomle-core-hsc/src/loader/planElementManager.js +0 -300
  238. package/lib/static/roomle-core-hsc/src/loader/planElementManager.js.map +0 -1
  239. package/lib/static/roomle-core-hsc/src/loader/rapiAccess.d.ts +0 -70
  240. package/lib/static/roomle-core-hsc/src/loader/rapiAccess.js +0 -227
  241. package/lib/static/roomle-core-hsc/src/loader/rapiAccess.js.map +0 -1
  242. package/lib/static/roomle-core-hsc/toolsCore.d.ts +0 -17
  243. package/lib/static/roomle-core-hsc/toolsCore.js +0 -75
  244. package/lib/static/roomle-core-hsc/toolsCore.js.map +0 -1
  245. package/lib/static/roomle-core-hsc/toolsCoreInterface.d.ts +0 -40
  246. package/lib/static/roomle-core-hsc/toolsCoreInterface.js +0 -8
  247. package/lib/static/roomle-core-hsc/toolsCoreInterface.js.map +0 -1
  248. package/lib/static/roomle-core-hsc/wasm_modern/ConfiguratorKernel.js +0 -74
  249. package/lib/static/roomle-core-hsc/wasm_modern/RoomleCore.js +0 -79
  250. package/lib/static/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  251. package/lib/static/roomle-core-hsc/wasm_modern/RoomleToolsCore.js +0 -74
  252. package/lib/stats-helper-cTITQsAT.mjs +0 -108
  253. package/lib/stats-helper-cTITQsAT.mjs.map +0 -1
  254. package/lib/tools-core-CCWbo8fD.mjs +0 -36
  255. package/lib/tools-core-CCWbo8fD.mjs.map +0 -1
  256. /package/lib/static/draco/{README.md → node_modules/three/examples/jsm/libs/draco/README.md} +0 -0
  257. /package/lib/static/draco/{draco_decoder.js → node_modules/three/examples/jsm/libs/draco/gltf/draco_decoder.js} +0 -0
  258. /package/lib/static/draco/{draco_decoder.wasm → node_modules/three/examples/jsm/libs/draco/gltf/draco_decoder.wasm} +0 -0
  259. /package/lib/static/draco/{draco_encoder.js → node_modules/three/examples/jsm/libs/draco/gltf/draco_encoder.js} +0 -0
  260. /package/lib/static/draco/{draco_wasm_wrapper.js → node_modules/three/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js} +0 -0
  261. /package/lib/static/{asset-loader.worker.js → packages/workers/generated/asset-loader.worker.js} +0 -0
  262. /package/lib/static/{budgeteer.sw.js → packages/workers/generated/budgeteer.sw.js} +0 -0
  263. /package/lib/static/roomle-core-hsc/{configuratorCallback.d.ts → node_modules/roomle-core-hsc/src/embind/configuratorCallback.d.ts} +0 -0
  264. /package/lib/static/roomle-core-hsc/{configuratorCallback.js → node_modules/roomle-core-hsc/src/embind/configuratorCallback.js} +0 -0
  265. /package/lib/static/roomle-core-hsc/{configuratorCallback.js.map → node_modules/roomle-core-hsc/src/embind/configuratorCallback.js.map} +0 -0
  266. /package/lib/static/roomle-core-hsc/{configuratorCore.d.ts → node_modules/roomle-core-hsc/src/embind/configuratorCore.d.ts} +0 -0
  267. /package/lib/static/roomle-core-hsc/{configuratorCore.js → node_modules/roomle-core-hsc/src/embind/configuratorCore.js} +0 -0
  268. /package/lib/static/roomle-core-hsc/{configuratorCore.js.map → node_modules/roomle-core-hsc/src/embind/configuratorCore.js.map} +0 -0
  269. /package/lib/static/roomle-core-hsc/{configuratorCoreInterface.d.ts → node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.d.ts} +0 -0
  270. /package/lib/static/roomle-core-hsc/{configuratorCoreInterface.js → node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.js} +0 -0
  271. /package/lib/static/roomle-core-hsc/{configuratorCoreInterface.js.map → node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.js.map} +0 -0
  272. /package/lib/static/roomle-core-hsc/{configuratorUtils.d.ts → node_modules/roomle-core-hsc/src/embind/configuratorUtils.d.ts} +0 -0
  273. /package/lib/static/roomle-core-hsc/{configuratorUtils.js → node_modules/roomle-core-hsc/src/embind/configuratorUtils.js} +0 -0
  274. /package/lib/static/roomle-core-hsc/{configuratorUtils.js.map → node_modules/roomle-core-hsc/src/embind/configuratorUtils.js.map} +0 -0
  275. /package/lib/static/roomle-core-hsc/{coreModue.d.ts → node_modules/roomle-core-hsc/src/embind/coreModue.d.ts} +0 -0
  276. /package/lib/static/roomle-core-hsc/{coreModue.js → node_modules/roomle-core-hsc/src/embind/coreModue.js} +0 -0
  277. /package/lib/static/roomle-core-hsc/{coreModue.js.map → node_modules/roomle-core-hsc/src/embind/coreModue.js.map} +0 -0
  278. /package/lib/static/roomle-core-hsc/{coreModule.d.ts → node_modules/roomle-core-hsc/src/embind/coreModule.d.ts} +0 -0
  279. /package/lib/static/roomle-core-hsc/{coreModule.js → node_modules/roomle-core-hsc/src/embind/coreModule.js} +0 -0
  280. /package/lib/static/roomle-core-hsc/{coreModule.js.map → node_modules/roomle-core-hsc/src/embind/coreModule.js.map} +0 -0
  281. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCore.d.ts +0 -0
  282. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCore.js +0 -0
  283. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCore.js.map +0 -0
  284. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCoreCallback.d.ts +0 -0
  285. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCoreCallback.js +0 -0
  286. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCoreCallback.js.map +0 -0
  287. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCoreInterface.js +0 -0
  288. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/plannerCoreInterface.js.map +0 -0
  289. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCore.d.ts +0 -0
  290. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCore.js +0 -0
  291. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCore.js.map +0 -0
  292. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCoreInterface.d.ts +0 -0
  293. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCoreInterface.js +0 -0
  294. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/serviceCoreInterface.js.map +0 -0
  295. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCore.d.ts +0 -0
  296. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCore.js +0 -0
  297. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCore.js.map +0 -0
  298. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCoreInterface.d.ts +0 -0
  299. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCoreInterface.js +0 -0
  300. /package/lib/static/roomle-core-hsc/{embind → node_modules/roomle-core-hsc/src/embind}/toolsCoreInterface.js.map +0 -0
  301. /package/lib/static/roomle-core-hsc/{configurableObject.d.ts → node_modules/roomle-core-hsc/src/loader/configurableObject.d.ts} +0 -0
  302. /package/lib/static/roomle-core-hsc/{configurableObject.js → node_modules/roomle-core-hsc/src/loader/configurableObject.js} +0 -0
  303. /package/lib/static/roomle-core-hsc/{configurableObject.js.map → node_modules/roomle-core-hsc/src/loader/configurableObject.js.map} +0 -0
  304. /package/lib/static/roomle-core-hsc/{configurationGeometryConstructor.d.ts → node_modules/roomle-core-hsc/src/loader/configurationGeometryConstructor.d.ts} +0 -0
  305. /package/lib/static/roomle-core-hsc/{configurationGeometryConstructor.js → node_modules/roomle-core-hsc/src/loader/configurationGeometryConstructor.js} +0 -0
  306. /package/lib/static/roomle-core-hsc/{configurationGeometryConstructor.js.map → node_modules/roomle-core-hsc/src/loader/configurationGeometryConstructor.js.map} +0 -0
  307. /package/lib/static/roomle-core-hsc/{configurationLoader.d.ts → node_modules/roomle-core-hsc/src/loader/configurationLoader.d.ts} +0 -0
  308. /package/lib/static/roomle-core-hsc/{configurationLoader.js → node_modules/roomle-core-hsc/src/loader/configurationLoader.js} +0 -0
  309. /package/lib/static/roomle-core-hsc/{configurationLoader.js.map → node_modules/roomle-core-hsc/src/loader/configurationLoader.js.map} +0 -0
  310. /package/lib/static/roomle-core-hsc/{configurationManager.d.ts → node_modules/roomle-core-hsc/src/loader/configurationManager.d.ts} +0 -0
  311. /package/lib/static/roomle-core-hsc/{configurationManager.js → node_modules/roomle-core-hsc/src/loader/configurationManager.js} +0 -0
  312. /package/lib/static/roomle-core-hsc/{configurationManager.js.map → node_modules/roomle-core-hsc/src/loader/configurationManager.js.map} +0 -0
  313. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/loaderUtility.d.ts +0 -0
  314. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/loaderUtility.js +0 -0
  315. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/loaderUtility.js.map +0 -0
  316. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/logger.d.ts +0 -0
  317. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/logger.js +0 -0
  318. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/logger.js.map +0 -0
  319. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/planElementManager.d.ts +0 -0
  320. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/planElementManager.js +0 -0
  321. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/planElementManager.js.map +0 -0
  322. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/rapiAccess.d.ts +0 -0
  323. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/rapiAccess.js +0 -0
  324. /package/lib/static/roomle-core-hsc/{loader → node_modules/roomle-core-hsc/src/loader}/rapiAccess.js.map +0 -0
  325. /package/lib/static/roomle-core-hsc/{ConfiguratorKernel.js → node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.js} +0 -0
  326. /package/lib/static/roomle-core-hsc/{RoomleCore.js → node_modules/roomle-core-hsc/wasm_modern/RoomleCore.js} +0 -0
  327. /package/lib/static/roomle-core-hsc/{RoomleToolsCore.js → node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.js} +0 -0
@@ -0,0 +1,162 @@
1
+ import { Rr as e, Xt as t, _t as n, c as r, gt as i, l as a, vt as o } from "./three.core-CLIofecG.mjs";
2
+ import { I as s } from "./threejs-utils-jEzvlJF1.mjs";
3
+ import { a as c } from "./kernel-utils-H74uNY1h.mjs";
4
+ import { n as l, r as u, t as d } from "./decorate-C1QnXPYw.mjs";
5
+ import { s as f, t as p } from "./dimensioning-helper-Fwpt1HTT.mjs";
6
+ import { t as m } from "./layer-C_JtkhdO.mjs";
7
+ //#region packages/configurator-core/src/utils/component-dimensioning-html-util.ts
8
+ function h(e, t, n, r) {
9
+ let i = document.createElement("div");
10
+ return i.classList.add("dimension-label"), t === 0 ? i.classList.add("dimension-label--primary") : i.classList.add("dimension-label--secondary"), n ? i.onclick = () => {
11
+ for (i.classList.add("dimension-label--editing"); i.firstChild;) i.removeChild(i.firstChild);
12
+ let t = g(e, n, r);
13
+ i.appendChild(t), t.focus(), t.select();
14
+ } : i.classList.add("dimension-label--disabled"), _(i, e), i;
15
+ }
16
+ function g(e, t, n) {
17
+ let r = document.createElement("input");
18
+ r.id = t, r.type = "text", r.enterKeyHint = "done", r.classList.add("dimension-label__input"), r.inputMode = "numeric", r.pattern = "[0-9]*", r.value = e;
19
+ function i(t, i) {
20
+ if (r.id !== t) return;
21
+ r.id = "";
22
+ let a = parseFloat(i);
23
+ if (isNaN(a) || a <= 0) {
24
+ n(t, e);
25
+ return;
26
+ }
27
+ n(t, i);
28
+ }
29
+ return r.onkeydown = (n) => {
30
+ n.key === "Escape" || n.key === "Esc" ? i(t, e) : n.key === "Enter" && i(t, r.value);
31
+ }, r.onblur = () => {
32
+ i(t, r.value);
33
+ }, r;
34
+ }
35
+ function _(e, t) {
36
+ for (; e.firstChild;) e.removeChild(e.firstChild);
37
+ let n = document.createElement("span");
38
+ n.classList.add("dimension-label__value"), n.innerHTML = t, e.appendChild(n);
39
+ }
40
+ //#endregion
41
+ //#region packages/configurator-core/src/utils/component-dimensioning.ts
42
+ var v = "component_dimensioning_line_material", y = 3618615, b = .05, x = .02, S = .025, C = class t {
43
+ constructor(e, n, r) {
44
+ this._direction = t._getDirection(e);
45
+ let i = t._getDefaultLabelDirection(e, this._direction), a = r.dot(i) >= 0;
46
+ this._labelDirection = t._calculateActualLabelDirection(e, a, i), this._origin = t._calculateOrigin(e, n, a);
47
+ }
48
+ get direction() {
49
+ return this._direction;
50
+ }
51
+ get labelDirection() {
52
+ return this._labelDirection;
53
+ }
54
+ getEdge(e, t, r) {
55
+ return new n(this._origin.clone().add(this._direction.clone().multiplyScalar(e)).add(this._labelDirection.clone().multiplyScalar(r)), this._origin.clone().add(this._direction.clone().multiplyScalar(t)).add(this._labelDirection.clone().multiplyScalar(r)));
56
+ }
57
+ static _getDirection(t) {
58
+ return t.axis ? c(t.axis.direction).normalize() : t.dimensioning.axis === "x" ? new e(1, 0, 0) : t.dimensioning.axis === "y" ? new e(0, 0, 1) : new e(0, 1, 0);
59
+ }
60
+ static _getDefaultLabelDirection(t, n) {
61
+ if (t.axis) {
62
+ let e = c(t.axis.labelDirection);
63
+ return n.clone().cross(e).cross(n).normalize();
64
+ } else if (t.dimensioning.axis === "x") return new e(0, 1, 0);
65
+ else if (t.dimensioning.axis === "y") return new e(-1, 0, 0);
66
+ return new e(-1, 0, 0);
67
+ }
68
+ static _calculateActualLabelDirection(e, t, n) {
69
+ if (t) {
70
+ if (e.axis) {
71
+ if (e.axis.alternativeOrigin) return n.clone().multiplyScalar(-1);
72
+ } else if (e.dimensioning.axis === "y" || e.dimensioning.axis === "z") return n.clone().multiplyScalar(-1);
73
+ }
74
+ return n;
75
+ }
76
+ static _calculateOrigin(t, n, r) {
77
+ let i = n.getCenter(new e()), a = n.getSize(new e());
78
+ return t.axis ? r && t.axis.alternativeOrigin ? c(t.axis.alternativeOrigin) : c(t.axis.origin) : t.dimensioning.axis === "x" ? new e(0, i.y + a.y * .5, i.z - a.z * .5) : t.dimensioning.axis === "y" ? new e(i.x + a.x * (r ? .5 : -.5), i.y - a.y * .5, 0) : new e(i.x + a.x * (r ? .5 : -.5), 0, i.z - a.z * .5);
79
+ }
80
+ }, w = class extends t {
81
+ constructor(t, n, r, i) {
82
+ super(), this._mainLineObject = null, this.onEditingFinished = (e, t) => {
83
+ let n = this._unitFormatter.parseMMValueFromUnitString(t, "length");
84
+ this.editingFinishedCallback(e, n);
85
+ }, this.name = p, this._size = n.getSize(new e()), this._dimensioning = s(t.dimensioning), this._axis = new C(t, n, r), this._level = this._dimensioning.maxLevel - this._dimensioning.level, this.editingFinishedCallback = i, this._init();
86
+ }
87
+ clone() {
88
+ console.warn("Will not clone ComponentDimensioning because this can break the generation of perspective images. If the ComponentDimensioning is visible during the generation of the perspective image, three.js tries to clone it but clone does not give any parameters to the constructor and therefore the clone breaks.");
89
+ }
90
+ _initMaterials() {
91
+ this._cacheHolder.materialCache && (this._cacheHolder.materialCache.has(v) ? this._lineMaterial = this._cacheHolder.materialCache.get(v) : (this._lineMaterial = new o({ color: y }), this._cacheHolder.materialCache.set(v, this._lineMaterial)));
92
+ }
93
+ _init() {
94
+ this._initMaterials();
95
+ let e = Math.round(Math.max(this._size.y, this._size.x, this._size.z)), t = Math.abs(this._dimensioning.to - this._dimensioning.from), n = S + (e < 4 ? 0 : e * .005);
96
+ t < .3 && (n *= .5 + t);
97
+ let o = n * 1.4, s = b + (3 * x + o) * this._level, c = this._axis.getEdge(this._dimensioning.from, this._dimensioning.to, s);
98
+ this._addEdgeSideLines(o, c, this._axis.labelDirection.clone());
99
+ let l = new a(), u = [
100
+ c.start.x,
101
+ c.start.y,
102
+ c.start.z,
103
+ c.end.x,
104
+ c.end.y,
105
+ c.end.z
106
+ ];
107
+ l.setAttribute("position", new r(new Float32Array(u), 3));
108
+ let d = new i(l, this._lineMaterial);
109
+ d.name = "component dimension line " + this._dimensioning.axis, d.renderOrder = 0, d.layers.set(m.DIMENSIONS), this._mainLineObject = d, this.add(d);
110
+ let f = this._unitFormatter.formatMMValueToUnitString(t * 1e3);
111
+ this._textLabel = this.createTextLabel(f), this.add(this._textLabel);
112
+ }
113
+ createTextLabel(e) {
114
+ let t = new f(h(e, this._dimensioning.level, this._dimensioning.interactionKey, this.onEditingFinished));
115
+ return t.userData.isLabel = !0, t.renderOrder = 1, t;
116
+ }
117
+ _getMainLineCenterWorldPosition() {
118
+ if (!this._mainLineObject) return null;
119
+ this.updateMatrixWorld(!0), this._mainLineObject.updateMatrixWorld(!0);
120
+ let t = this._mainLineObject.geometry.attributes.position.array;
121
+ if (t.length < 6) return null;
122
+ let n = new e(t[0], t[1], t[2]), r = new e(t[3], t[4], t[5]);
123
+ return n.applyMatrix4(this._mainLineObject.matrixWorld), r.applyMatrix4(this._mainLineObject.matrixWorld), n.clone().add(r).multiplyScalar(.5);
124
+ }
125
+ initializeTextLabels() {
126
+ if (!(!this._textLabel || this._textLabel.children.length > 0)) try {
127
+ this.updateMatrixWorld(!0);
128
+ let e = this._getMainLineCenterWorldPosition();
129
+ if (e) {
130
+ let t = this.worldToLocal(e.clone());
131
+ this._textLabel.position.copy(t);
132
+ }
133
+ } catch (e) {
134
+ console.warn("Failed to initialize text label for dimension:", e), this._textLabel && this.remove(this._textLabel);
135
+ }
136
+ }
137
+ _addEdgeSideLines(e, t, n) {
138
+ let r = -(3 * x + e) * .5, i = t.start.clone(), a = t.start.clone().add(n.clone().multiplyScalar(r)), o = t.end.clone(), s = t.end.clone().add(n.clone().multiplyScalar(r));
139
+ this._addLine(a, i), this._addLine(s, o);
140
+ }
141
+ _addLine(e, t) {
142
+ let n = new a(), o = [
143
+ e.x,
144
+ e.y,
145
+ e.z,
146
+ t.x,
147
+ t.y,
148
+ t.z
149
+ ];
150
+ n.setAttribute("position", new r(new Float32Array(o), 3));
151
+ let s = new i(n, this._lineMaterial);
152
+ s.renderOrder = 0, s.layers.set(m.DIMENSIONS), this.add(s);
153
+ }
154
+ dispose() {
155
+ this.remove(this._textLabel), this._mainLineObject = null;
156
+ }
157
+ };
158
+ d([u, l("design:type", Object)], w.prototype, "_cacheHolder", void 0), d([u, l("design:type", Object)], w.prototype, "_unitFormatter", void 0);
159
+ //#endregion
160
+ export { w as default };
161
+
162
+ //# sourceMappingURL=component-dimensioning-CvRmUja4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-dimensioning-CvRmUja4.mjs","names":[],"sources":["../../packages/configurator-core/src/utils/component-dimensioning-html-util.ts","../../packages/configurator-core/src/utils/component-dimensioning.ts"],"sourcesContent":["export function createDimensioningTextLabelHtmlDiv(\n labelText: string,\n dimensioningLevel: number,\n interactionKey: string | undefined,\n editingFinishedCallback: (interactionKey: string, value: string) => void,\n): HTMLDivElement {\n const labelHtmlDiv = document.createElement('div');\n labelHtmlDiv.classList.add('dimension-label');\n\n if (dimensioningLevel === 0) {\n labelHtmlDiv.classList.add('dimension-label--primary');\n } else {\n labelHtmlDiv.classList.add('dimension-label--secondary');\n }\n\n if (!interactionKey) {\n labelHtmlDiv.classList.add('dimension-label--disabled');\n } else {\n labelHtmlDiv.onclick = () => {\n labelHtmlDiv.classList.add('dimension-label--editing');\n while (labelHtmlDiv.firstChild) {\n labelHtmlDiv.removeChild(labelHtmlDiv.firstChild);\n }\n const labelHtmlInput = createDimensioningLabelHtmlInput(\n labelText,\n interactionKey,\n editingFinishedCallback,\n );\n labelHtmlDiv.appendChild(labelHtmlInput);\n labelHtmlInput.focus();\n labelHtmlInput.select();\n };\n }\n\n resetChildren(labelHtmlDiv, labelText);\n\n return labelHtmlDiv;\n}\n\nfunction createDimensioningLabelHtmlInput(\n originalValue: string,\n interactionKey: string,\n editingFinishedCallback: (interactionKey: string, value: string) => void,\n): HTMLInputElement {\n const labelHtmlInput = document.createElement('input');\n labelHtmlInput.id = interactionKey;\n labelHtmlInput.type = 'text';\n labelHtmlInput.enterKeyHint = 'done';\n labelHtmlInput.classList.add('dimension-label__input');\n labelHtmlInput.inputMode = 'numeric';\n labelHtmlInput.pattern = '[0-9]*';\n labelHtmlInput.value = originalValue;\n\n function finishEditing(interactionKey: string, valueToSet: string): void {\n // avoid race conditions\n if (labelHtmlInput.id !== interactionKey) {\n return;\n }\n labelHtmlInput.id = '';\n\n const numValue = parseFloat(valueToSet);\n\n if (isNaN(numValue) || numValue <= 0) {\n editingFinishedCallback(interactionKey, originalValue);\n return;\n }\n\n editingFinishedCallback(interactionKey, valueToSet);\n }\n\n labelHtmlInput.onkeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n finishEditing(interactionKey, originalValue);\n } else if (event.key === 'Enter') {\n finishEditing(interactionKey, labelHtmlInput.value);\n }\n };\n\n labelHtmlInput.onblur = () => {\n finishEditing(interactionKey, labelHtmlInput.value);\n };\n\n return labelHtmlInput;\n}\n\nfunction resetChildren(labelHtmlDiv: HTMLDivElement, labelText: string): void {\n while (labelHtmlDiv.firstChild) {\n labelHtmlDiv.removeChild(labelHtmlDiv.firstChild);\n }\n\n const labelHtmlSpan = document.createElement('span');\n labelHtmlSpan.classList.add('dimension-label__value');\n labelHtmlSpan.innerHTML = labelText;\n labelHtmlDiv.appendChild(labelHtmlSpan);\n}\n","import type CacheHolder from '../../../common-core/src/services/cache-holder';\nimport type UnitFormatter from '../services/unit-formatter';\nimport type { Dimensioning, DimensioningAxis } from '../../../typings/kernel';\n\nimport type { Box3 } from 'three';\nimport {\n BufferAttribute,\n BufferGeometry,\n Line,\n Line3,\n LineBasicMaterial,\n Object3D,\n Vector3,\n} from 'three';\nimport { kernelDimensioningToThree } from '../../../common-core/src/utils/threejs-utils';\nimport { convertToTHREE } from '../../../common-core/src/utils/kernel-utils';\nimport { DIMENSIONING_GEOMETRY } from './dimensioning-helper';\nimport inject from '../../../common-core/src/di/inject';\nimport { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer.js';\nimport { LAYER } from '../../../common-core/src/webgl/layer';\nimport { createDimensioningTextLabelHtmlDiv } from './component-dimensioning-html-util';\n\nconst LINE_MATERIAL = 'component_dimensioning_line_material';\nconst LINE_COLOR = 0x373737;\nconst LINE_SPACING = 0.05;\n\nconst TEXT_SPACING = 0.02;\nconst TEXT_SIZE = 0.025;\n\nexport interface DimensioningAndAxis {\n dimensioning: Dimensioning;\n axis?: DimensioningAxis;\n}\n\nclass ComponentDimensioningAxis {\n private _origin: Vector3;\n private readonly _direction: Vector3;\n private readonly _labelDirection: Vector3;\n\n constructor(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n cameraPosition: Vector3,\n ) {\n this._direction =\n ComponentDimensioningAxis._getDirection(dimensioningAndAxis);\n const defaultLabelDirection =\n ComponentDimensioningAxis._getDefaultLabelDirection(\n dimensioningAndAxis,\n this._direction,\n );\n const lookAtOppositeSide = cameraPosition.dot(defaultLabelDirection) >= 0;\n this._labelDirection =\n ComponentDimensioningAxis._calculateActualLabelDirection(\n dimensioningAndAxis,\n lookAtOppositeSide,\n defaultLabelDirection,\n );\n this._origin = ComponentDimensioningAxis._calculateOrigin(\n dimensioningAndAxis,\n boundingBox,\n lookAtOppositeSide,\n );\n }\n\n get direction(): Vector3 {\n return this._direction;\n }\n\n get labelDirection(): Vector3 {\n return this._labelDirection;\n }\n\n getEdge(from: number, to: number, lineOffset: number): Line3 {\n const start = this._origin\n .clone()\n .add(this._direction.clone().multiplyScalar(from))\n .add(this._labelDirection.clone().multiplyScalar(lineOffset));\n const end = this._origin\n .clone()\n .add(this._direction.clone().multiplyScalar(to))\n .add(this._labelDirection.clone().multiplyScalar(lineOffset));\n return new Line3(start, end);\n }\n\n private static _getDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n ): Vector3 {\n if (dimensioningAndAxis.axis) {\n return convertToTHREE(dimensioningAndAxis.axis.direction).normalize();\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(1, 0, 0);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(0, 0, 1);\n }\n return new Vector3(0, 1, 0);\n }\n\n private static _getDefaultLabelDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n direction: Vector3,\n ): Vector3 {\n if (dimensioningAndAxis.axis) {\n const labelDirection = convertToTHREE(\n dimensioningAndAxis.axis.labelDirection,\n );\n const planeNormal = direction.clone().cross(labelDirection);\n return planeNormal.cross(direction).normalize();\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(0, 1, 0);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(-1, 0, 0);\n }\n return new Vector3(-1, 0, 0);\n }\n\n private static _calculateActualLabelDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n lookAtOppositeSide: boolean,\n labelDirection: Vector3,\n ): Vector3 {\n if (lookAtOppositeSide) {\n if (dimensioningAndAxis.axis) {\n if (dimensioningAndAxis.axis.alternativeOrigin) {\n return labelDirection.clone().multiplyScalar(-1);\n }\n } else if (\n dimensioningAndAxis.dimensioning.axis === 'y' ||\n dimensioningAndAxis.dimensioning.axis === 'z'\n ) {\n return labelDirection.clone().multiplyScalar(-1);\n }\n }\n return labelDirection;\n }\n\n private static _calculateOrigin(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n lookAtOppositeSide: boolean,\n ): Vector3 {\n const center = boundingBox.getCenter(new Vector3());\n const size = boundingBox.getSize(new Vector3());\n if (dimensioningAndAxis.axis) {\n return lookAtOppositeSide && dimensioningAndAxis.axis.alternativeOrigin\n ? convertToTHREE(dimensioningAndAxis.axis.alternativeOrigin)\n : convertToTHREE(dimensioningAndAxis.axis.origin);\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(0, center.y + size.y * 0.5, center.z - size.z * 0.5);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(\n center.x + size.x * (lookAtOppositeSide ? 0.5 : -0.5),\n center.y - size.y * 0.5,\n 0,\n );\n }\n return new Vector3(\n center.x + size.x * (lookAtOppositeSide ? 0.5 : -0.5),\n 0,\n center.z - size.z * 0.5,\n );\n }\n}\n\nexport default class ComponentDimensioning extends Object3D {\n @inject\n private _cacheHolder: CacheHolder;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n private _dimensioning: Dimensioning;\n private _axis: ComponentDimensioningAxis;\n private _size: Vector3;\n\n private readonly editingFinishedCallback: (\n interactionKey: string,\n value: number,\n ) => void;\n\n private readonly _level: number;\n private _lineMaterial: LineBasicMaterial;\n\n private _textLabel: CSS2DObject;\n\n private _mainLineObject: Line | null = null;\n\n constructor(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n relativeCameraDirection: Vector3,\n editingFinishedCallback: (interactionKey: string, value: number) => void,\n ) {\n super();\n this.name = DIMENSIONING_GEOMETRY;\n\n this._size = boundingBox.getSize(new Vector3());\n this._dimensioning = kernelDimensioningToThree(\n dimensioningAndAxis.dimensioning,\n );\n this._axis = new ComponentDimensioningAxis(\n dimensioningAndAxis,\n boundingBox,\n relativeCameraDirection,\n );\n this._level = this._dimensioning.maxLevel - this._dimensioning.level;\n\n this.editingFinishedCallback = editingFinishedCallback;\n\n this._init();\n }\n\n clone() {\n console.warn(\n 'Will not clone ComponentDimensioning because this can break the generation of perspective images. ' +\n 'If the ComponentDimensioning is visible during the generation of the perspective image, ' +\n 'three.js tries to clone it but clone does not give any parameters to the constructor and therefore the clone breaks.',\n );\n // Since we do not need to clone ComponentDimensioning, we return undefined\n return undefined as any;\n }\n\n private _initMaterials() {\n if (!this._cacheHolder.materialCache) {\n return;\n }\n\n if (this._cacheHolder.materialCache.has(LINE_MATERIAL)) {\n this._lineMaterial = this._cacheHolder.materialCache.get(\n LINE_MATERIAL,\n ) as LineBasicMaterial;\n } else {\n this._lineMaterial = new LineBasicMaterial({\n color: LINE_COLOR,\n });\n this._cacheHolder.materialCache.set(LINE_MATERIAL, this._lineMaterial);\n }\n }\n\n private _init() {\n this._initMaterials();\n\n const maxSize = Math.round(\n Math.max(this._size.y, this._size.x, this._size.z),\n );\n const length = Math.abs(this._dimensioning.to - this._dimensioning.from);\n\n let fontSize = TEXT_SIZE + (maxSize < 4 ? 0 : maxSize * 0.005);\n if (length < 0.3) {\n fontSize *= 0.5 + length;\n }\n\n // Approximate text height for spacing calculations\n // Based on typical font metrics (height is roughly 1.4x the font size)\n const levelSpacing = fontSize * 1.4;\n\n const lineOffset =\n LINE_SPACING + (3 * TEXT_SPACING + levelSpacing) * this._level;\n\n const line = this._axis.getEdge(\n this._dimensioning.from,\n this._dimensioning.to,\n lineOffset,\n );\n\n this._addEdgeSideLines(\n levelSpacing,\n line,\n this._axis.labelDirection.clone(),\n );\n\n const lineGeometry = new BufferGeometry();\n const vertices = [\n line.start.x,\n line.start.y,\n line.start.z,\n line.end.x,\n line.end.y,\n line.end.z,\n ];\n lineGeometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(vertices), 3),\n );\n\n const lineObject = new Line(lineGeometry, this._lineMaterial);\n lineObject.name = 'component dimension line ' + this._dimensioning.axis;\n lineObject.renderOrder = 0;\n lineObject.layers.set(LAYER.DIMENSIONS);\n\n this._mainLineObject = lineObject;\n\n this.add(lineObject);\n\n const labelText = this._unitFormatter.formatMMValueToUnitString(\n length * 1000,\n );\n\n this._textLabel = this.createTextLabel(labelText);\n this.add(this._textLabel);\n }\n\n private createTextLabel(labelText: string): CSS2DObject {\n const labelHtmlDiv = createDimensioningTextLabelHtmlDiv(\n labelText,\n this._dimensioning.level,\n this._dimensioning.interactionKey,\n this.onEditingFinished,\n );\n const labelObject = new CSS2DObject(labelHtmlDiv);\n labelObject.userData.isLabel = true;\n labelObject.renderOrder = 1;\n\n return labelObject;\n }\n\n private onEditingFinished = (interactionKey: string, value: string): void => {\n const parsedValue = this._unitFormatter.parseMMValueFromUnitString(\n value,\n 'length',\n );\n\n this.editingFinishedCallback(interactionKey, parsedValue);\n };\n\n // Get the world position center of the main dimension line (same logic as getDimensionLineCenter)\n private _getMainLineCenterWorldPosition(): Vector3 | null {\n if (!this._mainLineObject) {\n return null;\n }\n\n this.updateMatrixWorld(true);\n this._mainLineObject.updateMatrixWorld(true);\n\n const positions = this._mainLineObject.geometry.attributes.position.array;\n\n if (positions.length < 6) {\n return null;\n }\n\n const start = new Vector3(positions[0], positions[1], positions[2]);\n const end = new Vector3(positions[3], positions[4], positions[5]);\n\n start.applyMatrix4(this._mainLineObject.matrixWorld);\n end.applyMatrix4(this._mainLineObject.matrixWorld);\n\n return start.clone().add(end).multiplyScalar(0.5);\n }\n\n public initializeTextLabels(): void {\n if (!this._textLabel || this._textLabel.children.length > 0) {\n return;\n }\n\n try {\n this.updateMatrixWorld(true);\n\n const labelWorldPos = this._getMainLineCenterWorldPosition();\n if (labelWorldPos) {\n const labelLocalPos = this.worldToLocal(labelWorldPos.clone());\n this._textLabel.position.copy(labelLocalPos);\n }\n } catch (error) {\n console.warn('Failed to initialize text label for dimension:', error);\n if (this._textLabel) {\n this.remove(this._textLabel);\n }\n }\n }\n\n private _addEdgeSideLines(\n levelSpacing: number,\n line: Line3,\n labelDirection: Vector3,\n ) {\n const sideOffset = -(3 * TEXT_SPACING + levelSpacing) * 0.5;\n const endFrom = line.start.clone();\n const startFrom = line.start\n .clone()\n .add(labelDirection.clone().multiplyScalar(sideOffset));\n const endTo = line.end.clone();\n const startTo = line.end\n .clone()\n .add(labelDirection.clone().multiplyScalar(sideOffset));\n this._addLine(startFrom, endFrom);\n this._addLine(startTo, endTo);\n }\n\n private _addLine(start: Vector3, end: Vector3) {\n const lineGeometry = new BufferGeometry();\n const vertices = [start.x, start.y, start.z, end.x, end.y, end.z];\n lineGeometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(vertices), 3),\n );\n const line = new Line(lineGeometry, this._lineMaterial);\n line.renderOrder = 0;\n line.layers.set(LAYER.DIMENSIONS);\n this.add(line);\n }\n\n public dispose() {\n this.remove(this._textLabel);\n this._mainLineObject = null;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { u as e } from "./scene-renderer-D8HkTFeZ.mjs";
2
+ import { Jn as t, K as n, Nt as r, Pt as i, Rr as a, Ut as o, o as s } from "./three.core-CLIofecG.mjs";
3
+ import { K as c } from "./threejs-utils-jEzvlJF1.mjs";
4
+ import { I as l } from "./common-utils-DMSTohiS.mjs";
5
+ import { t as u } from "./layer-C_JtkhdO.mjs";
6
+ //#region packages/configurator-core/src/utils/component-raycast-helper.ts
7
+ var d = /* @__PURE__ */ e({ default: () => f }), f = class {
8
+ constructor() {
9
+ this._nonTransparentComponent = null, this._raycaster = new t(), this._raycaster.near = .1, this._raycaster.layers.enable(u.OBJECT), this._raycaster.layers.enable(u.COMPONENT), this._raycaster.layers.enable(u.PREVIEW), this._raycaster.layers.enable(u.UI);
10
+ }
11
+ init(e, t) {
12
+ this._object = e, this._camera = t, this.checkComponentVisibility = l(this.checkComponentVisibility, 100).bind(this), this.checkPreviewVisibility = l(this.checkPreviewVisibility, 100).bind(this);
13
+ }
14
+ setCamera(e) {
15
+ this._camera = e;
16
+ }
17
+ setObject(e) {
18
+ this._object = e;
19
+ }
20
+ changeMaterialsOnSelect(e, t, n = !1, r) {
21
+ t !== this._nonTransparentComponent && (this._nonTransparentComponent = t, this._changeMaterialsOnSelect(e, t, n, r));
22
+ }
23
+ _changeMaterialsOnSelect(e, t, n = !1, r) {
24
+ if (e.children.length > 0) for (let a of e.children) {
25
+ let o = t && e.id === t.id || n, s = !(a instanceof i);
26
+ a.userData.ignoreComponentRaycast || this._changeMaterialsOnSelect(a, t, o && s ? !1 : o, r);
27
+ }
28
+ if (t) e instanceof i && e.material instanceof o && !e.userData.oldMaterial && (e.userData.oldMaterial = e.material, e.material = e.material.clone(), n || c(e, {
29
+ opacity: .2,
30
+ transparent: !0
31
+ }).then(() => {
32
+ r?.();
33
+ }));
34
+ else if (e.userData.oldMaterial && e instanceof i && e.material instanceof o) {
35
+ let { opacity: t, transparent: n } = e.userData.oldMaterial;
36
+ c(e, {
37
+ opacity: t,
38
+ transparent: n
39
+ }).then(() => r?.()), e.userData.oldMaterial = void 0;
40
+ }
41
+ }
42
+ isComponentVisible(e) {
43
+ let t = [];
44
+ e.traverse((e) => t.push(e.uuid));
45
+ let n = new s().setFromObject(e).getCenter(new a()), r = new a().subVectors(n, this._camera.position).normalize();
46
+ this._raycaster.set(this._camera.position, r), this._raycaster.far = this._camera.position.distanceTo(n);
47
+ let i = [];
48
+ return this._raycaster.intersectObjects(this._object.children, !0).forEach((e) => {
49
+ e.object.material.visible && (t.includes(e.object.uuid) || e.object.userData.ignoreComponentRaycast || i.push(e));
50
+ }), i.length === 0;
51
+ }
52
+ checkComponentAndPreviewVisibility(e, t) {
53
+ e.hasSelection() ? this.checkComponentVisibility(e, t) : t.hasPreviews() ? this.checkPreviewVisibility(t) : this.changeMaterialsOnSelect(this._object, null);
54
+ }
55
+ checkComponentVisibility(e, t) {
56
+ if (!e.hasSelection()) return;
57
+ let n = t.getComponentsForIds(e.getSelectedRuntimeComponentIds());
58
+ if (n.length > 1) return;
59
+ let r = n[0];
60
+ this.isComponentVisible(r) ? this.changeMaterialsOnSelect(this._object, null) : this.changeMaterialsOnSelect(this._object, r);
61
+ }
62
+ areAllPreviewsVisible(e) {
63
+ if (!e.hasPreviews()) return !0;
64
+ let t = e.getPreviews();
65
+ return t.length === 0 ? !0 : t.map((e) => this.isComponentVisible(e)).reduce((e, t) => e && t);
66
+ }
67
+ areAllComponentsInFrustum(e) {
68
+ if (e.length === 0) return !0;
69
+ let t = new n(), i = new r().multiplyMatrices(this._camera.projectionMatrix, this._camera.matrixWorldInverse), o = new s();
70
+ t.setFromProjectionMatrix(i);
71
+ let c = (e) => {
72
+ let n = o.setFromObject(e).getCenter(new a());
73
+ return t.containsPoint(n);
74
+ };
75
+ return e.map((e) => c(e)).reduce((e, t) => e && t);
76
+ }
77
+ checkPreviewVisibility(e) {
78
+ e.hasPreviewLines() || (this.areAllPreviewsVisible(e) ? this.changeMaterialsOnSelect(this._object, null) : this.changeMaterialsOnSelect(this._object, { id: -1 }));
79
+ }
80
+ isComponentMeasurementLabelOccluded(e, t) {
81
+ let n = new a().subVectors(e, this._camera.position).normalize(), r = this._camera.position.distanceTo(e);
82
+ return this._raycaster.set(this._camera.position, n), this._raycaster.far = r - .01, this._raycaster.intersectObject(t, !0).filter((e) => {
83
+ let t = e.object;
84
+ return !(t.type !== "Mesh" || t.userData.ignoreComponentRaycast || t.material && !t.material.visible);
85
+ }).length > 0;
86
+ }
87
+ checkMultipleLabelOcclusion(e, t) {
88
+ let n = /* @__PURE__ */ new Set();
89
+ return e.forEach(({ id: e, worldPos: r }) => {
90
+ this.isComponentMeasurementLabelOccluded(r, t) && n.add(e);
91
+ }), n;
92
+ }
93
+ };
94
+ //#endregion
95
+ export { d as n, f as t };
96
+
97
+ //# sourceMappingURL=component-raycast-helper-CEp7wy9c.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-raycast-helper-CEp7wy9c.mjs","names":[],"sources":["../../packages/configurator-core/src/utils/component-raycast-helper.ts"],"sourcesContent":["import { type RoomleComponent } from '../../../common-core/src/webgl/roomle-component-factory';\nimport type ConfiguratorSceneEventHandler from '../webgl/configurator-scene-event-handler';\nimport type ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\nimport { throttle } from '../../../common-core/src/utils/common-utils';\nimport { LAYER } from '../../../common-core/src/webgl/layer';\nimport { transitionTransparencyOfMaterial } from '../../../common-core/src/utils/threejs-utils';\nimport type { Object3D, PerspectiveCamera } from 'three';\nimport {\n Box3,\n Frustum,\n Matrix4,\n Mesh,\n MeshStandardMaterial,\n Raycaster,\n Vector3,\n} from 'three';\n\nexport default class ComponentRaycastHelper {\n private _object: Object3D;\n private _camera: PerspectiveCamera;\n private _raycaster: Raycaster;\n\n private _nonTransparentComponent: RoomleComponent = null;\n\n constructor() {\n this._raycaster = new Raycaster();\n this._raycaster.near = 0.1;\n this._raycaster.layers.enable(LAYER.OBJECT);\n this._raycaster.layers.enable(LAYER.COMPONENT);\n this._raycaster.layers.enable(LAYER.PREVIEW);\n this._raycaster.layers.enable(LAYER.UI);\n }\n\n public init(object: Object3D, camera: PerspectiveCamera) {\n this._object = object;\n this._camera = camera;\n\n this.checkComponentVisibility = throttle(\n this.checkComponentVisibility,\n 100,\n ).bind(this);\n this.checkPreviewVisibility = throttle(\n this.checkPreviewVisibility,\n 100,\n ).bind(this);\n }\n\n public setCamera(camera: PerspectiveCamera) {\n this._camera = camera;\n }\n\n public setObject(object: Object3D) {\n this._object = object;\n }\n\n public changeMaterialsOnSelect(\n object: Object3D,\n component: RoomleComponent,\n selected: boolean = false,\n callback?: () => void,\n ) {\n if (component === this._nonTransparentComponent) {\n return;\n }\n this._nonTransparentComponent = component;\n this._changeMaterialsOnSelect(object, component, selected, callback);\n }\n\n private _changeMaterialsOnSelect(\n object: Object3D,\n component: RoomleComponent,\n selected: boolean = false,\n callback?: () => void,\n ) {\n if (object.children.length > 0) {\n for (const child of object.children) {\n const selectChild =\n (component && object.id === component.id) || selected;\n const isComponent = !(child instanceof Mesh);\n if (!child.userData.ignoreComponentRaycast) {\n this._changeMaterialsOnSelect(\n child,\n component,\n selectChild && isComponent ? false : selectChild,\n callback,\n );\n }\n }\n }\n if (component) {\n if (\n object instanceof Mesh &&\n object.material instanceof MeshStandardMaterial &&\n !object.userData.oldMaterial\n ) {\n object.userData.oldMaterial = object.material;\n object.material = object.material.clone();\n if (!selected) {\n transitionTransparencyOfMaterial(object, {\n opacity: 0.2,\n transparent: true,\n }).then(() => {\n callback?.();\n });\n }\n }\n } else if (object.userData.oldMaterial) {\n if (\n object instanceof Mesh &&\n object.material instanceof MeshStandardMaterial\n ) {\n const { opacity, transparent } = object.userData.oldMaterial;\n transitionTransparencyOfMaterial(object, { opacity, transparent }).then(\n () => callback?.(),\n );\n object.userData.oldMaterial = undefined;\n }\n }\n }\n\n public isComponentVisible(component: RoomleComponent): boolean {\n const uuids: string[] = [];\n component.traverse((object) => uuids.push(object.uuid));\n const position = new Box3()\n .setFromObject(component)\n .getCenter(new Vector3());\n const direction = new Vector3()\n .subVectors(position, this._camera.position)\n .normalize();\n this._raycaster.set(this._camera.position, direction);\n this._raycaster.far = this._camera.position.distanceTo(position);\n const visibleIntersections = [];\n this._raycaster\n .intersectObjects(this._object.children, true)\n .forEach((i) => {\n // do not include invisible materials\n if (!(i.object as any).material.visible) {\n return;\n }\n // do not include the object itself\n if (uuids.includes(i.object.uuid)) {\n return;\n }\n // do not include objects which explicitly have the ignoreComponentRaycast flag\n if ((i.object as any).userData.ignoreComponentRaycast) {\n return;\n }\n visibleIntersections.push(i);\n });\n return visibleIntersections.length === 0;\n }\n\n public checkComponentAndPreviewVisibility(\n sceneEventHandler: ConfiguratorSceneEventHandler,\n configuratorViewModel: ConfiguratorViewModel,\n ) {\n if (sceneEventHandler.hasSelection()) {\n this.checkComponentVisibility(sceneEventHandler, configuratorViewModel);\n } else if (configuratorViewModel.hasPreviews()) {\n this.checkPreviewVisibility(configuratorViewModel);\n } else {\n this.changeMaterialsOnSelect(this._object, null);\n }\n }\n\n public checkComponentVisibility(\n sceneEventHandler: ConfiguratorSceneEventHandler,\n configuratorViewModel: ConfiguratorViewModel,\n ) {\n if (!sceneEventHandler.hasSelection()) {\n return;\n }\n const selectedComponents = configuratorViewModel.getComponentsForIds(\n sceneEventHandler.getSelectedRuntimeComponentIds(),\n );\n if (selectedComponents.length > 1) {\n return;\n }\n const selectedComponent = selectedComponents[0];\n if (this.isComponentVisible(selectedComponent)) {\n this.changeMaterialsOnSelect(this._object, null);\n } else {\n this.changeMaterialsOnSelect(this._object, selectedComponent);\n }\n }\n\n public areAllPreviewsVisible(\n configuratorViewModel: ConfiguratorViewModel,\n ): boolean {\n if (!configuratorViewModel.hasPreviews()) {\n return true;\n }\n const previews = configuratorViewModel.getPreviews();\n if (previews.length === 0) {\n return true;\n }\n return previews\n .map((preview) => this.isComponentVisible(preview))\n .reduce(\n (arePreviewsVisible, isPreviewVisible) =>\n arePreviewsVisible && isPreviewVisible,\n );\n }\n\n public areAllComponentsInFrustum(previews: RoomleComponent[]): boolean {\n if (previews.length === 0) {\n return true;\n }\n const frustum = new Frustum();\n const matrix = new Matrix4().multiplyMatrices(\n this._camera.projectionMatrix,\n this._camera.matrixWorldInverse,\n );\n const box3 = new Box3();\n frustum.setFromProjectionMatrix(matrix);\n const isComponentInFrustum = (component: RoomleComponent) => {\n const position = box3.setFromObject(component).getCenter(new Vector3());\n return frustum.containsPoint(position);\n };\n return previews\n .map((preview) => isComponentInFrustum(preview))\n .reduce(\n (arePreviewsVisible, isPreviewVisible) =>\n arePreviewsVisible && isPreviewVisible,\n );\n }\n\n public checkPreviewVisibility(configuratorViewModel: ConfiguratorViewModel) {\n if (configuratorViewModel.hasPreviewLines()) {\n return;\n }\n const allPreviewsVisible = this.areAllPreviewsVisible(\n configuratorViewModel,\n );\n if (!allPreviewsVisible) {\n this.changeMaterialsOnSelect(this._object, { id: -1 } as RoomleComponent);\n } else {\n this.changeMaterialsOnSelect(this._object, null);\n }\n }\n\n public isComponentMeasurementLabelOccluded(\n labelWorldPos: Vector3,\n component: RoomleComponent,\n ): boolean {\n const direction = new Vector3()\n .subVectors(labelWorldPos, this._camera.position)\n .normalize();\n const distance = this._camera.position.distanceTo(labelWorldPos);\n\n this._raycaster.set(this._camera.position, direction);\n this._raycaster.far = distance - 0.01;\n\n const intersections = this._raycaster.intersectObject(component, true);\n\n const occludingIntersections = intersections.filter((intersection) => {\n const obj = intersection.object as any;\n\n if (\n obj.type !== 'Mesh' ||\n obj.userData.ignoreComponentRaycast ||\n (obj.material && !obj.material.visible)\n ) {\n return false;\n }\n\n return true;\n });\n\n return occludingIntersections.length > 0;\n }\n\n public checkMultipleLabelOcclusion(\n labelPositions: Array<{ id: string; worldPos: Vector3 }>,\n component: RoomleComponent,\n ): Set<string> {\n const occludedLabelIds = new Set<string>();\n\n labelPositions.forEach(({ id, worldPos }) => {\n if (this.isComponentMeasurementLabelOccluded(worldPos, component)) {\n occludedLabelIds.add(id);\n }\n });\n\n return occludedLabelIds;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { C as e, D as t, G as n, K as r, N as i, Q as a, T as o, Z as s, d as c, et as l, n as u, q as d, r as f, t as p, tt as m, x as h } from "./main-BxEZ11ag.mjs";
2
+ import { t as g } from "./script-loader-KBq8SjP6.mjs";
3
+ import { t as _ } from "./component-raycast-helper-CEp7wy9c.mjs";
4
+ //#region packages/configurator-core/src/utils/injectables.ts
5
+ var v = [
6
+ new a("logger", d),
7
+ new a("rapi-access", l),
8
+ new a("script-loader", g),
9
+ new a("camera-control-3d", e),
10
+ new a("camera-control", o),
11
+ new a("global-init-data", n),
12
+ new a("data-syncer", r),
13
+ new a("configurator-scene-manager", c, s.CONTEXT),
14
+ new a("configurator-view-model", h, s.CONTEXT),
15
+ new a("component-raycast-helper", _, s.GLOBAL)
16
+ ], y = class extends u {
17
+ setupDependencies() {
18
+ f.setup(v), this.lookup("planner-kernel-access", this._context).init(i.CONFIGURATOR), this.lookup("rapi-access", this._context), this.lookup("script-loader", this._context), this.lookup("logger", this._context);
19
+ }
20
+ cleanUpGlobals() {
21
+ delete window.RoomleConfigurator;
22
+ }
23
+ cleanUpDependencies() {
24
+ let e = this.lookup("script-loader"), t = this.lookup("rapi-access");
25
+ this.lookup("dom-helper");
26
+ let n = this.lookup("configurator-scene-manager");
27
+ e && e.cleanUp(), t && t.cleanUp(), n && n.cleanUp();
28
+ }
29
+ setupGlobals(e) {
30
+ m.init(e ?? {});
31
+ }
32
+ getApi() {
33
+ return this._configurator;
34
+ }
35
+ async bootFinished() {
36
+ this._configurator = new t(this._context), this._configurator.getMain = () => this, window.RoomleConfigurator || (window.RoomleConfigurator = this._configurator);
37
+ }
38
+ getContextName() {
39
+ return p.CONFIGURATOR;
40
+ }
41
+ };
42
+ //#endregion
43
+ export { y as t };
44
+
45
+ //# sourceMappingURL=configurator-B_5XVG2O.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurator-B_5XVG2O.mjs","names":[],"sources":["../../packages/configurator-core/src/utils/injectables.ts","../../packages/configurator-core/src/configurator.ts"],"sourcesContent":["import CameraControl from '../../../common-core/src/cameracontrol/camera-control';\nimport CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport ScriptLoader from '../../../common-core/src/script-loader';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport Logger from '../../../common-core/src/logger';\nimport DataSyncer from '../../../common-core/src/services/data-syncer';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport ComponentRaycastHelper from './component-raycast-helper';\nimport ConfiguratorSceneManager from '../webgl/configurator-scene-manager';\nimport ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\nimport GlobalInitData from '../../../common-core/src/utils/global-init-data';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment('camera-control-3d', CameraControl3D),\n new DependencyInjectionAssignment('camera-control', CameraControl),\n new DependencyInjectionAssignment('global-init-data', GlobalInitData),\n new DependencyInjectionAssignment('data-syncer', DataSyncer),\n new DependencyInjectionAssignment(\n 'configurator-scene-manager',\n ConfiguratorSceneManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment(\n 'configurator-view-model',\n ConfiguratorViewModel,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment(\n 'component-raycast-helper',\n ComponentRaycastHelper,\n DI_TYPE.GLOBAL,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport type { AppState } from '../../common-core/src/utils/app-context';\nimport ConfiguratorAppContext from '../../common-core/src/utils/app-context';\nimport { INJECTABLES } from './utils/injectables';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport type ScriptLoader from '../../common-core/src/script-loader';\nimport { type RapiAccess } from '../../common-core/src/rapi-access';\nimport type Logger from '../../common-core/src/logger';\nimport type DomHelper from '../../common-core/src/utils/dom-helper';\nimport type ConfiguratorSceneManager from './webgl/configurator-scene-manager';\nimport { RoomleConfigurator } from './roomle-configurator';\nimport type PlannerKernelAccess from '../../planner-core/src/services/planner-kernel-access';\nimport { KERNEL_TYPE } from '../../common-core/src/services/common-kernel-access';\n\nexport class Configurator extends Main {\n private _configurator: RoomleConfigurator;\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n // This needs to be done so that subscribe to events is done\n const plannerKernelAccess = this.lookup<PlannerKernelAccess>(\n 'planner-kernel-access',\n this._context,\n );\n plannerKernelAccess.init(KERNEL_TYPE.CONFIGURATOR);\n this.lookup<RapiAccess>('rapi-access', this._context);\n this.lookup<ScriptLoader>('script-loader', this._context);\n this.lookup<Logger>('logger', this._context);\n }\n\n protected cleanUpGlobals(): void {\n delete window.RoomleConfigurator;\n }\n\n protected cleanUpDependencies(): void {\n const scriptLoader = this.lookup<ScriptLoader>('script-loader');\n const rapiAccess = this.lookup<RapiAccess>('rapi-access');\n const domHelper = this.lookup<DomHelper>('dom-helper');\n const sceneManager = this.lookup<ConfiguratorSceneManager>(\n 'configurator-scene-manager',\n );\n\n if (scriptLoader) {\n scriptLoader.cleanUp();\n }\n\n if (rapiAccess) {\n rapiAccess.cleanUp();\n }\n\n if (domHelper) {\n //domHelper.cleanUp();\n }\n\n if (sceneManager) {\n sceneManager.cleanUp();\n }\n }\n\n /** Currently the only module that uses AppState — all others ignore the parameter. */\n protected setupGlobals(appState?: AppState): void {\n ConfiguratorAppContext.init(appState ?? {});\n }\n\n public getApi(): RoomleConfigurator {\n return this._configurator;\n }\n\n protected async bootFinished(): Promise<void> {\n this._configurator = new RoomleConfigurator(this._context);\n this._configurator.getMain = () => {\n return this;\n };\n\n if (!window.RoomleConfigurator) {\n window.RoomleConfigurator = this._configurator;\n }\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.CONFIGURATOR;\n }\n}\n"],"mappings":";;;;AAeA,IAAa,IAA+C;CAC1D,IAAI,EAA8B,UAAU,EAAO;CACnD,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EAA8B,iBAAiB,EAAa;CAChE,IAAI,EAA8B,qBAAqB,EAAgB;CACvE,IAAI,EAA8B,kBAAkB,EAAc;CAClE,IAAI,EAA8B,oBAAoB,EAAe;CACrE,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EACF,8BACA,GACA,EAAQ,QACT;CACD,IAAI,EACF,2BACA,GACA,EAAQ,QACT;CACD,IAAI,EACF,4BACA,GACA,EAAQ,OACT;CACF,ECvBY,IAAb,cAAkC,EAAK;CAGrC,oBAAoC;AAUlC,EATA,EAA0B,MAAM,EAAY,EAEhB,KAAK,OAC/B,yBACA,KAAK,SACN,CACmB,KAAK,EAAY,aAAa,EAClD,KAAK,OAAmB,eAAe,KAAK,SAAS,EACrD,KAAK,OAAqB,iBAAiB,KAAK,SAAS,EACzD,KAAK,OAAe,UAAU,KAAK,SAAS;;CAG9C,iBAAiC;AAC/B,SAAO,OAAO;;CAGhB,sBAAsC;EACpC,IAAM,IAAe,KAAK,OAAqB,gBAAgB,EACzD,IAAa,KAAK,OAAmB,cAAc;AACvC,OAAK,OAAkB,aAAa;EAFtD,IAGM,IAAe,KAAK,OACxB,6BACD;AAcD,EAZI,KACF,EAAa,SAAS,EAGpB,KACF,EAAW,SAAS,EAOlB,KACF,EAAa,SAAS;;CAK1B,aAAuB,GAA2B;AAChD,IAAuB,KAAK,KAAY,EAAE,CAAC;;CAG7C,SAAoC;AAClC,SAAO,KAAK;;CAGd,MAAgB,eAA8B;AAM5C,EALA,KAAK,gBAAgB,IAAI,EAAmB,KAAK,SAAS,EAC1D,KAAK,cAAc,gBACV,MAGJ,OAAO,uBACV,OAAO,qBAAqB,KAAK;;CAIrC,iBAAmC;AACjC,SAAO,EAAa"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "./configurator-B_5XVG2O.mjs";
2
+ export { e as Configurator };
@@ -0,0 +1,42 @@
1
+ import { Ft as e, Pt as t, nr as n } from "./three.core-CLIofecG.mjs";
2
+ import { a as r } from "./kernel-utils-H74uNY1h.mjs";
3
+ //#region packages/planner-core/src/webgl/continuous-drawing-helper.ts
4
+ var i = class {
5
+ constructor() {
6
+ this._currentInnerRadius = 0;
7
+ }
8
+ init(e, t, n) {
9
+ this._drawingGroup = e, this._continuousDrawingManager = t, this._kernelZoomFactor = n, this.update();
10
+ }
11
+ update() {
12
+ this._initCircle(), this._updateCircle();
13
+ }
14
+ _initCircle() {
15
+ if (this._circleMesh) return;
16
+ let r = 70 / this._kernelZoomFactor / 1e3;
17
+ this._circleMesh = new t(new n(r, r + r / 50, 32), new e({
18
+ color: 10066329,
19
+ side: 2
20
+ })), this._circleMesh.name = "Circle", this._circleMesh.rotation.set(Math.PI / 2, 0, 0), this._circleMesh.visible = this._continuousDrawingManager.shouldShowCircle(), this._drawingGroup.add(this._circleMesh);
21
+ }
22
+ _updateCircle() {
23
+ if (!this._circleMesh) return;
24
+ let e = 70 / this._kernelZoomFactor / 1e3;
25
+ if (e !== this._currentInnerRadius) {
26
+ let t = e + e / 50;
27
+ this._circleMesh.geometry = new n(e, t, 32);
28
+ }
29
+ let t = r(this._continuousDrawingManager.getStartPoint());
30
+ t.y = 5, this._circleMesh.position.copy(t), this._circleMesh.visible = this._continuousDrawingManager.shouldShowCircle(), this._currentInnerRadius = e;
31
+ }
32
+ setKernelZoomFactor(e) {
33
+ this._kernelZoomFactor = e;
34
+ }
35
+ endDrawing() {
36
+ this._drawingGroup.remove(this._circleMesh), this._circleMesh = null;
37
+ }
38
+ };
39
+ //#endregion
40
+ export { i as default };
41
+
42
+ //# sourceMappingURL=continuous-drawing-helper-v_5UAM9A.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuous-drawing-helper-v_5UAM9A.mjs","names":[],"sources":["../../packages/planner-core/src/webgl/continuous-drawing-helper.ts"],"sourcesContent":["import type { ContinuousDrawingManager } from '../../../typings/planner';\nimport { convertToTHREE } from '../../../common-core/src/utils/kernel-utils';\nimport type { Group } from 'three';\nimport { DoubleSide, Mesh, MeshBasicMaterial, RingGeometry } from 'three';\n\nexport default class ContinuousDrawingHelper {\n private _drawingGroup: Group;\n private _continuousDrawingManager: ContinuousDrawingManager;\n\n private _circleMesh: Mesh;\n\n private _kernelZoomFactor: number;\n\n private _currentInnerRadius: number = 0;\n\n init(\n drawingGroup: Group,\n continuousDrawingManager: ContinuousDrawingManager,\n kernelZoomFactor: number,\n ) {\n this._drawingGroup = drawingGroup;\n this._continuousDrawingManager = continuousDrawingManager;\n this._kernelZoomFactor = kernelZoomFactor;\n this.update();\n }\n\n public update() {\n this._initCircle();\n this._updateCircle();\n }\n\n private _initCircle() {\n if (this._circleMesh) {\n return;\n }\n\n const innerRadius = 70 / this._kernelZoomFactor / 1000;\n const outerRadius = innerRadius + innerRadius / 50;\n\n const innerRingGeometry = new RingGeometry(innerRadius, outerRadius, 32);\n const innerRingMaterial = new MeshBasicMaterial({\n color: 0x999999,\n side: DoubleSide,\n });\n this._circleMesh = new Mesh(innerRingGeometry, innerRingMaterial);\n this._circleMesh.name = 'Circle';\n this._circleMesh.rotation.set(Math.PI / 2, 0, 0);\n this._circleMesh.visible =\n this._continuousDrawingManager.shouldShowCircle();\n\n this._drawingGroup.add(this._circleMesh);\n }\n\n private _updateCircle() {\n if (!this._circleMesh) {\n return;\n }\n\n const innerRadius = 70 / this._kernelZoomFactor / 1000;\n if (innerRadius !== this._currentInnerRadius) {\n const outerRadius = innerRadius + innerRadius / 50;\n\n this._circleMesh.geometry = new RingGeometry(\n innerRadius,\n outerRadius,\n 32,\n );\n }\n\n const position = convertToTHREE(\n this._continuousDrawingManager.getStartPoint(),\n );\n position.y = 5;\n\n this._circleMesh.position.copy(position);\n this._circleMesh.visible =\n this._continuousDrawingManager.shouldShowCircle();\n\n this._currentInnerRadius = innerRadius;\n }\n\n public setKernelZoomFactor(kernelZoomFactor: number) {\n this._kernelZoomFactor = kernelZoomFactor;\n }\n\n public endDrawing() {\n this._drawingGroup.remove(this._circleMesh);\n this._circleMesh = null;\n }\n}\n"],"mappings":";;;AAKA,IAAqB,IAArB,MAA6C;;6BAQL;;CAEtC,KACE,GACA,GACA,GACA;AAIA,EAHA,KAAK,gBAAgB,GACrB,KAAK,4BAA4B,GACjC,KAAK,oBAAoB,GACzB,KAAK,QAAQ;;CAGf,SAAgB;AAEd,EADA,KAAK,aAAa,EAClB,KAAK,eAAe;;CAGtB,cAAsB;AACpB,MAAI,KAAK,YACP;EAGF,IAAM,IAAc,KAAK,KAAK,oBAAoB;AAclD,EANA,KAAK,cAAc,IAAI,EALG,IAAI,EAAa,GAFvB,IAAc,IAAc,IAEqB,GAAG,EAC9C,IAAI,EAAkB;GAC9C,OAAO;GACP,MAAA;GACD,CAAC,CAC+D,EACjE,KAAK,YAAY,OAAO,UACxB,KAAK,YAAY,SAAS,IAAI,KAAK,KAAK,GAAG,GAAG,EAAE,EAChD,KAAK,YAAY,UACf,KAAK,0BAA0B,kBAAkB,EAEnD,KAAK,cAAc,IAAI,KAAK,YAAY;;CAG1C,gBAAwB;AACtB,MAAI,CAAC,KAAK,YACR;EAGF,IAAM,IAAc,KAAK,KAAK,oBAAoB;AAClD,MAAI,MAAgB,KAAK,qBAAqB;GAC5C,IAAM,IAAc,IAAc,IAAc;AAEhD,QAAK,YAAY,WAAW,IAAI,EAC9B,GACA,GACA,GACD;;EAGH,IAAM,IAAW,EACf,KAAK,0BAA0B,eAAe,CAC/C;AAOD,EANA,EAAS,IAAI,GAEb,KAAK,YAAY,SAAS,KAAK,EAAS,EACxC,KAAK,YAAY,UACf,KAAK,0BAA0B,kBAAkB,EAEnD,KAAK,sBAAsB;;CAG7B,oBAA2B,GAA0B;AACnD,OAAK,oBAAoB;;CAG3B,aAAoB;AAElB,EADA,KAAK,cAAc,OAAO,KAAK,YAAY,EAC3C,KAAK,cAAc"}
@@ -0,0 +1,35 @@
1
+ //#region packages/common-core/src/utils/string-utils.ts
2
+ var e = function(e) {
3
+ return e.startsWith("_") && (e = e.substr(1)), e.replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, function(e, t) {
4
+ return (t > 0 ? "-" : "") + e.toLowerCase();
5
+ });
6
+ };
7
+ //#endregion
8
+ //#region packages/common-core/src/di/inject.ts
9
+ function t(t, n) {
10
+ let r = Symbol("property-cache");
11
+ Object.defineProperty(t, n, { get() {
12
+ if (!this[r]) {
13
+ let t = window.__RML__DI__?.lookup(e(n), this._creator_);
14
+ t ? this[r] = t : console.error("Dependency " + e(n) + " not found! Add dependency to /utils/injectables.ts");
15
+ }
16
+ return this[r];
17
+ } });
18
+ }
19
+ //#endregion
20
+ //#region \0@oxc-project+runtime@0.122.0/helpers/decorateMetadata.js
21
+ function n(e, t) {
22
+ if (typeof Reflect == "object" && typeof Reflect.metadata == "function") return Reflect.metadata(e, t);
23
+ }
24
+ //#endregion
25
+ //#region \0@oxc-project+runtime@0.122.0/helpers/decorate.js
26
+ function r(e, t, n, r) {
27
+ var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
28
+ if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
29
+ else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
30
+ return i > 3 && a && Object.defineProperty(t, n, a), a;
31
+ }
32
+ //#endregion
33
+ export { n, t as r, r as t };
34
+
35
+ //# sourceMappingURL=decorate-C1QnXPYw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorate-C1QnXPYw.mjs","names":[],"sources":["../../packages/common-core/src/utils/string-utils.ts","../../packages/common-core/src/di/inject.ts"],"sourcesContent":["/*\n * Lifted from https://github.com/shahata/dasherize/blob/master/index.js\n */\nexport const dashCase = function (str: string) {\n if (str.startsWith('_')) {\n str = str.substr(1);\n }\n return str.replace(\n /[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g,\n function (s: string, i: number) {\n return (i > 0 ? '-' : '') + s.toLowerCase();\n },\n );\n};\n","import './global-definitions';\nimport { dashCase } from '../utils/string-utils';\n\nexport default function inject(target: any, propertyName: string): void {\n const propertyCache = Symbol('property-cache');\n Object.defineProperty(target, propertyName, {\n get(this: any) {\n if (!this[propertyCache]) {\n // eslint-disable-next-line\n const instance = window.__RML__DI__?.lookup(\n dashCase(propertyName),\n this._creator_,\n );\n if (!instance) {\n console.error(\n 'Dependency ' +\n dashCase(propertyName) +\n ' not found! Add dependency to /utils/injectables.ts',\n );\n } else {\n this[propertyCache] = instance;\n }\n }\n return this[propertyCache];\n },\n });\n}\n"],"mappings":";AAGA,IAAa,IAAW,SAAU,GAAa;AAI7C,QAHI,EAAI,WAAW,IAAI,KACrB,IAAM,EAAI,OAAO,EAAE,GAEd,EAAI,QACT,gDACA,SAAU,GAAW,GAAW;AAC9B,UAAQ,IAAI,IAAI,MAAM,MAAM,EAAE,aAAa;GAE9C;;;;ACTH,SAAwB,EAAO,GAAa,GAA4B;CACtE,IAAM,IAAgB,OAAO,iBAAiB;AAC9C,QAAO,eAAe,GAAQ,GAAc,EAC1C,MAAe;AACb,MAAI,CAAC,KAAK,IAAgB;GAExB,IAAM,IAAW,OAAO,aAAa,OACnC,EAAS,EAAa,EACtB,KAAK,UACN;AACD,GAAK,IAOH,KAAK,KAAiB,IANtB,QAAQ,MACN,gBACE,EAAS,EAAa,GACtB,sDACH;;AAKL,SAAO,KAAK;IAEf,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { o as e } from "./dimensioning-helper-Fwpt1HTT.mjs";
2
+ export { e as createDimensioningHelper };