@roomle/web-sdk 2.106.0 → 2.107.0-alpha.2
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/lib/{PointLightHelper-BkhgsNMr.js → PointLightHelper-BEyPVHpD.js} +2 -2
- package/lib/{PointLightHelper-BkhgsNMr.js.map → PointLightHelper-BEyPVHpD.js.map} +1 -1
- package/lib/{PointLightHelper-Dv5w-V26.mjs → PointLightHelper-C08I9fxN.mjs} +2 -2
- package/lib/{PointLightHelper-Dv5w-V26.mjs.map → PointLightHelper-C08I9fxN.mjs.map} +1 -1
- package/lib/{banana-for-scale-C6WLZBrI.js → banana-for-scale-CRuiKfKr.js} +2 -2
- package/lib/{banana-for-scale-C6WLZBrI.js.map → banana-for-scale-CRuiKfKr.js.map} +1 -1
- package/lib/{banana-for-scale-Dkvl0dmA.mjs → banana-for-scale-D1KrBggd.mjs} +2 -2
- package/lib/{banana-for-scale-Dkvl0dmA.mjs.map → banana-for-scale-D1KrBggd.mjs.map} +1 -1
- package/lib/{camera-behaviour-CeI8xI7Q.mjs → camera-behaviour-CsLcX8jk.mjs} +3 -3
- package/lib/{camera-behaviour-CeI8xI7Q.mjs.map → camera-behaviour-CsLcX8jk.mjs.map} +1 -1
- package/lib/{camera-behaviour-BC7oG4ni.js → camera-behaviour-vflerxg2.js} +3 -3
- package/lib/{camera-behaviour-BC7oG4ni.js.map → camera-behaviour-vflerxg2.js.map} +1 -1
- package/lib/{component-dimensioning-Cd4amJUD.mjs → component-dimensioning-DKZR-14N.mjs} +2 -2
- package/lib/{component-dimensioning-Cd4amJUD.mjs.map → component-dimensioning-DKZR-14N.mjs.map} +1 -1
- package/lib/{component-dimensioning-D5TgCYxL.js → component-dimensioning-fBdrqhdr.js} +2 -2
- package/lib/{component-dimensioning-D5TgCYxL.js.map → component-dimensioning-fBdrqhdr.js.map} +1 -1
- package/lib/{component-raycast-helper-CKvxxNPn.js → component-raycast-helper-Bkq0_1Vg.js} +2 -2
- package/lib/{component-raycast-helper-CKvxxNPn.js.map → component-raycast-helper-Bkq0_1Vg.js.map} +1 -1
- package/lib/{component-raycast-helper-CoI-qGLm.mjs → component-raycast-helper-Bn1_2Pjk.mjs} +2 -2
- package/lib/{component-raycast-helper-CoI-qGLm.mjs.map → component-raycast-helper-Bn1_2Pjk.mjs.map} +1 -1
- package/lib/{configurator-DAPa7kO6.mjs → configurator-BLPGn_Jf.mjs} +6 -6
- package/lib/{configurator-DAPa7kO6.mjs.map → configurator-BLPGn_Jf.mjs.map} +1 -1
- package/lib/{configurator-Tu4gkYAu.js → configurator-DNFinDo-.js} +2 -2
- package/lib/{configurator-Tu4gkYAu.js.map → configurator-DNFinDo-.js.map} +1 -1
- package/lib/configurator-scene-manager-BGg58f7L.js +2 -0
- package/lib/configurator-scene-manager-BGg58f7L.js.map +1 -0
- package/lib/{configurator-scene-manager-Dg1niEPb.mjs → configurator-scene-manager-BKQisjHk.mjs} +84 -72
- package/lib/configurator-scene-manager-BKQisjHk.mjs.map +1 -0
- package/lib/configurator.js +1 -1
- package/lib/configurator.nomodule.js +1 -1
- package/lib/{continuous-drawing-helper-IfYzzo2J.js → continuous-drawing-helper-BMR1PLYx.js} +2 -2
- package/lib/{continuous-drawing-helper-IfYzzo2J.js.map → continuous-drawing-helper-BMR1PLYx.js.map} +1 -1
- package/lib/{continuous-drawing-helper-BRhXsKu9.mjs → continuous-drawing-helper-mMQUjv13.mjs} +2 -2
- package/lib/{continuous-drawing-helper-BRhXsKu9.mjs.map → continuous-drawing-helper-mMQUjv13.mjs.map} +1 -1
- package/lib/{default-light-setting-Cu-QozJN.js → default-light-setting-CEI-Ibbc.js} +2 -2
- package/lib/{default-light-setting-Cu-QozJN.js.map → default-light-setting-CEI-Ibbc.js.map} +1 -1
- package/lib/{default-light-setting-CMk6tZWX.mjs → default-light-setting-DzvlT557.mjs} +3 -3
- package/lib/{default-light-setting-CMk6tZWX.mjs.map → default-light-setting-DzvlT557.mjs.map} +1 -1
- package/lib/definitions/common-core/src/rapi-access.d.ts +1 -0
- package/lib/definitions/common-core/src/services/global-callback.d.ts +2 -0
- package/lib/definitions/common-core/src/utils/common-utils.d.ts +1 -0
- package/lib/definitions/common-core/src/view-model/configurator-view-model.d.ts +4 -0
- package/lib/definitions/configurator-core/src/services/configurator-ui-callback.d.ts +5 -0
- package/lib/definitions/configurator-core/src/webgl/configurator-scene-manager.d.ts +3 -0
- package/lib/definitions/homag-intelligence/src/hi-tag-catalog-callbacks.d.ts +20 -0
- package/lib/definitions/homag-intelligence/src/homag-intelligence.d.ts +15 -1
- package/lib/definitions/homag-intelligence/src/loader.d.ts +1 -1
- package/lib/definitions/planner-core/src/roomle-planner.d.ts +2 -0
- package/lib/definitions/planner-core/src/services/planner-kernel-access.d.ts +2 -2
- package/lib/definitions/typings/external-objects.d.ts +9 -0
- package/lib/{glb-viewer-CoRcp1it.mjs → glb-viewer-CRfJISyp.mjs} +6 -6
- package/lib/{glb-viewer-CoRcp1it.mjs.map → glb-viewer-CRfJISyp.mjs.map} +1 -1
- package/lib/{glb-viewer-CW4kiAoW.js → glb-viewer-D-5Zh8iu.js} +2 -2
- package/lib/{glb-viewer-CW4kiAoW.js.map → glb-viewer-D-5Zh8iu.js.map} +1 -1
- package/lib/{glb-viewer-camera-behaviour-C3UBK_qg.js → glb-viewer-camera-behaviour-B-1iUjYD.js} +2 -2
- package/lib/{glb-viewer-camera-behaviour-C3UBK_qg.js.map → glb-viewer-camera-behaviour-B-1iUjYD.js.map} +1 -1
- package/lib/{glb-viewer-camera-behaviour-CvoP6Xzb.mjs → glb-viewer-camera-behaviour-D2qHMKWu.mjs} +2 -2
- package/lib/{glb-viewer-camera-behaviour-CvoP6Xzb.mjs.map → glb-viewer-camera-behaviour-D2qHMKWu.mjs.map} +1 -1
- package/lib/glb-viewer.js +1 -1
- package/lib/glb-viewer.nomodule.js +1 -1
- package/lib/{imos-ix-poc-export-helper-xpua69yM.js → imos-ix-poc-export-helper-BgbWS04l.js} +2 -2
- package/lib/{imos-ix-poc-export-helper-xpua69yM.js.map → imos-ix-poc-export-helper-BgbWS04l.js.map} +1 -1
- package/lib/{imos-ix-poc-export-helper-MGULYQ2d.mjs → imos-ix-poc-export-helper-BrKzvPu6.mjs} +2 -2
- package/lib/{imos-ix-poc-export-helper-MGULYQ2d.mjs.map → imos-ix-poc-export-helper-BrKzvPu6.mjs.map} +1 -1
- package/lib/{main-CmH0kRDP.js → main-04TgUoiW.js} +42 -42
- package/lib/{main-CmH0kRDP.js.map → main-04TgUoiW.js.map} +1 -1
- package/lib/{main-BeohK5k5.mjs → main-B9KqFf2R.mjs} +877 -879
- package/lib/{main-BeohK5k5.mjs.map → main-B9KqFf2R.mjs.map} +1 -1
- package/lib/{material-viewer-By7xDt5f.js → material-viewer-6OT6wsTS.js} +2 -2
- package/lib/{material-viewer-By7xDt5f.js.map → material-viewer-6OT6wsTS.js.map} +1 -1
- package/lib/{material-viewer-BrYReao0.mjs → material-viewer-DO2eXyfN.mjs} +4 -4
- package/lib/{material-viewer-BrYReao0.mjs.map → material-viewer-DO2eXyfN.mjs.map} +1 -1
- package/lib/material-viewer.js +1 -1
- package/lib/material-viewer.nomodule.js +1 -1
- package/lib/planner-D6W4tb_-.js +155 -0
- package/lib/planner-D6W4tb_-.js.map +1 -0
- package/lib/{planner-C6apY6Bo.mjs → planner-Lp1_Sa3j.mjs} +2040 -977
- package/lib/planner-Lp1_Sa3j.mjs.map +1 -0
- package/lib/planner.js +1 -1
- package/lib/planner.nomodule.js +1 -1
- package/lib/roomle-sdk.js +7 -7
- package/lib/roomle-sdk.nomodule.js +1 -1
- package/lib/{script-loader-gdCes60A.js → script-loader-CT_OImo2.js} +2 -2
- package/lib/{script-loader-gdCes60A.js.map → script-loader-CT_OImo2.js.map} +1 -1
- package/lib/{script-loader-WY98fiYV.mjs → script-loader-CeVVxl8B.mjs} +2 -2
- package/lib/{script-loader-WY98fiYV.mjs.map → script-loader-CeVVxl8B.mjs.map} +1 -1
- package/lib/{stats-helper-PgjCdGmN.mjs → stats-helper-AWQXcT4g.mjs} +2 -2
- package/lib/{stats-helper-PgjCdGmN.mjs.map → stats-helper-AWQXcT4g.mjs.map} +1 -1
- package/lib/{stats-helper-C3P5UOTA.js → stats-helper-EKipvzLy.js} +2 -2
- package/lib/{stats-helper-C3P5UOTA.js.map → stats-helper-EKipvzLy.js.map} +1 -1
- package/lib/{tools-core-B_Dn7CWq.mjs → tools-core-BDANWqVZ.mjs} +3 -3
- package/lib/{tools-core-B_Dn7CWq.mjs.map → tools-core-BDANWqVZ.mjs.map} +1 -1
- package/lib/{tools-core-Cv27Qh8I.js → tools-core-CRDdyFZ-.js} +2 -2
- package/lib/{tools-core-Cv27Qh8I.js.map → tools-core-CRDdyFZ-.js.map} +1 -1
- package/package.json +1 -1
- package/lib/configurator-scene-manager-Dg1niEPb.mjs.map +0 -1
- package/lib/configurator-scene-manager-DjEghHP7.js +0 -2
- package/lib/configurator-scene-manager-DjEghHP7.js.map +0 -1
- package/lib/homag-intelligence-B2hIU9jH.mjs +0 -893
- package/lib/homag-intelligence-B2hIU9jH.mjs.map +0 -1
- package/lib/homag-intelligence-LpViFXPC.js +0 -2
- package/lib/homag-intelligence-LpViFXPC.js.map +0 -1
- package/lib/planner-C6apY6Bo.mjs.map +0 -1
- package/lib/planner-wPfcVW9Q.js +0 -155
- package/lib/planner-wPfcVW9Q.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-viewer-CoRcp1it.mjs","sources":["../../packages/glb-viewer-core/src/input/glb-input-manager.ts","../../packages/glb-viewer-core/src/utils/injectables.ts","../../packages/glb-viewer-core/src/camera-control/adjustable-camera-control-3d.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-light-setting.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-scene-manager.ts","../../packages/glb-viewer-core/src/services/glb-render-worker.ts","../../../../node_modules/jszip/dist/jszip.min.js?no-inline?url","../../packages/glb-viewer-core/src/roomle-glb-viewer.ts","../../packages/glb-viewer-core/src/glb-viewer.ts"],"sourcesContent":["import InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class GlbInputManager extends InputManager {\n //move on, nothing to see here\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 GlbInputManager from '../input/glb-input-manager';\nimport RapiAccess from '../../../common-core/src/rapi-access';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'glb-input-manager',\n GlbInputManager,\n DI_TYPE.CONTEXT\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n];\n","import CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport { Box3, Euler, Quaternion, Vector3 } from 'three';\n\nexport default class AdjustableCameraControl3D extends CameraControl3D {\n public shouldIgnoreStandardBehavior = false;\n\n public adjust(\n bounds: Vector3,\n position: Vector3,\n\n yaw: number,\n pitch: number,\n _fov: number\n ) {\n let minVector: Vector3 = new Vector3(-bounds.x / 2, 0, -bounds.z / 2);\n let maxVector: Vector3 = new Vector3(bounds.x / 2, bounds.y, bounds.z / 2);\n this._boundingBox = new Box3(minVector, maxVector);\n\n // before applying attis pitch value with have to rotate down, because we assume that attis rotation is upwards\n let euler = new Euler(-Math.PI / 2 + pitch, yaw, 0, 'ZYX');\n let quaternion = new Quaternion().setFromEuler(euler);\n\n this._camera.updateProjectionMatrix();\n\n this._camera.quaternion.copy(quaternion);\n this._camera.position.copy(position);\n }\n\n protected _update(overrideTarget?: Vector3) {\n if (!this.shouldIgnoreStandardBehavior) {\n super._update(overrideTarget);\n } else {\n this._saveYawAndPitch();\n }\n }\n\n public animateCamera(delta: number): boolean {\n if (!this.shouldIgnoreStandardBehavior) {\n return super.animateCamera(delta);\n } else {\n return true;\n }\n }\n}\n","import LightSetting from '../../../common-core/src/lightsetting/light-setting';\nimport { getGUI } from '../../../common-core/src/utils/threejs-utils';\nimport type { ColorRepresentation, Scene } from 'three';\nimport { AmbientLight, Color } from 'three';\n\nexport default class GLBViewerLightSetting extends LightSetting {\n private _ambientLight: AmbientLight;\n\n private _params = {\n ambientLight: {\n color: '#ffffff',\n },\n };\n\n constructor(scene: Scene, oldLightSetting?: LightSetting) {\n super(scene, oldLightSetting);\n\n this._ambientLight = new AmbientLight(\n new Color(this._params.ambientLight.color as ColorRepresentation),\n 0.5\n );\n\n this.addToScene();\n }\n\n public addToScene(): void {\n this._scene.add(this._ambientLight);\n }\n\n public removeFromScene(): void {\n this._scene.remove(this._ambientLight);\n }\n\n public reload(): void {\n this.removeFromScene();\n this.addToScene();\n }\n\n public showGUI(): void {\n let gui = getGUI();\n if (!gui) {\n return;\n }\n if (this._ambientLight) {\n let ambiLight = gui.addFolder('Ambient Light');\n ambiLight.add<any>(this._ambientLight, 'visible');\n ambiLight\n .add<any>(this._ambientLight, 'intensity')\n .min(0)\n .max(5)\n .step(0.1);\n ambiLight\n .addColor(this._params.ambientLight, 'color')\n .onChange((color: string) => {\n this._ambientLight.color = new Color(color as ColorRepresentation);\n });\n }\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n} from '../../../common-core/src/common-interfaces';\nimport AdjustableCameraControl3D from '../camera-control/adjustable-camera-control-3d';\nimport type { GLBRenderWorkerListener } from '../services/glb-render-worker';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport type GlbInputManager from '../input/glb-input-manager';\n\nimport DefaultLightSetting from '../../../configurator-core/src/webgl/lightsetting/default-light-setting';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport { dispose } from '../../../common-core/src/utils/threejs-utils';\nimport type RapiAccess from '../../../common-core/src/rapi-access';\nimport { getGlbUrl } from '../../../common-core/src/utils/common-utils';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '../../../common-core/src/types';\nimport {\n BasicShadowMap,\n Box3,\n type Color,\n type Object3D,\n PerspectiveCamera,\n SRGBColorSpace,\n Vector3,\n WebGLRenderer,\n} from 'three';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport GLBViewerLightSetting from './glb-viewer-light-setting';\nimport GlbViewerCameraBehaviour from '../../../common-core/src/cameracontrol/glb-viewer-camera-behaviour';\nimport {\n CAMERA_EVENT,\n type CameraParameter,\n} from '../../../common-core/src/cameracontrol/camera-control';\n\nexport default class GLBViewerSceneManager\n extends SceneManager\n implements GLBRenderWorkerListener\n{\n @inject\n private _glbInputManager: GlbInputManager;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _currentGLB: Object3D;\n private _standardSceneBackgroundColor: Color;\n\n private _itemsCount = 0;\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.GLB, CAMERA_TYPE.CAMERA_3D);\n this._standardSceneBackgroundColor = this._scene.background as Color;\n if (this._initData.legacyLight) {\n if (this._renderer.capabilities.maxTextures > 8) {\n this.loadDynamicLightSetting(\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA\n )\n );\n } else {\n console.warn(\n 'this device has a maximum of 8 texture units thus we are using a simpler light setting'\n );\n this._lightSetting = new GLBViewerLightSetting(this._scene);\n }\n }\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset\n ) {\n this._changeCameraBehaviour(\n new GlbViewerCameraBehaviour(\n new AdjustableCameraControl3D(\n this._creator_,\n this._getInputManager(),\n null\n ),\n this._cameraBehaviourState\n )\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._glbInputManager;\n }\n\n public async loadStaticItem(\n id: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n const rapiItem = await this._rapiAccess.getItem(id);\n if (rapiItem.configuration) {\n return Promise.reject();\n }\n const glbUrl = getGlbUrl(rapiItem);\n if (!glbUrl) {\n return Promise.reject(new Error('GLB Url not detected'));\n }\n return this.loadGLB(glbUrl, true, undefined, callback);\n }\n\n public loadGLB(\n url: string,\n automaticallyAdjustCamera: boolean = true,\n scaling: Vector3 = new Vector3(1, 1, 1),\n callback?: (percent: number) => void\n ): Promise<void> {\n this.clearScene();\n return new Promise<void>((resolve, reject) => {\n this._loadGLB(\n url,\n new Vector3(0, 0, 0),\n 0,\n undefined,\n scaling,\n undefined,\n undefined,\n callback\n ).then((glb) => {\n this._currentGLB = glb;\n this._scene.add(this._currentGLB);\n\n let boundingBox = new Box3().setFromObject(this._currentGLB);\n if (automaticallyAdjustCamera) {\n if (\n this.cameraBehaviour.cameraControl instanceof\n AdjustableCameraControl3D\n ) {\n this.glbViewerCameraBehaviour.updateCameraOnItemLoaded(boundingBox);\n }\n }\n this._updateBounds(boundingBox, null, true);\n this._readyForRender();\n resolve();\n }, reject);\n });\n }\n\n public preparePerspectiveImage(\n renderer?: WebGLRenderer,\n width?: number,\n height?: number\n ): Promise<Base64Image> {\n return new Promise<Base64Image>((resolve) => {\n if (!width) {\n width = 1000;\n }\n\n if (!height) {\n height = 1000;\n }\n\n if (!renderer) {\n renderer = new WebGLRenderer({ antialias: true });\n renderer.setSize(width, height);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.autoClear = false;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = BasicShadowMap;\n }\n\n let camera = this.cameraBehaviour.cameraControl.getCamera().clone();\n if (camera instanceof PerspectiveCamera) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n\n this._lightSetting?.removeFromScene();\n let defaultLightSetting = new DefaultLightSetting(this._scene);\n\n renderer.render(this._scene, camera);\n let image = renderer.domElement.toDataURL();\n renderer.domElement.toBlob((blob) => {\n resolve({ image, width, height, blob });\n }, 'image/png');\n\n defaultLightSetting.removeFromScene();\n this._lightSetting?.addToScene();\n });\n }\n\n public adjustCamera(\n position: Vector3,\n yaw: number,\n pitch: number,\n fov: number\n ) {\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n let boundingBox = new Box3().setFromObject(this._scene);\n let bounds = boundingBox.getSize(new Vector3());\n (this.cameraBehaviour.cameraControl as AdjustableCameraControl3D).adjust(\n bounds,\n position,\n yaw,\n pitch,\n fov\n );\n this._requestRender();\n }\n }\n\n public onStart(count: number) {\n this._itemsCount = count;\n this._scene.background = null;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = true;\n }\n console.log('start processing ' + count + ' items');\n }\n\n public onElementFinished(itemsFinished: number) {\n console.log(\n 'processed ' +\n itemsFinished +\n ' of ' +\n this._itemsCount +\n ' items (' +\n Math.round((100 / this._itemsCount) * itemsFinished) +\n '%)'\n );\n }\n\n public onFinished(_zip: any) {\n this._scene.background = this._standardSceneBackgroundColor;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = false;\n }\n }\n\n public clearScene() {\n if (this._currentGLB) {\n this._scene.remove(this._currentGLB);\n dispose(this._currentGLB);\n this._currentGLB = null;\n }\n super.clearScene();\n }\n\n public enableHD() {\n super.enableHD();\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n getBounds(): Box3 {\n if (!this._currentGLB) {\n return null;\n }\n return new Box3().setFromObject(this._currentGLB);\n }\n\n protected get glbViewerCameraBehaviour(): GlbViewerCameraBehaviour {\n return this.cameraBehaviour as GlbViewerCameraBehaviour;\n }\n\n getGeometryBounds(): Box3 {\n return null;\n }\n\n cameraBehaviourChanged() {\n super.cameraBehaviourChanged();\n\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_IN,\n () => {\n this._requestRender();\n },\n this\n );\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_OUT,\n () => {\n this._requestRender();\n },\n this\n );\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this.glbViewerCameraBehaviour.externalApiMoveCamera(cameraParameter);\n }\n\n // info when scene is ready to render, used for testing\n protected _readyForRender() {\n console.log('ready_for_render');\n this._globalCallback.onReadyForRender();\n }\n}\n","import type { Base64Image } from '../../../common-core/src/common-interfaces';\nimport type GLBViewerSceneManager from '../webgl/glb-viewer-scene-manager';\nimport type { RenderEntry } from '../roomle-glb-viewer';\nimport { SRGBColorSpace, Vector3, WebGLRenderer } from 'three';\n\ninterface GLBRenderEntry {\n name: string;\n url: string;\n position: Vector3;\n fov: number;\n yaw: number;\n pitch: number;\n}\n\nexport interface GLBRenderWorkerListener {\n onStart(count: number): void;\n\n onElementFinished(finishedElements: number): void;\n\n onFinished(zip: any): void;\n}\n\nexport default class GLBRenderWorker {\n private _sceneManager: GLBViewerSceneManager;\n private _entries: GLBRenderEntry[];\n\n private _resolve: (zip: any) => void;\n\n private _prefix = 'https://furniture.roomle.com/3d/glb/';\n\n private _renderer: WebGLRenderer;\n private _width: number;\n private _height: number;\n\n private _listeners: Set<GLBRenderWorkerListener> =\n new Set<GLBRenderWorkerListener>();\n private _finishedItems: number = 0;\n\n private _zip: any;\n\n constructor(\n sceneManager: GLBViewerSceneManager,\n width: number,\n height: number\n ) {\n this._sceneManager = sceneManager;\n\n this._renderer = new WebGLRenderer({ antialias: true, alpha: true });\n this._width = width;\n this._height = height;\n this._renderer.setSize(width, height);\n this._renderer.setClearColor(0xffffff, 0);\n this._renderer.outputColorSpace = SRGBColorSpace;\n }\n\n public addListener(listener: GLBRenderWorkerListener) {\n this._listeners.add(listener);\n }\n\n public removeListener(listener: GLBRenderWorkerListener) {\n this._listeners.delete(listener);\n }\n\n public start(entries: RenderEntry[]): Promise<any> {\n this._entries = [];\n entries.forEach((entry) => {\n this._entries.push(this._transform(entry)); // {name: url.replace('.glb', '.png'), url: this._prefix + url}\n });\n this._finishedItems = 0;\n this._listeners.forEach((listener) =>\n listener.onStart(this._entries.length)\n );\n this._zip = new (window as any).JSZip();\n this._doNextEntry();\n return new Promise<any>((resolve) => {\n this._resolve = resolve;\n });\n }\n\n private _transform(entry: RenderEntry): GLBRenderEntry {\n return {\n name: entry.path.replace('.glb', '.png'),\n url: this._prefix + entry.path,\n position: new Vector3(\n entry.camera.position.x,\n entry.camera.position.z,\n -entry.camera.position.y\n ),\n fov: entry.camera.fieldOfView * 2, // * 2 because Atti suggested it after all images were cut on all sides\n yaw: entry.camera.rotation.z,\n pitch: entry.camera.rotation.x,\n };\n }\n\n private _doNextEntry() {\n if (this._entries.length === 0) {\n this._listeners.forEach((listener) => listener.onFinished(this._zip));\n this._resolve(this._zip);\n } else {\n this._processEntry(this._entries[0]);\n }\n }\n\n private _processEntry(entry: GLBRenderEntry) {\n this._sceneManager.loadGLB(entry.url, false, undefined).then(() => {\n this._sceneManager.adjustCamera(\n entry.position,\n entry.yaw,\n entry.pitch,\n entry.fov\n );\n this._sceneManager\n .preparePerspectiveImage(this._renderer, this._width, this._height)\n .then((base64Image) => {\n this._entryFinished(entry, base64Image);\n });\n });\n }\n\n private _entryFinished(entry: GLBRenderEntry, base64Image: Base64Image) {\n let index = this._entries.indexOf(entry);\n if (index > -1) {\n this._entries.splice(index, 1);\n }\n this._finishedItems++;\n this._listeners.forEach((listener) =>\n listener.onElementFinished(this._finishedItems)\n );\n this._zip.file(entry.name, base64Image.blob);\n this._doNextEntry();\n }\n}\n","export default \"__VITE_ASSET__C2yIGV3r__\"","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 GLBViewerSceneManager from './webgl/glb-viewer-scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n Position3,\n} from '../../common-core/src/common-interfaces';\nimport GLBRenderWorker from './services/glb-render-worker';\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 { JS_ZIP_FILE_NAME } from '../../common-core/src/static-files/libs';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport type {\n GlobalInitDataDefinition,\n InitDataDefinition,\n} from '../../common-core/src/utils/shims';\nimport type GlobalInitData from '../../common-core/src/utils/global-init-data';\nimport type RapiAccess from '../../common-core/src/rapi-access';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport { download } from '../../common-core/src/utils/common-utils';\nimport type { Scene } from 'three';\nimport { Vector3 } from 'three';\nimport type IdbManager from '../../common-core/src/services/idb-manager';\nimport type { CameraParameter } from '../../common-core/src/cameracontrol/camera-control';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\ninterface RenderCameraInformation {\n fieldOfView: number;\n rotation: Position3;\n position: Position3;\n}\n\nexport declare interface RenderEntry {\n path: string;\n camera: RenderCameraInformation;\n}\n\nexport class GlbViewerUiCallbacks {}\n\nexport default class RoomleGLBViewer\n implements GlobalAPI, Context, ExternalEmbeddable<GlbViewerUiCallbacks>\n{\n public _creator_: string;\n\n @inject\n private _rapiAccess: RapiAccess;\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 _initData: InitData;\n\n @inject\n private _globalInitData: GlobalInitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: GLBViewerSceneManager;\n\n private _currentIdOrUrl: string = null;\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(\n element: HTMLElement,\n initData?: InitDataDefinition\n ): Promise<void> {\n this.setOverrides(initData);\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 GLBViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n // this.loadGLB('https://furniture.roomle.com/3d/glb/furniture/vitra/41206600/41206600.glb');\n this._sceneManager.enableHD();\n resolve();\n }\n\n /**\n * Remove the current glb from the scene if it exists\n */\n public clearScene() {\n this._sceneManager.clearScene();\n }\n\n /**\n * Loads the GLB from the given URL Param\n * @param url\n * @param scaling defaults to 1\n * @param callback loading percent between 0 and 1\n */\n public loadGLB(\n url: string,\n scaling = 1,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = url;\n this._rapiAccess.trackView(url);\n return this._sceneManager.loadGLB(\n url,\n true,\n new Vector3(scaling, scaling, scaling),\n callback\n );\n }\n\n /**\n * Loads the glb asset from the static item\n * @param staticItemId\n * @param callback loading percent between 0 and 1\n */\n public loadStaticItem(\n staticItemId: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = staticItemId;\n this._rapiAccess.trackView(staticItemId);\n return this._sceneManager.loadStaticItem(staticItemId, callback);\n }\n\n /**\n * Returns the current item id or url of the loaded object\n */\n public getCurrentId(): string {\n return this._currentIdOrUrl;\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-loaderEnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public preparePerspectiveImage(): Promise<Base64Image> {\n return this._sceneManager.preparePerspectiveImage();\n }\n\n public processRenderList(\n jsonString: string,\n width: number = 320,\n height: number = 320\n ) {\n const object = JSON.parse(jsonString);\n this._scriptLoader.fetch(JS_ZIP_FILE_NAME, { id: 'jszip-js' }).then(() => {\n const worker = new GLBRenderWorker(this._sceneManager, width, height);\n worker.addListener(this._sceneManager);\n worker.start(object.items).then((zip: any) => {\n zip.generateAsync({ type: 'blob' }).then((content: File) => {\n download('content.zip', URL.createObjectURL(content));\n worker.removeListener(this._sceneManager);\n });\n });\n });\n }\n\n public setOverrides(\n initData: Partial<InitDataDefinition & GlobalInitDataDefinition> | InitData\n ): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n this._globalInitData.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 {\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 public get callbacks() {\n return {};\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 public exportCanvasScreenshot(quality?: number): Promise<string> {\n return this._sceneManager.exportCanvasScreenshot(quality);\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this._sceneManager.moveCamera(cameraParameter);\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","import './utils/global-definitions';\nimport Main, { BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport { INJECTABLES } from './utils/injectables';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleGLBViewer from './roomle-glb-viewer';\n\nexport class GlbViewer extends Main {\n private _viewer: RoomleGLBViewer;\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 RoomleGLBViewer(this._context);\n\n if (!window.RoomleGLBViewer) {\n window.RoomleGLBViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleGLBViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.GLB_VIEWER;\n }\n}\n"],"names":["GlbInputManager","InputManager","INJECTABLES","DependencyInjectionAssignment","ScriptLoader","DI_TYPE","Logger","RapiAccess","AdjustableCameraControl3D","CameraControl3D","bounds","position","yaw","pitch","_fov","minVector","Vector3","maxVector","Box3","euler","Euler","quaternion","Quaternion","overrideTarget","delta","GLBViewerLightSetting","LightSetting","scene","oldLightSetting","AmbientLight","Color","gui","getGUI","ambiLight","color","GLBViewerSceneManager","SceneManager","creator","offset","CANVAS_ID","CAMERA_TYPE","DynamicLightSettingLoader","PREDEFINED_LIGHTSETTING","_mode","_offset","GlbViewerCameraBehaviour","id","callback","rapiItem","glbUrl","getGlbUrl","url","automaticallyAdjustCamera","scaling","resolve","reject","glb","boundingBox","renderer","width","height","WebGLRenderer","SRGBColorSpace","BasicShadowMap","camera","PerspectiveCamera","defaultLightSetting","DefaultLightSetting","image","blob","fov","count","itemsFinished","_zip","dispose","CAMERA_EVENT","cameraParameter","__decorateClass","inject","GLBRenderWorker","sceneManager","listener","entries","entry","base64Image","index","JS_ZIP_FILE_NAME","RoomleGLBViewer","element","initData","_reject","staticItemId","sceneSettings","jsonString","object","worker","zip","content","download","params","intensity","rotation","maxLightSources","quality","GlbViewer","Main","RoomleDependencyInjection","BASE_CONTEXT"],"mappings":";;;;;;AAEA,MAAqBA,UAAwBC,EAAa;AAAA;AAE1D;ACKO,MAAMC,IAA+C;AAAA,EAC1D,IAAIC,EAA8B,iBAAiBC,CAAY;AAAA,EAC/D,IAAID;AAAA,IACF;AAAA,IACAH;AAAA,IACAK,EAAQ;AAAA,EAAA;AAAA,EAEV,IAAIF,EAA8B,UAAUG,CAAM;AAAA,EAClD,IAAIH,EAA8B,eAAeI,CAAU;AAC7D;ACfA,MAAqBC,UAAkCC,EAAgB;AAAA,EAAvE,cAAA;AAAA,UAAA,GAAA,SAAA,GACE,KAAO,+BAA+B;AAAA,EAAA;AAAA,EAE/B,OACLC,GACAC,GAEAC,GACAC,GACAC,GACA;AACA,QAAIC,IAAqB,IAAIC,EAAQ,CAACN,EAAO,IAAI,GAAG,GAAG,CAACA,EAAO,IAAI,CAAC,GAChEO,IAAqB,IAAID,EAAQN,EAAO,IAAI,GAAGA,EAAO,GAAGA,EAAO,IAAI,CAAC;AACzE,SAAK,eAAe,IAAIQ,EAAKH,GAAWE,CAAS;AAGjD,QAAIE,IAAQ,IAAIC,EAAM,CAAC,KAAK,KAAK,IAAIP,GAAOD,GAAK,GAAG,KAAK,GACrDS,IAAa,IAAIC,IAAa,aAAaH,CAAK;AAEpD,SAAK,QAAQ,uBAAA,GAEb,KAAK,QAAQ,WAAW,KAAKE,CAAU,GACvC,KAAK,QAAQ,SAAS,KAAKV,CAAQ;AAAA,EACrC;AAAA,EAEU,QAAQY,GAA0B;AAC1C,IAAK,KAAK,+BAGR,KAAK,iBAAA,IAFL,MAAM,QAAQA,CAAc;AAAA,EAIhC;AAAA,EAEO,cAAcC,GAAwB;AAC3C,WAAK,KAAK,+BAGD,KAFA,MAAM,cAAcA,CAAK;AAAA,EAIpC;AACF;ACtCA,MAAqBC,UAA8BC,EAAa;AAAA,EAS9D,YAAYC,GAAcC,GAAgC;AACxD,UAAMD,GAAOC,CAAe,GAP9B,KAAQ,UAAU;AAAA,MAChB,cAAc;AAAA,QACZ,OAAO;AAAA,MAAA;AAAA,IACT,GAMA,KAAK,gBAAgB,IAAIC;AAAA,MACvB,IAAIC,EAAM,KAAK,QAAQ,aAAa,KAA4B;AAAA,MAChE;AAAA,IAAA,GAGF,KAAK,WAAA;AAAA,EACP;AAAA,EAEO,aAAmB;AACxB,SAAK,OAAO,IAAI,KAAK,aAAa;AAAA,EACpC;AAAA,EAEO,kBAAwB;AAC7B,SAAK,OAAO,OAAO,KAAK,aAAa;AAAA,EACvC;AAAA,EAEO,SAAe;AACpB,SAAK,gBAAA,GACL,KAAK,WAAA;AAAA,EACP;AAAA,EAEO,UAAgB;AACrB,QAAIC,IAAMC,EAAA;AACV,QAAKD,KAGD,KAAK,eAAe;AACtB,UAAIE,IAAYF,EAAI,UAAU,eAAe;AAC7C,MAAAE,EAAU,IAAS,KAAK,eAAe,SAAS,GAChDA,EACG,IAAS,KAAK,eAAe,WAAW,EACxC,IAAI,CAAC,EACL,IAAI,CAAC,EACL,KAAK,GAAG,GACXA,EACG,SAAS,KAAK,QAAQ,cAAc,OAAO,EAC3C,SAAS,CAACC,MAAkB;AAC3B,aAAK,cAAc,QAAQ,IAAIJ,EAAMI,CAA4B;AAAA,MACnE,CAAC;AAAA,IACL;AAAA,EACF;AACF;;;;;;ACpBA,MAAqBC,UACXC,EAEV;AAAA,EAYE,YAAYC,GAAiBC,GAAsB;AACjD,UAAMD,GAASC,GAAQC,EAAU,KAAKC,EAAY,SAAS,GAH7D,KAAQ,cAAc,GAIpB,KAAK,gCAAgC,KAAK,OAAO,YAC7C,KAAK,UAAU,gBACb,KAAK,UAAU,aAAa,cAAc,IAC5C,KAAK;AAAA,MACHC,EAA0B;AAAA,QACxB;AAAA,QACAC,EAAwB;AAAA,MAAA;AAAA,IAC1B,KAGF,QAAQ;AAAA,MACN;AAAA,IAAA,GAEF,KAAK,gBAAgB,IAAIjB,EAAsB,KAAK,MAAM;AAAA,EAGhE;AAAA,EAEU,oBACRkB,GACAC,GACA;AACA,SAAK;AAAA,MACH,IAAIC;AAAA,QACF,IAAIrC;AAAA,UACF,KAAK;AAAA,UACL,KAAK,iBAAA;AAAA,UACL;AAAA,QAAA;AAAA,QAEF,KAAK;AAAA,MAAA;AAAA,IACP;AAAA,EAEJ;AAAA,EAEU,mBAAiC;AACzC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,eACXsC,GACAC,GACe;AACf,UAAMC,IAAW,MAAM,KAAK,YAAY,QAAQF,CAAE;AAClD,QAAIE,EAAS;AACX,aAAO,QAAQ,OAAA;AAEjB,UAAMC,IAASC,EAAUF,CAAQ;AACjC,WAAKC,IAGE,KAAK,QAAQA,GAAQ,IAAM,QAAWF,CAAQ,IAF5C,QAAQ,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAAA,EAG3D;AAAA,EAEO,QACLI,GACAC,IAAqC,IACrCC,IAAmB,IAAIrC,EAAQ,GAAG,GAAG,CAAC,GACtC+B,GACe;AACf,gBAAK,WAAA,GACE,IAAI,QAAc,CAACO,GAASC,MAAW;AAC5C,WAAK;AAAA,QACHJ;AAAA,QACA,IAAInC,EAAQ,GAAG,GAAG,CAAC;AAAA,QACnB;AAAA,QACA;AAAA,QACAqC;AAAA,QACA;AAAA,QACA;AAAA,QACAN;AAAA,MAAA,EACA,KAAK,CAACS,MAAQ;AACd,aAAK,cAAcA,GACnB,KAAK,OAAO,IAAI,KAAK,WAAW;AAEhC,YAAIC,IAAc,IAAIvC,EAAA,EAAO,cAAc,KAAK,WAAW;AAC3D,QAAIkC,KAEA,KAAK,gBAAgB,yBACrB5C,KAEA,KAAK,yBAAyB,yBAAyBiD,CAAW,GAGtE,KAAK,cAAcA,GAAa,MAAM,EAAI,GAC1C,KAAK,gBAAA,GACLH,EAAA;AAAA,MACF,GAAGC,CAAM;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEO,wBACLG,GACAC,GACAC,GACsB;AACtB,WAAO,IAAI,QAAqB,CAACN,MAAY;AAC3C,MAAKK,MACHA,IAAQ,MAGLC,MACHA,IAAS,MAGNF,MACHA,IAAW,IAAIG,EAAc,EAAE,WAAW,IAAM,GAChDH,EAAS,QAAQC,GAAOC,CAAM,GAC9BF,EAAS,mBAAmBI,GAC5BJ,EAAS,YAAY,IACrBA,EAAS,UAAU,UAAU,IAC7BA,EAAS,UAAU,OAAOK;AAG5B,UAAIC,IAAS,KAAK,gBAAgB,cAAc,UAAA,EAAY,MAAA;AAC5D,MAAIA,aAAkBC,MACpBD,EAAO,SAASL,IAAQC,GACxBI,EAAO,uBAAA,IAGT,KAAK,eAAe,gBAAA;AACpB,UAAIE,IAAsB,IAAIC,EAAoB,KAAK,MAAM;AAE7D,MAAAT,EAAS,OAAO,KAAK,QAAQM,CAAM;AACnC,UAAII,IAAQV,EAAS,WAAW,UAAA;AAChC,MAAAA,EAAS,WAAW,OAAO,CAACW,MAAS;AACnC,QAAAf,EAAQ,EAAE,OAAAc,GAAO,OAAAT,GAAO,QAAAC,GAAQ,MAAAS,GAAM;AAAA,MACxC,GAAG,WAAW,GAEdH,EAAoB,gBAAA,GACpB,KAAK,eAAe,WAAA;AAAA,IACtB,CAAC;AAAA,EACH;AAAA,EAEO,aACLvD,GACAC,GACAC,GACAyD,GACA;AACA,QACE,KAAK,gBAAgB,yBAAyB9D,GAC9C;AAEA,UAAIE,IADc,IAAIQ,EAAA,EAAO,cAAc,KAAK,MAAM,EAC7B,QAAQ,IAAIF,GAAS;AAC7C,WAAK,gBAAgB,cAA4C;AAAA,QAChEN;AAAA,QACAC;AAAA,QACAC;AAAA,QACAC;AAAA,QACAyD;AAAA,MAAA,GAEF,KAAK,eAAA;AAAA,IACP;AAAA,EACF;AAAA,EAEO,QAAQC,GAAe;AAC5B,SAAK,cAAcA,GACnB,KAAK,OAAO,aAAa,MAEvB,KAAK,gBAAgB,yBAAyB/D,MAG5C,KAAK,gBAAgB,cACrB,+BAA+B,KAEnC,QAAQ,IAAI,sBAAsB+D,IAAQ,QAAQ;AAAA,EACpD;AAAA,EAEO,kBAAkBC,GAAuB;AAC9C,YAAQ;AAAA,MACN,eACEA,IACA,SACA,KAAK,cACL,aACA,KAAK,MAAO,MAAM,KAAK,cAAeA,CAAa,IACnD;AAAA,IAAA;AAAA,EAEN;AAAA,EAEO,WAAWC,GAAW;AAC3B,SAAK,OAAO,aAAa,KAAK,+BAE5B,KAAK,gBAAgB,yBAAyBjE,MAG5C,KAAK,gBAAgB,cACrB,+BAA+B;AAAA,EAErC;AAAA,EAEO,aAAa;AAClB,IAAI,KAAK,gBACP,KAAK,OAAO,OAAO,KAAK,WAAW,GACnCkE,EAAQ,KAAK,WAAW,GACxB,KAAK,cAAc,OAErB,MAAM,WAAA;AAAA,EACR;AAAA,EAEO,WAAW;AAChB,UAAM,SAAA;AAAA,EACR;AAAA,EAEO,eAAqB;AAAA,EAE5B;AAAA,EAEA,YAAkB;AAChB,WAAK,KAAK,cAGH,IAAIxD,EAAA,EAAO,cAAc,KAAK,WAAW,IAFvC;AAAA,EAGX;AAAA,EAEA,IAAc,2BAAqD;AACjE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,oBAA0B;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,yBAAyB;AACvB,UAAM,uBAAA,GAEN,KAAK,gBAAgB,cAAc;AAAA,MACjCyD,EAAa;AAAA,MACb,MAAM;AACJ,aAAK,eAAA;AAAA,MACP;AAAA,MACA;AAAA,IAAA,GAEF,KAAK,gBAAgB,cAAc;AAAA,MACjCA,EAAa;AAAA,MACb,MAAM;AACJ,aAAK,eAAA;AAAA,MACP;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,MAAa,WAAWC,GAAiD;AACvE,WAAO,KAAK,yBAAyB,sBAAsBA,CAAe;AAAA,EAC5E;AAAA;AAAA,EAGU,kBAAkB;AAC1B,YAAQ,IAAI,kBAAkB,GAC9B,KAAK,gBAAgB,iBAAA;AAAA,EACvB;AACF;AAvQUC,EAAA;AAAA,EADPC;AAAA,GAJkB3C,EAKX,WAAA,kBAAA;AAGA0C,EAAA;AAAA,EADPC;AAAA,GAPkB3C,EAQX,WAAA,aAAA;ACxBV,MAAqB4C,EAAgB;AAAA,EAkBnC,YACEC,GACArB,GACAC,GACA;AAhBF,SAAQ,UAAU,wCAMlB,KAAQ,iCACF,IAAA,GACN,KAAQ,iBAAyB,GAS/B,KAAK,gBAAgBoB,GAErB,KAAK,YAAY,IAAInB,EAAc,EAAE,WAAW,IAAM,OAAO,IAAM,GACnE,KAAK,SAASF,GACd,KAAK,UAAUC,GACf,KAAK,UAAU,QAAQD,GAAOC,CAAM,GACpC,KAAK,UAAU,cAAc,UAAU,CAAC,GACxC,KAAK,UAAU,mBAAmBE;AAAA,EACpC;AAAA,EAEO,YAAYmB,GAAmC;AACpD,SAAK,WAAW,IAAIA,CAAQ;AAAA,EAC9B;AAAA,EAEO,eAAeA,GAAmC;AACvD,SAAK,WAAW,OAAOA,CAAQ;AAAA,EACjC;AAAA,EAEO,MAAMC,GAAsC;AACjD,gBAAK,WAAW,CAAA,GAChBA,EAAQ,QAAQ,CAACC,MAAU;AACzB,WAAK,SAAS,KAAK,KAAK,WAAWA,CAAK,CAAC;AAAA,IAC3C,CAAC,GACD,KAAK,iBAAiB,GACtB,KAAK,WAAW;AAAA,MAAQ,CAACF,MACvBA,EAAS,QAAQ,KAAK,SAAS,MAAM;AAAA,IAAA,GAEvC,KAAK,OAAO,IAAK,OAAe,MAAA,GAChC,KAAK,aAAA,GACE,IAAI,QAAa,CAAC3B,MAAY;AACnC,WAAK,WAAWA;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEQ,WAAW6B,GAAoC;AACrD,WAAO;AAAA,MACL,MAAMA,EAAM,KAAK,QAAQ,QAAQ,MAAM;AAAA,MACvC,KAAK,KAAK,UAAUA,EAAM;AAAA,MAC1B,UAAU,IAAInE;AAAA,QACZmE,EAAM,OAAO,SAAS;AAAA,QACtBA,EAAM,OAAO,SAAS;AAAA,QACtB,CAACA,EAAM,OAAO,SAAS;AAAA,MAAA;AAAA,MAEzB,KAAKA,EAAM,OAAO,cAAc;AAAA;AAAA,MAChC,KAAKA,EAAM,OAAO,SAAS;AAAA,MAC3B,OAAOA,EAAM,OAAO,SAAS;AAAA,IAAA;AAAA,EAEjC;AAAA,EAEQ,eAAe;AACrB,IAAI,KAAK,SAAS,WAAW,KAC3B,KAAK,WAAW,QAAQ,CAACF,MAAaA,EAAS,WAAW,KAAK,IAAI,CAAC,GACpE,KAAK,SAAS,KAAK,IAAI,KAEvB,KAAK,cAAc,KAAK,SAAS,CAAC,CAAC;AAAA,EAEvC;AAAA,EAEQ,cAAcE,GAAuB;AAC3C,SAAK,cAAc,QAAQA,EAAM,KAAK,IAAO,MAAS,EAAE,KAAK,MAAM;AACjE,WAAK,cAAc;AAAA,QACjBA,EAAM;AAAA,QACNA,EAAM;AAAA,QACNA,EAAM;AAAA,QACNA,EAAM;AAAA,MAAA,GAER,KAAK,cACF,wBAAwB,KAAK,WAAW,KAAK,QAAQ,KAAK,OAAO,EACjE,KAAK,CAACC,MAAgB;AACrB,aAAK,eAAeD,GAAOC,CAAW;AAAA,MACxC,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEQ,eAAeD,GAAuBC,GAA0B;AACtE,QAAIC,IAAQ,KAAK,SAAS,QAAQF,CAAK;AACvC,IAAIE,IAAQ,MACV,KAAK,SAAS,OAAOA,GAAO,CAAC,GAE/B,KAAK,kBACL,KAAK,WAAW;AAAA,MAAQ,CAACJ,MACvBA,EAAS,kBAAkB,KAAK,cAAc;AAAA,IAAA,GAEhD,KAAK,KAAK,KAAKE,EAAM,MAAMC,EAAY,IAAI,GAC3C,KAAK,aAAA;AAAA,EACP;AACF;ACnIA,MAAAE,KAAe;;;;;;AC4Cf,MAAqBC,EAErB;AAAA,EAkCE,YAAYlD,GAAiB;AAF7B,SAAQ,kBAA0B,MAGhC,KAAK,YAAYA;AAAA,EACnB;AAAA,EAEO,gBAAgBC,GAA4B;AACjD,SAAK,cAAc,gBAAgBA,CAAM;AAAA,EAC3C;AAAA,EAEO,kBAAgC;AACrC,WAAO,KAAK,cAAc,gBAAA;AAAA,EAC5B;AAAA,EAEO,KACLkD,GACAC,GACe;AAIf,WAHA,KAAK,aAAaA,CAAQ,GAC1B,KAAK,WAAW,cAAcD,CAAO,GAEjC,KAAK,iBACP,KAAK,kBAAkB,OAAA,GAChB,QAAQ,QAAA,KAGV,IAAI,QAAc,KAAK,qBAAqB,KAAK,IAAI,CAAC;AAAA,EAC/D;AAAA,EAEQ,qBAAqBlC,GAAqBoC,GAAqB;AACrE,SAAK,gBAAgB,IAAIvD,EAAsB,KAAK,WAAW;AAAA,MAC7D,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACT,GAED,KAAK,cAAc,SAAA,GACnBmB,EAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKO,aAAa;AAClB,SAAK,cAAc,WAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,QACLH,GACAE,IAAU,GACVN,GACe;AACf,gBAAK,kBAAkBI,GACvB,KAAK,YAAY,UAAUA,CAAG,GACvB,KAAK,cAAc;AAAA,MACxBA;AAAA,MACA;AAAA,MACA,IAAInC,EAAQqC,GAASA,GAASA,CAAO;AAAA,MACrCN;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,eACL4C,GACA5C,GACe;AACf,gBAAK,kBAAkB4C,GACvB,KAAK,YAAY,UAAUA,CAAY,GAChC,KAAK,cAAc,eAAeA,GAAc5C,CAAQ;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA,EAKO,eAAuB;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,iBAAiB6C,GAA6C;AACnE,WAAO,KAAK,cAAc,kBAAkBA,CAAa;AAAA,EAC3D;AAAA,EAEO,0BAAgD;AACrD,WAAO,KAAK,cAAc,wBAAA;AAAA,EAC5B;AAAA,EAEO,kBACLC,GACAlC,IAAgB,KAChBC,IAAiB,KACjB;AACA,UAAMkC,IAAS,KAAK,MAAMD,CAAU;AACpC,SAAK,cAAc,MAAMP,IAAkB,EAAE,IAAI,WAAA,CAAY,EAAE,KAAK,MAAM;AACxE,YAAMS,IAAS,IAAIhB,EAAgB,KAAK,eAAepB,GAAOC,CAAM;AACpE,MAAAmC,EAAO,YAAY,KAAK,aAAa,GACrCA,EAAO,MAAMD,EAAO,KAAK,EAAE,KAAK,CAACE,MAAa;AAC5C,QAAAA,EAAI,cAAc,EAAE,MAAM,OAAA,CAAQ,EAAE,KAAK,CAACC,MAAkB;AAC1D,UAAAC,EAAS,eAAe,IAAI,gBAAgBD,CAAO,CAAC,GACpDF,EAAO,eAAe,KAAK,aAAa;AAAA,QAC1C,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEO,aACLN,GACM;AACN,IAAKA,MAGL,KAAK,UAAU,aAAaA,CAAQ,GACpC,KAAK,gBAAgB,aAAaA,CAAQ;AAAA,EAC5C;AAAA,EAEO,aAAmB;AACxB,SAAK,cAAc,aAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,UAAgB;AAAA,EAEvB;AAAA,EAEO,WAAWD,GAAsB;AACtC,SAAK,WAAW,cAAcA,CAAO,GACrC,KAAK,kBAAkB,OAAA;AAAA,EACzB;AAAA,EAEO,YAAY;AACjB,SAAK,kBAAkB,MAAA;AAAA,EACzB;AAAA,EAEO,UAAU;AACf,SAAK,cAAc,QAAA;AAAA,EACrB;AAAA,EAEA,IAAW,YAAY;AACrB,WAAO,CAAA;AAAA,EACT;AAAA,EAEO,WAAkB;AACvB,WAAO,KAAK,cAAc,SAAA;AAAA,EAC5B;AAAA,EAEO,cAAoB;AACzB,SAAK,cAAc,YAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKO,mBAAkC;AACvC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKO,aAAyB;AAC9B,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,kBAAkBW,GAKhB;AACP,UAAM,EAAE,KAAAhD,GAAK,WAAAiD,GAAW,UAAAC,GAAU,iBAAAC,MAAoBH;AACtD,SAAK,cAAc;AAAA,MACjBhD;AAAA,MACAiD;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEO,uBAAuBC,GAAmC;AAC/D,WAAO,KAAK,cAAc,uBAAuBA,CAAO;AAAA,EAC1D;AAAA,EAEA,MAAa,WAAW3B,GAAiD;AACvE,WAAO,KAAK,cAAc,WAAWA,CAAe;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAW,kBAAkC;AAC3C,WAAO,KAAK;AAAA,EACd;AACF;AAlPUC,EAAA;AAAA,EADPC;AAAA,GALkBS,EAMX,WAAA,aAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GARkBS,EASX,WAAA,YAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GAXkBS,EAYX,WAAA,eAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GAdkBS,EAeX,WAAA,mBAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GAjBkBS,EAkBX,WAAA,WAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GApBkBS,EAqBX,WAAA,iBAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GAvBkBS,EAwBX,WAAA,iBAAA;AAGAV,EAAA;AAAA,EADPC;AAAA,GA1BkBS,EA2BX,WAAA,gBAAA;AAGEV,EAAA;AAAA,EADTC;AAAA,GA7BkBS,EA8BT,WAAA,aAAA;ACnEL,MAAMiB,WAAkBC,EAAK;AAAA,EAGxB,eAAqB;AAAA,EAE/B;AAAA,EAEU,oBAA0B;AAClC,IAAAC,EAA0B,MAAMxG,CAAW,GAC3C,KAAK,OAAe,UAAU,KAAK,QAAQ;AAAA,EAC7C;AAAA,EAEU,iBAAuB;AAC/B,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAAA,EAEU,sBAA4B;AACpC,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAAA,EAEA,MAAgB,eAA8B;AAC5C,SAAK,UAAU,IAAIqF,EAAgB,KAAK,QAAQ,GAE3C,OAAO,oBACV,OAAO,kBAAkB,KAAK;AAAA,EAElC;AAAA,EAEO,SAA0B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,iBAAyB;AACjC,WAAOoB,EAAa;AAAA,EACtB;AACF;","x_google_ignoreList":[6]}
|
|
1
|
+
{"version":3,"file":"glb-viewer-CRfJISyp.mjs","sources":["../../packages/glb-viewer-core/src/input/glb-input-manager.ts","../../packages/glb-viewer-core/src/utils/injectables.ts","../../packages/glb-viewer-core/src/camera-control/adjustable-camera-control-3d.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-light-setting.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-scene-manager.ts","../../packages/glb-viewer-core/src/services/glb-render-worker.ts","../../../../node_modules/jszip/dist/jszip.min.js?no-inline?url","../../packages/glb-viewer-core/src/roomle-glb-viewer.ts","../../packages/glb-viewer-core/src/glb-viewer.ts"],"sourcesContent":["import InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class GlbInputManager extends InputManager {\n //move on, nothing to see here\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 GlbInputManager from '../input/glb-input-manager';\nimport RapiAccess from '../../../common-core/src/rapi-access';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'glb-input-manager',\n GlbInputManager,\n DI_TYPE.CONTEXT\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n];\n","import CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport { Box3, Euler, Quaternion, Vector3 } from 'three';\n\nexport default class AdjustableCameraControl3D extends CameraControl3D {\n public shouldIgnoreStandardBehavior = false;\n\n public adjust(\n bounds: Vector3,\n position: Vector3,\n\n yaw: number,\n pitch: number,\n _fov: number\n ) {\n let minVector: Vector3 = new Vector3(-bounds.x / 2, 0, -bounds.z / 2);\n let maxVector: Vector3 = new Vector3(bounds.x / 2, bounds.y, bounds.z / 2);\n this._boundingBox = new Box3(minVector, maxVector);\n\n // before applying attis pitch value with have to rotate down, because we assume that attis rotation is upwards\n let euler = new Euler(-Math.PI / 2 + pitch, yaw, 0, 'ZYX');\n let quaternion = new Quaternion().setFromEuler(euler);\n\n this._camera.updateProjectionMatrix();\n\n this._camera.quaternion.copy(quaternion);\n this._camera.position.copy(position);\n }\n\n protected _update(overrideTarget?: Vector3) {\n if (!this.shouldIgnoreStandardBehavior) {\n super._update(overrideTarget);\n } else {\n this._saveYawAndPitch();\n }\n }\n\n public animateCamera(delta: number): boolean {\n if (!this.shouldIgnoreStandardBehavior) {\n return super.animateCamera(delta);\n } else {\n return true;\n }\n }\n}\n","import LightSetting from '../../../common-core/src/lightsetting/light-setting';\nimport { getGUI } from '../../../common-core/src/utils/threejs-utils';\nimport type { ColorRepresentation, Scene } from 'three';\nimport { AmbientLight, Color } from 'three';\n\nexport default class GLBViewerLightSetting extends LightSetting {\n private _ambientLight: AmbientLight;\n\n private _params = {\n ambientLight: {\n color: '#ffffff',\n },\n };\n\n constructor(scene: Scene, oldLightSetting?: LightSetting) {\n super(scene, oldLightSetting);\n\n this._ambientLight = new AmbientLight(\n new Color(this._params.ambientLight.color as ColorRepresentation),\n 0.5\n );\n\n this.addToScene();\n }\n\n public addToScene(): void {\n this._scene.add(this._ambientLight);\n }\n\n public removeFromScene(): void {\n this._scene.remove(this._ambientLight);\n }\n\n public reload(): void {\n this.removeFromScene();\n this.addToScene();\n }\n\n public showGUI(): void {\n let gui = getGUI();\n if (!gui) {\n return;\n }\n if (this._ambientLight) {\n let ambiLight = gui.addFolder('Ambient Light');\n ambiLight.add<any>(this._ambientLight, 'visible');\n ambiLight\n .add<any>(this._ambientLight, 'intensity')\n .min(0)\n .max(5)\n .step(0.1);\n ambiLight\n .addColor(this._params.ambientLight, 'color')\n .onChange((color: string) => {\n this._ambientLight.color = new Color(color as ColorRepresentation);\n });\n }\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n} from '../../../common-core/src/common-interfaces';\nimport AdjustableCameraControl3D from '../camera-control/adjustable-camera-control-3d';\nimport type { GLBRenderWorkerListener } from '../services/glb-render-worker';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport type GlbInputManager from '../input/glb-input-manager';\n\nimport DefaultLightSetting from '../../../configurator-core/src/webgl/lightsetting/default-light-setting';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport { dispose } from '../../../common-core/src/utils/threejs-utils';\nimport type RapiAccess from '../../../common-core/src/rapi-access';\nimport { getGlbUrl } from '../../../common-core/src/utils/common-utils';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '../../../common-core/src/types';\nimport {\n BasicShadowMap,\n Box3,\n type Color,\n type Object3D,\n PerspectiveCamera,\n SRGBColorSpace,\n Vector3,\n WebGLRenderer,\n} from 'three';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport GLBViewerLightSetting from './glb-viewer-light-setting';\nimport GlbViewerCameraBehaviour from '../../../common-core/src/cameracontrol/glb-viewer-camera-behaviour';\nimport {\n CAMERA_EVENT,\n type CameraParameter,\n} from '../../../common-core/src/cameracontrol/camera-control';\n\nexport default class GLBViewerSceneManager\n extends SceneManager\n implements GLBRenderWorkerListener\n{\n @inject\n private _glbInputManager: GlbInputManager;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _currentGLB: Object3D;\n private _standardSceneBackgroundColor: Color;\n\n private _itemsCount = 0;\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.GLB, CAMERA_TYPE.CAMERA_3D);\n this._standardSceneBackgroundColor = this._scene.background as Color;\n if (this._initData.legacyLight) {\n if (this._renderer.capabilities.maxTextures > 8) {\n this.loadDynamicLightSetting(\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA\n )\n );\n } else {\n console.warn(\n 'this device has a maximum of 8 texture units thus we are using a simpler light setting'\n );\n this._lightSetting = new GLBViewerLightSetting(this._scene);\n }\n }\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset\n ) {\n this._changeCameraBehaviour(\n new GlbViewerCameraBehaviour(\n new AdjustableCameraControl3D(\n this._creator_,\n this._getInputManager(),\n null\n ),\n this._cameraBehaviourState\n )\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._glbInputManager;\n }\n\n public async loadStaticItem(\n id: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n const rapiItem = await this._rapiAccess.getItem(id);\n if (rapiItem.configuration) {\n return Promise.reject();\n }\n const glbUrl = getGlbUrl(rapiItem);\n if (!glbUrl) {\n return Promise.reject(new Error('GLB Url not detected'));\n }\n return this.loadGLB(glbUrl, true, undefined, callback);\n }\n\n public loadGLB(\n url: string,\n automaticallyAdjustCamera: boolean = true,\n scaling: Vector3 = new Vector3(1, 1, 1),\n callback?: (percent: number) => void\n ): Promise<void> {\n this.clearScene();\n return new Promise<void>((resolve, reject) => {\n this._loadGLB(\n url,\n new Vector3(0, 0, 0),\n 0,\n undefined,\n scaling,\n undefined,\n undefined,\n callback\n ).then((glb) => {\n this._currentGLB = glb;\n this._scene.add(this._currentGLB);\n\n let boundingBox = new Box3().setFromObject(this._currentGLB);\n if (automaticallyAdjustCamera) {\n if (\n this.cameraBehaviour.cameraControl instanceof\n AdjustableCameraControl3D\n ) {\n this.glbViewerCameraBehaviour.updateCameraOnItemLoaded(boundingBox);\n }\n }\n this._updateBounds(boundingBox, null, true);\n this._readyForRender();\n resolve();\n }, reject);\n });\n }\n\n public preparePerspectiveImage(\n renderer?: WebGLRenderer,\n width?: number,\n height?: number\n ): Promise<Base64Image> {\n return new Promise<Base64Image>((resolve) => {\n if (!width) {\n width = 1000;\n }\n\n if (!height) {\n height = 1000;\n }\n\n if (!renderer) {\n renderer = new WebGLRenderer({ antialias: true });\n renderer.setSize(width, height);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.autoClear = false;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = BasicShadowMap;\n }\n\n let camera = this.cameraBehaviour.cameraControl.getCamera().clone();\n if (camera instanceof PerspectiveCamera) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n\n this._lightSetting?.removeFromScene();\n let defaultLightSetting = new DefaultLightSetting(this._scene);\n\n renderer.render(this._scene, camera);\n let image = renderer.domElement.toDataURL();\n renderer.domElement.toBlob((blob) => {\n resolve({ image, width, height, blob });\n }, 'image/png');\n\n defaultLightSetting.removeFromScene();\n this._lightSetting?.addToScene();\n });\n }\n\n public adjustCamera(\n position: Vector3,\n yaw: number,\n pitch: number,\n fov: number\n ) {\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n let boundingBox = new Box3().setFromObject(this._scene);\n let bounds = boundingBox.getSize(new Vector3());\n (this.cameraBehaviour.cameraControl as AdjustableCameraControl3D).adjust(\n bounds,\n position,\n yaw,\n pitch,\n fov\n );\n this._requestRender();\n }\n }\n\n public onStart(count: number) {\n this._itemsCount = count;\n this._scene.background = null;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = true;\n }\n console.log('start processing ' + count + ' items');\n }\n\n public onElementFinished(itemsFinished: number) {\n console.log(\n 'processed ' +\n itemsFinished +\n ' of ' +\n this._itemsCount +\n ' items (' +\n Math.round((100 / this._itemsCount) * itemsFinished) +\n '%)'\n );\n }\n\n public onFinished(_zip: any) {\n this._scene.background = this._standardSceneBackgroundColor;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = false;\n }\n }\n\n public clearScene() {\n if (this._currentGLB) {\n this._scene.remove(this._currentGLB);\n dispose(this._currentGLB);\n this._currentGLB = null;\n }\n super.clearScene();\n }\n\n public enableHD() {\n super.enableHD();\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n getBounds(): Box3 {\n if (!this._currentGLB) {\n return null;\n }\n return new Box3().setFromObject(this._currentGLB);\n }\n\n protected get glbViewerCameraBehaviour(): GlbViewerCameraBehaviour {\n return this.cameraBehaviour as GlbViewerCameraBehaviour;\n }\n\n getGeometryBounds(): Box3 {\n return null;\n }\n\n cameraBehaviourChanged() {\n super.cameraBehaviourChanged();\n\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_IN,\n () => {\n this._requestRender();\n },\n this\n );\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_OUT,\n () => {\n this._requestRender();\n },\n this\n );\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this.glbViewerCameraBehaviour.externalApiMoveCamera(cameraParameter);\n }\n\n // info when scene is ready to render, used for testing\n protected _readyForRender() {\n console.log('ready_for_render');\n this._globalCallback.onReadyForRender();\n }\n}\n","import type { Base64Image } from '../../../common-core/src/common-interfaces';\nimport type GLBViewerSceneManager from '../webgl/glb-viewer-scene-manager';\nimport type { RenderEntry } from '../roomle-glb-viewer';\nimport { SRGBColorSpace, Vector3, WebGLRenderer } from 'three';\n\ninterface GLBRenderEntry {\n name: string;\n url: string;\n position: Vector3;\n fov: number;\n yaw: number;\n pitch: number;\n}\n\nexport interface GLBRenderWorkerListener {\n onStart(count: number): void;\n\n onElementFinished(finishedElements: number): void;\n\n onFinished(zip: any): void;\n}\n\nexport default class GLBRenderWorker {\n private _sceneManager: GLBViewerSceneManager;\n private _entries: GLBRenderEntry[];\n\n private _resolve: (zip: any) => void;\n\n private _prefix = 'https://furniture.roomle.com/3d/glb/';\n\n private _renderer: WebGLRenderer;\n private _width: number;\n private _height: number;\n\n private _listeners: Set<GLBRenderWorkerListener> =\n new Set<GLBRenderWorkerListener>();\n private _finishedItems: number = 0;\n\n private _zip: any;\n\n constructor(\n sceneManager: GLBViewerSceneManager,\n width: number,\n height: number\n ) {\n this._sceneManager = sceneManager;\n\n this._renderer = new WebGLRenderer({ antialias: true, alpha: true });\n this._width = width;\n this._height = height;\n this._renderer.setSize(width, height);\n this._renderer.setClearColor(0xffffff, 0);\n this._renderer.outputColorSpace = SRGBColorSpace;\n }\n\n public addListener(listener: GLBRenderWorkerListener) {\n this._listeners.add(listener);\n }\n\n public removeListener(listener: GLBRenderWorkerListener) {\n this._listeners.delete(listener);\n }\n\n public start(entries: RenderEntry[]): Promise<any> {\n this._entries = [];\n entries.forEach((entry) => {\n this._entries.push(this._transform(entry)); // {name: url.replace('.glb', '.png'), url: this._prefix + url}\n });\n this._finishedItems = 0;\n this._listeners.forEach((listener) =>\n listener.onStart(this._entries.length)\n );\n this._zip = new (window as any).JSZip();\n this._doNextEntry();\n return new Promise<any>((resolve) => {\n this._resolve = resolve;\n });\n }\n\n private _transform(entry: RenderEntry): GLBRenderEntry {\n return {\n name: entry.path.replace('.glb', '.png'),\n url: this._prefix + entry.path,\n position: new Vector3(\n entry.camera.position.x,\n entry.camera.position.z,\n -entry.camera.position.y\n ),\n fov: entry.camera.fieldOfView * 2, // * 2 because Atti suggested it after all images were cut on all sides\n yaw: entry.camera.rotation.z,\n pitch: entry.camera.rotation.x,\n };\n }\n\n private _doNextEntry() {\n if (this._entries.length === 0) {\n this._listeners.forEach((listener) => listener.onFinished(this._zip));\n this._resolve(this._zip);\n } else {\n this._processEntry(this._entries[0]);\n }\n }\n\n private _processEntry(entry: GLBRenderEntry) {\n this._sceneManager.loadGLB(entry.url, false, undefined).then(() => {\n this._sceneManager.adjustCamera(\n entry.position,\n entry.yaw,\n entry.pitch,\n entry.fov\n );\n this._sceneManager\n .preparePerspectiveImage(this._renderer, this._width, this._height)\n .then((base64Image) => {\n this._entryFinished(entry, base64Image);\n });\n });\n }\n\n private _entryFinished(entry: GLBRenderEntry, base64Image: Base64Image) {\n let index = this._entries.indexOf(entry);\n if (index > -1) {\n this._entries.splice(index, 1);\n }\n this._finishedItems++;\n this._listeners.forEach((listener) =>\n listener.onElementFinished(this._finishedItems)\n );\n this._zip.file(entry.name, base64Image.blob);\n this._doNextEntry();\n }\n}\n","export default \"__VITE_ASSET__C2yIGV3r__\"","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 GLBViewerSceneManager from './webgl/glb-viewer-scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n Position3,\n} from '../../common-core/src/common-interfaces';\nimport GLBRenderWorker from './services/glb-render-worker';\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 { JS_ZIP_FILE_NAME } from '../../common-core/src/static-files/libs';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport type {\n GlobalInitDataDefinition,\n InitDataDefinition,\n} from '../../common-core/src/utils/shims';\nimport type GlobalInitData from '../../common-core/src/utils/global-init-data';\nimport type RapiAccess from '../../common-core/src/rapi-access';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport { download } from '../../common-core/src/utils/common-utils';\nimport type { Scene } from 'three';\nimport { Vector3 } from 'three';\nimport type IdbManager from '../../common-core/src/services/idb-manager';\nimport type { CameraParameter } from '../../common-core/src/cameracontrol/camera-control';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\ninterface RenderCameraInformation {\n fieldOfView: number;\n rotation: Position3;\n position: Position3;\n}\n\nexport declare interface RenderEntry {\n path: string;\n camera: RenderCameraInformation;\n}\n\nexport class GlbViewerUiCallbacks {}\n\nexport default class RoomleGLBViewer\n implements GlobalAPI, Context, ExternalEmbeddable<GlbViewerUiCallbacks>\n{\n public _creator_: string;\n\n @inject\n private _rapiAccess: RapiAccess;\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 _initData: InitData;\n\n @inject\n private _globalInitData: GlobalInitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: GLBViewerSceneManager;\n\n private _currentIdOrUrl: string = null;\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(\n element: HTMLElement,\n initData?: InitDataDefinition\n ): Promise<void> {\n this.setOverrides(initData);\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 GLBViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n // this.loadGLB('https://furniture.roomle.com/3d/glb/furniture/vitra/41206600/41206600.glb');\n this._sceneManager.enableHD();\n resolve();\n }\n\n /**\n * Remove the current glb from the scene if it exists\n */\n public clearScene() {\n this._sceneManager.clearScene();\n }\n\n /**\n * Loads the GLB from the given URL Param\n * @param url\n * @param scaling defaults to 1\n * @param callback loading percent between 0 and 1\n */\n public loadGLB(\n url: string,\n scaling = 1,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = url;\n this._rapiAccess.trackView(url);\n return this._sceneManager.loadGLB(\n url,\n true,\n new Vector3(scaling, scaling, scaling),\n callback\n );\n }\n\n /**\n * Loads the glb asset from the static item\n * @param staticItemId\n * @param callback loading percent between 0 and 1\n */\n public loadStaticItem(\n staticItemId: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = staticItemId;\n this._rapiAccess.trackView(staticItemId);\n return this._sceneManager.loadStaticItem(staticItemId, callback);\n }\n\n /**\n * Returns the current item id or url of the loaded object\n */\n public getCurrentId(): string {\n return this._currentIdOrUrl;\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-loaderEnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public preparePerspectiveImage(): Promise<Base64Image> {\n return this._sceneManager.preparePerspectiveImage();\n }\n\n public processRenderList(\n jsonString: string,\n width: number = 320,\n height: number = 320\n ) {\n const object = JSON.parse(jsonString);\n this._scriptLoader.fetch(JS_ZIP_FILE_NAME, { id: 'jszip-js' }).then(() => {\n const worker = new GLBRenderWorker(this._sceneManager, width, height);\n worker.addListener(this._sceneManager);\n worker.start(object.items).then((zip: any) => {\n zip.generateAsync({ type: 'blob' }).then((content: File) => {\n download('content.zip', URL.createObjectURL(content));\n worker.removeListener(this._sceneManager);\n });\n });\n });\n }\n\n public setOverrides(\n initData: Partial<InitDataDefinition & GlobalInitDataDefinition> | InitData\n ): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n this._globalInitData.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 {\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 public get callbacks() {\n return {};\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 public exportCanvasScreenshot(quality?: number): Promise<string> {\n return this._sceneManager.exportCanvasScreenshot(quality);\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this._sceneManager.moveCamera(cameraParameter);\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","import './utils/global-definitions';\nimport Main, { BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport { INJECTABLES } from './utils/injectables';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleGLBViewer from './roomle-glb-viewer';\n\nexport class GlbViewer extends Main {\n private _viewer: RoomleGLBViewer;\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 RoomleGLBViewer(this._context);\n\n if (!window.RoomleGLBViewer) {\n window.RoomleGLBViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleGLBViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.GLB_VIEWER;\n }\n}\n"],"names":["GlbInputManager","InputManager","INJECTABLES","DependencyInjectionAssignment","ScriptLoader","DI_TYPE","Logger","RapiAccess","AdjustableCameraControl3D","CameraControl3D","bounds","position","yaw","pitch","_fov","minVector","Vector3","maxVector","Box3","euler","Euler","quaternion","Quaternion","overrideTarget","delta","GLBViewerLightSetting","LightSetting","scene","oldLightSetting","AmbientLight","Color","gui","getGUI","ambiLight","color","GLBViewerSceneManager","SceneManager","creator","offset","CANVAS_ID","CAMERA_TYPE","DynamicLightSettingLoader","PREDEFINED_LIGHTSETTING","_mode","_offset","GlbViewerCameraBehaviour","id","callback","rapiItem","glbUrl","getGlbUrl","url","automaticallyAdjustCamera","scaling","resolve","reject","glb","boundingBox","renderer","width","height","WebGLRenderer","SRGBColorSpace","BasicShadowMap","camera","PerspectiveCamera","defaultLightSetting","DefaultLightSetting","image","blob","fov","count","itemsFinished","_zip","dispose","CAMERA_EVENT","cameraParameter","__decorateClass","inject","GLBRenderWorker","sceneManager","listener","entries","entry","base64Image","index","JS_ZIP_FILE_NAME","RoomleGLBViewer","element","initData","_reject","staticItemId","sceneSettings","jsonString","object","worker","zip","content","download","params","intensity","rotation","maxLightSources","quality","GlbViewer","Main","RoomleDependencyInjection","BASE_CONTEXT"],"mappings":"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","x_google_ignoreList":[6]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./main-
|
|
2
|
-
//# sourceMappingURL=glb-viewer-
|
|
1
|
+
System.register(["./main-04TgUoiW.js","./script-loader-CT_OImo2.js","./camera-behaviour-vflerxg2.js","./default-light-setting-CEI-Ibbc.js","./main-thread-to-worker-C8MPjAY0.js","./glb-viewer-camera-behaviour-B-1iUjYD.js"],function(W,X){"use strict";var S,d,L,B,M,_,m,E,I,G,f,x,y,j,O,A,v,C,R,D,P,o,F,V,k,T,U,z,N,H,b,Z,q,Y;return{setters:[r=>{S=r.Y,d=r.D,L=r.b,B=r.x,M=r.a,_=r.V,m=r.W,E=r.Q,I=r.Z,G=r._,f=r.$,x=r.a0,y=r.a1,j=r.a2,O=r.a3,A=r.a4,v=r.a5,C=r.a6,R=r.a7,D=r.a8,P=r.a9,o=r.j,F=r.h,V=r.z,k=r.R,T=r.B},r=>{U=r.S},r=>{z=r.C,N=r.L,H=r.S,b=r.b},r=>{Z=r.D},r=>{q=r.C},r=>{Y=r.G}],execute:function(){class r extends S{}const $=[new d("script-loader",U),new d("glb-input-manager",r,L.CONTEXT),new d("logger",B),new d("rapi-access",M)];class p extends z{constructor(){super(...arguments),this.shouldIgnoreStandardBehavior=!1}adjust(e,t,a,i,s){let n=new _(-e.x/2,0,-e.z/2),u=new _(e.x/2,e.y,e.z/2);this._boundingBox=new m(n,u);let g=new I(-Math.PI/2+i,a,0,"ZYX"),ie=new E().setFromEuler(g);this._camera.updateProjectionMatrix(),this._camera.quaternion.copy(ie),this._camera.position.copy(t)}_update(e){this.shouldIgnoreStandardBehavior?this._saveYawAndPitch():super._update(e)}animateCamera(e){return this.shouldIgnoreStandardBehavior?!0:super.animateCamera(e)}}class Q extends N{constructor(e,t){super(e,t),this._params={ambientLight:{color:"#ffffff"}},this._ambientLight=new G(new f(this._params.ambientLight.color),.5),this.addToScene()}addToScene(){this._scene.add(this._ambientLight)}removeFromScene(){this._scene.remove(this._ambientLight)}reload(){this.removeFromScene(),this.addToScene()}showGUI(){let e=x();if(e&&this._ambientLight){let t=e.addFolder("Ambient Light");t.add(this._ambientLight,"visible"),t.add(this._ambientLight,"intensity").min(0).max(5).step(.1),t.addColor(this._params.ambientLight,"color").onChange(a=>{this._ambientLight.color=new f(a)})}}}var K=Object.defineProperty,J=(h,e,t,a)=>{for(var i=void 0,s=h.length-1,n;s>=0;s--)(n=h[s])&&(i=n(e,t,i)||i);return i&&K(e,t,i),i};class w extends H{constructor(e,t){super(e,t,y.GLB,q.CAMERA_3D),this._itemsCount=0,this._standardSceneBackgroundColor=this._scene.background,this._initData.legacyLight&&(this._renderer.capabilities.maxTextures>8?this.loadDynamicLightSetting(j.createDynamicLightSettingSource(null,O.CAMERA)):(console.warn("this device has a maximum of 8 texture units thus we are using a simpler light setting"),this._lightSetting=new Q(this._scene)))}createCameraControl(e,t){this._changeCameraBehaviour(new Y(new p(this._creator_,this._getInputManager(),null),this._cameraBehaviourState))}_getInputManager(){return this._glbInputManager}async loadStaticItem(e,t){const a=await this._rapiAccess.getItem(e);if(a.configuration)return Promise.reject();const i=A(a);return i?this.loadGLB(i,!0,void 0,t):Promise.reject(new Error("GLB Url not detected"))}loadGLB(e,t=!0,a=new _(1,1,1),i){return this.clearScene(),new Promise((s,n)=>{this._loadGLB(e,new _(0,0,0),0,void 0,a,void 0,void 0,i).then(u=>{this._currentGLB=u,this._scene.add(this._currentGLB);let g=new m().setFromObject(this._currentGLB);t&&this.cameraBehaviour.cameraControl instanceof p&&this.glbViewerCameraBehaviour.updateCameraOnItemLoaded(g),this._updateBounds(g,null,!0),this._readyForRender(),s()},n)})}preparePerspectiveImage(e,t,a){return new Promise(i=>{t||(t=1e3),a||(a=1e3),e||(e=new v({antialias:!0}),e.setSize(t,a),e.outputColorSpace=C,e.autoClear=!1,e.shadowMap.enabled=!0,e.shadowMap.type=R);let s=this.cameraBehaviour.cameraControl.getCamera().clone();s instanceof D&&(s.aspect=t/a,s.updateProjectionMatrix()),this._lightSetting?.removeFromScene();let n=new Z(this._scene);e.render(this._scene,s);let u=e.domElement.toDataURL();e.domElement.toBlob(g=>{i({image:u,width:t,height:a,blob:g})},"image/png"),n.removeFromScene(),this._lightSetting?.addToScene()})}adjustCamera(e,t,a,i){if(this.cameraBehaviour.cameraControl instanceof p){let n=new m().setFromObject(this._scene).getSize(new _);this.cameraBehaviour.cameraControl.adjust(n,e,t,a,i),this._requestRender()}}onStart(e){this._itemsCount=e,this._scene.background=null,this.cameraBehaviour.cameraControl instanceof p&&(this.cameraBehaviour.cameraControl.shouldIgnoreStandardBehavior=!0),console.log("start processing "+e+" items")}onElementFinished(e){console.log("processed "+e+" of "+this._itemsCount+" items ("+Math.round(100/this._itemsCount*e)+"%)")}onFinished(e){this._scene.background=this._standardSceneBackgroundColor,this.cameraBehaviour.cameraControl instanceof p&&(this.cameraBehaviour.cameraControl.shouldIgnoreStandardBehavior=!1)}clearScene(){this._currentGLB&&(this._scene.remove(this._currentGLB),P(this._currentGLB),this._currentGLB=null),super.clearScene()}enableHD(){super.enableHD()}sceneChanged(){}getBounds(){return this._currentGLB?new m().setFromObject(this._currentGLB):null}get glbViewerCameraBehaviour(){return this.cameraBehaviour}getGeometryBounds(){return null}cameraBehaviourChanged(){super.cameraBehaviourChanged(),this.cameraBehaviour.cameraControl.addEventListener(b.ZOOM_IN,()=>{this._requestRender()},this),this.cameraBehaviour.cameraControl.addEventListener(b.ZOOM_OUT,()=>{this._requestRender()},this)}async moveCamera(e){return this.glbViewerCameraBehaviour.externalApiMoveCamera(e)}_readyForRender(){console.log("ready_for_render"),this._globalCallback.onReadyForRender()}}J([o],w.prototype,"_glbInputManager"),J([o],w.prototype,"_rapiAccess");class ee{constructor(e,t,a){this._prefix="https://furniture.roomle.com/3d/glb/",this._listeners=new Set,this._finishedItems=0,this._sceneManager=e,this._renderer=new v({antialias:!0,alpha:!0}),this._width=t,this._height=a,this._renderer.setSize(t,a),this._renderer.setClearColor(16777215,0),this._renderer.outputColorSpace=C}addListener(e){this._listeners.add(e)}removeListener(e){this._listeners.delete(e)}start(e){return this._entries=[],e.forEach(t=>{this._entries.push(this._transform(t))}),this._finishedItems=0,this._listeners.forEach(t=>t.onStart(this._entries.length)),this._zip=new window.JSZip,this._doNextEntry(),new Promise(t=>{this._resolve=t})}_transform(e){return{name:e.path.replace(".glb",".png"),url:this._prefix+e.path,position:new _(e.camera.position.x,e.camera.position.z,-e.camera.position.y),fov:e.camera.fieldOfView*2,yaw:e.camera.rotation.z,pitch:e.camera.rotation.x}}_doNextEntry(){this._entries.length===0?(this._listeners.forEach(e=>e.onFinished(this._zip)),this._resolve(this._zip)):this._processEntry(this._entries[0])}_processEntry(e){this._sceneManager.loadGLB(e.url,!1,void 0).then(()=>{this._sceneManager.adjustCamera(e.position,e.yaw,e.pitch,e.fov),this._sceneManager.preparePerspectiveImage(this._renderer,this._width,this._height).then(t=>{this._entryFinished(e,t)})})}_entryFinished(e,t){let a=this._entries.indexOf(e);a>-1&&this._entries.splice(a,1),this._finishedItems++,this._listeners.forEach(i=>i.onElementFinished(this._finishedItems)),this._zip.file(e.name,t.blob),this._doNextEntry()}}const te=""+new URL("jszip.min.js",X.meta.url).href;var re=Object.defineProperty,l=(h,e,t,a)=>{for(var i=void 0,s=h.length-1,n;s>=0;s--)(n=h[s])&&(i=n(e,t,i)||i);return i&&re(e,t,i),i};class c{constructor(e){this._currentIdOrUrl=null,this._creator_=e}setCameraOffset(e){this._sceneManager.setCameraOffset(e)}getCameraOffset(){return this._sceneManager.getCameraOffset()}init(e,t){return this.setOverrides(t),this._domHelper.setDomElement(e),this._sceneManager?(this._lifeCycleManager.resume(),Promise.resolve()):new Promise(this._initPromiseCallback.bind(this))}_initPromiseCallback(e,t){this._sceneManager=new w(this._creator_,{left:0,top:1,right:1,bottom:0}),this._sceneManager.enableHD(),e()}clearScene(){this._sceneManager.clearScene()}loadGLB(e,t=1,a){return this._currentIdOrUrl=e,this._rapiAccess.trackView(e),this._sceneManager.loadGLB(e,!0,new _(t,t,t),a)}loadStaticItem(e,t){return this._currentIdOrUrl=e,this._rapiAccess.trackView(e),this._sceneManager.loadStaticItem(e,t)}getCurrentId(){return this._currentIdOrUrl}loadSceneSetting(e){return this._sceneManager.loadSceneSettings(e)}preparePerspectiveImage(){return this._sceneManager.preparePerspectiveImage()}processRenderList(e,t=320,a=320){const i=JSON.parse(e);this._scriptLoader.fetch(te,{id:"jszip-js"}).then(()=>{const s=new ee(this._sceneManager,t,a);s.addListener(this._sceneManager),s.start(i.items).then(n=>{n.generateAsync({type:"blob"}).then(u=>{F("content.zip",URL.createObjectURL(u)),s.removeListener(this._sceneManager)})})})}setOverrides(e){e&&(this._initData.setOverrides(e),this._globalInitData.setOverrides(e))}updateSize(){this._sceneManager.updateCamera()}getMain(){}resumeTest(e){this._domHelper.setDomElement(e),this._lifeCycleManager.resume()}pauseTest(){this._lifeCycleManager.pause()}showGUI(){this._sceneManager.showGUI()}get callbacks(){return{}}getScene(){return this._sceneManager.getScene()}updateScene(){this._sceneManager.updateScene()}getUnitFormatter(){return this._unitFormatter}getStorage(){return this._idbManager}setEnvironmentMap(e){const{url:t,intensity:a,rotation:i,maxLightSources:s}=e;this._sceneManager.setEnvironmentMap(t,a,i,s)}exportCanvasScreenshot(e){return this._sceneManager.exportCanvasScreenshot(e)}async moveCamera(e){return this._sceneManager.moveCamera(e)}get globalCallbacks(){return this._globalCallback}}l([o],c.prototype,"_rapiAccess"),l([o],c.prototype,"_domHelper"),l([o],c.prototype,"_scriptLoader"),l([o],c.prototype,"_lifeCycleManager"),l([o],c.prototype,"_initData"),l([o],c.prototype,"_globalInitData"),l([o],c.prototype,"_globalCallback"),l([o],c.prototype,"_unitFormatter"),l([o],c.prototype,"_idbManager");class ae extends V{setupGlobals(){}setupDependencies(){k.setup($),this.lookup("logger",this._context)}cleanUpGlobals(){throw new Error("Method not implemented.")}cleanUpDependencies(){throw new Error("Method not implemented.")}async bootFinished(){this._viewer=new c(this._context),window.RoomleGLBViewer||(window.RoomleGLBViewer=this._viewer)}getApi(){return this._viewer}getContextName(){return T.GLB_VIEWER}}W("GlbViewer",ae)}}});
|
|
2
|
+
//# sourceMappingURL=glb-viewer-D-5Zh8iu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-viewer-CW4kiAoW.js","sources":["../../packages/glb-viewer-core/src/input/glb-input-manager.ts","../../packages/glb-viewer-core/src/utils/injectables.ts","../../packages/glb-viewer-core/src/camera-control/adjustable-camera-control-3d.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-light-setting.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-scene-manager.ts","../../packages/glb-viewer-core/src/services/glb-render-worker.ts","../../../../node_modules/jszip/dist/jszip.min.js?no-inline?url","../../packages/glb-viewer-core/src/roomle-glb-viewer.ts","../../packages/glb-viewer-core/src/glb-viewer.ts"],"sourcesContent":["import InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class GlbInputManager extends InputManager {\n //move on, nothing to see here\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 GlbInputManager from '../input/glb-input-manager';\nimport RapiAccess from '../../../common-core/src/rapi-access';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'glb-input-manager',\n GlbInputManager,\n DI_TYPE.CONTEXT\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n];\n","import CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport { Box3, Euler, Quaternion, Vector3 } from 'three';\n\nexport default class AdjustableCameraControl3D extends CameraControl3D {\n public shouldIgnoreStandardBehavior = false;\n\n public adjust(\n bounds: Vector3,\n position: Vector3,\n\n yaw: number,\n pitch: number,\n _fov: number\n ) {\n let minVector: Vector3 = new Vector3(-bounds.x / 2, 0, -bounds.z / 2);\n let maxVector: Vector3 = new Vector3(bounds.x / 2, bounds.y, bounds.z / 2);\n this._boundingBox = new Box3(minVector, maxVector);\n\n // before applying attis pitch value with have to rotate down, because we assume that attis rotation is upwards\n let euler = new Euler(-Math.PI / 2 + pitch, yaw, 0, 'ZYX');\n let quaternion = new Quaternion().setFromEuler(euler);\n\n this._camera.updateProjectionMatrix();\n\n this._camera.quaternion.copy(quaternion);\n this._camera.position.copy(position);\n }\n\n protected _update(overrideTarget?: Vector3) {\n if (!this.shouldIgnoreStandardBehavior) {\n super._update(overrideTarget);\n } else {\n this._saveYawAndPitch();\n }\n }\n\n public animateCamera(delta: number): boolean {\n if (!this.shouldIgnoreStandardBehavior) {\n return super.animateCamera(delta);\n } else {\n return true;\n }\n }\n}\n","import LightSetting from '../../../common-core/src/lightsetting/light-setting';\nimport { getGUI } from '../../../common-core/src/utils/threejs-utils';\nimport type { ColorRepresentation, Scene } from 'three';\nimport { AmbientLight, Color } from 'three';\n\nexport default class GLBViewerLightSetting extends LightSetting {\n private _ambientLight: AmbientLight;\n\n private _params = {\n ambientLight: {\n color: '#ffffff',\n },\n };\n\n constructor(scene: Scene, oldLightSetting?: LightSetting) {\n super(scene, oldLightSetting);\n\n this._ambientLight = new AmbientLight(\n new Color(this._params.ambientLight.color as ColorRepresentation),\n 0.5\n );\n\n this.addToScene();\n }\n\n public addToScene(): void {\n this._scene.add(this._ambientLight);\n }\n\n public removeFromScene(): void {\n this._scene.remove(this._ambientLight);\n }\n\n public reload(): void {\n this.removeFromScene();\n this.addToScene();\n }\n\n public showGUI(): void {\n let gui = getGUI();\n if (!gui) {\n return;\n }\n if (this._ambientLight) {\n let ambiLight = gui.addFolder('Ambient Light');\n ambiLight.add<any>(this._ambientLight, 'visible');\n ambiLight\n .add<any>(this._ambientLight, 'intensity')\n .min(0)\n .max(5)\n .step(0.1);\n ambiLight\n .addColor(this._params.ambientLight, 'color')\n .onChange((color: string) => {\n this._ambientLight.color = new Color(color as ColorRepresentation);\n });\n }\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n} from '../../../common-core/src/common-interfaces';\nimport AdjustableCameraControl3D from '../camera-control/adjustable-camera-control-3d';\nimport type { GLBRenderWorkerListener } from '../services/glb-render-worker';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport type GlbInputManager from '../input/glb-input-manager';\n\nimport DefaultLightSetting from '../../../configurator-core/src/webgl/lightsetting/default-light-setting';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport { dispose } from '../../../common-core/src/utils/threejs-utils';\nimport type RapiAccess from '../../../common-core/src/rapi-access';\nimport { getGlbUrl } from '../../../common-core/src/utils/common-utils';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '../../../common-core/src/types';\nimport {\n BasicShadowMap,\n Box3,\n type Color,\n type Object3D,\n PerspectiveCamera,\n SRGBColorSpace,\n Vector3,\n WebGLRenderer,\n} from 'three';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport GLBViewerLightSetting from './glb-viewer-light-setting';\nimport GlbViewerCameraBehaviour from '../../../common-core/src/cameracontrol/glb-viewer-camera-behaviour';\nimport {\n CAMERA_EVENT,\n type CameraParameter,\n} from '../../../common-core/src/cameracontrol/camera-control';\n\nexport default class GLBViewerSceneManager\n extends SceneManager\n implements GLBRenderWorkerListener\n{\n @inject\n private _glbInputManager: GlbInputManager;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _currentGLB: Object3D;\n private _standardSceneBackgroundColor: Color;\n\n private _itemsCount = 0;\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.GLB, CAMERA_TYPE.CAMERA_3D);\n this._standardSceneBackgroundColor = this._scene.background as Color;\n if (this._initData.legacyLight) {\n if (this._renderer.capabilities.maxTextures > 8) {\n this.loadDynamicLightSetting(\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA\n )\n );\n } else {\n console.warn(\n 'this device has a maximum of 8 texture units thus we are using a simpler light setting'\n );\n this._lightSetting = new GLBViewerLightSetting(this._scene);\n }\n }\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset\n ) {\n this._changeCameraBehaviour(\n new GlbViewerCameraBehaviour(\n new AdjustableCameraControl3D(\n this._creator_,\n this._getInputManager(),\n null\n ),\n this._cameraBehaviourState\n )\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._glbInputManager;\n }\n\n public async loadStaticItem(\n id: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n const rapiItem = await this._rapiAccess.getItem(id);\n if (rapiItem.configuration) {\n return Promise.reject();\n }\n const glbUrl = getGlbUrl(rapiItem);\n if (!glbUrl) {\n return Promise.reject(new Error('GLB Url not detected'));\n }\n return this.loadGLB(glbUrl, true, undefined, callback);\n }\n\n public loadGLB(\n url: string,\n automaticallyAdjustCamera: boolean = true,\n scaling: Vector3 = new Vector3(1, 1, 1),\n callback?: (percent: number) => void\n ): Promise<void> {\n this.clearScene();\n return new Promise<void>((resolve, reject) => {\n this._loadGLB(\n url,\n new Vector3(0, 0, 0),\n 0,\n undefined,\n scaling,\n undefined,\n undefined,\n callback\n ).then((glb) => {\n this._currentGLB = glb;\n this._scene.add(this._currentGLB);\n\n let boundingBox = new Box3().setFromObject(this._currentGLB);\n if (automaticallyAdjustCamera) {\n if (\n this.cameraBehaviour.cameraControl instanceof\n AdjustableCameraControl3D\n ) {\n this.glbViewerCameraBehaviour.updateCameraOnItemLoaded(boundingBox);\n }\n }\n this._updateBounds(boundingBox, null, true);\n this._readyForRender();\n resolve();\n }, reject);\n });\n }\n\n public preparePerspectiveImage(\n renderer?: WebGLRenderer,\n width?: number,\n height?: number\n ): Promise<Base64Image> {\n return new Promise<Base64Image>((resolve) => {\n if (!width) {\n width = 1000;\n }\n\n if (!height) {\n height = 1000;\n }\n\n if (!renderer) {\n renderer = new WebGLRenderer({ antialias: true });\n renderer.setSize(width, height);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.autoClear = false;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = BasicShadowMap;\n }\n\n let camera = this.cameraBehaviour.cameraControl.getCamera().clone();\n if (camera instanceof PerspectiveCamera) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n\n this._lightSetting?.removeFromScene();\n let defaultLightSetting = new DefaultLightSetting(this._scene);\n\n renderer.render(this._scene, camera);\n let image = renderer.domElement.toDataURL();\n renderer.domElement.toBlob((blob) => {\n resolve({ image, width, height, blob });\n }, 'image/png');\n\n defaultLightSetting.removeFromScene();\n this._lightSetting?.addToScene();\n });\n }\n\n public adjustCamera(\n position: Vector3,\n yaw: number,\n pitch: number,\n fov: number\n ) {\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n let boundingBox = new Box3().setFromObject(this._scene);\n let bounds = boundingBox.getSize(new Vector3());\n (this.cameraBehaviour.cameraControl as AdjustableCameraControl3D).adjust(\n bounds,\n position,\n yaw,\n pitch,\n fov\n );\n this._requestRender();\n }\n }\n\n public onStart(count: number) {\n this._itemsCount = count;\n this._scene.background = null;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = true;\n }\n console.log('start processing ' + count + ' items');\n }\n\n public onElementFinished(itemsFinished: number) {\n console.log(\n 'processed ' +\n itemsFinished +\n ' of ' +\n this._itemsCount +\n ' items (' +\n Math.round((100 / this._itemsCount) * itemsFinished) +\n '%)'\n );\n }\n\n public onFinished(_zip: any) {\n this._scene.background = this._standardSceneBackgroundColor;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = false;\n }\n }\n\n public clearScene() {\n if (this._currentGLB) {\n this._scene.remove(this._currentGLB);\n dispose(this._currentGLB);\n this._currentGLB = null;\n }\n super.clearScene();\n }\n\n public enableHD() {\n super.enableHD();\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n getBounds(): Box3 {\n if (!this._currentGLB) {\n return null;\n }\n return new Box3().setFromObject(this._currentGLB);\n }\n\n protected get glbViewerCameraBehaviour(): GlbViewerCameraBehaviour {\n return this.cameraBehaviour as GlbViewerCameraBehaviour;\n }\n\n getGeometryBounds(): Box3 {\n return null;\n }\n\n cameraBehaviourChanged() {\n super.cameraBehaviourChanged();\n\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_IN,\n () => {\n this._requestRender();\n },\n this\n );\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_OUT,\n () => {\n this._requestRender();\n },\n this\n );\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this.glbViewerCameraBehaviour.externalApiMoveCamera(cameraParameter);\n }\n\n // info when scene is ready to render, used for testing\n protected _readyForRender() {\n console.log('ready_for_render');\n this._globalCallback.onReadyForRender();\n }\n}\n","import type { Base64Image } from '../../../common-core/src/common-interfaces';\nimport type GLBViewerSceneManager from '../webgl/glb-viewer-scene-manager';\nimport type { RenderEntry } from '../roomle-glb-viewer';\nimport { SRGBColorSpace, Vector3, WebGLRenderer } from 'three';\n\ninterface GLBRenderEntry {\n name: string;\n url: string;\n position: Vector3;\n fov: number;\n yaw: number;\n pitch: number;\n}\n\nexport interface GLBRenderWorkerListener {\n onStart(count: number): void;\n\n onElementFinished(finishedElements: number): void;\n\n onFinished(zip: any): void;\n}\n\nexport default class GLBRenderWorker {\n private _sceneManager: GLBViewerSceneManager;\n private _entries: GLBRenderEntry[];\n\n private _resolve: (zip: any) => void;\n\n private _prefix = 'https://furniture.roomle.com/3d/glb/';\n\n private _renderer: WebGLRenderer;\n private _width: number;\n private _height: number;\n\n private _listeners: Set<GLBRenderWorkerListener> =\n new Set<GLBRenderWorkerListener>();\n private _finishedItems: number = 0;\n\n private _zip: any;\n\n constructor(\n sceneManager: GLBViewerSceneManager,\n width: number,\n height: number\n ) {\n this._sceneManager = sceneManager;\n\n this._renderer = new WebGLRenderer({ antialias: true, alpha: true });\n this._width = width;\n this._height = height;\n this._renderer.setSize(width, height);\n this._renderer.setClearColor(0xffffff, 0);\n this._renderer.outputColorSpace = SRGBColorSpace;\n }\n\n public addListener(listener: GLBRenderWorkerListener) {\n this._listeners.add(listener);\n }\n\n public removeListener(listener: GLBRenderWorkerListener) {\n this._listeners.delete(listener);\n }\n\n public start(entries: RenderEntry[]): Promise<any> {\n this._entries = [];\n entries.forEach((entry) => {\n this._entries.push(this._transform(entry)); // {name: url.replace('.glb', '.png'), url: this._prefix + url}\n });\n this._finishedItems = 0;\n this._listeners.forEach((listener) =>\n listener.onStart(this._entries.length)\n );\n this._zip = new (window as any).JSZip();\n this._doNextEntry();\n return new Promise<any>((resolve) => {\n this._resolve = resolve;\n });\n }\n\n private _transform(entry: RenderEntry): GLBRenderEntry {\n return {\n name: entry.path.replace('.glb', '.png'),\n url: this._prefix + entry.path,\n position: new Vector3(\n entry.camera.position.x,\n entry.camera.position.z,\n -entry.camera.position.y\n ),\n fov: entry.camera.fieldOfView * 2, // * 2 because Atti suggested it after all images were cut on all sides\n yaw: entry.camera.rotation.z,\n pitch: entry.camera.rotation.x,\n };\n }\n\n private _doNextEntry() {\n if (this._entries.length === 0) {\n this._listeners.forEach((listener) => listener.onFinished(this._zip));\n this._resolve(this._zip);\n } else {\n this._processEntry(this._entries[0]);\n }\n }\n\n private _processEntry(entry: GLBRenderEntry) {\n this._sceneManager.loadGLB(entry.url, false, undefined).then(() => {\n this._sceneManager.adjustCamera(\n entry.position,\n entry.yaw,\n entry.pitch,\n entry.fov\n );\n this._sceneManager\n .preparePerspectiveImage(this._renderer, this._width, this._height)\n .then((base64Image) => {\n this._entryFinished(entry, base64Image);\n });\n });\n }\n\n private _entryFinished(entry: GLBRenderEntry, base64Image: Base64Image) {\n let index = this._entries.indexOf(entry);\n if (index > -1) {\n this._entries.splice(index, 1);\n }\n this._finishedItems++;\n this._listeners.forEach((listener) =>\n listener.onElementFinished(this._finishedItems)\n );\n this._zip.file(entry.name, base64Image.blob);\n this._doNextEntry();\n }\n}\n","export default \"__VITE_ASSET__C2yIGV3r__\"","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 GLBViewerSceneManager from './webgl/glb-viewer-scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n Position3,\n} from '../../common-core/src/common-interfaces';\nimport GLBRenderWorker from './services/glb-render-worker';\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 { JS_ZIP_FILE_NAME } from '../../common-core/src/static-files/libs';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport type {\n GlobalInitDataDefinition,\n InitDataDefinition,\n} from '../../common-core/src/utils/shims';\nimport type GlobalInitData from '../../common-core/src/utils/global-init-data';\nimport type RapiAccess from '../../common-core/src/rapi-access';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport { download } from '../../common-core/src/utils/common-utils';\nimport type { Scene } from 'three';\nimport { Vector3 } from 'three';\nimport type IdbManager from '../../common-core/src/services/idb-manager';\nimport type { CameraParameter } from '../../common-core/src/cameracontrol/camera-control';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\ninterface RenderCameraInformation {\n fieldOfView: number;\n rotation: Position3;\n position: Position3;\n}\n\nexport declare interface RenderEntry {\n path: string;\n camera: RenderCameraInformation;\n}\n\nexport class GlbViewerUiCallbacks {}\n\nexport default class RoomleGLBViewer\n implements GlobalAPI, Context, ExternalEmbeddable<GlbViewerUiCallbacks>\n{\n public _creator_: string;\n\n @inject\n private _rapiAccess: RapiAccess;\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 _initData: InitData;\n\n @inject\n private _globalInitData: GlobalInitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: GLBViewerSceneManager;\n\n private _currentIdOrUrl: string = null;\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(\n element: HTMLElement,\n initData?: InitDataDefinition\n ): Promise<void> {\n this.setOverrides(initData);\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 GLBViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n // this.loadGLB('https://furniture.roomle.com/3d/glb/furniture/vitra/41206600/41206600.glb');\n this._sceneManager.enableHD();\n resolve();\n }\n\n /**\n * Remove the current glb from the scene if it exists\n */\n public clearScene() {\n this._sceneManager.clearScene();\n }\n\n /**\n * Loads the GLB from the given URL Param\n * @param url\n * @param scaling defaults to 1\n * @param callback loading percent between 0 and 1\n */\n public loadGLB(\n url: string,\n scaling = 1,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = url;\n this._rapiAccess.trackView(url);\n return this._sceneManager.loadGLB(\n url,\n true,\n new Vector3(scaling, scaling, scaling),\n callback\n );\n }\n\n /**\n * Loads the glb asset from the static item\n * @param staticItemId\n * @param callback loading percent between 0 and 1\n */\n public loadStaticItem(\n staticItemId: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = staticItemId;\n this._rapiAccess.trackView(staticItemId);\n return this._sceneManager.loadStaticItem(staticItemId, callback);\n }\n\n /**\n * Returns the current item id or url of the loaded object\n */\n public getCurrentId(): string {\n return this._currentIdOrUrl;\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-loaderEnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public preparePerspectiveImage(): Promise<Base64Image> {\n return this._sceneManager.preparePerspectiveImage();\n }\n\n public processRenderList(\n jsonString: string,\n width: number = 320,\n height: number = 320\n ) {\n const object = JSON.parse(jsonString);\n this._scriptLoader.fetch(JS_ZIP_FILE_NAME, { id: 'jszip-js' }).then(() => {\n const worker = new GLBRenderWorker(this._sceneManager, width, height);\n worker.addListener(this._sceneManager);\n worker.start(object.items).then((zip: any) => {\n zip.generateAsync({ type: 'blob' }).then((content: File) => {\n download('content.zip', URL.createObjectURL(content));\n worker.removeListener(this._sceneManager);\n });\n });\n });\n }\n\n public setOverrides(\n initData: Partial<InitDataDefinition & GlobalInitDataDefinition> | InitData\n ): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n this._globalInitData.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 {\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 public get callbacks() {\n return {};\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 public exportCanvasScreenshot(quality?: number): Promise<string> {\n return this._sceneManager.exportCanvasScreenshot(quality);\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this._sceneManager.moveCamera(cameraParameter);\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","import './utils/global-definitions';\nimport Main, { BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport { INJECTABLES } from './utils/injectables';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleGLBViewer from './roomle-glb-viewer';\n\nexport class GlbViewer extends Main {\n private _viewer: RoomleGLBViewer;\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 RoomleGLBViewer(this._context);\n\n if (!window.RoomleGLBViewer) {\n window.RoomleGLBViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleGLBViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.GLB_VIEWER;\n }\n}\n"],"names":["GlbInputManager","InputManager","INJECTABLES","DependencyInjectionAssignment","ScriptLoader","DI_TYPE","Logger","RapiAccess","AdjustableCameraControl3D","CameraControl3D","bounds","position","yaw","pitch","_fov","minVector","Vector3","maxVector","Box3","euler","Euler","quaternion","Quaternion","overrideTarget","delta","GLBViewerLightSetting","LightSetting","scene","oldLightSetting","AmbientLight","Color","gui","getGUI","ambiLight","color","GLBViewerSceneManager","SceneManager","creator","offset","CANVAS_ID","CAMERA_TYPE","DynamicLightSettingLoader","PREDEFINED_LIGHTSETTING","_mode","_offset","GlbViewerCameraBehaviour","id","callback","rapiItem","glbUrl","getGlbUrl","url","automaticallyAdjustCamera","scaling","resolve","reject","glb","boundingBox","renderer","width","height","WebGLRenderer","SRGBColorSpace","BasicShadowMap","camera","PerspectiveCamera","defaultLightSetting","DefaultLightSetting","image","blob","fov","count","itemsFinished","_zip","dispose","CAMERA_EVENT","cameraParameter","__decorateClass","inject","GLBRenderWorker","sceneManager","listener","entries","entry","base64Image","index","JS_ZIP_FILE_NAME","RoomleGLBViewer","element","initData","_reject","staticItemId","sceneSettings","jsonString","object","worker","zip","content","download","params","intensity","rotation","maxLightSources","quality","GlbViewer","Main","RoomleDependencyInjection","BASE_CONTEXT","exports"],"mappings":"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","x_google_ignoreList":[6]}
|
|
1
|
+
{"version":3,"file":"glb-viewer-D-5Zh8iu.js","sources":["../../packages/glb-viewer-core/src/input/glb-input-manager.ts","../../packages/glb-viewer-core/src/utils/injectables.ts","../../packages/glb-viewer-core/src/camera-control/adjustable-camera-control-3d.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-light-setting.ts","../../packages/glb-viewer-core/src/webgl/glb-viewer-scene-manager.ts","../../packages/glb-viewer-core/src/services/glb-render-worker.ts","../../../../node_modules/jszip/dist/jszip.min.js?no-inline?url","../../packages/glb-viewer-core/src/roomle-glb-viewer.ts","../../packages/glb-viewer-core/src/glb-viewer.ts"],"sourcesContent":["import InputManager from '../../../common-core/src/input/input-manager';\n\nexport default class GlbInputManager extends InputManager {\n //move on, nothing to see here\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 GlbInputManager from '../input/glb-input-manager';\nimport RapiAccess from '../../../common-core/src/rapi-access';\n\nexport const INJECTABLES: DependencyInjectionAssignment[] = [\n new DependencyInjectionAssignment('script-loader', ScriptLoader),\n new DependencyInjectionAssignment(\n 'glb-input-manager',\n GlbInputManager,\n DI_TYPE.CONTEXT\n ),\n new DependencyInjectionAssignment('logger', Logger),\n new DependencyInjectionAssignment('rapi-access', RapiAccess),\n];\n","import CameraControl3D from '../../../common-core/src/cameracontrol/camera-control-3d';\nimport { Box3, Euler, Quaternion, Vector3 } from 'three';\n\nexport default class AdjustableCameraControl3D extends CameraControl3D {\n public shouldIgnoreStandardBehavior = false;\n\n public adjust(\n bounds: Vector3,\n position: Vector3,\n\n yaw: number,\n pitch: number,\n _fov: number\n ) {\n let minVector: Vector3 = new Vector3(-bounds.x / 2, 0, -bounds.z / 2);\n let maxVector: Vector3 = new Vector3(bounds.x / 2, bounds.y, bounds.z / 2);\n this._boundingBox = new Box3(minVector, maxVector);\n\n // before applying attis pitch value with have to rotate down, because we assume that attis rotation is upwards\n let euler = new Euler(-Math.PI / 2 + pitch, yaw, 0, 'ZYX');\n let quaternion = new Quaternion().setFromEuler(euler);\n\n this._camera.updateProjectionMatrix();\n\n this._camera.quaternion.copy(quaternion);\n this._camera.position.copy(position);\n }\n\n protected _update(overrideTarget?: Vector3) {\n if (!this.shouldIgnoreStandardBehavior) {\n super._update(overrideTarget);\n } else {\n this._saveYawAndPitch();\n }\n }\n\n public animateCamera(delta: number): boolean {\n if (!this.shouldIgnoreStandardBehavior) {\n return super.animateCamera(delta);\n } else {\n return true;\n }\n }\n}\n","import LightSetting from '../../../common-core/src/lightsetting/light-setting';\nimport { getGUI } from '../../../common-core/src/utils/threejs-utils';\nimport type { ColorRepresentation, Scene } from 'three';\nimport { AmbientLight, Color } from 'three';\n\nexport default class GLBViewerLightSetting extends LightSetting {\n private _ambientLight: AmbientLight;\n\n private _params = {\n ambientLight: {\n color: '#ffffff',\n },\n };\n\n constructor(scene: Scene, oldLightSetting?: LightSetting) {\n super(scene, oldLightSetting);\n\n this._ambientLight = new AmbientLight(\n new Color(this._params.ambientLight.color as ColorRepresentation),\n 0.5\n );\n\n this.addToScene();\n }\n\n public addToScene(): void {\n this._scene.add(this._ambientLight);\n }\n\n public removeFromScene(): void {\n this._scene.remove(this._ambientLight);\n }\n\n public reload(): void {\n this.removeFromScene();\n this.addToScene();\n }\n\n public showGUI(): void {\n let gui = getGUI();\n if (!gui) {\n return;\n }\n if (this._ambientLight) {\n let ambiLight = gui.addFolder('Ambient Light');\n ambiLight.add<any>(this._ambientLight, 'visible');\n ambiLight\n .add<any>(this._ambientLight, 'intensity')\n .min(0)\n .max(5)\n .step(0.1);\n ambiLight\n .addColor(this._params.ambientLight, 'color')\n .onChange((color: string) => {\n this._ambientLight.color = new Color(color as ColorRepresentation);\n });\n }\n }\n}\n","import SceneManager from '../../../common-core/src/webgl/scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n} from '../../../common-core/src/common-interfaces';\nimport AdjustableCameraControl3D from '../camera-control/adjustable-camera-control-3d';\nimport type { GLBRenderWorkerListener } from '../services/glb-render-worker';\nimport type InputManager from '../../../common-core/src/input/input-manager';\nimport inject from '../../../common-core/src/di/inject';\nimport type GlbInputManager from '../input/glb-input-manager';\n\nimport DefaultLightSetting from '../../../configurator-core/src/webgl/lightsetting/default-light-setting';\nimport { CAMERA_TYPE } from '../../../common-core/src/cameracontrol/camera-type';\nimport { dispose } from '../../../common-core/src/utils/threejs-utils';\nimport type RapiAccess from '../../../common-core/src/rapi-access';\nimport { getGlbUrl } from '../../../common-core/src/utils/common-utils';\nimport { CANVAS_ID } from '../../../common-core/src/utils/dom-helper';\nimport type { Enumify } from '../../../common-core/src/types';\nimport {\n BasicShadowMap,\n Box3,\n type Color,\n type Object3D,\n PerspectiveCamera,\n SRGBColorSpace,\n Vector3,\n WebGLRenderer,\n} from 'three';\nimport DynamicLightSettingLoader, {\n PREDEFINED_LIGHTSETTING,\n} from '../../../common-core/src/lightsetting/dynamic-light-setting-loader';\nimport GLBViewerLightSetting from './glb-viewer-light-setting';\nimport GlbViewerCameraBehaviour from '../../../common-core/src/cameracontrol/glb-viewer-camera-behaviour';\nimport {\n CAMERA_EVENT,\n type CameraParameter,\n} from '../../../common-core/src/cameracontrol/camera-control';\n\nexport default class GLBViewerSceneManager\n extends SceneManager\n implements GLBRenderWorkerListener\n{\n @inject\n private _glbInputManager: GlbInputManager;\n\n @inject\n private _rapiAccess: RapiAccess;\n\n private _currentGLB: Object3D;\n private _standardSceneBackgroundColor: Color;\n\n private _itemsCount = 0;\n\n constructor(creator: string, offset: CanvasOffset) {\n super(creator, offset, CANVAS_ID.GLB, CAMERA_TYPE.CAMERA_3D);\n this._standardSceneBackgroundColor = this._scene.background as Color;\n if (this._initData.legacyLight) {\n if (this._renderer.capabilities.maxTextures > 8) {\n this.loadDynamicLightSetting(\n DynamicLightSettingLoader.createDynamicLightSettingSource(\n null,\n PREDEFINED_LIGHTSETTING.CAMERA\n )\n );\n } else {\n console.warn(\n 'this device has a maximum of 8 texture units thus we are using a simpler light setting'\n );\n this._lightSetting = new GLBViewerLightSetting(this._scene);\n }\n }\n }\n\n protected createCameraControl(\n _mode: Enumify<typeof CAMERA_TYPE>,\n _offset: CanvasOffset\n ) {\n this._changeCameraBehaviour(\n new GlbViewerCameraBehaviour(\n new AdjustableCameraControl3D(\n this._creator_,\n this._getInputManager(),\n null\n ),\n this._cameraBehaviourState\n )\n );\n }\n\n protected _getInputManager(): InputManager {\n return this._glbInputManager;\n }\n\n public async loadStaticItem(\n id: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n const rapiItem = await this._rapiAccess.getItem(id);\n if (rapiItem.configuration) {\n return Promise.reject();\n }\n const glbUrl = getGlbUrl(rapiItem);\n if (!glbUrl) {\n return Promise.reject(new Error('GLB Url not detected'));\n }\n return this.loadGLB(glbUrl, true, undefined, callback);\n }\n\n public loadGLB(\n url: string,\n automaticallyAdjustCamera: boolean = true,\n scaling: Vector3 = new Vector3(1, 1, 1),\n callback?: (percent: number) => void\n ): Promise<void> {\n this.clearScene();\n return new Promise<void>((resolve, reject) => {\n this._loadGLB(\n url,\n new Vector3(0, 0, 0),\n 0,\n undefined,\n scaling,\n undefined,\n undefined,\n callback\n ).then((glb) => {\n this._currentGLB = glb;\n this._scene.add(this._currentGLB);\n\n let boundingBox = new Box3().setFromObject(this._currentGLB);\n if (automaticallyAdjustCamera) {\n if (\n this.cameraBehaviour.cameraControl instanceof\n AdjustableCameraControl3D\n ) {\n this.glbViewerCameraBehaviour.updateCameraOnItemLoaded(boundingBox);\n }\n }\n this._updateBounds(boundingBox, null, true);\n this._readyForRender();\n resolve();\n }, reject);\n });\n }\n\n public preparePerspectiveImage(\n renderer?: WebGLRenderer,\n width?: number,\n height?: number\n ): Promise<Base64Image> {\n return new Promise<Base64Image>((resolve) => {\n if (!width) {\n width = 1000;\n }\n\n if (!height) {\n height = 1000;\n }\n\n if (!renderer) {\n renderer = new WebGLRenderer({ antialias: true });\n renderer.setSize(width, height);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.autoClear = false;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = BasicShadowMap;\n }\n\n let camera = this.cameraBehaviour.cameraControl.getCamera().clone();\n if (camera instanceof PerspectiveCamera) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n\n this._lightSetting?.removeFromScene();\n let defaultLightSetting = new DefaultLightSetting(this._scene);\n\n renderer.render(this._scene, camera);\n let image = renderer.domElement.toDataURL();\n renderer.domElement.toBlob((blob) => {\n resolve({ image, width, height, blob });\n }, 'image/png');\n\n defaultLightSetting.removeFromScene();\n this._lightSetting?.addToScene();\n });\n }\n\n public adjustCamera(\n position: Vector3,\n yaw: number,\n pitch: number,\n fov: number\n ) {\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n let boundingBox = new Box3().setFromObject(this._scene);\n let bounds = boundingBox.getSize(new Vector3());\n (this.cameraBehaviour.cameraControl as AdjustableCameraControl3D).adjust(\n bounds,\n position,\n yaw,\n pitch,\n fov\n );\n this._requestRender();\n }\n }\n\n public onStart(count: number) {\n this._itemsCount = count;\n this._scene.background = null;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = true;\n }\n console.log('start processing ' + count + ' items');\n }\n\n public onElementFinished(itemsFinished: number) {\n console.log(\n 'processed ' +\n itemsFinished +\n ' of ' +\n this._itemsCount +\n ' items (' +\n Math.round((100 / this._itemsCount) * itemsFinished) +\n '%)'\n );\n }\n\n public onFinished(_zip: any) {\n this._scene.background = this._standardSceneBackgroundColor;\n if (\n this.cameraBehaviour.cameraControl instanceof AdjustableCameraControl3D\n ) {\n (\n this.cameraBehaviour.cameraControl as AdjustableCameraControl3D\n ).shouldIgnoreStandardBehavior = false;\n }\n }\n\n public clearScene() {\n if (this._currentGLB) {\n this._scene.remove(this._currentGLB);\n dispose(this._currentGLB);\n this._currentGLB = null;\n }\n super.clearScene();\n }\n\n public enableHD() {\n super.enableHD();\n }\n\n public sceneChanged(): void {\n //override when needed\n }\n\n getBounds(): Box3 {\n if (!this._currentGLB) {\n return null;\n }\n return new Box3().setFromObject(this._currentGLB);\n }\n\n protected get glbViewerCameraBehaviour(): GlbViewerCameraBehaviour {\n return this.cameraBehaviour as GlbViewerCameraBehaviour;\n }\n\n getGeometryBounds(): Box3 {\n return null;\n }\n\n cameraBehaviourChanged() {\n super.cameraBehaviourChanged();\n\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_IN,\n () => {\n this._requestRender();\n },\n this\n );\n this.cameraBehaviour.cameraControl.addEventListener(\n CAMERA_EVENT.ZOOM_OUT,\n () => {\n this._requestRender();\n },\n this\n );\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this.glbViewerCameraBehaviour.externalApiMoveCamera(cameraParameter);\n }\n\n // info when scene is ready to render, used for testing\n protected _readyForRender() {\n console.log('ready_for_render');\n this._globalCallback.onReadyForRender();\n }\n}\n","import type { Base64Image } from '../../../common-core/src/common-interfaces';\nimport type GLBViewerSceneManager from '../webgl/glb-viewer-scene-manager';\nimport type { RenderEntry } from '../roomle-glb-viewer';\nimport { SRGBColorSpace, Vector3, WebGLRenderer } from 'three';\n\ninterface GLBRenderEntry {\n name: string;\n url: string;\n position: Vector3;\n fov: number;\n yaw: number;\n pitch: number;\n}\n\nexport interface GLBRenderWorkerListener {\n onStart(count: number): void;\n\n onElementFinished(finishedElements: number): void;\n\n onFinished(zip: any): void;\n}\n\nexport default class GLBRenderWorker {\n private _sceneManager: GLBViewerSceneManager;\n private _entries: GLBRenderEntry[];\n\n private _resolve: (zip: any) => void;\n\n private _prefix = 'https://furniture.roomle.com/3d/glb/';\n\n private _renderer: WebGLRenderer;\n private _width: number;\n private _height: number;\n\n private _listeners: Set<GLBRenderWorkerListener> =\n new Set<GLBRenderWorkerListener>();\n private _finishedItems: number = 0;\n\n private _zip: any;\n\n constructor(\n sceneManager: GLBViewerSceneManager,\n width: number,\n height: number\n ) {\n this._sceneManager = sceneManager;\n\n this._renderer = new WebGLRenderer({ antialias: true, alpha: true });\n this._width = width;\n this._height = height;\n this._renderer.setSize(width, height);\n this._renderer.setClearColor(0xffffff, 0);\n this._renderer.outputColorSpace = SRGBColorSpace;\n }\n\n public addListener(listener: GLBRenderWorkerListener) {\n this._listeners.add(listener);\n }\n\n public removeListener(listener: GLBRenderWorkerListener) {\n this._listeners.delete(listener);\n }\n\n public start(entries: RenderEntry[]): Promise<any> {\n this._entries = [];\n entries.forEach((entry) => {\n this._entries.push(this._transform(entry)); // {name: url.replace('.glb', '.png'), url: this._prefix + url}\n });\n this._finishedItems = 0;\n this._listeners.forEach((listener) =>\n listener.onStart(this._entries.length)\n );\n this._zip = new (window as any).JSZip();\n this._doNextEntry();\n return new Promise<any>((resolve) => {\n this._resolve = resolve;\n });\n }\n\n private _transform(entry: RenderEntry): GLBRenderEntry {\n return {\n name: entry.path.replace('.glb', '.png'),\n url: this._prefix + entry.path,\n position: new Vector3(\n entry.camera.position.x,\n entry.camera.position.z,\n -entry.camera.position.y\n ),\n fov: entry.camera.fieldOfView * 2, // * 2 because Atti suggested it after all images were cut on all sides\n yaw: entry.camera.rotation.z,\n pitch: entry.camera.rotation.x,\n };\n }\n\n private _doNextEntry() {\n if (this._entries.length === 0) {\n this._listeners.forEach((listener) => listener.onFinished(this._zip));\n this._resolve(this._zip);\n } else {\n this._processEntry(this._entries[0]);\n }\n }\n\n private _processEntry(entry: GLBRenderEntry) {\n this._sceneManager.loadGLB(entry.url, false, undefined).then(() => {\n this._sceneManager.adjustCamera(\n entry.position,\n entry.yaw,\n entry.pitch,\n entry.fov\n );\n this._sceneManager\n .preparePerspectiveImage(this._renderer, this._width, this._height)\n .then((base64Image) => {\n this._entryFinished(entry, base64Image);\n });\n });\n }\n\n private _entryFinished(entry: GLBRenderEntry, base64Image: Base64Image) {\n let index = this._entries.indexOf(entry);\n if (index > -1) {\n this._entries.splice(index, 1);\n }\n this._finishedItems++;\n this._listeners.forEach((listener) =>\n listener.onElementFinished(this._finishedItems)\n );\n this._zip.file(entry.name, base64Image.blob);\n this._doNextEntry();\n }\n}\n","export default \"__VITE_ASSET__C2yIGV3r__\"","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 GLBViewerSceneManager from './webgl/glb-viewer-scene-manager';\nimport type {\n Base64Image,\n CanvasOffset,\n Position3,\n} from '../../common-core/src/common-interfaces';\nimport GLBRenderWorker from './services/glb-render-worker';\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 { JS_ZIP_FILE_NAME } from '../../common-core/src/static-files/libs';\nimport type InitData from '../../common-core/src/utils/init-data';\nimport type {\n GlobalInitDataDefinition,\n InitDataDefinition,\n} from '../../common-core/src/utils/shims';\nimport type GlobalInitData from '../../common-core/src/utils/global-init-data';\nimport type RapiAccess from '../../common-core/src/rapi-access';\nimport type UnitFormatter from '../../configurator-core/src/services/unit-formatter';\nimport { download } from '../../common-core/src/utils/common-utils';\nimport type { Scene } from 'three';\nimport { Vector3 } from 'three';\nimport type IdbManager from '../../common-core/src/services/idb-manager';\nimport type { CameraParameter } from '../../common-core/src/cameracontrol/camera-control';\nimport type { GlobalCallback } from '../../common-core/src/services/global-callback';\n\ninterface RenderCameraInformation {\n fieldOfView: number;\n rotation: Position3;\n position: Position3;\n}\n\nexport declare interface RenderEntry {\n path: string;\n camera: RenderCameraInformation;\n}\n\nexport class GlbViewerUiCallbacks {}\n\nexport default class RoomleGLBViewer\n implements GlobalAPI, Context, ExternalEmbeddable<GlbViewerUiCallbacks>\n{\n public _creator_: string;\n\n @inject\n private _rapiAccess: RapiAccess;\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 _initData: InitData;\n\n @inject\n private _globalInitData: GlobalInitData;\n\n @inject\n private _globalCallback: GlobalCallback;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n @inject\n protected _idbManager: IdbManager;\n\n private _sceneManager: GLBViewerSceneManager;\n\n private _currentIdOrUrl: string = null;\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(\n element: HTMLElement,\n initData?: InitDataDefinition\n ): Promise<void> {\n this.setOverrides(initData);\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 GLBViewerSceneManager(this._creator_, {\n left: 0,\n top: 1,\n right: 1,\n bottom: 0,\n });\n // this.loadGLB('https://furniture.roomle.com/3d/glb/furniture/vitra/41206600/41206600.glb');\n this._sceneManager.enableHD();\n resolve();\n }\n\n /**\n * Remove the current glb from the scene if it exists\n */\n public clearScene() {\n this._sceneManager.clearScene();\n }\n\n /**\n * Loads the GLB from the given URL Param\n * @param url\n * @param scaling defaults to 1\n * @param callback loading percent between 0 and 1\n */\n public loadGLB(\n url: string,\n scaling = 1,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = url;\n this._rapiAccess.trackView(url);\n return this._sceneManager.loadGLB(\n url,\n true,\n new Vector3(scaling, scaling, scaling),\n callback\n );\n }\n\n /**\n * Loads the glb asset from the static item\n * @param staticItemId\n * @param callback loading percent between 0 and 1\n */\n public loadStaticItem(\n staticItemId: string,\n callback?: (percent: number) => void\n ): Promise<void> {\n this._currentIdOrUrl = staticItemId;\n this._rapiAccess.trackView(staticItemId);\n return this._sceneManager.loadStaticItem(staticItemId, callback);\n }\n\n /**\n * Returns the current item id or url of the loaded object\n */\n public getCurrentId(): string {\n return this._currentIdOrUrl;\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-loaderEnvironmentSetting}).\n * @param sceneSettings\n */\n public loadSceneSetting(sceneSettings: SceneSettings): Promise<void> {\n return this._sceneManager.loadSceneSettings(sceneSettings);\n }\n\n public preparePerspectiveImage(): Promise<Base64Image> {\n return this._sceneManager.preparePerspectiveImage();\n }\n\n public processRenderList(\n jsonString: string,\n width: number = 320,\n height: number = 320\n ) {\n const object = JSON.parse(jsonString);\n this._scriptLoader.fetch(JS_ZIP_FILE_NAME, { id: 'jszip-js' }).then(() => {\n const worker = new GLBRenderWorker(this._sceneManager, width, height);\n worker.addListener(this._sceneManager);\n worker.start(object.items).then((zip: any) => {\n zip.generateAsync({ type: 'blob' }).then((content: File) => {\n download('content.zip', URL.createObjectURL(content));\n worker.removeListener(this._sceneManager);\n });\n });\n });\n }\n\n public setOverrides(\n initData: Partial<InitDataDefinition & GlobalInitDataDefinition> | InitData\n ): void {\n if (!initData) {\n return;\n }\n this._initData.setOverrides(initData);\n this._globalInitData.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 {\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 public get callbacks() {\n return {};\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 public exportCanvasScreenshot(quality?: number): Promise<string> {\n return this._sceneManager.exportCanvasScreenshot(quality);\n }\n\n public async moveCamera(cameraParameter: CameraParameter): Promise<void> {\n return this._sceneManager.moveCamera(cameraParameter);\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","import './utils/global-definitions';\nimport Main, { BASE_CONTEXT } from '../../common-core/src/main';\nimport type Logger from '../../common-core/src/logger';\nimport { INJECTABLES } from './utils/injectables';\nimport RoomleDependencyInjection from '../../common-core/src/di/roomle-dependency-injection';\nimport RoomleGLBViewer from './roomle-glb-viewer';\n\nexport class GlbViewer extends Main {\n private _viewer: RoomleGLBViewer;\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 RoomleGLBViewer(this._context);\n\n if (!window.RoomleGLBViewer) {\n window.RoomleGLBViewer = this._viewer;\n }\n }\n\n public getApi(): RoomleGLBViewer {\n return this._viewer;\n }\n\n protected getContextName(): string {\n return BASE_CONTEXT.GLB_VIEWER;\n }\n}\n"],"names":["GlbInputManager","InputManager","INJECTABLES","DependencyInjectionAssignment","ScriptLoader","DI_TYPE","Logger","RapiAccess","AdjustableCameraControl3D","CameraControl3D","bounds","position","yaw","pitch","_fov","minVector","Vector3","maxVector","Box3","euler","Euler","quaternion","Quaternion","overrideTarget","delta","GLBViewerLightSetting","LightSetting","scene","oldLightSetting","AmbientLight","Color","gui","getGUI","ambiLight","color","GLBViewerSceneManager","SceneManager","creator","offset","CANVAS_ID","CAMERA_TYPE","DynamicLightSettingLoader","PREDEFINED_LIGHTSETTING","_mode","_offset","GlbViewerCameraBehaviour","id","callback","rapiItem","glbUrl","getGlbUrl","url","automaticallyAdjustCamera","scaling","resolve","reject","glb","boundingBox","renderer","width","height","WebGLRenderer","SRGBColorSpace","BasicShadowMap","camera","PerspectiveCamera","defaultLightSetting","DefaultLightSetting","image","blob","fov","count","itemsFinished","_zip","dispose","CAMERA_EVENT","cameraParameter","__decorateClass","inject","GLBRenderWorker","sceneManager","listener","entries","entry","base64Image","index","JS_ZIP_FILE_NAME","RoomleGLBViewer","element","initData","_reject","staticItemId","sceneSettings","jsonString","object","worker","zip","content","download","params","intensity","rotation","maxLightSources","quality","GlbViewer","Main","RoomleDependencyInjection","BASE_CONTEXT","exports"],"mappings":"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","x_google_ignoreList":[6]}
|
package/lib/{glb-viewer-camera-behaviour-C3UBK_qg.js → glb-viewer-camera-behaviour-B-1iUjYD.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./camera-behaviour-
|
|
2
|
-
//# sourceMappingURL=glb-viewer-camera-behaviour-
|
|
1
|
+
System.register(["./camera-behaviour-vflerxg2.js"],function(t,n){"use strict";var r;return{setters:[e=>{r=e.c}],execute:function(){class e extends r{get cameraControl(){return this._cameraControl}async updateCameraOnItemLoaded(a){await this.cameraControl.updateAndReset(a,!0)}async externalApiMoveCamera(a){await this.cameraControl.moveCamera(a),this._onCameraChanged()}}t("G",e)}}});
|
|
2
|
+
//# sourceMappingURL=glb-viewer-camera-behaviour-B-1iUjYD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-viewer-camera-behaviour-
|
|
1
|
+
{"version":3,"file":"glb-viewer-camera-behaviour-B-1iUjYD.js","sources":["../../packages/common-core/src/cameracontrol/glb-viewer-camera-behaviour.ts"],"sourcesContent":["import CameraBehaviour from './camera-behaviour';\nimport type AdjustableCameraControl3D from '../../../glb-viewer-core/src/camera-control/adjustable-camera-control-3d';\nimport { type Box3 } from 'three';\nimport type { CameraParameter } from './camera-control';\n\nexport default class GlbViewerCameraBehaviour extends CameraBehaviour {\n public get cameraControl(): AdjustableCameraControl3D {\n return this._cameraControl as AdjustableCameraControl3D;\n }\n\n public async updateCameraOnItemLoaded(bounds: Box3) {\n await this.cameraControl.updateAndReset(bounds, true);\n }\n\n public async externalApiMoveCamera(\n cameraParameter: CameraParameter\n ): Promise<void> {\n await this.cameraControl.moveCamera(cameraParameter);\n this._onCameraChanged();\n }\n}\n"],"names":["GlbViewerCameraBehaviour","CameraBehaviour","bounds","cameraParameter","exports"],"mappings":"mIAKA,MAAqBA,UAAiCC,CAAgB,CACpE,IAAW,eAA2C,CACpD,OAAO,KAAK,cACd,CAEA,MAAa,yBAAyBC,EAAc,CAClD,MAAM,KAAK,cAAc,eAAeA,EAAQ,EAAI,CACtD,CAEA,MAAa,sBACXC,EACe,CACf,MAAM,KAAK,cAAc,WAAWA,CAAe,EACnD,KAAK,iBAAA,CACP,CACF,CAAAC,EAAA,IAAAJ,CAAA"}
|
package/lib/{glb-viewer-camera-behaviour-CvoP6Xzb.mjs → glb-viewer-camera-behaviour-D2qHMKWu.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as e } from "./camera-behaviour-
|
|
1
|
+
import { c as e } from "./camera-behaviour-CsLcX8jk.mjs";
|
|
2
2
|
class o extends e {
|
|
3
3
|
get cameraControl() {
|
|
4
4
|
return this._cameraControl;
|
|
@@ -13,4 +13,4 @@ class o extends e {
|
|
|
13
13
|
export {
|
|
14
14
|
o as G
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=glb-viewer-camera-behaviour-
|
|
16
|
+
//# sourceMappingURL=glb-viewer-camera-behaviour-D2qHMKWu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-viewer-camera-behaviour-
|
|
1
|
+
{"version":3,"file":"glb-viewer-camera-behaviour-D2qHMKWu.mjs","sources":["../../packages/common-core/src/cameracontrol/glb-viewer-camera-behaviour.ts"],"sourcesContent":["import CameraBehaviour from './camera-behaviour';\nimport type AdjustableCameraControl3D from '../../../glb-viewer-core/src/camera-control/adjustable-camera-control-3d';\nimport { type Box3 } from 'three';\nimport type { CameraParameter } from './camera-control';\n\nexport default class GlbViewerCameraBehaviour extends CameraBehaviour {\n public get cameraControl(): AdjustableCameraControl3D {\n return this._cameraControl as AdjustableCameraControl3D;\n }\n\n public async updateCameraOnItemLoaded(bounds: Box3) {\n await this.cameraControl.updateAndReset(bounds, true);\n }\n\n public async externalApiMoveCamera(\n cameraParameter: CameraParameter\n ): Promise<void> {\n await this.cameraControl.moveCamera(cameraParameter);\n this._onCameraChanged();\n }\n}\n"],"names":["GlbViewerCameraBehaviour","CameraBehaviour","bounds","cameraParameter"],"mappings":";AAKA,MAAqBA,UAAiCC,EAAgB;AAAA,EACpE,IAAW,gBAA2C;AACpD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,yBAAyBC,GAAc;AAClD,UAAM,KAAK,cAAc,eAAeA,GAAQ,EAAI;AAAA,EACtD;AAAA,EAEA,MAAa,sBACXC,GACe;AACf,UAAM,KAAK,cAAc,WAAWA,CAAe,GACnD,KAAK,iBAAA;AAAA,EACP;AACF;"}
|
package/lib/glb-viewer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./glb-viewer-
|
|
1
|
+
System.register(["./glb-viewer-D-5Zh8iu.js"],function(t,i){"use strict";var e;return{setters:[r=>{e=r.GlbViewer}],execute:function(){new e().boot()}}});
|
|
2
2
|
//# sourceMappingURL=glb-viewer.nomodule.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-04TgUoiW.js"],function(o,L){"use strict";var u,s,m;return{setters:[c=>{u=c.g,s=c.E,m=c.h}],execute:function(){const c=(e,t)=>`${e.x.toFixed(t)},${e.y.toFixed(t)},${e.z.toFixed(t)}`,i=(e,t)=>{let n="";for(let r=0;r<t.length;r++)n+=`<${e}${r+1}>${t[r]}</${e}${r+1}>
|
|
2
2
|
`;return n},A=e=>`<Head>
|
|
3
3
|
<COMM>${e.comm}</COMM>
|
|
4
4
|
<ARTICLENO>${e.articleno}</ARTICLENO>
|
|
@@ -43,4 +43,4 @@ System.register(["./main-CmH0kRDP.js"],function(o,L){"use strict";var u,s,m;retu
|
|
|
43
43
|
</Order>
|
|
44
44
|
</XML>
|
|
45
45
|
`),C=o("getFakeOrderParams",()=>{const e=Math.floor(Math.random()*1e6).toString();return{orderNumber:"Order "+e,dispatchDate:"9/11/1911",basketNumber:e}}),O=o("getFakeHeaderParams",()=>({comm:"Rubens2Rembrand",articleno:"ExampleSIM",customer:"Roomle",retailer:"Retail",client:"Ex ClientName",program:"program",employee:"Homag",textLong:"long long long txt",textShort:"short txt",colour:["colour1","colour2","colour3","colour4","colour5"],info:["1Admin","2Firma_ABC","3Adresse_ABC","4PLZ_ABC","5Stadt_ABC","6","7","8","9","10","11","12"],address:["Admin","Firma_ABC","Adresse_ABC","PLZ_ABC","Stadt_ABC","Kundennummer_ABC","Land_ABC"],billingAddress:["Optional1","Optional2","Optional3","Optional4","Optional5","Optional6"],shippingAddress:["opt","opt","opt","opt","opt","opt"],orderPriceInfo:["000","Price002","Price003","Price004","Price005"],customInfo:["CustInf1","CustInf2","CustInf3","CustInf4","CustInf5","CustInf6","CustInf7","CustInf8","CustInf9","CustInf10"]})),g=o("getFakeArticleParams",()=>({})),N=o("downloadHomagIxExportPoC",async(e,t,n)=>{const r=u(e.objects);let a=[];for(const _ of r){const f=_.configurationRuntimeId;try{const I=JSON.parse(t.generateExport(s.HOMAGiX,f,n));a=a.concat(I.articles)}catch(I){return console.error(I),Promise.reject(`Could not create export JSON ${s.HOMAGiX}`)}}const l=C(),R=O(),d=g(),T=E(l,R,d,{articles:a});return m("IMOSiX.xml",T),Promise.resolve()}),p=o("generateExportHomagIxConfiguration",async(e,t,n,r,a="")=>{try{return n.setDefaultExportDataDefinition(a),Promise.resolve(JSON.parse(n.generateExport(t,e,r)))}catch(l){return console.error(l),Promise.reject(`Could not create export JSON ${t}`)}}),S=o("homagIxMockUpData",(e,t={},n={},r={})=>(t=C(),n=O(),r=g(),E(t,n,r,e)))}}});
|
|
46
|
-
//# sourceMappingURL=imos-ix-poc-export-helper-
|
|
46
|
+
//# sourceMappingURL=imos-ix-poc-export-helper-BgbWS04l.js.map
|