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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) 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-ClfVJAUd.mjs} +2 -2
  23. package/lib/{api-Bznmr-xZ.mjs.map → api-ClfVJAUd.mjs.map} +1 -1
  24. package/lib/asset-loader.worker-CzI1oyTY.mjs.map +1 -1
  25. package/lib/{banana-for-scale-DpKXNBt_.mjs → banana-for-scale-Cf41yXTl.mjs} +3 -3
  26. package/lib/{banana-for-scale-DpKXNBt_.mjs.map → banana-for-scale-Cf41yXTl.mjs.map} +1 -1
  27. package/lib/budgeteer.sw-D80jTmYa.mjs.map +1 -1
  28. package/lib/{common-utils-DbL4tku0.mjs → common-utils-OTJQGohe.mjs} +3 -3
  29. package/lib/common-utils-OTJQGohe.mjs.map +1 -0
  30. package/lib/{component-dimensioning-BaUqwqYJ.mjs → component-dimensioning-yPK46Y5o.mjs} +26 -26
  31. package/lib/{component-dimensioning-BaUqwqYJ.mjs.map → component-dimensioning-yPK46Y5o.mjs.map} +1 -1
  32. package/lib/{component-raycast-helper-4i8b4E5B.mjs → component-raycast-helper-CnpnRaFg.mjs} +15 -15
  33. package/lib/{component-raycast-helper-4i8b4E5B.mjs.map → component-raycast-helper-CnpnRaFg.mjs.map} +1 -1
  34. package/lib/{configurator-CDw_c6tB.mjs → configurator-BM31Kt-5.mjs} +4 -4
  35. package/lib/{configurator-CDw_c6tB.mjs.map → configurator-BM31Kt-5.mjs.map} +1 -1
  36. package/lib/configurator-CRQg04Bp.mjs +2 -0
  37. package/lib/{continuous-drawing-helper-DqHIR_qF.mjs → continuous-drawing-helper-CTfGRTfH.mjs} +3 -3
  38. package/lib/{continuous-drawing-helper-DqHIR_qF.mjs.map → continuous-drawing-helper-CTfGRTfH.mjs.map} +1 -1
  39. package/lib/dimensioning-helper-CQlesi-m.mjs +2 -0
  40. package/lib/{dimensioning-helper-CGPjS2hW.mjs → dimensioning-helper-DSlkLDmx.mjs} +42 -36
  41. package/lib/dimensioning-helper-DSlkLDmx.mjs.map +1 -0
  42. package/lib/{glb-viewer-B-Zr743e.mjs → glb-viewer-B2si39v2.mjs} +33 -33
  43. package/lib/{glb-viewer-B-Zr743e.mjs.map → glb-viewer-B2si39v2.mjs.map} +1 -1
  44. package/lib/glb-viewer-DWybhP87.mjs +2 -0
  45. package/lib/{highlight-coordinator-4gkjde82.mjs → highlight-coordinator-DU6oFunq.mjs} +6 -6
  46. package/lib/{highlight-coordinator-4gkjde82.mjs.map → highlight-coordinator-DU6oFunq.mjs.map} +1 -1
  47. package/lib/{homag-intelligence-D7S7r-Gc.mjs → homag-intelligence-CSBo-iks.mjs} +3 -3
  48. package/lib/{homag-intelligence-D7S7r-Gc.mjs.map → homag-intelligence-CSBo-iks.mjs.map} +1 -1
  49. package/lib/{hosek-wilkie-sky-iMar2iw-.mjs → hosek-wilkie-sky-DmTvnxMA.mjs} +33 -33
  50. package/lib/{hosek-wilkie-sky-iMar2iw-.mjs.map → hosek-wilkie-sky-DmTvnxMA.mjs.map} +1 -1
  51. package/lib/{imos-ix-poc-export-helper-CyGqK7nu.mjs → imos-ix-poc-export-helper-BGN97m8W.mjs} +3 -3
  52. package/lib/{imos-ix-poc-export-helper-CyGqK7nu.mjs.map → imos-ix-poc-export-helper-BGN97m8W.mjs.map} +1 -1
  53. package/lib/kernel-BWfRHWkW.mjs.map +1 -1
  54. package/lib/{kernel-utils-BvatnA7U.mjs → kernel-utils-BYKmP0mf.mjs} +13 -13
  55. package/lib/{kernel-utils-BvatnA7U.mjs.map → kernel-utils-BYKmP0mf.mjs.map} +1 -1
  56. package/lib/{material-viewer-CTsSfTfL.mjs → material-viewer-C2Pj4-II.mjs} +18 -18
  57. package/lib/{material-viewer-CTsSfTfL.mjs.map → material-viewer-C2Pj4-II.mjs.map} +1 -1
  58. package/lib/{packages-BXAZEcKa.mjs → packages-C0xavGqP.mjs} +5 -5
  59. package/lib/{packages-BXAZEcKa.mjs.map → packages-C0xavGqP.mjs.map} +1 -1
  60. package/lib/{planner-jvLAnYww.mjs → planner-C1KkZRGk.mjs} +3 -3
  61. package/lib/{planner-jvLAnYww.mjs.map → planner-C1KkZRGk.mjs.map} +1 -1
  62. package/lib/planner-DJE5aZXG.mjs +2 -0
  63. package/lib/{plugin-system-CRaC04G5.mjs → plugin-system-CPf99Zkf.mjs} +2 -2
  64. package/lib/{plugin-system-CRaC04G5.mjs.map → plugin-system-CPf99Zkf.mjs.map} +1 -1
  65. package/lib/{render-cache-DCPIQbO1.mjs → render-cache-CPppt7Rd.mjs} +5 -5
  66. package/lib/{render-cache-DCPIQbO1.mjs.map → render-cache-CPppt7Rd.mjs.map} +1 -1
  67. package/lib/{render-order-BPF2wDMw.mjs → render-order-a0QAbB7Q.mjs} +2 -2
  68. package/lib/{render-order-BPF2wDMw.mjs.map → render-order-a0QAbB7Q.mjs.map} +1 -1
  69. package/lib/roomle-headless.d.ts +13 -11
  70. package/lib/roomle-headless.js +14 -14
  71. package/lib/{roomle-renderer-Ato6RMrd.mjs → roomle-renderer-UJINLYxS.mjs} +2 -2
  72. package/lib/{roomle-renderer-Ato6RMrd.mjs.map → roomle-renderer-UJINLYxS.mjs.map} +1 -1
  73. package/lib/{roomle-sdk-CBwhwX_e.mjs → roomle-sdk-BhHLCbgP.mjs} +1747 -1729
  74. package/lib/roomle-sdk-BhHLCbgP.mjs.map +1 -0
  75. package/lib/roomle-sdk.d.ts +13 -11
  76. package/lib/roomle-sdk.js +7 -7
  77. package/lib/{roomle-webgpu-renderer-BfZKcXSz.mjs → roomle-webgpu-renderer-BSvxbopA.mjs} +900 -707
  78. package/lib/roomle-webgpu-renderer-BSvxbopA.mjs.map +1 -0
  79. package/lib/{scene-renderer-BHYZac3H.mjs → scene-renderer--DzrpIl_.mjs} +309 -309
  80. package/lib/{scene-renderer-BHYZac3H.mjs.map → scene-renderer--DzrpIl_.mjs.map} +1 -1
  81. package/lib/{script-loader-CvnG6LgL.mjs → script-loader-BHniYj5b.mjs} +2 -2
  82. package/lib/{script-loader-CvnG6LgL.mjs.map → script-loader-BHniYj5b.mjs.map} +1 -1
  83. package/lib/{shading-settings-BBhR7KcS.mjs → shading-settings-6v-7O_Sz.mjs} +49 -49
  84. package/lib/{shading-settings-BBhR7KcS.mjs.map → shading-settings-6v-7O_Sz.mjs.map} +1 -1
  85. package/lib/src-6KtBPZXp.mjs +2 -0
  86. package/lib/{src-HhklrVDg.mjs → src-Dg0wYIom.mjs} +150 -150
  87. package/lib/{src-HhklrVDg.mjs.map → src-Dg0wYIom.mjs.map} +1 -1
  88. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
  89. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.d.ts +4 -1
  90. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.d.ts +5 -0
  91. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
  92. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  93. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
  94. package/lib/{stats-helper-PndcZCzL.mjs → stats-helper-DYjPPDnz.mjs} +2 -2
  95. package/lib/{stats-helper-PndcZCzL.mjs.map → stats-helper-DYjPPDnz.mjs.map} +1 -1
  96. package/lib/{three.core-0KaTx8dm.mjs → three.core-BTUCraWz.mjs} +976 -884
  97. package/lib/three.core-BTUCraWz.mjs.map +1 -0
  98. package/lib/{three.module-dym6j3lO.mjs → three.module-DUSFrLM6.mjs} +1789 -1739
  99. package/lib/three.module-DUSFrLM6.mjs.map +1 -0
  100. package/lib/three.tsl-De6A-G56.mjs +158 -0
  101. package/lib/three.tsl-De6A-G56.mjs.map +1 -0
  102. package/lib/three.tsl-DtfvggFX.mjs +2 -0
  103. package/lib/three.webgpu-B1OhMci_.mjs +3 -0
  104. package/lib/{three.webgpu-D3nSEIjD.mjs → three.webgpu-wPiwbpFM.mjs} +5806 -4926
  105. package/lib/three.webgpu-wPiwbpFM.mjs.map +1 -0
  106. package/lib/{threejs-utils-v1uOvccg.mjs → threejs-utils-lVSsgAiQ.mjs} +68 -68
  107. package/lib/{threejs-utils-v1uOvccg.mjs.map → threejs-utils-lVSsgAiQ.mjs.map} +1 -1
  108. package/lib/{tools-core-B29U-88K.mjs → tools-core-QUdVgS4n.mjs} +3 -3
  109. package/lib/{tools-core-B29U-88K.mjs.map → tools-core-QUdVgS4n.mjs.map} +1 -1
  110. package/lib/{webgpu-BHAP6BLI.mjs → webgpu-BxYJfBjz.mjs} +555 -555
  111. package/lib/{webgpu-BHAP6BLI.mjs.map → webgpu-BxYJfBjz.mjs.map} +1 -1
  112. package/package.json +5 -5
  113. package/lib/BufferGeometry-Bl5whHAB.mjs.map +0 -1
  114. package/lib/GLTFExporter-yQ7mMauu.mjs.map +0 -1
  115. package/lib/GaussianBlurNode-DNBEf5-n.mjs +0 -59
  116. package/lib/GaussianBlurNode-DNBEf5-n.mjs.map +0 -1
  117. package/lib/Object3D-BHdngbxB.mjs.map +0 -1
  118. package/lib/PointLightHelper-CuPSBuDU.mjs.map +0 -1
  119. package/lib/SpotLightHelper-m-Rh8vGU.mjs.map +0 -1
  120. package/lib/USDZExporter-MdkuT226.mjs.map +0 -1
  121. package/lib/Vector4-C7TlIAyy.mjs.map +0 -1
  122. package/lib/common-utils-DbL4tku0.mjs.map +0 -1
  123. package/lib/configurator-BYQdWEvf.mjs +0 -2
  124. package/lib/dimensioning-helper-CGPjS2hW.mjs.map +0 -1
  125. package/lib/dimensioning-helper-VndKlIXS.mjs +0 -2
  126. package/lib/glb-viewer-Bd5Xn6Oq.mjs +0 -2
  127. package/lib/planner-DMk3T4ts.mjs +0 -2
  128. package/lib/roomle-sdk-CBwhwX_e.mjs.map +0 -1
  129. package/lib/roomle-webgpu-renderer-BfZKcXSz.mjs.map +0 -1
  130. package/lib/src-Bbq3Hqzn.mjs +0 -2
  131. package/lib/three.core-0KaTx8dm.mjs.map +0 -1
  132. package/lib/three.module-dym6j3lO.mjs.map +0 -1
  133. package/lib/three.tsl-BTc4fg8T.mjs +0 -2
  134. package/lib/three.tsl-Cf0-sCqB.mjs +0 -152
  135. package/lib/three.tsl-Cf0-sCqB.mjs.map +0 -1
  136. package/lib/three.webgpu-ClICiWlK.mjs +0 -3
  137. package/lib/three.webgpu-D3nSEIjD.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"homag-intelligence-D7S7r-Gc.mjs","names":["native"],"sources":["../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../packages/homag-intelligence/src/callbacks.ts","../../packages/homag-intelligence/src/orders.ts","../../packages/homag-intelligence/src/debug-logging.ts","../../packages/homag-intelligence/src/homag-intelligence.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFNckMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFNekQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixHQUFHO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQU8xQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMifQ==","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm5nLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm5nLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsSUFBSSxlQUEwRCxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsR0FBRztJQUV6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztRQUNKLENBQUM7UUFFRCxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMifQ==","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQ2QsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkYsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDIn0=","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakQsU0FBUyxFQUFFLENBQUMsT0FBeUIsRUFBRSxHQUFnQixFQUFFLE1BQWU7SUFDdEUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFHdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBR2xDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlLEVBQUUsQ0FBQyJ9","import type { GlueLogic } from './glue-logic';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { BASE_CONTEXT } from '../../common-core/src/main';\nimport type { SELECTION_MODE } from '../../configurator-core/src/utils/selection-handler';\nimport type { CallbackObjectType } from '../../planner-core/src/utils/planner-scene-utils';\nimport type { SelectionPayload } from '../../planner-core/src/roomle-planner-ui-callback';\nimport { type PlanElementViewModel } from '../../common-core/src/view-model/plan-element-view-model';\nimport type { CancelSelectionReasons } from '../../typings/planner';\n\nexport const initCallbacks = (\n roomlePlanner: RoomlePlanner,\n gluLogic: GlueLogic,\n) => {\n roomlePlanner.callbacks.onCompletelyLoaded = () => {\n gluLogic.groupsCompletelyLoaded();\n };\n\n roomlePlanner.callbacks.onExternalObjectModuleSelected = (\n groupId: string,\n rootModuleId: string | null,\n subModuleId: string | null,\n ) => {\n gluLogic.hiObjectSelection.groupOrModuleSelected(\n groupId,\n rootModuleId,\n subModuleId,\n );\n };\n\n roomlePlanner.callbacks.onContextChanged = (context: BASE_CONTEXT): void => {\n gluLogic.hiObjectSelection.contextChanged(context);\n };\n\n roomlePlanner.callbacks.onSelectionChange = (\n selectionMode: SELECTION_MODE,\n objectType: CallbackObjectType,\n payload: SelectionPayload,\n payloadPromise: Promise<SelectionPayload>,\n planElementViewModel: PlanElementViewModel,\n ): void => {\n gluLogic.hiObjectSelection.selectionChanged(\n selectionMode,\n objectType,\n payload,\n payloadPromise,\n planElementViewModel,\n );\n };\n\n roomlePlanner.callbacks.onSelectionCancel = (\n reason: CancelSelectionReasons,\n ): void => {\n gluLogic.hiObjectSelection.selectionCancel(reason);\n };\n};\n","import { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { GlueLogic } from './glue-logic';\nimport type { KernelPlanObject } from '../../typings/kernel';\nimport type { ExternalObjectSnapshotSaveResult } from './external-object-api';\nimport type {\n HiOrder,\n HiOrderData,\n HiOrderHeader,\n} from '#/common/src/hi/hi-types';\n\nconst getISO8601Date = (date = new Date()) => {\n // Get the ISO string (in UTC)\n let isoString = date.toISOString();\n\n // Remove the 'Z' at the end which indicates UTC\n isoString = isoString.slice(0, -1);\n\n // Find the position of milliseconds\n const msPosition = isoString.lastIndexOf('.');\n\n // Get the base timestamp with 3 digits of milliseconds and extend with zeros\n let baseTimestamp = isoString;\n\n if (msPosition !== -1) {\n // Add 4 zeros to extend from 3 to 7 digits of precision\n baseTimestamp = isoString.substring(0, msPosition + 4) + '0000';\n }\n\n // Get timezone offset in minutes and convert to hours and minutes\n const offsetMinutes = date.getTimezoneOffset();\n const offsetHours = Math.abs(Math.floor(offsetMinutes / 60));\n const offsetMins = Math.abs(offsetMinutes % 60);\n\n // Format the offset as +HH:MM or -HH:MM\n const offsetSign = offsetMinutes <= 0 ? '+' : '-';\n const offsetString = `${offsetSign}${String(offsetHours).padStart(\n 2,\n '0',\n )}:${String(offsetMins).padStart(2, '0')}`;\n\n return baseTimestamp + offsetString;\n};\n\nexport const createEmptyOrder = (): HiOrder => {\n const formatLocalDateTime = (date: Date = new Date()): string => {\n const pad = (n: number) => String(n).padStart(2, '0');\n\n const yyyy = date.getFullYear();\n const MM = pad(date.getMonth() + 1); // months are 0-based\n const dd = pad(date.getDate());\n\n const HH = pad(date.getHours());\n const mm = pad(date.getMinutes());\n const ss = pad(date.getSeconds());\n\n return `${yyyy}-${MM}-${dd} ${HH}:${mm}:${ss}`;\n };\n\n return {\n id: (window as any).uuidv4\n ? (window as any).uuidv4()\n : '00000000-0000-0000-0000-000000000000',\n state: 'New',\n orderNumber: '736362',\n orderName: 'SC-Order ' + formatLocalDateTime(),\n orderDescription: 'Lorem ipsum dolor sit amet...',\n project: 'Single family house Müller John',\n personInCharge: 'Joe',\n orderDate: getISO8601Date(),\n deliveryDatePlanned: getISO8601Date(\n new Date(Date.now() + 14 * 24 * 60 * 60 * 1000),\n ),\n addresses: [\n {\n type: 'Delivery, Billing',\n street: 'Musterstraße',\n houseNumber: '1',\n postalCode: '12345',\n city: 'Musterstadt',\n country: 'Deutschland',\n },\n ],\n customerName: 'Müller & Co.',\n customerNumber: '462642',\n createdAt: getISO8601Date(),\n changedAt: getISO8601Date(),\n changedBy: 'Selfish',\n items: [] as any[],\n };\n};\n\nconst _addMerchantPositions = async (\n roomlePlanner: RoomlePlanner,\n groupData: any,\n) => {\n const planOverview = await roomlePlanner.getPlanOverview();\n const count: Record<string, number> = {}; // key is id and value is count\n const itemIds = (\n planOverview.objects as unknown as KernelPlanObject[]\n ).reduce((acc: string[], item: any) => {\n if (item.catalogItemId) {\n if (!count[item.catalogItemId]) {\n count[item.catalogItemId] = 0;\n acc.push(item.catalogItemId);\n }\n count[item.catalogItemId]++;\n }\n return acc;\n }, []);\n const items =\n Array.isArray(itemIds) && itemIds.length > 0\n ? await roomlePlanner.getRapiAccess().getItems(itemIds)\n : [];\n const merchantItems = items.filter((item: any) => {\n if (item.manufacturerSKU !== undefined) {\n item.count = count[item.id];\n return true;\n }\n return false;\n });\n if (Array.isArray(merchantItems) && merchantItems.length > 0) {\n if (!groupData.items) {\n groupData.items = [];\n }\n let posNo = groupData.items.reduce((acc: number, item: any) => {\n if (item.items?.length) {\n return acc + item.items.length;\n }\n return acc;\n }, 0);\n merchantItems.forEach((item) => {\n const pos = {} as any;\n pos.type = 'Position';\n pos.name = (++posNo).toString();\n pos.articleNumber = item.manufacturerSKU;\n pos.articleName = item.label;\n pos.catalog = item.catalog;\n pos.quantity = item.count;\n pos.height = item.displayedHeight;\n pos.width = item.displayedWidth;\n pos.depth = item.displayedDepth;\n pos.color = item.basecolor;\n pos.procurementType = 'PTO';\n pos.additionalData = [];\n if (item.perspectiveImage) {\n pos.additionalData.push({\n category: 'ArticleImage',\n downloadUri: item.perspectiveImage,\n type: 'Image',\n });\n }\n groupData.items.push(pos);\n });\n }\n};\n\nexport default class Orders {\n private _roomlePlanner: RoomlePlanner;\n private _glueLogic: GlueLogic;\n\n constructor(roomlePlanner: RoomlePlanner, glueLogic: GlueLogic) {\n this._roomlePlanner = roomlePlanner;\n this._glueLogic = glueLogic;\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n let orderData = await this._glueLogic.getGroupDataForOrder({\n roomlePlannerId: planId,\n });\n if (!orderData?.items?.length) {\n return null;\n }\n return await this._fetchOrderDataWithPrice(orderData, orderHeader);\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n const planData = await this._roomlePlanner.saveExternalObjectSnapshot();\n if (!planData) {\n console.error('Could not save plan snapshot before placing order');\n return;\n }\n if (!planData.orderData) {\n console.error('No order data found in plan snapshot');\n return;\n }\n\n const priceData =\n withPrice && planData.orderData.items?.length > 0\n ? await this._fetchOrderDataWithPrice(planData.orderData, orderHeader)\n : null;\n let order;\n if (priceData) {\n order = priceData.orderData;\n } else {\n order = this._createOrder(orderHeader);\n order.items.push(planData.orderData as never);\n await _addMerchantPositions(this._roomlePlanner, planData.orderData);\n }\n\n // The first item in the order is the one created from the HI objects in the plan\n if (order.items?.length > 0) {\n this._addAdditionalDataToOrder(order.items[0], planData);\n }\n\n await this._glueLogic.hiCallbacks?.onPlaceOrder?.(order);\n }\n\n private _addAdditionalDataToOrder(\n orderData: HiOrderData,\n planData: ExternalObjectSnapshotSaveResult,\n ) {\n if (!Array.isArray(orderData.additionalData)) {\n orderData.additionalData = [];\n }\n if (planData.perspectiveImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'OverviewImage',\n downloadUri: planData.perspectiveImageLink,\n });\n }\n if (planData.topImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'AboveImage',\n downloadUri: planData.topImageLink,\n });\n }\n if (planData.objectGlbLink) {\n orderData.additionalData.push({\n type: 'ThreeD',\n category: 'ThreeDModel',\n downloadUri: planData.objectGlbLink,\n });\n }\n }\n\n private async _fetchOrderDataWithPrice(\n orderData: HiOrderData,\n orderHeader?: HiOrderHeader,\n ): Promise<any> {\n let order = this._createOrder(orderHeader);\n order.items.push(orderData as never);\n return this._glueLogic.hiCallbacks?.onFetchPrice?.(order) ?? null;\n }\n\n private _createOrder(orderHeader?: HiOrderHeader): HiOrder {\n return orderHeader\n ? {\n ...orderHeader,\n items: [],\n }\n : createEmptyOrder();\n }\n}\n","import type { HiCallbacks, HiOrderData } from '#/common/src/hi/hi-types';\nimport type {\n GlueLogic,\n GetGroupDataForOrderOptions,\n LibraryData,\n RoomDesignerRequests,\n ValidContainerModules,\n} from './glue-logic';\nimport type { ExternalObjectGroup } from './external-object-api-callbacks';\nimport type { ExternalModuleInformation } from '../../typings/kernel';\nimport type {\n CheckDropDownResult,\n PosArticle,\n PosGroup,\n PosSaveData,\n} from './model/oc-scripts-domain.model';\nimport type { HiObjectSelectionApi } from './hi-object-selection';\nimport type {\n ExternalObjectGroupLayout,\n ExternalObjectSnapshotSaveResult,\n ExternalRoomInformation,\n HiPlanContext,\n HiPlanContextSection,\n LoadExternalObjectOptions,\n PlanRoomGeometryMode,\n} from './external-object-api';\n\nexport class GlueLayerRequestDebugLogging implements GlueLogic {\n private _glueLogic: GlueLogic;\n private _hiCallbacks: HiCallbacks;\n\n constructor(glueLogic: GlueLogic, hiCallbacks: HiCallbacks) {\n this._glueLogic = glueLogic;\n this._hiCallbacks = hiCallbacks;\n }\n\n public get hiCallbacks(): HiCallbacks | null {\n return this._hiCallbacks;\n }\n\n public get hiObjectSelection(): HiObjectSelectionApi {\n return this._glueLogic.hiObjectSelection;\n }\n\n private _logRequest(\n message: string,\n ...args: Array<string | null | undefined>\n ) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI REQUEST', messageAndArgs);\n }\n\n public isLibraryLoaded(libraryId: string): boolean {\n return this._glueLogic.isLibraryLoaded(libraryId);\n }\n\n public getLibraryData(libraryId: string): LibraryData | null {\n return this._glueLogic.getLibraryData(libraryId);\n }\n\n public addLibrary(libraryData: LibraryData): Promise<void> {\n this._logRequest('addLibrary', libraryData.libraryId);\n return this._glueLogic.addLibrary(libraryData);\n }\n\n public setPosDataForLoading(posData: PosSaveData | null): Promise<void> {\n this._logRequest('setPosDataForLoading', posData ? 'set' : 'null');\n return this._glueLogic.setPosDataForLoading(posData);\n }\n\n public loadPosData(articleCatalogJson: any, libraryId: string): void {\n this._logRequest('loadPosData', libraryId);\n this._glueLogic.loadPosData(articleCatalogJson, libraryId);\n }\n\n public async mergeGroups(\n targetGroup: ExternalObjectGroup,\n idsOfGroupsMerged: string | string[],\n idOfTargetRootModule: string,\n mergedWithDragging: boolean,\n ): Promise<void> {\n this._logRequest(\n 'mergeGroups',\n targetGroup.groupId,\n JSON.stringify(idsOfGroupsMerged),\n idOfTargetRootModule,\n );\n return this._glueLogic.mergeGroups(\n targetGroup,\n idsOfGroupsMerged,\n idOfTargetRootModule,\n mergedWithDragging,\n );\n }\n\n public deleteRootModule(\n remainingGroup: ExternalObjectGroup,\n rootModuleIdToDelete: string,\n splitOffGroups: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'deleteRootModule',\n JSON.stringify(remainingGroup),\n rootModuleIdToDelete,\n JSON.stringify(splitOffGroups),\n );\n return this._glueLogic.deleteRootModule(\n remainingGroup,\n rootModuleIdToDelete,\n splitOffGroups,\n );\n }\n\n public splitRootModuleFromGroup(\n splitGroup: ExternalObjectGroup,\n newGroupedRootModules: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'splitRootModuleFromGroup',\n JSON.stringify(splitGroup),\n JSON.stringify(newGroupedRootModules),\n );\n return this._glueLogic.splitRootModuleFromGroup(\n splitGroup,\n newGroupedRootModules,\n );\n }\n\n public async duplicateGroup(\n duplicatedGroup: ExternalObjectGroup,\n ): Promise<void> {\n this._logRequest('duplicateGroup', duplicatedGroup.groupId);\n return this._glueLogic.duplicateGroup(duplicatedGroup);\n }\n\n public adjustGroup(groupId: string): Promise<void> {\n this._logRequest('adjustGroup', groupId);\n return this._glueLogic.adjustGroup(groupId);\n }\n\n public modifyAttribute(\n groupId: string,\n moduleIdObjects: ExternalModuleInformation[],\n attributeName: string,\n value: string,\n ): Promise<void> {\n this._logRequest(\n 'modifyAttribute',\n groupId,\n JSON.stringify(moduleIdObjects),\n attributeName,\n value,\n );\n return this._glueLogic.modifyAttribute(\n groupId,\n moduleIdObjects,\n attributeName,\n value,\n );\n }\n\n public updateAttribute(\n rootModuleId: string,\n moduleId: string | null,\n attributeId: string,\n attributeValue: string | boolean,\n ): Promise<void> {\n this._logRequest(\n 'updateAttribute',\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue.toString(),\n );\n return this._glueLogic.updateAttribute(\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue,\n );\n }\n\n public getVerifiedAttributeOptions(\n moduleId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedAttributeOptions',\n moduleId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedAttributeOptions(moduleId, attributeIds);\n }\n\n public getVerifiedGroupAttributeOptions(\n groupId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedGroupAttributeOptions',\n groupId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedGroupAttributeOptions(\n groupId,\n attributeIds,\n );\n }\n\n public updateProperty(\n rootModuleId?: string,\n propertyName?: string,\n propertyValue?: string | number | boolean,\n ): void {\n this._logRequest(\n 'updateProperty',\n rootModuleId ?? 'undefined',\n propertyName ?? 'undefined',\n propertyValue?.toString() ?? 'undefined',\n );\n this._glueLogic.updateProperty(rootModuleId, propertyName, propertyValue);\n }\n\n public findValidSubArticles(posGroupIds: string[] | string): PosArticle[] {\n this._logRequest(\n 'findValidSubArticles',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n );\n return this._glueLogic.findValidSubArticles(posGroupIds);\n }\n\n public getValidContainerModulesForSubArticle(\n posGroupIds: string[] | string,\n subArticleId: string,\n ): ValidContainerModules[] {\n this._logRequest(\n 'getValidContainerModulesForSubArticle',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n subArticleId,\n );\n return this._glueLogic.getValidContainerModulesForSubArticle(\n posGroupIds,\n subArticleId,\n );\n }\n\n public addSubArticle(\n articleId: string,\n rootModuleId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): void {\n this._logRequest(\n 'addSubArticle',\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition ? JSON.stringify(insertPosition) : 'undefined',\n );\n return this._glueLogic.addSubArticle(\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition,\n );\n }\n\n public moveSubArticle(\n articleId: string,\n subModuleId: string,\n rootModuleId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): void {\n this._logRequest(\n 'moveSubArticle',\n articleId,\n subModuleId,\n rootModuleId,\n parentModuleId,\n insertPosition ? JSON.stringify(insertPosition) : 'undefined',\n );\n return this._glueLogic.moveSubArticle(\n articleId,\n subModuleId,\n rootModuleId,\n parentModuleId,\n insertPosition,\n );\n }\n\n public deleteSubArticles(\n groupId: string,\n subModuleIds: string[] | string,\n ): Promise<void> {\n this._logRequest(\n 'deleteSubArticles',\n groupId,\n Array.isArray(subModuleIds) ? JSON.stringify(subModuleIds) : subModuleIds,\n );\n return this._glueLogic.deleteSubArticles(groupId, subModuleIds);\n }\n\n public swapRootModule(\n groupId: string,\n rootModuleId: string,\n articleId: string,\n ): Promise<void> {\n this._logRequest('swapRootModule', groupId, rootModuleId, articleId);\n return this._glueLogic.swapRootModule(groupId, rootModuleId, articleId);\n }\n\n public changedGroupPlanningSituation(\n changedGroup: ExternalObjectGroup,\n objectPositionChanged: boolean,\n ): Promise<void> {\n this._logRequest(\n 'changedGroupPlanningSituation',\n changedGroup.groupId,\n objectPositionChanged.toString(),\n );\n return this._glueLogic.changedGroupPlanningSituation(\n changedGroup,\n objectPositionChanged,\n );\n }\n\n public changedGroupFromHistory(\n posDataJson: PosGroup,\n reloadGroup: boolean,\n ): void {\n this._logRequest(\n 'changedGroupFromHistory',\n posDataJson.id,\n reloadGroup.toString(),\n );\n this._glueLogic.changedGroupFromHistory(posDataJson, reloadGroup);\n }\n\n public loadedGroup(posDataJson: PosGroup): Promise<void> {\n this._logRequest('loadedGroup', posDataJson.id);\n return this._glueLogic.loadedGroup(posDataJson);\n }\n\n public groupsCompletelyLoaded(): void {\n this._logRequest('groupsCompletelyLoaded');\n this._glueLogic.groupsCompletelyLoaded();\n }\n\n public removedGroup(groupId: string): void {\n this._logRequest('removedGroup', groupId);\n this._glueLogic.removedGroup(groupId);\n }\n\n public openCloseGroup(groupId: string): void {\n this._logRequest('openCloseGroup', groupId);\n this._glueLogic.openCloseGroup(groupId);\n }\n\n public getSaveDataGroups(): Promise<PosGroup[] | null> {\n this._logRequest('getSaveDataGroups');\n return this._glueLogic.getSaveDataGroups();\n }\n\n public getSubArticleId(id: string): string | undefined {\n this._logRequest('getSubArticleId', id);\n return this._glueLogic.getSubArticleId(id);\n }\n\n public async newPosDataFromId(id: string): Promise<PosGroup | undefined> {\n this._logRequest('newPosDataFromId', id);\n return this._glueLogic.newPosDataFromId(id);\n }\n\n public async createOrReplacePosDataFromArticleLayout(\n articleLayoutJson: ExternalObjectGroupLayout,\n layoutType: string,\n posArticles?: PosArticle[],\n ): Promise<PosGroup | PosGroup[] | undefined> {\n this._logRequest(\n 'createOrReplacePosDataFromArticleLayout',\n layoutType,\n JSON.stringify(articleLayoutJson),\n );\n return this._glueLogic.createOrReplacePosDataFromArticleLayout(\n articleLayoutJson,\n layoutType,\n posArticles,\n );\n }\n\n public async getPlanContext(\n include?: HiPlanContextSection[],\n ): Promise<HiPlanContext> {\n this._logRequest('getPlanContext', JSON.stringify(include));\n return this._glueLogic.getPlanContext(include);\n }\n\n public async newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup> {\n this._logRequest('newPosDataFromId', JSON.stringify(posDataJson));\n return this._glueLogic.newPosDataFromGroup(posDataJson);\n }\n\n public getGroupDataForOrder(\n options: GetGroupDataForOrderOptions,\n ): Promise<HiOrderData | null> {\n this._logRequest(\n 'getGroupDataForOrder',\n options.roomlePlannerId,\n options.mode,\n );\n return this._glueLogic.getGroupDataForOrder(options);\n }\n\n public getMaterialUrl(\n materialId: string,\n groupOrModuleId?: string,\n ): string | null {\n this._logRequest('getMaterialUrl', materialId, groupOrModuleId);\n return this._glueLogic.getMaterialUrl(materialId, groupOrModuleId);\n }\n}\n\nexport class GlueLayerResponseDebugLogging implements RoomDesignerRequests {\n private _roomDesignerRequests: RoomDesignerRequests;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomDesignerRequests: RoomDesignerRequests,\n hiCallbacks: HiCallbacks,\n ) {\n this._roomDesignerRequests = roomDesignerRequests;\n this._hiCallbacks = hiCallbacks;\n }\n\n private _logResponse(message: string, ...args: Array<string | null>) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI RESPONSE', messageAndArgs);\n }\n\n public loadMasterData(masterData: any): void {\n this._logResponse('loadMasterData');\n this._roomDesignerRequests.loadMasterData(masterData);\n }\n\n public async loadPosGroups(\n posDataJson: PosGroup | PosGroup[],\n options: LoadExternalObjectOptions,\n ): Promise<void> {\n const groupIds = Array.isArray(posDataJson)\n ? posDataJson.map((group) => group.id).join(',')\n : posDataJson.id;\n this._logResponse(\n 'loadPosGroups',\n groupIds,\n options.reason ?? 'undefined',\n options.findFreeSpaceInPlan?.toString() ?? 'false',\n options.moduleIdMap ? JSON.stringify(options.moduleIdMap) : '[]',\n options.mergedGroups ? JSON.stringify(options.mergedGroups) : '[]',\n );\n return this._roomDesignerRequests.loadPosGroups(posDataJson, options);\n }\n\n public completelyLoaded(): void {\n this._logResponse('completelyLoaded');\n this._roomDesignerRequests.completelyLoaded();\n }\n\n public async selectGroup(groupId: string): Promise<void> {\n this._logResponse('selectGroup', groupId);\n return this._roomDesignerRequests.selectGroup(groupId);\n }\n\n public async selectRoot(rootModuleId: string): Promise<void> {\n this._logResponse('selectRoot', rootModuleId);\n return this._roomDesignerRequests.selectRoot(rootModuleId);\n }\n\n public async selectModule(\n rootModuleId: string,\n subModuleId: string,\n ): Promise<void> {\n this._logResponse('selectModule', rootModuleId, subModuleId);\n return this._roomDesignerRequests.selectModule(rootModuleId, subModuleId);\n }\n\n public openCloseGroup(\n groupOrRootModuleId: string,\n subModuleId: string | null,\n open: boolean,\n animate: boolean,\n ) {\n this._logResponse(\n 'openCloseGroup',\n groupOrRootModuleId,\n subModuleId,\n open.toString(),\n animate.toString(),\n );\n this._roomDesignerRequests.openCloseGroup(\n groupOrRootModuleId,\n subModuleId,\n open,\n animate,\n );\n return Promise.resolve();\n }\n\n public deleteGroup(groupId: string): void {\n this._logResponse('deleteGroup', groupId);\n return this._roomDesignerRequests.deleteGroup(groupId);\n }\n\n public deleteRootModule(rootModuleId: string): void {\n this._logResponse('deleteRootModule', rootModuleId);\n return this._roomDesignerRequests.deleteRootModule(rootModuleId);\n }\n\n public getPosDataOfAllGroups(): Promise<PosGroup[]> {\n this._logResponse('getPosDataOfAllGroups');\n return this._roomDesignerRequests.getPosDataOfAllGroups();\n }\n\n public getRoomInformation(\n mode?: PlanRoomGeometryMode,\n ): Promise<ExternalRoomInformation> {\n this._logResponse('getRoomInformation', mode ?? null);\n return this._roomDesignerRequests.getRoomInformation(mode);\n }\n\n public saveExternalObjectSnapshot(): Promise<ExternalObjectSnapshotSaveResult | null> {\n this._logResponse('saveExternalObjectSnapshot');\n return this._roomDesignerRequests.saveExternalObjectSnapshot();\n }\n}\n","import { RoomDesignerApi } from './api';\nimport type { GlueLogic, HiAttributeOptionsResult } from './glue-logic';\nimport { GlueLogicImplementation, type LibraryData } from './glue-logic';\nimport { type HomagIntelligenceInitData } from './hi-api-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport type {\n MasterData,\n PosArticle,\n PosContour,\n PosGroup,\n PosModuleAttribute,\n PosModuleData,\n PosRoom,\n} from './model/oc-scripts-domain.model';\nimport { initCallbacks } from './callbacks';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport Orders from './orders';\nimport type {\n ExternalConfiguration,\n ExternalItem,\n} from '../../typings/external-objects';\nimport type { HiTagCatalogCallbacks } from './hi-tag-catalog-callbacks';\nimport type { HiCallbacks, HiOrderHeader } from '#/common/src/hi/hi-types';\nimport {\n GlueLayerRequestDebugLogging,\n GlueLayerResponseDebugLogging,\n} from './debug-logging';\nimport type { ExternalObjectValidContainerModules } from './external-object-api-callbacks';\n\ndeclare global {\n interface Window {\n uuidv4: () => string;\n }\n}\n\nconsole.warn('Homag Intelligence plugin is loaded.');\n\n// export const HOMAG_INTELLIGENCE_ENDPOINT = 'http://localhost:8080/proxy_request?url=';\n// export const HOMAG_INTELLIGENCE_ENDPOINT =\n// 'https://europe-west3-rml-showcases.cloudfunctions.net/proxy_request?url=';\n\nexport type ExternalObjects = Map<\n string,\n { id: string; label: string; items: any[] }\n>;\nexport type ExternalItems = Map<string, ExternalItem>;\nexport type ExternalConfigurations = Map<string, ExternalConfiguration>;\n\n/**\n * Serialization lock for _initCalcScript.\n * Concurrent calls share `window.exports`, so they must run one at a time.\n */\nlet calcScriptLock: Promise<void> = Promise.resolve();\n\nconst acquireCalcScriptLock = (): Promise<() => void> => {\n let release: () => void = () => {};\n const next = new Promise<void>((resolve) => {\n release = resolve;\n });\n const prev = calcScriptLock;\n calcScriptLock = next;\n return prev.then(() => release);\n};\n\nexport class HomagIntelligence {\n private _roomlePlanner: RoomlePlanner;\n private _api: RoomDesignerApi;\n private _glueLogic: GlueLogic;\n private _orders: Orders;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomlePlanner: RoomlePlanner,\n hiOptions: HomagIntelligenceInitData,\n hiCallbacks: HiCallbacks,\n getArrangementCorrectionEnabled: () => boolean = () => false,\n ) {\n if (!window.uuidv4) {\n window.uuidv4 = uuidv4; // Ensure uuidv4 is available globally\n }\n\n this._roomlePlanner = roomlePlanner;\n this._roomlePlanner.setHomagIntelligence(this);\n this._hiCallbacks = hiCallbacks;\n this._api = new RoomDesignerApi(this._roomlePlanner);\n\n if (hiOptions?.debugLogging) {\n const api = new GlueLayerResponseDebugLogging(this._api, hiCallbacks);\n const glueLogic = new GlueLogicImplementation(\n api,\n hiCallbacks,\n getArrangementCorrectionEnabled,\n );\n this._glueLogic = new GlueLayerRequestDebugLogging(\n glueLogic,\n hiCallbacks,\n );\n } else {\n this._glueLogic = new GlueLogicImplementation(\n this._api,\n hiCallbacks,\n getArrangementCorrectionEnabled,\n );\n }\n initCallbacks(this._roomlePlanner, this._glueLogic);\n this._orders = new Orders(roomlePlanner, this._glueLogic);\n }\n\n /**\n * Loads previously saved PosGroup data via hiCallbacks.\n * Must be called after construction to restore saved state.\n */\n public async loadSavedPosData(): Promise<void> {\n const savedPosGroupData =\n (await this._hiCallbacks.onGetSavedPosGroupData?.()) ?? null;\n await this._glueLogic.setPosDataForLoading(savedPosGroupData);\n }\n\n public async loadLibrary(libraryId: string) {\n const libraryData = await this._loadLibraryData(libraryId);\n await this._glueLogic.addLibrary(libraryData);\n }\n\n public async loadCatalog(\n libraryId: string,\n articles: any,\n catalogCallbacks: HiTagCatalogCallbacks,\n ) {\n catalogCallbacks?.setEmulator(this._glueLogic);\n this._glueLogic.loadPosData(await articles, libraryId);\n }\n\n private async _loadLibraryData(libraryId: string): Promise<LibraryData> {\n if (this._glueLogic.isLibraryLoaded(libraryId)) {\n const data = this._glueLogic.getLibraryData(libraryId);\n if (data !== null) {\n return data;\n }\n }\n const hiCallbacks = this._glueLogic.hiCallbacks;\n if (hiCallbacks === null) {\n throw new Error('HiCallbacks not initialized');\n }\n const { masterData, libraryExports } = await this._requestHiLibrary(\n libraryId,\n hiCallbacks,\n );\n this._loadMasterData(masterData);\n const libraryData: LibraryData = {\n libraryId,\n masterData,\n posGroupVersion: 1,\n initializePosGroup: (posGroup: PosGroup): void => {\n if (!libraryExports.initializePosGroup) {\n return;\n }\n libraryExports.initializePosGroup(posGroup);\n },\n calculateGroup: (groupData: PosGroup): PosGroup => {\n return libraryExports.calc(groupData);\n },\n getOrderData: (\n groupData: PosGroup[],\n roomlePlannerId?: string,\n rooms?: PosContour[],\n ): any => {\n return libraryExports.getOrderData(groupData, roomlePlannerId, rooms);\n },\n getAttributesDropDownValues: async (\n module: PosModuleData,\n attributeIds?: string | string[],\n ): Promise<Record<string, HiAttributeOptionsResult>> => {\n const ids = attributeIds\n ? Array.isArray(attributeIds)\n ? attributeIds\n : [attributeIds]\n : (module.attributes ?? []).map((attribute) => attribute.id);\n const attributeOptions: Record<string, any[]> = {};\n for (const attributeId of ids) {\n try {\n const attributeDropDownApi =\n libraryExports.getAttributesDropDownValuesV2 ??\n libraryExports.getAttributesDropDownValues;\n const options = await attributeDropDownApi(module, attributeId);\n attributeOptions[attributeId] = options;\n } catch (error) {\n console.error(error);\n attributeOptions[attributeId] = [];\n }\n }\n return attributeOptions;\n },\n solveModuleAttributeConflict: (\n module: PosModuleData,\n attributeName: string,\n value: string | number | boolean,\n ): PosModuleAttribute[] | undefined => {\n if (!libraryExports.solveModuleAttributeConflict) {\n return undefined;\n }\n const results = libraryExports.solveModuleAttributeConflict(\n module,\n attributeName,\n value,\n );\n return results;\n },\n groupAdjust: (\n posGroup: PosGroup,\n articles: PosArticle[],\n roomInformation: PosRoom,\n ): PosGroup => {\n if (!libraryExports.groupAdjust) {\n return posGroup;\n }\n const results = libraryExports.groupAdjust(\n posGroup,\n articles,\n roomInformation,\n );\n return results;\n },\n getValidSubArticles(\n calculatedPosGroup: PosGroup,\n articles: PosArticle[],\n masterData: MasterData,\n ): PosArticle[] {\n if (!libraryExports.getValidSubArticles) {\n return [];\n }\n const results = libraryExports.getValidSubArticles(\n calculatedPosGroup,\n articles,\n masterData,\n );\n return results;\n },\n getValidContainerModulesForSubArticle(\n calculatedPosGroup: PosGroup,\n subArticle: PosArticle,\n masterData: MasterData,\n ): ExternalObjectValidContainerModules[] {\n if (!libraryExports.getValidContainerModulesForSubArticle) {\n return [];\n }\n const results = libraryExports.getValidContainerModulesForSubArticle(\n calculatedPosGroup,\n subArticle,\n masterData,\n );\n return results;\n },\n addSubArticle(\n targetPosGroup: PosGroup,\n article: PosArticle,\n rootId: string,\n parentModuleId: string,\n insertPosition?: number[],\n masterData?: MasterData,\n ): PosGroup {\n if (!libraryExports.addSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.addSubArticle(\n targetPosGroup,\n article,\n rootId,\n parentModuleId,\n insertPosition,\n masterData,\n );\n return results;\n },\n deleteSubArticle(\n targetPosGroup: PosGroup,\n rootId: string,\n articleModuleId: string,\n ): PosGroup {\n if (!libraryExports.deleteSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.deleteSubArticle(\n targetPosGroup,\n rootId,\n articleModuleId,\n );\n return results;\n },\n };\n return libraryData;\n }\n\n public async _requestHiLibrary(\n libraryId: string,\n hiCallbacks: HiCallbacks,\n ): Promise<{\n masterData: MasterData;\n libraryExports: any;\n }> {\n const [masterData, calcScriptString] = await Promise.all([\n hiCallbacks.onLoadMasterData(libraryId),\n hiCallbacks.onLoadJavascript(libraryId),\n ]);\n const libraryExports = await this._initCalcScript(calcScriptString);\n return {\n masterData,\n libraryExports,\n };\n }\n\n private _loadMasterData(masterData: MasterData): void {\n return this._api.loadMasterData(masterData);\n }\n\n private async _initCalcScript(scriptText: string): Promise<any> {\n // Acquire the lock so concurrent _initCalcScript calls don't corrupt\n // each other's window.exports (which is a shared global).\n const release = await acquireCalcScriptLock();\n let blobUrl: string | undefined;\n try {\n window.exports = {};\n const blob = new Blob([scriptText], { type: 'text/javascript' });\n blobUrl = URL.createObjectURL(blob);\n await import(blobUrl);\n return window.exports;\n } catch (e) {\n console.error(e);\n throw new Error('Failed to load calc.js!');\n } finally {\n if (blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n release();\n }\n }\n\n public getGlueLogic(): GlueLogic {\n return this._glueLogic;\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n await this._orders.placeOrder(withPrice, orderHeader);\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n return this._orders.fetchPrice(planId, orderHeader);\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":";;;AACA,IAAM,IAAY,EAAE;AACpB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EACvB,GAAU,MAAM,IAAI,KAAO,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAErD,SAAgB,EAAgB,GAAK,IAAS,GAAG;AAC7C,SAAQ,EAAU,EAAI,IAAS,MAC3B,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,MAAM,aAAa;;;;ACzBlD,IAAI,GACE,IAAQ,IAAI,WAAW,GAAG;AAChC,SAAwB,IAAM;AAC1B,KAAI,CAAC,GAAiB;AAClB,MAAI,OAAO,SAAW,OAAe,CAAC,OAAO,gBACzC,OAAU,MAAM,2GAA2G;AAE/H,MAAkB,OAAO,gBAAgB,KAAK,OAAO;;AAEzD,QAAO,EAAgB,EAAM;;ACRjC,IAAA,IAAe,EAAE,YADE,OAAO,SAAW,OAAe,OAAO,cAAc,OAAO,WAAW,KAAK,OAAO,EAC1E;;;ACE7B,SAAS,EAAG,GAAS,GAAK,GAAQ;AAC9B,KAAIA,EAAO,cAAc,CAAC,KAAO,CAAC,EAC9B,QAAOA,EAAO,YAAY;AAE9B,OAAqB,EAAE;CACvB,IAAM,IAAO,EAAQ,WAAW,EAAQ,OAAO,IAAM;AAGrD,KAFA,EAAK,KAAM,EAAK,KAAK,KAAQ,IAC7B,EAAK,KAAM,EAAK,KAAK,KAAQ,KACzB,GAAK;AACL,QAAmB;AACnB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACtB,GAAI,IAAS,KAAK,EAAK;AAE3B,SAAO;;AAEX,QAAO,EAAgB,EAAK;;;;ACThC,IAAa,KACX,GACA,MACG;AAqCH,CApCA,EAAc,UAAU,2BAA2B;AACjD,IAAS,wBAAwB;IAGnC,EAAc,UAAU,kCACtB,GACA,GACA,MACG;AACH,IAAS,kBAAkB,sBACzB,GACA,GACA,EACD;IAGH,EAAc,UAAU,oBAAoB,MAAgC;AAC1E,IAAS,kBAAkB,eAAe,EAAQ;IAGpD,EAAc,UAAU,qBACtB,GACA,GACA,GACA,GACA,MACS;AACT,IAAS,kBAAkB,iBACzB,GACA,GACA,GACA,GACA,EACD;IAGH,EAAc,UAAU,qBACtB,MACS;AACT,IAAS,kBAAkB,gBAAgB,EAAO;;GC1ChD,KAAkB,oBAAO,IAAI,MAAM,KAAK;CAE5C,IAAI,IAAY,EAAK,aAAa;AAGlC,KAAY,EAAU,MAAM,GAAG,GAAG;CAGlC,IAAM,IAAa,EAAU,YAAY,IAAI,EAGzC,IAAgB;AAEpB,CAAI,MAAe,OAEjB,IAAgB,EAAU,UAAU,GAAG,IAAa,EAAE,GAAG;CAI3D,IAAM,IAAgB,EAAK,mBAAmB,EACxC,IAAc,KAAK,IAAI,KAAK,MAAM,IAAgB,GAAG,CAAC,EACtD,IAAa,KAAK,IAAI,IAAgB,GAAG,EAIzC,IAAe,GADF,KAAiB,IAAI,MAAM,MACT,OAAO,EAAY,CAAC,SACvD,GACA,IACD,CAAC,GAAG,OAAO,EAAW,CAAC,SAAS,GAAG,IAAI;AAExC,QAAO,IAAgB;GAGZ,WAeJ;CACL,IAAK,OAAe,SACf,OAAe,QAAQ,GACxB;CACJ,OAAO;CACP,aAAa;CACb,WAAW,gBApBgB,oBAAa,IAAI,MAAM,KAAa;EAC/D,IAAM,KAAO,MAAc,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI;AAUrD,SAAO,GARM,EAAK,aAAa,CAQhB,GAPJ,EAAI,EAAK,UAAU,GAAG,EAAE,CAOd,GANV,EAAI,EAAK,SAAS,CAAC,CAMH,GAJhB,EAAI,EAAK,UAAU,CAAC,CAIE,GAHtB,EAAI,EAAK,YAAY,CAAC,CAGM,GAF5B,EAAI,EAAK,YAAY,CAAC;KAWa;CAC9C,kBAAkB;CAClB,SAAS;CACT,gBAAgB;CAChB,WAAW,GAAgB;CAC3B,qBAAqB,EACnB,IAAI,KAAK,KAAK,KAAK,GAAG,MAAU,KAAK,KAAK,IAAK,CAChD;CACD,WAAW,CACT;EACE,MAAM;EACN,QAAQ;EACR,aAAa;EACb,YAAY;EACZ,MAAM;EACN,SAAS;EACV,CACF;CACD,cAAc;CACd,gBAAgB;CAChB,WAAW,GAAgB;CAC3B,WAAW,GAAgB;CAC3B,WAAW;CACX,OAAO,EAAE;CACV,GAGG,IAAwB,OAC5B,GACA,MACG;CACH,IAAM,IAAe,MAAM,EAAc,iBAAiB,EACpD,IAAgC,EAAE,EAClC,IACJ,EAAa,QACb,QAAQ,GAAe,OACnB,EAAK,kBACF,EAAM,EAAK,mBACd,EAAM,EAAK,iBAAiB,GAC5B,EAAI,KAAK,EAAK,cAAc,GAE9B,EAAM,EAAK,mBAEN,IACN,EAAE,CAAC,EAKA,KAHJ,MAAM,QAAQ,EAAQ,IAAI,EAAQ,SAAS,IACvC,MAAM,EAAc,eAAe,CAAC,SAAS,EAAQ,GACrD,EAAE,EACoB,QAAQ,MAC9B,EAAK,oBAAoB,KAAA,IAItB,MAHL,EAAK,QAAQ,EAAM,EAAK,KACjB,IAGT;AACF,KAAI,MAAM,QAAQ,EAAc,IAAI,EAAc,SAAS,GAAG;AAC5D,EACE,EAAU,UAAQ,EAAE;EAEtB,IAAI,IAAQ,EAAU,MAAM,QAAQ,GAAa,MAC3C,EAAK,OAAO,SACP,IAAM,EAAK,MAAM,SAEnB,GACN,EAAE;AACL,IAAc,SAAS,MAAS;GAC9B,IAAM,IAAM,EAAE;AAoBd,GAnBA,EAAI,OAAO,YACX,EAAI,QAAQ,EAAE,GAAO,UAAU,EAC/B,EAAI,gBAAgB,EAAK,iBACzB,EAAI,cAAc,EAAK,OACvB,EAAI,UAAU,EAAK,SACnB,EAAI,WAAW,EAAK,OACpB,EAAI,SAAS,EAAK,iBAClB,EAAI,QAAQ,EAAK,gBACjB,EAAI,QAAQ,EAAK,gBACjB,EAAI,QAAQ,EAAK,WACjB,EAAI,kBAAkB,OACtB,EAAI,iBAAiB,EAAE,EACnB,EAAK,oBACP,EAAI,eAAe,KAAK;IACtB,UAAU;IACV,aAAa,EAAK;IAClB,MAAM;IACP,CAAC,EAEJ,EAAU,MAAM,KAAK,EAAI;IACzB;;GAIe,IAArB,MAA4B;CAI1B,YAAY,GAA8B,GAAsB;AAE9D,EADA,KAAK,iBAAiB,GACtB,KAAK,aAAa;;CAGpB,MAAa,WAAW,GAAiB,GAA6B;EACpE,IAAI,IAAY,MAAM,KAAK,WAAW,qBAAqB,EACzD,iBAAiB,GAClB,CAAC;AAIF,SAHK,GAAW,OAAO,SAGhB,MAAM,KAAK,yBAAyB,GAAW,EAAY,GAFzD;;CAKX,MAAa,WACX,IAAqB,IACrB,GACA;EACA,IAAM,IAAW,MAAM,KAAK,eAAe,4BAA4B;AACvE,MAAI,CAAC,GAAU;AACb,WAAQ,MAAM,oDAAoD;AAClE;;AAEF,MAAI,CAAC,EAAS,WAAW;AACvB,WAAQ,MAAM,uCAAuC;AACrD;;EAGF,IAAM,IACJ,KAAa,EAAS,UAAU,OAAO,SAAS,IAC5C,MAAM,KAAK,yBAAyB,EAAS,WAAW,EAAY,GACpE,MACF;AAcJ,EAbI,IACF,IAAQ,EAAU,aAElB,IAAQ,KAAK,aAAa,EAAY,EACtC,EAAM,MAAM,KAAK,EAAS,UAAmB,EAC7C,MAAM,EAAsB,KAAK,gBAAgB,EAAS,UAAU,GAIlE,EAAM,OAAO,SAAS,KACxB,KAAK,0BAA0B,EAAM,MAAM,IAAI,EAAS,EAG1D,MAAM,KAAK,WAAW,aAAa,eAAe,EAAM;;CAG1D,0BACE,GACA,GACA;AAkBA,EAjBK,MAAM,QAAQ,EAAU,eAAe,KAC1C,EAAU,iBAAiB,EAAE,GAE3B,EAAS,wBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC,EAEA,EAAS,gBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC,EAEA,EAAS,iBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC;;CAIN,MAAc,yBACZ,GACA,GACc;EACd,IAAI,IAAQ,KAAK,aAAa,EAAY;AAE1C,SADA,EAAM,MAAM,KAAK,EAAmB,EAC7B,KAAK,WAAW,aAAa,eAAe,EAAM,IAAI;;CAG/D,aAAqB,GAAsC;AACzD,SAAO,IACH;GACE,GAAG;GACH,OAAO,EAAE;GACV,GACD,GAAkB;;GCpOb,IAAb,MAA+D;CAI7D,YAAY,GAAsB,GAA0B;AAE1D,EADA,KAAK,aAAa,GAClB,KAAK,eAAe;;CAGtB,IAAW,cAAkC;AAC3C,SAAO,KAAK;;CAGd,IAAW,oBAA0C;AACnD,SAAO,KAAK,WAAW;;CAGzB,YACE,GACA,GAAG,GACH;EACA,IAAI,IAAiB;AAMrB,EALI,KACF,EAAK,SAAS,MAAS;AACrB,QAAkB,MAAM;IACxB,EAEJ,KAAK,aAAa,eAAe,cAAc,EAAe;;CAGhE,gBAAuB,GAA4B;AACjD,SAAO,KAAK,WAAW,gBAAgB,EAAU;;CAGnD,eAAsB,GAAuC;AAC3D,SAAO,KAAK,WAAW,eAAe,EAAU;;CAGlD,WAAkB,GAAyC;AAEzD,SADA,KAAK,YAAY,cAAc,EAAY,UAAU,EAC9C,KAAK,WAAW,WAAW,EAAY;;CAGhD,qBAA4B,GAA4C;AAEtE,SADA,KAAK,YAAY,wBAAwB,IAAU,QAAQ,OAAO,EAC3D,KAAK,WAAW,qBAAqB,EAAQ;;CAGtD,YAAmB,GAAyB,GAAyB;AAEnE,EADA,KAAK,YAAY,eAAe,EAAU,EAC1C,KAAK,WAAW,YAAY,GAAoB,EAAU;;CAG5D,MAAa,YACX,GACA,GACA,GACA,GACe;AAOf,SANA,KAAK,YACH,eACA,EAAY,SACZ,KAAK,UAAU,EAAkB,EACjC,EACD,EACM,KAAK,WAAW,YACrB,GACA,GACA,GACA,EACD;;CAGH,iBACE,GACA,GACA,GACe;AAOf,SANA,KAAK,YACH,oBACA,KAAK,UAAU,EAAe,EAC9B,GACA,KAAK,UAAU,EAAe,CAC/B,EACM,KAAK,WAAW,iBACrB,GACA,GACA,EACD;;CAGH,yBACE,GACA,GACe;AAMf,SALA,KAAK,YACH,4BACA,KAAK,UAAU,EAAW,EAC1B,KAAK,UAAU,EAAsB,CACtC,EACM,KAAK,WAAW,yBACrB,GACA,EACD;;CAGH,MAAa,eACX,GACe;AAEf,SADA,KAAK,YAAY,kBAAkB,EAAgB,QAAQ,EACpD,KAAK,WAAW,eAAe,EAAgB;;CAGxD,YAAmB,GAAgC;AAEjD,SADA,KAAK,YAAY,eAAe,EAAQ,EACjC,KAAK,WAAW,YAAY,EAAQ;;CAG7C,gBACE,GACA,GACA,GACA,GACe;AAQf,SAPA,KAAK,YACH,mBACA,GACA,KAAK,UAAU,EAAgB,EAC/B,GACA,EACD,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,gBACE,GACA,GACA,GACA,GACe;AAQf,SAPA,KAAK,YACH,mBACA,GACA,GACA,GACA,EAAe,UAAU,CAC1B,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,4BACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,+BACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,4BAA4B,GAAU,EAAa;;CAG5E,iCACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,oCACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,iCACrB,GACA,EACD;;CAGH,eACE,GACA,GACA,GACM;AAON,EANA,KAAK,YACH,kBACA,KAAgB,aAChB,KAAgB,aAChB,GAAe,UAAU,IAAI,YAC9B,EACD,KAAK,WAAW,eAAe,GAAc,GAAc,EAAc;;CAG3E,qBAA4B,GAA8C;AAKxE,SAJA,KAAK,YACH,wBACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,EAC5D,EACM,KAAK,WAAW,qBAAqB,EAAY;;CAG1D,sCACE,GACA,GACyB;AAMzB,SALA,KAAK,YACH,yCACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,GAC3D,EACD,EACM,KAAK,WAAW,sCACrB,GACA,EACD;;CAGH,cACE,GACA,GACA,GACA,GACM;AAQN,SAPA,KAAK,YACH,iBACA,GACA,GACA,GACA,IAAiB,KAAK,UAAU,EAAe,GAAG,YACnD,EACM,KAAK,WAAW,cACrB,GACA,GACA,GACA,EACD;;CAGH,eACE,GACA,GACA,GACA,GACA,GACM;AASN,SARA,KAAK,YACH,kBACA,GACA,GACA,GACA,GACA,IAAiB,KAAK,UAAU,EAAe,GAAG,YACnD,EACM,KAAK,WAAW,eACrB,GACA,GACA,GACA,GACA,EACD;;CAGH,kBACE,GACA,GACe;AAMf,SALA,KAAK,YACH,qBACA,G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"}
