@roomle/web-sdk 5.1.0-alpha.4 → 5.1.0-alpha.5

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 (132) hide show
  1. package/lib/{BufferGeometry-Bl5whHAB.mjs → BufferGeometry-CxlpBjLq.mjs} +192 -195
  2. package/lib/BufferGeometry-CxlpBjLq.mjs.map +1 -0
  3. package/lib/ConfiguratorKernel.wasm +0 -0
  4. package/lib/{GLTFExporter-yQ7mMauu.mjs → GLTFExporter-DeNw0qAI.mjs} +86 -80
  5. package/lib/GLTFExporter-DeNw0qAI.mjs.map +1 -0
  6. package/lib/GaussianBlurNode-BR1cKBsX.mjs +65 -0
  7. package/lib/GaussianBlurNode-BR1cKBsX.mjs.map +1 -0
  8. package/lib/{Object3D-BHdngbxB.mjs → Object3D-CALIQdg1.mjs} +142 -59
  9. package/lib/Object3D-CALIQdg1.mjs.map +1 -0
  10. package/lib/{Pass-DLiMLT5k.mjs → Pass-DCljS3Z-.mjs} +4 -4
  11. package/lib/{Pass-DLiMLT5k.mjs.map → Pass-DCljS3Z-.mjs.map} +1 -1
  12. package/lib/{PointLightHelper-CuPSBuDU.mjs → PointLightHelper-C_0CYp7R.mjs} +35 -32
  13. package/lib/PointLightHelper-C_0CYp7R.mjs.map +1 -0
  14. package/lib/RoomleCore.wasm +0 -0
  15. package/lib/RoomleToolsCore.wasm +0 -0
  16. package/lib/{SpotLightHelper-m-Rh8vGU.mjs → SpotLightHelper-UUIHn43T.mjs} +22 -19
  17. package/lib/SpotLightHelper-UUIHn43T.mjs.map +1 -0
  18. package/lib/{USDZExporter-MdkuT226.mjs → USDZExporter-BBNw7Hey.mjs} +6 -3
  19. package/lib/USDZExporter-BBNw7Hey.mjs.map +1 -0
  20. package/lib/{Vector4-C7TlIAyy.mjs → Vector4-BOcWTZJI.mjs} +2 -2
  21. package/lib/Vector4-BOcWTZJI.mjs.map +1 -0
  22. package/lib/{api-Bznmr-xZ.mjs → api-CwEjmjrn.mjs} +2 -2
  23. package/lib/{api-Bznmr-xZ.mjs.map → api-CwEjmjrn.mjs.map} +1 -1
  24. package/lib/{banana-for-scale-DpKXNBt_.mjs → banana-for-scale-Cf41yXTl.mjs} +3 -3
  25. package/lib/{banana-for-scale-DpKXNBt_.mjs.map → banana-for-scale-Cf41yXTl.mjs.map} +1 -1
  26. package/lib/{common-utils-DbL4tku0.mjs → common-utils-OTJQGohe.mjs} +3 -3
  27. package/lib/common-utils-OTJQGohe.mjs.map +1 -0
  28. package/lib/{component-dimensioning-BaUqwqYJ.mjs → component-dimensioning-yPK46Y5o.mjs} +26 -26
  29. package/lib/{component-dimensioning-BaUqwqYJ.mjs.map → component-dimensioning-yPK46Y5o.mjs.map} +1 -1
  30. package/lib/{component-raycast-helper-4i8b4E5B.mjs → component-raycast-helper-CnpnRaFg.mjs} +15 -15
  31. package/lib/{component-raycast-helper-4i8b4E5B.mjs.map → component-raycast-helper-CnpnRaFg.mjs.map} +1 -1
  32. package/lib/{configurator-CDw_c6tB.mjs → configurator-iYlO_buA.mjs} +4 -4
  33. package/lib/{configurator-CDw_c6tB.mjs.map → configurator-iYlO_buA.mjs.map} +1 -1
  34. package/lib/configurator-y7zIaUe_.mjs +2 -0
  35. package/lib/{continuous-drawing-helper-DqHIR_qF.mjs → continuous-drawing-helper-CTfGRTfH.mjs} +3 -3
  36. package/lib/{continuous-drawing-helper-DqHIR_qF.mjs.map → continuous-drawing-helper-CTfGRTfH.mjs.map} +1 -1
  37. package/lib/dimensioning-helper-CQlesi-m.mjs +2 -0
  38. package/lib/{dimensioning-helper-CGPjS2hW.mjs → dimensioning-helper-DSlkLDmx.mjs} +42 -36
  39. package/lib/dimensioning-helper-DSlkLDmx.mjs.map +1 -0
  40. package/lib/{glb-viewer-B-Zr743e.mjs → glb-viewer-AGV-_xKd.mjs} +33 -33
  41. package/lib/{glb-viewer-B-Zr743e.mjs.map → glb-viewer-AGV-_xKd.mjs.map} +1 -1
  42. package/lib/glb-viewer-DSzNR4CI.mjs +2 -0
  43. package/lib/{highlight-coordinator-4gkjde82.mjs → highlight-coordinator-DU6oFunq.mjs} +6 -6
  44. package/lib/{highlight-coordinator-4gkjde82.mjs.map → highlight-coordinator-DU6oFunq.mjs.map} +1 -1
  45. package/lib/{homag-intelligence-D7S7r-Gc.mjs → homag-intelligence-D_yBv0ig.mjs} +3 -3
  46. package/lib/{homag-intelligence-D7S7r-Gc.mjs.map → homag-intelligence-D_yBv0ig.mjs.map} +1 -1
  47. package/lib/{hosek-wilkie-sky-iMar2iw-.mjs → hosek-wilkie-sky-DmTvnxMA.mjs} +33 -33
  48. package/lib/{hosek-wilkie-sky-iMar2iw-.mjs.map → hosek-wilkie-sky-DmTvnxMA.mjs.map} +1 -1
  49. package/lib/{imos-ix-poc-export-helper-CyGqK7nu.mjs → imos-ix-poc-export-helper-BGN97m8W.mjs} +3 -3
  50. package/lib/{imos-ix-poc-export-helper-CyGqK7nu.mjs.map → imos-ix-poc-export-helper-BGN97m8W.mjs.map} +1 -1
  51. package/lib/{kernel-utils-BvatnA7U.mjs → kernel-utils-BYKmP0mf.mjs} +13 -13
  52. package/lib/{kernel-utils-BvatnA7U.mjs.map → kernel-utils-BYKmP0mf.mjs.map} +1 -1
  53. package/lib/{material-viewer-CTsSfTfL.mjs → material-viewer-BuBSXGw6.mjs} +18 -18
  54. package/lib/{material-viewer-CTsSfTfL.mjs.map → material-viewer-BuBSXGw6.mjs.map} +1 -1
  55. package/lib/{packages-BXAZEcKa.mjs → packages-CduZDHYG.mjs} +5 -5
  56. package/lib/{packages-BXAZEcKa.mjs.map → packages-CduZDHYG.mjs.map} +1 -1
  57. package/lib/planner-B-SWR4R8.mjs +2 -0
  58. package/lib/{planner-jvLAnYww.mjs → planner-BuBkFbra.mjs} +3 -3
  59. package/lib/{planner-jvLAnYww.mjs.map → planner-BuBkFbra.mjs.map} +1 -1
  60. package/lib/{plugin-system-CRaC04G5.mjs → plugin-system-CPf99Zkf.mjs} +2 -2
  61. package/lib/{plugin-system-CRaC04G5.mjs.map → plugin-system-CPf99Zkf.mjs.map} +1 -1
  62. package/lib/{render-cache-DCPIQbO1.mjs → render-cache-CPppt7Rd.mjs} +5 -5
  63. package/lib/{render-cache-DCPIQbO1.mjs.map → render-cache-CPppt7Rd.mjs.map} +1 -1
  64. package/lib/{render-order-BPF2wDMw.mjs → render-order-a0QAbB7Q.mjs} +2 -2
  65. package/lib/{render-order-BPF2wDMw.mjs.map → render-order-a0QAbB7Q.mjs.map} +1 -1
  66. package/lib/roomle-headless.d.ts +0 -2
  67. package/lib/roomle-headless.js +14 -14
  68. package/lib/{roomle-renderer-Ato6RMrd.mjs → roomle-renderer-UJINLYxS.mjs} +2 -2
  69. package/lib/{roomle-renderer-Ato6RMrd.mjs.map → roomle-renderer-UJINLYxS.mjs.map} +1 -1
  70. package/lib/{roomle-sdk-CBwhwX_e.mjs → roomle-sdk-CcNdTp_n.mjs} +1844 -1889
  71. package/lib/roomle-sdk-CcNdTp_n.mjs.map +1 -0
  72. package/lib/roomle-sdk.d.ts +0 -2
  73. package/lib/roomle-sdk.js +7 -7
  74. package/lib/{roomle-webgpu-renderer-BfZKcXSz.mjs → roomle-webgpu-renderer-BSvxbopA.mjs} +900 -707
  75. package/lib/roomle-webgpu-renderer-BSvxbopA.mjs.map +1 -0
  76. package/lib/{scene-renderer-BHYZac3H.mjs → scene-renderer--DzrpIl_.mjs} +309 -309
  77. package/lib/{scene-renderer-BHYZac3H.mjs.map → scene-renderer--DzrpIl_.mjs.map} +1 -1
  78. package/lib/{script-loader-CvnG6LgL.mjs → script-loader-D6i0wQ_j.mjs} +2 -2
  79. package/lib/{script-loader-CvnG6LgL.mjs.map → script-loader-D6i0wQ_j.mjs.map} +1 -1
  80. package/lib/{shading-settings-BBhR7KcS.mjs → shading-settings-6v-7O_Sz.mjs} +49 -49
  81. package/lib/{shading-settings-BBhR7KcS.mjs.map → shading-settings-6v-7O_Sz.mjs.map} +1 -1
  82. package/lib/src-6KtBPZXp.mjs +2 -0
  83. package/lib/{src-HhklrVDg.mjs → src-Dg0wYIom.mjs} +150 -150
  84. package/lib/{src-HhklrVDg.mjs.map → src-Dg0wYIom.mjs.map} +1 -1
  85. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
  86. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
  87. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  88. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
  89. package/lib/{stats-helper-PndcZCzL.mjs → stats-helper-DYjPPDnz.mjs} +2 -2
  90. package/lib/{stats-helper-PndcZCzL.mjs.map → stats-helper-DYjPPDnz.mjs.map} +1 -1
  91. package/lib/{three.core-0KaTx8dm.mjs → three.core-BTUCraWz.mjs} +976 -884
  92. package/lib/three.core-BTUCraWz.mjs.map +1 -0
  93. package/lib/{three.module-dym6j3lO.mjs → three.module-DUSFrLM6.mjs} +1789 -1739
  94. package/lib/three.module-DUSFrLM6.mjs.map +1 -0
  95. package/lib/three.tsl-De6A-G56.mjs +158 -0
  96. package/lib/three.tsl-De6A-G56.mjs.map +1 -0
  97. package/lib/three.tsl-DtfvggFX.mjs +2 -0
  98. package/lib/three.webgpu-B1OhMci_.mjs +3 -0
  99. package/lib/{three.webgpu-D3nSEIjD.mjs → three.webgpu-wPiwbpFM.mjs} +5806 -4926
  100. package/lib/three.webgpu-wPiwbpFM.mjs.map +1 -0
  101. package/lib/{threejs-utils-v1uOvccg.mjs → threejs-utils-lVSsgAiQ.mjs} +68 -68
  102. package/lib/{threejs-utils-v1uOvccg.mjs.map → threejs-utils-lVSsgAiQ.mjs.map} +1 -1
  103. package/lib/{tools-core-B29U-88K.mjs → tools-core-CRGER_KC.mjs} +3 -3
  104. package/lib/{tools-core-B29U-88K.mjs.map → tools-core-CRGER_KC.mjs.map} +1 -1
  105. package/lib/{webgpu-BHAP6BLI.mjs → webgpu-BxYJfBjz.mjs} +555 -555
  106. package/lib/{webgpu-BHAP6BLI.mjs.map → webgpu-BxYJfBjz.mjs.map} +1 -1
  107. package/package.json +5 -5
  108. package/lib/BufferGeometry-Bl5whHAB.mjs.map +0 -1
  109. package/lib/GLTFExporter-yQ7mMauu.mjs.map +0 -1
  110. package/lib/GaussianBlurNode-DNBEf5-n.mjs +0 -59
  111. package/lib/GaussianBlurNode-DNBEf5-n.mjs.map +0 -1
  112. package/lib/Object3D-BHdngbxB.mjs.map +0 -1
  113. package/lib/PointLightHelper-CuPSBuDU.mjs.map +0 -1
  114. package/lib/SpotLightHelper-m-Rh8vGU.mjs.map +0 -1
  115. package/lib/USDZExporter-MdkuT226.mjs.map +0 -1
  116. package/lib/Vector4-C7TlIAyy.mjs.map +0 -1
  117. package/lib/common-utils-DbL4tku0.mjs.map +0 -1
  118. package/lib/configurator-BYQdWEvf.mjs +0 -2
  119. package/lib/dimensioning-helper-CGPjS2hW.mjs.map +0 -1
  120. package/lib/dimensioning-helper-VndKlIXS.mjs +0 -2
  121. package/lib/glb-viewer-Bd5Xn6Oq.mjs +0 -2
  122. package/lib/planner-DMk3T4ts.mjs +0 -2
  123. package/lib/roomle-sdk-CBwhwX_e.mjs.map +0 -1
  124. package/lib/roomle-webgpu-renderer-BfZKcXSz.mjs.map +0 -1
  125. package/lib/src-Bbq3Hqzn.mjs +0 -2
  126. package/lib/three.core-0KaTx8dm.mjs.map +0 -1
  127. package/lib/three.module-dym6j3lO.mjs.map +0 -1
  128. package/lib/three.tsl-BTc4fg8T.mjs +0 -2
  129. package/lib/three.tsl-Cf0-sCqB.mjs +0 -152
  130. package/lib/three.tsl-Cf0-sCqB.mjs.map +0 -1
  131. package/lib/three.webgpu-ClICiWlK.mjs +0 -3
  132. package/lib/three.webgpu-D3nSEIjD.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-utils-BvatnA7U.mjs","names":[],"sources":["../../packages/common-core/src/utils/kernel-utils.ts"],"sourcesContent":["import type { KernelMatrix4, KernelVector3 } from '../../../typings/kernel';\nimport { Euler, Matrix4, Vector3 } from 'three';\n\nexport const convertToTHREE = (\n vector: KernelVector3 | null | undefined,\n): Vector3 => {\n if (!vector) {\n return new Vector3(0, 0, 0);\n }\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / -1000);\n};\n\nexport const convertToThreeLength = (length: number): number => {\n return length / 1000;\n};\n\nexport const convertToEuler = (vector: KernelVector3): Euler => {\n return new Euler(vector.x, vector.z, -vector.y, 'YXZ');\n};\n\nexport const convertToThreeDimensions = (vector: KernelVector3): Vector3 => {\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / 1000);\n};\n\nexport const convertToKernel = (\n vector: Vector3,\n decimalPlaces: number = 0,\n): KernelVector3 => {\n if (decimalPlaces === 0) {\n return {\n x: Math.round(vector.x * 1000),\n y: Math.round(vector.z * -1000),\n z: Math.round(vector.y * 1000),\n };\n }\n const factor = Math.pow(10, decimalPlaces);\n return {\n x: Math.round(vector.x * 1000 * factor) / factor,\n y: Math.round(vector.z * -1000 * factor) / factor,\n z: Math.round(vector.y * 1000 * factor) / factor,\n };\n};\n\nexport const utilityStringToUTF16 = (str: string): string => {\n return decodeURIComponent(encodeURIComponent(str));\n};\n\nexport const convertCObject = (obj: any): any => {\n if (!obj) {\n const typeOfObj = typeof obj;\n if (typeOfObj === 'number' || typeOfObj === 'boolean') {\n return obj;\n }\n return null;\n }\n\n if (\n !obj.hasOwnProperty('size') &&\n !!obj.size &&\n typeof obj.size === 'function'\n ) {\n let result = utilityToArray(obj);\n for (let i = 0; i < result.length; i++) {\n result[i] = convertCObject(result[i]);\n }\n if (typeof result === 'string') {\n return utilityStringToUTF16(result);\n }\n return result;\n }\n if (typeof obj === 'object') {\n for (let property in obj) {\n if (obj.hasOwnProperty(property)) {\n obj[property] = convertCObject(obj[property]);\n }\n }\n }\n\n if (typeof obj === 'string') {\n return utilityStringToUTF16(obj);\n }\n\n return obj;\n};\n\nexport const utilityToArray = (obj: any): any[] => {\n let result: any[] = [];\n if (obj) {\n let size = obj.size();\n for (let i = 0; i < size; i++) {\n result.push(obj.get(i));\n }\n }\n return result;\n};\n\nexport const convertKernelMatrixCoordsToThree = (matrix: Matrix4): Matrix4 => {\n let a = new Matrix4();\n a.set(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1);\n a.scale(new Vector3(1 / 1000, 1 / 1000, 1 / 1000));\n let b = new Matrix4();\n b.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);\n b.scale(new Vector3(1000, 1000, 1000));\n return a.multiply(matrix).multiply(b);\n};\n\nexport const convertKernelMatrixToThreeMatrix = (\n transform: KernelMatrix4,\n): Matrix4 => {\n const transformArray: number[] = convertCObject(transform.m);\n const transformMatrix = new Matrix4().fromArray(transformArray).transpose();\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeMatrix = (transform: Float32Array): Matrix4 => {\n let transformMatrix = new Matrix4();\n let transformArray: number[] = convertCObject(transform);\n transformMatrix.fromArray(transformArray);\n transformMatrix.transpose();\n\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeUVMatrix = (transform: Float32Array): Matrix4 => {\n const uvTransformMatrix = new Matrix4();\n uvTransformMatrix.set(\n transform[0],\n transform[2],\n 0,\n transform[4],\n transform[1],\n transform[3],\n 0,\n transform[5],\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n );\n return uvTransformMatrix;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"kernel-utils-BYKmP0mf.mjs","names":[],"sources":["../../packages/common-core/src/utils/kernel-utils.ts"],"sourcesContent":["import type { KernelMatrix4, KernelVector3 } from '../../../typings/kernel';\nimport { Euler, Matrix4, Vector3 } from 'three';\n\nexport const convertToTHREE = (\n vector: KernelVector3 | null | undefined,\n): Vector3 => {\n if (!vector) {\n return new Vector3(0, 0, 0);\n }\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / -1000);\n};\n\nexport const convertToThreeLength = (length: number): number => {\n return length / 1000;\n};\n\nexport const convertToEuler = (vector: KernelVector3): Euler => {\n return new Euler(vector.x, vector.z, -vector.y, 'YXZ');\n};\n\nexport const convertToThreeDimensions = (vector: KernelVector3): Vector3 => {\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / 1000);\n};\n\nexport const convertToKernel = (\n vector: Vector3,\n decimalPlaces: number = 0,\n): KernelVector3 => {\n if (decimalPlaces === 0) {\n return {\n x: Math.round(vector.x * 1000),\n y: Math.round(vector.z * -1000),\n z: Math.round(vector.y * 1000),\n };\n }\n const factor = Math.pow(10, decimalPlaces);\n return {\n x: Math.round(vector.x * 1000 * factor) / factor,\n y: Math.round(vector.z * -1000 * factor) / factor,\n z: Math.round(vector.y * 1000 * factor) / factor,\n };\n};\n\nexport const utilityStringToUTF16 = (str: string): string => {\n return decodeURIComponent(encodeURIComponent(str));\n};\n\nexport const convertCObject = (obj: any): any => {\n if (!obj) {\n const typeOfObj = typeof obj;\n if (typeOfObj === 'number' || typeOfObj === 'boolean') {\n return obj;\n }\n return null;\n }\n\n if (\n !obj.hasOwnProperty('size') &&\n !!obj.size &&\n typeof obj.size === 'function'\n ) {\n let result = utilityToArray(obj);\n for (let i = 0; i < result.length; i++) {\n result[i] = convertCObject(result[i]);\n }\n if (typeof result === 'string') {\n return utilityStringToUTF16(result);\n }\n return result;\n }\n if (typeof obj === 'object') {\n for (let property in obj) {\n if (obj.hasOwnProperty(property)) {\n obj[property] = convertCObject(obj[property]);\n }\n }\n }\n\n if (typeof obj === 'string') {\n return utilityStringToUTF16(obj);\n }\n\n return obj;\n};\n\nexport const utilityToArray = (obj: any): any[] => {\n let result: any[] = [];\n if (obj) {\n let size = obj.size();\n for (let i = 0; i < size; i++) {\n result.push(obj.get(i));\n }\n }\n return result;\n};\n\nexport const convertKernelMatrixCoordsToThree = (matrix: Matrix4): Matrix4 => {\n let a = new Matrix4();\n a.set(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1);\n a.scale(new Vector3(1 / 1000, 1 / 1000, 1 / 1000));\n let b = new Matrix4();\n b.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);\n b.scale(new Vector3(1000, 1000, 1000));\n return a.multiply(matrix).multiply(b);\n};\n\nexport const convertKernelMatrixToThreeMatrix = (\n transform: KernelMatrix4,\n): Matrix4 => {\n const transformArray: number[] = convertCObject(transform.m);\n const transformMatrix = new Matrix4().fromArray(transformArray).transpose();\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeMatrix = (transform: Float32Array): Matrix4 => {\n let transformMatrix = new Matrix4();\n let transformArray: number[] = convertCObject(transform);\n transformMatrix.fromArray(transformArray);\n transformMatrix.transpose();\n\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeUVMatrix = (transform: Float32Array): Matrix4 => {\n const uvTransformMatrix = new Matrix4();\n uvTransformMatrix.set(\n transform[0],\n transform[2],\n 0,\n transform[4],\n transform[1],\n transform[3],\n 0,\n transform[5],\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n );\n return uvTransformMatrix;\n};\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { G as e, M as t, P as n, d as r, k as i, nt as a, u as o } from "./threejs-utils-v1uOvccg.mjs";
2
- import { $r as s, An as c, cn as l, f as u, oi as d, p as f, w as p } from "./three.core-0KaTx8dm.mjs";
1
+ import { G as e, M as t, P as n, d as r, k as i, nt as a, u as o } from "./threejs-utils-lVSsgAiQ.mjs";
2
+ import { ci as s, f as c, jn as l, ln as u, p as d, ti as f, w as p } from "./three.core-BTUCraWz.mjs";
3
3
  import { n as m, r as h, t as g } from "./decorate-Bl-JF_YY.mjs";
4
- import { U as _ } from "./common-utils-DbL4tku0.mjs";
5
- import { $ as v, H as y, I as b, L as x, T as S, V as C, X as w, Y as T, _ as E, ct as D, g as O, n as k, nt as A, ot as j, p as M, rt as N, st as P, tt as F, v as I } from "./roomle-sdk-CBwhwX_e.mjs";
6
- import { t as L } from "./script-loader-CvnG6LgL.mjs";
4
+ import { U as _ } from "./common-utils-OTJQGohe.mjs";
5
+ import { $ as v, H as y, I as b, L as x, T as S, V as C, X as w, Y as T, _ as E, ct as D, g as O, n as k, nt as A, ot as j, p as M, rt as N, st as P, tt as F, v as I } from "./roomle-sdk-CcNdTp_n.mjs";
6
+ import { t as L } from "./script-loader-D6i0wQ_j.mjs";
7
7
  //#region packages/common-core/src/cameracontrol/material-viewer-camera-behaviour.ts
8
8
  var R = class extends M {
9
9
  get cameraControl() {
@@ -36,11 +36,11 @@ var R = class extends M {
36
36
  }
37
37
  }
38
38
  _initScene() {
39
- let e = new f(B.x, B.y, B.z, 100, 100, 100), t = a.createMeshPhysicalMaterial({ color: this._initData.colors.PRIMARY });
40
- this._setMaterial(t), this._mesh = new l(e, this._material), this._mesh.castShadow = !0, this._mesh.position.setY(B.y / 2), this._scene.add(this._mesh);
39
+ let e = new d(B.x, B.y, B.z, 100, 100, 100), t = a.createMeshPhysicalMaterial({ color: this._initData.colors.PRIMARY });
40
+ this._setMaterial(t), this._mesh = new u(e, this._material), this._mesh.castShadow = !0, this._mesh.position.setY(B.y / 2), this._scene.add(this._mesh);
41
41
  let { initialFloorMaterial: n } = this._initData;
42
42
  if (n ? this.changeFloorMaterialById(n) : this._environment = new I(this._scene, void 0, new p(16777215)), this.cameraBehaviour.cameraControl instanceof S) {
43
- let e = new u();
43
+ let e = new c();
44
44
  e.setFromObject(this._mesh), console.trace("reset camera"), this.cameraBehaviour.cameraControl.updateAndReset(e);
45
45
  }
46
46
  this.showGUI();
@@ -79,7 +79,7 @@ var R = class extends M {
79
79
  }
80
80
  sceneChanged() {}
81
81
  getBounds() {
82
- return this._mesh ? new u().setFromObject(this._mesh) : null;
82
+ return this._mesh ? new c().setFromObject(this._mesh) : null;
83
83
  }
84
84
  getGeometryBounds() {
85
85
  return null;
@@ -123,10 +123,10 @@ var R = class extends M {
123
123
  }
124
124
  _setGeometry() {
125
125
  let e;
126
- if (this._sceneParams.type === z.CUBE) e = new f(B.x, B.y, B.z, 100, 100, 100);
127
- else if (this._sceneParams.type === z.SPHERE) e = new s(.5, 100, 100);
128
- else if (this._sceneParams.type === z.PLANE_HORIZONTAL) e = new c(B.x, B.z), e.rotateX(-Math.PI / 2);
129
- else if (this._sceneParams.type === z.PLANE_VERTICAL) e = new c(B.x, B.z);
126
+ if (this._sceneParams.type === z.CUBE) e = new d(B.x, B.y, B.z, 100, 100, 100);
127
+ else if (this._sceneParams.type === z.SPHERE) e = new f(.5, 100, 100);
128
+ else if (this._sceneParams.type === z.PLANE_HORIZONTAL) e = new l(B.x, B.z), e.rotateX(-Math.PI / 2);
129
+ else if (this._sceneParams.type === z.PLANE_VERTICAL) e = new l(B.x, B.z);
130
130
  else {
131
131
  console.error(`MaterialViewerSceneManager: unexpected geometry type "${this._sceneParams.type}"`);
132
132
  return;
@@ -142,15 +142,15 @@ var R = class extends M {
142
142
  });
143
143
  }
144
144
  async addTexture(e, n) {
145
- let i = B.x * 100, a = B.y * 100, s = i / (e.mmWidth === 0 ? 1 : e.mmWidth), c = a / (e.mmHeight === 0 ? 1 : e.mmHeight), l = t(this._renderer);
145
+ let i = B.x * 100, a = B.y * 100, c = i / (e.mmWidth === 0 ? 1 : e.mmWidth), l = a / (e.mmHeight === 0 ? 1 : e.mmHeight), u = t(this._renderer);
146
146
  if (n) {
147
147
  let t = new Image();
148
148
  t.src = n;
149
- let r = new d();
149
+ let r = new s();
150
150
  r.image = t, t.onload = function() {
151
151
  r.needsUpdate = !0;
152
- }, o(r, e, this._material, this._maxAnisotropy, s, c, l);
153
- } else await r(e.image, e, this._material, this._maxAnisotropy, s, c, l);
152
+ }, o(r, e, this._material, this._maxAnisotropy, c, l, u);
153
+ } else await r(e.image, e, this._material, this._maxAnisotropy, c, l, u);
154
154
  this._requestRender();
155
155
  }
156
156
  removeTexture(e) {
@@ -294,4 +294,4 @@ var U = class extends w {
294
294
  //#endregion
295
295
  export { G as MaterialViewer };
296
296
 
297
- //# sourceMappingURL=material-viewer-CTsSfTfL.mjs.map
297
+ //# sourceMappingURL=material-viewer-BuBSXGw6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"material-viewer-CTsSfTfL.mjs","names":[],"sources":["../../packages/common-core/src/cameracontrol/material-viewer-camera-behaviour.ts","../../packages/material-viewer/src/webgl/material-viewer-scene-manager.ts","../../packages/material-viewer/src/roomle-material-viewer.ts","../../packages/material-viewer/src/roomle-material-viewer-ui-callback.ts","../../packages/material-viewer/src/utils/injectables.ts","../../packages/material-viewer/src/material-viewer.ts"],"sourcesContent":["import CameraBehaviour from './camera-behaviour';\nimport type AdjustableCameraControl3D from '../../../glb-viewer-core/src/camera-control/adjustable-camera-control-3d';\n\nexport default class MaterialViewerCameraBehaviour extends CameraBehaviour {\n public get cameraControl(): AdjustableCameraControl3D {\n return this._cameraControl as AdjustableCameraControl3D;\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type { GenericGUIParamFolder } from '../../../common-core/src/webgl/gui-types';\nimport type { RoomleWebGPURenderer } from '../../../common-core/src/webgpu/roomle-webgpu-renderer';\nimport type { CanvasOffset } from '../../../common-core/src/common-interfaces';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../../typings/rapi-types';\nimport { RAPI_TEXTURE_TYPE } from '../../../typings/rapi-types';\nimport {\n addExistingTexture,\n addTexture,\n getWebGLGUI,\n getMaterialShading,\n setMaterial,\n getMaxTextures,\n} from '../../../common-core/src/utils/threejs-utils';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport type ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport type RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\nimport BackgroundEnvironment from '../../../common-core/src/environment/background-environment';\nimport FloorEnvironment from '../../../configurator-core/src/webgl/environment/floor-environment';\nimport { type RapiAccess } from '../../../common-core/src/rapi-access';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '#/common/src/utils/types';\nimport type { MeshPhysicalMaterial } from 'three';\nimport {\n Box3,\n BoxGeometry,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n PlaneGeometry,\n SphereGeometry,\n Texture,\n} from 'three';\nimport MaterialCreator from '../../../common-core/src/utils/material-creator';\nimport MaterialViewerCameraBehaviour from '../../../common-core/src/cameracontrol/material-viewer-camera-behaviour';\n\nexport const enum GEOMETRY {\n CUBE = 'cube',\n SPHERE = 'sphere',\n PLANE_VERTICAL = 'plane_vertical',\n PLANE_HORIZONTAL = 'plane_horizontal',\n}\n\nconst SIZE = { x: 1, y: 1, z: 1 };\nexport default class MaterialViewerSceneManager extends SceneManager {\n @inject\n private _inputManager: InputManager;\n\n @inject\n private _configuratorMeshGenerator: ConfiguratorMeshGenerator;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _gui: GenericGUIParamFolder | null;\n private _guiGeometryFolder: GenericGUIParamFolder | undefined;\n private _guiMaterialFolder: GenericGUIParamFolder | undefined;\n private _mesh: Mesh;\n private _material: MeshPhysicalMaterial;\n private _sceneParams = {\n type: GEOMETRY.CUBE,\n };\n private _materialParams = {\n color: '#ffffff',\n metallic: 0.5,\n alpha: 0,\n alphaCutoff: 0,\n doubleSided: false,\n };\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.RMV, CAMERA_TYPE.CAMERA_3D);\n\n // Use lazy initialization for renderer-dependent settings\n this._initializeRendererSettings();\n\n this._initScene();\n }\n\n // If renderer is not ready yet, will retry on next tick.\n // This is necessary for dynamic WebGPU renderer imports.\n private _initializeRendererSettings(): void {\n if (!this._renderer) {\n // Retry on next tick if renderer not ready\n setTimeout(() => this._initializeRendererSettings(), 0);\n return;\n }\n\n const maxTextures = getMaxTextures(this._renderer);\n if (maxTextures > 8) {\n const lightSource =\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA,\n );\n if (lightSource) {\n this.loadDynamicLightSetting(lightSource);\n }\n }\n }\n\n private _initScene() {\n const geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n const meshPhysicalMaterial = MaterialCreator.createMeshPhysicalMaterial({\n color: this._initData.colors.PRIMARY,\n });\n this._setMaterial(meshPhysicalMaterial);\n this._mesh = new Mesh(geometry, this._material);\n this._mesh.castShadow = true;\n this._mesh.position.setY(SIZE.y / 2);\n this._scene.add(this._mesh);\n\n const { initialFloorMaterial } = this._initData;\n\n if (initialFloorMaterial) {\n this.changeFloorMaterialById(initialFloorMaterial);\n } else {\n this._environment = new BackgroundEnvironment(\n this._scene,\n undefined,\n new Color(0xffffff),\n );\n }\n\n if (this.cameraBehaviour.cameraControl instanceof CameraControl3D) {\n const boundingBox = new Box3();\n boundingBox.setFromObject(this._mesh);\n console.trace('reset camera');\n this.cameraBehaviour.cameraControl.updateAndReset(boundingBox);\n }\n\n void this.showGUI();\n }\n\n public loadMaterialId(materialId: RapiId): Promise<void> {\n return new Promise<void>((resolve) => {\n this._configuratorMeshGenerator\n .loadMaterial(materialId, SIZE.x * 1000, SIZE.y * 1000)\n .then((material) => {\n this._setMaterial(material as MeshPhysicalMaterial);\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n });\n }\n\n public loadMaterial(material: RapiMaterial): Promise<void> {\n return new Promise<void>((resolve) => {\n // eslint-disable-next-line\n if (!material.__rapi_path__) {\n // eslint-disable-next-line\n material.__rapi_path__ = 'materials';\n }\n this._mesh.material = this._material;\n this._configuratorMeshGenerator\n .loadTextures(material, this._material, SIZE.x * 100, SIZE.y * 100)\n .then(() => {\n this._updateGUI();\n this._requestRender();\n });\n resolve();\n });\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return new Promise<void>((resolve) => {\n let material = { shading: materialShading };\n this._setMaterial(setMaterial(this._material, material as RapiMaterial));\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n }\n\n private _setMaterial(material: MeshPhysicalMaterial) {\n this._material = material;\n this._materialParams.alpha = material.opacity;\n this._materialParams.alphaCutoff = material.alphaTest;\n this._materialParams.color = '#' + material.color.getHexString();\n this._materialParams.doubleSided = material.side === DoubleSide;\n this._materialParams.metallic =\n material.metalness === 1 ? 1 : material.reflectivity;\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return getMaterialShading(this._material, version);\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset,\n ) {\n this._changeCameraBehaviour(\n new MaterialViewerCameraBehaviour(\n new CameraControl3D(this._creator_, this._getInputManager(), undefined),\n this._cameraBehaviourState,\n ),\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._inputManager;\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n public getBounds(): Box3 | null {\n if (!this._mesh) {\n return null;\n }\n return new Box3().setFromObject(this._mesh);\n }\n\n getGeometryBounds(): Box3 | null {\n return null;\n }\n\n protected initializeWebGLGUI() {\n this._gui = getWebGLGUI();\n this._updateGUI();\n }\n\n protected override initializeWebGPUGUI(\n roomleWebGPURenderer: RoomleWebGPURenderer,\n ): void {\n super.initializeWebGPUGUI(roomleWebGPURenderer);\n this._gui =\n roomleWebGPURenderer.getOrCreateGUIParameters('Material Viewer');\n this._updateGUI();\n }\n\n private _updateGUI() {\n const gui = this._gui;\n if (!gui) {\n return;\n }\n if (!this._guiGeometryFolder) {\n this._guiGeometryFolder = gui.addFolder('Geometry');\n this._guiGeometryFolder\n .add(this._sceneParams, 'type', {\n Cube: GEOMETRY.CUBE,\n Sphere: GEOMETRY.SPHERE,\n PlaneVertical: GEOMETRY.PLANE_VERTICAL,\n PlaneHorizontal: GEOMETRY.PLANE_HORIZONTAL,\n })\n .onChange((type: number) => {\n console.log(type);\n this._setGeometry();\n });\n }\n if (this._material) {\n if (!this._guiMaterialFolder) {\n this._guiMaterialFolder = gui.addFolder('Material');\n this._guiMaterialFolder\n .addColor(this._materialParams, 'color')\n .onChange((color: string) => {\n this._material.color = new Color(color);\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'metallic', 0, 1, 0.01)\n .onChange((metallic: number) => {\n this._material.metalness = metallic === 1 ? 1 : 0.5;\n this._material.reflectivity = metallic || 0.5;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'roughness', 0, 1, 0.01)\n .onChange((_roughness: number) => {\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'transmission', 0, 1, 0.01)\n .onChange((transmission: number) => {\n this._material.transmission = transmission;\n if (transmission > 0) {\n this._material.opacity = 1;\n this._material.alphaTest = 0.5;\n this._material.depthWrite = true;\n this._material.metalness = 0;\n }\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alpha', 0, 1, 0.01)\n .onChange((alpha: number) => {\n this._material.transparent = alpha < 1;\n this._material.opacity = alpha;\n this._material.depthWrite = alpha >= 1;\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alphaCutoff', 0, 1, 0.01)\n .onChange((alphaCutoff: number) => {\n if (alphaCutoff) {\n this._material.alphaTest = alphaCutoff;\n } else {\n this._material.alphaTest = 0;\n }\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'doubleSided')\n .onChange((doubleSided: boolean) => {\n if (doubleSided) {\n this._material.side = DoubleSide;\n } else {\n this._material.side = FrontSide;\n }\n this._shadingChanged();\n });\n }\n }\n }\n\n private _shadingChanged() {\n this._roomleMaterialViewerUiCallback.onMaterialShadingChanged(\n getMaterialShading(this._material),\n );\n this._requestRender();\n }\n\n public setGeometry(type: GEOMETRY) {\n this._sceneParams.type = type;\n this._setGeometry();\n }\n\n private _setGeometry() {\n let geometry;\n if (this._sceneParams.type === GEOMETRY.CUBE) {\n geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.SPHERE) {\n geometry = new SphereGeometry(0.5, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_HORIZONTAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n geometry.rotateX(-Math.PI / 2);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_VERTICAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n } else {\n console.error(\n `MaterialViewerSceneManager: unexpected geometry type \"${this._sceneParams.type}\"`,\n );\n return;\n }\n this._mesh.geometry = geometry;\n this._renderEverything();\n }\n\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n const material = await this._rapiAccess.getMaterial(materialId);\n if (\n !this._environment ||\n !(this._environment instanceof FloorEnvironment)\n ) {\n this._environment = new FloorEnvironment(\n this._scene,\n this._environment,\n !this._initData.webGpu,\n );\n }\n return new Promise((resolve, reject) => {\n (this._environment as FloorEnvironment)\n .changeFloorMaterial(material, this._maxAnisotropy)\n .then(() => {\n this._requestRender();\n resolve();\n }, reject);\n });\n }\n\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n const width = SIZE.x * 100;\n const height = SIZE.y * 100;\n const repeatWidth =\n width / (rapiTexture.mmWidth === 0 ? 1 : rapiTexture.mmWidth);\n const repeatHeight =\n height / (rapiTexture.mmHeight === 0 ? 1 : rapiTexture.mmHeight);\n const maxTextures = getMaxTextures(this._renderer);\n if (base64Image) {\n const image = new Image();\n image.src = base64Image;\n const texture = new Texture();\n texture.image = image;\n image.onload = function () {\n texture.needsUpdate = true;\n };\n addExistingTexture(\n texture,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n } else {\n await addTexture(\n rapiTexture.image,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n }\n this._requestRender();\n }\n\n public removeTexture(rapiTexture: RapiTexture) {\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.ORM) {\n this._material.aoMap = null;\n this._material.roughnessMap = null;\n this._material.metalnessMap = null;\n }\n if (\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGB ||\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGBA\n ) {\n this._material.map = null;\n }\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.XYZ) {\n this._material.normalMap = null;\n }\n this._material.needsUpdate = true;\n this._requestRender();\n }\n\n public clearCache() {\n this._configuratorMeshGenerator.clear();\n }\n}\n","import type ScriptLoader from '../../common-core/src/script-loader';\nimport type DomHelper from '../../common-core/src/utils/dom-helper';\nimport inject from '../../common-core/src/di/inject';\nimport type { ExternalEmbeddable, GlobalAPI } from '../../common-core/src/main';\nimport type { Main } from '../../common-core/src/main';\nimport type { Context } from '../../common-core/src/di/context';\nimport type { LifeCycleManager } from '../../common-core/src/life-cycle-manager';\nimport type { SceneSettings } from '../../common-core/src/scene-settings-loader';\nimport type { GEOMETRY } from './webgl/material-viewer-scene-manager';\nimport MaterialViewerSceneManager from './webgl/material-viewer-scene-manager';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../typings/rapi-types';\nimport type RoomleMaterialViewerUiCallback from './roomle-material-viewer-ui-callback';\nimport type { InitDataDefinition } from '../../common-core/src/utils/shims';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { type RapiAccess } from '../../common-core/src/rapi-access';\nimport type { CanvasOffset } from '../../common-core/src/common-interfaces';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport type { Scene } from 'three';\nimport { type IdbManager } from '../../common-core/src/services/idb-manager';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\nexport default class RoomleMaterialViewer\n implements\n GlobalAPI,\n Context,\n ExternalEmbeddable<RoomleMaterialViewerUiCallback>\n{\n public _creator_: string;\n\n @inject\n private _domHelper: DomHelper;\n\n @inject\n private _scriptLoader: ScriptLoader;\n\n @inject\n private _lifeCycleManager: LifeCycleManager;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _initData: InitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: MaterialViewerSceneManager;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public setCameraOffset(offset: CanvasOffset): void {\n this._sceneManager.setCameraOffset(offset);\n }\n\n public getCameraOffset(): CanvasOffset {\n return this._sceneManager.getCameraOffset();\n }\n\n public init(element: HTMLElement): Promise<void> {\n this._domHelper.setDomElement(element);\n\n if (this._sceneManager) {\n this._lifeCycleManager.resume();\n return Promise.resolve();\n }\n\n return new Promise<void>(this._initPromiseCallback.bind(this));\n }\n\n private _initPromiseCallback(resolve: () => void, _reject: () => void) {\n this._sceneManager = new MaterialViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n this._sceneManager.enableHD();\n resolve();\n }\n\n get callbacks(): RoomleMaterialViewerUiCallback {\n return this._roomleMaterialViewerUiCallback;\n }\n\n set callbacks(callback: RoomleMaterialViewerUiCallback) {\n this._roomleMaterialViewerUiCallback = callback;\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return this._sceneManager.loadMaterialShading(materialShading);\n }\n\n public loadMaterial(\n material: RapiMaterial,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterial(material);\n }\n\n public loadMaterialId(\n materialId: RapiId,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterialId(materialId);\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return this._sceneManager.getMaterialShading(version);\n }\n\n /**\n * Loads a SceneSettings object, currently it can can contain a light setting definition\n * (see {@link @roomle/web-sdk/configurator-core/src/roomle-configurator#RoomleConfigurator.loadDynamicLightSetting}) and an environment definition (see {@link @roomle/web-sdk/configurator-core/src/environment/dynamic-environment-setting-loader#EnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public setOverrides(initData: InitDataDefinition): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n }\n\n public updateSize(): void {\n this._sceneManager.updateCamera();\n }\n\n /**\n * Return the main class which has access to lifecycle events and RapiAccess.\n * Hidden because it's only useful for embedding API.\n * Has to be overridden by main class.\n * @hidden\n */\n public getMain(): Main | undefined {\n return undefined;\n }\n\n public resumeTest(element: HTMLElement) {\n this._domHelper.setDomElement(element);\n this._lifeCycleManager.resume();\n }\n\n public pauseTest() {\n this._lifeCycleManager.pause();\n }\n\n public showGUI() {\n this._sceneManager.showGUI();\n }\n\n /**\n * Sets the material of the floor to the given material id.\n * If the current environment is not floor environment it will be changed\n *\n * Example material ids are:\n * roomle_floor:DresdenEiche\n * roomle_floor:Ibiza\n * roomle_floor:Palma\n * roomle_floor:Elba\n * roomle_floor:Manacor\n * roomle_floor:KernEiche\n * roomle_floor:KieferScandic\n * roomle_floor:EicheHabsburg\n * roomle_floor:FuldaKiefer\n * roomle_floor:Ashton\n * roomle_floor:EicheLondon\n *\n * @param materialId\n * @returns promise that resolves when material has been changed\n */\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n return this._sceneManager.changeFloorMaterialById(materialId);\n }\n\n /**\n * Set the geometry of the demo material mesh\n *\n * Possible parameter:\n * 'cube',\n * 'sphere',\n * 'plane_vertical',\n * 'plane_horizontal'\n *\n * @param type\n */\n public setGeometry(type: GEOMETRY) {\n this._sceneManager.setGeometry(type);\n }\n\n /**\n * Set a texture on the demo material, if no base64Image is set, the image field of rapiTexture is used\n * @param rapiTexture\n * @param base64Image for example \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg==\"\n */\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n return this._sceneManager.addTexture(rapiTexture, base64Image);\n }\n\n /**\n * Remove texture from the demo material\n * @param rapiTexture\n */\n public removeTexture(rapiTexture: RapiTexture) {\n return this._sceneManager.removeTexture(rapiTexture);\n }\n\n private _clearCaches() {\n this._rapiAccess.cleanUp();\n this._sceneManager.clearCache();\n }\n\n public getScene(): Scene {\n return this._sceneManager.getScene();\n }\n\n public updateScene(): void {\n this._sceneManager.updateScene();\n }\n\n /**\n * returns unit formatter for formatting input und output values in scene\n */\n public getUnitFormatter(): UnitFormatter {\n return this._unitFormatter;\n }\n\n /**\n * returns manager class to interface with indexedDB storage\n */\n public getStorage(): IdbManager {\n return this._idbManager;\n }\n\n public setEnvironmentMap(params: {\n url?: string;\n intensity?: number;\n rotation?: number;\n maxLightSources?: number;\n }): void {\n const { url, intensity, rotation, maxLightSources } = params;\n this._sceneManager.setEnvironmentMap(\n url,\n intensity,\n rotation,\n maxLightSources,\n );\n }\n\n /**\n * @internal\n * Use this callbacks to hook in your functionality\n */\n public get globalCallbacks(): GlobalCallback {\n return this._globalCallback;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { UiCallback } from '../../common-core/src/utils/ui-callback';\nimport type { RapiMaterialShading } from '../../typings/rapi-types';\n\nexport default class RoomleMaterialViewerUiCallback extends UiCallback {\n constructor(creator: string) {\n super(creator);\n }\n\n /**\n * Gets called when a material parameter has been changed using the graphical user interface\n * @param materialShading\n */\n public onMaterialShadingChanged = (\n materialShading: RapiMaterialShading,\n ): void => undefined;\n}\n","import Logger from '../../../common-core/src/logger';\nimport ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport InputManager from '../../../common-core/src/input/input-manager';\nimport ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'input-manager',\n InputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment(\n 'configurator-mesh-generator',\n ConfiguratorMeshGenerator,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment(\n 'roomle-material-viewer-ui-callback',\n RoomleMaterialViewerUiCallback,\n DI_TYPE.CONTEXT,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleMaterialViewer from './roomle-material-viewer';\nimport { INJECTABLES } from './utils/injectables';\n\nexport class MaterialViewer extends Main {\n private _viewer: RoomleMaterialViewer;\n\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._viewer = new RoomleMaterialViewer(this._context);\n\n if (!window.RoomleMaterialViewer) {\n window.RoomleMaterialViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleMaterialViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.MATERIAL_VIEWER;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"material-viewer-BuBSXGw6.mjs","names":[],"sources":["../../packages/common-core/src/cameracontrol/material-viewer-camera-behaviour.ts","../../packages/material-viewer/src/webgl/material-viewer-scene-manager.ts","../../packages/material-viewer/src/roomle-material-viewer.ts","../../packages/material-viewer/src/roomle-material-viewer-ui-callback.ts","../../packages/material-viewer/src/utils/injectables.ts","../../packages/material-viewer/src/material-viewer.ts"],"sourcesContent":["import CameraBehaviour from './camera-behaviour';\nimport type AdjustableCameraControl3D from '../../../glb-viewer-core/src/camera-control/adjustable-camera-control-3d';\n\nexport default class MaterialViewerCameraBehaviour extends CameraBehaviour {\n public get cameraControl(): AdjustableCameraControl3D {\n return this._cameraControl as AdjustableCameraControl3D;\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type { GenericGUIParamFolder } from '../../../common-core/src/webgl/gui-types';\nimport type { RoomleWebGPURenderer } from '../../../common-core/src/webgpu/roomle-webgpu-renderer';\nimport type { CanvasOffset } from '../../../common-core/src/common-interfaces';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../../typings/rapi-types';\nimport { RAPI_TEXTURE_TYPE } from '../../../typings/rapi-types';\nimport {\n addExistingTexture,\n addTexture,\n getWebGLGUI,\n getMaterialShading,\n setMaterial,\n getMaxTextures,\n} from '../../../common-core/src/utils/threejs-utils';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport type ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport type RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\nimport BackgroundEnvironment from '../../../common-core/src/environment/background-environment';\nimport FloorEnvironment from '../../../configurator-core/src/webgl/environment/floor-environment';\nimport { type RapiAccess } from '../../../common-core/src/rapi-access';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '#/common/src/utils/types';\nimport type { MeshPhysicalMaterial } from 'three';\nimport {\n Box3,\n BoxGeometry,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n PlaneGeometry,\n SphereGeometry,\n Texture,\n} from 'three';\nimport MaterialCreator from '../../../common-core/src/utils/material-creator';\nimport MaterialViewerCameraBehaviour from '../../../common-core/src/cameracontrol/material-viewer-camera-behaviour';\n\nexport const enum GEOMETRY {\n CUBE = 'cube',\n SPHERE = 'sphere',\n PLANE_VERTICAL = 'plane_vertical',\n PLANE_HORIZONTAL = 'plane_horizontal',\n}\n\nconst SIZE = { x: 1, y: 1, z: 1 };\nexport default class MaterialViewerSceneManager extends SceneManager {\n @inject\n private _inputManager: InputManager;\n\n @inject\n private _configuratorMeshGenerator: ConfiguratorMeshGenerator;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _gui: GenericGUIParamFolder | null;\n private _guiGeometryFolder: GenericGUIParamFolder | undefined;\n private _guiMaterialFolder: GenericGUIParamFolder | undefined;\n private _mesh: Mesh;\n private _material: MeshPhysicalMaterial;\n private _sceneParams = {\n type: GEOMETRY.CUBE,\n };\n private _materialParams = {\n color: '#ffffff',\n metallic: 0.5,\n alpha: 0,\n alphaCutoff: 0,\n doubleSided: false,\n };\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.RMV, CAMERA_TYPE.CAMERA_3D);\n\n // Use lazy initialization for renderer-dependent settings\n this._initializeRendererSettings();\n\n this._initScene();\n }\n\n // If renderer is not ready yet, will retry on next tick.\n // This is necessary for dynamic WebGPU renderer imports.\n private _initializeRendererSettings(): void {\n if (!this._renderer) {\n // Retry on next tick if renderer not ready\n setTimeout(() => this._initializeRendererSettings(), 0);\n return;\n }\n\n const maxTextures = getMaxTextures(this._renderer);\n if (maxTextures > 8) {\n const lightSource =\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA,\n );\n if (lightSource) {\n this.loadDynamicLightSetting(lightSource);\n }\n }\n }\n\n private _initScene() {\n const geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n const meshPhysicalMaterial = MaterialCreator.createMeshPhysicalMaterial({\n color: this._initData.colors.PRIMARY,\n });\n this._setMaterial(meshPhysicalMaterial);\n this._mesh = new Mesh(geometry, this._material);\n this._mesh.castShadow = true;\n this._mesh.position.setY(SIZE.y / 2);\n this._scene.add(this._mesh);\n\n const { initialFloorMaterial } = this._initData;\n\n if (initialFloorMaterial) {\n this.changeFloorMaterialById(initialFloorMaterial);\n } else {\n this._environment = new BackgroundEnvironment(\n this._scene,\n undefined,\n new Color(0xffffff),\n );\n }\n\n if (this.cameraBehaviour.cameraControl instanceof CameraControl3D) {\n const boundingBox = new Box3();\n boundingBox.setFromObject(this._mesh);\n console.trace('reset camera');\n this.cameraBehaviour.cameraControl.updateAndReset(boundingBox);\n }\n\n void this.showGUI();\n }\n\n public loadMaterialId(materialId: RapiId): Promise<void> {\n return new Promise<void>((resolve) => {\n this._configuratorMeshGenerator\n .loadMaterial(materialId, SIZE.x * 1000, SIZE.y * 1000)\n .then((material) => {\n this._setMaterial(material as MeshPhysicalMaterial);\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n });\n }\n\n public loadMaterial(material: RapiMaterial): Promise<void> {\n return new Promise<void>((resolve) => {\n // eslint-disable-next-line\n if (!material.__rapi_path__) {\n // eslint-disable-next-line\n material.__rapi_path__ = 'materials';\n }\n this._mesh.material = this._material;\n this._configuratorMeshGenerator\n .loadTextures(material, this._material, SIZE.x * 100, SIZE.y * 100)\n .then(() => {\n this._updateGUI();\n this._requestRender();\n });\n resolve();\n });\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return new Promise<void>((resolve) => {\n let material = { shading: materialShading };\n this._setMaterial(setMaterial(this._material, material as RapiMaterial));\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n }\n\n private _setMaterial(material: MeshPhysicalMaterial) {\n this._material = material;\n this._materialParams.alpha = material.opacity;\n this._materialParams.alphaCutoff = material.alphaTest;\n this._materialParams.color = '#' + material.color.getHexString();\n this._materialParams.doubleSided = material.side === DoubleSide;\n this._materialParams.metallic =\n material.metalness === 1 ? 1 : material.reflectivity;\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return getMaterialShading(this._material, version);\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset,\n ) {\n this._changeCameraBehaviour(\n new MaterialViewerCameraBehaviour(\n new CameraControl3D(this._creator_, this._getInputManager(), undefined),\n this._cameraBehaviourState,\n ),\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._inputManager;\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n public getBounds(): Box3 | null {\n if (!this._mesh) {\n return null;\n }\n return new Box3().setFromObject(this._mesh);\n }\n\n getGeometryBounds(): Box3 | null {\n return null;\n }\n\n protected initializeWebGLGUI() {\n this._gui = getWebGLGUI();\n this._updateGUI();\n }\n\n protected override initializeWebGPUGUI(\n roomleWebGPURenderer: RoomleWebGPURenderer,\n ): void {\n super.initializeWebGPUGUI(roomleWebGPURenderer);\n this._gui =\n roomleWebGPURenderer.getOrCreateGUIParameters('Material Viewer');\n this._updateGUI();\n }\n\n private _updateGUI() {\n const gui = this._gui;\n if (!gui) {\n return;\n }\n if (!this._guiGeometryFolder) {\n this._guiGeometryFolder = gui.addFolder('Geometry');\n this._guiGeometryFolder\n .add(this._sceneParams, 'type', {\n Cube: GEOMETRY.CUBE,\n Sphere: GEOMETRY.SPHERE,\n PlaneVertical: GEOMETRY.PLANE_VERTICAL,\n PlaneHorizontal: GEOMETRY.PLANE_HORIZONTAL,\n })\n .onChange((type: number) => {\n console.log(type);\n this._setGeometry();\n });\n }\n if (this._material) {\n if (!this._guiMaterialFolder) {\n this._guiMaterialFolder = gui.addFolder('Material');\n this._guiMaterialFolder\n .addColor(this._materialParams, 'color')\n .onChange((color: string) => {\n this._material.color = new Color(color);\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'metallic', 0, 1, 0.01)\n .onChange((metallic: number) => {\n this._material.metalness = metallic === 1 ? 1 : 0.5;\n this._material.reflectivity = metallic || 0.5;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'roughness', 0, 1, 0.01)\n .onChange((_roughness: number) => {\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'transmission', 0, 1, 0.01)\n .onChange((transmission: number) => {\n this._material.transmission = transmission;\n if (transmission > 0) {\n this._material.opacity = 1;\n this._material.alphaTest = 0.5;\n this._material.depthWrite = true;\n this._material.metalness = 0;\n }\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alpha', 0, 1, 0.01)\n .onChange((alpha: number) => {\n this._material.transparent = alpha < 1;\n this._material.opacity = alpha;\n this._material.depthWrite = alpha >= 1;\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alphaCutoff', 0, 1, 0.01)\n .onChange((alphaCutoff: number) => {\n if (alphaCutoff) {\n this._material.alphaTest = alphaCutoff;\n } else {\n this._material.alphaTest = 0;\n }\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'doubleSided')\n .onChange((doubleSided: boolean) => {\n if (doubleSided) {\n this._material.side = DoubleSide;\n } else {\n this._material.side = FrontSide;\n }\n this._shadingChanged();\n });\n }\n }\n }\n\n private _shadingChanged() {\n this._roomleMaterialViewerUiCallback.onMaterialShadingChanged(\n getMaterialShading(this._material),\n );\n this._requestRender();\n }\n\n public setGeometry(type: GEOMETRY) {\n this._sceneParams.type = type;\n this._setGeometry();\n }\n\n private _setGeometry() {\n let geometry;\n if (this._sceneParams.type === GEOMETRY.CUBE) {\n geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.SPHERE) {\n geometry = new SphereGeometry(0.5, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_HORIZONTAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n geometry.rotateX(-Math.PI / 2);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_VERTICAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n } else {\n console.error(\n `MaterialViewerSceneManager: unexpected geometry type \"${this._sceneParams.type}\"`,\n );\n return;\n }\n this._mesh.geometry = geometry;\n this._renderEverything();\n }\n\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n const material = await this._rapiAccess.getMaterial(materialId);\n if (\n !this._environment ||\n !(this._environment instanceof FloorEnvironment)\n ) {\n this._environment = new FloorEnvironment(\n this._scene,\n this._environment,\n !this._initData.webGpu,\n );\n }\n return new Promise((resolve, reject) => {\n (this._environment as FloorEnvironment)\n .changeFloorMaterial(material, this._maxAnisotropy)\n .then(() => {\n this._requestRender();\n resolve();\n }, reject);\n });\n }\n\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n const width = SIZE.x * 100;\n const height = SIZE.y * 100;\n const repeatWidth =\n width / (rapiTexture.mmWidth === 0 ? 1 : rapiTexture.mmWidth);\n const repeatHeight =\n height / (rapiTexture.mmHeight === 0 ? 1 : rapiTexture.mmHeight);\n const maxTextures = getMaxTextures(this._renderer);\n if (base64Image) {\n const image = new Image();\n image.src = base64Image;\n const texture = new Texture();\n texture.image = image;\n image.onload = function () {\n texture.needsUpdate = true;\n };\n addExistingTexture(\n texture,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n } else {\n await addTexture(\n rapiTexture.image,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n }\n this._requestRender();\n }\n\n public removeTexture(rapiTexture: RapiTexture) {\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.ORM) {\n this._material.aoMap = null;\n this._material.roughnessMap = null;\n this._material.metalnessMap = null;\n }\n if (\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGB ||\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGBA\n ) {\n this._material.map = null;\n }\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.XYZ) {\n this._material.normalMap = null;\n }\n this._material.needsUpdate = true;\n this._requestRender();\n }\n\n public clearCache() {\n this._configuratorMeshGenerator.clear();\n }\n}\n","import type ScriptLoader from '../../common-core/src/script-loader';\nimport type DomHelper from '../../common-core/src/utils/dom-helper';\nimport inject from '../../common-core/src/di/inject';\nimport type { ExternalEmbeddable, GlobalAPI } from '../../common-core/src/main';\nimport type { Main } from '../../common-core/src/main';\nimport type { Context } from '../../common-core/src/di/context';\nimport type { LifeCycleManager } from '../../common-core/src/life-cycle-manager';\nimport type { SceneSettings } from '../../common-core/src/scene-settings-loader';\nimport type { GEOMETRY } from './webgl/material-viewer-scene-manager';\nimport MaterialViewerSceneManager from './webgl/material-viewer-scene-manager';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../typings/rapi-types';\nimport type RoomleMaterialViewerUiCallback from './roomle-material-viewer-ui-callback';\nimport type { InitDataDefinition } from '../../common-core/src/utils/shims';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { type RapiAccess } from '../../common-core/src/rapi-access';\nimport type { CanvasOffset } from '../../common-core/src/common-interfaces';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport type { Scene } from 'three';\nimport { type IdbManager } from '../../common-core/src/services/idb-manager';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\nexport default class RoomleMaterialViewer\n implements\n GlobalAPI,\n Context,\n ExternalEmbeddable<RoomleMaterialViewerUiCallback>\n{\n public _creator_: string;\n\n @inject\n private _domHelper: DomHelper;\n\n @inject\n private _scriptLoader: ScriptLoader;\n\n @inject\n private _lifeCycleManager: LifeCycleManager;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _initData: InitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: MaterialViewerSceneManager;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public setCameraOffset(offset: CanvasOffset): void {\n this._sceneManager.setCameraOffset(offset);\n }\n\n public getCameraOffset(): CanvasOffset {\n return this._sceneManager.getCameraOffset();\n }\n\n public init(element: HTMLElement): Promise<void> {\n this._domHelper.setDomElement(element);\n\n if (this._sceneManager) {\n this._lifeCycleManager.resume();\n return Promise.resolve();\n }\n\n return new Promise<void>(this._initPromiseCallback.bind(this));\n }\n\n private _initPromiseCallback(resolve: () => void, _reject: () => void) {\n this._sceneManager = new MaterialViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n this._sceneManager.enableHD();\n resolve();\n }\n\n get callbacks(): RoomleMaterialViewerUiCallback {\n return this._roomleMaterialViewerUiCallback;\n }\n\n set callbacks(callback: RoomleMaterialViewerUiCallback) {\n this._roomleMaterialViewerUiCallback = callback;\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return this._sceneManager.loadMaterialShading(materialShading);\n }\n\n public loadMaterial(\n material: RapiMaterial,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterial(material);\n }\n\n public loadMaterialId(\n materialId: RapiId,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterialId(materialId);\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return this._sceneManager.getMaterialShading(version);\n }\n\n /**\n * Loads a SceneSettings object, currently it can can contain a light setting definition\n * (see {@link @roomle/web-sdk/configurator-core/src/roomle-configurator#RoomleConfigurator.loadDynamicLightSetting}) and an environment definition (see {@link @roomle/web-sdk/configurator-core/src/environment/dynamic-environment-setting-loader#EnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public setOverrides(initData: InitDataDefinition): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n }\n\n public updateSize(): void {\n this._sceneManager.updateCamera();\n }\n\n /**\n * Return the main class which has access to lifecycle events and RapiAccess.\n * Hidden because it's only useful for embedding API.\n * Has to be overridden by main class.\n * @hidden\n */\n public getMain(): Main | undefined {\n return undefined;\n }\n\n public resumeTest(element: HTMLElement) {\n this._domHelper.setDomElement(element);\n this._lifeCycleManager.resume();\n }\n\n public pauseTest() {\n this._lifeCycleManager.pause();\n }\n\n public showGUI() {\n this._sceneManager.showGUI();\n }\n\n /**\n * Sets the material of the floor to the given material id.\n * If the current environment is not floor environment it will be changed\n *\n * Example material ids are:\n * roomle_floor:DresdenEiche\n * roomle_floor:Ibiza\n * roomle_floor:Palma\n * roomle_floor:Elba\n * roomle_floor:Manacor\n * roomle_floor:KernEiche\n * roomle_floor:KieferScandic\n * roomle_floor:EicheHabsburg\n * roomle_floor:FuldaKiefer\n * roomle_floor:Ashton\n * roomle_floor:EicheLondon\n *\n * @param materialId\n * @returns promise that resolves when material has been changed\n */\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n return this._sceneManager.changeFloorMaterialById(materialId);\n }\n\n /**\n * Set the geometry of the demo material mesh\n *\n * Possible parameter:\n * 'cube',\n * 'sphere',\n * 'plane_vertical',\n * 'plane_horizontal'\n *\n * @param type\n */\n public setGeometry(type: GEOMETRY) {\n this._sceneManager.setGeometry(type);\n }\n\n /**\n * Set a texture on the demo material, if no base64Image is set, the image field of rapiTexture is used\n * @param rapiTexture\n * @param base64Image for example \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg==\"\n */\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n return this._sceneManager.addTexture(rapiTexture, base64Image);\n }\n\n /**\n * Remove texture from the demo material\n * @param rapiTexture\n */\n public removeTexture(rapiTexture: RapiTexture) {\n return this._sceneManager.removeTexture(rapiTexture);\n }\n\n private _clearCaches() {\n this._rapiAccess.cleanUp();\n this._sceneManager.clearCache();\n }\n\n public getScene(): Scene {\n return this._sceneManager.getScene();\n }\n\n public updateScene(): void {\n this._sceneManager.updateScene();\n }\n\n /**\n * returns unit formatter for formatting input und output values in scene\n */\n public getUnitFormatter(): UnitFormatter {\n return this._unitFormatter;\n }\n\n /**\n * returns manager class to interface with indexedDB storage\n */\n public getStorage(): IdbManager {\n return this._idbManager;\n }\n\n public setEnvironmentMap(params: {\n url?: string;\n intensity?: number;\n rotation?: number;\n maxLightSources?: number;\n }): void {\n const { url, intensity, rotation, maxLightSources } = params;\n this._sceneManager.setEnvironmentMap(\n url,\n intensity,\n rotation,\n maxLightSources,\n );\n }\n\n /**\n * @internal\n * Use this callbacks to hook in your functionality\n */\n public get globalCallbacks(): GlobalCallback {\n return this._globalCallback;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { UiCallback } from '../../common-core/src/utils/ui-callback';\nimport type { RapiMaterialShading } from '../../typings/rapi-types';\n\nexport default class RoomleMaterialViewerUiCallback extends UiCallback {\n constructor(creator: string) {\n super(creator);\n }\n\n /**\n * Gets called when a material parameter has been changed using the graphical user interface\n * @param materialShading\n */\n public onMaterialShadingChanged = (\n materialShading: RapiMaterialShading,\n ): void => undefined;\n}\n","import Logger from '../../../common-core/src/logger';\nimport ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport InputManager from '../../../common-core/src/input/input-manager';\nimport ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'input-manager',\n InputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment(\n 'configurator-mesh-generator',\n ConfiguratorMeshGenerator,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment(\n 'roomle-material-viewer-ui-callback',\n RoomleMaterialViewerUiCallback,\n DI_TYPE.CONTEXT,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleMaterialViewer from './roomle-material-viewer';\nimport { INJECTABLES } from './utils/injectables';\n\nexport class MaterialViewer extends Main {\n private _viewer: RoomleMaterialViewer;\n\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._viewer = new RoomleMaterialViewer(this._context);\n\n if (!window.RoomleMaterialViewer) {\n window.RoomleMaterialViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleMaterialViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.MATERIAL_VIEWER;\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import "./roomle-sdk-CBwhwX_e.mjs";
2
- import "./configurator-CDw_c6tB.mjs";
3
- import "./planner-jvLAnYww.mjs";
4
- import "./glb-viewer-B-Zr743e.mjs";
1
+ import "./roomle-sdk-CcNdTp_n.mjs";
2
+ import "./configurator-iYlO_buA.mjs";
3
+ import "./planner-BuBkFbra.mjs";
4
+ import "./glb-viewer-AGV-_xKd.mjs";
5
5
  //#region ../common/src/utils/id-inferrer.ts
6
6
  var e = (e) => e.split(":").length - 1 == 1, t = (e) => e.split(":").length - 1 <= 0, n = (e) => e ? e.startsWith("component@") : !1, r = (e) => e.startsWith("{") && e.endsWith("}"), i = (e) => e.startsWith("ps_");
7
7
  //#endregion
8
8
  export { i as a, e as i, r as n, t as r, n as t };
9
9
 
10
- //# sourceMappingURL=packages-BXAZEcKa.mjs.map
10
+ //# sourceMappingURL=packages-CduZDHYG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"packages-BXAZEcKa.mjs","names":[],"sources":["../../../common/src/utils/id-inferrer.ts"],"sourcesContent":["import type { RapiId, RapiPlanSnapshotId } from '@roomle/web-sdk';\n\nexport const isIdAnItem = (id: string) => id.split(':').length - 1 === 1;\n\nexport const isIdAPlan = (id: string) => id.split(':').length - 1 <= 0;\n\nexport const isIdAComponent = (id: string) =>\n id ? id.startsWith('component@') : false;\n\nexport const isIdAConfigurationString = (id: string) =>\n id.startsWith('{') && id.endsWith('}');\n\nexport const isPlanSnapshotId = (\n id: string | RapiId,\n): id is RapiPlanSnapshotId => id.startsWith('ps_');\n"],"mappings":";;;;;AAEA,IAAa,KAAc,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAM,GAE1D,KAAa,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAK,GAExD,KAAkB,MAC7B,IAAK,EAAG,WAAW,aAAa,GAAG,IAExB,KAA4B,MACvC,EAAG,WAAW,IAAI,IAAI,EAAG,SAAS,IAAI,EAE3B,KACX,MAC6B,EAAG,WAAW,MAAM"}
1
+ {"version":3,"file":"packages-CduZDHYG.mjs","names":[],"sources":["../../../common/src/utils/id-inferrer.ts"],"sourcesContent":["import type { RapiId, RapiPlanSnapshotId } from '@roomle/web-sdk';\n\nexport const isIdAnItem = (id: string) => id.split(':').length - 1 === 1;\n\nexport const isIdAPlan = (id: string) => id.split(':').length - 1 <= 0;\n\nexport const isIdAComponent = (id: string) =>\n id ? id.startsWith('component@') : false;\n\nexport const isIdAConfigurationString = (id: string) =>\n id.startsWith('{') && id.endsWith('}');\n\nexport const isPlanSnapshotId = (\n id: string | RapiId,\n): id is RapiPlanSnapshotId => id.startsWith('ps_');\n"],"mappings":";;;;;AAEA,IAAa,KAAc,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAM,GAE1D,KAAa,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAK,GAExD,KAAkB,MAC7B,IAAK,EAAG,WAAW,aAAa,GAAG,IAExB,KAA4B,MACvC,EAAG,WAAW,IAAI,IAAI,EAAG,SAAS,IAAI,EAE3B,KACX,MAC6B,EAAG,WAAW,MAAM"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "./planner-BuBkFbra.mjs";
2
+ export { e as Planner };
@@ -1,5 +1,5 @@
1
- import { A as e, C as t, H as n, I as r, V as i, Z as a, c as o, ct as s, ft as c, n as l, ot as u, st as d, tt as f, u as p, w as m } from "./roomle-sdk-CBwhwX_e.mjs";
2
- import { t as h } from "./script-loader-CvnG6LgL.mjs";
1
+ import { A as e, C as t, H as n, I as r, V as i, Z as a, c as o, ct as s, ft as c, n as l, ot as u, st as d, tt as f, u as p, w as m } from "./roomle-sdk-CcNdTp_n.mjs";
2
+ import { t as h } from "./script-loader-D6i0wQ_j.mjs";
3
3
  //#region packages/planner-core/src/input/planner-input-manager.ts
4
4
  var g = class extends r {
5
5
  _canDrag(e) {
@@ -41,4 +41,4 @@ var g = class extends r {
41
41
  //#endregion
42
42
  export { v as t };
43
43
 
44
- //# sourceMappingURL=planner-jvLAnYww.mjs.map
44
+ //# sourceMappingURL=planner-BuBkFbra.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-jvLAnYww.mjs","names":[],"sources":["../../packages/planner-core/src/input/planner-input-manager.ts","../../packages/planner-core/src/utils/injectables.ts","../../packages/planner-core/src/planner.ts"],"sourcesContent":["import type { INPUT_EVENT_TYPE } from '../../../common-core/src/input/input-manager';\nimport InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class PlannerInputManager extends InputManager {\n protected _canDrag(_type: INPUT_EVENT_TYPE): boolean {\n return true;\n }\n}\n","import ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport Logger from '../../../common-core/src/logger';\nimport { default as PlannerMeshGenerator } from '../webgl/planner-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport PlannerInputManager from '../input/planner-input-manager';\nimport PlannerSelectionHandler from './planner-selection-handler';\nimport GlobalInitData from '../../../common-core/src/utils/global-init-data';\nimport ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'planner-input-manager',\n PlannerInputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'planner-mesh-generator',\n PlannerMeshGenerator,\n ),\n new DependencyInjectionAssignment(\n 'configurator-view-model',\n ConfiguratorViewModel,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment('global-init-data', GlobalInitData),\n new DependencyInjectionAssignment(\n 'planner-selection-handler',\n PlannerSelectionHandler,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport { RoomlePlanner } from './roomle-planner';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport { INJECTABLES } from './utils/injectables';\nimport type PlannerKernelAccess from './services/planner-kernel-access';\nimport type Logger from '../../common-core/src/logger';\nimport { KERNEL_TYPE } from '../../common-core/src/services/common-kernel-access';\nimport type { PluginName } from '../../configurator-core/src/utils/plugin-types';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { isInIframe } from '../../common-core/src/utils/rapi-utils';\n\nexport class Planner<\n P extends readonly PluginName[] = readonly [],\n> extends Main {\n private _planner: RoomlePlanner<P>;\n private _activePlugins: P;\n\n constructor(creator?: string, activePlugins?: P) {\n super(creator);\n this._activePlugins = (activePlugins || []) as P;\n }\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n // instantiate kernel acccess\n // instantiate pka\n // set pka on kernel access\n const plannerKernelAccess = this.lookup<PlannerKernelAccess>(\n 'planner-kernel-access',\n this._context,\n );\n plannerKernelAccess.init(KERNEL_TYPE.PLANNER);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._planner = new RoomlePlanner<P>(this._context, this._activePlugins);\n\n this._planner.getMain = () => {\n return this;\n };\n\n if (!window.RoomlePlanner) {\n if (this._activePlugins.length === 0) {\n // cast to unknown because we know that the planner is a RoomlePlanner\n window.RoomlePlanner = this._planner as unknown as RoomlePlanner;\n } else {\n window.RoomlePlanner = this._planner as RoomlePlanner<\n readonly PluginName[]\n >;\n }\n }\n\n const initData = this.lookup<InitData>('init-data', this._context);\n\n if (initData?.hi && isInIframe()) {\n await this._planner.setupHomagIntelligence();\n }\n }\n\n public getApi(): RoomlePlanner<P> {\n return this._planner;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.PLANNER;\n }\n}\n"],"mappings":";;;AAGA,IAAqB,IAArB,cAAiD,EAAa;CAC5D,SAAmB,GAAkC;AACnD,SAAO;;GCQE,IAA+C;CAC1D,IAAI,EAA8B,iBAAiB,EAAa;CAChE,IAAI,EACF,yBACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,UAAU,EAAO;CACnD,IAAI,EACF,0BACA,EACD;CACD,IAAI,EACF,2BACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EAA8B,oBAAoB,EAAe;CACrE,IAAI,EACF,6BACA,EACD;CACF,ECxBY,IAAb,cAEU,EAAK;CAIb,YAAY,GAAkB,GAAmB;AAE/C,EADA,MAAM,EAAQ,EACd,KAAK,iBAAkB,KAAiB,EAAE;;CAE5C,eAA+B;CAI/B,oBAAoC;AAMN,EAL5B,EAA0B,MAAM,EAAY,EAC5C,KAAK,OAAe,UAAU,KAAK,SAAS,EAIhB,KAAK,OAC/B,yBACA,KAAK,SACN,CACmB,KAAK,EAAY,QAAQ;;CAG/C,iBAAiC;AAC/B,QAAU,MAAM,0BAA0B;;CAG5C,sBAAsC;AACpC,QAAU,MAAM,0BAA0B;;CAG5C,MAAgB,eAA8B;AAoB5C,EAnBA,KAAK,WAAW,IAAI,EAAiB,KAAK,UAAU,KAAK,eAAe,EAExE,KAAK,SAAS,gBACL,MAGJ,OAAO,kBACN,KAAK,eAAe,QAEtB,OAAO,gBAAgB,KAAK,WAQf,KAAK,OAAiB,aAAa,KAAK,SAAS,EAEpD,MAAM,GAAY,IAC9B,MAAM,KAAK,SAAS,wBAAwB;;CAIhD,SAAkC;AAChC,SAAO,KAAK;;CAGd,iBAAmC;AACjC,SAAO,EAAa"}
1
+ {"version":3,"file":"planner-BuBkFbra.mjs","names":[],"sources":["../../packages/planner-core/src/input/planner-input-manager.ts","../../packages/planner-core/src/utils/injectables.ts","../../packages/planner-core/src/planner.ts"],"sourcesContent":["import type { INPUT_EVENT_TYPE } from '../../../common-core/src/input/input-manager';\nimport InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class PlannerInputManager extends InputManager {\n protected _canDrag(_type: INPUT_EVENT_TYPE): boolean {\n return true;\n }\n}\n","import ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport Logger from '../../../common-core/src/logger';\nimport { default as PlannerMeshGenerator } from '../webgl/planner-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport PlannerInputManager from '../input/planner-input-manager';\nimport PlannerSelectionHandler from './planner-selection-handler';\nimport GlobalInitData from '../../../common-core/src/utils/global-init-data';\nimport ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'planner-input-manager',\n PlannerInputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'planner-mesh-generator',\n PlannerMeshGenerator,\n ),\n new DependencyInjectionAssignment(\n 'configurator-view-model',\n ConfiguratorViewModel,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment('global-init-data', GlobalInitData),\n new DependencyInjectionAssignment(\n 'planner-selection-handler',\n PlannerSelectionHandler,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport { RoomlePlanner } from './roomle-planner';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport { INJECTABLES } from './utils/injectables';\nimport type PlannerKernelAccess from './services/planner-kernel-access';\nimport type Logger from '../../common-core/src/logger';\nimport { KERNEL_TYPE } from '../../common-core/src/services/common-kernel-access';\nimport type { PluginName } from '../../configurator-core/src/utils/plugin-types';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { isInIframe } from '../../common-core/src/utils/rapi-utils';\n\nexport class Planner<\n P extends readonly PluginName[] = readonly [],\n> extends Main {\n private _planner: RoomlePlanner<P>;\n private _activePlugins: P;\n\n constructor(creator?: string, activePlugins?: P) {\n super(creator);\n this._activePlugins = (activePlugins || []) as P;\n }\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n // instantiate kernel acccess\n // instantiate pka\n // set pka on kernel access\n const plannerKernelAccess = this.lookup<PlannerKernelAccess>(\n 'planner-kernel-access',\n this._context,\n );\n plannerKernelAccess.init(KERNEL_TYPE.PLANNER);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._planner = new RoomlePlanner<P>(this._context, this._activePlugins);\n\n this._planner.getMain = () => {\n return this;\n };\n\n if (!window.RoomlePlanner) {\n if (this._activePlugins.length === 0) {\n // cast to unknown because we know that the planner is a RoomlePlanner\n window.RoomlePlanner = this._planner as unknown as RoomlePlanner;\n } else {\n window.RoomlePlanner = this._planner as RoomlePlanner<\n readonly PluginName[]\n >;\n }\n }\n\n const initData = this.lookup<InitData>('init-data', this._context);\n\n if (initData?.hi && isInIframe()) {\n await this._planner.setupHomagIntelligence();\n }\n }\n\n public getApi(): RoomlePlanner<P> {\n return this._planner;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.PLANNER;\n }\n}\n"],"mappings":";;;AAGA,IAAqB,IAArB,cAAiD,EAAa;CAC5D,SAAmB,GAAkC;AACnD,SAAO;;GCQE,IAA+C;CAC1D,IAAI,EAA8B,iBAAiB,EAAa;CAChE,IAAI,EACF,yBACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,UAAU,EAAO;CACnD,IAAI,EACF,0BACA,EACD;CACD,IAAI,EACF,2BACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EAA8B,oBAAoB,EAAe;CACrE,IAAI,EACF,6BACA,EACD;CACF,ECxBY,IAAb,cAEU,EAAK;CAIb,YAAY,GAAkB,GAAmB;AAE/C,EADA,MAAM,EAAQ,EACd,KAAK,iBAAkB,KAAiB,EAAE;;CAE5C,eAA+B;CAI/B,oBAAoC;AAMN,EAL5B,EAA0B,MAAM,EAAY,EAC5C,KAAK,OAAe,UAAU,KAAK,SAAS,EAIhB,KAAK,OAC/B,yBACA,KAAK,SACN,CACmB,KAAK,EAAY,QAAQ;;CAG/C,iBAAiC;AAC/B,QAAU,MAAM,0BAA0B;;CAG5C,sBAAsC;AACpC,QAAU,MAAM,0BAA0B;;CAG5C,MAAgB,eAA8B;AAoB5C,EAnBA,KAAK,WAAW,IAAI,EAAiB,KAAK,UAAU,KAAK,eAAe,EAExE,KAAK,SAAS,gBACL,MAGJ,OAAO,kBACN,KAAK,eAAe,QAEtB,OAAO,gBAAgB,KAAK,WAQf,KAAK,OAAiB,aAAa,KAAK,SAAS,EAEpD,MAAM,GAAY,IAC9B,MAAM,KAAK,SAAS,wBAAwB;;CAIhD,SAAkC;AAChC,SAAO,KAAK;;CAGd,iBAAmC;AACjC,SAAO,EAAa"}
@@ -20,7 +20,7 @@ var r = class {
20
20
  async init(e, t, n) {
21
21
  this._scene = e, this._uiScene = t, this._cameraPosition = n;
22
22
  let { bananaForScale: r } = this._initData;
23
- r && await import("./banana-for-scale-DpKXNBt_.mjs").then(({ default: e }) => this._plugins.push(new e(this._creator_))), this._plugins.forEach((e) => e.setScene(this._scene)), this._plugins.forEach((e) => e.setUiScene(this._uiScene)), this._plugins.forEach((e) => e.updateBounds(this._bounds)), this._plugins.forEach((e) => e.moveCameraEnd(this._cameraPosition));
23
+ r && await import("./banana-for-scale-Cf41yXTl.mjs").then(({ default: e }) => this._plugins.push(new e(this._creator_))), this._plugins.forEach((e) => e.setScene(this._scene)), this._plugins.forEach((e) => e.setUiScene(this._uiScene)), this._plugins.forEach((e) => e.updateBounds(this._bounds)), this._plugins.forEach((e) => e.moveCameraEnd(this._cameraPosition));
24
24
  }
25
25
  addPlugin(e) {
26
26
  this._plugins.push(e), e.setScene(this._scene), e.setUiScene(this._uiScene), e.updateBounds(this._bounds), e.moveCameraEnd(this._cameraPosition);
@@ -52,4 +52,4 @@ n([t, e("design:type", Object)], i.prototype, "_initData", void 0);
52
52
  //#endregion
53
53
  export { r as n, i as t };
54
54
 
55
- //# sourceMappingURL=plugin-system-CRaC04G5.mjs.map
55
+ //# sourceMappingURL=plugin-system-CPf99Zkf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-system-CRaC04G5.mjs","names":[],"sources":["../../packages/configurator-core/src/webgl/plugin-system.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { Context } from '../../../common-core/src/di/context';\nimport inject from '../../../common-core/src/di/inject';\nimport type InitData from '../../../common-core/src/utils/init-data';\nimport type { Box3, Scene, Vector3 } from 'three';\n\nexport declare interface ScenePluginHooks {\n updateBounds(bounds: Box3): void;\n\n clearScene(scene: Scene, uiScene: Scene): void;\n\n moveCameraEnd(position: Vector3): void;\n\n moveCameraStart(position: Vector3): void;\n\n needsUiScene(): boolean;\n}\n\nexport declare interface ScenePlugin extends ScenePluginHooks, Context {\n setScene(scene: Scene): void;\n\n setUiScene(uiScene: Scene): void;\n}\n\nexport class ScenePluginDefaultImplementation implements ScenePlugin {\n public _creator_: string;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public setScene(scene: Scene): void {\n //noop\n }\n\n public setUiScene(uiScene: Scene): void {\n //noop\n }\n\n public updateBounds(bounds: Box3): void {\n //noop\n }\n\n public clearScene(scene: Scene, uiScene: Scene): void {\n //noop\n }\n\n public moveCameraEnd(position: Vector3): void {\n //noop\n }\n\n public moveCameraStart(position: Vector3): void {\n //noop\n }\n\n public needsUiScene(): boolean {\n return false;\n }\n}\n\nexport default class PluginSystem implements Context, ScenePluginHooks {\n public _creator_: string;\n\n @inject\n private _initData: InitData;\n\n private _scene: Scene;\n private _uiScene: Scene;\n private _bounds: Box3;\n private _cameraPosition: Vector3;\n\n private _plugins: ScenePlugin[] = [];\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public async init(scene: Scene, uiScene: Scene, cameraPosition: Vector3) {\n this._scene = scene;\n this._uiScene = uiScene;\n this._cameraPosition = cameraPosition;\n const { bananaForScale } = this._initData;\n\n if (bananaForScale) {\n await import('./banana-for-scale').then(({ default: BananaForScale }) =>\n this._plugins.push(new BananaForScale(this._creator_)),\n );\n }\n\n this._plugins.forEach((plugin) => plugin.setScene(this._scene));\n this._plugins.forEach((plugin) => plugin.setUiScene(this._uiScene));\n this._plugins.forEach((plugin) => plugin.updateBounds(this._bounds));\n this._plugins.forEach((plugin) =>\n plugin.moveCameraEnd(this._cameraPosition),\n );\n }\n\n public addPlugin(plugin: ScenePlugin) {\n this._plugins.push(plugin);\n plugin.setScene(this._scene);\n plugin.setUiScene(this._uiScene);\n plugin.updateBounds(this._bounds);\n plugin.moveCameraEnd(this._cameraPosition);\n }\n\n public updateBounds(bounds: Box3) {\n this._bounds = bounds;\n this._plugins.forEach((plugin) => plugin.updateBounds(bounds));\n }\n\n public clearScene(scene: Scene, uiScene: Scene): void {\n this._plugins.forEach((plugin) => plugin.clearScene(scene, uiScene));\n }\n\n public getActivePlugins(): ScenePlugin[] {\n return this._plugins;\n }\n\n public getPlugin<T extends ScenePlugin>(type: any): T | null {\n for (let plugin of this._plugins) {\n if (plugin instanceof type) {\n return plugin as T;\n }\n }\n return null;\n }\n\n public moveCameraEnd(position: Vector3): void {\n this._cameraPosition = position;\n this._plugins.forEach((plugin) => plugin.moveCameraEnd(position));\n }\n\n public moveCameraStart(position: Vector3): void {\n this._cameraPosition = position;\n this._plugins.forEach((plugin) => plugin.moveCameraStart(position));\n }\n\n public needsUiScene(): boolean {\n return this._plugins\n .map((plugin) => plugin.needsUiScene())\n .reduce(\n (previousValue, currentValue) => previousValue || currentValue,\n false,\n );\n }\n}\n"],"mappings":";;AAwBA,IAAa,IAAb,MAAqE;CAGnE,YAAY,GAAiB;AAC3B,OAAK,YAAY;;CAGnB,SAAgB,GAAoB;CAIpC,WAAkB,GAAsB;CAIxC,aAAoB,GAAoB;CAIxC,WAAkB,GAAc,GAAsB;CAItD,cAAqB,GAAyB;CAI9C,gBAAuB,GAAyB;CAIhD,eAA+B;AAC7B,SAAO;;GAIU,IAArB,MAAuE;CAarE,YAAY,GAAiB;AAC3B,kBAHgC,EAAE,EAGlC,KAAK,YAAY;;CAGnB,MAAa,KAAK,GAAc,GAAgB,GAAyB;AAGvE,EAFA,KAAK,SAAS,GACd,KAAK,WAAW,GAChB,KAAK,kBAAkB;EACvB,IAAM,EAAE,sBAAmB,KAAK;AAWhC,EATI,KACF,MAAM,OAAO,mCAAsB,MAAM,EAAE,SAAS,QAClD,KAAK,SAAS,KAAK,IAAI,EAAe,KAAK,UAAU,CAAC,CACvD,EAGH,KAAK,SAAS,SAAS,MAAW,EAAO,SAAS,KAAK,OAAO,CAAC,EAC/D,KAAK,SAAS,SAAS,MAAW,EAAO,WAAW,KAAK,SAAS,CAAC,EACnE,KAAK,SAAS,SAAS,MAAW,EAAO,aAAa,KAAK,QAAQ,CAAC,EACpE,KAAK,SAAS,SAAS,MACrB,EAAO,cAAc,KAAK,gBAAgB,CAC3C;;CAGH,UAAiB,GAAqB;AAKpC,EAJA,KAAK,SAAS,KAAK,EAAO,EAC1B,EAAO,SAAS,KAAK,OAAO,EAC5B,EAAO,WAAW,KAAK,SAAS,EAChC,EAAO,aAAa,KAAK,QAAQ,EACjC,EAAO,cAAc,KAAK,gBAAgB;;CAG5C,aAAoB,GAAc;AAEhC,EADA,KAAK,UAAU,GACf,KAAK,SAAS,SAAS,MAAW,EAAO,aAAa,EAAO,CAAC;;CAGhE,WAAkB,GAAc,GAAsB;AACpD,OAAK,SAAS,SAAS,MAAW,EAAO,WAAW,GAAO,EAAQ,CAAC;;CAGtE,mBAAyC;AACvC,SAAO,KAAK;;CAGd,UAAwC,GAAqB;AAC3D,OAAK,IAAI,KAAU,KAAK,SACtB,KAAI,aAAkB,EACpB,QAAO;AAGX,SAAO;;CAGT,cAAqB,GAAyB;AAE5C,EADA,KAAK,kBAAkB,GACvB,KAAK,SAAS,SAAS,MAAW,EAAO,cAAc,EAAS,CAAC;;CAGnE,gBAAuB,GAAyB;AAE9C,EADA,KAAK,kBAAkB,GACvB,KAAK,SAAS,SAAS,MAAW,EAAO,gBAAgB,EAAS,CAAC;;CAGrE,eAA+B;AAC7B,SAAO,KAAK,SACT,KAAK,MAAW,EAAO,cAAc,CAAC,CACtC,QACE,GAAe,MAAiB,KAAiB,GAClD,GACD;;;GAhFJ,GAAA,EAAA,eAAA,OAAA,CAAA,EAAA,EAAA,WAAA,aAAA,KAAA,EAAA"}
1
+ {"version":3,"file":"plugin-system-CPf99Zkf.mjs","names":[],"sources":["../../packages/configurator-core/src/webgl/plugin-system.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { Context } from '../../../common-core/src/di/context';\nimport inject from '../../../common-core/src/di/inject';\nimport type InitData from '../../../common-core/src/utils/init-data';\nimport type { Box3, Scene, Vector3 } from 'three';\n\nexport declare interface ScenePluginHooks {\n updateBounds(bounds: Box3): void;\n\n clearScene(scene: Scene, uiScene: Scene): void;\n\n moveCameraEnd(position: Vector3): void;\n\n moveCameraStart(position: Vector3): void;\n\n needsUiScene(): boolean;\n}\n\nexport declare interface ScenePlugin extends ScenePluginHooks, Context {\n setScene(scene: Scene): void;\n\n setUiScene(uiScene: Scene): void;\n}\n\nexport class ScenePluginDefaultImplementation implements ScenePlugin {\n public _creator_: string;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public setScene(scene: Scene): void {\n //noop\n }\n\n public setUiScene(uiScene: Scene): void {\n //noop\n }\n\n public updateBounds(bounds: Box3): void {\n //noop\n }\n\n public clearScene(scene: Scene, uiScene: Scene): void {\n //noop\n }\n\n public moveCameraEnd(position: Vector3): void {\n //noop\n }\n\n public moveCameraStart(position: Vector3): void {\n //noop\n }\n\n public needsUiScene(): boolean {\n return false;\n }\n}\n\nexport default class PluginSystem implements Context, ScenePluginHooks {\n public _creator_: string;\n\n @inject\n private _initData: InitData;\n\n private _scene: Scene;\n private _uiScene: Scene;\n private _bounds: Box3;\n private _cameraPosition: Vector3;\n\n private _plugins: ScenePlugin[] = [];\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public async init(scene: Scene, uiScene: Scene, cameraPosition: Vector3) {\n this._scene = scene;\n this._uiScene = uiScene;\n this._cameraPosition = cameraPosition;\n const { bananaForScale } = this._initData;\n\n if (bananaForScale) {\n await import('./banana-for-scale').then(({ default: BananaForScale }) =>\n this._plugins.push(new BananaForScale(this._creator_)),\n );\n }\n\n this._plugins.forEach((plugin) => plugin.setScene(this._scene));\n this._plugins.forEach((plugin) => plugin.setUiScene(this._uiScene));\n this._plugins.forEach((plugin) => plugin.updateBounds(this._bounds));\n this._plugins.forEach((plugin) =>\n plugin.moveCameraEnd(this._cameraPosition),\n );\n }\n\n public addPlugin(plugin: ScenePlugin) {\n this._plugins.push(plugin);\n plugin.setScene(this._scene);\n plugin.setUiScene(this._uiScene);\n plugin.updateBounds(this._bounds);\n plugin.moveCameraEnd(this._cameraPosition);\n }\n\n public updateBounds(bounds: Box3) {\n this._bounds = bounds;\n this._plugins.forEach((plugin) => plugin.updateBounds(bounds));\n }\n\n public clearScene(scene: Scene, uiScene: Scene): void {\n this._plugins.forEach((plugin) => plugin.clearScene(scene, uiScene));\n }\n\n public getActivePlugins(): ScenePlugin[] {\n return this._plugins;\n }\n\n public getPlugin<T extends ScenePlugin>(type: any): T | null {\n for (let plugin of this._plugins) {\n if (plugin instanceof type) {\n return plugin as T;\n }\n }\n return null;\n }\n\n public moveCameraEnd(position: Vector3): void {\n this._cameraPosition = position;\n this._plugins.forEach((plugin) => plugin.moveCameraEnd(position));\n }\n\n public moveCameraStart(position: Vector3): void {\n this._cameraPosition = position;\n this._plugins.forEach((plugin) => plugin.moveCameraStart(position));\n }\n\n public needsUiScene(): boolean {\n return this._plugins\n .map((plugin) => plugin.needsUiScene())\n .reduce(\n (previousValue, currentValue) => previousValue || currentValue,\n false,\n );\n }\n}\n"],"mappings":";;AAwBA,IAAa,IAAb,MAAqE;CAGnE,YAAY,GAAiB;AAC3B,OAAK,YAAY;;CAGnB,SAAgB,GAAoB;CAIpC,WAAkB,GAAsB;CAIxC,aAAoB,GAAoB;CAIxC,WAAkB,GAAc,GAAsB;CAItD,cAAqB,GAAyB;CAI9C,gBAAuB,GAAyB;CAIhD,eAA+B;AAC7B,SAAO;;GAIU,IAArB,MAAuE;CAarE,YAAY,GAAiB;AAC3B,kBAHgC,EAAE,EAGlC,KAAK,YAAY;;CAGnB,MAAa,KAAK,GAAc,GAAgB,GAAyB;AAGvE,EAFA,KAAK,SAAS,GACd,KAAK,WAAW,GAChB,KAAK,kBAAkB;EACvB,IAAM,EAAE,sBAAmB,KAAK;AAWhC,EATI,KACF,MAAM,OAAO,mCAAsB,MAAM,EAAE,SAAS,QAClD,KAAK,SAAS,KAAK,IAAI,EAAe,KAAK,UAAU,CAAC,CACvD,EAGH,KAAK,SAAS,SAAS,MAAW,EAAO,SAAS,KAAK,OAAO,CAAC,EAC/D,KAAK,SAAS,SAAS,MAAW,EAAO,WAAW,KAAK,SAAS,CAAC,EACnE,KAAK,SAAS,SAAS,MAAW,EAAO,aAAa,KAAK,QAAQ,CAAC,EACpE,KAAK,SAAS,SAAS,MACrB,EAAO,cAAc,KAAK,gBAAgB,CAC3C;;CAGH,UAAiB,GAAqB;AAKpC,EAJA,KAAK,SAAS,KAAK,EAAO,EAC1B,EAAO,SAAS,KAAK,OAAO,EAC5B,EAAO,WAAW,KAAK,SAAS,EAChC,EAAO,aAAa,KAAK,QAAQ,EACjC,EAAO,cAAc,KAAK,gBAAgB;;CAG5C,aAAoB,GAAc;AAEhC,EADA,KAAK,UAAU,GACf,KAAK,SAAS,SAAS,MAAW,EAAO,aAAa,EAAO,CAAC;;CAGhE,WAAkB,GAAc,GAAsB;AACpD,OAAK,SAAS,SAAS,MAAW,EAAO,WAAW,GAAO,EAAQ,CAAC;;CAGtE,mBAAyC;AACvC,SAAO,KAAK;;CAGd,UAAwC,GAAqB;AAC3D,OAAK,IAAI,KAAU,KAAK,SACtB,KAAI,aAAkB,EACpB,QAAO;AAGX,SAAO;;CAGT,cAAqB,GAAyB;AAE5C,EADA,KAAK,kBAAkB,GACvB,KAAK,SAAS,SAAS,MAAW,EAAO,cAAc,EAAS,CAAC;;CAGnE,gBAAuB,GAAyB;AAE9C,EADA,KAAK,kBAAkB,GACvB,KAAK,SAAS,SAAS,MAAW,EAAO,gBAAgB,EAAS,CAAC;;CAGrE,eAA+B;AAC7B,SAAO,KAAK,SACT,KAAK,MAAW,EAAO,cAAc,CAAC,CACtC,QACE,GAAe,MAAiB,KAAiB,GAClD,GACD;;;GAhFJ,GAAA,EAAA,eAAA,OAAA,CAAA,EAAA,EAAA,WAAA,aAAA,KAAA,EAAA"}
@@ -1,6 +1,6 @@
1
- import { _n as e, cn as t, gn as n } from "./three.core-0KaTx8dm.mjs";
1
+ import { _n as e, ln as t, vn as n } from "./three.core-BTUCraWz.mjs";
2
2
  //#region packages/common-core/src/webgl/renderer/render-cache.ts
3
- var r = /* @__PURE__ */ new WeakMap(), i = (e, t) => Array.isArray(e) ? e.some((e) => i(e, t)) : e.transparent && e.opacity < t || e.alphaTest > 0, a = (e) => Array.isArray(e) ? e.some((e) => a(e)) : e instanceof n && e.transmission > 0, o = class {
3
+ var r = /* @__PURE__ */ new WeakMap(), i = (e, t) => Array.isArray(e) ? e.some((e) => i(e, t)) : e.transparent && e.opacity < t || e.alphaTest > 0, a = (t) => Array.isArray(t) ? t.some((e) => a(e)) : t instanceof e && t.transmission > 0, o = class {
4
4
  constructor(e) {
5
5
  this.needsUpdate = !0, this._cache = null, this._cache = e;
6
6
  }
@@ -100,8 +100,8 @@ var r = /* @__PURE__ */ new WeakMap(), i = (e, t) => Array.isArray(e) ? e.some((
100
100
  }
101
101
  addLineOrPoint(e) {}
102
102
  addObject(e) {}
103
- addMesh(t) {
104
- this._doNotWriteDepth && this._doNotWriteDepth(t) && t.material instanceof e && t.material.depthWrite && this._depthWriteCache.add(t.material);
103
+ addMesh(e) {
104
+ this._doNotWriteDepth && this._doNotWriteDepth(e) && e.material instanceof n && e.material.depthWrite && this._depthWriteCache.add(e.material);
105
105
  }
106
106
  onBeforeRender() {
107
107
  this._depthWriteCache.forEach((e) => {
@@ -147,4 +147,4 @@ var r = /* @__PURE__ */ new WeakMap(), i = (e, t) => Array.isArray(e) ? e.some((
147
147
  //#endregion
148
148
  export { a, c as i, u as n, i as o, s as r, r as s, l as t };
149
149
 
150
- //# sourceMappingURL=render-cache-DCPIQbO1.mjs.map
150
+ //# sourceMappingURL=render-cache-CPppt7Rd.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-cache-DCPIQbO1.mjs","names":[],"sources":["../../packages/common-core/src/webgl/renderer/render-cache.ts"],"sourcesContent":["import type { Material, Object3D } from 'three';\nimport { Mesh, MeshPhysicalMaterial } from 'three';\nimport { MeshStandardMaterial } from 'three';\n\nexport const originalHighlightMaterials = new WeakMap<Material, Material>();\n\nexport const isTransparentMaterial = (\n material: Material | Material[],\n threshold: number,\n): boolean => {\n if (Array.isArray(material)) {\n return material.some((m) => isTransparentMaterial(m, threshold));\n }\n return (\n (material.transparent && material.opacity < threshold) ||\n material.alphaTest > 0\n );\n};\n\nexport const isTransmissiveMaterial = (\n material: Material | Material[],\n): boolean => {\n if (Array.isArray(material)) {\n return material.some((m) => isTransmissiveMaterial(m));\n }\n return material instanceof MeshPhysicalMaterial && material.transmission > 0;\n};\n\nexport interface RenderCache {\n dispose(): void;\n clear(): void;\n addLineOrPoint(object3d: Object3D): void;\n addMesh(mesh: Mesh): void;\n addObject(object3d: Object3D): void;\n onBeforeRender(): void;\n onAfterRender(): void;\n}\n\nexport interface ThreeObject3d {\n isLine?: boolean;\n isPoints?: boolean;\n isMesh?: boolean;\n}\n\nclass RenderCacheMapItem {\n public needsUpdate: boolean = true;\n private _cache: RenderCache | null = null;\n\n constructor(cache: RenderCache) {\n this._cache = cache;\n }\n\n public dispose() {\n this._cache?.dispose();\n }\n\n public clear() {\n this._cache?.clear();\n this.needsUpdate = true;\n }\n\n public update(object3d: Object3D) {\n if (!this.needsUpdate || !this._cache) {\n return;\n }\n object3d.traverse((object: Object3D | ThreeObject3d) => {\n if (\n (object as ThreeObject3d).isLine ||\n (object as ThreeObject3d).isPoints\n ) {\n this._cache?.addLineOrPoint(object as Object3D);\n } else if ((object as ThreeObject3d).isMesh) {\n this._cache?.addMesh(object as Mesh);\n } else {\n this._cache?.addObject(object as Object3D);\n }\n });\n this.needsUpdate = false;\n }\n\n public onBeforeRender(): void {\n this._cache?.onBeforeRender();\n }\n\n public onAfterRender(): void {\n this._cache?.onAfterRender();\n }\n}\n\nexport type CacheKey = any;\n\nexport class RenderCacheManager {\n private _cacheMap: Map<CacheKey, RenderCacheMapItem> = new Map();\n\n public dispose() {\n this._cacheMap.forEach((cache) => {\n cache.dispose();\n });\n }\n\n public registerCache(key: CacheKey, cache: RenderCache) {\n this._cacheMap.set(key, new RenderCacheMapItem(cache));\n }\n\n public clearCache() {\n this._cacheMap.forEach((cache) => {\n cache.clear();\n });\n }\n\n public clearObjectCache(key: CacheKey) {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.clear();\n }\n }\n\n public onBeforeRender(key: CacheKey, object3d: Object3D): void {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.update(object3d);\n cache.onBeforeRender();\n }\n }\n\n public onAfterRender(key: CacheKey): void {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.onAfterRender();\n }\n }\n\n public render(key: CacheKey, object3d: Object3D, renderMethod: () => void) {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.update(object3d);\n cache.onBeforeRender();\n }\n try {\n renderMethod();\n } finally {\n if (cache) {\n cache.onAfterRender();\n }\n }\n }\n}\n\nexport class VisibilityRenderCache implements RenderCache {\n // the key set is the objects to hide, the value is only meaningful between\n // onBeforeRender and onAfterRender and is refreshed in place every pass\n private _visibilityToRestore: Map<Object3D, boolean> = new Map();\n private _isObjectInvisible?: (object: any) => boolean;\n\n constructor(isObjectInvisible?: (object: any) => boolean) {\n this._isObjectInvisible = isObjectInvisible;\n }\n\n public dispose(): void {\n this.clear();\n }\n\n public clear(): void {\n this._visibilityToRestore.clear();\n }\n\n public addLineOrPoint(object3d: Object3D): void {\n this._visibilityToRestore.set(object3d, object3d.visible);\n }\n\n public addMesh(mesh: Mesh): void {\n if (this._isObjectInvisible && this._isObjectInvisible(mesh)) {\n this._visibilityToRestore.set(mesh, mesh.visible);\n }\n }\n\n public addObject(object3d: Object3D): void {\n if (this._isObjectInvisible && this._isObjectInvisible(object3d)) {\n this._visibilityToRestore.set(object3d, object3d.visible);\n }\n }\n\n public onBeforeRender(): void {\n this._visibilityToRestore.forEach((_visible: boolean, object: Object3D) => {\n this._visibilityToRestore.set(object, object.visible);\n object.visible = false;\n });\n }\n\n public onAfterRender(): void {\n this._visibilityToRestore.forEach((visible: boolean, object: Object3D) => {\n object.visible = visible;\n });\n }\n}\n\nexport class DepthWriteRenderCache {\n private _depthWriteCache = new Set<MeshStandardMaterial>();\n private _doNotWriteDepth?: (mesh: Mesh) => boolean;\n\n constructor(doNotWriteDepth?: (object: any) => boolean) {\n this._doNotWriteDepth = doNotWriteDepth;\n }\n\n public dispose(): void {\n this._depthWriteCache.clear();\n }\n\n public clear(): void {\n this._depthWriteCache.clear();\n }\n\n public addLineOrPoint(_: Object3D): void {\n // do nothing\n }\n public addObject(_: Object3D): void {\n // do nothing\n }\n\n public addMesh(mesh: Mesh): void {\n if (\n this._doNotWriteDepth &&\n this._doNotWriteDepth(mesh) &&\n mesh.material instanceof MeshStandardMaterial &&\n mesh.material.depthWrite\n ) {\n this._depthWriteCache.add(mesh.material);\n }\n }\n\n public onBeforeRender(): void {\n this._depthWriteCache.forEach((material: MeshStandardMaterial) => {\n material.depthWrite = false;\n });\n }\n\n public onAfterRender(): void {\n this._depthWriteCache.forEach((material: MeshStandardMaterial) => {\n material.depthWrite = true;\n });\n }\n}\n\nexport interface ObjectCacheData {\n visible?: boolean;\n castShadow?: boolean;\n receiveShadow?: boolean;\n material?: Material | Material[];\n}\n\ninterface ObjectCacheEntry {\n originalObjectData: ObjectCacheData;\n updateObjectData: ObjectCacheData;\n}\n\nexport abstract class ObjectRenderCache implements RenderCache {\n private _objectCache = new Map<Object3D, ObjectCacheEntry>();\n\n public abstract dispose(): void;\n public abstract addLineOrPoint(object3d: Object3D): void;\n public abstract addMesh(mesh: Mesh): void;\n public abstract addObject(object3d: Object3D): void;\n\n public clear(): void {\n this._objectCache.clear();\n }\n\n public onBeforeRender(): void {\n this._objectCache.forEach((data: ObjectCacheEntry, object: Object3D) => {\n ObjectRenderCache._writeObjectDataInto(object, data.originalObjectData);\n this._updateObject(object, data.updateObjectData);\n });\n }\n\n public onAfterRender(): void {\n this._objectCache.forEach((data: ObjectCacheEntry, object: Object3D) => {\n this._updateObject(object, data.originalObjectData);\n });\n }\n\n public addToCache(\n object: Object3D | Mesh,\n updateObjectData: ObjectCacheData,\n ): void {\n const originalObjectData: ObjectCacheData = {};\n ObjectRenderCache._writeObjectDataInto(object, originalObjectData);\n this._objectCache.set(object, { originalObjectData, updateObjectData });\n }\n\n private static _writeObjectDataInto(\n object: Object3D | Mesh,\n target: ObjectCacheData,\n ): void {\n target.visible = object.visible;\n target.castShadow = object.castShadow;\n target.receiveShadow =\n object instanceof Mesh ? object.receiveShadow : undefined;\n target.material = object instanceof Mesh ? object.material : undefined;\n }\n\n private _updateObject(object: Object3D, objectData: ObjectCacheData) {\n if (objectData.visible !== undefined) {\n object.visible = objectData.visible;\n }\n if (objectData.castShadow !== undefined) {\n object.castShadow = objectData.castShadow;\n }\n if (object instanceof Mesh && objectData.receiveShadow !== undefined) {\n (object as Mesh).receiveShadow = objectData.receiveShadow;\n }\n if (object instanceof Mesh && objectData.material !== undefined) {\n (object as Mesh).material = objectData.material as Material;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"render-cache-CPppt7Rd.mjs","names":[],"sources":["../../packages/common-core/src/webgl/renderer/render-cache.ts"],"sourcesContent":["import type { Material, Object3D } from 'three';\nimport { Mesh, MeshPhysicalMaterial } from 'three';\nimport { MeshStandardMaterial } from 'three';\n\nexport const originalHighlightMaterials = new WeakMap<Material, Material>();\n\nexport const isTransparentMaterial = (\n material: Material | Material[],\n threshold: number,\n): boolean => {\n if (Array.isArray(material)) {\n return material.some((m) => isTransparentMaterial(m, threshold));\n }\n return (\n (material.transparent && material.opacity < threshold) ||\n material.alphaTest > 0\n );\n};\n\nexport const isTransmissiveMaterial = (\n material: Material | Material[],\n): boolean => {\n if (Array.isArray(material)) {\n return material.some((m) => isTransmissiveMaterial(m));\n }\n return material instanceof MeshPhysicalMaterial && material.transmission > 0;\n};\n\nexport interface RenderCache {\n dispose(): void;\n clear(): void;\n addLineOrPoint(object3d: Object3D): void;\n addMesh(mesh: Mesh): void;\n addObject(object3d: Object3D): void;\n onBeforeRender(): void;\n onAfterRender(): void;\n}\n\nexport interface ThreeObject3d {\n isLine?: boolean;\n isPoints?: boolean;\n isMesh?: boolean;\n}\n\nclass RenderCacheMapItem {\n public needsUpdate: boolean = true;\n private _cache: RenderCache | null = null;\n\n constructor(cache: RenderCache) {\n this._cache = cache;\n }\n\n public dispose() {\n this._cache?.dispose();\n }\n\n public clear() {\n this._cache?.clear();\n this.needsUpdate = true;\n }\n\n public update(object3d: Object3D) {\n if (!this.needsUpdate || !this._cache) {\n return;\n }\n object3d.traverse((object: Object3D | ThreeObject3d) => {\n if (\n (object as ThreeObject3d).isLine ||\n (object as ThreeObject3d).isPoints\n ) {\n this._cache?.addLineOrPoint(object as Object3D);\n } else if ((object as ThreeObject3d).isMesh) {\n this._cache?.addMesh(object as Mesh);\n } else {\n this._cache?.addObject(object as Object3D);\n }\n });\n this.needsUpdate = false;\n }\n\n public onBeforeRender(): void {\n this._cache?.onBeforeRender();\n }\n\n public onAfterRender(): void {\n this._cache?.onAfterRender();\n }\n}\n\nexport type CacheKey = any;\n\nexport class RenderCacheManager {\n private _cacheMap: Map<CacheKey, RenderCacheMapItem> = new Map();\n\n public dispose() {\n this._cacheMap.forEach((cache) => {\n cache.dispose();\n });\n }\n\n public registerCache(key: CacheKey, cache: RenderCache) {\n this._cacheMap.set(key, new RenderCacheMapItem(cache));\n }\n\n public clearCache() {\n this._cacheMap.forEach((cache) => {\n cache.clear();\n });\n }\n\n public clearObjectCache(key: CacheKey) {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.clear();\n }\n }\n\n public onBeforeRender(key: CacheKey, object3d: Object3D): void {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.update(object3d);\n cache.onBeforeRender();\n }\n }\n\n public onAfterRender(key: CacheKey): void {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.onAfterRender();\n }\n }\n\n public render(key: CacheKey, object3d: Object3D, renderMethod: () => void) {\n const cache = this._cacheMap.get(key);\n if (cache) {\n cache.update(object3d);\n cache.onBeforeRender();\n }\n try {\n renderMethod();\n } finally {\n if (cache) {\n cache.onAfterRender();\n }\n }\n }\n}\n\nexport class VisibilityRenderCache implements RenderCache {\n // the key set is the objects to hide, the value is only meaningful between\n // onBeforeRender and onAfterRender and is refreshed in place every pass\n private _visibilityToRestore: Map<Object3D, boolean> = new Map();\n private _isObjectInvisible?: (object: any) => boolean;\n\n constructor(isObjectInvisible?: (object: any) => boolean) {\n this._isObjectInvisible = isObjectInvisible;\n }\n\n public dispose(): void {\n this.clear();\n }\n\n public clear(): void {\n this._visibilityToRestore.clear();\n }\n\n public addLineOrPoint(object3d: Object3D): void {\n this._visibilityToRestore.set(object3d, object3d.visible);\n }\n\n public addMesh(mesh: Mesh): void {\n if (this._isObjectInvisible && this._isObjectInvisible(mesh)) {\n this._visibilityToRestore.set(mesh, mesh.visible);\n }\n }\n\n public addObject(object3d: Object3D): void {\n if (this._isObjectInvisible && this._isObjectInvisible(object3d)) {\n this._visibilityToRestore.set(object3d, object3d.visible);\n }\n }\n\n public onBeforeRender(): void {\n this._visibilityToRestore.forEach((_visible: boolean, object: Object3D) => {\n this._visibilityToRestore.set(object, object.visible);\n object.visible = false;\n });\n }\n\n public onAfterRender(): void {\n this._visibilityToRestore.forEach((visible: boolean, object: Object3D) => {\n object.visible = visible;\n });\n }\n}\n\nexport class DepthWriteRenderCache {\n private _depthWriteCache = new Set<MeshStandardMaterial>();\n private _doNotWriteDepth?: (mesh: Mesh) => boolean;\n\n constructor(doNotWriteDepth?: (object: any) => boolean) {\n this._doNotWriteDepth = doNotWriteDepth;\n }\n\n public dispose(): void {\n this._depthWriteCache.clear();\n }\n\n public clear(): void {\n this._depthWriteCache.clear();\n }\n\n public addLineOrPoint(_: Object3D): void {\n // do nothing\n }\n public addObject(_: Object3D): void {\n // do nothing\n }\n\n public addMesh(mesh: Mesh): void {\n if (\n this._doNotWriteDepth &&\n this._doNotWriteDepth(mesh) &&\n mesh.material instanceof MeshStandardMaterial &&\n mesh.material.depthWrite\n ) {\n this._depthWriteCache.add(mesh.material);\n }\n }\n\n public onBeforeRender(): void {\n this._depthWriteCache.forEach((material: MeshStandardMaterial) => {\n material.depthWrite = false;\n });\n }\n\n public onAfterRender(): void {\n this._depthWriteCache.forEach((material: MeshStandardMaterial) => {\n material.depthWrite = true;\n });\n }\n}\n\nexport interface ObjectCacheData {\n visible?: boolean;\n castShadow?: boolean;\n receiveShadow?: boolean;\n material?: Material | Material[];\n}\n\ninterface ObjectCacheEntry {\n originalObjectData: ObjectCacheData;\n updateObjectData: ObjectCacheData;\n}\n\nexport abstract class ObjectRenderCache implements RenderCache {\n private _objectCache = new Map<Object3D, ObjectCacheEntry>();\n\n public abstract dispose(): void;\n public abstract addLineOrPoint(object3d: Object3D): void;\n public abstract addMesh(mesh: Mesh): void;\n public abstract addObject(object3d: Object3D): void;\n\n public clear(): void {\n this._objectCache.clear();\n }\n\n public onBeforeRender(): void {\n this._objectCache.forEach((data: ObjectCacheEntry, object: Object3D) => {\n ObjectRenderCache._writeObjectDataInto(object, data.originalObjectData);\n this._updateObject(object, data.updateObjectData);\n });\n }\n\n public onAfterRender(): void {\n this._objectCache.forEach((data: ObjectCacheEntry, object: Object3D) => {\n this._updateObject(object, data.originalObjectData);\n });\n }\n\n public addToCache(\n object: Object3D | Mesh,\n updateObjectData: ObjectCacheData,\n ): void {\n const originalObjectData: ObjectCacheData = {};\n ObjectRenderCache._writeObjectDataInto(object, originalObjectData);\n this._objectCache.set(object, { originalObjectData, updateObjectData });\n }\n\n private static _writeObjectDataInto(\n object: Object3D | Mesh,\n target: ObjectCacheData,\n ): void {\n target.visible = object.visible;\n target.castShadow = object.castShadow;\n target.receiveShadow =\n object instanceof Mesh ? object.receiveShadow : undefined;\n target.material = object instanceof Mesh ? object.material : undefined;\n }\n\n private _updateObject(object: Object3D, objectData: ObjectCacheData) {\n if (objectData.visible !== undefined) {\n object.visible = objectData.visible;\n }\n if (objectData.castShadow !== undefined) {\n object.castShadow = objectData.castShadow;\n }\n if (object instanceof Mesh && objectData.receiveShadow !== undefined) {\n (object as Mesh).receiveShadow = objectData.receiveShadow;\n }\n if (object instanceof Mesh && objectData.material !== undefined) {\n (object as Mesh).material = objectData.material as Material;\n }\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { gn as e } from "./three.core-0KaTx8dm.mjs";
1
+ import { _n as e } from "./three.core-BTUCraWz.mjs";
2
2
  //#region packages/common-core/src/webgl/render-order.ts
3
3
  var t = {
4
4
  DIMENSION_LINE: 0,
@@ -23,4 +23,4 @@ var t = {
23
23
  //#endregion
24
24
  export { n, t };
25
25
 
26
- //# sourceMappingURL=render-order-BPF2wDMw.mjs.map
26
+ //# sourceMappingURL=render-order-a0QAbB7Q.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-order-BPF2wDMw.mjs","names":[],"sources":["../../packages/common-core/src/webgl/render-order.ts"],"sourcesContent":["// mostly relevant for transparent/translucent objects\n// lower renderOrder is drawn before render order (if no depth test is used)\n// (please keep this sorted)\nimport type { Mesh } from 'three';\nimport { MeshPhysicalMaterial } from 'three';\n\nexport const MESH_RENDER_ORDER = {\n DIMENSION_LINE: 0,\n DIMENSION_LABEL: 1,\n SHADOW_GROUND_PLANE: 1,\n DOCKING_PREVIEW_MESH: 1,\n DOCKING_PREVIEW_LINE: 1,\n COMPONENT_MESH: 2, // default roomle component mesh\n TRANSMISSIVE_MATERIAL: 3,\n LOADING_MESH: 4,\n BOUNDING_BOX_MESH: 4,\n DOCKLINE_MESH: 4,\n DOCKLINE_BOUNDING_LINE: 4,\n WALL: 5,\n PLANNER_DIMENSION_LINE: 10,\n PLANNER_DIMENSION_LABEL: 11,\n CAMERA_FACING_HIGHLIGHT: 27,\n CONSTRUCTION_INDICATOR_THICKNESS: 28,\n CONSTRUCTION_INDICATOR_GROUND: 29,\n CONSTRUCTION_INDICATOR_LINE: 30,\n} as const;\n\nexport const decideMeshRenderOrder = (mesh: Mesh): number => {\n const hasTransmissiveMaterial =\n mesh.material instanceof MeshPhysicalMaterial &&\n mesh.material.transmission > 0;\n\n return hasTransmissiveMaterial\n ? MESH_RENDER_ORDER.TRANSMISSIVE_MATERIAL\n : MESH_RENDER_ORDER.COMPONENT_MESH;\n};\n"],"mappings":";;AAMA,IAAa,IAAoB;CAC/B,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;CACtB,gBAAgB;CAChB,uBAAuB;CACvB,cAAc;CACd,mBAAmB;CACnB,eAAe;CACf,wBAAwB;CACxB,MAAM;CACN,wBAAwB;CACxB,yBAAyB;CACzB,yBAAyB;CACzB,kCAAkC;CAClC,+BAA+B;CAC/B,6BAA6B;CAC9B,EAEY,KAAyB,MAElC,EAAK,oBAAoB,KACzB,EAAK,SAAS,eAAe,IAG3B,EAAkB,wBAClB,EAAkB"}
1
+ {"version":3,"file":"render-order-a0QAbB7Q.mjs","names":[],"sources":["../../packages/common-core/src/webgl/render-order.ts"],"sourcesContent":["// mostly relevant for transparent/translucent objects\n// lower renderOrder is drawn before render order (if no depth test is used)\n// (please keep this sorted)\nimport type { Mesh } from 'three';\nimport { MeshPhysicalMaterial } from 'three';\n\nexport const MESH_RENDER_ORDER = {\n DIMENSION_LINE: 0,\n DIMENSION_LABEL: 1,\n SHADOW_GROUND_PLANE: 1,\n DOCKING_PREVIEW_MESH: 1,\n DOCKING_PREVIEW_LINE: 1,\n COMPONENT_MESH: 2, // default roomle component mesh\n TRANSMISSIVE_MATERIAL: 3,\n LOADING_MESH: 4,\n BOUNDING_BOX_MESH: 4,\n DOCKLINE_MESH: 4,\n DOCKLINE_BOUNDING_LINE: 4,\n WALL: 5,\n PLANNER_DIMENSION_LINE: 10,\n PLANNER_DIMENSION_LABEL: 11,\n CAMERA_FACING_HIGHLIGHT: 27,\n CONSTRUCTION_INDICATOR_THICKNESS: 28,\n CONSTRUCTION_INDICATOR_GROUND: 29,\n CONSTRUCTION_INDICATOR_LINE: 30,\n} as const;\n\nexport const decideMeshRenderOrder = (mesh: Mesh): number => {\n const hasTransmissiveMaterial =\n mesh.material instanceof MeshPhysicalMaterial &&\n mesh.material.transmission > 0;\n\n return hasTransmissiveMaterial\n ? MESH_RENDER_ORDER.TRANSMISSIVE_MATERIAL\n : MESH_RENDER_ORDER.COMPONENT_MESH;\n};\n"],"mappings":";;AAMA,IAAa,IAAoB;CAC/B,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;CACtB,gBAAgB;CAChB,uBAAuB;CACvB,cAAc;CACd,mBAAmB;CACnB,eAAe;CACf,wBAAwB;CACxB,MAAM;CACN,wBAAwB;CACxB,yBAAyB;CACzB,yBAAyB;CACzB,kCAAkC;CAClC,+BAA+B;CAC/B,6BAA6B;CAC9B,EAEY,KAAyB,MAElC,EAAK,oBAAoB,KACzB,EAAK,SAAS,eAAe,IAG3B,EAAkB,wBAClB,EAAkB"}
@@ -6329,7 +6329,6 @@ export declare class PlannerSceneEventHandler extends SceneEventHandler<SceneEve
6329
6329
  private _isMeasurementLineDrawActive;
6330
6330
  private _state;
6331
6331
  private _drawingGroup;
6332
- private _isBusyLoading;
6333
6332
  private _continuousDrawingHelper;
6334
6333
  private _kernelZoomFactor;
6335
6334
  private _currentPlanMeasure;
@@ -6377,7 +6376,6 @@ export declare class PlannerSceneEventHandler extends SceneEventHandler<SceneEve
6377
6376
  private _hoverMove;
6378
6377
  private _isHiddenConstructionElement;
6379
6378
  private _isHoveredObjectNonDraggable;
6380
- setLoadingCursor(isLoading: boolean): void;
6381
6379
  private _setCursor;
6382
6380
  setCamera(camera: Camera): void;
6383
6381
  setObject(object: Object3D, secondaryObject?: Object3D): void;