@roomle/web-sdk 2.94.0 → 2.95.1
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.
- package/.releaserc.json +7 -5
- package/lib/TextGeometry-259292ec.nomodule.js +2 -0
- package/lib/TextGeometry-259292ec.nomodule.js.map +1 -0
- package/lib/TextGeometry-dc304c0e.js +2 -0
- package/lib/TextGeometry-dc304c0e.js.map +1 -0
- package/lib/{banana-for-scale-1f451414.nomodule.js → banana-for-scale-71781669.nomodule.js} +2 -2
- package/lib/{banana-for-scale-1f451414.nomodule.js.map → banana-for-scale-71781669.nomodule.js.map} +1 -1
- package/lib/{banana-for-scale-8479c8a1.js → banana-for-scale-bd7ed014.js} +2 -2
- package/lib/{banana-for-scale-8479c8a1.js.map → banana-for-scale-bd7ed014.js.map} +1 -1
- package/lib/{budgeteer-measure-f6505461.js → budgeteer-measure-7662ae7e.js} +2 -2
- package/lib/{budgeteer-measure-f6505461.js.map → budgeteer-measure-7662ae7e.js.map} +1 -1
- package/lib/budgeteer-measure.nomodule.js +1 -1
- package/lib/camera-behaviour-24973bc6.js +2 -0
- package/lib/camera-behaviour-24973bc6.js.map +1 -0
- package/lib/camera-behaviour-38b2e4d9.nomodule.js +2 -0
- package/lib/camera-behaviour-38b2e4d9.nomodule.js.map +1 -0
- package/lib/component-dimensioning-4e0a7151.nomodule.js +2 -0
- package/lib/component-dimensioning-4e0a7151.nomodule.js.map +1 -0
- package/lib/component-dimensioning-9829423d.js +2 -0
- package/lib/component-dimensioning-9829423d.js.map +1 -0
- package/lib/{component-raycast-helper-163d42ba.nomodule.js → component-raycast-helper-15d24684.nomodule.js} +2 -2
- package/lib/component-raycast-helper-15d24684.nomodule.js.map +1 -0
- package/lib/{component-raycast-helper-479486e8.js → component-raycast-helper-4fdfba05.js} +2 -2
- package/lib/component-raycast-helper-4fdfba05.js.map +1 -0
- package/lib/{configurator-b5e4a5ee.nomodule.js → configurator-0d7d6a64.nomodule.js} +2 -2
- package/lib/configurator-0d7d6a64.nomodule.js.map +1 -0
- package/lib/{configurator-9333ac17.js → configurator-d59d9acf.js} +2 -2
- package/lib/configurator-d59d9acf.js.map +1 -0
- package/lib/configurator-main-23183c5c.js +2 -0
- package/lib/configurator-main-23183c5c.js.map +1 -0
- package/lib/configurator-main.nomodule.js +1 -1
- package/lib/{continuous-drawing-helper-6f2f4c78.nomodule.js → continuous-drawing-helper-0f94d7f7.nomodule.js} +2 -2
- package/lib/continuous-drawing-helper-0f94d7f7.nomodule.js.map +1 -0
- package/lib/{continuous-drawing-helper-f8a966d9.js → continuous-drawing-helper-a1262a15.js} +2 -2
- package/lib/continuous-drawing-helper-a1262a15.js.map +1 -0
- package/lib/{default-light-setting-6425c714.js → default-light-setting-20f64f6d.js} +2 -2
- package/lib/default-light-setting-20f64f6d.js.map +1 -0
- package/lib/{default-light-setting-99036b6f.nomodule.js → default-light-setting-2983998d.nomodule.js} +2 -2
- package/lib/default-light-setting-2983998d.nomodule.js.map +1 -0
- package/lib/definitions/common-core/src/cameracontrol/camera-control.d.ts +1 -0
- package/lib/definitions/common-core/src/configurator-kernel-access.d.ts +0 -1
- package/lib/definitions/common-core/src/rapi-access.d.ts +5 -1
- package/lib/definitions/common-core/src/utils/init-data.d.ts +2 -0
- package/lib/definitions/common-core/src/utils/shims.d.ts +15 -1
- package/lib/definitions/common-core/src/view-model/plan-element-view-model.d.ts +1 -1
- package/lib/definitions/common-core/src/webgl/renderer/scene-renderer.d.ts +2 -1
- package/lib/definitions/common-core/src/webgl/roomle-webgl-renderer.d.ts +1 -1
- package/lib/definitions/configurator-core/src/roomle-configurator.d.ts +9 -2
- package/lib/definitions/configurator-core/src/services/configurator-ui-callback.d.ts +2 -1
- package/lib/definitions/configurator-core/src/utils/imos-ix-poc-export-helper.d.ts +43 -0
- package/lib/definitions/configurator-core/src/utils/selection-handler.d.ts +4 -1
- package/lib/definitions/configurator-core/src/webgl/configurator-scene-event-handler.d.ts +5 -2
- package/lib/definitions/configurator-core/src/webgl/configurator-scene-manager.d.ts +3 -2
- package/lib/definitions/packages/common-core/src/cameracontrol/camera-control.d.ts +1 -0
- package/lib/definitions/packages/common-core/src/configurator-kernel-access.d.ts +0 -1
- package/lib/definitions/packages/common-core/src/rapi-access.d.ts +5 -1
- package/lib/definitions/packages/common-core/src/utils/init-data.d.ts +2 -0
- package/lib/definitions/packages/common-core/src/utils/shims.d.ts +15 -1
- package/lib/definitions/packages/common-core/src/view-model/plan-element-view-model.d.ts +1 -1
- package/lib/definitions/packages/common-core/src/webgl/renderer/scene-renderer.d.ts +2 -1
- package/lib/definitions/packages/common-core/src/webgl/roomle-webgl-renderer.d.ts +1 -1
- package/lib/definitions/packages/configurator-core/src/roomle-configurator.d.ts +9 -2
- package/lib/definitions/packages/configurator-core/src/services/configurator-ui-callback.d.ts +2 -1
- package/lib/definitions/packages/configurator-core/src/utils/imos-ix-poc-export-helper.d.ts +43 -0
- package/lib/definitions/packages/configurator-core/src/utils/selection-handler.d.ts +4 -1
- package/lib/definitions/packages/configurator-core/src/webgl/configurator-scene-event-handler.d.ts +5 -2
- package/lib/definitions/packages/configurator-core/src/webgl/configurator-scene-manager.d.ts +3 -2
- package/lib/definitions/packages/planner-core/src/camera-control/camera-control-first-person.d.ts +1 -0
- package/lib/definitions/packages/planner-core/src/external-object-api-callbacks.d.ts +26 -12
- package/lib/definitions/packages/planner-core/src/external-object-api.d.ts +10 -3
- package/lib/definitions/packages/planner-core/src/roomle-planner-ui-callback.d.ts +10 -5
- package/lib/definitions/packages/planner-core/src/roomle-planner.d.ts +63 -7
- package/lib/definitions/packages/planner-core/src/services/planner-kernel-access.d.ts +11 -11
- package/lib/definitions/packages/planner-core/src/utils/planner-scene-manager.d.ts +1 -1
- package/lib/definitions/packages/planner-core/src/view-model/plan-view-model.d.ts +8 -0
- package/lib/definitions/packages/planner-core/src/view-model/wall-attic-plan-element-view-model.d.ts +9 -0
- package/lib/definitions/packages/planner-core/src/view-model/wall-plan-element-view-model.d.ts +4 -0
- package/lib/definitions/packages/planner-core/src/webgl/planner-scene-event-handler.d.ts +1 -0
- package/lib/definitions/packages/planner-core/src/webgl/planner-scene-manager.d.ts +6 -0
- package/lib/definitions/packages/typings/kernel.d.ts +15 -0
- package/lib/definitions/packages/typings/planner.d.ts +39 -4
- package/lib/definitions/planner-core/src/camera-control/camera-control-first-person.d.ts +1 -0
- package/lib/definitions/planner-core/src/external-object-api-callbacks.d.ts +26 -12
- package/lib/definitions/planner-core/src/external-object-api.d.ts +10 -3
- package/lib/definitions/planner-core/src/roomle-planner-ui-callback.d.ts +10 -5
- package/lib/definitions/planner-core/src/roomle-planner.d.ts +63 -7
- package/lib/definitions/planner-core/src/services/planner-kernel-access.d.ts +11 -11
- package/lib/definitions/planner-core/src/utils/planner-scene-manager.d.ts +1 -1
- package/lib/definitions/planner-core/src/view-model/plan-view-model.d.ts +8 -0
- package/lib/definitions/planner-core/src/view-model/wall-attic-plan-element-view-model.d.ts +9 -0
- package/lib/definitions/planner-core/src/view-model/wall-plan-element-view-model.d.ts +4 -0
- package/lib/definitions/planner-core/src/webgl/planner-scene-event-handler.d.ts +1 -0
- package/lib/definitions/planner-core/src/webgl/planner-scene-manager.d.ts +6 -0
- package/lib/definitions/typings/kernel.d.ts +15 -0
- package/lib/definitions/typings/planner.d.ts +39 -4
- package/lib/dimensioning-helper-9d046848.nomodule.js +2 -0
- package/lib/dimensioning-helper-9d046848.nomodule.js.map +1 -0
- package/lib/dimensioning-helper-c98b39cc.js +2 -0
- package/lib/{dimensioning-helper-318b729d.js.map → dimensioning-helper-c98b39cc.js.map} +1 -1
- package/lib/{glb-viewer-66869df0.js → glb-viewer-212c78d9.js} +2 -2
- package/lib/{glb-viewer-66869df0.js.map → glb-viewer-212c78d9.js.map} +1 -1
- package/lib/{glb-viewer-2d94a287.nomodule.js → glb-viewer-a684a4c6.nomodule.js} +2 -2
- package/lib/{glb-viewer-2d94a287.nomodule.js.map → glb-viewer-a684a4c6.nomodule.js.map} +1 -1
- package/lib/{glb-viewer-camera-behaviour-169bee0e.js → glb-viewer-camera-behaviour-45c2ab16.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-45c2ab16.js.map +1 -0
- package/lib/{glb-viewer-camera-behaviour-0aba3eb3.nomodule.js → glb-viewer-camera-behaviour-9754b7f1.nomodule.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-9754b7f1.nomodule.js.map +1 -0
- package/lib/glb-viewer-main-ad9f4fc7.js +2 -0
- package/lib/glb-viewer-main-ad9f4fc7.js.map +1 -0
- package/lib/glb-viewer-main.nomodule.js +1 -1
- package/lib/imos-ix-poc-export-helper-6a36afe0.nomodule.js +2 -0
- package/lib/imos-ix-poc-export-helper-6a36afe0.nomodule.js.map +1 -0
- package/lib/imos-ix-poc-export-helper-9404ff2e.js +2 -0
- package/lib/imos-ix-poc-export-helper-9404ff2e.js.map +1 -0
- package/lib/legacy/TextGeometry-7a5a6f22.legacy.js +2 -0
- package/lib/legacy/TextGeometry-7a5a6f22.legacy.js.map +1 -0
- package/lib/legacy/{banana-for-scale-a28854f7.legacy.js → banana-for-scale-063481d1.legacy.js} +2 -2
- package/lib/legacy/{banana-for-scale-a28854f7.legacy.js.map → banana-for-scale-063481d1.legacy.js.map} +1 -1
- package/lib/legacy/budgeteer-measure.legacy.js +1 -1
- package/lib/legacy/camera-behaviour-c9de2cca.legacy.js +2 -0
- package/lib/legacy/camera-behaviour-c9de2cca.legacy.js.map +1 -0
- package/lib/legacy/component-dimensioning-bdada177.legacy.js +2 -0
- package/lib/legacy/component-dimensioning-bdada177.legacy.js.map +1 -0
- package/lib/legacy/{component-raycast-helper-17b7f665.legacy.js → component-raycast-helper-9add4bb8.legacy.js} +2 -2
- package/lib/legacy/component-raycast-helper-9add4bb8.legacy.js.map +1 -0
- package/lib/legacy/{configurator-c69e87db.legacy.js → configurator-a0fc9e2b.legacy.js} +2 -2
- package/lib/legacy/configurator-a0fc9e2b.legacy.js.map +1 -0
- package/lib/legacy/configurator-main.legacy.js +1 -1
- package/lib/legacy/{continuous-drawing-helper-bb050ff2.legacy.js → continuous-drawing-helper-def6a16b.legacy.js} +2 -2
- package/lib/legacy/continuous-drawing-helper-def6a16b.legacy.js.map +1 -0
- package/lib/legacy/{default-light-setting-086a7648.legacy.js → default-light-setting-0867c2ad.legacy.js} +2 -2
- package/lib/legacy/default-light-setting-0867c2ad.legacy.js.map +1 -0
- package/lib/legacy/dimensioning-helper-6a8cddd0.legacy.js +2 -0
- package/lib/legacy/dimensioning-helper-6a8cddd0.legacy.js.map +1 -0
- package/lib/legacy/{glb-viewer-4a69cf11.legacy.js → glb-viewer-110cb6c4.legacy.js} +2 -2
- package/lib/legacy/{glb-viewer-4a69cf11.legacy.js.map → glb-viewer-110cb6c4.legacy.js.map} +1 -1
- package/lib/legacy/{glb-viewer-camera-behaviour-a0bd3636.legacy.js → glb-viewer-camera-behaviour-f6168432.legacy.js} +2 -2
- package/lib/legacy/glb-viewer-camera-behaviour-f6168432.legacy.js.map +1 -0
- package/lib/legacy/glb-viewer-main.legacy.js +1 -1
- package/lib/legacy/imos-ix-poc-export-helper-fdfedc90.legacy.js +2 -0
- package/lib/legacy/imos-ix-poc-export-helper-fdfedc90.legacy.js.map +1 -0
- package/lib/legacy/main-thread-to-worker-6115d235.legacy.js +7 -0
- package/lib/legacy/main-thread-to-worker-6115d235.legacy.js.map +1 -0
- package/lib/legacy/{material-viewer-aec0f3b7.legacy.js → material-viewer-b67b9c39.legacy.js} +2 -2
- package/lib/legacy/material-viewer-b67b9c39.legacy.js.map +1 -0
- package/lib/legacy/material-viewer-main.legacy.js +1 -1
- package/lib/legacy/planner-9f484212.legacy.js +2 -0
- package/lib/legacy/planner-9f484212.legacy.js.map +1 -0
- package/lib/legacy/planner-main.legacy.js +1 -1
- package/lib/legacy/{query-params-helper-aca6a1b1.legacy.js → query-params-helper-28b451be.legacy.js} +2 -2
- package/lib/legacy/query-params-helper-28b451be.legacy.js.map +1 -0
- package/lib/legacy/roomle-configurator-de101c34.legacy.js +2 -0
- package/lib/legacy/roomle-configurator-de101c34.legacy.js.map +1 -0
- package/lib/legacy/roomle-dependency-injection-6f2ea0b0.legacy.js +9 -0
- package/lib/legacy/roomle-dependency-injection-6f2ea0b0.legacy.js.map +1 -0
- package/lib/legacy/roomle-sdk.legacy.js +1 -1
- package/lib/legacy/{script-loader-d6b10e8e.legacy.js → script-loader-813426c5.legacy.js} +2 -2
- package/lib/legacy/script-loader-813426c5.legacy.js.map +1 -0
- package/lib/legacy/static/ConfiguratorKernel-224f3e49bcca1cee.wasm +0 -0
- package/lib/legacy/static/{ConfiguratorKernel-2ddc08f9542fc91f.js → ConfiguratorKernel-f5baba2ad8da5981.js} +3 -3
- package/lib/legacy/static/{RoomleCore-f2d7b1b87640ef15.js → RoomleCore-df3ed2b0c7211584.js} +50 -50
- package/lib/legacy/static/RoomleCore-f35e0972ad5263e7.wasm +0 -0
- package/lib/legacy/static/RoomleToolsCore-c263aadc8e58a52f.wasm +0 -0
- package/lib/legacy/static/default-external-object-api-configuration-c4294f96099e0d09.json +70 -0
- package/lib/legacy/{stats-helper-4d796606.legacy.js → stats-helper-df7e9281.legacy.js} +2 -2
- package/lib/legacy/stats-helper-df7e9281.legacy.js.map +1 -0
- package/lib/legacy/{tools-core-15dc1d58.legacy.js → tools-core-0de78af1.legacy.js} +2 -2
- package/lib/legacy/tools-core-0de78af1.legacy.js.map +1 -0
- package/lib/main-thread-to-worker-352ff4b1.js +8 -0
- package/lib/main-thread-to-worker-352ff4b1.js.map +1 -0
- package/lib/main-thread-to-worker-7f1cb5ea.nomodule.js +8 -0
- package/lib/main-thread-to-worker-7f1cb5ea.nomodule.js.map +1 -0
- package/lib/{material-viewer-2c8625ff.nomodule.js → material-viewer-17245c14.nomodule.js} +2 -2
- package/lib/material-viewer-17245c14.nomodule.js.map +1 -0
- package/lib/{material-viewer-c9197111.js → material-viewer-21b41edc.js} +2 -2
- package/lib/material-viewer-21b41edc.js.map +1 -0
- package/lib/material-viewer-main-7a85fb66.js +2 -0
- package/lib/material-viewer-main-7a85fb66.js.map +1 -0
- package/lib/material-viewer-main.nomodule.js +1 -1
- package/lib/planner-0f75d071.nomodule.js +2 -0
- package/lib/planner-0f75d071.nomodule.js.map +1 -0
- package/lib/planner-2a7134a5.js +2 -0
- package/lib/planner-2a7134a5.js.map +1 -0
- package/lib/planner-main-49e474c0.js +2 -0
- package/lib/planner-main-49e474c0.js.map +1 -0
- package/lib/planner-main.nomodule.js +1 -1
- package/lib/{query-params-helper-c9492f35.js → query-params-helper-28405b8d.js} +2 -2
- package/lib/query-params-helper-28405b8d.js.map +1 -0
- package/lib/{query-params-helper-51a53f8c.nomodule.js → query-params-helper-4f855064.nomodule.js} +2 -2
- package/lib/query-params-helper-4f855064.nomodule.js.map +1 -0
- package/lib/roomle-configurator-0efacaed.nomodule.js +2 -0
- package/lib/roomle-configurator-0efacaed.nomodule.js.map +1 -0
- package/lib/roomle-configurator-c663d225.js +2 -0
- package/lib/roomle-configurator-c663d225.js.map +1 -0
- package/lib/roomle-dependency-injection-2c9062d2.js +9 -0
- package/lib/roomle-dependency-injection-2c9062d2.js.map +1 -0
- package/lib/roomle-dependency-injection-7065f121.nomodule.js +9 -0
- package/lib/roomle-dependency-injection-7065f121.nomodule.js.map +1 -0
- package/lib/{roomle-sdk-6ccf3ded.js → roomle-sdk-05836f4b.js} +2 -2
- package/lib/roomle-sdk-05836f4b.js.map +1 -0
- package/lib/roomle-sdk.nomodule.js +1 -1
- package/lib/{script-loader-8964e022.js → script-loader-7e3054f7.js} +2 -2
- package/lib/script-loader-7e3054f7.js.map +1 -0
- package/lib/{script-loader-b4e814f2.nomodule.js → script-loader-d022ac10.nomodule.js} +2 -2
- package/lib/script-loader-d022ac10.nomodule.js.map +1 -0
- package/lib/static/ConfiguratorKernel-224f3e49bcca1cee.wasm +0 -0
- package/lib/static/{ConfiguratorKernel-2ddc08f9542fc91f.js → ConfiguratorKernel-f5baba2ad8da5981.js} +1 -1
- package/lib/static/{ConfiguratorKernel-2ddc08f9542fc91f.js.map → ConfiguratorKernel-f5baba2ad8da5981.js.map} +1 -1
- package/lib/static/RoomleCore-df3ed2b0c7211584.js +1 -0
- package/lib/static/RoomleCore-df3ed2b0c7211584.js.map +1 -0
- package/lib/static/RoomleCore-f35e0972ad5263e7.wasm +0 -0
- package/lib/static/RoomleToolsCore-c263aadc8e58a52f.wasm +0 -0
- package/lib/static/default-external-object-api-configuration-c4294f96099e0d09.json +70 -0
- package/lib/{stats-helper-510ddd65.js → stats-helper-35f4c9ae.js} +2 -2
- package/lib/stats-helper-35f4c9ae.js.map +1 -0
- package/lib/{stats-helper-86728f77.nomodule.js → stats-helper-76e1b50a.nomodule.js} +2 -2
- package/lib/stats-helper-76e1b50a.nomodule.js.map +1 -0
- package/lib/{tools-core-0f3ae134.nomodule.js → tools-core-027637cd.nomodule.js} +2 -2
- package/lib/tools-core-027637cd.nomodule.js.map +1 -0
- package/lib/{tools-core-bae4492f.js → tools-core-3bdc826b.js} +2 -2
- package/lib/tools-core-3bdc826b.js.map +1 -0
- package/package.json +3 -3
- package/lib/TextGeometry-ab643210.js +0 -2
- package/lib/TextGeometry-ab643210.js.map +0 -1
- package/lib/TextGeometry-cd81779b.nomodule.js +0 -2
- package/lib/TextGeometry-cd81779b.nomodule.js.map +0 -1
- package/lib/camera-behaviour-27b6ce79.nomodule.js +0 -2
- package/lib/camera-behaviour-27b6ce79.nomodule.js.map +0 -1
- package/lib/camera-behaviour-b9a52002.js +0 -2
- package/lib/camera-behaviour-b9a52002.js.map +0 -1
- package/lib/component-dimensioning-9cc86304.nomodule.js +0 -2
- package/lib/component-dimensioning-9cc86304.nomodule.js.map +0 -1
- package/lib/component-dimensioning-aa4cd8f4.js +0 -2
- package/lib/component-dimensioning-aa4cd8f4.js.map +0 -1
- package/lib/component-raycast-helper-163d42ba.nomodule.js.map +0 -1
- package/lib/component-raycast-helper-479486e8.js.map +0 -1
- package/lib/configurator-9333ac17.js.map +0 -1
- package/lib/configurator-b5e4a5ee.nomodule.js.map +0 -1
- package/lib/configurator-main-d0382ff8.js +0 -2
- package/lib/configurator-main-d0382ff8.js.map +0 -1
- package/lib/continuous-drawing-helper-6f2f4c78.nomodule.js.map +0 -1
- package/lib/continuous-drawing-helper-f8a966d9.js.map +0 -1
- package/lib/default-light-setting-6425c714.js.map +0 -1
- package/lib/default-light-setting-99036b6f.nomodule.js.map +0 -1
- package/lib/dimensioning-helper-318b729d.js +0 -2
- package/lib/dimensioning-helper-49404687.nomodule.js +0 -2
- package/lib/dimensioning-helper-49404687.nomodule.js.map +0 -1
- package/lib/glb-viewer-camera-behaviour-0aba3eb3.nomodule.js.map +0 -1
- package/lib/glb-viewer-camera-behaviour-169bee0e.js.map +0 -1
- package/lib/glb-viewer-main-1b2e5764.js +0 -2
- package/lib/glb-viewer-main-1b2e5764.js.map +0 -1
- package/lib/legacy/TextGeometry-f4299b59.legacy.js +0 -2
- package/lib/legacy/TextGeometry-f4299b59.legacy.js.map +0 -1
- package/lib/legacy/camera-behaviour-e6ce4b6d.legacy.js +0 -2
- package/lib/legacy/camera-behaviour-e6ce4b6d.legacy.js.map +0 -1
- package/lib/legacy/component-dimensioning-a3182494.legacy.js +0 -2
- package/lib/legacy/component-dimensioning-a3182494.legacy.js.map +0 -1
- package/lib/legacy/component-raycast-helper-17b7f665.legacy.js.map +0 -1
- package/lib/legacy/configurator-c69e87db.legacy.js.map +0 -1
- package/lib/legacy/continuous-drawing-helper-bb050ff2.legacy.js.map +0 -1
- package/lib/legacy/default-light-setting-086a7648.legacy.js.map +0 -1
- package/lib/legacy/dimensioning-helper-fb07be35.legacy.js +0 -2
- package/lib/legacy/dimensioning-helper-fb07be35.legacy.js.map +0 -1
- package/lib/legacy/glb-viewer-camera-behaviour-a0bd3636.legacy.js.map +0 -1
- package/lib/legacy/main-thread-to-worker-7c2b8bc9.legacy.js +0 -7
- package/lib/legacy/main-thread-to-worker-7c2b8bc9.legacy.js.map +0 -1
- package/lib/legacy/material-viewer-aec0f3b7.legacy.js.map +0 -1
- package/lib/legacy/planner-2bc74cf2.legacy.js +0 -2
- package/lib/legacy/planner-2bc74cf2.legacy.js.map +0 -1
- package/lib/legacy/query-params-helper-aca6a1b1.legacy.js.map +0 -1
- package/lib/legacy/roomle-configurator-d5ea14c2.legacy.js +0 -2
- package/lib/legacy/roomle-configurator-d5ea14c2.legacy.js.map +0 -1
- package/lib/legacy/roomle-dependency-injection-500dbf0d.legacy.js +0 -9
- package/lib/legacy/roomle-dependency-injection-500dbf0d.legacy.js.map +0 -1
- package/lib/legacy/script-loader-d6b10e8e.legacy.js.map +0 -1
- package/lib/legacy/static/ConfiguratorKernel-793e445c9d64ee4b.wasm +0 -0
- package/lib/legacy/static/RoomleCore-7d39e007d6f9b788.wasm +0 -0
- package/lib/legacy/static/RoomleToolsCore-9c348432c6d79392.wasm +0 -0
- package/lib/legacy/static/default-external-object-api-configuration-1e7103889f664a3f.json +0 -16
- package/lib/legacy/stats-helper-4d796606.legacy.js.map +0 -1
- package/lib/legacy/tools-core-15dc1d58.legacy.js.map +0 -1
- package/lib/main-thread-to-worker-2529fa31.nomodule.js +0 -2
- package/lib/main-thread-to-worker-2529fa31.nomodule.js.map +0 -1
- package/lib/main-thread-to-worker-ee3036b3.js +0 -2
- package/lib/main-thread-to-worker-ee3036b3.js.map +0 -1
- package/lib/material-viewer-2c8625ff.nomodule.js.map +0 -1
- package/lib/material-viewer-c9197111.js.map +0 -1
- package/lib/material-viewer-main-8787208d.js +0 -2
- package/lib/material-viewer-main-8787208d.js.map +0 -1
- package/lib/planner-5fb6f448.js +0 -2
- package/lib/planner-5fb6f448.js.map +0 -1
- package/lib/planner-65127889.nomodule.js +0 -2
- package/lib/planner-65127889.nomodule.js.map +0 -1
- package/lib/planner-main-d8ae156a.js +0 -2
- package/lib/planner-main-d8ae156a.js.map +0 -1
- package/lib/query-params-helper-51a53f8c.nomodule.js.map +0 -1
- package/lib/query-params-helper-c9492f35.js.map +0 -1
- package/lib/roomle-configurator-9fe534c7.js +0 -2
- package/lib/roomle-configurator-9fe534c7.js.map +0 -1
- package/lib/roomle-configurator-ebb94f0f.nomodule.js +0 -2
- package/lib/roomle-configurator-ebb94f0f.nomodule.js.map +0 -1
- package/lib/roomle-dependency-injection-4e221caa.js +0 -9
- package/lib/roomle-dependency-injection-4e221caa.js.map +0 -1
- package/lib/roomle-dependency-injection-5fd128b0.nomodule.js +0 -9
- package/lib/roomle-dependency-injection-5fd128b0.nomodule.js.map +0 -1
- package/lib/roomle-sdk-6ccf3ded.js.map +0 -1
- package/lib/script-loader-8964e022.js.map +0 -1
- package/lib/script-loader-b4e814f2.nomodule.js.map +0 -1
- package/lib/static/ConfiguratorKernel-793e445c9d64ee4b.wasm +0 -0
- package/lib/static/RoomleCore-7d39e007d6f9b788.wasm +0 -0
- package/lib/static/RoomleCore-f2d7b1b87640ef15.js +0 -1
- package/lib/static/RoomleCore-f2d7b1b87640ef15.js.map +0 -1
- package/lib/static/RoomleToolsCore-9c348432c6d79392.wasm +0 -0
- package/lib/static/default-external-object-api-configuration-1e7103889f664a3f.json +0 -16
- package/lib/stats-helper-510ddd65.js.map +0 -1
- package/lib/stats-helper-86728f77.nomodule.js.map +0 -1
- package/lib/tools-core-0f3ae134.nomodule.js.map +0 -1
- package/lib/tools-core-bae4492f.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planner-2bc74cf2.legacy.js","sources":["../../../node_modules/three/examples/jsm/objects/Sky.js","../../../packages/common-core/public/textures/paper_background.png","../../../packages/configurator-core/public/settings/default-external-object-api-configuration.json"],"sourcesContent":["import {\n\tBackSide,\n\tBoxGeometry,\n\tMesh,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3\n} from 'three';\n\n/**\n * Based on \"A Practical Analytic Model for Daylight\"\n * aka The Preetham Model, the de facto standard analytic skydome model\n * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight\n *\n * First implemented by Simon Wallner\n * http://simonwallner.at/project/atmospheric-scattering/\n *\n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n *\n * Three.js integration by zz85 http://twitter.com/blurspline\n*/\n\nclass Sky extends Mesh {\n\n\tconstructor() {\n\n\t\tconst shader = Sky.SkyShader;\n\n\t\tconst material = new ShaderMaterial( {\n\t\t\tname: shader.name,\n\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false\n\t\t} );\n\n\t\tsuper( new BoxGeometry( 1, 1, 1 ), material );\n\n\t\tthis.isSky = true;\n\n\t}\n\n}\n\nSky.SkyShader = {\n\n\tname: 'SkyShader',\n\n\tuniforms: {\n\t\t'turbidity': { value: 2 },\n\t\t'rayleigh': { value: 1 },\n\t\t'mieCoefficient': { value: 0.005 },\n\t\t'mieDirectionalG': { value: 0.8 },\n\t\t'sunPosition': { value: new Vector3() },\n\t\t'up': { value: new Vector3( 0, 1, 0 ) }\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tuniform vec3 sunPosition;\n\t\tuniform float rayleigh;\n\t\tuniform float turbidity;\n\t\tuniform float mieCoefficient;\n\t\tuniform vec3 up;\n\n\t\tvarying vec3 vWorldPosition;\n\t\tvarying vec3 vSunDirection;\n\t\tvarying float vSunfade;\n\t\tvarying vec3 vBetaR;\n\t\tvarying vec3 vBetaM;\n\t\tvarying float vSunE;\n\n\t\t// constants for atmospheric scattering\n\t\tconst float e = 2.71828182845904523536028747135266249775724709369995957;\n\t\tconst float pi = 3.141592653589793238462643383279502884197169;\n\n\t\t// wavelength of used primaries, according to preetham\n\t\tconst vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );\n\t\t// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:\n\t\t// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))\n\t\tconst vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );\n\n\t\t// mie stuff\n\t\t// K coefficient for the primaries\n\t\tconst float v = 4.0;\n\t\tconst vec3 K = vec3( 0.686, 0.678, 0.666 );\n\t\t// MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K\n\t\tconst vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );\n\n\t\t// earth shadow hack\n\t\t// cutoffAngle = pi / 1.95;\n\t\tconst float cutoffAngle = 1.6110731556870734;\n\t\tconst float steepness = 1.5;\n\t\tconst float EE = 1000.0;\n\n\t\tfloat sunIntensity( float zenithAngleCos ) {\n\t\t\tzenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );\n\t\t\treturn EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );\n\t\t}\n\n\t\tvec3 totalMie( float T ) {\n\t\t\tfloat c = ( 0.2 * T ) * 10E-18;\n\t\t\treturn 0.434 * c * MieConst;\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\t\t\tvWorldPosition = worldPosition.xyz;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position.z = gl_Position.w; // set z to camera.far\n\n\t\t\tvSunDirection = normalize( sunPosition );\n\n\t\t\tvSunE = sunIntensity( dot( vSunDirection, up ) );\n\n\t\t\tvSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );\n\n\t\t\tfloat rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );\n\n\t\t\t// extinction (absorbtion + out scattering)\n\t\t\t// rayleigh coefficients\n\t\t\tvBetaR = totalRayleigh * rayleighCoefficient;\n\n\t\t\t// mie coefficients\n\t\t\tvBetaM = totalMie( turbidity ) * mieCoefficient;\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tvarying vec3 vWorldPosition;\n\t\tvarying vec3 vSunDirection;\n\t\tvarying float vSunfade;\n\t\tvarying vec3 vBetaR;\n\t\tvarying vec3 vBetaM;\n\t\tvarying float vSunE;\n\n\t\tuniform float mieDirectionalG;\n\t\tuniform vec3 up;\n\n\t\t// constants for atmospheric scattering\n\t\tconst float pi = 3.141592653589793238462643383279502884197169;\n\n\t\tconst float n = 1.0003; // refractive index of air\n\t\tconst float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius)\n\n\t\t// optical length at zenith for molecules\n\t\tconst float rayleighZenithLength = 8.4E3;\n\t\tconst float mieZenithLength = 1.25E3;\n\t\t// 66 arc seconds -> degrees, and the cosine of that\n\t\tconst float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\n\n\t\t// 3.0 / ( 16.0 * pi )\n\t\tconst float THREE_OVER_SIXTEENPI = 0.05968310365946075;\n\t\t// 1.0 / ( 4.0 * pi )\n\t\tconst float ONE_OVER_FOURPI = 0.07957747154594767;\n\n\t\tfloat rayleighPhase( float cosTheta ) {\n\t\t\treturn THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );\n\t\t}\n\n\t\tfloat hgPhase( float cosTheta, float g ) {\n\t\t\tfloat g2 = pow( g, 2.0 );\n\t\t\tfloat inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );\n\t\t\treturn ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec3 direction = normalize( vWorldPosition - cameraPosition );\n\n\t\t\t// optical length\n\t\t\t// cutoff angle at 90 to avoid singularity in next formula.\n\t\t\tfloat zenithAngle = acos( max( 0.0, dot( up, direction ) ) );\n\t\t\tfloat inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );\n\t\t\tfloat sR = rayleighZenithLength * inverse;\n\t\t\tfloat sM = mieZenithLength * inverse;\n\n\t\t\t// combined extinction factor\n\t\t\tvec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );\n\n\t\t\t// in scattering\n\t\t\tfloat cosTheta = dot( direction, vSunDirection );\n\n\t\t\tfloat rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );\n\t\t\tvec3 betaRTheta = vBetaR * rPhase;\n\n\t\t\tfloat mPhase = hgPhase( cosTheta, mieDirectionalG );\n\t\t\tvec3 betaMTheta = vBetaM * mPhase;\n\n\t\t\tvec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );\n\t\t\tLin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );\n\n\t\t\t// nightsky\n\t\t\tfloat theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]\n\t\t\tfloat phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]\n\t\t\tvec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );\n\t\t\tvec3 L0 = vec3( 0.1 ) * Fex;\n\n\t\t\t// composition + solar disc\n\t\t\tfloat sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );\n\t\t\tL0 += ( vSunE * 19000.0 * Fex ) * sundisk;\n\n\t\t\tvec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );\n\n\t\t\tvec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );\n\n\t\t\tgl_FragColor = vec4( retColor, 1.0 );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <colorspace_fragment>\n\n\t\t}`\n\n};\n\nexport { Sky };\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVUAAAFVCAYAAABfDHwuAAFvk0lEQVR42nTdPatuaVb18fWpOzbqtKIDXUFHjYmJGJiIgYEGQiMIIoKCKKKIiChVTYcP84b/5lfjWRWcOnX2vl/WutZ1zZcxxxzz+du//dvv/+Vf/uX7f/qnf/r+H//xH7//y7/8y+9/+9vffv+v//qv3//N3/zN93/1V3/1/T//8z9//9///d+fv+/19+dee7+/195reu3f//3ff/93f/d3n9feZ/b6e11/7jvuO//t3/7t8/r72b3/H/7hHz6v/ZM/+ZPPZ93n9Hn3nvv/+3Ovu9/fnz6v+7jv7R7uz732rvV+fn93Pb3+Pu9+d6/ze+61d/29/353f//7v//718/u73vNfc79/733/r57uf9vfe419+c+4773fn5/+vf9ue+899zPvPfuv8/6i7/4i8/r7/l03ffnrqHruN/18/vT+t6f//zP//z6/353n9/9d02t7b3uP/7jP772Q/fsfdzP7pm1lvf6+7s9cdfc3/eaP//zP//8vs+/tezZ9Ez++q//+vP6+3Pfd6+7992ffn7XdK+999xzudfc596/7/d/+qd/+tlj97P7+/60lvf59513rXcdPuP25P3/XXfP+v6/PXZ/7vvbI7337uH+/z7/PufW27W9n9/n3M+6x/v/e+19nmeifdY1tNb3mu7B/dqZa13aB/f3Xfd95r239ezzujb3RnvR1929+exv7Vr/zmXr1DP6r//6r6/P+LM/+7PP6+79dx3/8z//83Wt9+d+3xm653mf3zm5v3vt3Uef0d5t73Vv99q7nz77Pq/3dX/t/7vezmjP9d6bvetM3hrf7+6z2gOdy/v5H//xH3+u6enhtTh3I31QP7/NeT+/L7033UL15ffn//7v/z6bPUOUQdBY3J+7sHv9vT+j14ZoU9w1dNB6sN1Ir8mgtCAZhgxLC9ZN3//f9d9D7loyvG2GrrXDm6HuYeUIWvj7c6/r81srH/jd5/3tYbvP+KM/+qPPtdzPffBtWA1613Svu5+38fqse11rmDHKWPSaW697z13vvf7W8n7Xoej6+16dV99xB6DP7xm1ObvG9oyHoc9pP2RgO8gZrFun+9299xz4/a71uOvv/jIC7bfWOIOaYfKZdNBy5PcaDUbXUmCRo2xf5tj6fXurw3if2Trdn/Z6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\";\n export default img;","export default \"static/default-external-object-api-configuration-1e7103889f664a3f.json\""],"names":["Sky","_Mesh","_inherits","_super","_createSuper","_this","_classCallCheck","shader","SkyShader","material","ShaderMaterial","name","uniforms","UniformsUtils","clone","vertexShader","fragmentShader","side","BackSide","depthWrite","call","BoxGeometry","isSky","_createClass","Mesh","turbidity","value","rayleigh","mieCoefficient","mieDirectionalG","sunPosition","Vector3","up"],"mappings":"07vBASA,IAcMA,YAAGC,GAAAC,GAAAF,EAAAC,GAAA,IAAAE,EAAAC,GAAAJ,GAER,SAAAA,IAAc,IAAAK,EAAAC,QAAAN,GAEb,IAAMO,EAASP,EAAIQ,UAEbC,EAAW,IAAIC,GAAgB,CACpCC,KAAMJ,EAAOI,KACbC,SAAUC,GAAcC,MAAOP,EAAOK,UACtCG,aAAcR,EAAOQ,aACrBC,eAAgBT,EAAOS,eACvBC,KAAMC,GACNC,YAAY,IAKK,OAFlBd,EAAAF,EAAAiB,UAAO,IAAIC,GAAa,EAAG,EAAG,GAAKZ,IAE9Ba,OAAQ,EAAKjB,EAElB,OAAAkB,GAAAvB,IAnBgBwB,IAuBlBxB,GAAIQ,UAAY,CAEfG,KAAM,YAENC,SAAU,CACTa,UAAa,CAAEC,MAAO,GACtBC,SAAY,CAAED,MAAO,GACrBE,eAAkB,CAAEF,MAAO,MAC3BG,gBAAmB,CAAEH,MAAO,IAC5BI,YAAe,CAAEJ,MAAO,IAAIK,IAC5BC,GAAM,CAAEN,MAAO,IAAIK,GAAS,EAAG,EAAG,KAGnChB,aAsEG,6gFAEHC,eAAgB,ovJCnIP,0l+LCAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-params-helper-aca6a1b1.legacy.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./roomle-dependency-injection-500dbf0d.legacy.js","./camera-behaviour-e6ce4b6d.legacy.js","./main-thread-to-worker-7c2b8bc9.legacy.js","./default-light-setting-086a7648.legacy.js"],(function(e,t){var n,i,o,s,r,a,l,c,h,d,_,u,g,m,p,C,f,v,b,w,P,y,M,I,O,E,D,S,A,k,x,H,j,R,L,V,B,T,F,G,K,U,N,q,W,z,Z,J,Q,X,Y,$,ee,te,ne,ie,oe,se,re,ae,le,ce,he,de,_e,ue,ge,me,pe,Ce,fe,ve,be,we,Pe,ye,Me,Ie,Oe,Ee,De;return{setters:[function(e){n=e._,i=e.i,o=e.b,s=e.c,r=e.d,a=e.e,l=e.m,c=e.B,h=e.f,d=e.g,_=e.h,u=e.k,g=e.j,m=e.C,p=e.l,C=e.n,f=e.S,v=e.M,b=e.W,w=e.F,P=e.o,y=e.N,M=e.P,I=e.E,O=e.p,E=e.v,D=e.q,S=e.r,A=e.t,k=e.s,x=e.u,H=e.w,j=e.x,R=e.y,L=e.z,V=e.G,B=e.H,T=e.J,F=e.K,G=e.O,K=e.Q,U=e.T,N=e.U,q=e.V,W=e.A,z=e.X,Z=e.Y,J=e.Z,Q=e.$,X=e.a0},function(e){Y=e.R,$=e.b,ee=e.S,te=e.P,ne=e.c,ie=e.B,oe=e.D,se=e.C,re=e.F,ae=e.T},function(e){le=e.J,ce=e.B,he=e.O,de=e.ak,_e=e.X,ue=e.aN,ge=e.a,me=e.bH,pe=e.bI,Ce=e.V,fe=e.Q,ve=e.bF,be=e.aL,we=e.bJ,Pe=e.bK,ye=e.bL,Me=e.aO,Ie=e.ap,Oe=e.bM,Ee=e.aM},function(e){De=e.D}],execute:function(){class Se{constructor(e){this._mergeThreshold=3,this._componentsToMerge=new Ae,this._mergeInProgress=!1,this._components=new Map,this._previews=new Map,this._componentNumberOfPossibleChildren=new Map,this._creator_=e,this._getKernelAccess().addConfiguratorListener(this),this._componentFactory=Y()}get materialQueue(){return this.getMeshGenerator().materialQueue}_getKernelAccess(){return o.lookup("planner-kernel-access",this._creator_)}_applyMeshTransform(e,t,n,i,o,r,a){if(i){const e=t.userData.transform=s(i);n&&(t.userData.transform=e),t.applyMatrix4(e)}this._applyMeshUVTransform(t,n,o,a),this._addMeshAnimations(e,t,r)}_applyMeshUVTransform(e,t,n,i){if(6!==(null==n?void 0:n.length)||r(n))t&&(t.uvTransform=void 0),i&&(e.geometry=i);else{const o=a(n);t&&(t.uvTransform=o);const s=null!=i?i:e.geometry;if(s&&s.attributes.uv){const t=s.clone();t.attributes.uv.applyMatrix4(o),e.geometry=t}}}_addMeshAnimations(e,t,n){n||(t.userData.animations=void 0);const i=new Map;for(const e in n)i.set(e,s(n[e]));t.userData.animationMatrixMap=i,this._setComponentAnimationMatrix(e,t)}_setComponentAnimationMatrix(e,t){var n,i;if((null===(n=t.userData)||void 0===n?void 0:n.animationMatrixMap)&&(null===(i=t.userData)||void 0===i?void 0:i.transform)&&this.getComponent(e).animations)for(const e in t.userData.animationMatrixMap){const n=t.userData.animationMatrixMap.get(e);if(n){const e=t.userData.transform.clone().multiply(n);t.applyMatrix4(e)}}}_animateComponent(e,t,n,i,o){const s=t.split(":")[1];e.animateMeshes&&e.animateMeshes(s,n,i,o,this._invalidateRenderCallback)}updateAnimationParameters(e,t){const n=[];for(const e of t)e.key.startsWith("animation:")&&n.push(e);if(0===n.length)return;const i=Array.isArray(e)?e:[e];for(const e of i){const t=this.getComponentFromElementId(e);if(null==t?void 0:t.animationValues)for(const e of n){const n=e.key.split(":")[1],i=t.animationValues.get(n);i&&(e.value=i)}else if(t){t.animationValues=new Map;for(const e of n){const n=e.key.split(":")[1];t.animationValues.set(n,e.value)}}}}changeAnimationValue(e,t,n,i,o){const s=this.getComponentFromElementId(e);s&&(i?s.traverse(e=>{e.id&&this._changeAnimationValue(e,t,n,o)}):this._changeAnimationValue(s,t,n,o))}_changeAnimationValue(e,t,n,i){e.animationValues||(e.animationValues=new Map);const o=t.split(":")[1],s=e.animationValues.get(o);e.animationValues.set(o,n),this._animateComponent(e,t,s,n,i)}getComponentFromElementId(e){let t=this.getComponent(e);if(!t){const n=this._getKernelAccess().kernelInstance.getRootPlanComponentIdFromObjectId(e);t=this.getComponent(n)}return t||console.warn("component not found!",e),t}_addMeshToSubPart(e,t,n,i,o,s,r,a,l,c,h){const d=this._generateMesh(e,t,n,s,r,a,l,void 0,void 0,c);this._applyMeshTransform(e,d,null,i,o,h),this._subPartObject.add(d)}_addMeshToComponent(e,t,n,i,o,s,r,a,l,c,h,d,_){if(this._subPartGuard&&this._subPartGuard.info===e)return void this._addMeshToSubPart(e,null,i,null,null,r,a,l,c,d,_);const u=this.getComponent(e);if(!u)return;const g=this._componentFactory.isPreview(u),m=this._generateMesh(e,n,g?null:i,r,a,l,c,void 0,void 0,d);m.userData.meshId=t,m.userData.geometryId=n,m.userData.materialId=i,this._applyMeshTransform(e,m,m.userData,o,s,_),g&&m.layers.set(5),u&&u.addMesh(m),u.meshes.length>this._mergeThreshold&&this._componentsToMerge.set(e,u.meshes.length)}_changeMeshOfComponent(e,t,n,i,o,s,r,a){const l=this.getComponent(e);if(!l)return;const c=l.getMeshById(t);if(c){c.userData.geometryId!==n&&console.warn("Geometry of mesh has changed!"),c.userData.materialId=i,c.userData.materialAttributes=r;const t=c.material.clone();this._configuratorMeshGenerator.setMaterial(c,i,void 0,r).then(()=>{this._requestRenderSceneUpdateCallback&&this._requestRenderSceneUpdateCallback()}),t.opacity!==c.material.opacity&&this._requestRenderCallback&&this._requestRenderCallback(),o&&(c.position.set(0,0,0),c.scale.set(1,1,1),c.rotation.set(0,0,0));const l=this._configuratorMeshGenerator.getGeometry(n);this._applyMeshTransform(e,c,c.userData,o,s,a,l)}}_removeMeshFromComponent(e,t){const n=this.getComponent(e);n&&n.removeMeshById(t)}getComponent(e){let t=this._components.get(e);return t||(t=this._previews.get(e.toString()),t)?t:null}getNumberOfPossibleChildrenForComponent(e){if(this._componentNumberOfPossibleChildren.has(e))return this._componentNumberOfPossibleChildren.get(e);const t=this._getKernelAccess().kernelInstance.getPlanComponentPossibleChildren(e).length;return this._componentNumberOfPossibleChildren.set(e,t),t}tryToMergeComponents(){this._initData.moc||this._mergeInProgress||(this._mergeInProgress=!0,this._componentsToMerge.size,this._requestMergeComponents())}_requestMergeComponents(){window.requestIdleCallback(this._mergeNextComponent.bind(this))}_mergeNextComponent(){if(this._componentsToMerge.size>0){const e=this._componentsToMerge.largestValue();this._componentsToMerge.delete(e),this._mergeComponent(e),this._requestMergeComponents()}else this._mergeInProgress=!1,this._geometriesMerged&&this._geometriesMerged(),this._components.forEach(e=>{e.loadingMesh&&console.warn("component still has loading mesh: ",e.hash)})}_mergeComponent(e){const t=this._components.get(e);if(t&&!(t.meshes.length<=this._mergeThreshold))if(this._cacheHolder.componentCache.has(t.hash)){const e=this._cacheHolder.componentCache.get(t.hash).meshes;t.replaceMeshes(e)}else{const e=new Map,n=[],i=[];t.meshes.forEach(t=>{const o=t.userData.materialId;if(!o)return void console.warn("mesh has no material id set");if(!e.has(o)){const i=new le(new ce,t.material);i.userData.materialId=o,i.receiveShadow=!0,i.castShadow=!0,i.layers.set(3),this._setMaterial(i,o),n.push(i),e.set(o,i)}const s=e.get(o),r=s.geometry;t.userData.transform&&t.geometry.applyMatrix4(t.userData.transform),s.geometry=l([r,t.geometry]),i.push(t)}),n.forEach(e=>t.addMesh(e)),i.forEach(e=>t.removeMesh(e)),this._cacheHolder.componentCache.set(t.hash,t)}}_addComponent(e){this._listener&&e.isRootComponent&&this._listener.display(e)}removeDockingComponent(){this._getKernelAccess().requestDeleteComponent(this._configuratorContext.dockingRootComponentId),this._configuratorContext.dockingRootComponentId=null}dockComponent(e,t,n,i,o){let s=this._components.get(n),r=this._components.get(e);r&&(r.roomlePosition=i,r.roomleRotation=o,s&&s.add(r),r.parentObjectId=n,r.isRootComponent=t,this._addComponent(r))}dockComponentWithPosition(e,t){let n,i=this._components.get(e.parentId);n=t?t.getKernelPosition(i):e.getKernelPosition(i),c.start("dock_component_with_position_"+e.childId),this._getKernelAccess().dockComponentWithPosition(e.parentId,e.parentDockId,e.childId,e.childDockId,n),this._configuratorContext.dockingRootComponentId=null}removePreviews(){this._previews.size>0&&(this._previews.forEach(e=>{e.removeFromParent(),e.removeAllMeshes()}),this._previews.clear())}_updatePlanObject(e,t){const n=this._components.get(e.rootPlanComponentId);let i=!0;n&&(i=n.geometryChanged),this._listener&&this._listener.planObjectUpdated(e,i,t)}Editor3dAddDockPreview(e,t){const n=this._componentFactory.createPreview(t,e,this._creator_);this._previews.set(t.toString(),n)}Editor3dAddMesh(e,t,n,i,o,s){this._addMeshToComponent(e,t,n,o.materialId,o.transform,o.uvTransform,s.vertices,s.indices,s.uvCoords,s.normals,i,o.materialAttributes,o.animations)}Editor3ChangedMesh(e,t,n,i){this._changeMeshOfComponent(e,t,n,i.materialId,i.transform,i.uvTransform,i.materialAttributes,i.animations)}Editor3dRemoveMesh(e,t){this._removeMeshFromComponent(e,t)}Editor3dBeginConstruction(e,t){if(!t){const t=this._components.get(e);t&&t.removeAllMeshes()}this._subPartGuard&&e===this._subPartGuard.info&&(this._subPartObject=new he)}Editor3dComponentCreated(e,t,n,i,o){i&&(this._configuratorContext.rootComponentId=e);let s=null;this._components.has(e)?(s=this._components.get(e),s.removeAllMeshes()):(s=this._componentFactory.create(e,t,n,o,i),s.layers.set(3)),this._components.set(e,s),this._addComponent(s)}Editor3dComponentDocked(e,t,n,i,o){this.dockComponent(e,t,n,i,o)}Editor3dEndConstruction(e){if(this._subPartGuard&&this._subPartGuard.info===e)return void this._subPartGuard.resolve(this._subPartObject);const t=this._getKernelAccess().kernelInstance.getComponent(e),n=this._components.get(e);n&&(n.computeBoundingBox(t.boxForMeasurement),n.boundingBoxMesh&&this._listener&&this._listener.addComponentHandlers(n));let i=this._previews.get(e.toString());i&&i.computeBoundingBox(t.boxForMeasurement,!0)}Editor3dGeometryReady(e){const t=this._components.get(e);t&&t.loadingFinished()}Editor3dGeometryNotReady(e){const t=this._components.get(e);t&&t.loading()}Editor3dPlanObjectConstructionDone(e){const t=this._getKernelAccess().kernelInstance.getPlanObject(e),n=[t,this._getKernelAccess().kernelInstance.getFullPartList(),this._getKernelAccess().kernelInstance.getHashOfConfiguration(e),this._getKernelAccess().kernelInstance.getComponentId(t.rootPlanComponentId)];h.finishOperation(2,n),this._updatePlanObject(t,!1),this._listener&&this._listener.planObjectConstructionDone(t)}Editor3dPreviewConstructionDone(e,t){let n=!1;this._previews.forEach(e=>{null!==e.parent&&(this._listener&&(this._componentFactory.isPreviewLine(e)?this._listener.addPreviewLineHandlers(e):this._listener.addPreviewHandlers(e)),n=!0)}),this._listener&&this._listener.previewConstructionDone(this._components.get(e),n)}Editor3dSetPreviewLineAssociations(e,t){let n=this._previews.get(t.toString());if(n.clear(),!n)return;let i=this._componentFactory.createPreviewLine(n,this._creator_),o=this._components.get(this._configuratorContext.rootComponentId);for(let t=0;t<e.length;t++){let n;n=0===t?i:i.clonePreviewLine(t),n.name="Preview Line",n.parentDockId=e[t].parentDockId,n.parentId=e[t].parentId,n.childDockId=e[t].childDockId,n.childId=e[t].childId,n.docklineRotation=d(e[t].rotation),n.roomlePosition=e[t].position,n.roomleLineFrom=e[t].lineFrom,n.roomleLineTo=e[t].lineTo,n.lineSegments=[];for(const i of e[t].lineSegments)n.lineSegments.push({from:i.from/1e3,to:i.to/1e3});n.roomlePositionFrom=e[t].positionFrom,n.roomlePositionTo=e[t].positionTo,o.add(n),n.preparePreview(),this._previews.set(n.stringId,n)}}Editor3dSetPreviewPointAssociations(e,t){let n=this._previews.get(t.toString());if(!n)return;let i=this._components.get(this._configuratorContext.rootComponentId);for(let t=0;t<e.length;t++){let o;0===t?o=n:(o=n.clonePreview(t),this._previews.set(o.stringId,o)),o.name="Preview Point",o.parentDockId=e[t].parentDockId,o.parentId=e[t].parentId,o.childDockId=e[t].childDockId,o.childId=e[t].childId,o.preparePreview(),o.receivedPointAssociation=!0,o.userData.ignoreComponentRaycast=!0,i.add(o);let s=e[t].position;o.roomlePosition=s,o.roomleRotation=e[t].rotation,o.startPulsating()}}componentDeleted(e){const t=this._components.get(e);t&&(this._listener&&this._listener.componentDeleted(t),t.removeFromParent(),t.removeAllMeshes(),this._components.delete(e))}componentMetaUpdated(e){const t=this._getRuntimeComponent(e.id);t&&(t.hash=e.hash,t.roomlePosition=e.position,t.roomleRotation=e.rotation,e.boxForMeasurement&&t.computeBoundingBox(e.boxForMeasurement),this._listener&&this._listener.componentUpdated(t,e))}componentConfigurationUpdated(e,t){const n=this._getRuntimeComponent(e);n&&(n.geometryChanged=t)}_getRuntimeComponent(e){let t=this._components.get(e);return t||(t=this._previews.get(e.toString()),t)?t:null}configurationLoaded(e,t,n,i,o){e===_&&(this._configuratorContext.dockingRootComponentId=n);let s=0===t;s?this._getKernelAccess().kernelInstance.requestPlanComponentConstructionRecursive(n):this._getKernelAccess().kernelInstance.requestPlanObjectConstruction(t);let r=this._getKernelAccess().kernelInstance.getComponent(n),a=this._components.get(n);a&&(a.computeBoundingBox(r.boxForMeasurement),a.hash=r.hash),this._listener&&this._listener.configurationLoaded(a,s&&void 0!==a.boundingBoxMesh)}finishParameterChange(e,t){this.materialQueue.registerCallback(e)}planObjectConfigurationUpdated(e,t,n,i){let o=this._getKernelAccess().kernelInstance.getPlanObject(e);this._updatePlanObject(o,i)}planObjectCreated(e,t){this._configuratorContext.planObjectId=t,this._listener&&this._listener.clearScene()}planObjectUpdated(e,t){this._updatePlanObject(e,t)}sceneCleared(){this._components.forEach((function(e){e.removeFromParent(),e.removeAllMeshes()})),this._components.clear(),this._componentNumberOfPossibleChildren.clear(),this._previews.forEach(e=>{e.removeFromParent(),e.removeAllMeshes()}),this._previews.clear()}setListener(e){this._listener=e}getBoundingBox(){if(this._configuratorContext.planObjectId){const e=this._getKernelAccess().kernelInstance.getPlanObject(this._configuratorContext.planObjectId);if(e&&e.boxForMeasurement)return u(e.boxForMeasurement)}else if(this._configuratorContext.rootComponentId){const e=this._components.get(this._configuratorContext.rootComponentId);return(new de).setFromObject(e)}return null}getBoundingBoxOfGeometry(){if(this._configuratorContext.planObjectId){const e=this._getKernelAccess().kernelInstance.getPlanObject(this._configuratorContext.planObjectId);if(e&&e.boxOfGeometry)return u(e.boxOfGeometry)}else if(this._configuratorContext.rootComponentId){const e=this._components.get(this._configuratorContext.rootComponentId);return(new de).setFromObject(e)}return null}getBoundingBoxWithPreviews(){const e=this._components.get(this._configuratorContext.rootComponentId);return e?(new de).setFromObject(e):null}hasPreviews(){return this._previews.size>0}clearRootComponent(){var e;null===(e=this._components.get(this._configuratorContext.rootComponentId))||void 0===e||e.hoverOff()}debugSceneGraph(e){e?this._components.has(e)?this._components.get(e):this._previews.has(e.toString())&&this._previews.get(e.toString()):this._configuratorContext}getComponentsForIds(e){let t=[];return e.forEach(e=>{const n=this._components.get(e);n&&t.push(n)}),t}getComponents(){return Array.from(this._components.values())}getPreviews(){return Array.from(this._previews.values())}hasPreviewLines(){for(const e of this._previews.values())if(this._componentFactory.isPreviewLine(e))return!0;return!1}isPreviewLine(e){return this._componentFactory.isPreviewLine(e)}isPreview(e){return this._componentFactory.isPreview(e)}setGeometriesMergedListener(e){this._geometriesMerged=e}removeGeometriesMergedListener(){this._geometriesMerged=void 0}setMergeThreshold(e){this._mergeThreshold=e}_generateMesh(e=0,t=null,n,i,o,s,r,a,l,c){return this._configuratorMeshGenerator.generateMesh(e,t,n,i,o,s,r,!1,c)}_setMaterial(e,t,n){this._configuratorMeshGenerator.setMaterial(e,t)}constructComponents(e){this._getKernelAccess().kernelInstance.requestPlanObjectConstruction(e)}requestSubPartConstruction(e){return this._subPartGuard=new g(e),this._getKernelAccess().requestPlanComponentConstruction(e,!1),this._subPartGuard.wait()}getMeshGenerator(){return this._configuratorMeshGenerator}setRequestRenderCallback(e){this._requestRenderCallback=e}setRequestRenderSceneUpdateCallback(e){this._requestRenderSceneUpdateCallback=e}setInvalidateRenderCallback(e){this._invalidateRenderCallback=e}}e("a",Se),n([i],Se.prototype,"_configuratorMeshGenerator",void 0),n([i],Se.prototype,"_configuratorContext",void 0),n([i],Se.prototype,"_cacheHolder",void 0),n([i],Se.prototype,"_initData",void 0);class Ae extends Map{largestValue(){let e=this.entries().next().value[0],t=0;return this.forEach((n,i)=>{n>t&&(e=i,t=n)}),e}}class ke extends Se{constructor(e){super(e),this._configurablePlanObjectViewModels=[],this._configurableConstructionPlanObjectViewModels=[],this._staticPlanObjectViewModels=[],this._constructionPlanObjectViewModels=[],this._wallPlanObjectViewModels=[],this._measurementLinePlanObjectViewModels=[],this._floorPlanObjectViewModels=[],this._nodePlanObjectViewModels=[],this._constructionGroup=new _e,this._constructionGroup.name="Construction",this._ceilingGroup=new _e,this._ceilingGroup.name="Ceiling",this._floorGroup=new _e,this._floorGroup.name="Floor",this._measurementLineGroup=new _e,this._measurementLineGroup.name="Measurement Line",this._getKernelAccess().addPlannerListener(this)}get latestWallPlanObjectViewModel(){return this._latestWallPlanObjectViewModel}get latestNodePlanObjectViewModel(){return this._latestNodePlanObjectViewModel}startedDrawing(){}stoppedDrawing(){}planBoundsChanged(){}setReference(e){this._coreReference=e.clone()}clearReference(){this._coreReference.delete(),this._coreReference=null}getCorePlan(){return this._coreReference}addPlanElementViewModel(e){e instanceof m?this._handleConfiguratorConstructionPlanObjectViewModel(e):e instanceof p?this._handleConfiguratorPlanObjectViewModel(e):e instanceof C?this._handleConstructionPlanObjectViewModel(e):e instanceof f?this._handleStaticPlanObjectViewModel(e):e instanceof v?this._handleMeasurementLinePlanElementViewModel(e):e instanceof b?this._handleWallPlanElementViewModel(e):e instanceof w?this._handleFloorPlanElementViewModel(e):e instanceof P?this._handleCeilingPlanElementViewModel(e):e instanceof y&&this._handleNodePlanElementViewModel(e)}_handleConfiguratorPlanObjectViewModel(e){this._configurablePlanObjectViewModels.push(e),this._linkPlanObjectViewModelAndComponent(e)}_linkPlanObjectViewModelAndComponent(e){const t=e.getConfigurationRuntimeId();if(t>0)for(const e of this._components.values())if(e.parentObjectId===t||e.runtimeId===t){this._addComponent(e);break}}_handleConfiguratorConstructionPlanObjectViewModel(e){e.setTopView(this._cameraType===ue.CAMERA_2D),this._configurableConstructionPlanObjectViewModels.push(e)}_handleConstructionPlanObjectViewModel(e){this._initData.edit&&this._plannerSceneEventHandler.addConstructionPlanObjectHandlers(e),e.setTopView(this._cameraType===ue.CAMERA_2D),this._constructionPlanObjectViewModels.push(e)}_handleStaticPlanObjectViewModel(e){this._staticPlanObjectViewModels.push(e),this.commonHandlerForEditableAndTopView(e)}_handleMeasurementLinePlanElementViewModel(e){this._initData.edit&&this._plannerSceneEventHandler.addMeasurementLineHandlers(e),e.setTopView(this._cameraType===ue.CAMERA_2D),e.getPoint1Draggable().scale.setScalar(this._nodeZoom),e.getPoint2Draggable().scale.setScalar(this._nodeZoom),this._measurementLinePlanObjectViewModels.push(e),this._measurementLineGroup.add(e.getContainer())}_handleWallPlanElementViewModel(e){this._initData.edit&&this._plannerSceneEventHandler.addWallHandlers(e),e.setTopView(this._cameraType===ue.CAMERA_2D),this._wallPlanObjectViewModels.push(e),this._latestWallPlanObjectViewModel=e,this._constructionGroup.add(e.getContainer())}_handleFloorPlanElementViewModel(e){const t=e.getContainer();t.name="Floor",this._initData.edit&&this._plannerSceneEventHandler.addFloorHandlers(e),this._floorPlanObjectViewModels.push(e),this._floorGroup.add(t)}_handleCeilingPlanElementViewModel(e){this._ceilingGroup.add(e.getContainer())}_handleNodePlanElementViewModel(e){this._initData.edit&&this._plannerSceneEventHandler.addNodeHandlers(e),e.setTopView(this._cameraType===ue.CAMERA_2D),e.setZoom(this._nodeZoom),this._nodePlanObjectViewModels.push(e),this._latestNodePlanObjectViewModel=e,this._constructionGroup.add(e.getContainer())}commonHandlerForEditableAndTopView(e){this._initData.edit&&this._plannerSceneEventHandler.addPlanObjectHandlers(e),e.setTopView(this._cameraType===ue.CAMERA_2D)}dockComponent(e,t,n,i,o){var s;null===(s=this._plannerSceneEventHandler)||void 0===s||s.cancelSelection("dock_component"),super.dockComponent(e,t,n,i,o)}_addComponent(e){const t=e.isRootComponent?e.parentObjectId:e.runtimeId,n=this._getPlanObjectViewModelForRuntimeId(t);n&&n instanceof p&&(e.isRootComponent?n.addRootComponent(e):n.addChildEntityComponent(e),this._initData.edit&&(n instanceof m?this._plannerSceneEventHandler.addConstructionPlanObjectHandlers(n):this._plannerSceneEventHandler.addPlanObjectHandlers(n)),n.hidePreviewBox())}_getPlanObjectViewModelForRuntimeId(e){let t=null;return[...this._configurableConstructionPlanObjectViewModels,...this._configurablePlanObjectViewModels].forEach(n=>{e===n.getConfigurationRuntimeId()&&(t=n)}),t}getConfigurablePlanObjectForId(e){for(const t of[...this._configurableConstructionPlanObjectViewModels,...this._configurablePlanObjectViewModels])if(e===t.getId())return t;return null}getStaticPlanObjectForId(e){for(const t of this._staticPlanObjectViewModels)if(e===t.getId())return t;return null}getConstructionObjectForId(e){for(const t of this._constructionPlanObjectViewModels)if(e===t.getId())return t;return null}getStaticPlanObjectViewModelForId(e){return this.getStaticPlanObjectForId(e)||this.getConstructionObjectForId(e)}getPlanObjectForId(e){const t=this.getConfigurablePlanObjectForId(e);if(t)return t;const n=this.getStaticPlanObjectForId(e);if(n)return n;for(const t of this._nodePlanObjectViewModels)if(e===t.getId())return t;for(const t of this._wallPlanObjectViewModels)if(e===t.getId())return t;for(const t of this._measurementLinePlanObjectViewModels)if(e===t.getId())return t;for(const t of this._floorPlanObjectViewModels)if(e===t.getId())return t;for(const t of this._constructionPlanObjectViewModels)if(e===t.getId())return t;return null}getPlanObjectViewModelsFromRapiId(){return[...this._configurablePlanObjectViewModels,...this._configurableConstructionPlanObjectViewModels,...this._staticPlanObjectViewModels]}getPlanObjectCount(){return this._configurablePlanObjectViewModels.length+this._configurableConstructionPlanObjectViewModels.length+this._staticPlanObjectViewModels.length}getConstructionGroup(){return this._constructionGroup}getCeilingGroup(){return this._ceilingGroup}getFloorGroup(){return this._floorGroup}getMeasurementLineGroup(){return this._measurementLineGroup}getBoundingBox(){if("configurator"===this._configuratorContext.baseContext){const e=this.getPlanObjectForId(this._configuratorContext.planElementId);if(e)return e.getBounds()}if("glb-viewer"===this._configuratorContext.baseContext){const e=this._plannerSceneEventHandler.getSelectedIds();if(e&&1===e.length){const t=this.getPlanObjectForId(e[0]);if(t)return t.getBounds()}}const e=this.getCorePlan();if(e)try{return u(e.getBounds())}catch(e){console.error(e)}const t=new de;t.expandByObject(this._constructionGroup);for(const e of this._staticPlanObjectViewModels)t.expandByObject(e.getContainer());for(const e of this._configurablePlanObjectViewModels)t.expandByObject(e.getContainer());for(const e of this._configurableConstructionPlanObjectViewModels)t.expandByObject(e.getContainer());return t}getBoundingBoxOfGeometry(){return this.getBoundingBox()}setPlannerSceneEventHandler(e){this._plannerSceneEventHandler=e}getStaticPlanObjectViewModels(){return this._staticPlanObjectViewModels}getConfigurablePlanObjectViewModels(){return this._configurablePlanObjectViewModels}getConfigurableConstructionPlanObjectViewModels(){return this._configurableConstructionPlanObjectViewModels}getConstructionPlanObjectViewModels(){return this._constructionPlanObjectViewModels}getWallPlanObjectViewModels(){return this._wallPlanObjectViewModels}getNodePlanObjectViewModels(){return this._nodePlanObjectViewModels}getFloorPlanObjectViewModels(){return this._floorPlanObjectViewModels}getMeasurementLineObjectViewModels(){return this._measurementLinePlanObjectViewModels}_generateMesh(e=0,t=null,n,i,o,s,r,a,l,c){return this._plannerMeshGenerator.generateMesh(e,t,n,i,o,s,r,a,l,c)}_setMaterial(e,t,n,i){this._plannerMeshGenerator.setMaterial(e,t,n,i)}Editor3dComponentCreated(e,t,n,i,o){super.Editor3dComponentCreated(e,t,n,i,o),this._getKernelAccess()instanceof M&&this.dockComponent(e,i,o,t,n)}addPlanObjectToScene(e){}handlerSwitchedPlans(e,t){this._constructionGroup.clear(),this._ceilingGroup.clear(),this._floorGroup.clear(),this._measurementLineGroup.clear()}planCompletelyLoaded(e){}beginPlanConstruction(e){}addPlanMesh(e,t,n,i,o,s,r){}endPlanConstruction(e){}planElementChanged(e,t){}planObjectConfigurationLoaded(e,t,n){const i=this.getConfigurablePlanObjectForId(t.getId());if(!i)return void console.warn("planObjectConfigurationLoaded but no view model found");n?i.finishConstruction():i.failConstruction();const o=t.extRef.jsObject;o instanceof p&&this._linkPlanObjectViewModelAndComponent(o)}addMesh(e,t,n,i,o,s){const r=e.extRef.jsObject;let a=r.getMesh(t);a?a.geometry=this._plannerMeshGenerator.generateGeometry(null,n,i,o,s):(a=this._generateMesh(0,null,t,n,i,o,s,e.getType()),r.addMesh(a))}removePlanObjectFromScene(e){const t=e.getPlanElement().getType();this._isConstructionType(t)?this._constructionGroup.remove(e.getContainer()):t===this._getKernelAccess().kernelContainer.PlanElementType.FLOOR?this._floorGroup.remove(e.getContainer()):t===this._getKernelAccess().kernelContainer.PlanElementType.CEILING?this._ceilingGroup.remove(e.getContainer()):t===this._getKernelAccess().kernelContainer.PlanElementType.MEASURE&&this._measurementLineGroup.remove(e.getContainer()),e.clear()}_isConstructionType(e){return e===this._getKernelAccess().kernelContainer.PlanElementType.WALL||e===this._getKernelAccess().kernelContainer.PlanElementType.NODE}planElementRemoved(e){var t;const n=null===(t=e.extRef)||void 0===t?void 0:t.jsObject;n instanceof m?this._removeObject(this._configurableConstructionPlanObjectViewModels,n):n instanceof p?this._removeObject(this._configurablePlanObjectViewModels,n):n instanceof C?this._removeObject(this._constructionPlanObjectViewModels,n):n instanceof f?this._removeObject(this._staticPlanObjectViewModels,n):n instanceof w?this._removeObject(this._floorPlanObjectViewModels,n):n instanceof b?this._removeObject(this._wallPlanObjectViewModels,n):n instanceof y?this._removeObject(this._nodePlanObjectViewModels,n):n instanceof v&&this._removeObject(this._measurementLinePlanObjectViewModels,n)}_removeObject(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}getMeshGenerator(){return this._plannerMeshGenerator}componentConfigurationUpdated(e,t){super.componentConfigurationUpdated(e,t)}hideAllExcept(e){this._ceilingGroup.visible=!1,this._floorGroup.visible=!1,this._measurementLineGroup.visible=!1,this._constructionGroup.visible=!1,this._staticPlanObjectViewModels.forEach(t=>{t.getId()!==e&&(t.getContainer().visible=!1)}),this._configurablePlanObjectViewModels.forEach(t=>{t.getId()!==e&&(t.getContainer().visible=!1)}),this._configurableConstructionPlanObjectViewModels.forEach(t=>{t.getId()!==e&&(t.getContainer().visible=!1)}),this._constructionPlanObjectViewModels.forEach(t=>{t.getId()!==e&&(t.getContainer().visible=!1)})}showAll(){this._ceilingGroup.visible=this._cameraType===ue.CAMERA_FP,this._floorGroup.visible=!0,this._measurementLineGroup.visible=!0,this._constructionGroup.visible=!0,this._staticPlanObjectViewModels.forEach(e=>e.getContainer().visible=!0),this._configurablePlanObjectViewModels.forEach(e=>e.getContainer().visible=!0),this._configurableConstructionPlanObjectViewModels.forEach(e=>e.getContainer().visible=!0),this._constructionPlanObjectViewModels.forEach(e=>e.getContainer().visible=!0)}planHistoryStateChanged(){}setNodeVisibility(e){this._nodePlanObjectViewModels.forEach(t=>t.setTopView(e))}async setCameraType(e){this._cameraType=e;const t=[];this._wallPlanObjectViewModels.forEach(e=>e.setTopView(this._cameraType===ue.CAMERA_2D)),this._measurementLinePlanObjectViewModels.forEach(e=>e.setTopView(this._cameraType===ue.CAMERA_2D)),this._nodePlanObjectViewModels.forEach(e=>e.setTopView(this._cameraType===ue.CAMERA_2D)),this._configurablePlanObjectViewModels.forEach(e=>e.setTopView(this._cameraType===ue.CAMERA_2D)),this._constructionPlanObjectViewModels.forEach(e=>t.push(e.setTopView(this._cameraType===ue.CAMERA_2D))),this._configurableConstructionPlanObjectViewModels.forEach(e=>t.push(e.setTopView(this._cameraType===ue.CAMERA_2D))),await Promise.all(t)}get cameraType(){return this._cameraType}setNodeZoom(e){e=Math.min(4,e),this._nodeZoom=e;for(const t of this._nodePlanObjectViewModels)t.setZoom(e);for(const t of this._measurementLinePlanObjectViewModels)t.getPoint1Draggable().scale.setScalar(e),t.getPoint2Draggable().scale.setScalar(e)}planCleared(){[this._configurablePlanObjectViewModels,this._configurableConstructionPlanObjectViewModels,this._staticPlanObjectViewModels,this._wallPlanObjectViewModels,this._measurementLinePlanObjectViewModels,this._nodePlanObjectViewModels,this._floorPlanObjectViewModels,this._constructionPlanObjectViewModels].forEach(e=>{e.forEach(e=>e.remove()),e.length=0})}requestCatalogItem(e){}}e("P",ke),n([i],ke.prototype,"_plannerMeshGenerator",void 0),n([i],ke.prototype,"_roomlePlannerUiCallback",void 0);const xe=e("b",{RAYCASTER_FLOOR:.8,FLOOR:.9,WALL:.95,DEFAULT:1,CONSTRUCTION:1,COMPONENT:2,PREVIEW:3,PREVIEW_LINE:4}),He=A(30);class je extends I{constructor(e,t,n,i){super(),this._offset=new ge(0,0,0),this._lastMoveCheck=0,this._onWallSnapping=!1,this._mode=void 0===i?1:i,this._object=e,this._camera=t,this._raycaster=new me,this._raycaster.layers.disableAll(),this._inputManager=n,this._addInputListeners(n),this._planeBottom=new pe(new ge(0,1,0)),this._planeFront=new pe(new ge(0,0,1)),this._planeSide=new pe(new ge(1,0,0))}setLayers(e){this._raycaster.layers=e}getLayers(){return this._raycaster.layers}_addInputListeners(e){e.addEventListener(3,e=>{this._findCandidate(e.positionRelative)},this),e.addEventListener(5,e=>{this._findSelection(e.positionRelative)},this),e.addEventListener(12,e=>{this._findSelection(e.positionRelative,!0,e.type)},this),e.addEventListener(14,e=>{this._findSelection(e.positionRelative,!0,e.type)},this),e.addEventListener(6,e=>{Date.now()-this._lastMoveCheck>32&&(this._findHover(e.positionRelative,e.type),this._lastMoveCheck=Date.now())},this),e.addEventListener(0,e=>{this._onDragStart(e.positionRelative)},this),e.addEventListener(1,e=>{this._onDrag(e.positionRelative)},this),e.addEventListener(2,e=>{this._onDragEnd(e.positionRelative)},this),e.addEventListener(9,e=>{this._onRotate(e.positionRelative,e.rotation)},this),e.addEventListener(10,()=>{this._currentRotate=null},this)}_findCandidate(e){let t=this._intersection(e);t&&!t.object.userData.ignoreElementHit&&0===this._mode&&this._inputManager.onElementHit()}_findSelection(e,t=!1,n=0){let i=this._intersection(e);if(i){if(i){const e=t?"double_click":"select";i.object.dispatchEvent({type:e,attachment:{intersection:i,type:n}})}}else this.dispatchEvent(0)}_findHover(e,t){const n=this._intersection(e);!n&&this._currentHover?(this._currentHover.dispatchEvent({type:"hover_off",attachment:{type:t}}),this._currentHover=null):n&&(this._currentHover&&this._currentHover.id!==n.object.id&&(this._currentHover.dispatchEvent({type:"hover_off",attachment:{type:t}}),this._currentHover=null),this._currentHover?this._currentHover.dispatchEvent({type:"hover_move",attachment:{intersection:n,type:t}}):(this._currentHover=n.object,this._currentHover.dispatchEvent({type:"hover_on",attachment:{intersection:n,type:t}})))}_intersection(e){var t;const n=this._intersect(e);if(null===(t=window.__RML__DEBUG__)||void 0===t?void 0:t.raycaster){const e=[];for(const t of n)e.push({name:t.object.userData.planElementName,distance:t.distance,priority:t.object.userData.priority});e.length&&console.table(e)}if(n.length<=0)return null;let i=n[0];return n.length>1&&this._currentHover&&this._currentDrag&&this._currentDrag.id!==this._currentHover.id&&n.forEach(e=>{e.object.id===this._currentHover.id&&e.object.userData.priority===this._currentHover.userData.priority&&i.object.userData.priority<=e.object.userData.priority&&(i=e)}),i}_intersect(e){this._raycaster.setFromCamera(new Ce(e.x,e.y),this._camera);const t=[];return this._raycaster.intersectObjects(this._object.children,!0).forEach(e=>{const n=this._findObjectWithHandler(e.object);n&&(e.object=n,t.push(e))}),t.length>=0?t.sort((e,t)=>e.object.userData.priority!==t.object.userData.priority?t.object.userData.priority-e.object.userData.priority:O((new de).setFromObject(e.object),(new de).setFromObject(t.object))<0?-1:e.distance-t.distance):[]}_findObjectWithHandler(e){return e.userData.hasListener?e:e.parent?this._findObjectWithHandler(e.parent):null}_onDragStart(e){let t=this._intersection(e);if(!t&&!this._currentDrag)return;if(t&&t.object.userData.roomleId===this._rootComponentId)return;!this._currentDrag&&t&&(this._currentDrag=t.object,this._currentDrag.dispatchEvent({type:"drag_start"}));let n=this._currentDrag.parent;n&&n.computeBoundingBox&&(n.computeBoundingBox(),this._calculateOffset(n)),this._positionPlanes(n)}_onDrag(e){if(!this._currentDrag)return;this._raycaster.setFromCamera(new Ce(e.x,e.y),this._camera);let t,n=new ge(0,0,-5);if(this._raycaster.ray.intersectPlane(this._planeBottom,n),0===this._mode){const e=this._object.children.find(({type:e,name:t})=>"Group"===e&&"Construction"===t),i=this._currentDrag.userData.snapToWall;if(e&&(this._onWallSnapping||i)){const t=this._raycaster.intersectObjects(e.children,!0);if(t.length){const e=t[0].point.clone();return void this._currentDrag.dispatchEvent({type:"drag",attachment:{position:e}})}}t=n.clone(),t.y=this._currentDrag.parent.position.y}else t=this._getIntersectionPosition(n),t.sub(this._offset);this._currentDrag.dispatchEvent({type:"drag",attachment:{position:t}})}_getIntersectionPosition(e){let t=this._getDistanceToCamera(e),n=this._camera.userData.yaw,i=new ge(0,0,0),o=new ge(0,0,0);this._raycaster.ray.intersectPlane(this._planeFront,i),this._raycaster.ray.intersectPlane(this._planeSide,o);let s,r=this._getDistanceToCamera(o),a=this._getDistanceToCamera(i);return n>=-He&&n<=He?s=t<a?e.clone():i.clone():t<a&&t<r?s=e.clone():a<t&&a<r?s=i.clone():r<t&&r<a&&(s=o.clone()),s}_getDistanceToCamera(e){let t=e.clone().sub(this._camera.position).length();return E(e)&&(t=Number.POSITIVE_INFINITY),t}_onDragEnd(e){this._currentDrag&&(this._currentDrag.dispatchEvent({type:"drag_end",attachment:{position:e}}),this._currentDrag=null)}_onRotate(e,t){if(!this._currentRotate){let t=this._intersection(e);if(!t)return;this._currentRotate=t.object}this._currentRotate.dispatchEvent({type:"rotate",attachment:{rotation:t}})}_positionPlanes(e){0===this._mode?(this._planeBottom.constant=0,this._camera.userData&&this._camera.userData.pitch&&this._camera.userData.pitch<0&&(this._planeBottom.constant=-3)):e&&e.boundingBox&&this._rootComponentPosition&&(this._planeBottom.constant=-e.boundingBox.getCenter(new ge).y-this._rootComponentPosition.y,this._planeSide.constant=2*-e.boundingBox.getSize(new ge).x+e.boundingBox.getCenter(new ge).x,this._camera.userData.yaw>0&&(this._planeSide.constant*=-1),this._bounds&&(this._planeFront.constant=this._bounds.z/2+e.boundingBox.getCenter(new ge).z))}_calculateOffset(e){e&&e.boundingBox&&(this._offset.copy(e.boundingBox.getCenter(new ge)),this._offset.applyQuaternion(e.getWorldQuaternion(new fe)))}update(e,t,n){if(e&&(this._bounds=e),t&&(this._rootComponentPosition=t),n){this._backgroundScene=n;let e=this._backgroundScene.children[0];e instanceof le&&e.geometry.computeBoundingBox()}}clear(){this._currentDrag&&D(this._currentDrag),this._currentHover&&D(this._currentHover)}enableDragIn(e){this._currentDrag=e}setRootComponentId(e){this._rootComponentId=e}setCamera(e){this._camera=e}setObject(e){this._object=e}setMode(e){this._mode=e}intersectMouseOnScene(e){const t=new pe,n=new ge;return n.copy(this._camera.position).normalize(),t.setFromNormalAndCoplanarPoint(n,this._object.position),this._raycaster.setFromCamera(new Ce(e.positionRelative.x,e.positionRelative.y),this._camera),S(this._raycaster.ray.intersectPlane(t,new ge))}enableOnWallSnapping(){this._onWallSnapping=!0}disableOnWallSnapping(){this._onWallSnapping=!1}}class Re extends I{constructor(e,t,n,i){super(),this._debug=!1,this._dragIn=!1,this._inputManager=i,this._raycastHelper=new je(t,n,this._inputManager),this._creator_=e}isDragIn(){return this._dragIn}setDragIn(e,t){this._dragIn=e,e?this._inputManager.enableDragIn(t):this._raycastHelper.clear(),this._interaction()}}e("S",Re);class Le{constructor(e){const{component:t,preview:n,resetCamera:i,consecutive:o,type:s,forceRender:r}=e;this.component=t,this.preview=n,this.resetCamera=void 0===i||i,this.consecutive=void 0===o||o,this.type=s||0,this.forceRender=void 0!==r&&r}}class Ve extends Re{constructor(e,t,n,i){super(e,t,n,i),this._cameraMoving=!1,this._raycastHelper.addEventListener(0,()=>{this._clickOutside()},this),this._selectionHandler.addEventListener(0,({component:e,consecutive:t})=>{this.dispatchEvent(8,new Le({component:e,consecutive:t})),this._inputManager.setDragEnabled(!0)},this),this._selectionHandler.addEventListener(1,({component:e,resetCamera:t})=>{this._selectionHandler.hasSelection()||this._inputManager.setDragEnabled(!1),this.dispatchEvent(9,new Le({component:e,resetCamera:t}))},this),this._addInputListeners(this._inputManager)}disable(){const e=new ve;e.disableAll(),this._raycastHelper.setLayers(e),this._raycastHelper.disableEvents()}enable(){const e=new ve;e.disableAll(),e.enable(4),e.enable(5),e.enable(7),e.enable(8),this._raycastHelper.setLayers(e),this._raycastHelper.enableEvents()}_addInputListeners(e){e.addEventListener(7,e=>this._interaction(),this),e.addEventListener(8,e=>this._interaction(),this)}addComponentHandlers(e){this._addComponentHandlers(e,e.boundingBoxMesh,{hasListener:!0,priority:xe.DEFAULT,roomleId:e.runtimeId}),e.meshes.forEach(t=>{this._addComponentHandlers(e,t,{hasListener:!0,priority:xe.COMPONENT,roomleId:e.runtimeId})})}addComponentDragInHandler(e){this._dragIn&&(this._addComponentHandlers(e,e.boundingBoxMesh,{hasListener:!0,priority:xe.DEFAULT,roomleId:e.runtimeId}),this._raycastHelper.enableDragIn(e.boundingBoxMesh))}_addComponentHandlers(e,t,n){t.userData.hasListener||(Object.assign(t.userData,n),t.addEventListener("select",()=>this.clickComponent(e)),t.addEventListener("hover_on",t=>this._hoverOn(e,t.attachment.type)),t.addEventListener("hover_off",t=>this._hoverOff(e,t.attachment.type)),t.addEventListener("drag_start",()=>this._dragStart(e)),t.addEventListener("drag",t=>this._drag(e,t.attachment.position)),t.addEventListener("drag_end",()=>this._dragEnd(e)))}addPreviewHandlers(e){let t=e.boundingBoxMesh;t.userData.hasListener||(t.userData=be(t.userData,{hasListener:!0,priority:xe.PREVIEW,roomleId:e.runtimeId}),t.addEventListener("select",()=>this._clickPreview(e)),t.addEventListener("hover_on",()=>this._hoverOnPreview(e)),t.addEventListener("hover_off",()=>this._hoverOffPreview(e)))}addPreviewLineHandlers(e){let t=e.boundingLineMesh;t.userData.hasListener||(t.userData=be(t.userData,{hasListener:!0,priority:xe.PREVIEW_LINE,roomleId:e.runtimeId}),t.addEventListener("select",()=>this._clickPreviewLine(e)),t.addEventListener("hover_on",t=>this._hoverOnPreviewLine(e,t.attachment.intersection)),t.addEventListener("hover_move",t=>this._hoverMovePreviewLine(e,t.attachment.intersection)),t.addEventListener("hover_off",()=>this._hoverOffPreviewLine(e)))}_clickPreview(e){this._dragStartPosition&&(e.position.copy(this._dragStartPosition),this._dragStartPosition=null),this.dispatchEvent(7,new Le({preview:e}))}_clickPreviewLine(e){this._dragStartPosition&&(e.position.copy(this._dragStartPosition),this._dragStartPosition=null),this.dispatchEvent(7,new Le({preview:e}))}clickComponent(e){this._debug&&e.runtimeId,this._selectionHandler.check(e),this._configuratorUiCallbacks.onClickComponent(e)}_clickOutside(){this._selectionHandler.cancelSelection(),this.dispatchEvent(3),this._interaction()}_hoverOn(e,t){this._cameraMoving||(this._debug&&e.runtimeId,e.hoverOn(),this._interaction(),this.dispatchEvent(1,new Le({component:e,type:t})),this._hoveredComponent=e)}_hoverOff(e,t){this._cameraMoving||(this._debug&&e.runtimeId,e.hoverOff(),this._interaction(),this.dispatchEvent(2,new Le({component:e,type:t})),this._hoveredComponent=null)}_hoverOnPreview(e){e.hoverOn(),this._interaction(!0),this._hoveredPreview=e}_hoverOffPreview(e){e.hoverOff(),this._interaction(!0),this._hoveredPreview=null}_hoverOnPreviewLine(e,t){this._updatePositionForPreviewLine(e,t),this._draggedComponent||e.hoverOn(),this._interaction(),this._hoveredPreview=e}_hoverMovePreviewLine(e,t){this._updatePositionForPreviewLine(e,t),this._hoveredPreview=e,this._interaction(!0)}_updatePositionForPreviewLine(e,t){let n=t.object.parent.parent.worldToLocal(t.point);this._previewLineIntersection=n,e&&(this._draggedComponent?this._draggedComponent.visible=!0:e.updatePreviewPosition(n))}_hoverOffPreviewLine(e){this._draggedComponent||e.hoverOff(),this._interaction(),this._hoveredPreview=null,this._previewLineIntersection=null}_setDragComponentShadow(e){var t;null===(t=this._draggedComponent)||void 0===t||t.traverse(t=>{if(t instanceof le){const n=t;e&&void 0!==n.castShadowOld?(n.receiveShadow=n.receiveShadowOld,n.castShadow=n.castShadowOld):(n.receiveShadowOld=t.receiveShadow,n.castShadowOld=t.castShadow,n.receiveShadow=!1,n.castShadow=!1)}})}_dragStart(e){e&&(this._selectionHandler.isSelected(e)||this.isDragIn())&&(this._dragStartPosition=e.position.clone(),this._dragStartRotation=e.rotation.clone(),this._draggedComponent=e,this._setDragComponentShadow(!1),this.dispatchEvent(4,new Le({component:e})),this._interaction())}_drag(e,t){if(e&&(this._selectionHandler.isSelected(e)||this.isDragIn())){if(e&&!this._draggedComponent&&(this._draggedComponent=e),this._previewLineIntersection){let e=this._hoveredPreview,t=e.getPositionForIntersectionPoint(this._previewLineIntersection),n=e.parent.localToWorld(t);this._draggedComponent.position.copy(this._draggedComponent.parent.worldToLocal(n)),this._draggedComponent.rotation.copy(e.docklineRotation),e.hideSelectionLine()}else e.parent?e.position.copy(e.parent.worldToLocal(t)):e.position.copy(t);this._hoveredPreview?e.visible=!1:e.visible=!0,this.dispatchEvent(5,new Le({component:e})),this._interaction()}}_dragEnd(e){if(e&&(this._selectionHandler.isSelected(e)||this.isDragIn())){if(this._hoveredPreview&&this._previewLineIntersection){let t=this._hoveredPreview,n=t.getPositionForIntersectionPoint(this._previewLineIntersection),i=t.parent.localToWorld(n);e.position.copy(e.parent.worldToLocal(i)),e.rotation.copy(t.docklineRotation)}else this._dragStartPosition&&this._dragStartRotation&&(e.position.copy(this._dragStartPosition),e.rotation.copy(this._dragStartRotation),this._dragStartPosition=null,this._dragStartRotation=null,this.addComponentHandlers(e));e.visible=!0,this._setDragComponentShadow(!0),this._draggedComponent=null,this._previewLineIntersection=null,this.dispatchEvent(6,new Le({component:e,preview:this._hoveredPreview})),this._interaction()}}_interaction(e){this.dispatchEvent(0,new Le({forceRender:e}))}hasSelection(){return this._selectionHandler.hasSelection()}update(e,t,n){this._raycastHelper.update(e,t,n)}isDragIn(){return this._dragIn}isDragging(){return null!=this._draggedComponent}setRootComponentId(e){this._raycastHelper.setRootComponentId(e)}cancelSelection(){this._selectionHandler.setSelectionMode("standard"),this._selectionHandler.cancelSelection()}setSelectionMode(e){this._selectionHandler.setSelectionMode(e)}getSelectionMode(){return this._selectionHandler.getSelectionMode()}getSelectedRuntimeComponentIds(){return this._selectionHandler.getSelectedRuntimeComponentIds()}setCameraMoving(e){e&&this._hoveredComponent&&this._hoverOff(this._hoveredComponent,0),this._cameraMoving=e}setCamera(e){this._raycastHelper.setCamera(e)}setObject(e){this._raycastHelper.setObject(e)}}n([i],Ve.prototype,"_selectionHandler",void 0),n([i],Ve.prototype,"_configuratorUiCallbacks",void 0);class Be extends I{constructor(e){super(),this._uiIntersectionMask=0,this.floorEnvironment=!1,this._camera=e}updateToBounds(e,t,n){let i=new ge(-e.x/2,0,-e.z/2),o=new ge(e.x/2,e.y,e.z/2);this._boundingBox=new de(i,o),this._clientWidth=t,this._clientHeight=n;let s=this._boundingBox.getSize(new ge);this._boxVertices=[],this._boxVertices.push(this._boundingBox.min),this._boxVertices.push(this._boundingBox.min.clone().add(new ge(s.x,0,0))),this._boxVertices.push(this._boundingBox.max),this._boxVertices.push(this._boundingBox.max.clone().sub(new ge(s.x,0,0)))}set canvasOffset(e){this._offset=e,this.calculateUIIntersection()}calculateUIIntersection(){let e=[];if(null==this._boundingBox||null==this._offset)return;let t=this._checkPaddings();t.bottom=this._clientHeight-t.bottom,t.right=this._clientWidth-t.right;let n=0;this.floorEnvironment?(e=["left","right","bottom"],n=11):(this._offset.left>0&&t.left<this._offset.left*this._clientWidth&&(e.push("left"),n|=8),this._offset.right<1&&t.right<(1-this._offset.right)*this._clientWidth&&(e.push("right"),n|=2),this._offset.bottom>0&&t.bottom<this._offset.bottom*this._clientHeight&&(e.push("bottom"),n|=1)),this._offset.top<1&&t.top<(1-this._offset.top)*this._clientHeight&&(e.push("top"),n|=4),n!==this._uiIntersectionMask&&(this.dispatchEvent(0,e),this._uiIntersectionMask=n)}_checkPaddings(){let e={left:this._clientWidth/2,top:this._clientHeight/2,right:this._clientWidth/2,bottom:this._clientHeight/2};return this._boxVertices.forEach(t=>{let n=k(t,this._camera,this._clientWidth,this._clientHeight);n.x<e.left&&(e.left=n.x),n.x>e.right&&(e.right=n.x),n.y<e.top&&(e.top=n.y),n.y>e.bottom&&(e.bottom=n.y)}),e}}class Te extends ${get cameraControl(){return this._cameraControl}resetCameraOnSceneClear(){this.cameraControl.clear()}async externalApiMoveCamera(e){await this.cameraControl.moveCamera(e),this._onCameraChanged()}externalApiZoomIn(e){this.cameraControl.zoomIn(e),this._onCameraChanged()}externalApiZoomOut(e){this.cameraControl.zoomOut(e),this._onCameraChanged()}externalApiResetCameraPosition(e){this.cameraControl.updateAndReset(e,!0),this._onCameraChanged()}disablePanningOnShiftRelease(){this.cameraControl.disablePanning()}enablePanningOnShiftClick(){this.cameraControl.enablePanning()}resetCameraToStartOnConfigurationLoaded(e){this.cameraControl.updateAndReset(e,!1)}updateBoundsOnPlanObjectUpdated(e){this.cameraControl.updateToBounds(e,!1,!1)}updateBoundsOnCancelDockings(e){this.cameraControl.updateToBounds(e,!1,!1)}async zoomToComponentOnConsecutiveClick(e){this.cameraControl.saveState(!1),await this.cameraControl.zoomTo(e),this._onCameraChanged()}resetCameraToStateOnCancelSelection(){this.cameraControl.hasSavedState()&&(this.cameraControl.resetToState(),this._onCameraChanged())}zoomToFitBoundsAfterUserInitiatedPreviews(e){this.cameraControl.zoomToFitBounds(e),this._onCameraChanged()}async resetCameraOnStartConfiguring(e,t,n=0){this.cameraControl.setCurrentCameraParameters(t),this.cameraControl.setObjectRotation(n),await this.cameraControl.updateAndReset(e,!0)}}e("c",Te);class Fe extends ee{constructor(e,t,n){super(e,t,x.HSC,n),this._configuratorContext.baseContext="configurator",this._getViewModel().setListener(this),this._sceneEventHandler=new Ve(this._creator_,this._scene,this.cameraBehaviour3d.cameraControl.getCamera(),this._getInputManager()),this._sceneEventHandler.addEventListener(0,({forceRender:e})=>{this._uiIntersectionHelper.calculateUIIntersection(),e&&this._renderEverything()},this),this._sceneEventHandler.addEventListener(1,({component:e,type:t})=>this._onHoverOn(e,t),this),this._sceneEventHandler.addEventListener(2,({component:e,type:t})=>this._onHoverOff(e,t),this),this._sceneEventHandler.addEventListener(3,()=>{this._configuratorUiCallbacks.onClickOutside(),this.cameraBehaviour.cameraControl.unlock(),this._cancelDockings(!1,null,this._getViewModel().hasPreviews(),!0,!1),this.cancelComponentSelection(!0),this._componentRaycastHelper&&this._componentRaycastHelper.checkComponentVisibility(this._sceneEventHandler,this._getViewModel()),this._requestRender()},this),this._sceneEventHandler.addEventListener(8,({component:e,consecutive:t})=>{this._getViewModel().hasPreviews()&&this._cancelDockings(!1,null,this._getViewModel().hasPreviews(),!0,!1),this._selectComponent(e,t),this._requestRender()},this),this._sceneEventHandler.addEventListener(9,({component:e,resetCamera:t})=>{this._deselectComponent(e,t),this._requestRender()},this),this._sceneEventHandler.addEventListener(4,({component:e})=>{var t;"multiselect"===this._sceneEventHandler.getSelectionMode()&&this.cancelComponentSelection(),this._requestDockingsPreviewWithDrag(e.runtimeId),this.cameraBehaviour.cameraControl.lock(),null===(t=this._roomleRenderer)||void 0===t||t.enableUiInteractionMode(),this._requestRender()},this),this._sceneEventHandler.addEventListener(5,()=>{this._renderEverything()},this),this._sceneEventHandler.addEventListener(6,({component:e,preview:t})=>{var n;if(t){let n=t;this._getViewModel().isPreviewLine(n)?this._getViewModel().dockComponentWithPosition(n,e):this._getViewModel().isPreview(n)?this._dockComponent(n):this._getKernelAccess().cancelDocking(e.runtimeId),this._cancelDockings(!t,e,!0,!0)}else{this._getKernelAccess().cancelDocking(e.runtimeId);let t=this._sceneEventHandler.isDragIn()?e:null;this._cancelDockings(this._sceneEventHandler.isDragIn(),t,!1,!0);const n=this._getViewModel().getBoundingBox();this._environment&&this._environment.needsBounds()&&this._environment.updateBounds(n.getSize(new ge))}this.cameraBehaviour.cameraControl.unlock(),null===(n=this._roomleRenderer)||void 0===n||n.disableUiInteractionMode(),this._renderEverything()},this),this._sceneEventHandler.addEventListener(7,({preview:e})=>{this._getViewModel().isPreview(e)&&(this._getViewModel().isPreviewLine(e)?this._getViewModel().dockComponentWithPosition(e):this._dockComponent(e),this._cancelDockings(!1,null,!this._getViewModel().hasPreviews(),!1,!1),this.requestDockingsPreview(!1),this._requestRender())},this),H.isProduction||(window.__RML__DEBUG__.SceneManager=this),this.enableConfiguratorEvents(),this._initOptionalModules(),this._offsetAnimationStart=we(this._offsetAnimationStart.bind(this),250),this._offsetAnimationEnd=Pe(this._offsetAnimationEnd.bind(this),32)}async _initOptionalModules(){const{transparentHighlighting:e}=this._initData;if(e){const{default:e}=await t.import("./component-raycast-helper-17b7f665.legacy.js");this._componentRaycastHelper=new e,this._componentRaycastHelper.init(this._scene,this.cameraBehaviour3d.cameraControl.getCamera())}}_changeCameraBehaviour(e){var t;super._changeCameraBehaviour(e),null===(t=this._componentRaycastHelper)||void 0===t||t.setCamera(this.cameraBehaviour3d.cameraControl.getCamera())}disableEvents(){this.disableConfiguratorEvents()}enableEvents(){"configurator"===this._configuratorContext.baseContext&&this.enableConfiguratorEvents()}enableConfiguratorEvents(){this._sceneEventHandler.enable()}disableConfiguratorEvents(){this._sceneEventHandler.disable()}_getViewModel(){return this._viewModel||(this._viewModel=o.lookup("configurator-view-model",this._creator_),this._viewModel.setRequestRenderCallback(()=>this._renderEverything()),this._viewModel.setRequestRenderSceneUpdateCallback(()=>{var e;return null===(e=this._roomleRenderer)||void 0===e?void 0:e.clearCache()}),this._viewModel.setInvalidateRenderCallback(()=>{var e;return null===(e=this._roomleRenderer)||void 0===e?void 0:e.forceShadowUpdates(!0)})),this._viewModel}_getKernelAccess(){return this._plannerKernelAccess}_showDockings(){var e,t,n;if(null===(e=this._roomleRenderer)||void 0===e||e.enableUiInteractionMode(),null===(n=null===(t=this._initData)||void 0===t?void 0:t.featureFlags)||void 0===n?void 0:n.pulsePreview){this._renderEverything();const e=setInterval(()=>this._renderEverything(),16);setTimeout(()=>clearInterval(e),(te+1)*ne)}}cancelDockings(){this._cancelDockings(!0,null,!0,!0,!1),this._renderEverything()}_cancelDockings(e,t,n,i,o=!0){var s,r;null===(s=this._roomleRenderer)||void 0===s||s.disableUiInteractionMode(),e&&(this._sceneEventHandler.setDragIn(!1),this._getViewModel().removeDockingComponent(),t&&this._scene.remove(t)),this._getViewModel().removePreviews(),n&&o&&ye().then(()=>{var e;null===(e=this.configuratorCameraBehaviour)||void 0===e||e.updateBoundsOnCancelDockings(this.getBounds())}),i&&n&&this._configuratorUiCallbacks.onDockingsPreviewRemoved(),this._componentRaycastHelper&&this._componentRaycastHelper.changeMaterialsOnSelect(this._scene,null,!1,()=>{var e,t;null===(e=this._roomleRenderer)||void 0===e||e.forceShadowUpdates(!0),this._initData.transparentHighlighting&&(null===(t=this._roomleRenderer)||void 0===t||t.clearCache()),this._renderEverything()}),n&&(null===(r=this._roomleRenderer)||void 0===r||r.forceShadowUpdates(!0))}_onHoverOn(e,t){2!==t&&this._highlightComponent(e),this._componentDimensioningHelper&&this._componentDimensioningHelper.add(e)&&this._renderEverything()}_onHoverOff(e,t){2!==t&&this._highlightComponent(),this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&(this._componentDimensioningHelper.remove(e),this._renderEverything()),this._requestRender()}_highlightComponent(e=null,t=[]){var n;if(!this._shouldHighlightComponent())return;const i=[],o=this._initData.meshSelection;e?o?i.push(...e.meshes):e.boundingBoxMesh&&i.push(e.boundingBoxMesh):t&&t.length||(t=this._sceneEventHandler.getSelectedRuntimeComponentIds()),this._getViewModel().getComponentsForIds(t).forEach(e=>{e&&(o?i.push(...e.meshes):e.boundingBoxMesh&&i.push(e.boundingBoxMesh))}),null===(n=this._roomleRenderer)||void 0===n||n.highlightObjects(i)}shouldClearShadowsAndAO(){var e;return super.shouldClearShadowsAndAO()||!(null===(e=this._sceneEventHandler)||void 0===e?void 0:e.isDragging())}resume(){super.resume(),this._getViewModel().materialQueue.registerCallback(()=>this._materialLoaded()),this._configuratorMeshGenerator.setMaterialLoadedListener(()=>{this._renderWithoutShadowsAndAO()})}_materialLoaded(){this._renderEverything()}pause(){super.pause(),this._getViewModel().materialQueue.unregisterCallback(),this._configuratorMeshGenerator.removeMaterialLoadedListener()}_setupScene(e,t,n){super._setupScene(e,t),this._uiIntersectionHelper=new Be(this.cameraBehaviour3d.cameraControl.getCamera()),this._uiIntersectionHelper.canvasOffset=e,this._uiIntersectionHelper.addEventListener(0,e=>{this._configuratorUiCallbacks.onUiIntersectionChange(e)},this),this._configuratorMeshGenerator.maxAnisotropy=this._maxAnisotropy,this._configuratorMeshGenerator.maxTextures=this._renderer.capabilities.maxTextures,this._configuratorMeshGenerator.setMaterialLoadedListener(()=>{this._renderWithoutShadowsAndAO()}),this._domHelper.element.appendChild(this._renderer.domElement),n||!this._initData.legacyLight||this._initData.ls||this._initData.dls||(this._renderer.capabilities.maxTextures>8?this.loadDynamicLightSetting(j.createDynamicLightSettingSource(null,R.CAMERA)):this._lightSetting=new De(this._scene,this._lightSetting)),this._requestRender(),t||this._setEnvironment(new ie(this._scene,this._environment,Me(this._initData.colors.DEFAULT_BACKGROUND))),this._getViewModel().materialQueue.registerCallback(()=>this._materialLoaded())}sceneCleared(e){this._internalClearScene(e)}display(e){this._scene.add(e),this.setRootComponentId(e.runtimeId),this._requestRender()}setRootComponentId(e){this._sceneEventHandler.setRootComponentId(e)}debugSceneGraph(e){this._getViewModel().debugSceneGraph(e),this._printObjectGraph(this._scene,"")}debugScene(){return this._scene}_printObjectGraph(e,t){e.material&&e.material.opacity,e.type,e.id,e.runtimeId,e.children.length>0&&e.children.forEach(e=>{let n=t+" ";this._printObjectGraph(e,n)})}clearScene(){var e,t;null===(e=this.configuratorCameraBehaviour)||void 0===e||e.resetCameraOnSceneClear(),this._internalClearScene(!1),null===(t=this._sceneEventHandler)||void 0===t||t.cancelSelection(),this._pluginSystem.clearScene(this._scene,this._uiScene)}planObjectConstructionDone(e){this._componentDimensioningHelper.reset(),this._componentDimensioningHelper.setCamera(this.cameraBehaviour3d.cameraControl.getCamera())}_internalClearScene(e){var t;this._scene.children.forEach(e=>{"Object3D"!==e.type&&"Mesh"!==e.type&&"Line"!==e.type||this._scene.remove(e)}),this._uiScene.children.forEach(e=>{this._uiScene.remove(e)}),this._getViewModel().sceneCleared(),null===(t=this._componentDimensioningHelper)||void 0===t||t.invalidateDimensioningsCache(),(e||this._memoryManager.shouldHardReset())&&(this._configuratorMeshGenerator.clear(),this._renderer.renderLists.dispose(),this._memoryManager.executedHardReset()),this._renderEverything()}async _waitForAssets(){await super._waitForAssets(),await this._externalMeshesAndMaterialsReady()}async preparePerspectiveImage(e={}){var t,n;await this._externalMeshesAndMaterialsReady();const{showDimensions:i=!1}=e;this._cancelDockings(!0,null,!0,!0);const o=this.cameraBehaviour3d.cameraControl.getCamera().clone();o.resetOffset();let s=this._calculateBoundingBoxOfAllMeshes(0,i);null===(t=this._lightSetting)||void 0===t||t.removeFromScene();const r=!!this._dimensionHelper&&this._dimensionHelper.areDimensionsEnabled();r&&this._dimensionHelper.disableDimensions();const a=this.cameraBehaviour3d.cameraControl.getObjectRotation();if(i){await this._initDimensions(),await this._dimensionHelper.isInitialized();const e=-30+K(a);L.placeCameraForPerspectiveImage(o,s,-20,e),this._dimensionHelper.enableDimensions(),this._dimensionHelper.moveCameraEnd(o.position),s=this._calculateBoundingBoxOfAllMeshes(0,i)}this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&await this._componentDimensioningHelper.reset();const l=await this._imageRenderer.preparePerspectiveImage(this._scene,this._uiScene,o,s,e,a);return r?(this._dimensionHelper.enableDimensions(),this._dimensionHelper.moveCameraEnd(this.cameraBehaviour3d.cameraControl.getCamera().position)):i&&this._dimensionHelper.disableDimensions(),null===(n=this._lightSetting)||void 0===n||n.addToScene(),this._renderEverything(),l}async renderImage(e){await this._externalMeshesAndMaterialsReady(),this._getViewModel().getPreviews()&&this._cancelDockings(!0,null,!0,!0);let t=this.cameraBehaviour3d.cameraControl.getCamera(),n=null;e.useCurrentPerspective||(t=this.cameraBehaviour3d.cameraControl.getCamera().clone(),t.resetOffset(),n=this._calculateBoundingBoxOfAllMeshes());const i=!!this._dimensionHelper&&this._dimensionHelper.areDimensionsEnabled();i&&this._dimensionHelper.disableDimensions(),this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&await this._componentDimensioningHelper.reset();const o=await this._imageRenderer.renderPerspectiveImage(this._scene,t,n);return i&&(this._dimensionHelper.enableDimensions(),this._dimensionHelper.moveCameraEnd(this.cameraBehaviour3d.cameraControl.getCamera().position)),this._renderEverything(),o}async preparePartImage(e,t){return new Promise((n,i)=>{this._getViewModel().requestSubPartConstruction(e).then(async e=>{t.size||(t.size=256);const i=this.cameraBehaviour3d.cameraControl.getCamera().clone();i.resetOffset();let o=L.getCameraTargetForBBox((new de).setFromObject(e));const s=V(this._scene);s.add(e);const r=await this._imageRenderer.preparePerspectiveImage(s,null,i,o,t);B(s),n(r)},i)})}_calculateBoundingBoxOfAllMeshes(e=0,t){let n=null;return n=t&&this._dimensionHelper?this._dimensionHelper.getBoundingBox():this._getViewModel().getBoundingBox(),L.getCameraTargetForBBox(n,e)}async _externalMeshesAndMaterialsReady(){await this._getKernelAccess().externalMeshQueue.finished(!0),await this._getViewModel().materialQueue.finished(!0)}async prepareTopImage(e={}){var t,n;await this._externalMeshesAndMaterialsReady();const{showDimensions:i=!1}=e;this._cancelDockings(!0,null,!0,!0),i&&(await this._initDimensions(!0),await this._dimensionHelper.isInitialized(),this._dimensionHelper.enableTopDimensions()),this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&await this._componentDimensioningHelper.reset();let o=this._calculateBoundingBoxOfAllMeshes(.1,i);null===(t=this._lightSetting)||void 0===t||t.removeFromScene();let s=await this._imageRenderer.prepareTopImage(this._scene,this._uiScene,o,e);return i&&this._dimensionHelper.disableTopDimensions(),null===(n=this._lightSetting)||void 0===n||n.addToScene(),this._renderEverything(),s}enableDragIn(e){this._sceneEventHandler.setDragIn(!0,e),this._requestRender()}async _zoomToComponentOnConsecutiveClick(e){let t=e.boundingBox.getSize(new ge),n=T(e),i=new Ie(0,n,0),o=e.getWorldPosition(new ge).clone().add(e.boundingBox.getCenter(new ge).applyEuler(i));const s=new Ce;this._renderer.getSize(s);const r={yaw:i.y,pitch:A(15),distance:F(t.x,t.y,t.z,this.cameraBehaviour3d.cameraControl.getCamera().fov,s.width,s.height)*oe,targetX:o.x,targetY:o.y,targetZ:o.z,blockOtherTweens:!0};Oe(this.cameraBehaviour.cameraControl.getCurrentCameraParameters(),r)||(this._configuratorUiCallbacks.onZoomToComponent(),await this.configuratorCameraBehaviour.zoomToComponentOnConsecutiveClick(r))}resetCameraPositionToStart(){this._requestRender();const e=this._getViewModel().getBoundingBox();this.configuratorCameraBehaviour.externalApiResetCameraPosition(e)}resetPreviews(){this._getViewModel().removePreviews(),this._requestRender()}changeOffset(e){this.cameraBehaviour3d.cameraControl.getCamera().offset=e,this._uiIntersectionHelper&&(this._uiIntersectionHelper.canvasOffset=e)}setCameraOffset(e){this._offsetAnimationStart(),this.cameraBehaviour3d.cameraControl.getCamera().offset&&(this.cameraBehaviour3d.cameraControl.getCamera().offset=e,this._renderEverything()),this._offsetAnimationEnd()}_offsetAnimationStart(){this._onCameraMove()}_offsetAnimationEnd(){this._onCameraIdle()}getCameraOffset(){var e,t,n;return(null===(n=null===(t=null===(e=this.cameraBehaviour3d)||void 0===e?void 0:e.cameraControl)||void 0===t?void 0:t.getCamera())||void 0===n?void 0:n.offset)?JSON.parse(JSON.stringify(this.cameraBehaviour3d.cameraControl.getCamera().offset)):{left:0,top:1,right:1,bottom:0}}_onKeyDown(e){super._onKeyDown(e),!e.key||"Escape"!==e.key&&"Esc"!==e.key||(this._getViewModel().hasPreviews()||this.cancelComponentSelection(),e.preventDefault()),e.key&&e.key.includes("Shift")&&this.cameraBehaviour3d.cameraControl instanceof se&&(this.enablePanning(),e.preventDefault()),this._sceneEventHandler&&this._sceneEventHandler.hasSelection()&&e.key&&("Backspace"===e.key||"Delete"===e.key)&&(this.requestDeleteSelectedComponent(),e.preventDefault())}_onKeyUp(e,t=!1){super._onKeyUp(e,t),e.key&&e.key.includes("Shift")&&(t||this.disablePanning(),e.preventDefault())}enablePanning(){this.configuratorCameraBehaviour.enablePanningOnShiftClick()}disablePanning(){this.configuratorCameraBehaviour.disablePanningOnShiftRelease()}cancelPreviousDockings(){var e;this._cancelDockings(!0,null,!1,!1),null===(e=this._roomleRenderer)||void 0===e||e.forceShadowUpdates(!0),this._renderEverything()}cancelComponentSelection(e){(this._sceneEventHandler.hasSelection()||"standard"!==this._sceneEventHandler.getSelectionMode())&&this._cancelSelection(e)}notifyPlannerOnComponentSelectionCancel(e,t){}_cancelSelection(e){var t;this._sceneEventHandler.cancelSelection(),this._configuratorContext.selectionMode="standard",this._configuratorContext.selectedRuntimeComponentIds=[],this._getViewModel().removePreviews(),e&&!this._initData.debug&&this.configuratorCameraBehaviour&&this.configuratorCameraBehaviour.resetCameraToStateOnCancelSelection();const n=null===(t=this._getKernelAccess().kernelInstance.getPlanObject(this._configuratorContext.planObjectId))||void 0===t?void 0:t.externalObject;this._getKernelAccess().updatePlanObjectDependencies(this._configuratorContext.planObjectId),this._configuratorUiCallbacks.onSelectionCancel(),n||this.notifyPlannerOnComponentSelectionCancel(!1,"unknown")}_selectComponent(e,t){this._configuratorContext.selectedRuntimeComponentIds=this._sceneEventHandler.getSelectedRuntimeComponentIds(),t||("standard"===this._sceneEventHandler.getSelectionMode()?this._onSelectedRuntimeComponentChange(e):this._onSelectedRuntimeComponentsChange(this._sceneEventHandler.getSelectedRuntimeComponentIds())),this._highlightComponent(e),!this._initData.debug&&t&&this._zoomToComponentOnConsecutiveClick(e)}_deselectComponent(e,t){"standard"===this._sceneEventHandler.getSelectionMode()&&(this._cancelSelection(t),this._highlightComponent()),"multiselect"===this._sceneEventHandler.getSelectionMode()&&(this._sceneEventHandler.hasSelection()?this._configuratorContext.selectedRuntimeComponentIds=this._sceneEventHandler.getSelectedRuntimeComponentIds():(this._cancelSelection(t),this._highlightComponent())),this._componentRaycastHelper&&this._componentRaycastHelper.changeMaterialsOnSelect(this._scene,null)}getScreenXY(e){return k(e,this.cameraBehaviour.cameraControl.getCamera(),this._domHelper.element.clientWidth,this._domHelper.element.clientHeight)}setSelectionMode(e){this._sceneEventHandler.setSelectionMode(e)}changeFloorMaterial(e){return this._environment&&this._environment instanceof re||(this._environment=new re(this._scene,this._environment,!0),this._uiIntersectionHelper.floorEnvironment=!0),new Promise((t,n)=>{this._environment.changeFloorMaterial(e,this._maxAnisotropy).then(()=>{this._requestRender(),t()},n)})}zoomIn(e){this.configuratorCameraBehaviour.externalApiZoomIn(e),this._renderEverything()}zoomOut(e){this.configuratorCameraBehaviour.externalApiZoomOut(e),this._renderEverything()}async showDimensions(){await this._initDimensions(),this._dimensionHelper.enableDimensions(),this._dimensionHelper.onDimensionsVisibilityChanged(e=>{e&&this._renderEverything(),this._configuratorUiCallbacks.onDimensionsVisibilityChange(e)}),this._configuratorUiCallbacks.onDimensionsVisibilityChange(!0),this._renderEverything()}async _initDimensions(e=!1){this._dimensionHelper||await t.import("./dimensioning-helper-fb07be35.legacy.js").then(({default:e})=>{this._dimensionHelper=new e(this._creator_)}),this._dimensionHelper.setUiScene(this._uiScene),this._dimensionHelper.setObject(this._getViewModel().getComponent(this._configuratorContext.rootComponentId),this.cameraBehaviour3d.cameraControl.getObjectRotation());const n=this._getKernelAccess().kernelInstance.getPlanObject(this._configuratorContext.planObjectId);n&&n.boxForMeasurement&&this._dimensionHelper.updateSize(n.boxForMeasurement);let i=this.cameraBehaviour3d.cameraControl.getCamera().position;if(e){const e=u(n.boxForMeasurement);i.copy(e.getCenter(new ge)),i.y=e.getSize(new ge).y+1}this._dimensionHelper.moveCameraEnd(i)}hideDimensions(){this._dimensionHelper&&this._dimensionHelper.disableDimensions(),this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&this._componentDimensioningHelper.reset(),this._renderEverything()}async loadSceneSettings(e){await super.loadSceneSettings(e),this._uiIntersectionHelper.floorEnvironment=this._environment instanceof re}onCameraChanged(){super.onCameraChanged(),this._configuratorUiCallbacks.onCameraPositionChanges(),this._updateComponentPosition()}requestDockingsPreview(e,t,n,i){i||(i=!1),e&&this.cancelPreviousDockings(),this.cancelComponentSelection(),i&&this.enableDragIn(n),t&&(this._configuratorContext.lastPossibleChild=t),this._configuratorContext.requestPreviewsIsUserInitiated=e,this.resetPreviews(),this._getKernelAccess().webGlPreviewDockings(this._configuratorContext,i),this._showDockings()}_requestDockingsPreviewWithDrag(e){this.cancelPreviousDockings(),this._configuratorContext.rootComponentId!==e&&(this.resetPreviews(),this._getKernelAccess().previewDockingsWithDrag(e,this._configuratorContext.planObjectId),this._showDockings())}_dockComponent(e){this._getKernelAccess().kernelInstance.isExternalPlanObject(e.parentId)?this._dockExternalComponent(e):this._dockKernelComponent(e)}_dockKernelComponent(e){c.start("dock_component_"+e.childId),this._getKernelAccess().dockComponent(e.parentId,e.parentDockId,e.childId,e.childDockId),this._configuratorContext.dockingRootComponentId=null;const t=this._getKernelAccess().kernelInstance.getComponent(e.childId);this._configuratorUiCallbacks.onElementDocked(JSON.parse(JSON.stringify(t)),e.childId),this.saveConfigToIdb()}_dockExternalComponent(e){this._getKernelAccess().dockExternalObjectComponent(e.parentId,e.parentDockId,e.childId,e.childDockId)}_onSelectedRuntimeComponentsChange(e){this._getKernelAccess().multiSelectionChange(e,this._configuratorContext.rootComponentId)}_onSelectedRuntimeComponentChange(e){let t=!1,n=null;e&&(t=e.runtimeId===this._configuratorContext.rootComponentId,n=e.runtimeId),this._getKernelAccess().selectionChange(n,t),e&&this._getKernelAccess().selectedComponent(e.runtimeId)}requestDeleteSelectedComponent(){const e=this._configuratorContext.selectedRuntimeComponentIds,t=this._configuratorContext.rootComponentId;if(this._getKernelAccess().isExternalObjectOrComponent(t)||Array.isArray(e)&&0!==e.length&&t&&-1===e.indexOf(t)){switch(this._configuratorContext.selectionMode){case"standard":this._getKernelAccess().requestDeleteComponent(this._configuratorContext.selectedRuntimeComponentId);break;case"multiselect":this._getKernelAccess().requestDeleteComponents(this._configuratorContext.selectedRuntimeComponentIds)}this._configuratorContext.selectedRuntimeComponentIds=[]}}componentUpdated(e,t){var n;if(e.runtimeId===this._configuratorContext.rootComponentId){let t=new ge(e.position.x/1e3,e.position.z/1e3,e.position.y/-1e3);this._sceneEventHandler.update(null,t,null)}void 0===e.geometryChanged||e.geometryChanged?this._renderEverything():this._renderWithoutShadowsAndAO(),null===(n=this._componentDimensioningHelper)||void 0===n||n.invalidateDimensioningsCache(e.runtimeId)}planObjectUpdated(e,t,n){const i=this._getKernelAccess().kernelInstance.getSerializedConfiguration(this._configuratorContext.planObjectId);if(n||this._configuratorHistory.push(i),e.bounds){if(this._configuratorContext.planObjectId===e.id&&this.cameraBehaviour3d instanceof Te){const e=this._getViewModel().getBoundingBox();this.cameraBehaviour3d.updateBoundsOnPlanObjectUpdated(e);const n=this._getViewModel().getBoundingBoxOfGeometry();this._updateBounds(e,n,t)}this._highlightComponent(),this._requestRender()}}componentDeleted(e){-1===this._sceneEventHandler.getSelectedRuntimeComponentIds().indexOf(e.runtimeId)&&"multiselect"!==this._sceneEventHandler.getSelectionMode()||this.cancelComponentSelection()}previewConstructionDone(e,t){const n=this._getViewModel().getBoundingBoxWithPreviews();t||(this._cancelDockings(!0,null,!1,!1,!1),this._configuratorContext.requestPreviewsIsUserInitiated&&this._configuratorUiCallbacks.onNoDockingsAvailable());let i=!0;this._componentRaycastHelper&&(i=!this._componentRaycastHelper.areAllComponentsInFrustum(this._getViewModel().getPreviews())),this._configuratorContext.requestPreviewsIsUserInitiated&&i&&this.configuratorCameraBehaviour.zoomToFitBoundsAfterUserInitiatedPreviews(n),this._lightSetting&&this._lightSetting.needsBounds()&&(this._lightSetting.updateBounds(n),this._environment&&this._environment.needsBounds()&&this._environment.updateBounds(n.getSize(new ge))),this._componentRaycastHelper&&this._componentRaycastHelper.checkPreviewVisibility(this._getViewModel())}configurationLoaded(e,t){e&&t&&this._sceneEventHandler.isDragIn()?(e.position.copy(new ge(0,100,0)),this._scene.add(e),this._sceneEventHandler.addComponentDragInHandler(e),this._requestRender()):t||this._initData.debug||this._initData.moc||this.configuratorCameraBehaviour.resetCameraToStartOnConfigurationLoaded(this.getBounds()),this._environment&&this._environment.reload(),this._waitForAssets().then(()=>{this._readyForRender()})}addComponentHandlers(e){this._sceneEventHandler.addComponentHandlers(e)}addPreviewHandlers(e){this._sceneEventHandler.addPreviewHandlers(e)}addPreviewLineHandlers(e){this._sceneEventHandler.addPreviewLineHandlers(e)}_updateComponentPosition(){if(!this._configuratorUiCallbacks.onComponentPositionsUpdated)return;const e=[];this._getViewModel().getComponents().forEach(t=>{if(!t.boundingBoxMesh)return;const n=(new de).setFromObject(t.boundingBoxMesh);let i=this._getKernelAccess().kernelInstance.getComponent(t.runtimeId);const o=i.parameters||i.possibleChildren?["edit"]:[];e.push({id:t.runtimeId,position:this.getScreenXY(n.getCenter(new ge)),type:"component",actions:o})}),this._getViewModel().getPreviews().forEach(t=>{const n=(new de).setFromObject(t);e.push({id:t.runtimeId,position:this.getScreenXY(n.getCenter(new ge)),type:"preview",actions:["add"]})}),this._configuratorUiCallbacks.onComponentPositionsUpdated(e)}_updateBounds(e,t,n=!1){var i;if(super._updateBounds(e,t,n),!e)return;let o=e.getSize(new ge);const s=this._getKernelAccess().kernelInstance.getPlanObject(this._configuratorContext.planObjectId);s&&s.boxForMeasurement&&(null===(i=this._dimensionHelper)||void 0===i||i.updateSize(s.boxForMeasurement)),this._sceneEventHandler.update(o,null,null),this._uiIntersectionHelper.updateToBounds(o,this._domHelper.element.clientWidth,this._domHelper.element.clientHeight),this._componentDimensioningHelper&&this._componentDimensioningHelper.hasComponentDimensions()&&this._componentDimensioningHelper.reset(),this.cameraBehaviour3d.cameraControl.getCamera().updateProjectionMatrix()}async moveCamera(e){return this.configuratorCameraBehaviour.externalApiMoveCamera(e)}getSelectedRuntimeComponentIds(){return this._sceneEventHandler.getSelectedRuntimeComponentIds()}selectComponent(e){if(!e)return;const t=this._getViewModel().getComponents().find(t=>t.runtimeId===e);t?this._sceneEventHandler.clickComponent(t):console.warn('Can not select "'+e+'" because it was not found')}highlightParts(e){this._highlightComponent(null,e),this._requestRender()}_shouldHighlightComponent(){return"configurator"===this._configuratorContext.baseContext&&(this._initData.highlighting===Ee.ALWAYS||this._initData.highlighting!==Ee.OFF&&(!!this._getKernelAccess().kernelInstance.getComponent(this._configuratorContext.rootComponentId).externalComponent||(this._plannerKernelAccess.kernelInstance.getChildrenOfPlanComponent(this._configuratorContext.rootComponentId,!0,!1)||[]).length>1))}saveConfigToIdb(){var e,t;let n,i;const{configuratorId:o}=this._globalInitData,{lastLoadedPlanId:s,lastLoadedRapiId:r}=this._configuratorContext;this._initData.moc?(n=s,i=null===(t=null===(e=this._getKernelAccess())||void 0===e?void 0:e.planInteractionHandler.getPlan())||void 0===t?void 0:t.getPlanXML(!1,2)):(n=r,i=this._getKernelAccess().kernelInstance.getSerializedConfiguration(this._configuratorContext.planObjectId));const a=this._idbManager.getKey(G(),o,n);this._idbManager.setValue(a,i,this._idbManager.configStore)}_getInputManager(){return this._configuratorInputManager}createCameraControl(e,t){this._componentFactory=Y();const n=this._domHelper.getClientDimensions(),i=n.x,o=n.y,s=this._componentFactory.createPerspectiveCamera(30,i/o,.1,20,t);s.layers.set(3),s.layers.enable(1),s.layers.enable(2),s.layers.enable(6),s.layers.enable(5),s.position.copy(new ge(0,.5,5)),this._changeCameraBehaviour(new Te(new se(this._creator_,this._getInputManager(),null,s),this._cameraBehaviourState))}getBounds(){return this._getViewModel().getBoundingBox()}getGeometryBounds(){return this._getViewModel().getBoundingBoxOfGeometry()}sceneChanged(){}get configuratorCameraBehaviour(){return this.cameraBehaviour instanceof Te?this.cameraBehaviour:null}get cameraBehaviour3d(){return this.cameraBehaviour}_onCameraIdle(){return super._onCameraIdle()}_onCameraMove(){return super._onCameraMove()}getComponent(e){return this._plannerKernelAccess.kernelInstance.getComponent(e)}cameraBehaviourChanged(){var e;super.cameraBehaviourChanged(),null===(e=this._sceneEventHandler)||void 0===e||e.setCamera(this.cameraBehaviour.cameraControl.getCamera()),this._setCameraControlListeners()}_setCameraControlListeners(){this.cameraBehaviour3d&&(this.cameraBehaviour.cameraControl.addEventListener(0,()=>{this._configuratorUiCallbacks.onCameraPositionChanges(),this._sceneEventHandler.setCameraMoving(!0),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(1,()=>{this._componentRaycastHelper&&this._componentRaycastHelper.checkComponentAndPreviewVisibility(this._sceneEventHandler,this._getViewModel()),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(2,()=>{this._sceneEventHandler.setCameraMoving(!1),this._updateComponentPosition(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(5,({minZoom:e,maxZoom:t})=>{this._configuratorUiCallbacks.onZoomChange(e,t)},this),this.cameraBehaviour.cameraControl.addEventListener(3,()=>{this._configuratorUiCallbacks.onCameraPositionChanges(),this._updateComponentPosition(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(4,()=>{this._configuratorUiCallbacks.onCameraPositionChanges(),this._updateComponentPosition(),this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(7,()=>{var e;this._pluginSystem.moveCameraStart(this.cameraBehaviour.cameraControl.getCamera().position),null===(e=this._dimensionHelper)||void 0===e||e.moveCameraStart(this.cameraBehaviour.cameraControl.getCamera().position)},this),this.cameraBehaviour.cameraControl.addEventListener(8,()=>{var e;this._pluginSystem.moveCameraEnd(this.cameraBehaviour.cameraControl.getCamera().position),null===(e=this._dimensionHelper)||void 0===e||e.moveCameraEnd(this.cameraBehaviour.cameraControl.getCamera().position)},this))}_shouldRenderUi(){var e;return super._shouldRenderUi()||(null===(e=this._dimensionHelper)||void 0===e?void 0:e.areDimensionsEnabled())}setEventHandlerObject(e){this._sceneEventHandler.setObject(e)}_readyForRender(){"configurator"===this._configuratorContext.baseContext&&(this._configuratorUiCallbacks.onReadyForRender(),this._globalCallback.onReadyForRender())}animateElement(e,t,n,i,o){const s="animation:"+t;this._viewModel.changeAnimationValue(e,s,n,i,o)}}e("C",Fe),n([i],Fe.prototype,"_configuratorInputManager",void 0),n([i],Fe.prototype,"_configuratorMeshGenerator",void 0),n([i],Fe.prototype,"_memoryManager",void 0),n([i],Fe.prototype,"_configuratorContext",void 0),n([i],Fe.prototype,"_componentDimensioningHelper",void 0),n([i],Fe.prototype,"_configuratorHistory",void 0),n([i],Fe.prototype,"_configuratorUiCallbacks",void 0),n([i],Fe.prototype,"_plannerKernelAccess",void 0),n([i],Fe.prototype,"_globalInitData",void 0);class Ge{_isInitDone(){return this._isKernelReady&&this._isWebGlReady&&this._isPreloadReady}_checkInitDone(){this._isInitDone()&&(this._onInitDoneCollection.forEach(e=>e()),this._onInitDoneCollection=[])}_onInitDone(e){this._isInitDone()?e():this._onInitDoneCollection.push(e)}constructor(e){this._onInitDoneCollection=[],this._isKernelReady=!1,this._isWebGlReady=!1,this._isPreloadReady=!0,this._isLoadError=!1,this._isReloading=!1,this._needsSync=!1,this._creator_=e,this._configuratorKernelAccessCallback.addListener(this);const{dls:t,ls:n}=this._initData;(n||t)&&(this._initData.legacyLight=!0),this._initData.legacyLight&&(this._initData.envMapIntensity=.9);const i=this._errorHandler;i.subscribe(0,e=>this._configuratorUiCallbacks.onErrorDueToOffline(e)),i.subscribe(1,e=>this._configuratorUiCallbacks.onError(e)),i.subscribe(2,(e,t)=>this._configuratorUiCallbacks.onContentProblem({rapiPath:e,ids:t,message:"Could not load the ids"}))}exportCanvasScreenshot(e){return this._sceneManager.exportCanvasScreenshot(e)}initSceneManager(e){this._sceneManager=e||o.lookup("configurator-scene-manager",this._creator_)}getScene(){return this._sceneManager.getScene()}updateScene(){this._sceneManager.updateScene()}_loadWebGlLib(e,t){this._loadingWebGlSuccess(e,t)}_loadingWebGlSuccess(e,t){this.initSceneManager(),t&&this._sceneManager.changeOffset(t);const{initialFloorMaterial:n,dls:i,ls:o,stats:s}=this._initData,r=j.createDynamicLightSettingSource(i,o);s&&this.showStats(),this._sceneManager.enableHD(r),this._needsSync&&(this._needsSync=!1,this._plannerKernelAccess.requestSync(U,this._configuratorContext.planObjectId));const a=[this._scriptLoader.fetch(ae,{id:"tween-js"})];n&&a.push(this._rapiAccess.getMaterial(n).then(e=>this._sceneManager.changeFloorMaterial(e))),Promise.all(a).then(this._webGlIsReady.bind(this),this.loadError.bind(this))}_webGlIsReady(){this._isWebGlReady=!0,this._checkInitDone()}_initPromiseCallback(e,t){this._isInitDone()?e():this._isLoadError?t("_initPromiseCallback failed"):(this._onInitDone(()=>e()),this._rejectOnLoadError=t)}_notifyOnConfigurationReady(e){return async t=>{const n=await this._plannerKernelAccess.addUiDataAndPriceToPartList(t.partList,t.hash);t.partList=n,e(t),this._configuratorUiCallbacks.onConfigurationReady(n,t.hash,t.rootComponentLabel),this._configuratorHistory.clearHistory()}}_notifyOnConfigurationLoadingError(e){return t=>{this._configuratorUiCallbacks.onConfigurationLoadError(),e(t)}}_loadItemOrConfigById(e,t){this._configuratorContext.lastLoadedRapiId=e,this._onLoadConfiguration(),this._preloadPackage(e),this._clearScene();const{offlineSync:n}=this._initData;if(n){const t=N(e);t&&this._dataSyncer.start(t)}return new Promise((n,i)=>{(t?this._rapiAccess.getConfiguration(e):this._rapiAccess.getItem(e)).then(t=>{t&&t.configuration?this._loadConfiguration(t.configuration).then(e=>{const i=this._notifyOnConfigurationReady(n);t.label?this._notifyUiAboutNewItem(t,e.rootComponentLabel):this._notifyUiAboutNewConfiguration(t),i(e)},this._notifyOnConfigurationLoadingError(i).bind(this)):i(new Error("Could not load item or config with id "+e))},i)})}_shouldBroadcastToUi(e){return!(0===e&&this._configuratorContext.selectedRuntimeComponentId||1===e&&!this._configuratorContext.selectedRuntimeComponentId||2===e&&!this._configuratorContext.selectedRuntimeComponentIds.length)}_isCorrectResponse(e,t){if(0===e)return t===this._configuratorContext.planObjectId;if(1===e)return t===this._configuratorContext.selectedRuntimeComponentId;const n=t.length;if(n!==this._configuratorContext.selectedRuntimeComponentIds.length)return!1;for(let e=0;e<n;e++)if(t[e]!==this._configuratorContext.selectedRuntimeComponentIds[e])return!1;return!0}_onLoadConfiguration(){this._clearScene(),this._configuratorUiCallbacks.onLoadConfiguration()}_clearScene(){this._sceneManager&&this._sceneManager.clearScene()}_notifyUiAboutNewItem(e,t){this._rapiAccess.getCatalog(e.catalog).then(n=>this._configuratorUiCallbacks.onConfigurationLabelChange(n.name,e.label,t))}_notifyUiAboutNewConfiguration(e){Promise.all([this._rapiAccess.getCatalog(e.catalog),this._rapiAccess.getComponent(e.rootComponentId)]).then(([e,t])=>this._configuratorUiCallbacks.onConfigurationLabelChange(e.name,null,t.label))}notifyUiAboutNewLabel(e){if(q(e)){const t=this._rapiAccess.peekItem(e),n=this._rapiAccess.peekComponent(t.rootComponentId);this._notifyUiAboutNewItem(t,n.label)}else this._notifyUiAboutNewConfiguration(this._rapiAccess.peekConfiguration(e))}_getMaterialGroups(e){const t=(e,t)=>{let n=Z(e,t);return 0!==n?n:(n=X(e.label,t.label),0!==n?n:X(e.id,t.id))},n=e=>(e.sort(t),e.forEach(e=>e.materials.sort(t)),e);if(e.validGroups.length>0)return new Promise((t,i)=>this._rapiAccess.getMaterialsByGroup(e.validGroups).then(e=>t(n(e)),i));const i=[];return e.validValues.forEach(e=>i.push(e.value)),new Promise((e,t)=>{this._rapiAccess.getMaterials(i).then(t=>{this._rapiAccess.combineMaterialsToGroups(t).then(t=>{e(n(t))})},t)})}_loadConfiguration(e){return this._plannerKernelAccess.externalMeshQueue.clear(),new Promise((t,n)=>{const i=()=>{const{x:i,y:o}=this._domHelper.getClientDimensions();if(i<=0&&o<=0){let e="Size of canvas is 0/0! When using embedding set correct size or remove id to load in idle mode!";return console.error(e),n(e)}this.resumeKernelCallbacks(),c.start("ui_load_configuration");const s=[];if(this._initData.applyCurrentGlobalParameters){const e=this._configuratorContext.planObjectId,t=this._configuratorContext.rootComponentParametersAsGlobal;s.push(this._plannerKernelAccess.getGlobalParameters(e,t))}Promise.all(s).then(([i])=>{const o=[h.waitFor(4),h.waitFor(2)];Promise.all(o).then(([e,[n,o,s,r]])=>{const a=[];i&&this._initData.applyCurrentGlobalParameters&&i.forEach(e=>a.push(this.setParameter(e,e.value,!0)));const l=this._rapiAccess.peekComponent(r);Promise.all(a).then(()=>{const n=[];a.length&&(n.push(this._plannerKernelAccess.getPartList()),n.push(this._plannerKernelAccess.getConfigurationHash(this._configuratorContext))),Promise.all(n).then(async n=>{const i=n&&n[0]?n[0]:o,r=n&&n[1]?n[1]:s,a=await this._plannerKernelAccess.addUiDataAndPriceToPartList(i,r);let c=e.errors;const h=c?Q(c):[];this._configuratorUiCallbacks.onPartListUpdate(a,window.btoa(s)),t({partList:a,hash:r,rootComponentLabel:l?l.label:"",errors:h})})})},n),this._plannerKernelAccess.loadConfiguration(e)},n)};this._onInitDone(()=>i())})}_preLoadItemOrConfig(e,t){return new Promise((n,i)=>{(t?this._rapiAccess.getConfiguration(e):this._rapiAccess.getItem(e)).then(n,i)})}_preloadPackage(e){this._isPreloadReady=!1;let t=null;t=q(e)?this._rapiAccess.getPreloadForItem.bind(this._rapiAccess):this._rapiAccess.getPreloadForConfiguration.bind(this._rapiAccess),c.start("rapi_preloads");const n=()=>{const t=c.getMeasure("rapi_preloads");if(Array.isArray(t)&&1===t.length){const n=t[0];this._configuratorUiCallbacks.onTrackTiming("Timing","RapiPreloads",Math.round(n.duration),{id:e})}};t(e).then(()=>{this._isPreloadReady=!0,this._checkInitDone(),n()},e=>{this._isPreloadReady=!0,this._checkInitDone(),console.error(e),n()})}_reloadConfiguration(e,t,n,i){return this._performLoadConfiguration(e).then(e=>{this._isReloading=!1,n(e)},e=>{this._isReloading=!1,i(e)})}_performLoadConfiguration(e){return this._onLoadConfiguration(),new Promise((t,n)=>{this._initData.preloadHint?this._preloadPackage(this._initData.preloadHint):console.warn("When loading a configuration string you have to supply a preloadHint to use fast loading!"),setTimeout(()=>{this._loadConfiguration(e).then(this._notifyOnConfigurationReady(t).bind(this),this._notifyOnConfigurationLoadingError(n).bind(this))},0)})}_changeHDGeometry(e){return new Promise((t,n)=>e===W.useHDGeometry?t():this._isReloading?n("Change of HD Geometry in progress"):(this._isReloading=!0,h.waitFor(3).then(([e,i])=>{this._reloadConfiguration(e,i,t,n)},n),W.useHDGeometry=e,void this._plannerKernelAccess.changeUseOfHDGeometry(this._configuratorContext,W.useHDGeometry)))}async _callOnPartListUpdate(){const{hash:e}=await h.waitFor(4),t=await this._plannerKernelAccess.getPartList(),n=await this._plannerKernelAccess.getConfigurationHash(this._configuratorContext),i=await this._plannerKernelAccess.addUiDataAndPriceToPartList(t,n);this._configuratorUiCallbacks.onPartListUpdate(i,window.btoa(e))}setOverrides(e){e&&(this._initData.setOverrides(e),this._globalInitData.setOverrides(e))}init(e,t){this.setOverrides(t);const{preloadHint:n,offset:i,startTag:o}=this._initData;return this._domHelper.setDomElement(e),n?this._preloadPackage(n):console.warn("No preload hint! Therefore no preload during init!!"),o&&this.getTagById(o,{include:["items"]}).then(e=>this._configuratorUiCallbacks.onOpenTag(e),e=>console.error(e)),this._loadWebGlLib(e,i),new Promise(this._initPromiseCallback.bind(this))}cancelSelection(){this._sceneManager.cancelComponentSelection()}enableHDGeometry(){return this._changeHDGeometry(!0)}disableHDGeometry(){return this._changeHDGeometry(!1)}changeOffset(e){this._sceneManager.changeOffset(e)}previewDockings(e,t,n){this._sceneManager.requestDockingsPreview(!0,e,t,n)}cancelDockings(){this._sceneManager.cancelDockings()}requestDeleteComponent(){this._sceneManager.requestDeleteSelectedComponent()}renderImage(e){return this._sceneManager.renderImage(e)}preparePerspectiveImage(e={}){return this._sceneManager.preparePerspectiveImage(e)}preparePartImage(e,t){let n={};return"number"==typeof t?n.size=t:(t||(t={}),"number"!=typeof t.size&&(t.size=256),n=t),this._sceneManager.preparePartImage(e,n)}async saveCurrentConfiguration(){var e;try{const t=await this._plannerKernelAccess.getConfigurationData(this._configuratorContext.planObjectId);if(null===(e=this._plannerKernelAccess.kernelInstance)||void 0===e?void 0:e.isExternalPlanObject(this._configuratorContext.planObjectId))return{...t,label:"",externalObject:!0};const n=await this._rapiAccess.saveConfiguration(t);this._configuratorUiCallbacks.onConfigurationSaved(n.configurationHash);const i=await this._rapiAccess.getComponent(n.rootComponentId);let o=null,s=null;if(n.perspectiveImage&&!this._initData.featureFlags.forceSaveThumbnails||(o=await this._sceneManager.preparePerspectiveImage()),n.topImage&&!this._initData.featureFlags.forceSaveThumbnails||(s=await this._sceneManager.prepareTopImage()),o&&s){const e=await this._rapiAccess.saveConfigurationImage(n,o,"perspectiveImage",s,"topImage");n.perspectiveImage=e.perspectiveImage,n.topImage=e.topImage}return n.label=i.label,n.externalObject=!1,this._rapiAccess.updateCache("configurations",n),n}catch(e){throw new Error(e)}}generateImagesOfCurrentConfiguration(){return new Promise((e,t)=>this.saveCurrentConfiguration().then(t=>e({topImage:t.topImage,perspectiveImage:t.perspectiveImage,isLocally:t.isLocally}),t))}prepareTopImage(e){let t={};return"boolean"==typeof e?t.showDimensions=e:(e||(e={}),"boolean"!=typeof e.showDimensions&&(e.showDimensions=!1),t=e),this._sceneManager.prepareTopImage(t)}resetCameraPosition(){this._sceneManager.resetCameraPositionToStart()}showBenchmarks(e){c.showBenchmarks(e)}debugSceneGraph(e){this._sceneManager.debugSceneGraph(e)}async loadConfiguration(e,t){this.setOverrides(t),this._configuratorContext.lastLoadedRapiId=null,this._sceneManager&&this._sceneManager.clearScene();const n=await this._performLoadConfiguration(e);return this._rapiAccess.trackView("configuration string"),n}async loadConfigurationById(e,t){this.setOverrides(t);const n=await this._loadItemOrConfigById(e,!0);return this._rapiAccess.trackView(e),n}async loadConfigurableItemById(e,t){this.setOverrides(t);const n=await this._loadItemOrConfigById(e,!1);return this._rapiAccess.trackView(e),n}preLoadConfigurationById(e){return this._preLoadItemOrConfig(e,!0)}preLoadConfigurableItemById(e){return this._preLoadItemOrConfig(e,!1)}_getTag(e){return this._rapiAccess.getTag(e)}_dispatchSetParameter(e,t,n,i,o){const s=this._configuratorContext.selectedRuntimeComponentId?"local":"global";switch(c.start("kernel_change_param_"+s+"_"+e),this._configuratorContext.selectionMode){case"standard":if(this._configuratorContext.selectedRuntimeComponentId||this._configuratorContext.rootComponentParametersAsGlobal){let s=this._configuratorContext.selectedRuntimeComponentId?this._configuratorContext.selectedRuntimeComponentId:this._configuratorContext.rootComponentId;this._plannerKernelAccess.changeComponentParameter(s,e,t,n,i,o)}else this._plannerKernelAccess.changePlanObjectParameter(this._configuratorContext.planObjectId,e,t,n,i,o);break;case"multiselect":this._plannerKernelAccess.changeCommonComponentParameter(this._configuratorContext.selectedRuntimeComponentIds,e,t,n,i,o)}}setParameter(e,t,n=!1){return new Promise((i,o)=>{const{key:s,type:r}=e;if(z(e)){if(!n&&!this._unitFormatter.isParseableUnitString(t,e))return o(new SyntaxError('Value "'+t+'" is not parseable'));const i=n?t:this._unitFormatter.parseValue(t,e),{valueFrom:s,valueTo:a}=e.validRange,l=this._unitFormatter.getAllowedDelta();if(!Number.isNaN(s)&&i<s-l)return o(new RangeError('Value "'+t+'" is too small, min-val "'+s+'"'));if(!Number.isNaN(a)&&i>a+l)return o(new RangeError('Value "'+t+'" is too big, max-val "'+a+'"'));t="Integer"===r&&"number"==typeof i?i.toFixed():i.toString()}this._sceneManager.cancelDockings(),this._dispatchSetParameter(s,r,t,i,o),this._sceneManager.saveConfigToIdb()})}setParameterOfPlanObject(e,t){return new Promise((n,i)=>{const{planObjectId:o,rootComponentId:s,rootComponentParametersAsGlobal:r}=this._configuratorContext,{type:a,key:l}=e;r?this._plannerKernelAccess.changeComponentParameter(s,l,a,t,n,i):this._plannerKernelAccess.changePlanObjectParameter(o,l,a,t,n,i)})}getParametersOfPlanObject(){const{planObjectId:e,rootComponentParametersAsGlobal:t}=this._configuratorContext;return this._plannerKernelAccess.getGlobalParameters(e,t)}setParameterOfRootComponent(e,t){return new Promise((n,i)=>{const{rootComponentId:o}=this._configuratorContext,{type:s,key:r}=e;this._plannerKernelAccess.changeComponentParameter(o,r,s,t,n,i)})}getParametersOfRootComponent(){const{planObjectId:e}=this._configuratorContext;return this._plannerKernelAccess.getGlobalParameters(e,!0)}enableMultiselect(){this._sceneManager.setSelectionMode("multiselect"),this._configuratorContext.selectionMode="multiselect"}disableMultiselect(){this._sceneManager.setSelectionMode("standard"),this._configuratorContext.selectionMode="standard"}getCurrentConfiguration(){return h.waitFor(1,()=>this._plannerKernelAccess.uiRequestConfiguration(this._configuratorContext.planObjectId))}loadComponentIntoKernel(e){return h.waitFor(0,()=>{let t=null;try{if(t=JSON.parse(e).id,!t)throw new Error("Component string has no ID")}catch(e){return this._configuratorUiCallbacks.onContentProblem({rapiPath:"components",ids:[t],message:"Component string is not a valid JSON or has no ID"}),void h.failOperation(0,e)}this._kernelIo.setMeta({componentId:t}),this._plannerKernelAccess.loadComponentIntoKernel(e,t)})}getShortUrlOfCurrentConfiguration(){return new Promise((e,t)=>{this.saveCurrentConfiguration().then(n=>navigator.onLine?this._rapiAccess.getShortUrl(n.id,3).then(t=>{const n=t.shortId,i=H.APP.SHORTENER_URL+n;e(i)},t):t("Can not generate short url when offline"),t)})}formatValueToUnitString(e,t){return this._unitFormatter.formatValueToUnitString(e,t)}getTagById(e,t){return new Promise((n,i)=>{this._getTag(e).then(e=>{let o=Promise.resolve([]),s=Promise.resolve([]);t&&t.include&&t.include.forEach(t=>{"materials"===t&&(o=this._rapiAccess.getMaterialsOf(e)),"items"===t&&(s=this._rapiAccess.getItems(e.items))}),Promise.all([o,s]).then(([t,i])=>(i.sort(Z),t.sort(Z),n({...e,items:i,materials:t})),i)},i)})}requestAsset(e){return this._dataSyncer.requestAsset(e)}changeFloorMaterial(e){return this._sceneManager.changeFloorMaterial(e)}async changeFloorMaterialById(e){const t=await this._rapiAccess.getMaterial(e);return this._sceneManager.changeFloorMaterial(t)}openFloorMaterials(){this._configuratorUiCallbacks.onOpenFloorMaterials()}openPartList(){this._configuratorUiCallbacks.onOpenPartList()}getAdditionalContentsOf(e){return this._rapiAccess.getAdditionalContentsOfItems(e)}changeTypeChangeTag(e){navigator.onLine&&this._initData.offlineSync&&this._dataSyncer.syncTypeChangeTag(e),this._configuratorUiCallbacks.onChangeTypeChangeTag(e)}removeTypeChangeTag(e){this._configuratorUiCallbacks.onRemoveTypeChangeTag(e)}showGUI(){this._sceneManager.showGUI()}showStats(){this._sceneManager.showStats()}showDimensions(){this._sceneManager.showDimensions()}hideDimensions(){this._sceneManager.hideDimensions()}syncCatalog(e){return this._dataSyncer.syncCatalog(e)}syncFloorTag(e){return this._dataSyncer.syncFloorTag(e)}syncTypeChangeTag(e){return this._dataSyncer.syncTypeChangeTag(e)}loadDynamicLightSetting(e){return this._sceneManager.loadDynamicLightSetting(e)}setBackgroundColor(e){this._sceneManager.setBackgroundColor(e)}setBackgroundImage(e){this._sceneManager.setBackgroundImage(e)}loadSceneSetting(e){return this._sceneManager.loadSceneSettings(e)}enableMeshSelection(e){this._initData.meshSelection=e}updateSize(){this._sceneManager.updateCamera()}setCameraOffset(e){this._sceneManager.setCameraOffset(e)}getCameraOffset(){return this._sceneManager.getCameraOffset()}getMain(){}cleanup(e={}){this._configuratorContext.selectedRuntimeComponentIds=[],this._plannerKernelAccess.cleanUpCallbacks(),this._sceneManager.sceneCleared(!!e.resetMeshCache),e.resetCoreCache&&this._plannerKernelAccess.kernelInstance.clearAll(),e.resetApiCache&&this._rapiAccess.cleanUp()}resumeTest(e){e&&this._domHelper.setDomElement(e),this._lifeCycleManager.resume()}pauseTest(){this._lifeCycleManager.pause()}zoomIn(e){this._sceneManager.zoomIn(e)}zoomOut(e){this._sceneManager.zoomOut(e)}get callbacks(){return this._configuratorUiCallbacks}get globalCallbacks(){return this._globalCallback}getRuntimeComponentIdOfRootComponent(){const e=this._configuratorContext.planObjectId;return e?this._plannerKernelAccess.getRuntimeComponentIdOfRootComponent(e):(console.warn("planObjectId not set"),0)}getCurrentConfigurationHash(){return this._plannerKernelAccess.getConfigurationHash(this._configuratorContext)}getCurrentSelection(){let e=this._configuratorContext.selectedRuntimeComponentIds;return e&&e.length||(e=[this._configuratorContext.rootComponentId]),e.map(e=>this._plannerKernelAccess.getRuntimeComponentId(e))}isReady(){const e=c.getMeasure("kernel_is_ready");if(Array.isArray(e)&&1===e.length){const t=e[0],n=c.getMeta("kernel_is_ready");this._configuratorUiCallbacks.onTrackTiming("Timing","KernelIsReady",Math.round(t.duration),Object.assign(n,{startTime:t.startTime}))}this._isKernelReady=!0,this._checkInitDone(),"function"==typeof this._configuratorUiCallbacks.onKernelIsReady&&this._configuratorUiCallbacks.onKernelIsReady()}async updatePossibleChildren(e,t,n){const i=await this._addAdditionalInfoToPossibleChildren(e,t,n);if(i){const{tags:e,defaultChild:t}=i;this._shouldBroadcastToUi(n)&&this._configuratorUiCallbacks.onUpdatePossibleChildren(e,t)}}updateParameters(e,t,n,i){this._setParameterTooltip(e,n),this._addGroupsToParameters(n,e,t,i),this._plannerKernelAccess.updateAnimationParameters(n,e),this._shouldBroadcastToUi(i)&&this._configuratorUiCallbacks.onUpdateParameters(e)}loadError(e){this._isLoadError=!0,this._rejectOnLoadError&&this._rejectOnLoadError(e)}resumeKernelCallbacks(){this._plannerKernelAccess.muteKernelCallbacks=!1,this._plannerKernelAccess.resume()}pauseKernelCallbacks(){this._plannerKernelAccess.muteKernelCallbacks=!0,this._plannerKernelAccess.pause()}setActiveGroupInView(e){this._plannerKernelAccess.setActiveGroupInView(e)}setActiveGroupInViewForPlanObject(e,t){this._plannerKernelAccess.setActiveGroupInViewForPlanObject(e,t)}getParameterGroups(){return this._plannerKernelAccess.getParameterGroups()}async getConfiguratorSettings(){return this._rapiAccess.getConfiguratorSettings()}async moveCamera(e){return this._sceneManager.moveCamera(e)}selectComponent(e){return this._configuratorContext.selectedRuntimeComponentId===e?Promise.resolve():Promise.resolve(this._sceneManager.selectComponent(e))}setComponentParameter(e,t,n){const{key:i,type:o}=t;return new Promise((t,s)=>this._plannerKernelAccess.changeComponentParameter(e,i,o,n,t,s))}highlightParts(e){this._sceneManager.highlightParts(e)}undo(){return new Promise((e,t)=>{const n=this._configuratorHistory.undo();n&&(this._callOnPartListUpdate().then(e,t),this._plannerKernelAccess.loadConfiguration(n))})}redo(){return new Promise((e,t)=>{const n=this._configuratorHistory.redo();n&&(this._callOnPartListUpdate().then(e,t),this._plannerKernelAccess.loadConfiguration(n))})}clearHistory(){this._configuratorHistory.clearHistory()}getHashOfSerializedConfiguration(e){return this._plannerKernelAccess.kernelInstance.getHashOfSerializedConfiguration(e)}getParametersOfComponent(e){const t=this._plannerKernelAccess.getComponentParameters(e),n=this.getParameterGroups();return this._mapComponentTooltipsToParamKeys(t,e),this._addGroupsToParameters(e,t,n,1,!0)}_mapComponentTooltipsToParamKeys(e,t){const n=this._plannerKernelAccess.kernelInstance.getComponentId(t),i=this._rapiAccess.peekComponent(n);if(i&&i.additionalInfos)for(const t of e){const e=i.additionalInfos.find(e=>e.key.toLocaleLowerCase()===t.key.toLocaleLowerCase()&&"parameter"===e.type);e&&(t.tooltip=e.tooltip,t.additionalInfos=i.additionalInfos)}}_setParameterTooltip(e,t){Array.isArray(t)?t.forEach(t=>this._mapComponentTooltipsToParamKeys(e,t)):this._mapComponentTooltipsToParamKeys(e,t)}_addGroupsToParameters(e,t,n,i,o=!1){n||(n=[],console.warn("Kernel returned no parameter groups! Check why!"));const s={};return n.forEach(e=>{s[e.key]=e}),t.sort(Z),t.forEach(t=>{t.group?t.grouping=s[t.group]:t.grouping=null,this._unitFormatter.formatParameter(t),J(t)&&Object.defineProperty(t,"groups",{get:()=>new Promise((n,s)=>{this._getMaterialGroups(t).then(t=>{this._isCorrectResponse(i,e)&&this._shouldBroadcastToUi(i)||o?n(t):s("Response does not match to ids")},s)})})}),t}async _getChildrenOf(e,t,n,i){const o=i(e,t,n);return await this._addAdditionalInfoToPossibleChildren(e,o,2,!1,!0)}async getChildrenOfPlanComponent(e,t=!1,n=!1){const i=this._plannerKernelAccess.kernelInstance.getChildrenOfPlanComponent.bind(this._plannerKernelAccess.kernelInstance);return this._getChildrenOf(e,t,n,i)}async getChildrenOfPlanObject(e=!1,t=!1){const{planObjectId:n}=this._configuratorContext,i=this._plannerKernelAccess.kernelInstance.getChildrenOfPlanObject.bind(this._plannerKernelAccess.kernelInstance);return this._getChildrenOf(n,e,t,i)}async _addAdditionalInfoToPossibleChildren(e,t,n,i=!0,o=!1){const{possibleChildren:s,defaultChild:r}=await this._getPossibleChildrenForKernelPossibleChildren(t,o),a=[],l=new Map,c=[];if(s.forEach(e=>{const t=e.tags;if(e.tags&&Array.isArray(e.tags)&&e.tags.length)for(let n=0,i=e.tags.length;n<i;n++){const i=t[n];-1===a.indexOf(i)&&a.push(i);let o=l.get(i);if(!o){const e=[];l.set(i,e),o=l.get(i)}o.push(e)}else c.push(e)}),this._isCorrectResponse(n,e)||!i){let e=[];try{e=(await this._rapiAccess.getTags(a)).map(e=>({...e,possibleChildren:l.get(e.id)}))}catch(t){console.error("Couldnt load tags of possible children"),console.error(t),e=[]}return e.sort(Z),c.length&&e.unshift({id:"",externalIdentifier:"",global:!1,created:(new Date).toISOString(),updated:(new Date).toISOString(),language:this._globalInitData.locale,catalog:null,tags:[],parents:[],materials:[],items:[],possibleChildren:c}),{tags:e,defaultChild:r}}return null}async _getPossibleChildrenForKernelPossibleChildren(e,t=!1){const n=[],i=[];let o;const s=new Map,r=new Map;e.forEach(e=>{if(!e.possible&&!t)return;let a=e.itemId;e.itemId?(i.push(e.itemId),r.has(e.itemId)?r.get(e.itemId).push(e):r.set(e.itemId,[e])):(n.push(e.componentId),s.has(e.componentId)?s.get(e.componentId).push(e):s.set(e.componentId,[e]),a=e.componentId),e.isDefault&&!o&&(o=a)});const a=await Promise.all([this._rapiAccess.getComponents(n),this._rapiAccess.getItems(i)]),l=a[0],c=a[1],h=[];let d=null;return l.forEach(e=>{var t;e.isItem=!1,e.isComponent=!0;for(const n of null!==(t=s.get(e.id))&&void 0!==t?t:[]){const t=JSON.parse(JSON.stringify(e));t.group=n.group,t.possible=n.possible,t.id===o&&(t.isDefault=!0,d=t),h.push(t)}}),c.forEach(e=>{var t;e.isItem=!0,e.isComponent=!1;for(const n of null!==(t=r.get(e.id))&&void 0!==t?t:[]){const t=JSON.parse(JSON.stringify(e));t.group=n.group,t.possible=n.possible,t.id===o&&(t.isDefault=!0,d=t),h.push(t)}}),h.sort(Z),{possibleChildren:h,defaultChild:d}}getUnitFormatter(){return this._unitFormatter}getStorage(){return this._idbManager}getConfiguratorContext(){return this._configuratorContext}getComponent(e){return this._sceneManager.getComponent(e)}async getTools(){const e=o.lookup("roomle-tools-core",this._creator_);return await e.init(),e}exportImageFromCamera(e="image",t=!1){return this._sceneManager.exportImageFromCamera(e,t)}calcPartsPriceSum(e){return this._plannerKernelAccess.calcPartsPriceSum(e)}async generateProductionServiceExport(e=""){return this.generateExport(0,e)}async generateTCExport(e=""){return this.generateExport(0,e)}async generateIMOSiXExport(e=""){return this.generateExport(1,e)}async generateExport(e,t=""){const n=this._configuratorContext.planObjectId;try{return this._plannerKernelAccess.configurationExporter.setDefaultExportDataDefinition(t),Promise.resolve(JSON.parse(this._plannerKernelAccess.configurationExporter.generateExport(e,n,this._plannerKernelAccess.kernelInstance)))}catch(t){return console.error(t),Promise.reject("Could not create export JSON "+e)}}setEnvironmentMap(e){const{url:t,intensity:n,rotation:i,maxLightSources:o}=e;this._sceneManager.setEnvironmentMap(t,n,i,o)}enableEvents(){this._sceneManager.enableEvents()}disableEvents(){this._sceneManager.disableEvents()}enableDebugging(){const e={debugValueMapChange:e=>{this.callbacks.onValueMapChanged(e)}};this._plannerKernelAccess.addDebugClient(e)}}e("R",Ge),n([i],Ge.prototype,"_rapiAccess",void 0),n([i],Ge.prototype,"_dataSyncer",void 0),n([i],Ge.prototype,"_errorHandler",void 0),n([i],Ge.prototype,"_unitFormatter",void 0),n([i],Ge.prototype,"_idbManager",void 0),n([i],Ge.prototype,"_domHelper",void 0),n([i],Ge.prototype,"_configuratorUiCallbacks",void 0),n([i],Ge.prototype,"_configuratorKernelAccessCallback",void 0),n([i],Ge.prototype,"_lifeCycleManager",void 0),n([i],Ge.prototype,"_plannerKernelAccess",void 0),n([i],Ge.prototype,"_scriptLoader",void 0),n([i],Ge.prototype,"_configuratorContext",void 0),n([i],Ge.prototype,"_initData",void 0),n([i],Ge.prototype,"_globalInitData",void 0),n([i],Ge.prototype,"_globalCallback",void 0),n([i],Ge.prototype,"_kernelIo",void 0),n([i],Ge.prototype,"_configuratorHistory",void 0)}}}));
|
|
2
|
-
//# sourceMappingURL=roomle-configurator-d5ea14c2.legacy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"roomle-configurator-d5ea14c2.legacy.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|