1
+ {"version":3,"file":"homag-intelligence-CSBo-iks.mjs","names":["native"],"sources":["../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../packages/homag-intelligence/src/callbacks.ts","../../packages/homag-intelligence/src/orders.ts","../../packages/homag-intelligence/src/debug-logging.ts","../../packages/homag-intelligence/src/homag-intelligence.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFNckMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFNekQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixHQUFHO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQU8xQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMifQ==","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm5nLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm5nLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsSUFBSSxlQUEwRCxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsR0FBRztJQUV6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztRQUNKLENBQUM7UUFFRCxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMifQ==","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQ2QsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkYsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDIn0=","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakQsU0FBUyxFQUFFLENBQUMsT0FBeUIsRUFBRSxHQUFnQixFQUFFLE1BQWU7SUFDdEUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFHdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBR2xDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlLEVBQUUsQ0FBQyJ9","import type { GlueLogic } from './glue-logic';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { BASE_CONTEXT } from '../../common-core/src/main';\nimport type { SELECTION_MODE } from '../../configurator-core/src/utils/selection-handler';\nimport type { CallbackObjectType } from '../../planner-core/src/utils/planner-scene-utils';\nimport type { SelectionPayload } from '../../planner-core/src/roomle-planner-ui-callback';\nimport { type PlanElementViewModel } from '../../common-core/src/view-model/plan-element-view-model';\nimport type { CancelSelectionReasons } from '../../typings/planner';\n\nexport const initCallbacks = (\n roomlePlanner: RoomlePlanner,\n gluLogic: GlueLogic,\n) => {\n roomlePlanner.callbacks.onCompletelyLoaded = () => {\n gluLogic.groupsCompletelyLoaded();\n };\n\n roomlePlanner.callbacks.onExternalObjectModuleSelected = (\n groupId: string,\n rootModuleId: string | null,\n subModuleId: string | null,\n ) => {\n gluLogic.hiObjectSelection.groupOrModuleSelected(\n groupId,\n rootModuleId,\n subModuleId,\n );\n };\n\n roomlePlanner.callbacks.onContextChanged = (context: BASE_CONTEXT): void => {\n gluLogic.hiObjectSelection.contextChanged(context);\n };\n\n roomlePlanner.callbacks.onSelectionChange = (\n selectionMode: SELECTION_MODE,\n objectType: CallbackObjectType,\n payload: SelectionPayload,\n payloadPromise: Promise<SelectionPayload>,\n planElementViewModel: PlanElementViewModel,\n ): void => {\n gluLogic.hiObjectSelection.selectionChanged(\n selectionMode,\n objectType,\n payload,\n payloadPromise,\n planElementViewModel,\n );\n };\n\n roomlePlanner.callbacks.onSelectionCancel = (\n reason: CancelSelectionReasons,\n ): void => {\n gluLogic.hiObjectSelection.selectionCancel(reason);\n };\n};\n","import { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { GlueLogic } from './glue-logic';\nimport type { KernelPlanObject } from '../../typings/kernel';\nimport type { ExternalObjectSnapshotSaveResult } from './external-object-api';\nimport type {\n HiOrder,\n HiOrderData,\n HiOrderHeader,\n} from '#/common/src/hi/hi-types';\n\nconst getISO8601Date = (date = new Date()) => {\n // Get the ISO string (in UTC)\n let isoString = date.toISOString();\n\n // Remove the 'Z' at the end which indicates UTC\n isoString = isoString.slice(0, -1);\n\n // Find the position of milliseconds\n const msPosition = isoString.lastIndexOf('.');\n\n // Get the base timestamp with 3 digits of milliseconds and extend with zeros\n let baseTimestamp = isoString;\n\n if (msPosition !== -1) {\n // Add 4 zeros to extend from 3 to 7 digits of precision\n baseTimestamp = isoString.substring(0, msPosition + 4) + '0000';\n }\n\n // Get timezone offset in minutes and convert to hours and minutes\n const offsetMinutes = date.getTimezoneOffset();\n const offsetHours = Math.abs(Math.floor(offsetMinutes / 60));\n const offsetMins = Math.abs(offsetMinutes % 60);\n\n // Format the offset as +HH:MM or -HH:MM\n const offsetSign = offsetMinutes <= 0 ? '+' : '-';\n const offsetString = `${offsetSign}${String(offsetHours).padStart(\n 2,\n '0',\n )}:${String(offsetMins).padStart(2, '0')}`;\n\n return baseTimestamp + offsetString;\n};\n\nexport const createEmptyOrder = (): HiOrder => {\n const formatLocalDateTime = (date: Date = new Date()): string => {\n const pad = (n: number) => String(n).padStart(2, '0');\n\n const yyyy = date.getFullYear();\n const MM = pad(date.getMonth() + 1); // months are 0-based\n const dd = pad(date.getDate());\n\n const HH = pad(date.getHours());\n const mm = pad(date.getMinutes());\n const ss = pad(date.getSeconds());\n\n return `${yyyy}-${MM}-${dd} ${HH}:${mm}:${ss}`;\n };\n\n return {\n id: (window as any).uuidv4\n ? (window as any).uuidv4()\n : '00000000-0000-0000-0000-000000000000',\n state: 'New',\n orderNumber: '736362',\n orderName: 'SC-Order ' + formatLocalDateTime(),\n orderDescription: 'Lorem ipsum dolor sit amet...',\n project: 'Single family house Müller John',\n personInCharge: 'Joe',\n orderDate: getISO8601Date(),\n deliveryDatePlanned: getISO8601Date(\n new Date(Date.now() + 14 * 24 * 60 * 60 * 1000),\n ),\n addresses: [\n {\n type: 'Delivery, Billing',\n street: 'Musterstraße',\n houseNumber: '1',\n postalCode: '12345',\n city: 'Musterstadt',\n country: 'Deutschland',\n },\n ],\n customerName: 'Müller & Co.',\n customerNumber: '462642',\n createdAt: getISO8601Date(),\n changedAt: getISO8601Date(),\n changedBy: 'Selfish',\n items: [] as any[],\n };\n};\n\nconst _addMerchantPositions = async (\n roomlePlanner: RoomlePlanner,\n groupData: any,\n) => {\n const planOverview = await roomlePlanner.getPlanOverview();\n const count: Record<string, number> = {}; // key is id and value is count\n const itemIds = (\n planOverview.objects as unknown as KernelPlanObject[]\n ).reduce((acc: string[], item: any) => {\n if (item.catalogItemId) {\n if (!count[item.catalogItemId]) {\n count[item.catalogItemId] = 0;\n acc.push(item.catalogItemId);\n }\n count[item.catalogItemId]++;\n }\n return acc;\n }, []);\n const items =\n Array.isArray(itemIds) && itemIds.length > 0\n ? await roomlePlanner.getRapiAccess().getItems(itemIds)\n : [];\n const merchantItems = items.filter((item: any) => {\n if (item.manufacturerSKU !== undefined) {\n item.count = count[item.id];\n return true;\n }\n return false;\n });\n if (Array.isArray(merchantItems) && merchantItems.length > 0) {\n if (!groupData.items) {\n groupData.items = [];\n }\n let posNo = groupData.items.reduce((acc: number, item: any) => {\n if (item.items?.length) {\n return acc + item.items.length;\n }\n return acc;\n }, 0);\n merchantItems.forEach((item) => {\n const pos = {} as any;\n pos.type = 'Position';\n pos.name = (++posNo).toString();\n pos.articleNumber = item.manufacturerSKU;\n pos.articleName = item.label;\n pos.catalog = item.catalog;\n pos.quantity = item.count;\n pos.height = item.displayedHeight;\n pos.width = item.displayedWidth;\n pos.depth = item.displayedDepth;\n pos.color = item.basecolor;\n pos.procurementType = 'PTO';\n pos.additionalData = [];\n if (item.perspectiveImage) {\n pos.additionalData.push({\n category: 'ArticleImage',\n downloadUri: item.perspectiveImage,\n type: 'Image',\n });\n }\n groupData.items.push(pos);\n });\n }\n};\n\nexport default class Orders {\n private _roomlePlanner: RoomlePlanner;\n private _glueLogic: GlueLogic;\n\n constructor(roomlePlanner: RoomlePlanner, glueLogic: GlueLogic) {\n this._roomlePlanner = roomlePlanner;\n this._glueLogic = glueLogic;\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n let orderData = await this._glueLogic.getGroupDataForOrder({\n roomlePlannerId: planId,\n });\n if (!orderData?.items?.length) {\n return null;\n }\n return await this._fetchOrderDataWithPrice(orderData, orderHeader);\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n const planData = await this._roomlePlanner.saveExternalObjectSnapshot();\n if (!planData) {\n console.error('Could not save plan snapshot before placing order');\n return;\n }\n if (!planData.orderData) {\n console.error('No order data found in plan snapshot');\n return;\n }\n\n const priceData =\n withPrice && planData.orderData.items?.length > 0\n ? await this._fetchOrderDataWithPrice(planData.orderData, orderHeader)\n : null;\n let order;\n if (priceData) {\n order = priceData.orderData;\n } else {\n order = this._createOrder(orderHeader);\n order.items.push(planData.orderData as never);\n await _addMerchantPositions(this._roomlePlanner, planData.orderData);\n }\n\n // The first item in the order is the one created from the HI objects in the plan\n if (order.items?.length > 0) {\n this._addAdditionalDataToOrder(order.items[0], planData);\n }\n\n await this._glueLogic.hiCallbacks?.onPlaceOrder?.(order);\n }\n\n private _addAdditionalDataToOrder(\n orderData: HiOrderData,\n planData: ExternalObjectSnapshotSaveResult,\n ) {\n if (!Array.isArray(orderData.additionalData)) {\n orderData.additionalData = [];\n }\n if (planData.perspectiveImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'OverviewImage',\n downloadUri: planData.perspectiveImageLink,\n });\n }\n if (planData.topImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'AboveImage',\n downloadUri: planData.topImageLink,\n });\n }\n if (planData.objectGlbLink) {\n orderData.additionalData.push({\n type: 'ThreeD',\n category: 'ThreeDModel',\n downloadUri: planData.objectGlbLink,\n });\n }\n }\n\n private async _fetchOrderDataWithPrice(\n orderData: HiOrderData,\n orderHeader?: HiOrderHeader,\n ): Promise<any> {\n let order = this._createOrder(orderHeader);\n order.items.push(orderData as never);\n return this._glueLogic.hiCallbacks?.onFetchPrice?.(order) ?? null;\n }\n\n private _createOrder(orderHeader?: HiOrderHeader): HiOrder {\n return orderHeader\n ? {\n ...orderHeader,\n items: [],\n }\n : createEmptyOrder();\n }\n}\n","import type { HiCallbacks, HiOrderData } from '#/common/src/hi/hi-types';\nimport type {\n GlueLogic,\n GetGroupDataForOrderOptions,\n LibraryData,\n RoomDesignerRequests,\n ValidContainerModules,\n} from './glue-logic';\nimport type { ExternalObjectGroup } from './external-object-api-callbacks';\nimport type { ExternalModuleInformation } from '../../typings/kernel';\nimport type {\n CheckDropDownResult,\n PosArticle,\n PosGroup,\n PosSaveData,\n} from './model/oc-scripts-domain.model';\nimport type { HiObjectSelectionApi } from './hi-object-selection';\nimport type {\n ExternalObjectGroupLayout,\n ExternalObjectSnapshotSaveResult,\n ExternalRoomInformation,\n HiPlanContext,\n HiPlanContextSection,\n LoadExternalObjectOptions,\n PlanRoomGeometryMode,\n} from './external-object-api';\n\nexport class GlueLayerRequestDebugLogging implements GlueLogic {\n private _glueLogic: GlueLogic;\n private _hiCallbacks: HiCallbacks;\n\n constructor(glueLogic: GlueLogic, hiCallbacks: HiCallbacks) {\n this._glueLogic = glueLogic;\n this._hiCallbacks = hiCallbacks;\n }\n\n public get hiCallbacks(): HiCallbacks | null {\n return this._hiCallbacks;\n }\n\n public get hiObjectSelection(): HiObjectSelectionApi {\n return this._glueLogic.hiObjectSelection;\n }\n\n private _logRequest(\n message: string,\n ...args: Array<string | null | undefined>\n ) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI REQUEST', messageAndArgs);\n }\n\n public isLibraryLoaded(libraryId: string): boolean {\n return this._glueLogic.isLibraryLoaded(libraryId);\n }\n\n public getLibraryData(libraryId: string): LibraryData | null {\n return this._glueLogic.getLibraryData(libraryId);\n }\n\n public addLibrary(libraryData: LibraryData): Promise<void> {\n this._logRequest('addLibrary', libraryData.libraryId);\n return this._glueLogic.addLibrary(libraryData);\n }\n\n public setPosDataForLoading(posData: PosSaveData | null): Promise<void> {\n this._logRequest('setPosDataForLoading', posData ? 'set' : 'null');\n return this._glueLogic.setPosDataForLoading(posData);\n }\n\n public loadPosData(articleCatalogJson: any, libraryId: string): void {\n this._logRequest('loadPosData', libraryId);\n this._glueLogic.loadPosData(articleCatalogJson, libraryId);\n }\n\n public async mergeGroups(\n targetGroup: ExternalObjectGroup,\n idsOfGroupsMerged: string | string[],\n idOfTargetRootModule: string,\n mergedWithDragging: boolean,\n ): Promise<void> {\n this._logRequest(\n 'mergeGroups',\n targetGroup.groupId,\n JSON.stringify(idsOfGroupsMerged),\n idOfTargetRootModule,\n );\n return this._glueLogic.mergeGroups(\n targetGroup,\n idsOfGroupsMerged,\n idOfTargetRootModule,\n mergedWithDragging,\n );\n }\n\n public deleteRootModule(\n remainingGroup: ExternalObjectGroup,\n rootModuleIdToDelete: string,\n splitOffGroups: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'deleteRootModule',\n JSON.stringify(remainingGroup),\n rootModuleIdToDelete,\n JSON.stringify(splitOffGroups),\n );\n return this._glueLogic.deleteRootModule(\n remainingGroup,\n rootModuleIdToDelete,\n splitOffGroups,\n );\n }\n\n public splitRootModuleFromGroup(\n splitGroup: ExternalObjectGroup,\n newGroupedRootModules: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'splitRootModuleFromGroup',\n JSON.stringify(splitGroup),\n JSON.stringify(newGroupedRootModules),\n );\n return this._glueLogic.splitRootModuleFromGroup(\n splitGroup,\n newGroupedRootModules,\n );\n }\n\n public async duplicateGroup(\n duplicatedGroup: ExternalObjectGroup,\n ): Promise<void> {\n this._logRequest('duplicateGroup', duplicatedGroup.groupId);\n return this._glueLogic.duplicateGroup(duplicatedGroup);\n }\n\n public adjustGroup(groupId: string): Promise<void> {\n this._logRequest('adjustGroup', groupId);\n return this._glueLogic.adjustGroup(groupId);\n }\n\n public modifyAttribute(\n groupId: string,\n moduleIdObjects: ExternalModuleInformation[],\n attributeName: string,\n value: string,\n ): Promise<void> {\n this._logRequest(\n 'modifyAttribute',\n groupId,\n JSON.stringify(moduleIdObjects),\n attributeName,\n value,\n );\n return this._glueLogic.modifyAttribute(\n groupId,\n moduleIdObjects,\n attributeName,\n value,\n );\n }\n\n public updateAttribute(\n rootModuleId: string,\n moduleId: string | null,\n attributeId: string,\n attributeValue: string | boolean,\n ): Promise<void> {\n this._logRequest(\n 'updateAttribute',\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue.toString(),\n );\n return this._glueLogic.updateAttribute(\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue,\n );\n }\n\n public getVerifiedAttributeOptions(\n moduleId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedAttributeOptions',\n moduleId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedAttributeOptions(moduleId, attributeIds);\n }\n\n public getVerifiedGroupAttributeOptions(\n groupId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedGroupAttributeOptions',\n groupId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedGroupAttributeOptions(\n groupId,\n attributeIds,\n );\n }\n\n public updateProperty(\n rootModuleId?: string,\n propertyName?: string,\n propertyValue?: string | number | boolean,\n ): void {\n this._logRequest(\n 'updateProperty',\n rootModuleId ?? 'undefined',\n propertyName ?? 'undefined',\n propertyValue?.toString() ?? 'undefined',\n );\n this._glueLogic.updateProperty(rootModuleId, propertyName, propertyValue);\n }\n\n public findValidSubArticles(posGroupIds: string[] | string): PosArticle[] {\n this._logRequest(\n 'findValidSubArticles',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n );\n return this._glueLogic.findValidSubArticles(posGroupIds);\n }\n\n public getValidContainerModulesForSubArticle(\n posGroupIds: string[] | string,\n subArticleId: string,\n ): ValidContainerModules[] {\n this._logRequest(\n 'getValidContainerModulesForSubArticle',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n subArticleId,\n );\n return this._glueLogic.getValidContainerModulesForSubArticle(\n posGroupIds,\n subArticleId,\n );\n }\n\n public addSubArticle(\n articleId: string,\n rootModuleId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): void {\n this._logRequest(\n 'addSubArticle',\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition ? JSON.stringify(insertPosition) : 'undefined',\n );\n return this._glueLogic.addSubArticle(\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition,\n );\n }\n\n public moveSubArticle(\n articleId: string,\n subModuleId: string,\n rootModuleId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): void {\n this._logRequest(\n 'moveSubArticle',\n articleId,\n subModuleId,\n rootModuleId,\n parentModuleId,\n insertPosition ? JSON.stringify(insertPosition) : 'undefined',\n );\n return this._glueLogic.moveSubArticle(\n articleId,\n subModuleId,\n rootModuleId,\n parentModuleId,\n insertPosition,\n );\n }\n\n public deleteSubArticles(\n groupId: string,\n subModuleIds: string[] | string,\n ): Promise<void> {\n this._logRequest(\n 'deleteSubArticles',\n groupId,\n Array.isArray(subModuleIds) ? JSON.stringify(subModuleIds) : subModuleIds,\n );\n return this._glueLogic.deleteSubArticles(groupId, subModuleIds);\n }\n\n public swapRootModule(\n groupId: string,\n rootModuleId: string,\n articleId: string,\n ): Promise<void> {\n this._logRequest('swapRootModule', groupId, rootModuleId, articleId);\n return this._glueLogic.swapRootModule(groupId, rootModuleId, articleId);\n }\n\n public changedGroupPlanningSituation(\n changedGroup: ExternalObjectGroup,\n objectPositionChanged: boolean,\n ): Promise<void> {\n this._logRequest(\n 'changedGroupPlanningSituation',\n changedGroup.groupId,\n objectPositionChanged.toString(),\n );\n return this._glueLogic.changedGroupPlanningSituation(\n changedGroup,\n objectPositionChanged,\n );\n }\n\n public changedGroupFromHistory(\n posDataJson: PosGroup,\n reloadGroup: boolean,\n ): void {\n this._logRequest(\n 'changedGroupFromHistory',\n posDataJson.id,\n reloadGroup.toString(),\n );\n this._glueLogic.changedGroupFromHistory(posDataJson, reloadGroup);\n }\n\n public loadedGroup(posDataJson: PosGroup): Promise<void> {\n this._logRequest('loadedGroup', posDataJson.id);\n return this._glueLogic.loadedGroup(posDataJson);\n }\n\n public groupsCompletelyLoaded(): void {\n this._logRequest('groupsCompletelyLoaded');\n this._glueLogic.groupsCompletelyLoaded();\n }\n\n public removedGroup(groupId: string): void {\n this._logRequest('removedGroup', groupId);\n this._glueLogic.removedGroup(groupId);\n }\n\n public openCloseGroup(groupId: string): void {\n this._logRequest('openCloseGroup', groupId);\n this._glueLogic.openCloseGroup(groupId);\n }\n\n public getSaveDataGroups(): Promise<PosGroup[] | null> {\n this._logRequest('getSaveDataGroups');\n return this._glueLogic.getSaveDataGroups();\n }\n\n public getSubArticleId(id: string): string | undefined {\n this._logRequest('getSubArticleId', id);\n return this._glueLogic.getSubArticleId(id);\n }\n\n public async newPosDataFromId(id: string): Promise<PosGroup | undefined> {\n this._logRequest('newPosDataFromId', id);\n return this._glueLogic.newPosDataFromId(id);\n }\n\n public async createOrReplacePosDataFromArticleLayout(\n articleLayoutJson: ExternalObjectGroupLayout,\n layoutType: string,\n posArticles?: PosArticle[],\n ): Promise<PosGroup | PosGroup[] | undefined> {\n this._logRequest(\n 'createOrReplacePosDataFromArticleLayout',\n layoutType,\n JSON.stringify(articleLayoutJson),\n );\n return this._glueLogic.createOrReplacePosDataFromArticleLayout(\n articleLayoutJson,\n layoutType,\n posArticles,\n );\n }\n\n public async getPlanContext(\n include?: HiPlanContextSection[],\n ): Promise<HiPlanContext> {\n this._logRequest('getPlanContext', JSON.stringify(include));\n return this._glueLogic.getPlanContext(include);\n }\n\n public async newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup> {\n this._logRequest('newPosDataFromId', JSON.stringify(posDataJson));\n return this._glueLogic.newPosDataFromGroup(posDataJson);\n }\n\n public getGroupDataForOrder(\n options: GetGroupDataForOrderOptions,\n ): Promise<HiOrderData | null> {\n this._logRequest(\n 'getGroupDataForOrder',\n options.roomlePlannerId,\n options.mode,\n );\n return this._glueLogic.getGroupDataForOrder(options);\n }\n\n public getMaterialUrl(\n materialId: string,\n groupOrModuleId?: string,\n ): string | null {\n this._logRequest('getMaterialUrl', materialId, groupOrModuleId);\n return this._glueLogic.getMaterialUrl(materialId, groupOrModuleId);\n }\n}\n\nexport class GlueLayerResponseDebugLogging implements RoomDesignerRequests {\n private _roomDesignerRequests: RoomDesignerRequests;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomDesignerRequests: RoomDesignerRequests,\n hiCallbacks: HiCallbacks,\n ) {\n this._roomDesignerRequests = roomDesignerRequests;\n this._hiCallbacks = hiCallbacks;\n }\n\n private _logResponse(message: string, ...args: Array<string | null>) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI RESPONSE', messageAndArgs);\n }\n\n public loadMasterData(masterData: any): void {\n this._logResponse('loadMasterData');\n this._roomDesignerRequests.loadMasterData(masterData);\n }\n\n public async loadPosGroups(\n posDataJson: PosGroup | PosGroup[],\n options: LoadExternalObjectOptions,\n ): Promise<void> {\n const groupIds = Array.isArray(posDataJson)\n ? posDataJson.map((group) => group.id).join(',')\n : posDataJson.id;\n this._logResponse(\n 'loadPosGroups',\n groupIds,\n options.reason ?? 'undefined',\n options.findFreeSpaceInPlan?.toString() ?? 'false',\n options.moduleIdMap ? JSON.stringify(options.moduleIdMap) : '[]',\n options.mergedGroups ? JSON.stringify(options.mergedGroups) : '[]',\n );\n return this._roomDesignerRequests.loadPosGroups(posDataJson, options);\n }\n\n public completelyLoaded(): void {\n this._logResponse('completelyLoaded');\n this._roomDesignerRequests.completelyLoaded();\n }\n\n public async selectGroup(groupId: string): Promise<void> {\n this._logResponse('selectGroup', groupId);\n return this._roomDesignerRequests.selectGroup(groupId);\n }\n\n public async selectRoot(rootModuleId: string): Promise<void> {\n this._logResponse('selectRoot', rootModuleId);\n return this._roomDesignerRequests.selectRoot(rootModuleId);\n }\n\n public async selectModule(\n rootModuleId: string,\n subModuleId: string,\n ): Promise<void> {\n this._logResponse('selectModule', rootModuleId, subModuleId);\n return this._roomDesignerRequests.selectModule(rootModuleId, subModuleId);\n }\n\n public openCloseGroup(\n groupOrRootModuleId: string,\n subModuleId: string | null,\n open: boolean,\n animate: boolean,\n ) {\n this._logResponse(\n 'openCloseGroup',\n groupOrRootModuleId,\n subModuleId,\n open.toString(),\n animate.toString(),\n );\n this._roomDesignerRequests.openCloseGroup(\n groupOrRootModuleId,\n subModuleId,\n open,\n animate,\n );\n return Promise.resolve();\n }\n\n public deleteGroup(groupId: string): void {\n this._logResponse('deleteGroup', groupId);\n return this._roomDesignerRequests.deleteGroup(groupId);\n }\n\n public deleteRootModule(rootModuleId: string): void {\n this._logResponse('deleteRootModule', rootModuleId);\n return this._roomDesignerRequests.deleteRootModule(rootModuleId);\n }\n\n public getPosDataOfAllGroups(): Promise<PosGroup[]> {\n this._logResponse('getPosDataOfAllGroups');\n return this._roomDesignerRequests.getPosDataOfAllGroups();\n }\n\n public getRoomInformation(\n mode?: PlanRoomGeometryMode,\n ): Promise<ExternalRoomInformation> {\n this._logResponse('getRoomInformation', mode ?? null);\n return this._roomDesignerRequests.getRoomInformation(mode);\n }\n\n public saveExternalObjectSnapshot(): Promise<ExternalObjectSnapshotSaveResult | null> {\n this._logResponse('saveExternalObjectSnapshot');\n return this._roomDesignerRequests.saveExternalObjectSnapshot();\n }\n}\n","import { RoomDesignerApi } from './api';\nimport type { GlueLogic, HiAttributeOptionsResult } from './glue-logic';\nimport { GlueLogicImplementation, type LibraryData } from './glue-logic';\nimport { type HomagIntelligenceInitData } from './hi-api-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport type {\n MasterData,\n PosArticle,\n PosContour,\n PosGroup,\n PosModuleAttribute,\n PosModuleData,\n PosRoom,\n} from './model/oc-scripts-domain.model';\nimport { initCallbacks } from './callbacks';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport Orders from './orders';\nimport type {\n ExternalConfiguration,\n ExternalItem,\n} from '../../typings/external-objects';\nimport type { HiTagCatalogCallbacks } from './hi-tag-catalog-callbacks';\nimport type { HiCallbacks, HiOrderHeader } from '#/common/src/hi/hi-types';\nimport {\n GlueLayerRequestDebugLogging,\n GlueLayerResponseDebugLogging,\n} from './debug-logging';\nimport type { ExternalObjectValidContainerModules } from './external-object-api-callbacks';\n\ndeclare global {\n interface Window {\n uuidv4: () => string;\n }\n}\n\nconsole.warn('Homag Intelligence plugin is loaded.');\n\n// export const HOMAG_INTELLIGENCE_ENDPOINT = 'http://localhost:8080/proxy_request?url=';\n// export const HOMAG_INTELLIGENCE_ENDPOINT =\n// 'https://europe-west3-rml-showcases.cloudfunctions.net/proxy_request?url=';\n\nexport type ExternalObjects = Map<\n string,\n { id: string; label: string; items: any[] }\n>;\nexport type ExternalItems = Map<string, ExternalItem>;\nexport type ExternalConfigurations = Map<string, ExternalConfiguration>;\n\n/**\n * Serialization lock for _initCalcScript.\n * Concurrent calls share `window.exports`, so they must run one at a time.\n */\nlet calcScriptLock: Promise<void> = Promise.resolve();\n\nconst acquireCalcScriptLock = (): Promise<() => void> => {\n let release: () => void = () => {};\n const next = new Promise<void>((resolve) => {\n release = resolve;\n });\n const prev = calcScriptLock;\n calcScriptLock = next;\n return prev.then(() => release);\n};\n\nexport class HomagIntelligence {\n private _roomlePlanner: RoomlePlanner;\n private _api: RoomDesignerApi;\n private _glueLogic: GlueLogic;\n private _orders: Orders;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomlePlanner: RoomlePlanner,\n hiOptions: HomagIntelligenceInitData,\n hiCallbacks: HiCallbacks,\n getArrangementCorrectionEnabled: () => boolean = () => false,\n ) {\n if (!window.uuidv4) {\n window.uuidv4 = uuidv4; // Ensure uuidv4 is available globally\n }\n\n this._roomlePlanner = roomlePlanner;\n this._roomlePlanner.setHomagIntelligence(this);\n this._hiCallbacks = hiCallbacks;\n this._api = new RoomDesignerApi(this._roomlePlanner);\n\n if (hiOptions?.debugLogging) {\n const api = new GlueLayerResponseDebugLogging(this._api, hiCallbacks);\n const glueLogic = new GlueLogicImplementation(\n api,\n hiCallbacks,\n getArrangementCorrectionEnabled,\n );\n this._glueLogic = new GlueLayerRequestDebugLogging(\n glueLogic,\n hiCallbacks,\n );\n } else {\n this._glueLogic = new GlueLogicImplementation(\n this._api,\n hiCallbacks,\n getArrangementCorrectionEnabled,\n );\n }\n initCallbacks(this._roomlePlanner, this._glueLogic);\n this._orders = new Orders(roomlePlanner, this._glueLogic);\n }\n\n /**\n * Loads previously saved PosGroup data via hiCallbacks.\n * Must be called after construction to restore saved state.\n */\n public async loadSavedPosData(): Promise<void> {\n const savedPosGroupData =\n (await this._hiCallbacks.onGetSavedPosGroupData?.()) ?? null;\n await this._glueLogic.setPosDataForLoading(savedPosGroupData);\n }\n\n public async loadLibrary(libraryId: string) {\n const libraryData = await this._loadLibraryData(libraryId);\n await this._glueLogic.addLibrary(libraryData);\n }\n\n public async loadCatalog(\n libraryId: string,\n articles: any,\n catalogCallbacks: HiTagCatalogCallbacks,\n ) {\n catalogCallbacks?.setEmulator(this._glueLogic);\n this._glueLogic.loadPosData(await articles, libraryId);\n }\n\n private async _loadLibraryData(libraryId: string): Promise<LibraryData> {\n if (this._glueLogic.isLibraryLoaded(libraryId)) {\n const data = this._glueLogic.getLibraryData(libraryId);\n if (data !== null) {\n return data;\n }\n }\n const hiCallbacks = this._glueLogic.hiCallbacks;\n if (hiCallbacks === null) {\n throw new Error('HiCallbacks not initialized');\n }\n const { masterData, libraryExports } = await this._requestHiLibrary(\n libraryId,\n hiCallbacks,\n );\n this._loadMasterData(masterData);\n const libraryData: LibraryData = {\n libraryId,\n masterData,\n posGroupVersion: 1,\n initializePosGroup: (posGroup: PosGroup): void => {\n if (!libraryExports.initializePosGroup) {\n return;\n }\n libraryExports.initializePosGroup(posGroup);\n },\n calculateGroup: (groupData: PosGroup): PosGroup => {\n return libraryExports.calc(groupData);\n },\n getOrderData: (\n groupData: PosGroup[],\n roomlePlannerId?: string,\n rooms?: PosContour[],\n ): any => {\n return libraryExports.getOrderData(groupData, roomlePlannerId, rooms);\n },\n getAttributesDropDownValues: async (\n module: PosModuleData,\n attributeIds?: string | string[],\n ): Promise<Record<string, HiAttributeOptionsResult>> => {\n const ids = attributeIds\n ? Array.isArray(attributeIds)\n ? attributeIds\n : [attributeIds]\n : (module.attributes ?? []).map((attribute) => attribute.id);\n const attributeOptions: Record<string, any[]> = {};\n for (const attributeId of ids) {\n try {\n const attributeDropDownApi =\n libraryExports.getAttributesDropDownValuesV2 ??\n libraryExports.getAttributesDropDownValues;\n const options = await attributeDropDownApi(module, attributeId);\n attributeOptions[attributeId] = options;\n } catch (error) {\n console.error(error);\n attributeOptions[attributeId] = [];\n }\n }\n return attributeOptions;\n },\n solveModuleAttributeConflict: (\n module: PosModuleData,\n attributeName: string,\n value: string | number | boolean,\n ): PosModuleAttribute[] | undefined => {\n if (!libraryExports.solveModuleAttributeConflict) {\n return undefined;\n }\n const results = libraryExports.solveModuleAttributeConflict(\n module,\n attributeName,\n value,\n );\n return results;\n },\n groupAdjust: (\n posGroup: PosGroup,\n articles: PosArticle[],\n roomInformation: PosRoom,\n ): PosGroup => {\n if (!libraryExports.groupAdjust) {\n return posGroup;\n }\n const results = libraryExports.groupAdjust(\n posGroup,\n articles,\n roomInformation,\n );\n return results;\n },\n getValidSubArticles(\n calculatedPosGroup: PosGroup,\n articles: PosArticle[],\n masterData: MasterData,\n ): PosArticle[] {\n if (!libraryExports.getValidSubArticles) {\n return [];\n }\n const results = libraryExports.getValidSubArticles(\n calculatedPosGroup,\n articles,\n masterData,\n );\n return results;\n },\n getValidContainerModulesForSubArticle(\n calculatedPosGroup: PosGroup,\n subArticle: PosArticle,\n masterData: MasterData,\n ): ExternalObjectValidContainerModules[] {\n if (!libraryExports.getValidContainerModulesForSubArticle) {\n return [];\n }\n const results = libraryExports.getValidContainerModulesForSubArticle(\n calculatedPosGroup,\n subArticle,\n masterData,\n );\n return results;\n },\n addSubArticle(\n targetPosGroup: PosGroup,\n article: PosArticle,\n rootId: string,\n parentModuleId: string,\n insertPosition?: number[],\n masterData?: MasterData,\n ): PosGroup {\n if (!libraryExports.addSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.addSubArticle(\n targetPosGroup,\n article,\n rootId,\n parentModuleId,\n insertPosition,\n masterData,\n );\n return results;\n },\n deleteSubArticle(\n targetPosGroup: PosGroup,\n rootId: string,\n articleModuleId: string,\n ): PosGroup {\n if (!libraryExports.deleteSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.deleteSubArticle(\n targetPosGroup,\n rootId,\n articleModuleId,\n );\n return results;\n },\n };\n return libraryData;\n }\n\n public async _requestHiLibrary(\n libraryId: string,\n hiCallbacks: HiCallbacks,\n ): Promise<{\n masterData: MasterData;\n libraryExports: any;\n }> {\n const [masterData, calcScriptString] = await Promise.all([\n hiCallbacks.onLoadMasterData(libraryId),\n hiCallbacks.onLoadJavascript(libraryId),\n ]);\n const libraryExports = await this._initCalcScript(calcScriptString);\n return {\n masterData,\n libraryExports,\n };\n }\n\n private _loadMasterData(masterData: MasterData): void {\n return this._api.loadMasterData(masterData);\n }\n\n private async _initCalcScript(scriptText: string): Promise<any> {\n // Acquire the lock so concurrent _initCalcScript calls don't corrupt\n // each other's window.exports (which is a shared global).\n const release = await acquireCalcScriptLock();\n let blobUrl: string | undefined;\n try {\n window.exports = {};\n const blob = new Blob([scriptText], { type: 'text/javascript' });\n blobUrl = URL.createObjectURL(blob);\n await import(blobUrl);\n return window.exports;\n } catch (e) {\n console.error(e);\n throw new Error('Failed to load calc.js!');\n } finally {\n if (blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n release();\n }\n }\n\n public getGlueLogic(): GlueLogic {\n return this._glueLogic;\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n await this._orders.placeOrder(withPrice, orderHeader);\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n return this._orders.fetchPrice(planId, orderHeader);\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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K,YACH,mBACA,GACA,KAAK,UAAU,EAAgB,EAC/B,GACA,EACD,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,gBACE,GACA,GACA,GACA,GACe;AAQf,SAPA,KAAK,YACH,mBACA,GACA,GACA,GACA,EAAe,UAAU,CAC1B,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,4BACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,+BACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,4BAA4B,GAAU,EAAa;;CAG5E,iCACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,oCACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,iCACrB,GACA,EACD;;CAGH,eACE,GACA,GACA,GACM;AAON,EANA,KAAK,YACH,kBACA,KAAgB,aAChB,KAAgB,aAChB,GAAe,UAAU,IAAI,YAC9B,EACD,KAAK,WAAW,eAAe,GAAc,GAAc,EAAc;;CAG3E,qBAA4B,GAA8C;AAKxE,SAJA,KAAK,YACH,wBACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,EAC5D,EACM,KAAK,WAAW,qBAAqB,EAAY;;CAG1D,sCACE,GACA,GACyB;AAMzB,SALA,KAAK,YACH,yCACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,GAC3D,EACD,EACM,KAAK,WAAW,sCACrB,GACA,EACD;;CAGH,cACE,GACA,GACA,GACA,GACM;AAQN,SAPA,KAAK,YACH,iBACA,GACA,GACA,GACA,IAAiB,KAAK,UAAU,EAAe,GAAG,YACnD,EACM,KAAK,WAAW,cACrB,GACA,GACA,GACA,EACD;;CAGH,eACE,GACA,GACA,GACA,GACA,GACM;AASN,SARA,KAAK,YACH,kBACA,GACA,GACA,GACA,GACA,IAAiB,KAAK,UAAU,EAAe,GAAG,YACnD,EACM,KAAK,WAAW,eACrB,GACA,GACA,GACA,GACA,EACD;;CAGH,kBACE,GACA,GACe;AAMf,SALA,KAAK,YACH,qBACA,G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"}
@@ -1,6 +1,6 @@
1
- import { Ci as e, cn as t, p as n } from "./three.core-0KaTx8dm.mjs";
2
- import { It as r } from "./three.webgpu-D3nSEIjD.mjs";
3
- import { At as i, D as a, E as o, It as s, K as c, Lt as l, Rt as u, T as d, U as f, V as p, W as m, a as h, at as g, bt as _, d as v, h as y, i as b, it as x, jt as S, k as C, n as w, p as T, u as E, v as D, vt as O, w as k, wt as A, yt as j } from "./three.tsl-Cf0-sCqB.mjs";
1
+ import { Ei as e, ln as t, p as n } from "./three.core-BTUCraWz.mjs";
2
+ import { It as r } from "./three.webgpu-wPiwbpFM.mjs";
3
+ import { A as i, Bt as a, Ct as o, D as s, Dt as c, K as l, M as u, Nt as d, O as f, Pt as p, St as m, Vt as h, W as g, Y as _, _ as v, a as y, ct as b, f as x, h as S, i as C, k as w, n as T, p as E, q as D, st as O, x as k, xt as A, zt as j } from "./three.tsl-De6A-G56.mjs";
4
4
  //#region packages/common-core/src/webgpu/hosek-wilkie-configuration.ts
5
5
  var M = [
6
6
  -1.099459,
@@ -3654,18 +3654,18 @@ var M = [
3654
3654
  g: r[1],
3655
3655
  b: r[2]
3656
3656
  };
3657
- }, H = w(([e]) => C(O(k(e, s(12.9898, 78.233))).mul(43758.5453))), U = w(([e]) => {
3658
- let t = s(e).toVar(), n = a(t), r = C(t), i = r.mul(r).mul(A(3, r.mul(2))), o = H(n), c = H(v(n, s(1, 0))), l = H(v(n, s(0, 1))), u = H(v(n, s(1, 1)));
3659
- return f(f(o, c, i.x), f(l, u, i.x), i.y);
3660
- }), W = w(([e]) => {
3661
- let t = s(e).toVar(), n = o(0).toVar(), r = o(.5).toVar();
3662
- return h(5, () => {
3657
+ }, H = T(([e]) => u(A(s(e, j(12.9898, 78.233))).mul(43758.5453))), U = T(([e]) => {
3658
+ let t = j(e).toVar(), n = i(t), r = u(t), a = r.mul(r).mul(c(3, r.mul(2))), o = H(n), s = H(E(n, j(1, 0))), d = H(E(n, j(0, 1))), f = H(E(n, j(1, 1)));
3659
+ return l(l(o, s, a.x), l(d, f, a.x), a.y);
3660
+ }), W = T(([e]) => {
3661
+ let t = j(e).toVar(), n = w(0).toVar(), r = w(.5).toVar();
3662
+ return y(5, () => {
3663
3663
  n.addAssign(r.mul(U(t))), t.mulAssign(2), r.mulAssign(.5);
3664
3664
  }), n;
3665
3665
  }), G = class extends t {
3666
3666
  constructor(t = {}) {
3667
- let a = new r();
3668
- super(new n(1, 1, 1), a), this.sunRadius = i(.03), this.sunSoftness = i(.002), this.tonemapExposure = i(.5), this.tonemapWhite = i(14), this.fixColorBanding = i(!0), this.cloudCoverage = i(.4), this.cloudDensity = i(.4), this.cloudElevation = i(.5), this.cloudScale = i(2e-4), this._turbidity = t.turbidity ?? 2.5, this._albedo = t.albedo ?? .9, this._sunPosition = i(t.sunPosition ?? new e(0, 1, 0)), a.side = 1, a.depthWrite = !1, this.initializeConfigurations(), a.vertexNode = this.buildVertexNode(), a.colorNode = this.buildColorNode();
3667
+ let i = new r();
3668
+ super(new n(1, 1, 1), i), this.sunRadius = d(.03), this.sunSoftness = d(.002), this.tonemapExposure = d(.5), this.tonemapWhite = d(14), this.fixColorBanding = d(!0), this.cloudCoverage = d(.4), this.cloudDensity = d(.4), this.cloudElevation = d(.5), this.cloudScale = d(2e-4), this._turbidity = t.turbidity ?? 2.5, this._albedo = t.albedo ?? .9, this._sunPosition = d(t.sunPosition ?? new e(0, 1, 0)), i.side = 1, i.depthWrite = !1, this.initializeConfigurations(), i.vertexNode = this.buildVertexNode(), i.colorNode = this.buildColorNode();
3669
3669
  }
3670
3670
  getClonedSunPosition() {
3671
3671
  return this._sunPosition.value.clone();
@@ -3687,48 +3687,48 @@ var M = [
3687
3687
  this._albedo = e, this.updateConfigurations();
3688
3688
  }
3689
3689
  buildColorNode() {
3690
- return w(() => {
3691
- let e = l(0, 1, 0).toConst(), t = x.sub(T).normalize(), n = E(y(k(t, e), .001, 1)), r = E(y(k(t, this._sunPosition), -1, 1)), i = this.calculateAtmosphereColor(n, r).add(this.calculateSunColor(r)), a = this.tonemapExtendedReinhard(i), o = this.mixInClouds(a, t);
3692
- return u(this.removeColorBanding(o, n, r), 1);
3690
+ return T(() => {
3691
+ let e = a(0, 1, 0).toConst(), t = O.sub(S).normalize(), n = x(v(s(t, e), .001, 1)), r = x(v(s(t, this._sunPosition), -1, 1)), i = this.calculateAtmosphereColor(n, r).add(this.calculateSunColor(r)), o = this.tonemapExtendedReinhard(i), c = this.mixInClouds(o, t);
3692
+ return h(this.removeColorBanding(c, n, r), 1);
3693
3693
  })();
3694
3694
  }
3695
3695
  mixInClouds(e, t) {
3696
- let n = l(e).toVar();
3697
- return b(this.cloudCoverage.greaterThan(0).and(t.y.greaterThan(0)), () => {
3696
+ let n = a(e).toVar();
3697
+ return C(this.cloudCoverage.greaterThan(0).and(t.y.greaterThan(0)), () => {
3698
3698
  let r = this.projectViewToCloudPlane(t), i = this.sampleCloudsFromFbmAndSmoothen(r, t), a = this.shadeClouds(e, t);
3699
- n.assign(f(n, a, i.mul(this.cloudDensity)));
3699
+ n.assign(l(n, a, i.mul(this.cloudDensity)));
3700
3700
  }), n;
3701
3701
  }
3702
3702
  projectViewToCloudPlane(e) {
3703
- let t = f(1, .1, this.cloudElevation);
3703
+ let t = l(1, .1, this.cloudElevation);
3704
3704
  return e.xz.div(e.y.mul(t)).mul(this.cloudScale);
3705
3705
  }
3706
3706
  sampleCloudsFromFbmAndSmoothen(e, t) {
3707
- let n = W(e.mul(1e3)).add(W(e.mul(2e3).add(3.7)).mul(.5)).mul(.5).add(.5), r = j(A(1, this.cloudCoverage), A(1, this.cloudCoverage).add(.3), n), i = j(0, v(.1, c(.2, this.cloudElevation)), t.y);
3707
+ let n = W(e.mul(1e3)).add(W(e.mul(2e3).add(3.7)).mul(.5)).mul(.5).add(.5), r = m(c(1, this.cloudCoverage), c(1, this.cloudCoverage).add(.3), n), i = m(0, E(.1, _(.2, this.cloudElevation)), t.y);
3708
3708
  return r.mul(i);
3709
3709
  }
3710
3710
  shadeClouds(e, t) {
3711
- let n = k(t, this._sunPosition).mul(.5).add(.5), r = p(0, this._sunPosition.y.mul(2));
3712
- return f(f(l(.3), l(1), r), e.add(l(1)), n.mul(.5)).mul(y(this._sunPosition.y.mul(2), 0, 1));
3711
+ let n = s(t, this._sunPosition).mul(.5).add(.5), r = g(0, this._sunPosition.y.mul(2));
3712
+ return l(l(a(.3), a(1), r), e.add(a(1)), n.mul(.5)).mul(v(this._sunPosition.y.mul(2), 0, 1));
3713
3713
  }
3714
3714
  calculateSunColor(e) {
3715
- let t = this.tonemapWhite, n = o(1).sub(j(this.sunRadius, this.sunRadius.add(this.sunSoftness), e));
3716
- return l(this._radiance_R, this._radiance_G, this._radiance_B).mul(t).mul(n);
3715
+ let t = this.tonemapWhite, n = w(1).sub(m(this.sunRadius, this.sunRadius.add(this.sunSoftness), e));
3716
+ return a(this._radiance_R, this._radiance_G, this._radiance_B).mul(t).mul(n);
3717
3717
  }
3718
3718
  calculateAtmosphereColor(e, t) {
3719
- return l(this.calculateRadiance(this._configuration_R, e, t).mul(this._radiance_R), this.calculateRadiance(this._configuration_G, e, t).mul(this._radiance_G), this.calculateRadiance(this._configuration_B, e, t).mul(this._radiance_B));
3719
+ return a(this.calculateRadiance(this._configuration_R, e, t).mul(this._radiance_R), this.calculateRadiance(this._configuration_G, e, t).mul(this._radiance_G), this.calculateRadiance(this._configuration_B, e, t).mul(this._radiance_B));
3720
3720
  }
3721
3721
  buildVertexNode() {
3722
- return w(() => {
3723
- let e = m;
3722
+ return T(() => {
3723
+ let e = D;
3724
3724
  return e.z.assign(e.w), e;
3725
3725
  })();
3726
3726
  }
3727
3727
  initializeConfigurations() {
3728
3728
  let e = Math.asin(this._sunPosition.value.y), t = z(this._turbidity, this._albedo, e);
3729
- this._configuration_R = S(t.r), this._configuration_G = S(t.g), this._configuration_B = S(t.b);
3729
+ this._configuration_R = p(t.r), this._configuration_G = p(t.g), this._configuration_B = p(t.b);
3730
3730
  let n = V(this._turbidity, this._albedo, e);
3731
- this._radiance_R = i(n.r), this._radiance_G = i(n.g), this._radiance_B = i(n.b);
3731
+ this._radiance_R = d(n.r), this._radiance_G = d(n.g), this._radiance_B = d(n.b);
3732
3732
  }
3733
3733
  updateConfigurations() {
3734
3734
  let e = Math.asin(this._sunPosition.value.y), t = z(this._turbidity, this._albedo, e);
@@ -3737,19 +3737,19 @@ var M = [
3737
3737
  this._radiance_R.value = n.r, this._radiance_G.value = n.g, this._radiance_B.value = n.b;
3738
3738
  }
3739
3739
  calculateRadiance(e, t, n) {
3740
- let r = D(n), i = D(t), a = d(e.element(4).mul(n)), s = r.mul(r), c = o(1).add(r.mul(r)).div(g(o(1).add(e.element(8).mul(e.element(8))).sub(e.element(8).mul(2).mul(r)), 1.5)), l = _(i);
3741
- return o(1).add(e.element(0).mul(d(e.element(1).div(i.add(.01))))).mul(e.element(2).add(e.element(3).mul(a)).add(e.element(5).mul(s)).add(e.element(6).mul(c)).add(e.element(7).mul(l)));
3740
+ let r = k(n), i = k(t), a = f(e.element(4).mul(n)), s = r.mul(r), c = w(1).add(r.mul(r)).div(b(w(1).add(e.element(8).mul(e.element(8))).sub(e.element(8).mul(2).mul(r)), 1.5)), l = o(i);
3741
+ return w(1).add(e.element(0).mul(f(e.element(1).div(i.add(.01))))).mul(e.element(2).add(e.element(3).mul(a)).add(e.element(5).mul(s)).add(e.element(6).mul(c)).add(e.element(7).mul(l)));
3742
3742
  }
3743
3743
  tonemapExtendedReinhard(e) {
3744
- let t = e.dot(l(.2126, .7152, .0722)), n = o(1).add(t.div(this.tonemapWhite.mul(this.tonemapWhite))).div(o(1).add(t));
3744
+ let t = e.dot(a(.2126, .7152, .0722)), n = w(1).add(t.div(this.tonemapWhite.mul(this.tonemapWhite))).div(w(1).add(t));
3745
3745
  return e.mul(this.tonemapExposure).mul(n);
3746
3746
  }
3747
3747
  removeColorBanding(e, t, n) {
3748
- let r = e.add(H(s(t, n)).sub(.5).mul(.02));
3748
+ let r = e.add(H(j(t, n)).sub(.5).mul(.02));
3749
3749
  return this.fixColorBanding.select(r, e);
3750
3750
  }
3751
3751
  };
3752
3752
  //#endregion
3753
3753
  export { G as HosekWilkieSky };
3754
3754
 
3755
- //# sourceMappingURL=hosek-wilkie-sky-iMar2iw-.mjs.map
3755
+ //# sourceMappingURL=hosek-wilkie-sky-DmTvnxMA.mjs.map