@roomle/web-sdk 3.8.0 → 3.9.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/ConfiguratorKernel.wasm +0 -0
- package/lib/{GLTFExporter-BqjC9LhS.mjs → GLTFExporter-yfYOtLdk.mjs} +2 -2
- package/lib/{GLTFExporter-BqjC9LhS.mjs.map → GLTFExporter-yfYOtLdk.mjs.map} +1 -1
- package/lib/RoomleCore.js +3 -3
- package/lib/RoomleCore.wasm +0 -0
- package/lib/RoomleToolsCore.wasm +0 -0
- package/lib/{USDZExporter-qUD2VgwK.mjs → USDZExporter-DFJQYX8l.mjs} +2 -2
- package/lib/{USDZExporter-qUD2VgwK.mjs.map → USDZExporter-DFJQYX8l.mjs.map} +1 -1
- package/lib/{api-CbHAzwVm.mjs → api-s0Yey2rD.mjs} +12 -12
- package/lib/api-s0Yey2rD.mjs.map +1 -0
- package/lib/asset-loader.worker-A7nEeQB4.mjs.map +1 -1
- package/lib/{banana-for-scale-DiBCpVNM.mjs → banana-for-scale-CFY_5rk1.mjs} +4 -4
- package/lib/{banana-for-scale-DiBCpVNM.mjs.map → banana-for-scale-CFY_5rk1.mjs.map} +1 -1
- package/lib/budgeteer.sw-CQWYbQSc.mjs.map +1 -1
- package/lib/{common-utils-AB4Lnet3.mjs → common-utils-L3DF6Ey5.mjs} +2 -2
- package/lib/{common-utils-AB4Lnet3.mjs.map → common-utils-L3DF6Ey5.mjs.map} +1 -1
- package/lib/{component-dimensioning-LUnZnpqG.mjs → component-dimensioning-DmcHgmpq.mjs} +44 -38
- package/lib/component-dimensioning-DmcHgmpq.mjs.map +1 -0
- package/lib/{component-raycast-helper-Bl0mWPcj.mjs → component-raycast-helper-cJxdYLXm.mjs} +28 -28
- package/lib/{component-raycast-helper-Bl0mWPcj.mjs.map → component-raycast-helper-cJxdYLXm.mjs.map} +1 -1
- package/lib/configurator-CC0uDa2i.mjs +2 -0
- package/lib/configurator-CxsFgHxg.mjs +45 -0
- package/lib/{configurator-CP80d0HI.mjs.map → configurator-CxsFgHxg.mjs.map} +1 -1
- package/lib/{continuous-drawing-helper-BlRy7u2t.mjs → continuous-drawing-helper-DEmx54k_.mjs} +3 -3
- package/lib/{continuous-drawing-helper-BlRy7u2t.mjs.map → continuous-drawing-helper-DEmx54k_.mjs.map} +1 -1
- package/lib/{decorate-Bck1_lG8.mjs → decorate-C9r0zXzz.mjs} +1 -1
- package/lib/{decorate-Bck1_lG8.mjs.map → decorate-C9r0zXzz.mjs.map} +1 -1
- package/lib/{dimensioning-helper-vPhGfHd-.mjs → dimensioning-helper-BXD6AEqL.mjs} +28 -21
- package/lib/dimensioning-helper-BXD6AEqL.mjs.map +1 -0
- package/lib/dimensioning-helper-Do9jwg8T.mjs +2 -0
- package/lib/glb-viewer-DyHnMYi0.mjs +2 -0
- package/lib/{glb-viewer-B7pA8K_w.mjs → glb-viewer-I86nXb0A.mjs} +69 -69
- package/lib/{glb-viewer-B7pA8K_w.mjs.map → glb-viewer-I86nXb0A.mjs.map} +1 -1
- package/lib/{highlight-coordinator-DeB46jQq.mjs → highlight-coordinator-DvgAfvb2.mjs} +3 -3
- package/lib/{highlight-coordinator-DeB46jQq.mjs.map → highlight-coordinator-DvgAfvb2.mjs.map} +1 -1
- package/lib/{homag-intelligence-f1JD0An1.mjs → homag-intelligence-Bt--x6_f.mjs} +23 -9
- package/lib/homag-intelligence-Bt--x6_f.mjs.map +1 -0
- package/lib/{imos-ix-poc-export-helper-Vyv-uuNs.mjs → imos-ix-poc-export-helper-C9wPB6fl.mjs} +3 -3
- package/lib/{imos-ix-poc-export-helper-Vyv-uuNs.mjs.map → imos-ix-poc-export-helper-C9wPB6fl.mjs.map} +1 -1
- package/lib/kernel-C7YDLxq8.mjs.map +1 -1
- package/lib/{kernel-utils-BG1uqfT_.mjs → kernel-utils-B5QlsCwn.mjs} +15 -7
- package/lib/kernel-utils-B5QlsCwn.mjs.map +1 -0
- package/lib/{layer-BfckfWZz.mjs → layer-C_JtkhdO.mjs} +1 -1
- package/lib/{layer-BfckfWZz.mjs.map → layer-C_JtkhdO.mjs.map} +1 -1
- package/lib/{main-CuqGqemT.mjs → main-DeOPstVA.mjs} +37244 -3141
- package/lib/main-DeOPstVA.mjs.map +1 -0
- package/lib/{material-viewer-Cij9aWpI.mjs → material-viewer-D8Qdq6-m.mjs} +55 -55
- package/lib/material-viewer-D8Qdq6-m.mjs.map +1 -0
- package/lib/packages-eckwotTn.mjs +4 -0
- package/lib/{planner-DKbmQVSf.mjs → planner-BWZr-Th2.mjs} +14 -14
- package/lib/{planner-DKbmQVSf.mjs.map → planner-BWZr-Th2.mjs.map} +1 -1
- package/lib/planner-D3jvWraY.mjs +2 -0
- package/lib/{plugin-system-BEZnFUyT.mjs → plugin-system-BBgoIai2.mjs} +3 -3
- package/lib/{plugin-system-BEZnFUyT.mjs.map → plugin-system-BBgoIai2.mjs.map} +1 -1
- package/lib/roomle-headless-setup-CMK-quZI.mjs.map +1 -1
- package/lib/roomle-headless.d.ts +279 -38
- package/lib/roomle-headless.js +42 -41
- package/lib/roomle-headless.js.map +1 -1
- package/lib/{roomle-renderer-BgT28pfp.mjs → roomle-renderer-CkSFbpmg.mjs} +2 -2
- package/lib/{roomle-renderer-BgT28pfp.mjs.map → roomle-renderer-CkSFbpmg.mjs.map} +1 -1
- package/lib/roomle-sdk.d.ts +279 -38
- package/lib/roomle-sdk.js +8 -7
- package/lib/{roomle-webgpu-renderer-BdCItfH1.mjs → roomle-webgpu-renderer-Cs4eLEwf.mjs} +690 -280
- package/lib/roomle-webgpu-renderer-Cs4eLEwf.mjs.map +1 -0
- package/lib/{scene-renderer-Bdl7umAf.mjs → scene-renderer-4zk6BXsR.mjs} +228 -228
- package/lib/{scene-renderer-Bdl7umAf.mjs.map → scene-renderer-4zk6BXsR.mjs.map} +1 -1
- package/lib/{script-loader-BtWHegD-.mjs → script-loader-DSL6zJat.mjs} +9 -9
- package/lib/{script-loader-BtWHegD-.mjs.map → script-loader-DSL6zJat.mjs.map} +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/package.json +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.d.ts +7 -3
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.js +2 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/configuratorCoreInterface.js.map +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.d.ts +37 -3
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.js +12 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/src/embind/plannerCoreInterface.js.map +1 -1
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.js +3 -3
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
- package/lib/{stats-helper-BvDfWWfq.mjs → stats-helper-DyRFKnMs.mjs} +3 -3
- package/lib/{stats-helper-BvDfWWfq.mjs.map → stats-helper-DyRFKnMs.mjs.map} +1 -1
- package/lib/{three.core-K1JzUaep.mjs → three.core-DNErG1F6.mjs} +1 -1
- package/lib/{three.core-K1JzUaep.mjs.map → three.core-DNErG1F6.mjs.map} +1 -1
- package/lib/{three.module-Q2K9uyhi.mjs → three.module-BZkESKo3.mjs} +2 -2
- package/lib/{three.module-Q2K9uyhi.mjs.map → three.module-BZkESKo3.mjs.map} +1 -1
- package/lib/{three.webgpu-7v7o6Pxs.mjs → three.webgpu-C8myBXe1.mjs} +2 -2
- package/lib/{three.webgpu-7v7o6Pxs.mjs.map → three.webgpu-C8myBXe1.mjs.map} +1 -1
- package/lib/three.webgpu-WIkDzwXU.mjs +3 -0
- package/lib/{threejs-utils-BzXU2M3w.mjs → threejs-utils-fEhH05zP.mjs} +103 -87
- package/lib/threejs-utils-fEhH05zP.mjs.map +1 -0
- package/lib/{tools-core-BoxckhTR.mjs → tools-core-Bf4_WCg8.mjs} +5 -5
- package/lib/{tools-core-BoxckhTR.mjs.map → tools-core-Bf4_WCg8.mjs.map} +1 -1
- package/package.json +5 -2
- package/lib/api-CbHAzwVm.mjs.map +0 -1
- package/lib/component-dimensioning-LUnZnpqG.mjs.map +0 -1
- package/lib/configurator-BmJX0gB5.mjs +0 -2
- package/lib/configurator-CP80d0HI.mjs +0 -45
- package/lib/dimensioning-helper-5xsc6I7Y.mjs +0 -2
- package/lib/dimensioning-helper-vPhGfHd-.mjs.map +0 -1
- package/lib/glb-viewer-XFEP993c.mjs +0 -2
- package/lib/homag-intelligence-f1JD0An1.mjs.map +0 -1
- package/lib/kernel-utils-BG1uqfT_.mjs.map +0 -1
- package/lib/main-CuqGqemT.mjs.map +0 -1
- package/lib/material-viewer-Cij9aWpI.mjs.map +0 -1
- package/lib/packages-DALvuVA_.mjs +0 -4
- package/lib/planner-CVn2Lls0.mjs +0 -2
- package/lib/roomle-webgpu-renderer-BdCItfH1.mjs.map +0 -1
- package/lib/three.webgpu-ChguPx4k.mjs +0 -3
- package/lib/threejs-utils-BzXU2M3w.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dimensioning-helper-vPhGfHd-.mjs","names":[],"sources":["../../packages/common-core/src/async-guard.ts","../../../../node_modules/three/examples/jsm/renderers/CSS2DRenderer.js","../../packages/configurator-core/src/utils/dimensioning-helper.ts"],"sourcesContent":["export default class AsyncGuard<T> {\n public info: any;\n private _promise: Promise<T>;\n private _resolve: (value?: T | PromiseLike<T>) => void;\n private _reject: (error: Error) => void;\n\n constructor(info?: any) {\n this.info = info;\n this._init();\n }\n\n private _init() {\n this._promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n public resolve(value?: any): void {\n if (value) {\n this._resolve(value);\n }\n this._resolve();\n }\n\n public reject(e: Error): void {\n this._reject(e);\n }\n\n public wait(): Promise<T> {\n return this._promise;\n }\n\n public reset() {\n this._init();\n }\n}\n","import {\n\tMatrix4,\n\tObject3D,\n\tVector2,\n\tVector3\n} from 'three';\n\n/**\n * The only type of 3D object that is supported by {@link CSS2DRenderer}.\n *\n * @augments Object3D\n * @three_import import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DObject extends Object3D {\n\n\t/**\n\t * Constructs a new CSS2D object.\n\t *\n\t * @param {HTMLElement} [element] - The DOM element.\n\t */\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCSS2DObject = true;\n\n\t\t/**\n\t\t * The DOM element which defines the appearance of this 3D object.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.element = element;\n\n\t\tthis.element.style.position = 'absolute';\n\t\tthis.element.style.userSelect = 'none';\n\n\t\tthis.element.setAttribute( 'draggable', false );\n\n\t\t/**\n\t\t * The 3D objects center point.\n\t\t * `( 0, 0 )` is the lower left, `( 1, 1 )` is the top right.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif (\n\t\t\t\t\tobject.element &&\n\t\t\t\t\tobject.element instanceof object.element.ownerDocument.defaultView.Element &&\n\t\t\t\t\tobject.element.parentNode !== null\n\t\t\t\t) {\n\n\t\t\t\t\tobject.element.remove();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.element = source.element.cloneNode( true );\n\n\t\tthis.center = source.center;\n\n\t\treturn this;\n\n\t}\n\n}\n\n//\n\nconst _vector = new Vector3();\nconst _viewMatrix = new Matrix4();\nconst _viewProjectionMatrix = new Matrix4();\nconst _a = new Vector3();\nconst _b = new Vector3();\n\n/**\n * This renderer is a simplified version of {@link CSS3DRenderer}. The only transformation that is\n * supported is translation.\n *\n * The renderer is very useful if you want to combine HTML based labels with 3D objects. Here too,\n * the respective DOM elements are wrapped into an instance of {@link CSS2DObject} and added to the\n * scene graph. All other types of renderable 3D objects (like meshes or point clouds) are ignored.\n *\n * `CSS2DRenderer` only supports 100% browser and display zoom.\n *\n * @three_import import { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';\n */\nclass CSS2DRenderer {\n\n\t/**\n\t * Constructs a new CSS2D renderer.\n\t *\n\t * @param {CSS2DRenderer~Parameters} [parameters] - The parameters.\n\t */\n\tconstructor( parameters = {} ) {\n\n\t\tconst _this = this;\n\n\t\tlet _width, _height;\n\t\tlet _widthHalf, _heightHalf;\n\n\t\tconst cache = {\n\t\t\tobjects: new WeakMap()\n\t\t};\n\n\t\tconst domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );\n\n\t\tdomElement.style.overflow = 'hidden';\n\n\t\t/**\n\t\t * The DOM where the renderer appends its child-elements.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements.\n\t\t * If set to `true`, z-index values are assigned first based on the `renderOrder`\n\t\t * and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * Returns an object containing the width and height of the renderer.\n\t\t *\n\t\t * @return {{width:number,height:number}} The size of the renderer.\n\t\t */\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\t/**\n\t\t * Renders the given scene using the given camera.\n\t\t *\n\t\t * @param {Object3D} scene - A scene or any other type of 3D object.\n\t\t * @param {Camera} camera - The camera.\n\t\t */\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\t_viewMatrix.copy( camera.matrixWorldInverse );\n\t\t\t_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );\n\n\t\t\trenderObject( scene, scene, camera );\n\t\t\tif ( this.sortObjects ) zOrder( scene );\n\n\t\t};\n\n\t\t/**\n\t\t * Resizes the renderer to the given width and height.\n\t\t *\n\t\t * @param {number} width - The width of the renderer.\n\t\t * @param {number} height - The height of the renderer.\n\t\t */\n\t\tthis.setSize = function ( width, height ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_widthHalf = _width / 2;\n\t\t\t_heightHalf = _height / 2;\n\n\t\t\tdomElement.style.width = width + 'px';\n\t\t\tdomElement.style.height = height + 'px';\n\n\t\t};\n\n\t\tfunction hideObject( object ) {\n\n\t\t\tif ( object.isCSS2DObject ) object.element.style.display = 'none';\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\thideObject( object.children[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera ) {\n\n\t\t\tif ( object.visible === false ) {\n\n\t\t\t\thideObject( object );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( object.isCSS2DObject ) {\n\n\t\t\t\t_vector.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t_vector.applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\tconst visible = ( _vector.z >= - 1 && _vector.z <= 1 ) && ( object.layers.test( camera.layers ) === true );\n\n\t\t\t\tconst element = object.element;\n\t\t\t\telement.style.display = visible === true ? '' : 'none';\n\n\t\t\t\tif ( visible === true ) {\n\n\t\t\t\t\tobject.onBeforeRender( _this, scene, camera );\n\n\t\t\t\t\telement.style.transform = 'translate(' + ( - 100 * object.center.x ) + '%,' + ( - 100 * object.center.y ) + '%)' + 'translate(' + ( _vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - _vector.y * _heightHalf + _heightHalf ) + 'px)';\n\n\t\t\t\t\tif ( element.parentNode !== domElement ) {\n\n\t\t\t\t\t\tdomElement.appendChild( element );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.onAfterRender( _this, scene, camera );\n\n\t\t\t\t}\n\n\t\t\t\tconst objectData = {\n\t\t\t\t\tdistanceToCameraSquared: getDistanceToSquared( camera, object )\n\t\t\t\t};\n\n\t\t\t\tcache.objects.set( object, objectData );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\trenderObject( object.children[ i ], scene, camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getDistanceToSquared( object1, object2 ) {\n\n\t\t\t_a.setFromMatrixPosition( object1.matrixWorld );\n\t\t\t_b.setFromMatrixPosition( object2.matrixWorld );\n\n\t\t\treturn _a.distanceToSquared( _b );\n\n\t\t}\n\n\t\tfunction filterAndFlatten( scene ) {\n\n\t\t\tconst result = [];\n\n\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isCSS2DObject ) result.push( object );\n\n\t\t\t} );\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction zOrder( scene ) {\n\n\t\t\tconst sorted = filterAndFlatten( scene ).sort( function ( a, b ) {\n\n\t\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\t\treturn b.renderOrder - a.renderOrder;\n\n\t\t\t\t}\n\n\t\t\t\tconst distanceA = cache.objects.get( a ).distanceToCameraSquared;\n\t\t\t\tconst distanceB = cache.objects.get( b ).distanceToCameraSquared;\n\n\t\t\t\treturn distanceA - distanceB;\n\n\t\t\t} );\n\n\t\t\tconst zMax = sorted.length;\n\n\t\t\tfor ( let i = 0, l = sorted.length; i < l; i ++ ) {\n\n\t\t\t\tsorted[ i ].element.style.zIndex = zMax - i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Constructor parameters of `CSS2DRenderer`.\n *\n * @typedef {Object} CSS2DRenderer~Parameters\n * @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.\n * If not passed in here, a new div element will be created.\n **/\n\nexport { CSS2DObject, CSS2DRenderer };\n","import inject from '../../../common-core/src/di/inject';\nimport AsyncGuard from '../../../common-core/src/async-guard';\nimport type { Object3D } from 'three';\nimport { Group, type Scene } from 'three';\nimport { Box3 } from 'three';\nimport {\n BufferAttribute,\n BufferGeometry,\n Line,\n Line3,\n LineBasicMaterial,\n Vector3,\n} from 'three';\nimport { type KernelCube } from '../../../typings/kernel';\nimport { convertToTHREE } from '../../../common-core/src/utils/kernel-utils';\nimport type UnitFormatter from '../services/unit-formatter';\nimport { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer.js';\nimport { LAYER } from '../../../common-core/src/webgl/layer';\n\nexport const DIMENSIONING_GEOMETRY = 'dimensioning';\nexport const DIMENSION_LINE_OFFSET = 0.08;\nexport const MIN_CAMERA_DISTANCE_RATIO = 1.2;\nexport const FADE_DISTANCE_RATIO = 2.0;\nexport const EXTENSION_LINE_LENGTH_RATIO = 0.03;\n\nexport interface DimensionLineConfig {\n mainLine: Line3;\n extensionLines: Line3[];\n}\n\nconst LINE_COLOR = 0x373737;\n\nexport function createDimensioningHelper(creator: string): DimensioningHelper {\n return new DimensioningHelper(creator);\n}\n\nexport default class DimensioningHelper {\n public _creator_: string;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n private _object: Object3D;\n private _cameraPosition: Vector3 = new Vector3();\n private _onVisibilityChange: (visible: boolean) => void;\n private _initialized: AsyncGuard<void> = new AsyncGuard();\n\n private _origin: Vector3;\n private _dimensions: Vector3;\n\n private _lineMaterial: LineBasicMaterial;\n private readonly _mainLineMaterial: LineBasicMaterial;\n\n private readonly _widthLineGroup: Group;\n private readonly _heightLineGroup: Group;\n private readonly _depthLineGroup: Group;\n\n private _enabled: boolean = false;\n private _dimensionsVisible = false;\n\n private _dimensionLineGroup = new Group();\n\n constructor(creator: string) {\n this._creator_ = creator;\n\n this._lineMaterial = new LineBasicMaterial({\n color: LINE_COLOR,\n linewidth: 2,\n });\n\n this._mainLineMaterial = new LineBasicMaterial({\n color: LINE_COLOR,\n linewidth: 0.001,\n transparent: true,\n opacity: 1.0,\n });\n\n this._dimensionLineGroup.name = DIMENSIONING_GEOMETRY;\n\n this._widthLineGroup = this._createLineGroup('width');\n this._heightLineGroup = this._createLineGroup('height');\n this._depthLineGroup = this._createLineGroup('depth');\n\n this._dimensionLineGroup.add(this._widthLineGroup);\n this._dimensionLineGroup.add(this._heightLineGroup);\n this._dimensionLineGroup.add(this._depthLineGroup);\n\n this.update(false);\n this._initialized.resolve();\n }\n\n private _createLineGroup(_name: string): Group {\n const group = new Group();\n group.name = DIMENSIONING_GEOMETRY;\n group.userData.ignoreComponentRaycast = true;\n return group;\n }\n\n private _createLineFromConfig(\n config: Line3,\n material: LineBasicMaterial,\n ): Line {\n const geometry = new BufferGeometry();\n const vertices = [\n config.start.x,\n config.start.y,\n config.start.z,\n config.end.x,\n config.end.y,\n config.end.z,\n ];\n geometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(vertices), 3),\n );\n const line = new Line(geometry, material);\n line.name = DIMENSIONING_GEOMETRY;\n line.userData.ignoreComponentRaycast = true;\n line.layers.set(LAYER.DIMENSIONS);\n return line;\n }\n\n private addLinesToLineGroup(\n group: Group,\n config: DimensionLineConfig,\n mainMaterial: LineBasicMaterial,\n extMaterial: LineBasicMaterial,\n ) {\n config.extensionLines.forEach((extLine) => {\n group.add(this._createLineFromConfig(extLine, extMaterial));\n });\n\n group.add(this._createLineFromConfig(config.mainLine, mainMaterial));\n }\n\n private clearLineGroup(group: Group) {\n while (group.children.length > 0) {\n const child = group.children[0];\n if (child instanceof Line) {\n child.geometry.dispose();\n }\n group.remove(child);\n }\n }\n\n private addLabelToLineGroup(\n group: Group,\n labelText: string,\n labelWorldPosition: Vector3,\n ): void {\n const labelHtmlDiv = document.createElement('div');\n labelHtmlDiv.classList.add(\n 'dimension-label',\n 'dimension-label--primary',\n 'dimension-label--disabled',\n );\n const labelHtmlSpan = document.createElement('span');\n labelHtmlSpan.classList.add('dimension-label__value');\n labelHtmlSpan.innerHTML = labelText;\n labelHtmlDiv.appendChild(labelHtmlSpan);\n\n const labelObject = new CSS2DObject(labelHtmlDiv);\n const labelLocalPosition =\n this._dimensionLineGroup.worldToLocal(labelWorldPosition);\n labelObject.position.copy(labelLocalPosition);\n\n group.add(labelObject);\n }\n\n private _getWidthLineConfig(): DimensionLineConfig {\n const offset = DIMENSION_LINE_OFFSET;\n const extLength = EXTENSION_LINE_LENGTH_RATIO;\n const y = this._dimensions.y + offset;\n const localCam = this._getLocalCameraPosition();\n const z = localCam.z < this._dimensions.z / 2 ? 0 : this._dimensions.z;\n\n return {\n mainLine: new Line3(\n new Vector3(0, y, z),\n new Vector3(this._dimensions.x, y, z),\n ),\n extensionLines: [\n new Line3(\n new Vector3(0, y - extLength, z),\n new Vector3(0, y + extLength, z),\n ),\n new Line3(\n new Vector3(this._dimensions.x, y - extLength, z),\n new Vector3(this._dimensions.x, y + extLength, z),\n ),\n ],\n };\n }\n\n private _getDepthLineConfig(): DimensionLineConfig {\n const offset = DIMENSION_LINE_OFFSET;\n const extLength = EXTENSION_LINE_LENGTH_RATIO;\n const y = 0;\n const localCam = this._getLocalCameraPosition();\n const x =\n localCam.x < this._dimensions.x / 2\n ? -offset\n : this._dimensions.x + offset;\n\n return {\n mainLine: new Line3(\n new Vector3(x, y, this._dimensions.z),\n new Vector3(x, y, 0),\n ),\n extensionLines: [\n new Line3(\n new Vector3(x - extLength, y, 0),\n new Vector3(x + extLength, y, 0),\n ),\n new Line3(\n new Vector3(x - extLength, y, this._dimensions.z),\n new Vector3(x + extLength, y, this._dimensions.z),\n ),\n ],\n };\n }\n\n private _getHeightLineConfig(): DimensionLineConfig {\n const offset = DIMENSION_LINE_OFFSET;\n const extLength = EXTENSION_LINE_LENGTH_RATIO;\n const localCam = this._getLocalCameraPosition();\n const x =\n localCam.x < this._dimensions.x / 2\n ? -offset\n : this._dimensions.x + offset;\n const z = localCam.z < this._dimensions.z / 2 ? 0 : this._dimensions.z;\n\n return {\n mainLine: new Line3(\n new Vector3(x, 0, z),\n new Vector3(x, this._dimensions.y, z),\n ),\n extensionLines: [\n new Line3(\n new Vector3(x - extLength, 0, z),\n new Vector3(x + extLength, 0, z),\n ),\n new Line3(\n new Vector3(x - extLength, this._dimensions.y, z),\n new Vector3(x + extLength, this._dimensions.y, z),\n ),\n ],\n };\n }\n\n private _getLocalCameraPosition(): Vector3 {\n if (\n !this._cameraPosition ||\n !this._dimensionLineGroup ||\n !this._dimensions\n ) {\n return new Vector3(0, 0, 0);\n }\n return this._dimensionLineGroup.worldToLocal(this._cameraPosition.clone());\n }\n\n private _getCameraDistanceInfo(): {\n tooClose: boolean;\n opacity: number;\n distance: number;\n } {\n if (!this._object || !this._cameraPosition || !this._dimensions) {\n return { tooClose: false, opacity: 1.0, distance: Infinity };\n }\n const objPos = this._object.getWorldPosition(new Vector3());\n const distance = this._cameraPosition.distanceTo(objPos);\n const objectRadius =\n Math.max(this._dimensions.x, this._dimensions.y, this._dimensions.z) / 2;\n const minThreshold = objectRadius * MIN_CAMERA_DISTANCE_RATIO;\n const fadeThreshold = objectRadius * FADE_DISTANCE_RATIO;\n\n if (distance < minThreshold) {\n return { tooClose: true, opacity: 0, distance };\n }\n if (distance < fadeThreshold) {\n const opacity =\n (distance - minThreshold) / (fadeThreshold - minThreshold);\n return {\n tooClose: false,\n opacity: Math.max(0, Math.min(1, opacity)),\n distance,\n };\n }\n return { tooClose: false, opacity: 1.0, distance };\n }\n\n private _visibilityChangedCallback() {\n if (this._onVisibilityChange) {\n this._onVisibilityChange(this._dimensionsVisible);\n }\n }\n\n public update(force: boolean = false) {\n if (this._enabled && !this._dimensionsVisible) {\n this._dimensionsVisible = true;\n this._visibilityChangedCallback();\n }\n this._performUpdate(force);\n }\n\n public updateSize(boxForMeasurement: KernelCube) {\n this._origin = convertToTHREE(boxForMeasurement.origin);\n this._dimensionLineGroup.position.x =\n this._origin.x - this._object.position.x;\n this._dimensionLineGroup.position.y =\n this._origin.y - this._object.position.y;\n this._dimensionLineGroup.position.z =\n this._origin.z - this._object.position.z;\n this._dimensions = convertToTHREE(boxForMeasurement.size);\n this.update();\n }\n\n public removeFromObject(object: Object3D) {\n if (object) {\n object.remove(this._dimensionLineGroup);\n }\n }\n\n public onDimensionsVisibilityChanged(handler: (visible: boolean) => void) {\n this._onVisibilityChange = handler;\n }\n\n public setObject(object: Object3D): void {\n this._object = object;\n }\n\n public isInitialized(): Promise<void> {\n return this._initialized.wait();\n }\n\n public areDimensionsEnabled(): boolean {\n return this._enabled;\n }\n\n public clearScene(_scene: Scene): void {\n this._clear();\n }\n\n public addToObject(object: Object3D): void {\n if (!object || !this._dimensionLineGroup) {\n return;\n }\n object.add(this._dimensionLineGroup);\n }\n\n public enableDimensions(): void {\n this._enabled = true;\n this.addToObject(this._object);\n this.update(true);\n }\n\n public disableDimensions(): void {\n this._enabled = false;\n if (this._dimensionsVisible) {\n this._dimensionsVisible = false;\n this._visibilityChangedCallback();\n }\n this._clear();\n this.removeFromObject(this._object);\n }\n\n public enableTopDimensions(): void {\n this.enableDimensions();\n this._heightLineGroup.visible = false;\n this.update(true);\n }\n\n public disableTopDimensions(): void {\n this._heightLineGroup.visible = true;\n this.disableDimensions();\n }\n\n public getBoundingBox(): Box3 {\n const bbox = new Box3();\n bbox.expandByObject(this._dimensionLineGroup);\n return bbox;\n }\n\n public moveCameraStart(position: Vector3): void {\n this._cameraPosition = position;\n this.update();\n }\n\n public moveCameraEnd(position: Vector3): void {\n this._cameraPosition = position;\n this.update();\n }\n\n private _performUpdate(force: boolean): void {\n if (!this._enabled && !force) {\n return;\n }\n if (!this._dimensions) {\n return;\n }\n\n let opacity = 1.0;\n\n if (\n this._object &&\n this._cameraPosition &&\n !this._cameraPosition.equals(new Vector3(0, 0, 0))\n ) {\n const distanceCheck = this._getCameraDistanceInfo();\n if (distanceCheck.tooClose) {\n this._dimensionLineGroup.visible = false;\n } else {\n this._dimensionLineGroup.visible = true;\n opacity = distanceCheck.opacity;\n this._mainLineMaterial.opacity = opacity;\n }\n }\n\n this._dimensionLineGroup.updateMatrixWorld(true);\n\n const widthConfig = this._getWidthLineConfig();\n const widthLabelText = this._unitFormatter.formatMMValueToUnitString(\n this._dimensions.x * 1000,\n );\n const widthPos = this._dimensionLineGroup.localToWorld(\n widthConfig.mainLine.getCenter(new Vector3()),\n );\n this.clearLineGroup(this._widthLineGroup);\n this.addLinesToLineGroup(\n this._widthLineGroup,\n widthConfig,\n this._mainLineMaterial,\n this._mainLineMaterial,\n );\n if (widthLabelText !== null) {\n this.addLabelToLineGroup(this._widthLineGroup, widthLabelText, widthPos);\n }\n\n const heightConfig = this._getHeightLineConfig();\n const heightLabelText = this._unitFormatter.formatMMValueToUnitString(\n this._dimensions.y * 1000,\n );\n const heightPos = this._dimensionLineGroup.localToWorld(\n heightConfig.mainLine.getCenter(new Vector3()),\n );\n this.clearLineGroup(this._heightLineGroup);\n this.addLinesToLineGroup(\n this._heightLineGroup,\n heightConfig,\n this._mainLineMaterial,\n this._mainLineMaterial,\n );\n if (heightLabelText !== null) {\n this.addLabelToLineGroup(\n this._heightLineGroup,\n heightLabelText,\n heightPos,\n );\n }\n\n const depthConfig = this._getDepthLineConfig();\n const depthLabelText = this._unitFormatter.formatMMValueToUnitString(\n this._dimensions.z * -1000,\n );\n const depthPos = this._dimensionLineGroup.localToWorld(\n depthConfig.mainLine.getCenter(new Vector3()),\n );\n this.clearLineGroup(this._depthLineGroup);\n this.addLinesToLineGroup(\n this._depthLineGroup,\n depthConfig,\n this._mainLineMaterial,\n this._mainLineMaterial,\n );\n if (depthLabelText !== null) {\n this.addLabelToLineGroup(this._depthLineGroup, depthLabelText, depthPos);\n }\n }\n\n private _clear(): void {\n this._lineMaterial.dispose();\n this._mainLineMaterial.dispose();\n [this._widthLineGroup, this._heightLineGroup, this._depthLineGroup].forEach(\n (group) => {\n this.clearLineGroup(group);\n },\n );\n }\n}\n"],"x_google_ignoreList":[1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"homag-intelligence-f1JD0An1.mjs","names":["native"],"sources":["../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../packages/homag-intelligence/src/callbacks.ts","../../packages/homag-intelligence/src/orders.ts","../../packages/homag-intelligence/src/debug-logging.ts","../../packages/homag-intelligence/src/homag-intelligence.ts"],"sourcesContent":["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFNckMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFNekQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixHQUFHO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQU8xQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMifQ==","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm5nLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm5nLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsSUFBSSxlQUEwRCxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsR0FBRztJQUV6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztRQUNKLENBQUM7UUFFRCxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMifQ==","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQ2QsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkYsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDIn0=","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakQsU0FBUyxFQUFFLENBQUMsT0FBeUIsRUFBRSxHQUFnQixFQUFFLE1BQWU7SUFDdEUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFHdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBR2xDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlLEVBQUUsQ0FBQyJ9","import type { GlueLogic } from './glue-logic';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { BASE_CONTEXT } from '../../common-core/src/main';\nimport type { SELECTION_MODE } from '../../configurator-core/src/utils/selection-handler';\nimport type { CallbackObjectType } from '../../planner-core/src/utils/planner-scene-utils';\nimport type { SelectionPayload } from '../../planner-core/src/roomle-planner-ui-callback';\nimport { type PlanElementViewModel } from '../../common-core/src/view-model/plan-element-view-model';\nimport type { CancelSelectionReasons } from '../../typings/planner';\n\nexport const initCallbacks = (\n roomlePlanner: RoomlePlanner,\n gluLogic: GlueLogic,\n) => {\n roomlePlanner.callbacks.onCompletelyLoaded = () => {\n gluLogic.groupsCompletelyLoaded();\n };\n\n roomlePlanner.callbacks.onExternalObjectModuleSelected = (\n groupId: string,\n rootModuleId: string | null,\n subModuleId: string | null,\n ) => {\n gluLogic.hiObjectSelection.groupOrModuleSelected(\n groupId,\n rootModuleId,\n subModuleId,\n );\n };\n\n roomlePlanner.callbacks.onContextChanged = (context: BASE_CONTEXT): void => {\n gluLogic.hiObjectSelection.contextChanged(context);\n };\n\n roomlePlanner.callbacks.onSelectionChange = (\n selectionMode: SELECTION_MODE,\n objectType: CallbackObjectType,\n payload: SelectionPayload,\n payloadPromise: Promise<SelectionPayload>,\n planElementViewModel: PlanElementViewModel,\n ): void => {\n gluLogic.hiObjectSelection.selectionChanged(\n selectionMode,\n objectType,\n payload,\n payloadPromise,\n planElementViewModel,\n );\n };\n\n roomlePlanner.callbacks.onSelectionCancel = (\n reason: CancelSelectionReasons,\n ): void => {\n gluLogic.hiObjectSelection.selectionCancel(reason);\n };\n};\n","import { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport type { GlueLogic } from './glue-logic';\nimport type { KernelPlanObject } from '../../typings/kernel';\nimport type { ExternalObjectSnapshotSaveResult } from './external-object-api';\nimport type {\n HiOrder,\n HiOrderData,\n HiOrderHeader,\n} from '#/common/src/hi/hi-types';\n\nconst getISO8601Date = (date = new Date()) => {\n // Get the ISO string (in UTC)\n let isoString = date.toISOString();\n\n // Remove the 'Z' at the end which indicates UTC\n isoString = isoString.slice(0, -1);\n\n // Find the position of milliseconds\n const msPosition = isoString.lastIndexOf('.');\n\n // Get the base timestamp with 3 digits of milliseconds and extend with zeros\n let baseTimestamp = isoString;\n\n if (msPosition !== -1) {\n // Add 4 zeros to extend from 3 to 7 digits of precision\n baseTimestamp = isoString.substring(0, msPosition + 4) + '0000';\n }\n\n // Get timezone offset in minutes and convert to hours and minutes\n const offsetMinutes = date.getTimezoneOffset();\n const offsetHours = Math.abs(Math.floor(offsetMinutes / 60));\n const offsetMins = Math.abs(offsetMinutes % 60);\n\n // Format the offset as +HH:MM or -HH:MM\n const offsetSign = offsetMinutes <= 0 ? '+' : '-';\n const offsetString = `${offsetSign}${String(offsetHours).padStart(\n 2,\n '0',\n )}:${String(offsetMins).padStart(2, '0')}`;\n\n return baseTimestamp + offsetString;\n};\n\nexport const createEmptyOrder = (): HiOrder => {\n return {\n id: (window as any).uuidv4\n ? (window as any).uuidv4()\n : '00000000-0000-0000-0000-000000000000',\n state: 'New',\n orderNumber: '736362',\n orderName: 'Bedroom & bathroom 01',\n orderDescription: 'Lorem ipsum dolor sit amet...',\n project: 'Single family house Müller John',\n personInCharge: 'Joe',\n orderDate: getISO8601Date(),\n deliveryDatePlanned: getISO8601Date(\n new Date(Date.now() + 14 * 24 * 60 * 60 * 1000),\n ),\n addresses: [\n {\n type: 'Delivery, Billing',\n street: 'Musterstraße',\n houseNumber: '1',\n postalCode: '12345',\n city: 'Musterstadt',\n country: 'Deutschland',\n },\n ],\n customerName: 'Müller & Co.',\n customerNumber: '462642',\n createdAt: getISO8601Date(),\n changedAt: getISO8601Date(),\n changedBy: 'Selfish',\n items: [] as any[],\n };\n};\n\nconst _addMerchantPositions = async (\n roomlePlanner: RoomlePlanner,\n groupData: any,\n) => {\n const planOverview = await roomlePlanner.getPlanOverview();\n const count: Record<string, number> = {}; // key is id and value is count\n const itemIds = (\n planOverview.objects as unknown as KernelPlanObject[]\n ).reduce((acc: string[], item: any) => {\n if (item.catalogItemId) {\n if (!count[item.catalogItemId]) {\n count[item.catalogItemId] = 0;\n acc.push(item.catalogItemId);\n }\n count[item.catalogItemId]++;\n }\n return acc;\n }, []);\n const items =\n Array.isArray(itemIds) && itemIds.length > 0\n ? await roomlePlanner.getRapiAccess().getItems(itemIds)\n : [];\n const merchantItems = items.filter((item: any) => {\n if (item.manufacturerSKU !== undefined) {\n item.count = count[item.id];\n return true;\n }\n return false;\n });\n if (Array.isArray(merchantItems) && merchantItems.length > 0) {\n if (!groupData.items) {\n groupData.items = [];\n }\n let posNo = groupData.items.reduce((acc: number, item: any) => {\n if (item.items?.length) {\n return acc + item.items.length;\n }\n return acc;\n }, 0);\n merchantItems.forEach((item) => {\n const pos = {} as any;\n pos.type = 'Position';\n pos.name = (++posNo).toString();\n pos.articleNumber = item.manufacturerSKU;\n pos.articleName = item.label;\n pos.catalog = item.catalog;\n pos.quantity = item.count;\n pos.height = item.displayedHeight;\n pos.width = item.displayedWidth;\n pos.depth = item.displayedDepth;\n pos.color = item.basecolor;\n pos.procurementType = 'PTO';\n pos.additionalData = [];\n if (item.perspectiveImage) {\n pos.additionalData.push({\n category: 'ArticleImage',\n downloadUri: item.perspectiveImage,\n type: 'Image',\n });\n }\n groupData.items.push(pos);\n });\n }\n};\n\nexport default class Orders {\n private _roomlePlanner: RoomlePlanner;\n private _glueLogic: GlueLogic;\n\n constructor(roomlePlanner: RoomlePlanner, glueLogic: GlueLogic) {\n this._roomlePlanner = roomlePlanner;\n this._glueLogic = glueLogic;\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n let orderData = await this._glueLogic.getGroupDataForOrder(planId);\n if (!orderData) {\n return null;\n }\n return await this._fetchOrderDataWithPrice(orderData, orderHeader);\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n const planData = await this._roomlePlanner.saveExternalObjectSnapshot();\n if (!planData) {\n console.error('Could not save plan snapshot before placing order');\n return;\n }\n\n let priceData = withPrice\n ? await this._fetchOrderDataWithPrice(planData.orderData, orderHeader)\n : null;\n\n let order;\n if (priceData) {\n order = priceData.orderData;\n } else {\n order = this._createOrder(orderHeader);\n order.items.push(planData.orderData as never);\n await _addMerchantPositions(this._roomlePlanner, planData.orderData);\n }\n\n // The first item in the order is the one created from the HI objects in the plan\n this._addAdditionalDataToOrder(order.items[0], planData);\n\n await this._glueLogic.hiCallbacks?.onPlaceOrder?.(order);\n }\n\n private _addAdditionalDataToOrder(\n orderData: HiOrderData,\n planData: ExternalObjectSnapshotSaveResult,\n ) {\n if (!Array.isArray(orderData.additionalData)) {\n orderData.additionalData = [];\n }\n if (planData.perspectiveImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'OverviewImage',\n downloadUri: planData.perspectiveImageLink,\n });\n }\n if (planData.topImageLink) {\n orderData.additionalData.push({\n type: 'Image',\n category: 'AboveImage',\n downloadUri: planData.topImageLink,\n });\n }\n if (planData.objectGlbLink) {\n orderData.additionalData.push({\n type: 'ThreeD',\n category: 'ThreeDModel',\n downloadUri: planData.objectGlbLink,\n });\n }\n }\n\n private async _fetchOrderDataWithPrice(\n orderData: HiOrderData,\n orderHeader?: HiOrderHeader,\n ): Promise<any> {\n let order = this._createOrder(orderHeader);\n order.items.push(orderData as never);\n return this._glueLogic.hiCallbacks?.onFetchPrice?.(order) ?? null;\n }\n\n private _createOrder(orderHeader?: HiOrderHeader): HiOrder {\n return orderHeader\n ? {\n ...orderHeader,\n items: [],\n }\n : createEmptyOrder();\n }\n}\n","import type { HiCallbacks, HiOrderData } from '#/common/src/hi/hi-types';\nimport type {\n GlueLogic,\n LibraryData,\n RoomDesignerRequests,\n ValidContainerModules,\n} from './glue-logic';\nimport type { ExternalObjectGroup } from 'roomle-core-hsc/src/embind/plannerCoreInterface';\nimport type { ExternalModuleInformation } from '../../typings/kernel';\nimport type {\n CheckDropDownResult,\n PosArticle,\n PosGroup,\n PosSaveData,\n} from './model/oc-scripts-domain.model';\nimport type { HiObjectSelectionApi } from './hi-object-selection';\nimport type {\n ExternalObjectSnapshotSaveResult,\n ExternalRoomInformation,\n LoadExternalObjectOptions,\n} from './external-object-api';\n\nexport class GlueLayerRequestDebugLogging implements GlueLogic {\n private _glueLogic: GlueLogic;\n private _hiCallbacks: HiCallbacks;\n\n constructor(glueLogic: GlueLogic, hiCallbacks: HiCallbacks) {\n this._glueLogic = glueLogic;\n this._hiCallbacks = hiCallbacks;\n }\n\n public get hiCallbacks(): HiCallbacks | null {\n return this._hiCallbacks;\n }\n\n public get hiObjectSelection(): HiObjectSelectionApi {\n return this._glueLogic.hiObjectSelection;\n }\n\n private _logRequest(\n message: string,\n ...args: Array<string | null | undefined>\n ) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI REQUEST', messageAndArgs);\n }\n\n public isLibraryLoaded(libraryId: string): boolean {\n return this._glueLogic.isLibraryLoaded(libraryId);\n }\n\n public getLibraryData(libraryId: string): LibraryData | null {\n return this._glueLogic.getLibraryData(libraryId);\n }\n\n public addLibrary(libraryData: LibraryData): Promise<void> {\n this._logRequest('addLibrary', libraryData.libraryId);\n return this._glueLogic.addLibrary(libraryData);\n }\n\n public setPosDataForLoading(posData: PosSaveData | null): Promise<void> {\n this._logRequest('setPosDataForLoading', posData ? 'set' : 'null');\n return this._glueLogic.setPosDataForLoading(posData);\n }\n\n public loadPosData(articleCatalogJson: any, libraryId: string): void {\n this._logRequest('loadPosData', libraryId);\n this._glueLogic.loadPosData(articleCatalogJson, libraryId);\n }\n\n public async mergeGroups(\n targetGroup: ExternalObjectGroup,\n idsOfGroupsMerged: string | string[],\n idOfTargetRootModule: string,\n mergedWithDragging: boolean,\n ): Promise<void> {\n this._logRequest(\n 'mergeGroups',\n targetGroup.groupId,\n JSON.stringify(idsOfGroupsMerged),\n idOfTargetRootModule,\n );\n return this._glueLogic.mergeGroups(\n targetGroup,\n idsOfGroupsMerged,\n idOfTargetRootModule,\n mergedWithDragging,\n );\n }\n\n public deleteRootModule(\n remainingGroup: ExternalObjectGroup,\n rootModuleIdToDelete: string,\n splitOffGroups: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'deleteRootModule',\n JSON.stringify(remainingGroup),\n rootModuleIdToDelete,\n JSON.stringify(splitOffGroups),\n );\n return this._glueLogic.deleteRootModule(\n remainingGroup,\n rootModuleIdToDelete,\n splitOffGroups,\n );\n }\n\n public splitRootModuleFromGroup(\n splitGroup: ExternalObjectGroup,\n newGroupedRootModules: ExternalObjectGroup[],\n ): Promise<void> {\n this._logRequest(\n 'splitRootModuleFromGroup',\n JSON.stringify(splitGroup),\n JSON.stringify(newGroupedRootModules),\n );\n return this._glueLogic.splitRootModuleFromGroup(\n splitGroup,\n newGroupedRootModules,\n );\n }\n\n public async duplicateGroup(\n duplicatedGroup: ExternalObjectGroup,\n ): Promise<void> {\n this._logRequest('duplicateGroup', duplicatedGroup.groupId);\n return this._glueLogic.duplicateGroup(duplicatedGroup);\n }\n\n public modifyAttribute(\n groupId: string,\n moduleIdObjects: ExternalModuleInformation[],\n attributeName: string,\n value: string,\n ): Promise<void> {\n this._logRequest(\n 'modifyAttribute',\n groupId,\n JSON.stringify(moduleIdObjects),\n attributeName,\n value,\n );\n return this._glueLogic.modifyAttribute(\n groupId,\n moduleIdObjects,\n attributeName,\n value,\n );\n }\n\n public updateAttribute(\n rootModuleId: string,\n moduleId: string | null,\n attributeId: string,\n attributeValue: string | boolean,\n ): Promise<void> {\n this._logRequest(\n 'updateAttribute',\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue.toString(),\n );\n return this._glueLogic.updateAttribute(\n rootModuleId,\n moduleId,\n attributeId,\n attributeValue,\n );\n }\n\n public getVerifiedAttributeOptions(\n moduleId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedAttributeOptions',\n moduleId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedAttributeOptions(moduleId, attributeIds);\n }\n\n public getVerifiedGroupAttributeOptions(\n groupId: string,\n attributeIds?: string | string[],\n ): Promise<Record<string, CheckDropDownResult> | undefined> {\n this._logRequest(\n 'getVerifiedGroupAttributeOptions',\n groupId,\n attributeIds ? JSON.stringify(attributeIds) : '[]',\n );\n return this._glueLogic.getVerifiedGroupAttributeOptions(\n groupId,\n attributeIds,\n );\n }\n\n public updateProperty(\n rootModuleId?: string,\n propertyName?: string,\n propertyValue?: string | number | boolean,\n ): void {\n this._logRequest(\n 'updateProperty',\n rootModuleId ?? 'undefined',\n propertyName ?? 'undefined',\n propertyValue?.toString() ?? 'undefined',\n );\n this._glueLogic.updateProperty(rootModuleId, propertyName, propertyValue);\n }\n\n public findValidSubArticles(posGroupIds: string[] | string): PosArticle[] {\n this._logRequest(\n 'findValidSubArticles',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n );\n return this._glueLogic.findValidSubArticles(posGroupIds);\n }\n\n public getValidContainerModulesForSubArticle(\n posGroupIds: string[] | string,\n subArticleId: string,\n ): ValidContainerModules[] {\n this._logRequest(\n 'getValidContainerModulesForSubArticle',\n Array.isArray(posGroupIds) ? JSON.stringify(posGroupIds) : posGroupIds,\n subArticleId,\n );\n return this._glueLogic.getValidContainerModulesForSubArticle(\n posGroupIds,\n subArticleId,\n );\n }\n\n public addSubArticle(\n articleId: string,\n rootModuleId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): void {\n this._logRequest(\n 'addSubArticle',\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition ? JSON.stringify(insertPosition) : 'undefined',\n );\n return this._glueLogic.addSubArticle(\n articleId,\n rootModuleId,\n parentModuleId,\n insertPosition,\n );\n }\n\n public deleteSubArticles(\n groupId: string,\n subModuleIds: string[] | string,\n ): Promise<void> {\n this._logRequest(\n 'deleteSubArticles',\n groupId,\n Array.isArray(subModuleIds) ? JSON.stringify(subModuleIds) : subModuleIds,\n );\n return this._glueLogic.deleteSubArticles(groupId, subModuleIds);\n }\n\n public swapRootModule(\n groupId: string,\n rootModuleId: string,\n articleId: string,\n ): Promise<void> {\n this._logRequest('swapRootModule', groupId, rootModuleId, articleId);\n return this._glueLogic.swapRootModule(groupId, rootModuleId, articleId);\n }\n\n public arrangeRootModulesOfGroup(\n changedGroup: ExternalObjectGroup,\n ): Promise<void> {\n this._logRequest('arrangeRootModulesOfGroup', JSON.stringify(changedGroup));\n return this._glueLogic.arrangeRootModulesOfGroup(changedGroup);\n }\n\n public changedGroupPlanningSituation(\n changedGroup: ExternalObjectGroup,\n objectPositionChanged: boolean,\n ): Promise<void> {\n this._logRequest(\n 'changedGroupPlanningSituation',\n changedGroup.groupId,\n objectPositionChanged.toString(),\n );\n return this._glueLogic.changedGroupPlanningSituation(\n changedGroup,\n objectPositionChanged,\n );\n }\n\n public changedGroupFromHistory(\n posDataJson: PosGroup,\n reloadGroup: boolean,\n ): void {\n this._logRequest(\n 'changedGroupFromHistory',\n posDataJson.id,\n reloadGroup.toString(),\n );\n this._glueLogic.changedGroupFromHistory(posDataJson, reloadGroup);\n }\n\n public loadedGroup(posDataJson: PosGroup): Promise<void> {\n this._logRequest('loadedGroup', posDataJson.id);\n return this._glueLogic.loadedGroup(posDataJson);\n }\n\n public groupsCompletelyLoaded(): void {\n this._logRequest('groupsCompletelyLoaded');\n this._glueLogic.groupsCompletelyLoaded();\n }\n\n public removedGroup(groupId: string): void {\n this._logRequest('removedGroup', groupId);\n this._glueLogic.removedGroup(groupId);\n }\n\n public openCloseGroup(groupId: string): void {\n this._logRequest('openCloseGroup', groupId);\n this._glueLogic.openCloseGroup(groupId);\n }\n\n public getSaveDataGroups(): Promise<PosGroup[] | null> {\n this._logRequest('getSaveDataGroups');\n return this._glueLogic.getSaveDataGroups();\n }\n\n public getSubArticleId(id: string): string | undefined {\n this._logRequest('getSubArticleId', id);\n return this._glueLogic.getSubArticleId(id);\n }\n\n public async newPosDataFromId(id: string): Promise<PosGroup | undefined> {\n this._logRequest('newPosDataFromId', id);\n return this._glueLogic.newPosDataFromId(id);\n }\n\n public async newPosDataFromGroup(posDataJson: PosGroup): Promise<PosGroup> {\n this._logRequest('newPosDataFromId', JSON.stringify(posDataJson));\n return this._glueLogic.newPosDataFromGroup(posDataJson);\n }\n\n public getGroupDataForOrder(\n roomlePlannerId?: string,\n ): Promise<HiOrderData | null> {\n this._logRequest('getGroupDataForOrder', roomlePlannerId);\n return this._glueLogic.getGroupDataForOrder(roomlePlannerId);\n }\n\n public getMaterialUrl(\n materialId: string,\n groupOrModuleId?: string,\n ): string | null {\n this._logRequest('getMaterialUrl', materialId, groupOrModuleId);\n return this._glueLogic.getMaterialUrl(materialId, groupOrModuleId);\n }\n}\n\nexport class GlueLayerResponseDebugLogging implements RoomDesignerRequests {\n private _roomDesignerRequests: RoomDesignerRequests;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomDesignerRequests: RoomDesignerRequests,\n hiCallbacks: HiCallbacks,\n ) {\n this._roomDesignerRequests = roomDesignerRequests;\n this._hiCallbacks = hiCallbacks;\n }\n\n private _logResponse(message: string, ...args: Array<string | null>) {\n let messageAndArgs = message;\n if (args) {\n args.forEach((item) => {\n messageAndArgs += ' ' + item;\n });\n }\n this._hiCallbacks.onLogMessage?.('HI RESPONSE', messageAndArgs);\n }\n\n public loadMasterData(masterData: any): void {\n this._logResponse('loadMasterData');\n this._roomDesignerRequests.loadMasterData(masterData);\n }\n\n public async loadPosGroups(\n posDataJson: PosGroup | PosGroup[],\n options: LoadExternalObjectOptions,\n ): Promise<void> {\n const groupIds = Array.isArray(posDataJson)\n ? posDataJson.map((group) => group.id).join(',')\n : posDataJson.id;\n this._logResponse(\n 'loadPosGroups',\n groupIds,\n options.reason ?? 'undefined',\n options.findFreeSpaceInPlan?.toString() ?? 'false',\n options.moduleIdMap ? JSON.stringify(options.moduleIdMap) : '[]',\n options.mergedGroups ? JSON.stringify(options.mergedGroups) : '[]',\n );\n return this._roomDesignerRequests.loadPosGroups(posDataJson, options);\n }\n\n public completelyLoaded(): void {\n this._logResponse('completelyLoaded');\n this._roomDesignerRequests.completelyLoaded();\n }\n\n public async selectGroup(groupId: string): Promise<void> {\n this._logResponse('selectGroup', groupId);\n return this._roomDesignerRequests.selectGroup(groupId);\n }\n\n public async selectRoot(rootModuleId: string): Promise<void> {\n this._logResponse('selectRoot', rootModuleId);\n return this._roomDesignerRequests.selectRoot(rootModuleId);\n }\n\n public async selectModule(\n rootModuleId: string,\n subModuleId: string,\n ): Promise<void> {\n this._logResponse('selectModule', rootModuleId, subModuleId);\n return this._roomDesignerRequests.selectModule(rootModuleId, subModuleId);\n }\n\n public openCloseGroup(\n groupOrRootModuleId: string,\n subModuleId: string | null,\n open: boolean,\n animate: boolean,\n ) {\n this._logResponse(\n 'openCloseGroup',\n groupOrRootModuleId,\n subModuleId,\n open.toString(),\n animate.toString(),\n );\n this._roomDesignerRequests.openCloseGroup(\n groupOrRootModuleId,\n subModuleId,\n open,\n animate,\n );\n return Promise.resolve();\n }\n\n public deleteGroup(groupId: string): void {\n this._logResponse('deleteGroup', groupId);\n return this._roomDesignerRequests.deleteGroup(groupId);\n }\n\n public deleteRootModule(rootModuleId: string): void {\n this._logResponse('deleteRootModule', rootModuleId);\n return this._roomDesignerRequests.deleteRootModule(rootModuleId);\n }\n\n public getPosDataOfAllGroups(): Promise<PosGroup[]> {\n this._logResponse('getPosDataOfAllGroups');\n return this._roomDesignerRequests.getPosDataOfAllGroups();\n }\n\n public getRoomInformation(): Promise<ExternalRoomInformation> {\n this._logResponse('getRoomInformation');\n return this._roomDesignerRequests.getRoomInformation();\n }\n\n public saveExternalObjectSnapshot(): Promise<ExternalObjectSnapshotSaveResult | null> {\n this._logResponse('saveExternalObjectSnapshot');\n return this._roomDesignerRequests.saveExternalObjectSnapshot();\n }\n}\n","import { RoomDesignerApi } from './api';\nimport type { GlueLogic, HiAttributeOptionsResult } from './glue-logic';\nimport { GlueLogicImplementation, type LibraryData } from './glue-logic';\nimport { type HomagIntelligenceInitData } from './hi-api-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport type {\n MasterData,\n PosArticle,\n PosContour,\n PosGroup,\n PosModuleAttribute,\n PosModuleData,\n} from './model/oc-scripts-domain.model';\nimport { initCallbacks } from './callbacks';\nimport { type RoomlePlanner } from '../../planner-core/src/roomle-planner';\nimport Orders from './orders';\nimport type {\n ExternalConfiguration,\n ExternalItem,\n} from '../../typings/external-objects';\nimport type { HiTagCatalogCallbacks } from './hi-tag-catalog-callbacks';\nimport type { HiCallbacks, HiOrderHeader } from '#/common/src/hi/hi-types';\nimport {\n GlueLayerRequestDebugLogging,\n GlueLayerResponseDebugLogging,\n} from './debug-logging';\nimport type { ExternalObjectValidContainerModules } from './external-object-api-callbacks';\n\ndeclare global {\n interface Window {\n uuidv4: () => string;\n }\n}\n\nconsole.warn('Homag Intelligence plugin is loaded.');\n\n// export const HOMAG_INTELLIGENCE_ENDPOINT = 'http://localhost:8080/proxy_request?url=';\n// export const HOMAG_INTELLIGENCE_ENDPOINT =\n// 'https://europe-west3-rml-showcases.cloudfunctions.net/proxy_request?url=';\n\nexport type ExternalObjects = Map<\n string,\n { id: string; label: string; items: any[] }\n>;\nexport type ExternalItems = Map<string, ExternalItem>;\nexport type ExternalConfigurations = Map<string, ExternalConfiguration>;\n\n/**\n * Serialization lock for _initCalcScript.\n * Concurrent calls share `window.exports`, so they must run one at a time.\n */\nlet calcScriptLock: Promise<void> = Promise.resolve();\n\nconst acquireCalcScriptLock = (): Promise<() => void> => {\n let release: () => void = () => {};\n const next = new Promise<void>((resolve) => {\n release = resolve;\n });\n const prev = calcScriptLock;\n calcScriptLock = next;\n return prev.then(() => release);\n};\n\nexport class HomagIntelligence {\n private _roomlePlanner: RoomlePlanner;\n private _api: RoomDesignerApi;\n private _glueLogic: GlueLogic;\n private _orders: Orders;\n private _hiCallbacks: HiCallbacks;\n\n constructor(\n roomlePlanner: RoomlePlanner,\n hiOptions: HomagIntelligenceInitData,\n hiCallbacks: HiCallbacks,\n ) {\n if (!window.uuidv4) {\n window.uuidv4 = uuidv4; // Ensure uuidv4 is available globally\n }\n\n this._roomlePlanner = roomlePlanner;\n this._roomlePlanner.setHomagIntelligence(this);\n this._hiCallbacks = hiCallbacks;\n this._api = new RoomDesignerApi(this._roomlePlanner);\n\n if (hiOptions?.debugLogging) {\n const api = new GlueLayerResponseDebugLogging(this._api, hiCallbacks);\n const glueLogic = new GlueLogicImplementation(api, hiCallbacks);\n this._glueLogic = new GlueLayerRequestDebugLogging(\n glueLogic,\n hiCallbacks,\n );\n } else {\n this._glueLogic = new GlueLogicImplementation(this._api, hiCallbacks);\n }\n initCallbacks(this._roomlePlanner, this._glueLogic);\n this._orders = new Orders(roomlePlanner, this._glueLogic);\n }\n\n /**\n * Loads previously saved PosGroup data via hiCallbacks.\n * Must be called after construction to restore saved state.\n */\n public async loadSavedPosData(): Promise<void> {\n const savedPosGroupData =\n (await this._hiCallbacks.onGetSavedPosGroupData?.()) ?? null;\n await this._glueLogic.setPosDataForLoading(savedPosGroupData);\n }\n\n public async loadLibrary(libraryId: string) {\n const libraryData = await this._loadLibraryData(libraryId);\n await this._glueLogic.addLibrary(libraryData);\n }\n\n public async loadCatalog(\n libraryId: string,\n articles: any,\n catalogCallbacks: HiTagCatalogCallbacks,\n ) {\n catalogCallbacks?.setEmulator(this._glueLogic);\n this._glueLogic.loadPosData(await articles, libraryId);\n }\n\n private async _loadLibraryData(libraryId: string): Promise<LibraryData> {\n if (this._glueLogic.isLibraryLoaded(libraryId)) {\n const data = this._glueLogic.getLibraryData(libraryId);\n if (data !== null) {\n return data;\n }\n }\n const hiCallbacks = this._glueLogic.hiCallbacks;\n if (hiCallbacks === null) {\n throw new Error('HiCallbacks not initialized');\n }\n const { masterData, libraryExports } = await this._requestHiLibrary(\n libraryId,\n hiCallbacks,\n );\n this._loadMasterData(masterData);\n const libraryData: LibraryData = {\n libraryId,\n masterData,\n posGroupVersion: 1,\n calculateGroup: (groupData: PosGroup): PosGroup => {\n return libraryExports.calc(groupData);\n },\n getOrderData: (\n groupData: PosGroup[],\n roomlePlannerId?: string,\n rooms?: PosContour[],\n ): any => {\n return libraryExports.getOrderData(groupData, roomlePlannerId, rooms);\n },\n getAttributesDropDownValues: async (\n module: PosModuleData,\n attributeIds?: string | string[],\n ): Promise<Record<string, HiAttributeOptionsResult>> => {\n const ids = attributeIds\n ? Array.isArray(attributeIds)\n ? attributeIds\n : [attributeIds]\n : (module.attributes ?? []).map((attribute) => attribute.id);\n const attributeOptions: Record<string, any[]> = {};\n for (const attributeId of ids) {\n try {\n const attributeDropDownApi =\n libraryExports.getAttributesDropDownValuesV2 ??\n libraryExports.getAttributesDropDownValues;\n const options = await attributeDropDownApi(module, attributeId);\n attributeOptions[attributeId] = options;\n } catch (error) {\n console.error(error);\n attributeOptions[attributeId] = [];\n }\n }\n return attributeOptions;\n },\n solveModuleAttributeConflict: (\n module: PosModuleData,\n attributeName: string,\n value: string | number | boolean,\n ): PosModuleAttribute[] | undefined => {\n if (!libraryExports.solveModuleAttributeConflict) {\n return undefined;\n }\n const results = libraryExports.solveModuleAttributeConflict(\n module,\n attributeName,\n value,\n );\n return results;\n },\n getValidSubArticles(\n calculatedPosGroup: PosGroup,\n articles: PosArticle[],\n masterData: MasterData,\n ): PosArticle[] {\n if (!libraryExports.getValidSubArticles) {\n return [];\n }\n const results = libraryExports.getValidSubArticles(\n calculatedPosGroup,\n articles,\n masterData,\n );\n return results;\n },\n getValidContainerModulesForSubArticle(\n calculatedPosGroup: PosGroup,\n subArticle: PosArticle,\n masterData: MasterData,\n ): ExternalObjectValidContainerModules[] {\n if (!libraryExports.getValidContainerModulesForSubArticle) {\n return [];\n }\n const results = libraryExports.getValidContainerModulesForSubArticle(\n calculatedPosGroup,\n subArticle,\n masterData,\n );\n return results;\n },\n addSubArticle(\n targetPosGroup: PosGroup,\n article: PosArticle,\n rootId: string,\n parentModuleId: string,\n insertPosition?: number[],\n ): PosGroup {\n if (!libraryExports.addSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.addSubArticle(\n targetPosGroup,\n article,\n rootId,\n parentModuleId,\n insertPosition,\n );\n return results;\n },\n deleteSubArticle(\n targetPosGroup: PosGroup,\n rootId: string,\n articleModuleId: string,\n ): PosGroup {\n if (!libraryExports.deleteSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.deleteSubArticle(\n targetPosGroup,\n rootId,\n articleModuleId,\n );\n return results;\n },\n };\n return libraryData;\n }\n\n public async _requestHiLibrary(\n libraryId: string,\n hiCallbacks: HiCallbacks,\n ): Promise<{\n masterData: MasterData;\n libraryExports: any;\n }> {\n const [masterData, calcScriptString] = await Promise.all([\n hiCallbacks.onLoadMasterData(libraryId),\n hiCallbacks.onLoadJavascript(libraryId),\n ]);\n const libraryExports = await this._initCalcScript(calcScriptString);\n return {\n masterData,\n libraryExports,\n };\n }\n\n private _loadMasterData(masterData: MasterData): void {\n return this._api.loadMasterData(masterData);\n }\n\n private async _initCalcScript(scriptText: string): Promise<any> {\n // Acquire the lock so concurrent _initCalcScript calls don't corrupt\n // each other's window.exports (which is a shared global).\n const release = await acquireCalcScriptLock();\n let blobUrl: string | undefined;\n try {\n window.exports = {};\n const blob = new Blob([scriptText], { type: 'text/javascript' });\n blobUrl = URL.createObjectURL(blob);\n await import(blobUrl);\n return window.exports;\n } catch (e) {\n console.error(e);\n throw new Error('Failed to load calc.js!');\n } finally {\n if (blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n release();\n }\n }\n\n public getGlueLogic(): GlueLogic {\n return this._glueLogic;\n }\n\n public async placeOrder(\n withPrice: boolean = true,\n orderHeader?: HiOrderHeader,\n ) {\n await this._orders.placeOrder(withPrice, orderHeader);\n }\n\n public async fetchPrice(planId?: string, orderHeader?: HiOrderHeader) {\n return this._orders.fetchPrice(planId, orderHeader);\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":";;;AACA,IAAM,IAAY,EAAE;AACpB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EACvB,GAAU,MAAM,IAAI,KAAO,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAErD,SAAgB,EAAgB,GAAK,IAAS,GAAG;AAC7C,SAAQ,EAAU,EAAI,IAAS,MAC3B,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,MACvB,EAAU,EAAI,IAAS,MACvB,MACA,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,OACvB,EAAU,EAAI,IAAS,MAAM,aAAa;;;;ACzBlD,IAAI,GACE,IAAQ,IAAI,WAAW,GAAG;AAChC,SAAwB,IAAM;AAC1B,KAAI,CAAC,GAAiB;AAClB,MAAI,OAAO,SAAW,OAAe,CAAC,OAAO,gBACzC,OAAU,MAAM,2GAA2G;AAE/H,MAAkB,OAAO,gBAAgB,KAAK,OAAO;;AAEzD,QAAO,EAAgB,EAAM;;ACRjC,IAAA,IAAe,EAAE,YADE,OAAO,SAAW,OAAe,OAAO,cAAc,OAAO,WAAW,KAAK,OAAO,EAC1E;;;ACE7B,SAAS,EAAG,GAAS,GAAK,GAAQ;AAC9B,KAAIA,EAAO,cAAc,CAAC,KAAO,CAAC,EAC9B,QAAOA,EAAO,YAAY;AAE9B,OAAqB,EAAE;CACvB,IAAM,IAAO,EAAQ,WAAW,EAAQ,OAAO,IAAM;AAGrD,KAFA,EAAK,KAAM,EAAK,KAAK,KAAQ,IAC7B,EAAK,KAAM,EAAK,KAAK,KAAQ,KACzB,GAAK;AACL,QAAmB;AACnB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACtB,GAAI,IAAS,KAAK,EAAK;AAE3B,SAAO;;AAEX,QAAO,EAAgB,EAAK;;;;ACThC,IAAa,KACX,GACA,MACG;AAqCH,CApCA,EAAc,UAAU,2BAA2B;AACjD,IAAS,wBAAwB;IAGnC,EAAc,UAAU,kCACtB,GACA,GACA,MACG;AACH,IAAS,kBAAkB,sBACzB,GACA,GACA,EACD;IAGH,EAAc,UAAU,oBAAoB,MAAgC;AAC1E,IAAS,kBAAkB,eAAe,EAAQ;IAGpD,EAAc,UAAU,qBACtB,GACA,GACA,GACA,GACA,MACS;AACT,IAAS,kBAAkB,iBACzB,GACA,GACA,GACA,GACA,EACD;IAGH,EAAc,UAAU,qBACtB,MACS;AACT,IAAS,kBAAkB,gBAAgB,EAAO;;GC1ChD,KAAkB,oBAAO,IAAI,MAAM,KAAK;CAE5C,IAAI,IAAY,EAAK,aAAa;AAGlC,KAAY,EAAU,MAAM,GAAG,GAAG;CAGlC,IAAM,IAAa,EAAU,YAAY,IAAI,EAGzC,IAAgB;AAEpB,CAAI,MAAe,OAEjB,IAAgB,EAAU,UAAU,GAAG,IAAa,EAAE,GAAG;CAI3D,IAAM,IAAgB,EAAK,mBAAmB,EACxC,IAAc,KAAK,IAAI,KAAK,MAAM,IAAgB,GAAG,CAAC,EACtD,IAAa,KAAK,IAAI,IAAgB,GAAG,EAIzC,IAAe,GADF,KAAiB,IAAI,MAAM,MACT,OAAO,EAAY,CAAC,SACvD,GACA,IACD,CAAC,GAAG,OAAO,EAAW,CAAC,SAAS,GAAG,IAAI;AAExC,QAAO,IAAgB;GAGZ,WACJ;CACL,IAAK,OAAe,SACf,OAAe,QAAQ,GACxB;CACJ,OAAO;CACP,aAAa;CACb,WAAW;CACX,kBAAkB;CAClB,SAAS;CACT,gBAAgB;CAChB,WAAW,GAAgB;CAC3B,qBAAqB,EACnB,IAAI,KAAK,KAAK,KAAK,GAAG,MAAU,KAAK,KAAK,IAAK,CAChD;CACD,WAAW,CACT;EACE,MAAM;EACN,QAAQ;EACR,aAAa;EACb,YAAY;EACZ,MAAM;EACN,SAAS;EACV,CACF;CACD,cAAc;CACd,gBAAgB;CAChB,WAAW,GAAgB;CAC3B,WAAW,GAAgB;CAC3B,WAAW;CACX,OAAO,EAAE;CACV,GAGG,IAAwB,OAC5B,GACA,MACG;CACH,IAAM,IAAe,MAAM,EAAc,iBAAiB,EACpD,IAAgC,EAAE,EAClC,IACJ,EAAa,QACb,QAAQ,GAAe,OACnB,EAAK,kBACF,EAAM,EAAK,mBACd,EAAM,EAAK,iBAAiB,GAC5B,EAAI,KAAK,EAAK,cAAc,GAE9B,EAAM,EAAK,mBAEN,IACN,EAAE,CAAC,EAKA,KAHJ,MAAM,QAAQ,EAAQ,IAAI,EAAQ,SAAS,IACvC,MAAM,EAAc,eAAe,CAAC,SAAS,EAAQ,GACrD,EAAE,EACoB,QAAQ,MAC9B,EAAK,oBAAoB,KAAA,IAItB,MAHL,EAAK,QAAQ,EAAM,EAAK,KACjB,IAGT;AACF,KAAI,MAAM,QAAQ,EAAc,IAAI,EAAc,SAAS,GAAG;AAC5D,EACE,EAAU,UAAQ,EAAE;EAEtB,IAAI,IAAQ,EAAU,MAAM,QAAQ,GAAa,MAC3C,EAAK,OAAO,SACP,IAAM,EAAK,MAAM,SAEnB,GACN,EAAE;AACL,IAAc,SAAS,MAAS;GAC9B,IAAM,IAAM,EAAE;AAoBd,GAnBA,EAAI,OAAO,YACX,EAAI,QAAQ,EAAE,GAAO,UAAU,EAC/B,EAAI,gBAAgB,EAAK,iBACzB,EAAI,cAAc,EAAK,OACvB,EAAI,UAAU,EAAK,SACnB,EAAI,WAAW,EAAK,OACpB,EAAI,SAAS,EAAK,iBAClB,EAAI,QAAQ,EAAK,gBACjB,EAAI,QAAQ,EAAK,gBACjB,EAAI,QAAQ,EAAK,WACjB,EAAI,kBAAkB,OACtB,EAAI,iBAAiB,EAAE,EACnB,EAAK,oBACP,EAAI,eAAe,KAAK;IACtB,UAAU;IACV,aAAa,EAAK;IAClB,MAAM;IACP,CAAC,EAEJ,EAAU,MAAM,KAAK,EAAI;IACzB;;GAIe,IAArB,MAA4B;CAI1B,YAAY,GAA8B,GAAsB;AAE9D,EADA,KAAK,iBAAiB,GACtB,KAAK,aAAa;;CAGpB,MAAa,WAAW,GAAiB,GAA6B;EACpE,IAAI,IAAY,MAAM,KAAK,WAAW,qBAAqB,EAAO;AAIlE,SAHK,IAGE,MAAM,KAAK,yBAAyB,GAAW,EAAY,GAFzD;;CAKX,MAAa,WACX,IAAqB,IACrB,GACA;EACA,IAAM,IAAW,MAAM,KAAK,eAAe,4BAA4B;AACvE,MAAI,CAAC,GAAU;AACb,WAAQ,MAAM,oDAAoD;AAClE;;EAGF,IAAI,IAAY,IACZ,MAAM,KAAK,yBAAyB,EAAS,WAAW,EAAY,GACpE,MAEA;AAYJ,EAXI,IACF,IAAQ,EAAU,aAElB,IAAQ,KAAK,aAAa,EAAY,EACtC,EAAM,MAAM,KAAK,EAAS,UAAmB,EAC7C,MAAM,EAAsB,KAAK,gBAAgB,EAAS,UAAU,GAItE,KAAK,0BAA0B,EAAM,MAAM,IAAI,EAAS,EAExD,MAAM,KAAK,WAAW,aAAa,eAAe,EAAM;;CAG1D,0BACE,GACA,GACA;AAkBA,EAjBK,MAAM,QAAQ,EAAU,eAAe,KAC1C,EAAU,iBAAiB,EAAE,GAE3B,EAAS,wBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC,EAEA,EAAS,gBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC,EAEA,EAAS,iBACX,EAAU,eAAe,KAAK;GAC5B,MAAM;GACN,UAAU;GACV,aAAa,EAAS;GACvB,CAAC;;CAIN,MAAc,yBACZ,GACA,GACc;EACd,IAAI,IAAQ,KAAK,aAAa,EAAY;AAE1C,SADA,EAAM,MAAM,KAAK,EAAmB,EAC7B,KAAK,WAAW,aAAa,eAAe,EAAM,IAAI;;CAG/D,aAAqB,GAAsC;AACzD,SAAO,IACH;GACE,GAAG;GACH,OAAO,EAAE;GACV,GACD,GAAkB;;GCnNb,IAAb,MAA+D;CAI7D,YAAY,GAAsB,GAA0B;AAE1D,EADA,KAAK,aAAa,GAClB,KAAK,eAAe;;CAGtB,IAAW,cAAkC;AAC3C,SAAO,KAAK;;CAGd,IAAW,oBAA0C;AACnD,SAAO,KAAK,WAAW;;CAGzB,YACE,GACA,GAAG,GACH;EACA,IAAI,IAAiB;AAMrB,EALI,KACF,EAAK,SAAS,MAAS;AACrB,QAAkB,MAAM;IACxB,EAEJ,KAAK,aAAa,eAAe,cAAc,EAAe;;CAGhE,gBAAuB,GAA4B;AACjD,SAAO,KAAK,WAAW,gBAAgB,EAAU;;CAGnD,eAAsB,GAAuC;AAC3D,SAAO,KAAK,WAAW,eAAe,EAAU;;CAGlD,WAAkB,GAAyC;AAEzD,SADA,KAAK,YAAY,cAAc,EAAY,UAAU,EAC9C,KAAK,WAAW,WAAW,EAAY;;CAGhD,qBAA4B,GAA4C;AAEtE,SADA,KAAK,YAAY,wBAAwB,IAAU,QAAQ,OAAO,EAC3D,KAAK,WAAW,qBAAqB,EAAQ;;CAGtD,YAAmB,GAAyB,GAAyB;AAEnE,EADA,KAAK,YAAY,eAAe,EAAU,EAC1C,KAAK,WAAW,YAAY,GAAoB,EAAU;;CAG5D,MAAa,YACX,GACA,GACA,GACA,GACe;AAOf,SANA,KAAK,YACH,eACA,EAAY,SACZ,KAAK,UAAU,EAAkB,EACjC,EACD,EACM,KAAK,WAAW,YACrB,GACA,GACA,GACA,EACD;;CAGH,iBACE,GACA,GACA,GACe;AAOf,SANA,KAAK,YACH,oBACA,KAAK,UAAU,EAAe,EAC9B,GACA,KAAK,UAAU,EAAe,CAC/B,EACM,KAAK,WAAW,iBACrB,GACA,GACA,EACD;;CAGH,yBACE,GACA,GACe;AAMf,SALA,KAAK,YACH,4BACA,KAAK,UAAU,EAAW,EAC1B,KAAK,UAAU,EAAsB,CACtC,EACM,KAAK,WAAW,yBACrB,GACA,EACD;;CAGH,MAAa,eACX,GACe;AAEf,SADA,KAAK,YAAY,kBAAkB,EAAgB,QAAQ,EACpD,KAAK,WAAW,eAAe,EAAgB;;CAGxD,gBACE,GACA,GACA,GACA,GACe;AAQf,SAPA,KAAK,YACH,mBACA,GACA,KAAK,UAAU,EAAgB,EAC/B,GACA,EACD,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,gBACE,GACA,GACA,GACA,GACe;AAQf,SAPA,KAAK,YACH,mBACA,GACA,GACA,GACA,EAAe,UAAU,CAC1B,EACM,KAAK,WAAW,gBACrB,GACA,GACA,GACA,EACD;;CAGH,4BACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,+BACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,4BAA4B,GAAU,EAAa;;CAG5E,iCACE,GACA,GAC0D;AAM1D,SALA,KAAK,YACH,oCACA,GACA,IAAe,KAAK,UAAU,EAAa,GAAG,KAC/C,EACM,KAAK,WAAW,iCACrB,GACA,EACD;;CAGH,eACE,GACA,GACA,GACM;AAON,EANA,KAAK,YACH,kBACA,KAAgB,aAChB,KAAgB,aAChB,GAAe,UAAU,IAAI,YAC9B,EACD,KAAK,WAAW,eAAe,GAAc,GAAc,EAAc;;CAG3E,qBAA4B,GAA8C;AAKxE,SAJA,KAAK,YACH,wBACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,EAC5D,EACM,KAAK,WAAW,qBAAqB,EAAY;;CAG1D,sCACE,GACA,GACyB;AAMzB,SALA,KAAK,YACH,yCACA,MAAM,QAAQ,EAAY,GAAG,KAAK,UAAU,EAAY,GAAG,GAC3D,EACD,EACM,KAAK,WAAW,sCACrB,GACA,EACD;;CAGH,cACE,GACA,GACA,GACA,GACM;AAQN,SAPA,KAAK,YACH,iBACA,GACA,GACA,GACA,IAAiB,KAAK,UAAU,EAAe,GAAG,YACnD,EACM,KAAK,WAAW,cACrB,GACA,GACA,GACA,EACD;;CAGH,kBACE,GACA,GACe;AAMf,SALA,KAAK,YACH,qBACA,GACA,MAAM,QAAQ,EAAa,GAAG,KAAK,UAAU,EAAa,GAAG,EAC9D,EACM,KAAK,WAAW,kBAAkB,GAAS,EAAa;;CAGjE,eACE,GACA,GACA,GACe;AAEf,SADA,KAAK,YAAY,kBAAkB,GAAS,GAAc,EAAU,EAC7D,KAAK,WAAW,eAAe,GAAS,GAAc,EAAU;;CAGzE,0BACE,GACe;AAEf,SADA,KAAK,YAAY,6BAA6B,KAAK,UAAU,EAAa,CAAC,EACpE,KAAK,WAAW,0BAA0B,EAAa;;CAGhE,8BACE,GACA,GACe;AAMf,SALA,KAAK,YACH,iCACA,EAAa,SACb,EAAsB,UAAU,CACjC,EACM,KAAK,WAAW,8BACrB,GACA,EACD;;CAGH,wBACE,GACA,GACM;AAMN,EALA,KAAK,YACH,2BACA,EAAY,IACZ,EAAY,UAAU,CACvB,EACD,KAAK,WAAW,wBAAwB,GAAa,EAAY;;CAGnE,YAAmB,GAAsC;AAEvD,SADA,KAAK,YAAY,eAAe,EAAY,GAAG,EACxC,KAAK,WAAW,YAAY,EAAY;;CAGjD,yBAAsC;AAEpC,EADA,KAAK,YAAY,yBAAyB,EAC1C,KAAK,WAAW,wBAAwB;;CAG1C,aAAoB,GAAuB;AAEzC,EADA,KAAK,YAAY,gBAAgB,EAAQ,EACzC,KAAK,WAAW,aAAa,EAAQ;;CAGvC,eAAsB,GAAuB;AAE3C,EADA,KAAK,YAAY,kBAAkB,EAAQ,EAC3C,KAAK,WAAW,eAAe,EAAQ;;CAGzC,oBAAuD;AAErD,SADA,KAAK,YAAY,oBAAoB,EAC9B,KAAK,WAAW,mBAAmB;;CAG5C,gBAAuB,GAAgC;AAErD,SADA,KAAK,YAAY,mBAAmB,EAAG,EAChC,KAAK,WAAW,gBAAgB,EAAG;;CAG5C,MAAa,iBAAiB,GAA2C;AAEvE,SADA,KAAK,YAAY,oBAAoB,EAAG,EACjC,KAAK,WAAW,iBAAiB,EAAG;;CAG7C,MAAa,oBAAoB,GAA0C;AAEzE,SADA,KAAK,YAAY,oBAAoB,KAAK,UAAU,EAAY,CAAC,EAC1D,KAAK,WAAW,oBAAoB,EAAY;;CAGzD,qBACE,GAC6B;AAE7B,SADA,KAAK,YAAY,wBAAwB,EAAgB,EAClD,KAAK,WAAW,qBAAqB,EAAgB;;CAG9D,eACE,GACA,GACe;AAEf,SADA,KAAK,YAAY,kBAAkB,GAAY,EAAgB,EACxD,KAAK,WAAW,eAAe,GAAY,EAAgB;;GAIzD,IAAb,MAA2E;CAIzE,YACE,GACA,GACA;AAEA,EADA,KAAK,wBAAwB,GAC7B,KAAK,eAAe;;CAGtB,aAAqB,GAAiB,GAAG,GAA4B;EACnE,IAAI,IAAiB;AAMrB,EALI,KACF,EAAK,SAAS,MAAS;AACrB,QAAkB,MAAM;IACxB,EAEJ,KAAK,aAAa,eAAe,eAAe,EAAe;;CAGjE,eAAsB,GAAuB;AAE3C,EADA,KAAK,aAAa,iBAAiB,EACnC,KAAK,sBAAsB,eAAe,EAAW;;CAGvD,MAAa,cACX,GACA,GACe;EACf,IAAM,IAAW,MAAM,QAAQ,EAAY,GACvC,EAAY,KAAK,MAAU,EAAM,GAAG,CAAC,KAAK,IAAI,GAC9C,EAAY;AAShB,SARA,KAAK,aACH,iBACA,GACA,EAAQ,UAAU,aAClB,EAAQ,qBAAqB,UAAU,IAAI,SAC3C,EAAQ,cAAc,KAAK,UAAU,EAAQ,YAAY,GAAG,MAC5D,EAAQ,eAAe,KAAK,UAAU,EAAQ,aAAa,GAAG,KAC/D,EACM,KAAK,sBAAsB,cAAc,GAAa,EAAQ;;CAGvE,mBAAgC;AAE9B,EADA,KAAK,aAAa,mBAAmB,EACrC,KAAK,sBAAsB,kBAAkB;;CAG/C,MAAa,YAAY,GAAgC;AAEvD,SADA,KAAK,aAAa,eAAe,EAAQ,EAClC,KAAK,sBAAsB,YAAY,EAAQ;;CAGxD,MAAa,WAAW,GAAqC;AAE3D,SADA,KAAK,aAAa,cAAc,EAAa,EACtC,KAAK,sBAAsB,WAAW,EAAa;;CAG5D,MAAa,aACX,GACA,GACe;AAEf,SADA,KAAK,aAAa,gBAAgB,GAAc,EAAY,EACrD,KAAK,sBAAsB,aAAa,GAAc,EAAY;;CAG3E,eACE,GACA,GACA,GACA,GACA;AAcA,SAbA,KAAK,aACH,kBACA,GACA,GACA,EAAK,UAAU,EACf,EAAQ,UAAU,CACnB,EACD,KAAK,sBAAsB,eACzB,GACA,GACA,GACA,EACD,EACM,QAAQ,SAAS;;CAG1B,YAAmB,GAAuB;AAExC,SADA,KAAK,aAAa,eAAe,EAAQ,EAClC,KAAK,sBAAsB,YAAY,EAAQ;;CAGxD,iBAAwB,GAA4B;AAElD,SADA,KAAK,aAAa,oBAAoB,EAAa,EAC5C,KAAK,sBAAsB,iBAAiB,EAAa;;CAGlE,wBAAoD;AAElD,SADA,KAAK,aAAa,wBAAwB,EACnC,KAAK,sBAAsB,uBAAuB;;CAG3D,qBAA8D;AAE5D,SADA,KAAK,aAAa,qBAAqB,EAChC,KAAK,sBAAsB,oBAAoB;;CAGxD,6BAAsF;AAEpF,SADA,KAAK,aAAa,6BAA6B,EACxC,KAAK,sBAAsB,4BAA4B;;;;;ACnclE,QAAQ,KAAK,uCAAuC;AAiBpD,IAAI,IAAgC,QAAQ,SAAS,EAE/C,UAAmD;CACvD,IAAI,UAA4B,IAC1B,IAAO,IAAI,SAAe,MAAY;AAC1C,MAAU;GACV,EACI,IAAO;AAEb,QADA,IAAiB,GACV,EAAK,WAAW,EAAQ;GAGpB,IAAb,MAA+B;CAO7B,YACE,GACA,GACA,GACA;AAqBA,EApBK,OAAO,WACV,OAAO,SAAS,IAGlB,KAAK,iBAAiB,GACtB,KAAK,eAAe,qBAAqB,KAAK,EAC9C,KAAK,eAAe,GACpB,KAAK,OAAO,IAAI,EAAgB,KAAK,eAAe,EAEhD,GAAW,eAGb,KAAK,aAAa,IAAI,EADJ,IAAI,EADV,IAAI,EAA8B,KAAK,MAAM,EAAY,EAClB,EAAY,EAG7D,EACD,GAED,KAAK,aAAa,IAAI,EAAwB,KAAK,MAAM,EAAY,EAEvE,EAAc,KAAK,gBAAgB,KAAK,WAAW,EACnD,KAAK,UAAU,IAAI,EAAO,GAAe,KAAK,WAAW;;CAO3D,MAAa,mBAAkC;EAC7C,IAAM,IACH,MAAM,KAAK,aAAa,0BAA0B,IAAK;AAC1D,QAAM,KAAK,WAAW,qBAAqB,EAAkB;;CAG/D,MAAa,YAAY,GAAmB;EAC1C,IAAM,IAAc,MAAM,KAAK,iBAAiB,EAAU;AAC1D,QAAM,KAAK,WAAW,WAAW,EAAY;;CAG/C,MAAa,YACX,GACA,GACA,GACA;AAEA,EADA,GAAkB,YAAY,KAAK,WAAW,EAC9C,KAAK,WAAW,YAAY,MAAM,GAAU,EAAU;;CAGxD,MAAc,iBAAiB,GAAyC;AACtE,MAAI,KAAK,WAAW,gBAAgB,EAAU,EAAE;GAC9C,IAAM,IAAO,KAAK,WAAW,eAAe,EAAU;AACtD,OAAI,MAAS,KACX,QAAO;;EAGX,IAAM,IAAc,KAAK,WAAW;AACpC,MAAI,MAAgB,KAClB,OAAU,MAAM,8BAA8B;EAEhD,IAAM,EAAE,eAAY,sBAAmB,MAAM,KAAK,kBAChD,GACA,EACD;AAwHD,SAvHA,KAAK,gBAAgB,EAAW,EACC;GAC/B;GACA;GACA,iBAAiB;GACjB,iBAAiB,MACR,EAAe,KAAK,EAAU;GAEvC,eACE,GACA,GACA,MAEO,EAAe,aAAa,GAAW,GAAiB,EAAM;GAEvE,6BAA6B,OAC3B,GACA,MACsD;IACtD,IAAM,IAAM,IACR,MAAM,QAAQ,EAAa,GACzB,IACA,CAAC,EAAa,IACf,EAAO,cAAc,EAAE,EAAE,KAAK,MAAc,EAAU,GAAG,EACxD,IAA0C,EAAE;AAClD,SAAK,IAAM,KAAe,EACxB,KAAI;AAKF,OAAiB,KADD,OAFd,EAAe,iCACf,EAAe,6BAC0B,GAAQ,EAAY;aAExD,GAAO;AAEd,KADA,QAAQ,MAAM,EAAM,EACpB,EAAiB,KAAe,EAAE;;AAGtC,WAAO;;GAET,+BACE,GACA,GACA,MACqC;AAChC,UAAe,6BAQpB,QALgB,EAAe,6BAC7B,GACA,GACA,EACD;;GAGH,oBACE,GACA,GACA,GACc;AASd,WARK,EAAe,sBAGJ,EAAe,oBAC7B,GACA,GACA,EACD,GANQ,EAAE;;GASb,sCACE,GACA,GACA,GACuC;AASvC,WARK,EAAe,wCAGJ,EAAe,sCAC7B,GACA,GACA,EACD,GANQ,EAAE;;GASb,cACE,GACA,GACA,GACA,GACA,GACU;AAWV,WAVK,EAAe,gBAGJ,EAAe,cAC7B,GACA,GACA,GACA,GACA,EACD,GARQ;;GAWX,iBACE,GACA,GACA,GACU;AASV,WARK,EAAe,mBAGJ,EAAe,iBAC7B,GACA,GACA,EACD,GANQ;;GASZ;;CAIH,MAAa,kBACX,GACA,GAIC;EACD,IAAM,CAAC,GAAY,KAAoB,MAAM,QAAQ,IAAI,CACvD,EAAY,iBAAiB,EAAU,EACvC,EAAY,iBAAiB,EAAU,CACxC,CAAC;AAEF,SAAO;GACL;GACA,gBAHqB,MAAM,KAAK,gBAAgB,EAAiB;GAIlE;;CAGH,gBAAwB,GAA8B;AACpD,SAAO,KAAK,KAAK,eAAe,EAAW;;CAG7C,MAAc,gBAAgB,GAAkC;EAG9D,IAAM,IAAU,MAAM,GAAuB,EACzC;AACJ,MAAI;AACF,UAAO,UAAU,EAAE;GACnB,IAAM,IAAO,IAAI,KAAK,CAAC,EAAW,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAGhE,UAFA,IAAU,IAAI,gBAAgB,EAAK,EACnC,MAAM,OAAO,IACN,OAAO;WACP,GAAG;AAEV,SADA,QAAQ,MAAM,EAAE,EACN,MAAM,0BAA0B;YAClC;AAIR,GAHI,KACF,IAAI,gBAAgB,EAAQ,EAE9B,GAAS;;;CAIb,eAAiC;AAC/B,SAAO,KAAK;;CAGd,MAAa,WACX,IAAqB,IACrB,GACA;AACA,QAAM,KAAK,QAAQ,WAAW,GAAW,EAAY;;CAGvD,MAAa,WAAW,GAAiB,GAA6B;AACpE,SAAO,KAAK,QAAQ,WAAW,GAAQ,EAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-utils-BG1uqfT_.mjs","names":[],"sources":["../../packages/common-core/src/utils/kernel-utils.ts"],"sourcesContent":["import type { KernelMatrix4, KernelVector3 } from '../../../typings/kernel';\nimport { Euler, Matrix4, Vector3 } from 'three';\n\nexport const convertToTHREE = (\n vector: KernelVector3 | null | undefined,\n): Vector3 => {\n if (!vector) {\n return new Vector3(0, 0, 0);\n }\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / -1000);\n};\n\nexport const convertToThreeLength = (length: number): number => {\n return length / 1000;\n};\n\nexport const convertToEuler = (vector: KernelVector3): Euler => {\n return new Euler(vector.x, vector.z, -vector.y);\n};\n\nexport const convertToThreeDimensions = (vector: KernelVector3): Vector3 => {\n return new Vector3(vector.x / 1000, vector.z / 1000, vector.y / 1000);\n};\n\nexport const convertToKernel = (vector: Vector3): KernelVector3 => {\n return {\n x: Math.round(vector.x * 1000),\n y: Math.round(vector.z * -1000),\n z: Math.round(vector.y * 1000),\n };\n};\n\nexport const utilityStringToUTF16 = (str: string): string => {\n return decodeURIComponent(encodeURIComponent(str));\n};\n\nexport const convertCObject = (obj: any): any => {\n if (!obj) {\n const typeOfObj = typeof obj;\n if (typeOfObj === 'number' || typeOfObj === 'boolean') {\n return obj;\n }\n return null;\n }\n\n if (\n !obj.hasOwnProperty('size') &&\n !!obj.size &&\n typeof obj.size === 'function'\n ) {\n let result = utilityToArray(obj);\n for (let i = 0; i < result.length; i++) {\n result[i] = convertCObject(result[i]);\n }\n if (typeof result === 'string') {\n return utilityStringToUTF16(result);\n }\n return result;\n }\n if (typeof obj === 'object') {\n for (let property in obj) {\n if (obj.hasOwnProperty(property)) {\n obj[property] = convertCObject(obj[property]);\n }\n }\n }\n\n if (typeof obj === 'string') {\n return utilityStringToUTF16(obj);\n }\n\n return obj;\n};\n\nexport const utilityToArray = (obj: any): any[] => {\n let result: any[] = [];\n if (obj) {\n let size = obj.size();\n for (let i = 0; i < size; i++) {\n result.push(obj.get(i));\n }\n }\n return result;\n};\n\nexport const convertKernelMatrixCoordsToThree = (matrix: Matrix4): Matrix4 => {\n let a = new Matrix4();\n a.set(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1);\n a.scale(new Vector3(1 / 1000, 1 / 1000, 1 / 1000));\n let b = new Matrix4();\n b.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);\n b.scale(new Vector3(1000, 1000, 1000));\n return a.multiply(matrix).multiply(b);\n};\n\nexport const convertKernelMatrixToThreeMatrix = (\n transform: KernelMatrix4,\n): Matrix4 => {\n const transformArray: number[] = convertCObject(transform.m);\n const transformMatrix = new Matrix4().fromArray(transformArray).transpose();\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeMatrix = (transform: Float32Array): Matrix4 => {\n let transformMatrix = new Matrix4();\n let transformArray: number[] = convertCObject(transform);\n transformMatrix.fromArray(transformArray);\n transformMatrix.transpose();\n\n return convertKernelMatrixCoordsToThree(transformMatrix);\n};\n\nexport const convertToThreeUVMatrix = (transform: Float32Array): Matrix4 => {\n const uvTransformMatrix = new Matrix4();\n uvTransformMatrix.set(\n transform[0],\n transform[2],\n 0,\n transform[4],\n transform[1],\n transform[3],\n 0,\n transform[5],\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n );\n return uvTransformMatrix;\n};\n"],"mappings":";;AAGA,IAAa,KACX,MAEK,IAGE,IAAI,EAAQ,EAAO,IAAI,KAAM,EAAO,IAAI,KAAM,EAAO,IAAI,KAAM,GAF7D,IAAI,EAAQ,GAAG,GAAG,EAAE,EASlB,KAAkB,MACtB,IAAI,EAAM,EAAO,GAAG,EAAO,GAAG,CAAC,EAAO,EAAE,EAGpC,KAA4B,MAChC,IAAI,EAAQ,EAAO,IAAI,KAAM,EAAO,IAAI,KAAM,EAAO,IAAI,IAAK,EAG1D,KAAmB,OACvB;CACL,GAAG,KAAK,MAAM,EAAO,IAAI,IAAK;CAC9B,GAAG,KAAK,MAAM,EAAO,IAAI,KAAM;CAC/B,GAAG,KAAK,MAAM,EAAO,IAAI,IAAK;CAC/B,GAGU,KAAwB,MAC5B,mBAAmB,mBAAmB,EAAI,CAAC,EAGvC,KAAkB,MAAkB;AAC/C,KAAI,CAAC,GAAK;EACR,IAAM,IAAY,OAAO;AAIzB,SAHI,MAAc,YAAY,MAAc,YACnC,IAEF;;AAGT,KACE,CAAC,EAAI,eAAe,OAAO,IACzB,EAAI,QACN,OAAO,EAAI,QAAS,YACpB;EACA,IAAI,IAAS,EAAe,EAAI;AAChC,OAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,IACjC,GAAO,KAAK,EAAe,EAAO,GAAG;AAKvC,SAHI,OAAO,KAAW,WACb,EAAqB,EAAO,GAE9B;;AAET,KAAI,OAAO,KAAQ,eACZ,IAAI,KAAY,EACnB,CAAI,EAAI,eAAe,EAAS,KAC9B,EAAI,KAAY,EAAe,EAAI,GAAU;AASnD,QAJI,OAAO,KAAQ,WACV,EAAqB,EAAI,GAG3B;GAGI,KAAkB,MAAoB;CACjD,IAAI,IAAgB,EAAE;AACtB,KAAI,GAAK;EACP,IAAI,IAAO,EAAI,MAAM;AACrB,OAAK,IAAI,IAAI,GAAG,IAAI,GAAM,IACxB,GAAO,KAAK,EAAI,IAAI,EAAE,CAAC;;AAG3B,QAAO;GAGI,KAAoC,MAA6B;CAC5E,IAAI,IAAI,IAAI,GAAS;AAErB,CADA,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EACtD,EAAE,MAAM,IAAI,EAAQ,IAAI,KAAM,IAAI,KAAM,IAAI,IAAK,CAAC;CAClD,IAAI,IAAI,IAAI,GAAS;AAGrB,QAFA,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EACtD,EAAE,MAAM,IAAI,EAAQ,KAAM,KAAM,IAAK,CAAC,EAC/B,EAAE,SAAS,EAAO,CAAC,SAAS,EAAE;GAG1B,KACX,MACY;CACZ,IAAM,IAA2B,EAAe,EAAU,EAAE;AAE5D,QAAO,EADiB,IAAI,GAAS,CAAC,UAAU,EAAe,CAAC,WAAW,CACnB;GAG7C,KAAwB,MAAqC;CACxE,IAAI,IAAkB,IAAI,GAAS,EAC/B,IAA2B,EAAe,EAAU;AAIxD,QAHA,EAAgB,UAAU,EAAe,EACzC,EAAgB,WAAW,EAEpB,EAAiC,EAAgB;GAG7C,KAA0B,MAAqC;CAC1E,IAAM,IAAoB,IAAI,GAAS;AAmBvC,QAlBA,EAAkB,IAChB,EAAU,IACV,EAAU,IACV,GACA,EAAU,IACV,EAAU,IACV,EAAU,IACV,GACA,EAAU,IACV,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACM"}
|