@roomle/web-sdk 4.2.0-alpha.1 → 4.2.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/ConfiguratorKernel.wasm +0 -0
  2. package/lib/RoomleCore.wasm +0 -0
  3. package/lib/RoomleToolsCore.wasm +0 -0
  4. package/lib/{api-DsFkkVBx.mjs → api-BcdMPjhw.mjs} +2 -2
  5. package/lib/{api-DsFkkVBx.mjs.map → api-BcdMPjhw.mjs.map} +1 -1
  6. package/lib/asset-loader.worker-eqHzNAwa.mjs.map +1 -1
  7. package/lib/budgeteer.sw-BUMElkO1.mjs.map +1 -1
  8. package/lib/configurator-B5JKyAVr.mjs +2 -0
  9. package/lib/{configurator-Df0i3C3T.mjs → configurator-CqUyAvhd.mjs} +3 -3
  10. package/lib/{configurator-Df0i3C3T.mjs.map → configurator-CqUyAvhd.mjs.map} +1 -1
  11. package/lib/{glb-viewer-CMfGHsTk.mjs → glb-viewer-C6XU_HMw.mjs} +4 -4
  12. package/lib/glb-viewer-C6XU_HMw.mjs.map +1 -0
  13. package/lib/glb-viewer-dwZ7AQ5k.mjs +2 -0
  14. package/lib/{homag-intelligence-CaCDZrp5.mjs → homag-intelligence-Cmhold3S.mjs} +3 -3
  15. package/lib/{homag-intelligence-CaCDZrp5.mjs.map → homag-intelligence-Cmhold3S.mjs.map} +1 -1
  16. package/lib/{material-viewer-DCr4Cj2J.mjs → material-viewer-3laQuEgj.mjs} +4 -4
  17. package/lib/material-viewer-3laQuEgj.mjs.map +1 -0
  18. package/lib/{packages-CywjYzrw.mjs → packages-BRoZjsxP.mjs} +5 -5
  19. package/lib/{packages-CywjYzrw.mjs.map → packages-BRoZjsxP.mjs.map} +1 -1
  20. package/lib/{planner-d2O03UND.mjs → planner-2ZsNeXnj.mjs} +3 -3
  21. package/lib/{planner-d2O03UND.mjs.map → planner-2ZsNeXnj.mjs.map} +1 -1
  22. package/lib/planner-CU5ZaWGK.mjs +2 -0
  23. package/lib/roomle-headless.d.ts +41 -9
  24. package/lib/roomle-headless.js +14 -16
  25. package/lib/roomle-headless.js.map +1 -1
  26. package/lib/roomle-renderer-FUqNfNIf.mjs.map +1 -1
  27. package/lib/{roomle-sdk-C_KgeRRI.mjs → roomle-sdk-CwG0lo8o.mjs} +1496 -1306
  28. package/lib/roomle-sdk-CwG0lo8o.mjs.map +1 -0
  29. package/lib/roomle-sdk.d.ts +40 -9
  30. package/lib/roomle-sdk.js +6 -6
  31. package/lib/{roomle-webgpu-renderer-RLBME9mQ.mjs → roomle-webgpu-renderer-CNZiK43x.mjs} +8 -8
  32. package/lib/{roomle-webgpu-renderer-RLBME9mQ.mjs.map → roomle-webgpu-renderer-CNZiK43x.mjs.map} +1 -1
  33. package/lib/{script-loader-CdhwtgMh.mjs → script-loader-CsWF2xfV.mjs} +2 -2
  34. package/lib/{script-loader-CdhwtgMh.mjs.map → script-loader-CsWF2xfV.mjs.map} +1 -1
  35. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
  36. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
  37. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  38. package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
  39. package/lib/{tools-core-DW05Ccko.mjs → tools-core-CghU3HxF.mjs} +3 -3
  40. package/lib/{tools-core-DW05Ccko.mjs.map → tools-core-CghU3HxF.mjs.map} +1 -1
  41. package/package.json +2 -2
  42. package/lib/configurator-7Gud3pOb.mjs +0 -2
  43. package/lib/glb-viewer-BSoSqgNt.mjs +0 -2
  44. package/lib/glb-viewer-CMfGHsTk.mjs.map +0 -1
  45. package/lib/material-viewer-DCr4Cj2J.mjs.map +0 -1
  46. package/lib/planner-Bi0azu0C.mjs +0 -2
  47. package/lib/roomle-sdk-C_KgeRRI.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-viewer-3laQuEgj.mjs","names":[],"sources":["../../packages/common-core/src/cameracontrol/material-viewer-camera-behaviour.ts","../../packages/material-viewer/src/webgl/material-viewer-scene-manager.ts","../../packages/material-viewer/src/roomle-material-viewer.ts","../../packages/material-viewer/src/roomle-material-viewer-ui-callback.ts","../../packages/material-viewer/src/utils/injectables.ts","../../packages/material-viewer/src/material-viewer.ts"],"sourcesContent":["import CameraBehaviour from './camera-behaviour';\nimport type AdjustableCameraControl3D from '../../../glb-viewer-core/src/camera-control/adjustable-camera-control-3d';\n\nexport default class MaterialViewerCameraBehaviour extends CameraBehaviour {\n public get cameraControl(): AdjustableCameraControl3D {\n return this._cameraControl as AdjustableCameraControl3D;\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type { GenericGUIParamFolder } from '../../../common-core/src/webgl/gui-types';\nimport type { RoomleWebGPURenderer } from '../../../common-core/src/webgpu/roomle-webgpu-renderer';\nimport type { CanvasOffset } from '../../../common-core/src/common-interfaces';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../../typings/rapi-types';\nimport { RAPI_TEXTURE_TYPE } from '../../../typings/rapi-types';\nimport {\n addExistingTexture,\n addTexture,\n getWebGLGUI,\n getMaterialShading,\n setMaterial,\n getMaxTextures,\n} from '../../../common-core/src/utils/threejs-utils';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport type ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport type RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\nimport BackgroundEnvironment from '../../../common-core/src/environment/background-environment';\nimport FloorEnvironment from '../../../configurator-core/src/webgl/environment/floor-environment';\nimport { type RapiAccess } from '../../../common-core/src/rapi-access';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '#/common/src/utils/types';\nimport type { MeshPhysicalMaterial } from 'three';\nimport {\n Box3,\n BoxGeometry,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n PlaneGeometry,\n SphereGeometry,\n Texture,\n} from 'three';\nimport MaterialCreator from '../../../common-core/src/utils/material-creator';\nimport MaterialViewerCameraBehaviour from '../../../common-core/src/cameracontrol/material-viewer-camera-behaviour';\n\nexport const enum GEOMETRY {\n CUBE = 'cube',\n SPHERE = 'sphere',\n PLANE_VERTICAL = 'plane_vertical',\n PLANE_HORIZONTAL = 'plane_horizontal',\n}\n\nconst SIZE = { x: 1, y: 1, z: 1 };\nexport default class MaterialViewerSceneManager extends SceneManager {\n @inject\n private _inputManager: InputManager;\n\n @inject\n private _configuratorMeshGenerator: ConfiguratorMeshGenerator;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _gui: GenericGUIParamFolder | null;\n private _guiGeometryFolder: GenericGUIParamFolder | undefined;\n private _guiMaterialFolder: GenericGUIParamFolder | undefined;\n private _mesh: Mesh;\n private _material: MeshPhysicalMaterial;\n private _sceneParams = {\n type: GEOMETRY.CUBE,\n };\n private _materialParams = {\n color: '#ffffff',\n metallic: 0.5,\n alpha: 0,\n alphaCutoff: 0,\n doubleSided: false,\n };\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.RMV, CAMERA_TYPE.CAMERA_3D);\n\n // Use lazy initialization for renderer-dependent settings\n this._initializeRendererSettings();\n\n this._initScene();\n }\n\n // If renderer is not ready yet, will retry on next tick.\n // This is necessary for dynamic WebGPU renderer imports.\n private _initializeRendererSettings(): void {\n if (!this._renderer) {\n // Retry on next tick if renderer not ready\n setTimeout(() => this._initializeRendererSettings(), 0);\n return;\n }\n\n const maxTextures = getMaxTextures(this._renderer);\n if (maxTextures > 8) {\n const lightSource =\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA,\n );\n if (lightSource) {\n this.loadDynamicLightSetting(lightSource);\n }\n }\n }\n\n private _initScene() {\n const geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n const meshPhysicalMaterial = MaterialCreator.createMeshPhysicalMaterial({\n color: this._initData.colors.PRIMARY,\n });\n this._setMaterial(meshPhysicalMaterial);\n this._mesh = new Mesh(geometry, this._material);\n this._mesh.castShadow = true;\n this._mesh.position.setY(SIZE.y / 2);\n this._scene.add(this._mesh);\n\n const { initialFloorMaterial } = this._initData;\n\n if (initialFloorMaterial) {\n this.changeFloorMaterialById(initialFloorMaterial);\n } else {\n this._environment = new BackgroundEnvironment(\n this._scene,\n undefined,\n new Color(0xffffff),\n );\n }\n\n if (this.cameraBehaviour.cameraControl instanceof CameraControl3D) {\n const boundingBox = new Box3();\n boundingBox.setFromObject(this._mesh);\n console.trace('reset camera');\n this.cameraBehaviour.cameraControl.updateAndReset(boundingBox);\n }\n\n void this.showGUI();\n }\n\n public loadMaterialId(materialId: RapiId): Promise<void> {\n return new Promise<void>((resolve) => {\n this._configuratorMeshGenerator\n .loadMaterial(materialId, SIZE.x * 1000, SIZE.y * 1000)\n .then((material) => {\n this._setMaterial(material as MeshPhysicalMaterial);\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n });\n }\n\n public loadMaterial(material: RapiMaterial): Promise<void> {\n return new Promise<void>((resolve) => {\n // eslint-disable-next-line\n if (!material.__rapi_path__) {\n // eslint-disable-next-line\n material.__rapi_path__ = 'materials';\n }\n this._mesh.material = this._material;\n this._configuratorMeshGenerator\n .loadTextures(material, this._material, SIZE.x * 100, SIZE.y * 100)\n .then(() => {\n this._updateGUI();\n this._requestRender();\n });\n resolve();\n });\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return new Promise<void>((resolve) => {\n let material = { shading: materialShading };\n this._setMaterial(setMaterial(this._material, material as RapiMaterial));\n this._mesh.material = this._material;\n this._updateGUI();\n this._requestRender();\n resolve();\n });\n }\n\n private _setMaterial(material: MeshPhysicalMaterial) {\n this._material = material;\n this._materialParams.alpha = material.opacity;\n this._materialParams.alphaCutoff = material.alphaTest;\n this._materialParams.color = '#' + material.color.getHexString();\n this._materialParams.doubleSided = material.side === DoubleSide;\n this._materialParams.metallic =\n material.metalness === 1 ? 1 : material.reflectivity;\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return getMaterialShading(this._material, version);\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset,\n ) {\n this._changeCameraBehaviour(\n new MaterialViewerCameraBehaviour(\n new CameraControl3D(this._creator_, this._getInputManager(), undefined),\n this._cameraBehaviourState,\n ),\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._inputManager;\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n public getBounds(): Box3 | null {\n if (!this._mesh) {\n return null;\n }\n return new Box3().setFromObject(this._mesh);\n }\n\n getGeometryBounds(): Box3 | null {\n return null;\n }\n\n protected initializeWebGLGUI() {\n this._gui = getWebGLGUI();\n this._updateGUI();\n }\n\n protected override initializeWebGPUGUI(\n roomleWebGPURenderer: RoomleWebGPURenderer,\n ): void {\n super.initializeWebGPUGUI(roomleWebGPURenderer);\n this._gui =\n roomleWebGPURenderer.getOrCreateGUIParameters('Material Viewer');\n this._updateGUI();\n }\n\n private _updateGUI() {\n const gui = this._gui;\n if (!gui) {\n return;\n }\n if (!this._guiGeometryFolder) {\n this._guiGeometryFolder = gui.addFolder('Geometry');\n this._guiGeometryFolder\n .add(this._sceneParams, 'type', {\n Cube: GEOMETRY.CUBE,\n Sphere: GEOMETRY.SPHERE,\n PlaneVertical: GEOMETRY.PLANE_VERTICAL,\n PlaneHorizontal: GEOMETRY.PLANE_HORIZONTAL,\n })\n .onChange((type: number) => {\n console.log(type);\n this._setGeometry();\n });\n }\n if (this._material) {\n if (!this._guiMaterialFolder) {\n this._guiMaterialFolder = gui.addFolder('Material');\n this._guiMaterialFolder\n .addColor(this._materialParams, 'color')\n .onChange((color: string) => {\n this._material.color = new Color(color);\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'metallic', 0, 1, 0.01)\n .onChange((metallic: number) => {\n this._material.metalness = metallic === 1 ? 1 : 0.5;\n this._material.reflectivity = metallic || 0.5;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'roughness', 0, 1, 0.01)\n .onChange((_roughness: number) => {\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._material, 'transmission', 0, 1, 0.01)\n .onChange((transmission: number) => {\n this._material.transmission = transmission;\n if (transmission > 0) {\n this._material.opacity = 1;\n this._material.alphaTest = 0.5;\n this._material.depthWrite = true;\n this._material.metalness = 0;\n }\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alpha', 0, 1, 0.01)\n .onChange((alpha: number) => {\n this._material.transparent = alpha < 1;\n this._material.opacity = alpha;\n this._material.depthWrite = alpha >= 1;\n this._mesh.castShadow = !this._material.transparent;\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'alphaCutoff', 0, 1, 0.01)\n .onChange((alphaCutoff: number) => {\n if (alphaCutoff) {\n this._material.alphaTest = alphaCutoff;\n } else {\n this._material.alphaTest = 0;\n }\n this._shadingChanged();\n });\n this._guiMaterialFolder\n .add(this._materialParams, 'doubleSided')\n .onChange((doubleSided: boolean) => {\n if (doubleSided) {\n this._material.side = DoubleSide;\n } else {\n this._material.side = FrontSide;\n }\n this._shadingChanged();\n });\n }\n }\n }\n\n private _shadingChanged() {\n this._roomleMaterialViewerUiCallback.onMaterialShadingChanged(\n getMaterialShading(this._material),\n );\n this._requestRender();\n }\n\n public setGeometry(type: GEOMETRY) {\n this._sceneParams.type = type;\n this._setGeometry();\n }\n\n private _setGeometry() {\n let geometry;\n if (this._sceneParams.type === GEOMETRY.CUBE) {\n geometry = new BoxGeometry(SIZE.x, SIZE.y, SIZE.z, 100, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.SPHERE) {\n geometry = new SphereGeometry(0.5, 100, 100);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_HORIZONTAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n geometry.rotateX(-Math.PI / 2);\n } else if (this._sceneParams.type === GEOMETRY.PLANE_VERTICAL) {\n geometry = new PlaneGeometry(SIZE.x, SIZE.z);\n } else {\n console.error(\n `MaterialViewerSceneManager: unexpected geometry type \"${this._sceneParams.type}\"`,\n );\n return;\n }\n this._mesh.geometry = geometry;\n this._renderEverything();\n }\n\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n const material = await this._rapiAccess.getMaterial(materialId);\n if (\n !this._environment ||\n !(this._environment instanceof FloorEnvironment)\n ) {\n this._environment = new FloorEnvironment(\n this._scene,\n this._environment,\n !this._initData.webGpu,\n );\n }\n return new Promise((resolve, reject) => {\n (this._environment as FloorEnvironment)\n .changeFloorMaterial(material, this._maxAnisotropy)\n .then(() => {\n this._requestRender();\n resolve();\n }, reject);\n });\n }\n\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n const width = SIZE.x * 100;\n const height = SIZE.y * 100;\n const repeatWidth =\n width / (rapiTexture.mmWidth === 0 ? 1 : rapiTexture.mmWidth);\n const repeatHeight =\n height / (rapiTexture.mmHeight === 0 ? 1 : rapiTexture.mmHeight);\n const maxTextures = getMaxTextures(this._renderer);\n if (base64Image) {\n const image = new Image();\n image.src = base64Image;\n const texture = new Texture();\n texture.image = image;\n image.onload = function () {\n texture.needsUpdate = true;\n };\n addExistingTexture(\n texture,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n } else {\n await addTexture(\n rapiTexture.image,\n rapiTexture,\n this._material,\n this._maxAnisotropy,\n repeatWidth,\n repeatHeight,\n maxTextures,\n );\n }\n this._requestRender();\n }\n\n public removeTexture(rapiTexture: RapiTexture) {\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.ORM) {\n this._material.aoMap = null;\n this._material.roughnessMap = null;\n this._material.metalnessMap = null;\n }\n if (\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGB ||\n rapiTexture.mapping === RAPI_TEXTURE_TYPE.RGBA\n ) {\n this._material.map = null;\n }\n if (rapiTexture.mapping === RAPI_TEXTURE_TYPE.XYZ) {\n this._material.normalMap = null;\n }\n this._material.needsUpdate = true;\n this._requestRender();\n }\n\n public clearCache() {\n this._configuratorMeshGenerator.clear();\n }\n}\n","import type ScriptLoader from '../../common-core/src/script-loader';\nimport type DomHelper from '../../common-core/src/utils/dom-helper';\nimport inject from '../../common-core/src/di/inject';\nimport type { ExternalEmbeddable, GlobalAPI } from '../../common-core/src/main';\nimport type { Main } from '../../common-core/src/main';\nimport type { Context } from '../../common-core/src/di/context';\nimport type { LifeCycleManager } from '../../common-core/src/life-cycle-manager';\nimport type { SceneSettings } from '../../common-core/src/scene-settings-loader';\nimport type { GEOMETRY } from './webgl/material-viewer-scene-manager';\nimport MaterialViewerSceneManager from './webgl/material-viewer-scene-manager';\nimport type {\n RapiId,\n RapiMaterial,\n RapiMaterialShading,\n RapiTexture,\n} from '../../typings/rapi-types';\nimport type RoomleMaterialViewerUiCallback from './roomle-material-viewer-ui-callback';\nimport type { InitDataDefinition } from '../../common-core/src/utils/shims';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { type RapiAccess } from '../../common-core/src/rapi-access';\nimport type { CanvasOffset } from '../../common-core/src/common-interfaces';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport type { Scene } from 'three';\nimport { type IdbManager } from '../../common-core/src/services/idb-manager';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\nexport default class RoomleMaterialViewer\n implements\n GlobalAPI,\n Context,\n ExternalEmbeddable<RoomleMaterialViewerUiCallback>\n{\n public _creator_: string;\n\n @inject\n private _domHelper: DomHelper;\n\n @inject\n private _scriptLoader: ScriptLoader;\n\n @inject\n private _lifeCycleManager: LifeCycleManager;\n\n @inject\n private _roomleMaterialViewerUiCallback: RoomleMaterialViewerUiCallback;\n\n @inject\n private _initData: InitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: MaterialViewerSceneManager;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public setCameraOffset(offset: CanvasOffset): void {\n this._sceneManager.setCameraOffset(offset);\n }\n\n public getCameraOffset(): CanvasOffset {\n return this._sceneManager.getCameraOffset();\n }\n\n public init(element: HTMLElement): Promise<void> {\n this._domHelper.setDomElement(element);\n\n if (this._sceneManager) {\n this._lifeCycleManager.resume();\n return Promise.resolve();\n }\n\n return new Promise<void>(this._initPromiseCallback.bind(this));\n }\n\n private _initPromiseCallback(resolve: () => void, _reject: () => void) {\n this._sceneManager = new MaterialViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n this._sceneManager.enableHD();\n resolve();\n }\n\n get callbacks(): RoomleMaterialViewerUiCallback {\n return this._roomleMaterialViewerUiCallback;\n }\n\n set callbacks(callback: RoomleMaterialViewerUiCallback) {\n this._roomleMaterialViewerUiCallback = callback;\n }\n\n public loadMaterialShading(\n materialShading: RapiMaterialShading,\n ): Promise<void> {\n return this._sceneManager.loadMaterialShading(materialShading);\n }\n\n public loadMaterial(\n material: RapiMaterial,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterial(material);\n }\n\n public loadMaterialId(\n materialId: RapiId,\n options: { flushCache?: boolean } = {},\n ): Promise<void> {\n if (options.flushCache) {\n this._clearCaches();\n }\n return this._sceneManager.loadMaterialId(materialId);\n }\n\n public getMaterialShading(version: number = 1): RapiMaterialShading {\n return this._sceneManager.getMaterialShading(version);\n }\n\n /**\n * Loads a SceneSettings object, currently it can can contain a light setting definition\n * (see {@link @roomle/web-sdk/configurator-core/src/roomle-configurator#RoomleConfigurator.loadDynamicLightSetting}) and an environment definition (see {@link @roomle/web-sdk/configurator-core/src/environment/dynamic-environment-setting-loader#EnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public setOverrides(initData: InitDataDefinition): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n }\n\n public updateSize(): void {\n this._sceneManager.updateCamera();\n }\n\n /**\n * Return the main class which has access to lifecycle events and RapiAccess.\n * Hidden because it's only useful for embedding API.\n * Has to be overridden by main class.\n * @hidden\n */\n public getMain(): Main | undefined {\n return undefined;\n }\n\n public resumeTest(element: HTMLElement) {\n this._domHelper.setDomElement(element);\n this._lifeCycleManager.resume();\n }\n\n public pauseTest() {\n this._lifeCycleManager.pause();\n }\n\n public showGUI() {\n this._sceneManager.showGUI();\n }\n\n /**\n * Sets the material of the floor to the given material id.\n * If the current environment is not floor environment it will be changed\n *\n * Example material ids are:\n * roomle_floor:DresdenEiche\n * roomle_floor:Ibiza\n * roomle_floor:Palma\n * roomle_floor:Elba\n * roomle_floor:Manacor\n * roomle_floor:KernEiche\n * roomle_floor:KieferScandic\n * roomle_floor:EicheHabsburg\n * roomle_floor:FuldaKiefer\n * roomle_floor:Ashton\n * roomle_floor:EicheLondon\n *\n * @param materialId\n * @returns promise that resolves when material has been changed\n */\n public async changeFloorMaterialById(materialId: string): Promise<void> {\n return this._sceneManager.changeFloorMaterialById(materialId);\n }\n\n /**\n * Set the geometry of the demo material mesh\n *\n * Possible parameter:\n * 'cube',\n * 'sphere',\n * 'plane_vertical',\n * 'plane_horizontal'\n *\n * @param type\n */\n public setGeometry(type: GEOMETRY) {\n this._sceneManager.setGeometry(type);\n }\n\n /**\n * Set a texture on the demo material, if no base64Image is set, the image field of rapiTexture is used\n * @param rapiTexture\n * @param base64Image for example \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg==\"\n */\n public async addTexture(rapiTexture: RapiTexture, base64Image?: string) {\n return this._sceneManager.addTexture(rapiTexture, base64Image);\n }\n\n /**\n * Remove texture from the demo material\n * @param rapiTexture\n */\n public removeTexture(rapiTexture: RapiTexture) {\n return this._sceneManager.removeTexture(rapiTexture);\n }\n\n private _clearCaches() {\n this._rapiAccess.cleanUp();\n this._sceneManager.clearCache();\n }\n\n public getScene(): Scene {\n return this._sceneManager.getScene();\n }\n\n public updateScene(): void {\n this._sceneManager.updateScene();\n }\n\n /**\n * returns unit formatter for formatting input und output values in scene\n */\n public getUnitFormatter(): UnitFormatter {\n return this._unitFormatter;\n }\n\n /**\n * returns manager class to interface with indexedDB storage\n */\n public getStorage(): IdbManager {\n return this._idbManager;\n }\n\n public setEnvironmentMap(params: {\n url?: string;\n intensity?: number;\n rotation?: number;\n maxLightSources?: number;\n }): void {\n const { url, intensity, rotation, maxLightSources } = params;\n this._sceneManager.setEnvironmentMap(\n url,\n intensity,\n rotation,\n maxLightSources,\n );\n }\n\n /**\n * @internal\n * Use this callbacks to hook in your functionality\n */\n public get globalCallbacks(): GlobalCallback {\n return this._globalCallback;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { UiCallback } from '../../common-core/src/utils/ui-callback';\nimport type { RapiMaterialShading } from '../../typings/rapi-types';\n\nexport default class RoomleMaterialViewerUiCallback extends UiCallback {\n constructor(creator: string) {\n super(creator);\n }\n\n /**\n * Gets called when a material parameter has been changed using the graphical user interface\n * @param materialShading\n */\n public onMaterialShadingChanged = (\n materialShading: RapiMaterialShading,\n ): void => undefined;\n}\n","import Logger from '../../../common-core/src/logger';\nimport ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport InputManager from '../../../common-core/src/input/input-manager';\nimport ConfiguratorMeshGenerator from '../../../configurator-core/src/webgl/configurator-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport RoomleMaterialViewerUiCallback from '../roomle-material-viewer-ui-callback';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'input-manager',\n InputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment(\n 'configurator-mesh-generator',\n ConfiguratorMeshGenerator,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment(\n 'roomle-material-viewer-ui-callback',\n RoomleMaterialViewerUiCallback,\n DI_TYPE.CONTEXT,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleMaterialViewer from './roomle-material-viewer';\nimport { INJECTABLES } from './utils/injectables';\n\nexport class MaterialViewer extends Main {\n private _viewer: RoomleMaterialViewer;\n\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._viewer = new RoomleMaterialViewer(this._context);\n\n if (!window.RoomleMaterialViewer) {\n window.RoomleMaterialViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleMaterialViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.MATERIAL_VIEWER;\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import "./roomle-sdk-C_KgeRRI.mjs";
2
- import "./configurator-Df0i3C3T.mjs";
3
- import "./planner-d2O03UND.mjs";
4
- import "./glb-viewer-CMfGHsTk.mjs";
1
+ import "./roomle-sdk-CwG0lo8o.mjs";
2
+ import "./configurator-CqUyAvhd.mjs";
3
+ import "./planner-2ZsNeXnj.mjs";
4
+ import "./glb-viewer-C6XU_HMw.mjs";
5
5
  //#region ../common/src/utils/id-inferrer.ts
6
6
  var e = (e) => e.split(":").length - 1 == 1, t = (e) => e.split(":").length - 1 <= 0, n = (e) => e ? e.startsWith("component@") : !1, r = (e) => e.startsWith("{") && e.endsWith("}"), i = (e) => e.startsWith("ps_");
7
7
  //#endregion
8
8
  export { i as a, e as i, r as n, t as r, n as t };
9
9
 
10
- //# sourceMappingURL=packages-CywjYzrw.mjs.map
10
+ //# sourceMappingURL=packages-BRoZjsxP.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"packages-CywjYzrw.mjs","names":[],"sources":["../../../common/src/utils/id-inferrer.ts"],"sourcesContent":["import type { RapiId, RapiPlanSnapshotId } from '@roomle/web-sdk';\n\nexport const isIdAnItem = (id: string) => id.split(':').length - 1 === 1;\n\nexport const isIdAPlan = (id: string) => id.split(':').length - 1 <= 0;\n\nexport const isIdAComponent = (id: string) =>\n id ? id.startsWith('component@') : false;\n\nexport const isIdAConfigurationString = (id: string) =>\n id.startsWith('{') && id.endsWith('}');\n\nexport const isPlanSnapshotId = (\n id: string | RapiId,\n): id is RapiPlanSnapshotId => id.startsWith('ps_');\n"],"mappings":";;;;;AAEA,IAAa,KAAc,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAM,GAE1D,KAAa,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAK,GAExD,KAAkB,MAC7B,IAAK,EAAG,WAAW,aAAa,GAAG,IAExB,KAA4B,MACvC,EAAG,WAAW,IAAI,IAAI,EAAG,SAAS,IAAI,EAE3B,KACX,MAC6B,EAAG,WAAW,MAAM"}
1
+ {"version":3,"file":"packages-BRoZjsxP.mjs","names":[],"sources":["../../../common/src/utils/id-inferrer.ts"],"sourcesContent":["import type { RapiId, RapiPlanSnapshotId } from '@roomle/web-sdk';\n\nexport const isIdAnItem = (id: string) => id.split(':').length - 1 === 1;\n\nexport const isIdAPlan = (id: string) => id.split(':').length - 1 <= 0;\n\nexport const isIdAComponent = (id: string) =>\n id ? id.startsWith('component@') : false;\n\nexport const isIdAConfigurationString = (id: string) =>\n id.startsWith('{') && id.endsWith('}');\n\nexport const isPlanSnapshotId = (\n id: string | RapiId,\n): id is RapiPlanSnapshotId => id.startsWith('ps_');\n"],"mappings":";;;;;AAEA,IAAa,KAAc,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAM,GAE1D,KAAa,MAAe,EAAG,MAAM,IAAI,CAAC,SAAS,KAAK,GAExD,KAAkB,MAC7B,IAAK,EAAG,WAAW,aAAa,GAAG,IAExB,KAA4B,MACvC,EAAG,WAAW,IAAI,IAAI,EAAG,SAAS,IAAI,EAE3B,KACX,MAC6B,EAAG,WAAW,MAAM"}
@@ -1,5 +1,5 @@
1
- import { A as e, C as t, H as n, I as r, V as i, Z as a, c as o, ct as s, ft as c, n as l, ot as u, st as d, tt as f, u as p, w as m } from "./roomle-sdk-C_KgeRRI.mjs";
2
- import { t as h } from "./script-loader-CdhwtgMh.mjs";
1
+ import { A as e, C as t, H as n, I as r, V as i, Z as a, c as o, ct as s, ft as c, n as l, ot as u, st as d, tt as f, u as p, w as m } from "./roomle-sdk-CwG0lo8o.mjs";
2
+ import { t as h } from "./script-loader-CsWF2xfV.mjs";
3
3
  //#region packages/planner-core/src/input/planner-input-manager.ts
4
4
  var g = class extends r {
5
5
  _canDrag(e) {
@@ -41,4 +41,4 @@ var g = class extends r {
41
41
  //#endregion
42
42
  export { v as t };
43
43
 
44
- //# sourceMappingURL=planner-d2O03UND.mjs.map
44
+ //# sourceMappingURL=planner-2ZsNeXnj.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-d2O03UND.mjs","names":[],"sources":["../../packages/planner-core/src/input/planner-input-manager.ts","../../packages/planner-core/src/utils/injectables.ts","../../packages/planner-core/src/planner.ts"],"sourcesContent":["import type { INPUT_EVENT_TYPE } from '../../../common-core/src/input/input-manager';\nimport InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class PlannerInputManager extends InputManager {\n protected _canDrag(_type: INPUT_EVENT_TYPE): boolean {\n return true;\n }\n}\n","import ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport Logger from '../../../common-core/src/logger';\nimport { default as PlannerMeshGenerator } from '../webgl/planner-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport PlannerInputManager from '../input/planner-input-manager';\nimport PlannerSelectionHandler from './planner-selection-handler';\nimport GlobalInitData from '../../../common-core/src/utils/global-init-data';\nimport ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'planner-input-manager',\n PlannerInputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'planner-mesh-generator',\n PlannerMeshGenerator,\n ),\n new DependencyInjectionAssignment(\n 'configurator-view-model',\n ConfiguratorViewModel,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment('global-init-data', GlobalInitData),\n new DependencyInjectionAssignment(\n 'planner-selection-handler',\n PlannerSelectionHandler,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport { RoomlePlanner } from './roomle-planner';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport { INJECTABLES } from './utils/injectables';\nimport type PlannerKernelAccess from './services/planner-kernel-access';\nimport type Logger from '../../common-core/src/logger';\nimport { KERNEL_TYPE } from '../../common-core/src/services/common-kernel-access';\nimport type { PluginName } from '../../configurator-core/src/utils/plugin-types';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { isInIframe } from '../../common-core/src/utils/rapi-utils';\n\nexport class Planner<\n P extends readonly PluginName[] = readonly [],\n> extends Main {\n private _planner: RoomlePlanner<P>;\n private _activePlugins: P;\n\n constructor(creator?: string, activePlugins?: P) {\n super(creator);\n this._activePlugins = (activePlugins || []) as P;\n }\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n // instantiate kernel acccess\n // instantiate pka\n // set pka on kernel access\n const plannerKernelAccess = this.lookup<PlannerKernelAccess>(\n 'planner-kernel-access',\n this._context,\n );\n plannerKernelAccess.init(KERNEL_TYPE.PLANNER);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._planner = new RoomlePlanner<P>(this._context, this._activePlugins);\n\n this._planner.getMain = () => {\n return this;\n };\n\n if (!window.RoomlePlanner) {\n if (this._activePlugins.length === 0) {\n // cast to unknown because we know that the planner is a RoomlePlanner\n window.RoomlePlanner = this._planner as unknown as RoomlePlanner;\n } else {\n window.RoomlePlanner = this._planner as RoomlePlanner<\n readonly PluginName[]\n >;\n }\n }\n\n const initData = this.lookup<InitData>('init-data', this._context);\n\n if (initData?.hi && isInIframe()) {\n await this._planner.setupHomagIntelligence();\n }\n }\n\n public getApi(): RoomlePlanner<P> {\n return this._planner;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.PLANNER;\n }\n}\n"],"mappings":";;;AAGA,IAAqB,IAArB,cAAiD,EAAa;CAC5D,SAAmB,GAAkC;AACnD,SAAO;;GCQE,IAA+C;CAC1D,IAAI,EAA8B,iBAAiB,EAAa;CAChE,IAAI,EACF,yBACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,UAAU,EAAO;CACnD,IAAI,EACF,0BACA,EACD;CACD,IAAI,EACF,2BACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EAA8B,oBAAoB,EAAe;CACrE,IAAI,EACF,6BACA,EACD;CACF,ECxBY,IAAb,cAEU,EAAK;CAIb,YAAY,GAAkB,GAAmB;AAE/C,EADA,MAAM,EAAQ,EACd,KAAK,iBAAkB,KAAiB,EAAE;;CAE5C,eAA+B;CAI/B,oBAAoC;AAMN,EAL5B,EAA0B,MAAM,EAAY,EAC5C,KAAK,OAAe,UAAU,KAAK,SAAS,EAIhB,KAAK,OAC/B,yBACA,KAAK,SACN,CACmB,KAAK,EAAY,QAAQ;;CAG/C,iBAAiC;AAC/B,QAAU,MAAM,0BAA0B;;CAG5C,sBAAsC;AACpC,QAAU,MAAM,0BAA0B;;CAG5C,MAAgB,eAA8B;AAoB5C,EAnBA,KAAK,WAAW,IAAI,EAAiB,KAAK,UAAU,KAAK,eAAe,EAExE,KAAK,SAAS,gBACL,MAGJ,OAAO,kBACN,KAAK,eAAe,QAEtB,OAAO,gBAAgB,KAAK,WAQf,KAAK,OAAiB,aAAa,KAAK,SAAS,EAEpD,MAAM,GAAY,IAC9B,MAAM,KAAK,SAAS,wBAAwB;;CAIhD,SAAkC;AAChC,SAAO,KAAK;;CAGd,iBAAmC;AACjC,SAAO,EAAa"}
1
+ {"version":3,"file":"planner-2ZsNeXnj.mjs","names":[],"sources":["../../packages/planner-core/src/input/planner-input-manager.ts","../../packages/planner-core/src/utils/injectables.ts","../../packages/planner-core/src/planner.ts"],"sourcesContent":["import type { INPUT_EVENT_TYPE } from '../../../common-core/src/input/input-manager';\nimport InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class PlannerInputManager extends InputManager {\n protected _canDrag(_type: INPUT_EVENT_TYPE): boolean {\n return true;\n }\n}\n","import ScriptLoader from '../../../common-core/src/script-loader';\nimport {\n DependencyInjectionAssignment,\n DI_TYPE,\n} from '../../../common-core/src/di/container';\nimport Logger from '../../../common-core/src/logger';\nimport { default as PlannerMeshGenerator } from '../webgl/planner-mesh-generator';\nimport { RapiAccess } from '../../../common-core/src/rapi-access';\nimport PlannerInputManager from '../input/planner-input-manager';\nimport PlannerSelectionHandler from './planner-selection-handler';\nimport GlobalInitData from '../../../common-core/src/utils/global-init-data';\nimport ConfiguratorViewModel from '../../../common-core/src/view-model/configurator-view-model';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'planner-input-manager',\n PlannerInputManager,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment(\n 'planner-mesh-generator',\n PlannerMeshGenerator,\n ),\n new DependencyInjectionAssignment(\n 'configurator-view-model',\n ConfiguratorViewModel,\n DI_TYPE.CONTEXT,\n ),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n new DependencyInjectionAssignment('global-init-data', GlobalInitData),\n new DependencyInjectionAssignment(\n 'planner-selection-handler',\n PlannerSelectionHandler,\n ),\n];\n","import './utils/global-definitions';\nimport { Main, BASE_CONTEXT } from '../../common-core/src/main';\nimport { RoomlePlanner } from './roomle-planner';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport { INJECTABLES } from './utils/injectables';\nimport type PlannerKernelAccess from './services/planner-kernel-access';\nimport type Logger from '../../common-core/src/logger';\nimport { KERNEL_TYPE } from '../../common-core/src/services/common-kernel-access';\nimport type { PluginName } from '../../configurator-core/src/utils/plugin-types';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport { isInIframe } from '../../common-core/src/utils/rapi-utils';\n\nexport class Planner<\n P extends readonly PluginName[] = readonly [],\n> extends Main {\n private _planner: RoomlePlanner<P>;\n private _activePlugins: P;\n\n constructor(creator?: string, activePlugins?: P) {\n super(creator);\n this._activePlugins = (activePlugins || []) as P;\n }\n protected setupGlobals(): void {\n //globals are initialized in bootFinished()\n }\n\n protected setupDependencies(): void {\n RoomleDependencyInjection.setup(INJECTABLES);\n this.lookup<Logger>('logger', this._context);\n // instantiate kernel acccess\n // instantiate pka\n // set pka on kernel access\n const plannerKernelAccess = this.lookup<PlannerKernelAccess>(\n 'planner-kernel-access',\n this._context,\n );\n plannerKernelAccess.init(KERNEL_TYPE.PLANNER);\n }\n\n protected cleanUpGlobals(): void {\n throw new Error('Method not implemented.');\n }\n\n protected cleanUpDependencies(): void {\n throw new Error('Method not implemented.');\n }\n\n protected async bootFinished(): Promise<void> {\n this._planner = new RoomlePlanner<P>(this._context, this._activePlugins);\n\n this._planner.getMain = () => {\n return this;\n };\n\n if (!window.RoomlePlanner) {\n if (this._activePlugins.length === 0) {\n // cast to unknown because we know that the planner is a RoomlePlanner\n window.RoomlePlanner = this._planner as unknown as RoomlePlanner;\n } else {\n window.RoomlePlanner = this._planner as RoomlePlanner<\n readonly PluginName[]\n >;\n }\n }\n\n const initData = this.lookup<InitData>('init-data', this._context);\n\n if (initData?.hi && isInIframe()) {\n await this._planner.setupHomagIntelligence();\n }\n }\n\n public getApi(): RoomlePlanner<P> {\n return this._planner;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.PLANNER;\n }\n}\n"],"mappings":";;;AAGA,IAAqB,IAArB,cAAiD,EAAa;CAC5D,SAAmB,GAAkC;AACnD,SAAO;;GCQE,IAA+C;CAC1D,IAAI,EAA8B,iBAAiB,EAAa;CAChE,IAAI,EACF,yBACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,UAAU,EAAO;CACnD,IAAI,EACF,0BACA,EACD;CACD,IAAI,EACF,2BACA,GACA,EAAQ,QACT;CACD,IAAI,EAA8B,eAAe,EAAW;CAC5D,IAAI,EAA8B,oBAAoB,EAAe;CACrE,IAAI,EACF,6BACA,EACD;CACF,ECxBY,IAAb,cAEU,EAAK;CAIb,YAAY,GAAkB,GAAmB;AAE/C,EADA,MAAM,EAAQ,EACd,KAAK,iBAAkB,KAAiB,EAAE;;CAE5C,eAA+B;CAI/B,oBAAoC;AAMN,EAL5B,EAA0B,MAAM,EAAY,EAC5C,KAAK,OAAe,UAAU,KAAK,SAAS,EAIhB,KAAK,OAC/B,yBACA,KAAK,SACN,CACmB,KAAK,EAAY,QAAQ;;CAG/C,iBAAiC;AAC/B,QAAU,MAAM,0BAA0B;;CAG5C,sBAAsC;AACpC,QAAU,MAAM,0BAA0B;;CAG5C,MAAgB,eAA8B;AAoB5C,EAnBA,KAAK,WAAW,IAAI,EAAiB,KAAK,UAAU,KAAK,eAAe,EAExE,KAAK,SAAS,gBACL,MAGJ,OAAO,kBACN,KAAK,eAAe,QAEtB,OAAO,gBAAgB,KAAK,WAQf,KAAK,OAAiB,aAAa,KAAK,SAAS,EAEpD,MAAM,GAAY,IAC9B,MAAM,KAAK,SAAS,wBAAwB;;CAIhD,SAAkC;AAChC,SAAO,KAAK;;CAGd,iBAAmC;AACjC,SAAO,EAAa"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "./planner-2ZsNeXnj.mjs";
2
+ export { e as Planner };
@@ -2,8 +2,10 @@ import { Box3 } from 'three';
2
2
  import { BufferGeometry } from 'three';
3
3
  import { BufferGeometryEventMap } from 'three';
4
4
  import { Camera } from 'three';
5
+ import { Camera as Camera_2 } from 'three/webgpu';
5
6
  import { Color } from 'three';
6
7
  import { ColorRepresentation } from 'three';
8
+ import { ColorRepresentation as ColorRepresentation_2 } from 'three/webgpu';
7
9
  import { CommunicationInterfaceCallback } from '../../../workers/src/communication-interface';
8
10
  import { ConstructionObjectDoorArch } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
9
11
  import { createExtObjId } from '../../../../../common/src/utils/external-objects';
@@ -35,6 +37,7 @@ import { NormalBufferAttributes } from 'three';
35
37
  import { Nullable } from '../../common/src/utils/types';
36
38
  import { Nullable as Nullable_2 } from '../../../../../common/src/utils/types';
37
39
  import { Object3D } from 'three';
40
+ import { Object3D as Object3D_2 } from 'three/webgpu';
38
41
  import { Object3DEventMap } from 'three';
39
42
  import { OrthographicCamera } from 'three';
40
43
  import { ParametersGroup } from 'three/examples/jsm/inspector/tabs/Parameters.js';
@@ -43,6 +46,7 @@ import { PerspectiveCamera } from 'three';
43
46
  import { PlanInteractionHandler as PlanInteractionHandler_2 } from 'roomle-core-hsc/src/embind/plannerCoreInterface';
44
47
  import { PointLight } from 'three';
45
48
  import { Scene } from 'three';
49
+ import { Scene as Scene_2 } from 'three/webgpu';
46
50
  import { Texture } from 'three';
47
51
  import { TextureLoader } from 'three';
48
52
  import { Vector2 } from 'three';
@@ -1175,6 +1179,11 @@ export declare interface ConfiguratorInitData {
1175
1179
  * @description If set to true it will try to apply all current global parameters to the loaded object
1176
1180
  */
1177
1181
  applyCurrentGlobalParameters?: boolean;
1182
+ /**
1183
+ * @description If set to true, component dimension labels stay visible even when the distance-based proximity check would normally hide them.
1184
+ * @default false
1185
+ */
1186
+ disableMeasurementCollisionDetection?: boolean;
1178
1187
  /**
1179
1188
  * @description Adds the given spacing (in centimeters) to the loaded object. This is then used to calculate the initial camera distance
1180
1189
  * default: 0
@@ -1186,6 +1195,7 @@ export declare interface ConfiguratorInitData {
1186
1195
  cameraSpacing?: number;
1187
1196
  /* Excluded from this release type: ssr */
1188
1197
  /* Excluded from this release type: featureFlags */
1198
+ /* Excluded from this release type: webGpu */
1189
1199
  /* Excluded from this release type: webGpuConfig */
1190
1200
  /**
1191
1201
  * @description if true, the meshes of the component will be used, in addition to the bounding box, for raycasting (selecting)
@@ -3819,6 +3829,7 @@ export declare class HeadlessRoomleSdk {
3819
3829
  private _height;
3820
3830
  private _featureFlags?;
3821
3831
  private _webGpuConfig?;
3832
+ private _webGpu;
3822
3833
  private _loaderQueue;
3823
3834
  private _skyboxOriginal;
3824
3835
  /**
@@ -4315,8 +4326,10 @@ export declare class InitData implements Context, Omit<InitDataDefinition, 'colo
4315
4326
  applyCurrentGlobalParameters: boolean;
4316
4327
  configureInRoom: boolean;
4317
4328
  dockInRoom: boolean;
4329
+ disableMeasurementCollisionDetection: boolean;
4318
4330
  discardExternalObjectsWhenLoadingPlan: boolean;
4319
4331
  featureFlags: FeatureFlagsImplementation;
4332
+ webGpu: boolean;
4320
4333
  webGpuConfig: WebGpuConfig;
4321
4334
  meshRaycasting: boolean;
4322
4335
  defaultFloorMaterial?: number | string;
@@ -5323,6 +5336,8 @@ export declare interface MeasurementBase<Vector2Type = Vector3 | Position2, Vect
5323
5336
  textPosition3d: Vector3Type;
5324
5337
  /** 3D direction vector of the text **/
5325
5338
  textDirection: Vector3Type;
5339
+ /** Direction to move the measured object when increasing the distance. */
5340
+ moveDirection?: Vector3Type;
5326
5341
  /** rotation of the text in radians **/
5327
5342
  textRotation: number;
5328
5343
  /** length of the wall in millimeters **/
@@ -5334,6 +5349,7 @@ export declare interface MeasurementBase<Vector2Type = Vector3 | Position2, Vect
5334
5349
  /** 2D position where the length/label should be shown **/
5335
5350
  textPosition2d?: Vector2Type;
5336
5351
  id?: number;
5352
+ dashed?: boolean;
5337
5353
  }
5338
5354
 
5339
5355
  export declare type MeasurementLineDimension = DimensionDefinition<Vector3, Vector3>;
@@ -5473,6 +5489,12 @@ export declare interface ModelExportOptions {
5473
5489
  filename?: string;
5474
5490
  }
5475
5491
 
5492
+ export declare interface NeighboringObjectMeasurementInfo {
5493
+ bounds: Box3;
5494
+ id: number;
5495
+ measurementBounds: Box3[];
5496
+ }
5497
+
5476
5498
  export declare abstract class Node_2 extends PlanElement {
5477
5499
  readonly nodeType: NodeType;
5478
5500
  getNumberOfConnectedWalls(): number;
@@ -5634,8 +5656,8 @@ export declare interface OrthographicOffsetCamera extends OrthographicCamera, Of
5634
5656
  }
5635
5657
 
5636
5658
  export declare interface OutlineColors {
5637
- outlineVisibleEdgeColor: ColorRepresentation;
5638
- outlineHiddenEdgeColor: ColorRepresentation;
5659
+ outlineVisibleEdgeColor: ColorRepresentation_2;
5660
+ outlineHiddenEdgeColor: ColorRepresentation_2;
5639
5661
  }
5640
5662
 
5641
5663
  export declare interface OutlineCustomParameters {
@@ -6430,6 +6452,7 @@ export declare class PlannerSceneManager extends ConfiguratorSceneManager implem
6430
6452
  private _cameraState;
6431
6453
  private _cameraStateLocked;
6432
6454
  private _planElementHighlighter;
6455
+ private _highlightRefreshScheduled;
6433
6456
  private _planner3dDimensionHelper;
6434
6457
  private _planner2dMeasurementsHelper;
6435
6458
  private _selectedPlanElementViewModel2d;
@@ -6547,6 +6570,8 @@ export declare class PlannerSceneManager extends ConfiguratorSceneManager implem
6547
6570
  setMode(mode: Enumify_2<typeof CAMERA_TYPE>): void;
6548
6571
  private _clearHighlighting;
6549
6572
  updateHighlightingOfPlanElements(): void;
6573
+ planObjectUpdated(planObject: PlanObjectKernel, geometryChanged: boolean, pendingDocking: boolean, automaticCalculationUpdate: boolean): void;
6574
+ private _scheduleHighlightRefresh;
6550
6575
  highlightPlanElementsById(runtimeIds: number[] | null): void;
6551
6576
  highlightPlanElementById(runtimeId: number | null): void;
6552
6577
  destroy(): void;
@@ -6654,6 +6679,7 @@ export declare class PlannerSceneManager extends ConfiguratorSceneManager implem
6654
6679
  private _sendRoomMeasurements;
6655
6680
  private _sendMeasurementLineDimension;
6656
6681
  private _sendObjectMeasurements;
6682
+ private _getOtherPlanObjectsFor2dMeasurements;
6657
6683
  private transformMeasurements;
6658
6684
  private _sendConstructionElementDimensions;
6659
6685
  setConstructionElementDistanceToWall(measurementId: number, distance: number): void;
@@ -6691,6 +6717,8 @@ export declare class PlannerSceneManager extends ConfiguratorSceneManager implem
6691
6717
  protected enablePanning(): void;
6692
6718
  protected disablePanning(): void;
6693
6719
  setObjectToWallMeasurementLength(planElementId: number, measurementId: number, length: number): void;
6720
+ setObjectMeasurementLength(planElementId: number, measurement: ObjectToWallDimensionTransferable, newLengthMM: number): void;
6721
+ private _setObjectToNeighborMeasurementLength;
6694
6722
  setWallMeasurementLength(measurementId: number, length: number, wallDirection: EMSConstant, measurementKind?: 'edge2d' | 'sloping'): void;
6695
6723
  setMeasurementLineLength(measurementId: number, length: number, wallDirection: string): void;
6696
6724
  setNodeZCoordinate(nodeId: number, z: number): void;
@@ -6819,7 +6847,7 @@ export declare class PlanObjectViewModel extends PlanElementViewModel {
6819
6847
  clear(): void;
6820
6848
  getPlanObject(): PlanObject;
6821
6849
  getSize(): Vector3;
6822
- getObjectMeasurements(zoomFactor: number, clientWidth: number, clientHeight: number): Nullable_2<ObjectMeasurements>;
6850
+ getObjectMeasurements(zoomFactor: number, clientWidth: number, clientHeight: number, otherObjects?: NeighboringObjectMeasurementInfo[]): Nullable_2<ObjectMeasurements>;
6823
6851
  update(): void;
6824
6852
  }
6825
6853
 
@@ -10102,7 +10130,7 @@ export declare class RoomleWebGPURenderer extends RoomleRenderer<WebGPURenderer>
10102
10130
  private _initData;
10103
10131
  constructor(creator: string, renderer: WebGPURenderer, enableSSGI: boolean, outlineColors?: OutlineColors, enableTraa?: boolean);
10104
10132
  private enableDefaultRenderPasses;
10105
- addGroundShadowLightAndFloor(scene: Scene): Promise<void>;
10133
+ addGroundShadowLightAndFloor(scene: Scene_2): Promise<void>;
10106
10134
  private addRenderPass;
10107
10135
  clearCache(): void;
10108
10136
  disableUiInteractionMode(): void;
@@ -10110,13 +10138,13 @@ export declare class RoomleWebGPURenderer extends RoomleRenderer<WebGPURenderer>
10110
10138
  setCameraType(cameraType: Enumify_2<typeof CAMERA_TYPE>): void;
10111
10139
  switchToConfigurator(): void;
10112
10140
  switchToPlanner(renderMode: PlannerRenderMode): void;
10113
- highlightObjects(selectedMeshes: Object3D[]): void;
10114
- render(scene: Scene, camera: Camera): void;
10141
+ highlightObjects(selectedMeshes: Object3D_2[]): void;
10142
+ render(scene: Scene_2, camera: Camera_2): void;
10115
10143
  private renderToFreezeTarget;
10116
10144
  private updateCameraProjectionMatrix;
10117
10145
  private assembleRenderPasses;
10118
10146
  setCustomOutlineParameters(customOutlineParameters: OutlineCustomParameters): void;
10119
- setGroundShadow(enabled: boolean, _scene: Scene): void;
10147
+ setGroundShadow(enabled: boolean, _scene: Scene_2): void;
10120
10148
  private enableOutline;
10121
10149
  private getOutlinePassOrUndefined;
10122
10150
  private enableSsgiPass;
@@ -10674,8 +10702,8 @@ export declare const STEP_GROUPS: {
10674
10702
  readonly methods: ["addMeasure"];
10675
10703
  };
10676
10704
  readonly parameterChange: {
10677
- readonly finalize: "on-signal";
10678
- readonly idleCommitMs: 3000;
10705
+ readonly finalize: "immediate";
10706
+ readonly resumeFromCommitted: true;
10679
10707
  readonly methods: ["applyKernelParameterChange"];
10680
10708
  };
10681
10709
  readonly addOrUpdateExternal: {
@@ -10845,6 +10873,8 @@ export declare class UndoRedoHandler {
10845
10873
  private _disposed;
10846
10874
  protected _handler: PlanInteractionHandler;
10847
10875
  private _state;
10876
+ private _lastCommitted;
10877
+ private _sliderGestureActive;
10848
10878
  private _pendingContinuations;
10849
10879
  private _commitWhenSettled;
10850
10880
  private _idleCommitTimer;
@@ -10855,6 +10885,8 @@ export declare class UndoRedoHandler {
10855
10885
  get isDisposed(): boolean;
10856
10886
  run<T>(methodName: InteractionMethodName, args: unknown[], apply: () => T): T;
10857
10887
  commit(): void;
10888
+ beginSliderGesture(): void;
10889
+ endSliderGesture(): void;
10858
10890
  clearHistory(): void;
10859
10891
  private reset;
10860
10892
  undo(): void;
@@ -1,14 +1,14 @@
1
- import { a as e, i as t, n, r, t as i } from "./packages-CywjYzrw.mjs";
1
+ import { a as e, i as t, n, r, t as i } from "./packages-BRoZjsxP.mjs";
2
2
  import { i as a, t as o } from "./kernel-BWfRHWkW.mjs";
3
3
  import { mt as s, vt as c } from "./threejs-utils-C9zED_Tu.mjs";
4
4
  import { Si as l, m as u, nt as d } from "./three.core-0KaTx8dm.mjs";
5
- import { A as f, F as p, G as m, J as h, K as ee, M as te, N as ne, P as re, S as ie, W as ae, a as oe, at as se, b as ce, ct as le, dt as ue, i as de, j as fe, k as pe, l as g, lt as _, m as v, mt as y, o as b, ot as x, q as S, r as C, s as w, st as T, t as E, u as D, ut as O, x as k, y as A, z as j } from "./roomle-sdk-C_KgeRRI.mjs";
5
+ import { A as f, F as p, G as m, J as h, K as ee, M as te, N as ne, P as re, S as ie, W as ae, a as oe, at as se, b as ce, ct as le, dt as ue, i as de, j as fe, k as pe, l as g, lt as _, m as v, mt as y, o as b, ot as x, q as S, r as C, s as w, st as T, t as E, u as D, ut as O, x as k, y as A, z as j } from "./roomle-sdk-CwG0lo8o.mjs";
6
6
  import { n as M } from "./roomle-renderer-FUqNfNIf.mjs";
7
- import { n as N } from "./script-loader-CdhwtgMh.mjs";
8
- import { t as P } from "./configurator-Df0i3C3T.mjs";
9
- import { t as F } from "./planner-d2O03UND.mjs";
10
- import { n as I, t as L } from "./glb-viewer-CMfGHsTk.mjs";
11
- import { t as R } from "./api-DsFkkVBx.mjs";
7
+ import { n as N } from "./script-loader-CsWF2xfV.mjs";
8
+ import { t as P } from "./configurator-CqUyAvhd.mjs";
9
+ import { t as F } from "./planner-2ZsNeXnj.mjs";
10
+ import { n as I, t as L } from "./glb-viewer-C6XU_HMw.mjs";
11
+ import { t as R } from "./api-BcdMPjhw.mjs";
12
12
  import { t as z } from "./roomle-headless-setup-7xnQlZl3.mjs";
13
13
  import { createRequire as B } from "module";
14
14
  //#region packages/headless-core/src/headless-script-loader.ts
@@ -340,7 +340,7 @@ var we = (e) => {
340
340
  super(...e), this._headlessPathTracerRenderer = null;
341
341
  }
342
342
  async _createThreejsImageRenderer() {
343
- if (!this._initData.featureFlags.webGpu) return super._createThreejsImageRenderer();
343
+ if (!this._initData.webGpu) return super._createThreejsImageRenderer();
344
344
  let { WebGPURenderer: e } = await import("./three.webgpu-bR4-ABJu.mjs"), t = new e({
345
345
  antialias: !1,
346
346
  alpha: !0
@@ -349,7 +349,7 @@ var we = (e) => {
349
349
  }
350
350
  async _createRoomleRenderer(e) {
351
351
  if (!e.isWebGPURenderer) return super._createRoomleRenderer(e);
352
- let { RoomleWebGPURenderer: t } = await import("./roomle-webgpu-renderer-RLBME9mQ.mjs");
352
+ let { RoomleWebGPURenderer: t } = await import("./roomle-webgpu-renderer-CNZiK43x.mjs");
353
353
  return new t(this._creator_, e, !0, void 0, !1);
354
354
  }
355
355
  static hasExplicitCameraPlacement(e) {
@@ -378,7 +378,7 @@ var we = (e) => {
378
378
  }
379
379
  async _renderPathTracedFrame(e, t, n, r) {
380
380
  let i = e instanceof M ? e.renderer : e;
381
- if (!i.isWebGPURenderer) throw Error("HeadlessImageRenderer: path tracing requires the WebGPU renderer (enable featureFlags.webGpu)");
381
+ if (!i.isWebGPURenderer) throw Error("HeadlessImageRenderer: path tracing requires the WebGPU renderer (enable webGpu)");
382
382
  this._headlessPathTracerRenderer ||= new Ee(), await this._headlessPathTracerRenderer.render(i, t, n, r.samples, r.settings);
383
383
  let { imageDataUrl: a } = await this._readFrameAndClear(i);
384
384
  return a;
@@ -443,17 +443,14 @@ var we = (e) => {
443
443
  }
444
444
  }, Z = 1024, Ae = "inline-plan-xml#", je = "inline-configuration#", Q = class e {
445
445
  constructor() {
446
- this._initialized = !1, this._configuratorReady = !1, this._plannerReady = !1, this._glbViewerReady = !1, this._loadedConfigurationId = null, this._loadedPlanId = null, this._loadedStaticItemId = null, this._width = 1024, this._height = 768, this._loaderQueue = Promise.resolve(), this._skyboxOriginal = /* @__PURE__ */ new WeakMap(), this._onReadyForRenderArmed = null;
446
+ this._initialized = !1, this._configuratorReady = !1, this._plannerReady = !1, this._glbViewerReady = !1, this._loadedConfigurationId = null, this._loadedPlanId = null, this._loadedStaticItemId = null, this._width = 1024, this._height = 768, this._webGpu = !0, this._loaderQueue = Promise.resolve(), this._skyboxOriginal = /* @__PURE__ */ new WeakMap(), this._onReadyForRenderArmed = null;
447
447
  }
448
448
  static async create(t) {
449
449
  let n = new e();
450
450
  return await n._init(t), n;
451
451
  }
452
452
  async _init(e) {
453
- this._width = e.width ?? 1024, this._height = e.height ?? 768, this._featureFlags = e.featureFlags, e.featureFlags?.webGpu || (console.warn("HeadlessRoomleSdk: WebGPU is required, forcing featureFlags.webGpu on."), this._featureFlags = {
454
- ...e.featureFlags,
455
- webGpu: !0
456
- }), this._webGpuConfig = {
453
+ this._width = e.width ?? 1024, this._height = e.height ?? 768, this._featureFlags = e.featureFlags, !e.webGpu && !e.featureFlags?.webGpu && console.warn("HeadlessRoomleSdk: WebGPU is required, forcing webGpu on."), this._webGpu = !0, this._webGpuConfig = {
457
454
  autoDetectQualityLevel: !1,
458
455
  autoQualityMinFps: 0,
459
456
  autoQualityMaxFps: 2 ** 53 - 1,
@@ -469,10 +466,11 @@ var we = (e) => {
469
466
  }), this._initialized = !0;
470
467
  }
471
468
  _deepMergeHeadlessInitDefaults(e) {
472
- if (!this._featureFlags && !this._webGpuConfig) return e;
469
+ if (!this._featureFlags && !this._webGpuConfig && !this._webGpu) return e;
473
470
  let t = e?.featureFlags;
474
471
  return {
475
472
  ...e,
473
+ webGpu: this._webGpu,
476
474
  featureFlags: {
477
475
  ...this._featureFlags,
478
476
  ...t