@roomle/web-sdk 3.5.0-alpha.8 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/{BufferGeometry-WZBKFGri.mjs → BufferGeometry-CMU3DLT1.mjs} +2 -2
  2. package/lib/{BufferGeometry-WZBKFGri.mjs.map → BufferGeometry-CMU3DLT1.mjs.map} +1 -1
  3. package/lib/ConfiguratorKernel.wasm +0 -0
  4. package/lib/{GLTFExporter-DCQmhRQ9.mjs → GLTFExporter-BGHkwQLJ.mjs} +2 -2
  5. package/lib/{GLTFExporter-DCQmhRQ9.mjs.map → GLTFExporter-BGHkwQLJ.mjs.map} +1 -1
  6. package/lib/{PointLightHelper-DDoIf9Vg.mjs → PointLightHelper-DZTk2W0h.mjs} +3 -3
  7. package/lib/{PointLightHelper-DDoIf9Vg.mjs.map → PointLightHelper-DZTk2W0h.mjs.map} +1 -1
  8. package/lib/RoomleCore.wasm +0 -0
  9. package/lib/RoomleToolsCore.wasm +0 -0
  10. package/lib/{SpotLightHelper-DcbD8VZZ.mjs → SpotLightHelper-CadnKPkB.mjs} +3 -3
  11. package/lib/{SpotLightHelper-DcbD8VZZ.mjs.map → SpotLightHelper-CadnKPkB.mjs.map} +1 -1
  12. package/lib/{USDZExporter-CZ956mmz.mjs → USDZExporter-BtfLj3nk.mjs} +2 -2
  13. package/lib/{USDZExporter-CZ956mmz.mjs.map → USDZExporter-BtfLj3nk.mjs.map} +1 -1
  14. package/lib/{banana-for-scale-DyzG9cnO.mjs → banana-for-scale-B6CjS1Cc.mjs} +2 -2
  15. package/lib/{banana-for-scale-DyzG9cnO.mjs.map → banana-for-scale-B6CjS1Cc.mjs.map} +1 -1
  16. package/lib/{component-dimensioning-CuUr4cCF.mjs → component-dimensioning-B0hNR39H.mjs} +2 -2
  17. package/lib/{component-dimensioning-CuUr4cCF.mjs.map → component-dimensioning-B0hNR39H.mjs.map} +1 -1
  18. package/lib/{continuous-drawing-helper-B5gXrJHm.mjs → continuous-drawing-helper-D6hybw8b.mjs} +2 -2
  19. package/lib/{continuous-drawing-helper-B5gXrJHm.mjs.map → continuous-drawing-helper-D6hybw8b.mjs.map} +1 -1
  20. package/lib/{homag-intelligence-cyYsNk_F.mjs → homag-intelligence-Bm6OR-di.mjs} +2 -2
  21. package/lib/{homag-intelligence-cyYsNk_F.mjs.map → homag-intelligence-Bm6OR-di.mjs.map} +1 -1
  22. package/lib/{imos-ix-poc-export-helper-DxBMrVUd.mjs → imos-ix-poc-export-helper-IXN09m1n.mjs} +2 -2
  23. package/lib/{imos-ix-poc-export-helper-DxBMrVUd.mjs.map → imos-ix-poc-export-helper-IXN09m1n.mjs.map} +1 -1
  24. package/lib/{index-vA-vtmKN.mjs → index-C9LjHx1P.mjs} +31 -18
  25. package/lib/{index-vA-vtmKN.mjs.map → index-C9LjHx1P.mjs.map} +1 -1
  26. package/lib/{material-viewer-DipkoZOM.mjs → material-viewer-CxjXyJcN.mjs} +2 -2
  27. package/lib/{material-viewer-DipkoZOM.mjs.map → material-viewer-CxjXyJcN.mjs.map} +1 -1
  28. package/lib/roomle-sdk.d.ts +7 -20
  29. package/lib/roomle-sdk.js +1 -1
  30. package/lib/static/roomle-core-hsc/ConfiguratorKernel.wasm +0 -0
  31. package/lib/static/roomle-core-hsc/RoomleCore.wasm +0 -0
  32. package/lib/static/roomle-core-hsc/RoomleToolsCore.wasm +0 -0
  33. package/lib/static/roomle-core-hsc/configuratorCoreInterface.d.ts +2 -5
  34. package/lib/static/roomle-core-hsc/configuratorCoreInterface.js +1 -2
  35. package/lib/static/roomle-core-hsc/configuratorCoreInterface.js.map +1 -1
  36. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.d.ts +2 -5
  37. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.js +1 -2
  38. package/lib/static/roomle-core-hsc/embind/configuratorCoreInterface.js.map +1 -1
  39. package/lib/static/roomle-core-hsc/package.json +1 -1
  40. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.d.ts +2 -5
  41. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.js +1 -2
  42. package/lib/static/roomle-core-hsc/src/embind/configuratorCoreInterface.js.map +1 -1
  43. package/lib/static/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
  44. package/lib/static/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
  45. package/lib/static/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
  46. package/lib/{stats-helper-BVrsk2xy.mjs → stats-helper-CQ3WmIXr.mjs} +2 -2
  47. package/lib/{stats-helper-BVrsk2xy.mjs.map → stats-helper-CQ3WmIXr.mjs.map} +1 -1
  48. package/lib/{three.webgpu-B22ruPXP.mjs → three.webgpu-DbyBQGBo.mjs} +3 -3
  49. package/lib/{three.webgpu-B22ruPXP.mjs.map → three.webgpu-DbyBQGBo.mjs.map} +1 -1
  50. package/lib/{tools-core-C4WntGV0.mjs → tools-core-Cdqd-npf.mjs} +2 -2
  51. package/lib/{tools-core-C4WntGV0.mjs.map → tools-core-Cdqd-npf.mjs.map} +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"homag-intelligence-cyYsNk_F.mjs","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} 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';\nimport type { ExternalObjectValidContainerModules } from './external-object-api-callbacks';\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 ): 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 );\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 ): ExternalObjectValidContainerModules[] {\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 ): void {\n this._logRequest('addSubArticle', articleId, rootModuleId, parentModuleId);\n return this._glueLogic.addSubArticle(\n articleId,\n rootModuleId,\n parentModuleId,\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 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\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 return this._glueLogic.getLibraryData(libraryId);\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 ): PosGroup {\n if (!libraryExports.addSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.addSubArticle(\n targetPosGroup,\n article,\n rootId,\n parentModuleId,\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 try {\n window.exports = {};\n const blob = new Blob([scriptText], { type: 'text/javascript' });\n const blobUrl = URL.createObjectURL(blob);\n await import(blobUrl);\n URL.revokeObjectURL(blobUrl); // dispose of it when done\n return window.exports;\n } catch (e) {\n console.error(e);\n throw new Error('Failed to load calc.js!');\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"],"names":["byteToHex","i","unsafeStringify","arr","offset","getRandomValues","rnds8","rng","randomUUID","native","v4","options","buf","rnds","initCallbacks","roomlePlanner","gluLogic","groupId","rootModuleId","subModuleId","context","selectionMode","objectType","payload","payloadPromise","planElementViewModel","reason","getISO8601Date","date","isoString","msPosition","baseTimestamp","offsetMinutes","offsetHours","offsetMins","offsetString","createEmptyOrder","_addMerchantPositions","groupData","planOverview","count","itemIds","acc","item","merchantItems","posNo","pos","Orders","glueLogic","planId","orderHeader","orderData","withPrice","planData","priceData","order","GlueLayerRequestDebugLogging","hiCallbacks","message","args","messageAndArgs","libraryId","libraryData","posData","articleCatalogJson","targetGroup","idsOfGroupsMerged","idOfTargetRootModule","remainingGroup","rootModuleIdToDelete","splitOffGroups","splitGroup","newGroupedRootModules","duplicatedGroup","moduleIdObjects","attributeName","value","moduleId","attributeId","attributeValue","attributeIds","propertyName","propertyValue","posGroupIds","subArticleId","articleId","parentModuleId","subModuleIds","changedGroup","objectPositionChanged","posDataJson","reloadGroup","id","roomlePlannerId","materialId","groupOrModuleId","GlueLayerResponseDebugLogging","roomDesignerRequests","masterData","groupIds","group","groupOrRootModuleId","open","animate","HomagIntelligence","hiOptions","uuidv4","RoomDesignerApi","api","GlueLogicImplementation","savedPosGroupData","articles","catalogCallbacks","libraryExports","rooms","module","ids","attribute","attributeOptions","error","calculatedPosGroup","subArticle","targetPosGroup","article","rootId","articleModuleId","calcScriptString","scriptText","blob","blobUrl","e"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"homag-intelligence-Bm6OR-di.mjs","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} 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';\nimport type { ExternalObjectValidContainerModules } from './external-object-api-callbacks';\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 ): 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 );\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 ): ExternalObjectValidContainerModules[] {\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 ): void {\n this._logRequest('addSubArticle', articleId, rootModuleId, parentModuleId);\n return this._glueLogic.addSubArticle(\n articleId,\n rootModuleId,\n parentModuleId,\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 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\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 return this._glueLogic.getLibraryData(libraryId);\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 ): PosGroup {\n if (!libraryExports.addSubArticle) {\n return targetPosGroup;\n }\n const results = libraryExports.addSubArticle(\n targetPosGroup,\n article,\n rootId,\n parentModuleId,\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 try {\n window.exports = {};\n const blob = new Blob([scriptText], { type: 'text/javascript' });\n const blobUrl = URL.createObjectURL(blob);\n await import(blobUrl);\n URL.revokeObjectURL(blobUrl); // dispose of it when done\n return window.exports;\n } catch (e) {\n console.error(e);\n throw new Error('Failed to load calc.js!');\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"],"names":["byteToHex","i","unsafeStringify","arr","offset","getRandomValues","rnds8","rng","randomUUID","native","v4","options","buf","rnds","initCallbacks","roomlePlanner","gluLogic","groupId","rootModuleId","subModuleId","context","selectionMode","objectType","payload","payloadPromise","planElementViewModel","reason","getISO8601Date","date","isoString","msPosition","baseTimestamp","offsetMinutes","offsetHours","offsetMins","offsetString","createEmptyOrder","_addMerchantPositions","groupData","planOverview","count","itemIds","acc","item","merchantItems","posNo","pos","Orders","glueLogic","planId","orderHeader","orderData","withPrice","planData","priceData","order","GlueLayerRequestDebugLogging","hiCallbacks","message","args","messageAndArgs","libraryId","libraryData","posData","articleCatalogJson","targetGroup","idsOfGroupsMerged","idOfTargetRootModule","remainingGroup","rootModuleIdToDelete","splitOffGroups","splitGroup","newGroupedRootModules","duplicatedGroup","moduleIdObjects","attributeName","value","moduleId","attributeId","attributeValue","attributeIds","propertyName","propertyValue","posGroupIds","subArticleId","articleId","parentModuleId","subModuleIds","changedGroup","objectPositionChanged","posDataJson","reloadGroup","id","roomlePlannerId","materialId","groupOrModuleId","GlueLayerResponseDebugLogging","roomDesignerRequests","masterData","groupIds","group","groupOrRootModuleId","open","animate","HomagIntelligence","hiOptions","uuidv4","RoomDesignerApi","api","GlueLogicImplementation","savedPosGroupData","articles","catalogCallbacks","libraryExports","rooms","module","ids","attribute","attributeOptions","error","calculatedPosGroup","subArticle","targetPosGroup","article","rootId","articleModuleId","calcScriptString","scriptText","blob","blobUrl","e"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,4 +1,4 @@
1
- import { E as P, G as a, H as T } from "./index-vA-vtmKN.mjs";
1
+ import { E as P, G as a, H as T } from "./index-C9LjHx1P.mjs";
2
2
  const l = (e, t) => `${e.x.toFixed(t)},${e.y.toFixed(t)},${e.z.toFixed(t)}`, n = (e, t) => {
3
3
  let o = "";
4
4
  for (let r = 0; r < t.length; r++)
@@ -177,4 +177,4 @@ export {
177
177
  u as getFakeOrderParams,
178
178
  x as homagIxMockUpData
179
179
  };
180
- //# sourceMappingURL=imos-ix-poc-export-helper-DxBMrVUd.mjs.map
180
+ //# sourceMappingURL=imos-ix-poc-export-helper-IXN09m1n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"imos-ix-poc-export-helper-DxBMrVUd.mjs","sources":["../../packages/configurator-core/src/utils/imos-ix-poc-export-helper.ts"],"sourcesContent":["import { download } from '../../../common-core/src/utils/common-utils';\nimport { convertCObject } from '../../../common-core/src/utils/kernel-utils';\nimport {\n type ConfigurationExporter,\n type ConfiguratorKernelClass,\n ExportType,\n type HomagIxArticleData,\n} from '../../../typings/kernel';\nimport type { PlanOverview } from '../../../typings/planner';\n\nexport interface HomagIxOrderParams {\n orderNumber?: string;\n dispatchDate?: string;\n basketNumber?: string;\n}\n\nexport interface HomagIxHeaderParams {\n comm?: string;\n articleno?: string;\n customer?: string;\n retailer?: string;\n client?: string;\n program?: string;\n employee?: string;\n textLong?: string;\n textShort?: string;\n colour?: string[];\n info?: string[];\n address?: string[];\n billingAddress?: string[];\n shippingAddress?: string[];\n orderPriceInfo?: string[];\n customInfo?: string[];\n}\n\nexport interface HomagIxArticleParams {\n articleTextInfo1?: string;\n articleTextInfo2?: string;\n articlePriceInfo1?: string;\n articlePriceInfo2?: string;\n articlePriceInfo3?: string;\n deliveryPeriod?: string;\n supplier?: string;\n discount?: number;\n discountAbs?: number;\n}\n\nconst createVector3fString = (\n vec: { x: number; y: number; z: number },\n n: number,\n): string => {\n return `${vec.x.toFixed(n)},${vec.y.toFixed(n)},${vec.z.toFixed(n)}`;\n};\n\nconst createSectionFromArray = (\n sectionName: string,\n data: string[],\n): string => {\n let result = '';\n for (let i = 0; i < data.length; i++) {\n result += `<${sectionName}${i + 1}>${data[i]}</${sectionName}${i + 1}>\n `;\n }\n return result;\n};\n\nconst createHeader = (data: HomagIxHeaderParams): string => {\n return `<Head>\n <COMM>${data.comm}</COMM>\n <ARTICLENO>${data.articleno}</ARTICLENO>\n <CUSTOMER>${data.customer}</CUSTOMER>\n <RETAILER>${data.retailer}</RETAILER>\n <CLIENT>${data.client}</CLIENT>\n <PROGRAM>${data.program}</PROGRAM>\n <EMPLOYEE>${data.employee}</EMPLOYEE>\n <TEXT_LONG>${data.textLong}</TEXT_LONG>\n <TEXT_SHORT>${data.textShort}</TEXT_SHORT>\n\n ${createSectionFromArray('COLOUR', data.colour)}\n ${createSectionFromArray('INFO', data.info)}\n ${createSectionFromArray('ADDRESS', data.address)}\n ${createSectionFromArray('BILLING_ADDRESS', data.billingAddress)}\n ${createSectionFromArray('SHIPPING_ADDRESS', data.shippingAddress)}\n ${createSectionFromArray('ORDER_PRICE_INFO', data.orderPriceInfo)}\n ${createSectionFromArray('CUSTOM_INFO', data.customInfo)}\n </Head>`;\n};\n\nconst createArticle = (\n shop: HomagIxArticleParams,\n article: HomagIxArticleData,\n): string => {\n return `\n <Pname>${article.name}</Pname>\n <Count>${article.count}</Count>\n <PVarString>${article.attributes}</PVarString>\n <ARTICLE_TEXT_INFO1>${\n shop.articleTextInfo1 || ''\n }</ARTICLE_TEXT_INFO1>\n <ARTICLE_TEXT_INFO2>${\n shop.articleTextInfo2 || ''\n }</ARTICLE_TEXT_INFO2>\n <ARTICLE_PRICE_INFO1>${\n shop.articlePriceInfo1 || ''\n }</ARTICLE_PRICE_INFO1>\n <ARTICLE_PRICE_INFO2>${\n shop.articlePriceInfo2 || ''\n }</ARTICLE_PRICE_INFO2>\n <ARTICLE_PRICE_INFO3>${\n shop.articlePriceInfo3 || ''\n }</ARTICLE_PRICE_INFO3>\n <Pinsertion>${createVector3fString(\n article.position,\n 2,\n )}</Pinsertion>\n <POrntation>${createVector3fString(\n article.rotation,\n 2,\n )}</POrntation>\n <DeliveryPeriod>${shop.deliveryPeriod || ''}</DeliveryPeriod>\n <LIEFERANT>${shop.supplier || ''}</LIEFERANT>\n <Mengenrabatt>${shop.discount || 0}</Mengenrabatt>\n <MengenrabattAbs>${shop.discountAbs || ''}</MengenrabattAbs>\n `;\n};\n\nconst createArticles = (\n articleShopData: HomagIxArticleParams = {},\n articleCoreData: HomagIxArticleData[],\n): string => {\n let articlesDataString = '';\n for (let i = 0; i < articleCoreData.length; i++) {\n articlesDataString += `<Set LineNo=\"${i + 1}\">${createArticle(\n articleShopData,\n articleCoreData[i],\n )}</Set>\n `;\n }\n return articlesDataString;\n};\n\nexport const createHomagIxXml = (\n orderData: HomagIxOrderParams = {},\n headerData: HomagIxHeaderParams = {},\n articleShopData: HomagIxArticleParams = {},\n articleCoreData: any,\n): string => {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <XML type=\"ListBuilder\">\n <Order No=\"${orderData.orderNumber}\" DispDate=\"${\n orderData.dispatchDate\n }\" Basket=\"${orderData.basketNumber}\">\n ${createHeader(headerData)}\n <BuilderList>\n ${createArticles(articleShopData, articleCoreData.articles)}\n </BuilderList>\n </Order>\n </XML>\n `;\n};\n\n// Mock data section, these can be deleted if proper values are available\nexport const getFakeOrderParams = (): HomagIxOrderParams => {\n const randomNumber = Math.floor(Math.random() * 1000000).toString();\n return {\n orderNumber: 'Order ' + randomNumber,\n dispatchDate: '9/11/1911',\n basketNumber: randomNumber,\n };\n};\n\nexport const getFakeHeaderParams = (): HomagIxHeaderParams => {\n return {\n comm: 'Rubens2Rembrand',\n articleno: 'ExampleSIM',\n customer: 'Roomle',\n retailer: 'Retail',\n client: 'Ex ClientName',\n program: 'program',\n employee: 'Homag',\n textLong: 'long long long txt',\n textShort: 'short txt',\n colour: ['colour1', 'colour2', 'colour3', 'colour4', 'colour5'],\n info: [\n '1Admin',\n '2Firma_ABC',\n '3Adresse_ABC',\n '4PLZ_ABC',\n '5Stadt_ABC',\n '6',\n '7',\n '8',\n '9',\n '10',\n '11',\n '12',\n ],\n address: [\n 'Admin',\n 'Firma_ABC',\n 'Adresse_ABC',\n 'PLZ_ABC',\n 'Stadt_ABC',\n 'Kundennummer_ABC',\n 'Land_ABC',\n ],\n billingAddress: [\n 'Optional1',\n 'Optional2',\n 'Optional3',\n 'Optional4',\n 'Optional5',\n 'Optional6',\n ],\n shippingAddress: ['opt', 'opt', 'opt', 'opt', 'opt', 'opt'],\n orderPriceInfo: ['000', 'Price002', 'Price003', 'Price004', 'Price005'],\n customInfo: [\n 'CustInf1',\n 'CustInf2',\n 'CustInf3',\n 'CustInf4',\n 'CustInf5',\n 'CustInf6',\n 'CustInf7',\n 'CustInf8',\n 'CustInf9',\n 'CustInf10',\n ],\n };\n};\n\nexport const getFakeArticleParams = (): HomagIxArticleParams => {\n return {};\n};\n\nexport const downloadHomagIxExportPoC = async (\n planOverview: PlanOverview,\n exporter: ConfigurationExporter,\n kernelInstance: ConfiguratorKernelClass,\n) => {\n const planObjects = convertCObject(planOverview.objects);\n\n let articles: any[] = [];\n\n for (const planObject of planObjects) {\n const configurationRuntimeId = planObject.configurationRuntimeId;\n\n try {\n const planObjectExport = JSON.parse(\n exporter.generateExport(\n ExportType.HOMAGiX,\n configurationRuntimeId,\n kernelInstance,\n ),\n );\n articles = articles.concat(planObjectExport.articles);\n } catch (e) {\n console.error(e);\n return Promise.reject(\n `Could not create export JSON ${ExportType.HOMAGiX}`,\n );\n }\n }\n\n const homagIxOrderData = getFakeOrderParams();\n const homagIxHeaderParams = getFakeHeaderParams();\n const homagIxArticleParams = getFakeArticleParams();\n\n const xmltext = createHomagIxXml(\n homagIxOrderData,\n homagIxHeaderParams,\n homagIxArticleParams,\n { articles },\n );\n\n let filename = 'IMOSiX.xml';\n download(filename, xmltext);\n return Promise.resolve();\n};\nexport const generateExportHomagIxConfiguration = async (\n planObjectId: number,\n exportType: ExportType,\n exporter: ConfigurationExporter,\n kernelInstance: ConfiguratorKernelClass,\n defaultExportDefinition: string = '',\n): Promise<any> => {\n try {\n exporter.setDefaultExportDataDefinition(defaultExportDefinition);\n return Promise.resolve(\n JSON.parse(\n exporter.generateExport(exportType, planObjectId, kernelInstance),\n ),\n );\n } catch (e) {\n console.error(e);\n return Promise.reject(`Could not create export JSON ${exportType}`);\n }\n};\n\nexport const homagIxMockUpData = (\n articles: any[],\n homagIxOrderData = {},\n homagIxHeaderParams = {},\n homagIxArticleParams = {},\n) => {\n homagIxOrderData = getFakeOrderParams();\n homagIxHeaderParams = getFakeHeaderParams();\n homagIxArticleParams = getFakeArticleParams();\n\n return createHomagIxXml(\n homagIxOrderData,\n homagIxHeaderParams,\n homagIxArticleParams,\n articles,\n );\n};\n"],"names":["createVector3fString","vec","n","createSectionFromArray","sectionName","data","result","i","createHeader","createArticle","shop","article","createArticles","articleShopData","articleCoreData","articlesDataString","createHomagIxXml","orderData","headerData","getFakeOrderParams","randomNumber","getFakeHeaderParams","getFakeArticleParams","downloadHomagIxExportPoC","planOverview","exporter","kernelInstance","planObjects","convertCObject","articles","planObject","configurationRuntimeId","planObjectExport","ExportType","e","homagIxOrderData","homagIxHeaderParams","homagIxArticleParams","xmltext","download","generateExportHomagIxConfiguration","planObjectId","exportType","defaultExportDefinition","homagIxMockUpData"],"mappings":"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"}
1
+ {"version":3,"file":"imos-ix-poc-export-helper-IXN09m1n.mjs","sources":["../../packages/configurator-core/src/utils/imos-ix-poc-export-helper.ts"],"sourcesContent":["import { download } from '../../../common-core/src/utils/common-utils';\nimport { convertCObject } from '../../../common-core/src/utils/kernel-utils';\nimport {\n type ConfigurationExporter,\n type ConfiguratorKernelClass,\n ExportType,\n type HomagIxArticleData,\n} from '../../../typings/kernel';\nimport type { PlanOverview } from '../../../typings/planner';\n\nexport interface HomagIxOrderParams {\n orderNumber?: string;\n dispatchDate?: string;\n basketNumber?: string;\n}\n\nexport interface HomagIxHeaderParams {\n comm?: string;\n articleno?: string;\n customer?: string;\n retailer?: string;\n client?: string;\n program?: string;\n employee?: string;\n textLong?: string;\n textShort?: string;\n colour?: string[];\n info?: string[];\n address?: string[];\n billingAddress?: string[];\n shippingAddress?: string[];\n orderPriceInfo?: string[];\n customInfo?: string[];\n}\n\nexport interface HomagIxArticleParams {\n articleTextInfo1?: string;\n articleTextInfo2?: string;\n articlePriceInfo1?: string;\n articlePriceInfo2?: string;\n articlePriceInfo3?: string;\n deliveryPeriod?: string;\n supplier?: string;\n discount?: number;\n discountAbs?: number;\n}\n\nconst createVector3fString = (\n vec: { x: number; y: number; z: number },\n n: number,\n): string => {\n return `${vec.x.toFixed(n)},${vec.y.toFixed(n)},${vec.z.toFixed(n)}`;\n};\n\nconst createSectionFromArray = (\n sectionName: string,\n data: string[],\n): string => {\n let result = '';\n for (let i = 0; i < data.length; i++) {\n result += `<${sectionName}${i + 1}>${data[i]}</${sectionName}${i + 1}>\n `;\n }\n return result;\n};\n\nconst createHeader = (data: HomagIxHeaderParams): string => {\n return `<Head>\n <COMM>${data.comm}</COMM>\n <ARTICLENO>${data.articleno}</ARTICLENO>\n <CUSTOMER>${data.customer}</CUSTOMER>\n <RETAILER>${data.retailer}</RETAILER>\n <CLIENT>${data.client}</CLIENT>\n <PROGRAM>${data.program}</PROGRAM>\n <EMPLOYEE>${data.employee}</EMPLOYEE>\n <TEXT_LONG>${data.textLong}</TEXT_LONG>\n <TEXT_SHORT>${data.textShort}</TEXT_SHORT>\n\n ${createSectionFromArray('COLOUR', data.colour)}\n ${createSectionFromArray('INFO', data.info)}\n ${createSectionFromArray('ADDRESS', data.address)}\n ${createSectionFromArray('BILLING_ADDRESS', data.billingAddress)}\n ${createSectionFromArray('SHIPPING_ADDRESS', data.shippingAddress)}\n ${createSectionFromArray('ORDER_PRICE_INFO', data.orderPriceInfo)}\n ${createSectionFromArray('CUSTOM_INFO', data.customInfo)}\n </Head>`;\n};\n\nconst createArticle = (\n shop: HomagIxArticleParams,\n article: HomagIxArticleData,\n): string => {\n return `\n <Pname>${article.name}</Pname>\n <Count>${article.count}</Count>\n <PVarString>${article.attributes}</PVarString>\n <ARTICLE_TEXT_INFO1>${\n shop.articleTextInfo1 || ''\n }</ARTICLE_TEXT_INFO1>\n <ARTICLE_TEXT_INFO2>${\n shop.articleTextInfo2 || ''\n }</ARTICLE_TEXT_INFO2>\n <ARTICLE_PRICE_INFO1>${\n shop.articlePriceInfo1 || ''\n }</ARTICLE_PRICE_INFO1>\n <ARTICLE_PRICE_INFO2>${\n shop.articlePriceInfo2 || ''\n }</ARTICLE_PRICE_INFO2>\n <ARTICLE_PRICE_INFO3>${\n shop.articlePriceInfo3 || ''\n }</ARTICLE_PRICE_INFO3>\n <Pinsertion>${createVector3fString(\n article.position,\n 2,\n )}</Pinsertion>\n <POrntation>${createVector3fString(\n article.rotation,\n 2,\n )}</POrntation>\n <DeliveryPeriod>${shop.deliveryPeriod || ''}</DeliveryPeriod>\n <LIEFERANT>${shop.supplier || ''}</LIEFERANT>\n <Mengenrabatt>${shop.discount || 0}</Mengenrabatt>\n <MengenrabattAbs>${shop.discountAbs || ''}</MengenrabattAbs>\n `;\n};\n\nconst createArticles = (\n articleShopData: HomagIxArticleParams = {},\n articleCoreData: HomagIxArticleData[],\n): string => {\n let articlesDataString = '';\n for (let i = 0; i < articleCoreData.length; i++) {\n articlesDataString += `<Set LineNo=\"${i + 1}\">${createArticle(\n articleShopData,\n articleCoreData[i],\n )}</Set>\n `;\n }\n return articlesDataString;\n};\n\nexport const createHomagIxXml = (\n orderData: HomagIxOrderParams = {},\n headerData: HomagIxHeaderParams = {},\n articleShopData: HomagIxArticleParams = {},\n articleCoreData: any,\n): string => {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <XML type=\"ListBuilder\">\n <Order No=\"${orderData.orderNumber}\" DispDate=\"${\n orderData.dispatchDate\n }\" Basket=\"${orderData.basketNumber}\">\n ${createHeader(headerData)}\n <BuilderList>\n ${createArticles(articleShopData, articleCoreData.articles)}\n </BuilderList>\n </Order>\n </XML>\n `;\n};\n\n// Mock data section, these can be deleted if proper values are available\nexport const getFakeOrderParams = (): HomagIxOrderParams => {\n const randomNumber = Math.floor(Math.random() * 1000000).toString();\n return {\n orderNumber: 'Order ' + randomNumber,\n dispatchDate: '9/11/1911',\n basketNumber: randomNumber,\n };\n};\n\nexport const getFakeHeaderParams = (): HomagIxHeaderParams => {\n return {\n comm: 'Rubens2Rembrand',\n articleno: 'ExampleSIM',\n customer: 'Roomle',\n retailer: 'Retail',\n client: 'Ex ClientName',\n program: 'program',\n employee: 'Homag',\n textLong: 'long long long txt',\n textShort: 'short txt',\n colour: ['colour1', 'colour2', 'colour3', 'colour4', 'colour5'],\n info: [\n '1Admin',\n '2Firma_ABC',\n '3Adresse_ABC',\n '4PLZ_ABC',\n '5Stadt_ABC',\n '6',\n '7',\n '8',\n '9',\n '10',\n '11',\n '12',\n ],\n address: [\n 'Admin',\n 'Firma_ABC',\n 'Adresse_ABC',\n 'PLZ_ABC',\n 'Stadt_ABC',\n 'Kundennummer_ABC',\n 'Land_ABC',\n ],\n billingAddress: [\n 'Optional1',\n 'Optional2',\n 'Optional3',\n 'Optional4',\n 'Optional5',\n 'Optional6',\n ],\n shippingAddress: ['opt', 'opt', 'opt', 'opt', 'opt', 'opt'],\n orderPriceInfo: ['000', 'Price002', 'Price003', 'Price004', 'Price005'],\n customInfo: [\n 'CustInf1',\n 'CustInf2',\n 'CustInf3',\n 'CustInf4',\n 'CustInf5',\n 'CustInf6',\n 'CustInf7',\n 'CustInf8',\n 'CustInf9',\n 'CustInf10',\n ],\n };\n};\n\nexport const getFakeArticleParams = (): HomagIxArticleParams => {\n return {};\n};\n\nexport const downloadHomagIxExportPoC = async (\n planOverview: PlanOverview,\n exporter: ConfigurationExporter,\n kernelInstance: ConfiguratorKernelClass,\n) => {\n const planObjects = convertCObject(planOverview.objects);\n\n let articles: any[] = [];\n\n for (const planObject of planObjects) {\n const configurationRuntimeId = planObject.configurationRuntimeId;\n\n try {\n const planObjectExport = JSON.parse(\n exporter.generateExport(\n ExportType.HOMAGiX,\n configurationRuntimeId,\n kernelInstance,\n ),\n );\n articles = articles.concat(planObjectExport.articles);\n } catch (e) {\n console.error(e);\n return Promise.reject(\n `Could not create export JSON ${ExportType.HOMAGiX}`,\n );\n }\n }\n\n const homagIxOrderData = getFakeOrderParams();\n const homagIxHeaderParams = getFakeHeaderParams();\n const homagIxArticleParams = getFakeArticleParams();\n\n const xmltext = createHomagIxXml(\n homagIxOrderData,\n homagIxHeaderParams,\n homagIxArticleParams,\n { articles },\n );\n\n let filename = 'IMOSiX.xml';\n download(filename, xmltext);\n return Promise.resolve();\n};\nexport const generateExportHomagIxConfiguration = async (\n planObjectId: number,\n exportType: ExportType,\n exporter: ConfigurationExporter,\n kernelInstance: ConfiguratorKernelClass,\n defaultExportDefinition: string = '',\n): Promise<any> => {\n try {\n exporter.setDefaultExportDataDefinition(defaultExportDefinition);\n return Promise.resolve(\n JSON.parse(\n exporter.generateExport(exportType, planObjectId, kernelInstance),\n ),\n );\n } catch (e) {\n console.error(e);\n return Promise.reject(`Could not create export JSON ${exportType}`);\n }\n};\n\nexport const homagIxMockUpData = (\n articles: any[],\n homagIxOrderData = {},\n homagIxHeaderParams = {},\n homagIxArticleParams = {},\n) => {\n homagIxOrderData = getFakeOrderParams();\n homagIxHeaderParams = getFakeHeaderParams();\n homagIxArticleParams = getFakeArticleParams();\n\n return createHomagIxXml(\n homagIxOrderData,\n homagIxHeaderParams,\n homagIxArticleParams,\n articles,\n );\n};\n"],"names":["createVector3fString","vec","n","createSectionFromArray","sectionName","data","result","i","createHeader","createArticle","shop","article","createArticles","articleShopData","articleCoreData","articlesDataString","createHomagIxXml","orderData","headerData","getFakeOrderParams","randomNumber","getFakeHeaderParams","getFakeArticleParams","downloadHomagIxExportPoC","planOverview","exporter","kernelInstance","planObjects","convertCObject","articles","planObject","configurationRuntimeId","planObjectExport","ExportType","e","homagIxOrderData","homagIxHeaderParams","homagIxArticleParams","xmltext","download","generateExportHomagIxConfiguration","planObjectId","exportType","defaultExportDefinition","homagIxMockUpData"],"mappings":";AA+CA,MAAMA,IAAuB,CAC3BC,GACAC,MAEO,GAAGD,EAAI,EAAE,QAAQC,CAAC,CAAC,IAAID,EAAI,EAAE,QAAQC,CAAC,CAAC,IAAID,EAAI,EAAE,QAAQC,CAAC,CAAC,IAG9DC,IAAyB,CAC7BC,GACAC,MACW;AACX,MAAIC,IAAS;AACb,WAASC,IAAI,GAAGA,IAAIF,EAAK,QAAQE;AAC/B,IAAAD,KAAU,IAAIF,CAAW,GAAGG,IAAI,CAAC,IAAIF,EAAKE,CAAC,CAAC,KAAKH,CAAW,GAAGG,IAAI,CAAC;AAAA;AAGtE,SAAOD;AACT,GAEME,IAAe,CAACH,MACb;AAAA,oBACWA,EAAK,IAAI;AAAA,yBACJA,EAAK,SAAS;AAAA,wBACfA,EAAK,QAAQ;AAAA,wBACbA,EAAK,QAAQ;AAAA,sBACfA,EAAK,MAAM;AAAA,uBACVA,EAAK,OAAO;AAAA,wBACXA,EAAK,QAAQ;AAAA,yBACZA,EAAK,QAAQ;AAAA,0BACZA,EAAK,SAAS;AAAA;AAAA,cAE1BF,EAAuB,UAAUE,EAAK,MAAM,CAAC;AAAA,cAC7CF,EAAuB,QAAQE,EAAK,IAAI,CAAC;AAAA,cACzCF,EAAuB,WAAWE,EAAK,OAAO,CAAC;AAAA,cAC/CF,EAAuB,mBAAmBE,EAAK,cAAc,CAAC;AAAA,cAC9DF,EAAuB,oBAAoBE,EAAK,eAAe,CAAC;AAAA,cAChEF,EAAuB,oBAAoBE,EAAK,cAAc,CAAC;AAAA,cAC/DF,EAAuB,eAAeE,EAAK,UAAU,CAAC;AAAA,kBAI9DI,IAAgB,CACpBC,GACAC,MAEO;AAAA,yBACgBA,EAAQ,IAAI;AAAA,yBACZA,EAAQ,KAAK;AAAA,8BACRA,EAAQ,UAAU;AAAA,sCAE9BD,EAAK,oBAAoB,EAC3B;AAAA,sCAEEA,EAAK,oBAAoB,EAC3B;AAAA,uCAEEA,EAAK,qBAAqB,EAC5B;AAAA,uCAEEA,EAAK,qBAAqB,EAC5B;AAAA,uCAEEA,EAAK,qBAAqB,EAC5B;AAAA,8BACcV;AAAA,EACZW,EAAQ;AAAA,EACR;AAAA,CACD;AAAA,8BACaX;AAAA,EACZW,EAAQ;AAAA,EACR;AAAA,CACD;AAAA,kCACiBD,EAAK,kBAAkB,EAAE;AAAA,6BAC9BA,EAAK,YAAY,EAAE;AAAA,gCAChBA,EAAK,YAAY,CAAC;AAAA,mCACfA,EAAK,eAAe,EAAE;AAAA,KAInDE,IAAiB,CACrBC,IAAwC,CAAA,GACxCC,MACW;AACX,MAAIC,IAAqB;AACzB,WAASR,IAAI,GAAGA,IAAIO,EAAgB,QAAQP;AAC1C,IAAAQ,KAAsB,gBAAgBR,IAAI,CAAC,KAAKE;AAAA,MAC9CI;AAAA,MACAC,EAAgBP,CAAC;AAAA,IAAA,CAClB;AAAA;AAGH,SAAOQ;AACT,GAEaC,IAAmB,CAC9BC,IAAgC,IAChCC,IAAkC,CAAA,GAClCL,IAAwC,CAAA,GACxCC,MAEO;AAAA;AAAA,qBAEYG,EAAU,WAAW,eAChCA,EAAU,YACZ,aAAaA,EAAU,YAAY;AAAA,cAC7BT,EAAaU,CAAU,CAAC;AAAA;AAAA,kBAEpBN,EAAeC,GAAiBC,EAAgB,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,KAQ9DK,IAAqB,MAA0B;AAC1D,QAAMC,IAAe,KAAK,MAAM,KAAK,WAAW,GAAO,EAAE,SAAA;AACzD,SAAO;AAAA,IACL,aAAa,WAAWA;AAAA,IACxB,cAAc;AAAA,IACd,cAAcA;AAAA,EAAA;AAElB,GAEaC,IAAsB,OAC1B;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,QAAQ,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;AAAA,EAC9D,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,iBAAiB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC1D,gBAAgB,CAAC,OAAO,YAAY,YAAY,YAAY,UAAU;AAAA,EACtE,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AACF,IAISC,IAAuB,OAC3B,CAAA,IAGIC,IAA2B,OACtCC,GACAC,GACAC,MACG;AACH,QAAMC,IAAcC,EAAeJ,EAAa,OAAO;AAEvD,MAAIK,IAAkB,CAAA;AAEtB,aAAWC,KAAcH,GAAa;AACpC,UAAMI,IAAyBD,EAAW;AAE1C,QAAI;AACF,YAAME,IAAmB,KAAK;AAAA,QAC5BP,EAAS;AAAA,UACPQ,EAAW;AAAA,UACXF;AAAA,UACAL;AAAA,QAAA;AAAA,MACF;AAEF,MAAAG,IAAWA,EAAS,OAAOG,EAAiB,QAAQ;AAAA,IACtD,SAASE,GAAG;AACV,qBAAQ,MAAMA,CAAC,GACR,QAAQ;AAAA,QACb,gCAAgCD,EAAW,OAAO;AAAA,MAAA;AAAA,IAEtD;AAAA,EACF;AAEA,QAAME,IAAmBhB,EAAA,GACnBiB,IAAsBf,EAAA,GACtBgB,IAAuBf,EAAA,GAEvBgB,IAAUtB;AAAA,IACdmB;AAAA,IACAC;AAAA,IACAC;AAAA,IACA,EAAE,UAAAR,EAAA;AAAA,EAAS;AAIb,SAAAU,EADe,cACID,CAAO,GACnB,QAAQ,QAAA;AACjB,GACaE,IAAqC,OAChDC,GACAC,GACAjB,GACAC,GACAiB,IAAkC,OACjB;AACjB,MAAI;AACF,WAAAlB,EAAS,+BAA+BkB,CAAuB,GACxD,QAAQ;AAAA,MACb,KAAK;AAAA,QACHlB,EAAS,eAAeiB,GAAYD,GAAcf,CAAc;AAAA,MAAA;AAAA,IAClE;AAAA,EAEJ,SAASQ,GAAG;AACV,mBAAQ,MAAMA,CAAC,GACR,QAAQ,OAAO,gCAAgCQ,CAAU,EAAE;AAAA,EACpE;AACF,GAEaE,IAAoB,CAC/Bf,GACAM,IAAmB,CAAA,GACnBC,IAAsB,CAAA,GACtBC,IAAuB,QAEvBF,IAAmBhB,EAAA,GACnBiB,IAAsBf,EAAA,GACtBgB,IAAuBf,EAAA,GAEhBN;AAAA,EACLmB;AAAA,EACAC;AAAA,EACAC;AAAA,EACAR;AAAA;"}
@@ -36663,7 +36663,7 @@ class ga extends co {
36663
36663
  }
36664
36664
  _initLightSourceAndTarget(e, t, n = !1) {
36665
36665
  let i = new Se();
36666
- n && !this._helper && import("./SpotLightHelper-DcbD8VZZ.mjs").then(
36666
+ n && !this._helper && import("./SpotLightHelper-CadnKPkB.mjs").then(
36667
36667
  ({ SpotLightHelper: s }) => {
36668
36668
  this._helper = new s(this, 0), this._helper.visible = !1, this.add(this._helper), i = new Se(
36669
36669
  new Zt(0.15, 0.15, 0.15),
@@ -36853,7 +36853,7 @@ class kl extends X_ {
36853
36853
  super(ED, PD, TD), e.intensity ? this.intensity = e.intensity : this.power = AD, e.color && (typeof e.color == "number" ? this.color.setHex(e.color) : this.color = new le(e.color)), e.distance && (this.distance = e.distance), e.decay && (this.decay = e.decay), this._initLightSource(e.lightPos, t);
36854
36854
  }
36855
36855
  _initLightSource(e, t = !1) {
36856
- t && !this._helper && import("./PointLightHelper-DDoIf9Vg.mjs").then(
36856
+ t && !this._helper && import("./PointLightHelper-DZTk2W0h.mjs").then(
36857
36857
  ({ PointLightHelper: n }) => {
36858
36858
  this._helper = new n(this, 0), this._helper.visible = !1, this.add(this._helper);
36859
36859
  }
@@ -41673,7 +41673,7 @@ class D3 {
41673
41673
  var Xn = /* @__PURE__ */ ((r) => (r.RESIZE = "resize", r.KEY_DOWN = "keydown", r.KEY_UP = "keyup", r.VISIBILITY_CHANGE = "visibilitychange", r))(Xn || {});
41674
41674
  const tS = {
41675
41675
  VECTOR: "vector"
41676
- }, nS = "" + new URL("default_256.exr", import.meta.url).href, N3 = "" + new URL("default_1k.exr", import.meta.url).href, U3 = "" + new URL("legacy_env.exr", import.meta.url).href, F3 = "" + new URL("paper_background.png", import.meta.url).href, f0 = 1, p0 = 0, B3 = (r) => {
41676
+ }, nS = "" + new URL("default_256.exr", import.meta.url).href, N3 = "" + new URL("default_1k.exr", import.meta.url).href, U3 = "" + new URL("legacy_env.exr", import.meta.url).href, F3 = "" + new URL("paper_background.png", import.meta.url).href, f0 = 1.2, p0 = 0, B3 = (r) => {
41677
41677
  const e = {}, t = Object.keys(r);
41678
41678
  for (const n of t) {
41679
41679
  const i = r[n];
@@ -41845,7 +41845,7 @@ class aS {
41845
41845
  async init(e, t, n) {
41846
41846
  this._scene = e, this._uiScene = t, this._cameraPosition = n;
41847
41847
  const { bananaForScale: i } = this._initData;
41848
- i && await import("./banana-for-scale-DyzG9cnO.mjs").then(
41848
+ i && await import("./banana-for-scale-B6CjS1Cc.mjs").then(
41849
41849
  ({ default: s }) => this._plugins.push(new s(this._creator_))
41850
41850
  ), this._plugins.forEach((s) => s.setScene(this._scene)), this._plugins.forEach((s) => s.setUiScene(this._uiScene)), this._plugins.forEach((s) => s.updateBounds(this._bounds)), this._plugins.forEach(
41851
41851
  (s) => s.moveCameraEnd(this._cameraPosition)
@@ -42794,7 +42794,7 @@ class yh {
42794
42794
  };
42795
42795
  }
42796
42796
  );
42797
- this._dimensionDataMap.set(e.runtimeId, c), import("./component-dimensioning-CuUr4cCF.mjs").then((h) => {
42797
+ this._dimensionDataMap.set(e.runtimeId, c), import("./component-dimensioning-B0hNR39H.mjs").then((h) => {
42798
42798
  const d = [];
42799
42799
  let u;
42800
42800
  this._isThreeJSMode && (u = ta.parseFont(Uw), u || console.warn("Font not loaded, text labels will not be shown")), a.forEach((f, g) => {
@@ -42964,7 +42964,7 @@ class yh {
42964
42964
  }
42965
42965
  remove(e, t = !0) {
42966
42966
  return new Promise((n) => {
42967
- import("./component-dimensioning-CuUr4cCF.mjs").then((i) => {
42967
+ import("./component-dimensioning-B0hNR39H.mjs").then((i) => {
42968
42968
  const s = [];
42969
42969
  e.children.forEach((a) => {
42970
42970
  a instanceof i.default && s.push(a);
@@ -46387,7 +46387,7 @@ class Kn {
46387
46387
  const s = await this.generateHomagIxExport(
46388
46388
  Ac.HOMAGiX,
46389
46389
  e
46390
- ), { homagIxMockUpData: a } = await import("./imos-ix-poc-export-helper-DxBMrVUd.mjs");
46390
+ ), { homagIxMockUpData: a } = await import("./imos-ix-poc-export-helper-IXN09m1n.mjs");
46391
46391
  return a(
46392
46392
  s,
46393
46393
  t,
@@ -46400,7 +46400,7 @@ class Kn {
46400
46400
  ul("IMOSiX.xml", e);
46401
46401
  }
46402
46402
  async generateHomagIxExport(e, t = "") {
46403
- const { generateExportHomagIxConfiguration: n } = await import("./imos-ix-poc-export-helper-DxBMrVUd.mjs"), i = this._configuratorContext.configurationRuntimeId;
46403
+ const { generateExportHomagIxConfiguration: n } = await import("./imos-ix-poc-export-helper-IXN09m1n.mjs"), i = this._configuratorContext.configurationRuntimeId;
46404
46404
  n(
46405
46405
  i,
46406
46406
  e,
@@ -57309,7 +57309,7 @@ class Oh extends AS {
57309
57309
  }
57310
57310
  async _initMobileDrawing() {
57311
57311
  if (this.planInteractionHandler.setDrawingType(tw.CONTINOUS), this.planInteractionHandler.setSnapFeedbackWhileDrawing(!0), !this._continuousDrawingHelper) {
57312
- const { default: e } = await import("./continuous-drawing-helper-B5gXrJHm.mjs");
57312
+ const { default: e } = await import("./continuous-drawing-helper-D6hybw8b.mjs");
57313
57313
  this._continuousDrawingHelper = new e(), this._continuousDrawingHelper.init(
57314
57314
  this._drawingGroup,
57315
57315
  this.planInteractionHandler.getContinuousDrawingManager(),
@@ -59908,7 +59908,7 @@ class _i {
59908
59908
  alpha: !0
59909
59909
  };
59910
59910
  if (this._initData.featureFlags.webGpu) {
59911
- const { WebGPURenderer: o } = await import("./three.webgpu-B22ruPXP.mjs");
59911
+ const { WebGPURenderer: o } = await import("./three.webgpu-DbyBQGBo.mjs");
59912
59912
  this._renderer = new o(s), await this._renderer.init();
59913
59913
  } else
59914
59914
  this._renderer = new ph(s);
@@ -60084,7 +60084,7 @@ class _i {
60084
60084
  this._renderEverything();
60085
60085
  }
60086
60086
  showStats() {
60087
- import("./stats-helper-BVrsk2xy.mjs").then(
60087
+ import("./stats-helper-CQ3WmIXr.mjs").then(
60088
60088
  (e) => {
60089
60089
  this._statsHelper = new e.default(), this._roomleRenderer.setOnQualityLevelChangeCallback(
60090
60090
  (t) => {
@@ -60352,7 +60352,7 @@ class _i {
60352
60352
  this._isPartOfScene
60353
60353
  );
60354
60354
  try {
60355
- const { USDZExporter: t } = await import("./USDZExporter-CZ956mmz.mjs");
60355
+ const { USDZExporter: t } = await import("./USDZExporter-BtfLj3nk.mjs");
60356
60356
  if (e) {
60357
60357
  aF(e);
60358
60358
  const n = new gn();
@@ -60384,7 +60384,7 @@ class _i {
60384
60384
  e ?? this._isPartOfScene
60385
60385
  );
60386
60386
  try {
60387
- const { GLTFExporter: n } = await import("./GLTFExporter-DCQmhRQ9.mjs");
60387
+ const { GLTFExporter: n } = await import("./GLTFExporter-BGHkwQLJ.mjs");
60388
60388
  if (t) {
60389
60389
  const s = await new n().parseAsync(t, {
60390
60390
  binary: !0,
@@ -64826,7 +64826,7 @@ class xG {
64826
64826
  }
64827
64827
  static getMaterialViewer(e, t) {
64828
64828
  return t = this._setupDI(mt.CONFIGURATOR, e, t), tn.lookup("global-init-data").configuratorId ? new Promise(
64829
- (i, s) => import("./material-viewer-DipkoZOM.mjs").then(
64829
+ (i, s) => import("./material-viewer-CxjXyJcN.mjs").then(
64830
64830
  ({ MaterialViewer: a }) => i(new a(t)),
64831
64831
  s
64832
64832
  )
@@ -64834,7 +64834,7 @@ class xG {
64834
64834
  }
64835
64835
  static getCoreTools(e, t) {
64836
64836
  return t = this._setupDI(mt.TOOLS_CORE, e, t), new Promise(
64837
- (n, i) => import("./tools-core-C4WntGV0.mjs").then(
64837
+ (n, i) => import("./tools-core-Cdqd-npf.mjs").then(
64838
64838
  ({ ToolsCore: s }) => {
64839
64839
  const a = new s(t);
64840
64840
  a.boot(), n(a);
@@ -65667,6 +65667,13 @@ class vi {
65667
65667
  duplicateItems(e) {
65668
65668
  return this._plannerKernelAccess.duplicateItems(e);
65669
65669
  }
65670
+ /**
65671
+ * Merges all planObjects in the array
65672
+ * @param itemList Array of PlanObjects
65673
+ */
65674
+ mergeItems(e) {
65675
+ this._plannerKernelAccess.mergeItems(e);
65676
+ }
65670
65677
  getScene() {
65671
65678
  return this._sceneManager.getScene();
65672
65679
  }
@@ -66311,7 +66318,7 @@ class vi {
66311
66318
  this._sceneManager.disableEvents();
66312
66319
  }
66313
66320
  async downloadHomagIxExportPoC() {
66314
- const { downloadHomagIxExportPoC: e } = await import("./imos-ix-poc-export-helper-DxBMrVUd.mjs"), t = (await this.getPlanModelViewHelper()).getPlanOverview(
66321
+ const { downloadHomagIxExportPoC: e } = await import("./imos-ix-poc-export-helper-IXN09m1n.mjs"), t = (await this.getPlanModelViewHelper()).getPlanOverview(
66315
66322
  this._plan
66316
66323
  );
66317
66324
  return e(
@@ -66943,7 +66950,7 @@ class vi {
66943
66950
  "*",
66944
66951
  [e.port2]
66945
66952
  );
66946
- const t = KS(e.port1), n = await import("./homag-intelligence-cyYsNk_F.mjs");
66953
+ const t = KS(e.port1), n = await import("./homag-intelligence-Bm6OR-di.mjs");
66947
66954
  await new n.HomagIntelligence(
66948
66955
  // cast to unknown because we know that the planner is a RoomlePlanner
66949
66956
  this,
@@ -68079,6 +68086,12 @@ class Uf extends Dh {
68079
68086
  t.push_back(n);
68080
68087
  }), this.planInteractionHandler.duplicatePlanObjects(t, 1, !0);
68081
68088
  }
68089
+ mergeItems(e) {
68090
+ const t = new this.kernelContainer.PlanObjectPtrList();
68091
+ e.forEach((n) => {
68092
+ t.push_back(n);
68093
+ }), this.planInteractionHandler.mergeObjects(t);
68094
+ }
68082
68095
  _rapiItemToKernelItem(e) {
68083
68096
  const t = new this._kernelContainer.CatalogItem(e.id), n = t.size;
68084
68097
  return n.x = e.width || 0, n.y = e.depth || 0, n.z = e.height || 0, t.size = n, t.flipable = e.flipable, e.layer && (t.layer = e.layer), t.orderable = e.orderable, t.scaleable = e.scaleable, t.type = e.type || "other", t.detailType = e.detailType || t.type || "other", t.configuration = e.configuration || "", t;
@@ -73477,4 +73490,4 @@ export {
73477
73490
  N0 as y,
73478
73491
  tn as z
73479
73492
  };
73480
- //# sourceMappingURL=index-vA-vtmKN.mjs.map
73493
+ //# sourceMappingURL=index-C9LjHx1P.mjs.map