@roomle/embedding-lib 5.11.0 → 5.12.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,22 +1,124 @@
1
- ## [5.11.0](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.10.0...embedding-lib-v5.11.0) (2025-02-12)
1
+ ## [5.12.0-alpha.1](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.11.0...embedding-lib-v5.12.0-alpha.1) (2025-02-14)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * add object highlighting on hover to product list objects ([e067163](https://github.com/roomle-dev/roomle-ui/commit/e067163cfad8584cab6ed6f8b9f933b73858f8d3))
7
- * make Items selectable via product list ([fe76875](https://github.com/roomle-dev/roomle-ui/commit/fe768756f744b704410b3b4dbbabdc81dd0b2f28))
8
- * **SDK:** upgrade to 2.93.0-alpha.1 ([c64be1b](https://github.com/roomle-dev/roomle-ui/commit/c64be1bf3e09aef2746f978c424fe87e4bd2b321))
9
- * **SDK:** upgrade to version 2.92.0 ([#1448](https://github.com/roomle-dev/roomle-ui/issues/1448)) ([e7445f2](https://github.com/roomle-dev/roomle-ui/commit/e7445f207df93c365218c9de0e5493d6bb5e5cff))
10
- * **SDK:** upgrade to version 2.93.0-alpha.2 ([#1454](https://github.com/roomle-dev/roomle-ui/issues/1454)) ([e2cf0c7](https://github.com/roomle-dev/roomle-ui/commit/e2cf0c77f672064d196a4626bbec999e1aecbd4a))
11
- * **SDK:** upgrade to version 2.93.0-alpha.3 ([#1456](https://github.com/roomle-dev/roomle-ui/issues/1456)) ([6f094e3](https://github.com/roomle-dev/roomle-ui/commit/6f094e3b65be9ead6b2a5b416e77c044bfc143e1))
12
- * **SDK:** upgrade to version 2.93.0-alpha.4 ([#1463](https://github.com/roomle-dev/roomle-ui/issues/1463)) ([dd069b2](https://github.com/roomle-dev/roomle-ui/commit/dd069b265fd8f0002a92780f5162899acd25877a))
13
- * **SDK:** upgrade to version 2.93.0-alpha.5 ([#1466](https://github.com/roomle-dev/roomle-ui/issues/1466)) ([86cdec1](https://github.com/roomle-dev/roomle-ui/commit/86cdec14d5ebf59c5d5f94a50297c68692e28773))
14
- * use tenant from configurator id ([24422be](https://github.com/roomle-dev/roomle-ui/commit/24422be1bb3b4146a4016ee3741d82430f80240d))
6
+ * 2.87.0-bo-mvp.1 ([02098de](https://github.com/roomle-dev/roomle-ui/commit/02098deb584a74a0896f02316ab99958cb83776e))
7
+ * BO - TC-PoC ([88a17e5](https://github.com/roomle-dev/roomle-ui/commit/88a17e5b5de688931fba6b4780fbc47fb5c59a20))
8
+ * BO - TC-PoC ([ffb902c](https://github.com/roomle-dev/roomle-ui/commit/ffb902cd97bb582ccf90613400b8da28c0007cfe))
9
+ * call postProductManagerExportPoC on add-to-card while prodmanager is enabled ([8f2cdca](https://github.com/roomle-dev/roomle-ui/commit/8f2cdca05d0081f5795ec682ed5e53f1a6956cd9))
10
+ * create plan xml from external object group ([5df4946](https://github.com/roomle-dev/roomle-ui/commit/5df4946be5f445e3b836242b971c1416d2dd92a1))
11
+ * enable autoStart to be false for desktop view only mode ([4db0bb4](https://github.com/roomle-dev/roomle-ui/commit/4db0bb40f4e861347caab0a9767f05fef32e9d00))
12
+ * external catalog callback "onExternalUi" ([91865e2](https://github.com/roomle-dev/roomle-ui/commit/91865e2fb9625c229e58167fb4646d51f0e554cb))
13
+ * HomagIx export ([51db342](https://github.com/roomle-dev/roomle-ui/commit/51db3423124e2a1e1bacea6fcd8c6c6f0b25d729))
14
+ * Override request product if imosix flag is set ([01d6dd7](https://github.com/roomle-dev/roomle-ui/commit/01d6dd7bfc05efa82c0cd92f4286953be054e9a0))
15
+ * poc - production manager export ([3c0903c](https://github.com/roomle-dev/roomle-ui/commit/3c0903cb288530afc4303fd7f89ae0e9e8084e76))
16
+ * poc - production manager export ([e982b39](https://github.com/roomle-dev/roomle-ui/commit/e982b391d52c732120b50fb468eacba772aac73a))
17
+ * remove onExternalUi callback ([02e6cba](https://github.com/roomle-dev/roomle-ui/commit/02e6cba829e17476e86111cf0b81fe8d74236d4e))
18
+ * RML-11645 Override request product if imosix flag is set [#1182](https://github.com/roomle-dev/roomle-ui/issues/1182) ([4ef036e](https://github.com/roomle-dev/roomle-ui/commit/4ef036eb3ae377d5f927c53a95f586b79f9883cc))
19
+ * **SDK:** upgrade to version 2.59.0-bo-mvp.1 ([7e288b8](https://github.com/roomle-dev/roomle-ui/commit/7e288b8df38094a94a49809de1e2c20fe4656872))
20
+ * **SDK:** upgrade to version 2.59.0-bo-mvp.2 ([7de75a1](https://github.com/roomle-dev/roomle-ui/commit/7de75a1d76011b3ee6a910514b0c50cdb88ad8c5))
21
+ * **SDK:** upgrade to version 2.59.0-bo-mvp.3 ([4d6ddfe](https://github.com/roomle-dev/roomle-ui/commit/4d6ddfe1f7d8f02870d8ad8c3667789c74c2d2aa))
22
+ * **SDK:** upgrade to version 2.60.0-bo-mvp.1 ([be41f7e](https://github.com/roomle-dev/roomle-ui/commit/be41f7ee8be449bd6fda7b83aad3bcf21d198725))
23
+ * **SDK:** upgrade to version 2.61.0-bo-mvp.1 ([e631d4f](https://github.com/roomle-dev/roomle-ui/commit/e631d4f28a3ad63b95f8e0772c932a2ccb0d4d60))
24
+ * **SDK:** upgrade to version 2.61.0-bo-mvp.2 ([2371db1](https://github.com/roomle-dev/roomle-ui/commit/2371db1fa1591448e08edce0cf77bec327160c65))
25
+ * **SDK:** upgrade to version 2.61.0-bo-mvp.3 ([742e515](https://github.com/roomle-dev/roomle-ui/commit/742e5152247d4407daef413c11a509a610716b31))
26
+ * **SDK:** upgrade to version 2.82.0-bo-mvp.15 ([e3c4b77](https://github.com/roomle-dev/roomle-ui/commit/e3c4b777059034675db54fc00bab5e1d34337a0f))
27
+ * **SDK:** upgrade to version 2.83.0-bo-mvp.1 ([c8bf41c](https://github.com/roomle-dev/roomle-ui/commit/c8bf41c58ec4d5e3104d94cf7feaddfcd9346f19))
28
+ * **SDK:** upgrade to version 2.83.0-bo-mvp.2 ([3d63733](https://github.com/roomle-dev/roomle-ui/commit/3d637339af340417116720f9210edb39060138e8))
29
+ * **SDK:** upgrade to version 2.83.0-bo-mvp.3 ([8aeece8](https://github.com/roomle-dev/roomle-ui/commit/8aeece8464ccdff39da08db3e34918450b099184))
30
+ * **SDK:** upgrade to version 2.83.0-bo-mvp.5 ([724b4d7](https://github.com/roomle-dev/roomle-ui/commit/724b4d7340abff13418cafb6bb0fe9d4cd6203a9))
31
+ * **SDK:** upgrade to version 2.83.0-bo-mvp.6 ([bb4d270](https://github.com/roomle-dev/roomle-ui/commit/bb4d270922ec26d23dfe6cafab4bf2182a77674e))
32
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.2 ([8f796cf](https://github.com/roomle-dev/roomle-ui/commit/8f796cf7b10e9a7033b274106065dc1fef6c96db))
33
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.3 ([dcfc2fd](https://github.com/roomle-dev/roomle-ui/commit/dcfc2fd750be5e3b68c546401aaec3a1e5691384))
34
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.3 ([712a869](https://github.com/roomle-dev/roomle-ui/commit/712a869c01c92fe87bfcbf511073432602f26115))
35
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.4 ([a2ab256](https://github.com/roomle-dev/roomle-ui/commit/a2ab256416e939111da501e8d24be0946d1a879d))
36
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.5 ([3e4294e](https://github.com/roomle-dev/roomle-ui/commit/3e4294ead2aebb4f690ed27e79ab6ace635ca0e1))
37
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.6 ([fc65ea0](https://github.com/roomle-dev/roomle-ui/commit/fc65ea08f74bb15cd284e4c2771833dd07836b36))
38
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.7 ([109fbf7](https://github.com/roomle-dev/roomle-ui/commit/109fbf7384f1557a7411b69a8c042791d7451da9))
39
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.8 ([94c258c](https://github.com/roomle-dev/roomle-ui/commit/94c258c9e17392c15236b9ddf2898e9c83e3d557))
40
+ * **SDK:** upgrade to version 2.86.0-bo-mvp.9 ([daf4831](https://github.com/roomle-dev/roomle-ui/commit/daf4831d763794188548502e085a8abe848a906b))
41
+ * **SDK:** upgrade to version 2.87.0-bo-mvp.2 ([7b13314](https://github.com/roomle-dev/roomle-ui/commit/7b13314265f271ff07b3af76f61c235ca303e454))
42
+ * **SDK:** upgrade to version 2.87.0-bo-mvp.3 ([decd9af](https://github.com/roomle-dev/roomle-ui/commit/decd9aff516ce689e01b44a21ea3158585be1963))
43
+ * **SDK:** upgrade to version 2.87.0-bo-mvp.5 ([525dd92](https://github.com/roomle-dev/roomle-ui/commit/525dd92daa30a73b53510e526368d5e80474cad5))
44
+ * **SDK:** upgrade to version 2.87.0-bo-mvp.6 ([b9e4af0](https://github.com/roomle-dev/roomle-ui/commit/b9e4af0e3bfe2e8991a688ea651538afbda46a62))
45
+ * **SDK:** upgrade to version 2.87.0-bo-mvp.7 ([038df72](https://github.com/roomle-dev/roomle-ui/commit/038df72f446ec97eec22c484f7c2a1a9f6d943d0))
46
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.1 ([20bbb5f](https://github.com/roomle-dev/roomle-ui/commit/20bbb5f2048c804f0c633b002ee53fb3e5e6dd00))
47
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.2 ([127c089](https://github.com/roomle-dev/roomle-ui/commit/127c089f93183363b517fcf9242ca4b8b7c8e4df))
48
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.3 ([5a87903](https://github.com/roomle-dev/roomle-ui/commit/5a8790300475ee472772dacb4547aec5793675a8))
49
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.4 ([bc3e0bb](https://github.com/roomle-dev/roomle-ui/commit/bc3e0bba1e78e23b2cf3851c155169a8e05d4154))
50
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.5 ([4348dd5](https://github.com/roomle-dev/roomle-ui/commit/4348dd5d9a017a708ebc932fe1460c91ab54991c))
51
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.6 ([7f05ab9](https://github.com/roomle-dev/roomle-ui/commit/7f05ab90e1ebe07aa89958cd1e2feced7ce5748f))
52
+ * **SDK:** upgrade to version 2.88.0-bo-mvp.7 ([92c82c8](https://github.com/roomle-dev/roomle-ui/commit/92c82c8eadaaa3ad168fd84365d0193f21df97ba))
53
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.1 ([50530ee](https://github.com/roomle-dev/roomle-ui/commit/50530ee47c74cbc07066e4ac12407bbdb4a922af))
54
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.2 ([fa51364](https://github.com/roomle-dev/roomle-ui/commit/fa51364d8740ac14c8c859c2ef6e5e9ab7836751))
55
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.3 ([6a32c28](https://github.com/roomle-dev/roomle-ui/commit/6a32c28ff0c1c7d481a47f1fb596c13a711a2f13))
56
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.4 ([efacce6](https://github.com/roomle-dev/roomle-ui/commit/efacce6458ce7a312af0be42f51118d5b5706a0f))
57
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.5 ([627aa84](https://github.com/roomle-dev/roomle-ui/commit/627aa846a4fd241e6e1ddadf68ae67fddd5d34f1))
58
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.6 ([cb144a0](https://github.com/roomle-dev/roomle-ui/commit/cb144a075c32185e297a70fd481680b1222d8ff2))
59
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.7 ([7b72ead](https://github.com/roomle-dev/roomle-ui/commit/7b72ead3da70c4af06509bc86b16c2f87805bdf1))
60
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.8 ([76b9d8d](https://github.com/roomle-dev/roomle-ui/commit/76b9d8d77a8f945f36f66899a5778e45528cdbf4))
61
+ * **SDK:** upgrade to version 2.89.0-bo-mvp.9 ([8114faf](https://github.com/roomle-dev/roomle-ui/commit/8114faf9ff5a64a213f27f687723b2282500ebad))
62
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.1 ([827cccb](https://github.com/roomle-dev/roomle-ui/commit/827cccbe86c264f2ec1f0472c7a0dc23e7ace438))
63
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.2 ([1cb3d28](https://github.com/roomle-dev/roomle-ui/commit/1cb3d2859a75c5b8e83ba1814e620cd8bf17da9f))
64
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.3 ([c56a919](https://github.com/roomle-dev/roomle-ui/commit/c56a9197f68bf5a2b066ae552cb1fb9e4c9924f6))
65
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.4 ([930b971](https://github.com/roomle-dev/roomle-ui/commit/930b9712d7a51963bab232a44706fd6e2329d7f2))
66
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.5 ([604f0f2](https://github.com/roomle-dev/roomle-ui/commit/604f0f2518de81a7ae1e7b6c22d0b0f59f187086))
67
+ * **SDK:** upgrade to version 2.90.0-bo-mvp.6 ([1d551d5](https://github.com/roomle-dev/roomle-ui/commit/1d551d52bc302ae6e3ce12c44aeb5c06953d975a))
68
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.11 ([b2d6d15](https://github.com/roomle-dev/roomle-ui/commit/b2d6d15a18c004693c8f1a09889f5c6fb2a9418a))
69
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.12 ([89816b6](https://github.com/roomle-dev/roomle-ui/commit/89816b6cdddebce9366b6e792e6bd352086542d9))
70
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.13 ([3ae415c](https://github.com/roomle-dev/roomle-ui/commit/3ae415cc373b39295f01204d97560089ee906b48))
71
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.14 ([1b90685](https://github.com/roomle-dev/roomle-ui/commit/1b90685da907c99c247a7fca4b748904e5ea0105))
72
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.15 ([dea312a](https://github.com/roomle-dev/roomle-ui/commit/dea312aa822fb95f407b369dea27955041e1c68f))
73
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.16 ([385309a](https://github.com/roomle-dev/roomle-ui/commit/385309a365414a1f2cc44225b057dd397f28a8d5))
74
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.17 ([69c3dcc](https://github.com/roomle-dev/roomle-ui/commit/69c3dcc8a31251c824b0020e34c3f7dd3579a131))
75
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.19 ([01f5a98](https://github.com/roomle-dev/roomle-ui/commit/01f5a9896db99c60f6c016e8efc8050718ee26c5))
76
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.1 ([93a9fab](https://github.com/roomle-dev/roomle-ui/commit/93a9fab798b58c5ec3d4e992d433eba66c97a8a5))
77
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.20 ([44c0d72](https://github.com/roomle-dev/roomle-ui/commit/44c0d727d5cc8ea8ba32496d345b8be2c97d63a4))
78
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.2 ([57976a4](https://github.com/roomle-dev/roomle-ui/commit/57976a4834c78ec8db9b7b999ce6a104e4ffad7e))
79
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.3 ([0669d16](https://github.com/roomle-dev/roomle-ui/commit/0669d16d1107dc17d73861bb25ad2569a747f7fc))
80
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.4 ([8bf2d6d](https://github.com/roomle-dev/roomle-ui/commit/8bf2d6d00941e6f341c12ec4dfcf0c28087ccd84))
81
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.5 ([f703cfb](https://github.com/roomle-dev/roomle-ui/commit/f703cfb093bfda8366573fa6fd335ae1037791ec))
82
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.6 ([a89bda9](https://github.com/roomle-dev/roomle-ui/commit/a89bda970ac0fc42d6d1825eba696d083901aa00))
83
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.7 ([fad76b5](https://github.com/roomle-dev/roomle-ui/commit/fad76b5d850211e7825adbc437e7c160b3dec2f8))
84
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.8 ([98b5188](https://github.com/roomle-dev/roomle-ui/commit/98b5188f964a9f97cc5620666954adc18e6d9e00))
85
+ * **SDK:** upgrade to version 2.91.0-bo-mvp.9 ([a634de2](https://github.com/roomle-dev/roomle-ui/commit/a634de25fe4d406866bff73549c81d3e65d85ba1))
86
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.1 ([b5da218](https://github.com/roomle-dev/roomle-ui/commit/b5da2189fa8a74622c4c6d12f0d2cd4a70d49c71))
87
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.2 ([e6e9bdf](https://github.com/roomle-dev/roomle-ui/commit/e6e9bdff55da55e35c28f38e6fff2383036e6a6c))
88
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.3 ([43a59ab](https://github.com/roomle-dev/roomle-ui/commit/43a59ab96c214007aafa47d20ef198738a533495))
89
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.4 ([e40d00a](https://github.com/roomle-dev/roomle-ui/commit/e40d00a051d6ea7ee013bbf83cd6a2e41880640d))
90
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.5 ([92892a7](https://github.com/roomle-dev/roomle-ui/commit/92892a75b7b22861faba2abee5e3f0d40ebffda2))
91
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.6 ([7994d9d](https://github.com/roomle-dev/roomle-ui/commit/7994d9d4b51ecb858fc63390e944430e2adced05))
92
+ * **SDK:** upgrade to version 2.92.0-bo-mvp.7 ([837390b](https://github.com/roomle-dev/roomle-ui/commit/837390b679eb9546d0e772c6f10fffc51d684f70))
93
+ * **SDK:** upgrade to version 2.93.0 ([#1472](https://github.com/roomle-dev/roomle-ui/issues/1472)) ([ad46ae5](https://github.com/roomle-dev/roomle-ui/commit/ad46ae52627ce259ff69b6787913eeccdcaac75e))
94
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.1 ([706e24a](https://github.com/roomle-dev/roomle-ui/commit/706e24ac4c5522993a79bdb9e531510e7dc11551))
95
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.2 ([2d7d0fe](https://github.com/roomle-dev/roomle-ui/commit/2d7d0fef2df9142a7fd2b0246a38479b9c10df14))
96
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.4 ([31a1f79](https://github.com/roomle-dev/roomle-ui/commit/31a1f79388c467be77229bbfed7cf90636833eb6))
97
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.5 ([5c610cf](https://github.com/roomle-dev/roomle-ui/commit/5c610cfc3a10689676ff75505ebb0a8287749a80))
98
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.6 ([3a8ebe2](https://github.com/roomle-dev/roomle-ui/commit/3a8ebe297d46f7f501256f02d2bfc3dca06538a3))
99
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.7 ([5582367](https://github.com/roomle-dev/roomle-ui/commit/55823672c00c4fdea4ab4769be1cd3dcfb860e8a))
100
+ * **SDK:** upgrade to version 2.93.0-bo-mvp.8 ([a38d37e](https://github.com/roomle-dev/roomle-ui/commit/a38d37e2b72f45ac87c3b5e83a96d282518b089d))
101
+ * **SDK:** upgrade to version 2.94.0-alpha.1 ([#1478](https://github.com/roomle-dev/roomle-ui/issues/1478)) ([589518e](https://github.com/roomle-dev/roomle-ui/commit/589518efb5197eb6f4b6dc033850b09368cb58db))
15
102
 
16
103
 
17
104
  ### Bug Fixes
18
105
 
19
- * dont enable GA by default ([156e233](https://github.com/roomle-dev/roomle-ui/commit/156e23375dede430b5b2b40ca087d27376ae37f3))
20
- * improve Notification cards: Swipe functionality ([3d3866d](https://github.com/roomle-dev/roomle-ui/commit/3d3866d68a6f5858addd3de8b5aba40c43ef3870))
21
- * SDK: Floor color looks strange on Safari ([7bf1e40](https://github.com/roomle-dev/roomle-ui/commit/7bf1e40f6a3fd6c60fd7624f02e05ff3ab493699))
22
- * typescript error when build embedding lib ([b73ed20](https://github.com/roomle-dev/roomle-ui/commit/b73ed20880d6f5688603d2a25f4e92b477a8344f))
106
+ * add base url as well ([089f854](https://github.com/roomle-dev/roomle-ui/commit/089f85479b86bc300be88b31eebddcc9f57e031e))
107
+ * add separate vite plugin to handle translations properly ([175abc6](https://github.com/roomle-dev/roomle-ui/commit/175abc61e86fc381d1884f33067bc5a8966222be))
108
+ * Added else-if to not post to production manager export on IMOSiX ([7632fd1](https://github.com/roomle-dev/roomle-ui/commit/7632fd105502b8ef7e267f3b537846e18a1b5288))
109
+ * Change to frontal view menu not visible on small mobile screens ([159b1ab](https://github.com/roomle-dev/roomle-ui/commit/159b1ab6cc5204a72d204761b787e1039768dba7))
110
+ * failing tests ([17b3d8f](https://github.com/roomle-dev/roomle-ui/commit/17b3d8f9c6a9f89fb29cb8a7442ee28f911ebfd5))
111
+ * hack production manger request ([5a4b006](https://github.com/roomle-dev/roomle-ui/commit/5a4b006648a04e6521b0abc4727a14e846eaedf0))
112
+ * hide merge product button for all elements but objects ([fb28873](https://github.com/roomle-dev/roomle-ui/commit/fb2887385bee8bf8c27b72261e9a52ceec9d55d4))
113
+ * package lock ([200df68](https://github.com/roomle-dev/roomle-ui/commit/200df68f866203c32a1cfedc439dfe0e709b6c09))
114
+ * playwright failing test ([10d1381](https://github.com/roomle-dev/roomle-ui/commit/10d13814e652eea2fdc19ba64810914bc3e66606))
115
+ * playwright tests on bo-mvp branch ([948e05a](https://github.com/roomle-dev/roomle-ui/commit/948e05a39081600215baf73d6cf0daeeee525b52))
116
+ * property '_actualMeasurementString' is private and only accessible within class 'UnitFormatter'. (temp fix) ([9074d27](https://github.com/roomle-dev/roomle-ui/commit/9074d273be58b9980c9e11152f56384300c78ce4))
117
+ * removed "debugger" ([ad1b1ac](https://github.com/roomle-dev/roomle-ui/commit/ad1b1ac53410024c2d5bbf0d1429e39def377488))
118
+ * rollback bo-mvp ([43cf32c](https://github.com/roomle-dev/roomle-ui/commit/43cf32c957ac20230ccdad3fa2508e01b2f28c49))
119
+ * rollback bo-mvp ([a37ddf3](https://github.com/roomle-dev/roomle-ui/commit/a37ddf32f582a246d49b3d58165c67ad83a73235))
120
+ * Translations files (e.g. de.json) has no fingerprint ([6be02ca](https://github.com/roomle-dev/roomle-ui/commit/6be02caf8221154c4429a0ade4f681f60efefe1d))
121
+ * ts errors ([dc02614](https://github.com/roomle-dev/roomle-ui/commit/dc02614088c448979361d5c30664dd637a425089))
122
+ * ts errors ([d1434c1](https://github.com/roomle-dev/roomle-ui/commit/d1434c1698b4f4d090af02c353c01f8060dfd8dc))
123
+ * use correct package.json ([b5bfc75](https://github.com/roomle-dev/roomle-ui/commit/b5bfc75e8de7627b8a43681ae03f4ca24ccdbf6a))
124
+ * use correct path ([307c20d](https://github.com/roomle-dev/roomle-ui/commit/307c20d949adc507a6506c21c1aa73e34a42f80f))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomle/embedding-lib",
3
- "version": "5.11.0",
3
+ "version": "5.12.0-alpha.1",
4
4
  "description": "This is a small library which can be used to communicate with the Roomle Configurator",
5
5
  "type": "module",
6
6
  "main": "./roomle-embedding-lib.umd.js",
@@ -29,7 +29,7 @@
29
29
  "npm": "8.3.1"
30
30
  },
31
31
  "devDependencies": {
32
- "@roomle/web-sdk": "2.93.0-alpha.5"
32
+ "@roomle/web-sdk": "2.94.0-alpha.1"
33
33
  },
34
34
  "repository": {
35
35
  "type": "git",
@@ -0,0 +1,6 @@
1
+ import { Plugin } from 'vite';
2
+
3
+ export default function translationsPlugin(options: {
4
+ include: string;
5
+ accessiblePath: string;
6
+ }): Plugin;
@@ -30,6 +30,7 @@ export declare const FALLBACK_INIT_DATA: {
30
30
  wallAutoHeight: boolean;
31
31
  };
32
32
  rotationSnapDegrees: number;
33
+ interactionsCollapsed: boolean;
33
34
  };
34
35
  export declare const CONFIGURATOR_IDLE = "(idle)";
35
36
  export declare const getInitData: (useFallbackId?: boolean) => UiInitData;
@@ -208,7 +208,8 @@ const z = {
208
208
  mocAr: !0,
209
209
  wallAutoHeight: !1
210
210
  },
211
- rotationSnapDegrees: 10
211
+ rotationSnapDegrees: 10,
212
+ interactionsCollapsed: !1
212
213
  }, Y = "(idle)", q = (e) => (O(e), e != null && e.customApiUrl && (e.customApiUrl = decodeURIComponent(e.customApiUrl)), e.shareUrl && (e.deeplink = e.shareUrl.replace(
213
214
  X,
214
215
  Z
@@ -1,4 +1,4 @@
1
- var H=Object.defineProperty,U=(s,e,t)=>e in s?H(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>U(s,typeof e!="symbol"?e+"":e,t);class I{constructor(e,t,r,i){c(this,"_side"),c(this,"_incomingMessageBus",null),c(this,"_outgoingMessageBus",null),c(this,"_execMessage",null),this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=r,this._execMessage=i,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((r,i)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return r(void 0);const o=new MessageChannel;o.port1.onmessage=n=>{if(!n||!n.data)return o.port1.close(),o.port2.close(),i(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(n.data)}catch(u){return o.port1.close(),o.port2.close(),this._prepareError(u),i(u)}l.error?i(l.error):l.result!==void 0?r(l.result):r(void 0),o.port1.close(),o.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}catch{return i(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return i(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(a,"*",[o.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const r=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(r.args)||(r.args=[r.args]);const i=this._execMessage(r,e);if(i===void 0)return;i.then((o={})=>{let a,n;typeof o=="object"&&o!==null&&(a=o.error,n=o.result),a?t.postMessage(JSON.stringify({error:a})):n!==void 0?t.postMessage(JSON.stringify({result:n})):t.postMessage(JSON.stringify({result:o}))},o=>{t.postMessage(JSON.stringify({error:this._prepareError(o)}))})}catch(r){t.postMessage(JSON.stringify({error:this._prepareError(r)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",f={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},B=async(s,e)=>{if(typeof s!="string")throw new Error('Configurator ID is not a string type: "'+typeof s+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",r=e.overrideTenant||9,i=t+"/configurators/"+s,o="roomle_portal_v2",a="03-"+window.btoa(new Date().toISOString()+";anonymous;"+o),n=()=>{const d={apiKey:o,currentTenant:r,locale:"en",language:"en",device:1,token:a,platform:"web"};return new Headers(d)},l=new Request(i,{method:"GET",headers:n(),mode:"cors",cache:"default"}),u=await fetch(l),{configurator:h}=await u.json();return h},F=()=>{try{return window.self!==window.top}catch{return!0}},C=["127.0.0.1","localhost","0.0.0.0"],k=()=>{const s=F();let e=window.location.href;if(s){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},x=s=>!!(C.includes(s)||s.endsWith("roomle.com")||s.endsWith("gitlab.io")||s.endsWith("gitlab.com")),y=["language","browserLanguage","userLanguage","systemLanguage"],W=(s=null)=>{const e=window.navigator;if(s)return s.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,r=y.length;t<r;t++){const i=e[y[t]];if(i)return i.substr(0,2)}return"en"},V=(s,e)=>{const t=JSON.parse(JSON.stringify(s));return w(t,e)},w=(s,e)=>{for(const t in e)try{e[t].constructor===Object?s[t]=w(s[t],e[t]):s[t]=e[t]}catch{s[t]=e[t]}return s};var T=(s=>(s.BOTTOM_BAR="bottom_bar",s.PARTLIST_BOUNDS="partlist_bounds",s.INTERACTION_NOTES="interaction_notes",s))(T||{}),G={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const J={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[T.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10},$="(idle)",j=s=>(E(s),s!=null&&s.customApiUrl&&(s.customApiUrl=decodeURIComponent(s.customApiUrl)),s.shareUrl&&(s.deeplink=s.shareUrl.replace(Y,Q)),s),E=s=>{if(!s)return;const e=Object.keys(s);for(const t of e){const r=s[t];if(!Array.isArray(r)&&typeof r=="object"&&r!==null&&E(r),Array.isArray(r))for(const i of r)E(i);(r==="true"||r==="false")&&(s[t]=r==="true")}},z=(s,e)=>{e.configuratorId=s.id;const t=s.settings||{};return!e.overrideTenant&&s.tenant&&(e.overrideTenant=s.tenant),V(t,e)},q=()=>{const s={...J};s.locale||(s.locale=W()),s.id===$&&delete s.id;const e=k();return e&&x(e)&&(s.configuratorId="demoConfigurator"),s.customApiUrl=G.VITE_RAPI_URL,s.emails=!1,s},Y="<CONF_ID>",Q="#CONFIGURATIONID#",K=s=>{s.featureFlags||(s.featureFlags={}),typeof s.featureFlags.realPartList!="boolean"&&(s.featureFlags.realPartList=!0),typeof s.featureFlags.globalCallbacks!="boolean"&&(s.featureFlags.globalCallbacks=!0),typeof s.featureFlags.mocAr!="boolean"&&(s.featureFlags.mocAr=!1)},M=()=>/(android)/i.test(navigator.userAgent);class v{constructor(){c(this,"_messageHandler",null),c(this,"isSetupDone",!1),c(this,"viewName","main"),c(this,"plugins",{}),c(this,"pluginsLoaded",[]),c(this,"ui",{callbacks:null}),c(this,"extended",{callbacks:null}),c(this,"configurator",{callbacks:null}),c(this,"analytics",{callbacks:{}}),c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:r}=e;t.forEach(i=>{const o=i.split(p),a=o[0],n=o[1];this[a]||(this[a]={}),this[a][n]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(i,[...arguments])}.bind(this)}),r.forEach(i=>{const o=i.split(p),a=o[0],n=o[1],l=o[2];this[a]||(this[a]={}),this[a][n]||(this[a][n]={}),this[a][n][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const r=e.split(p),i=r[0],o=r[1],a=r.length===3?r[2]:null;if(a&&this[i][o][a]){const n=this[i][o][a](...t);return n instanceof Promise?n.then(l=>({result:l})):n!==void 0?Promise.resolve({result:n}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,r="website"){for(const i of e)typeof i=="string"&&i==="dragIn"?this.pluginsLoaded.push(new Promise((o,a)=>{try{import("./drag-in-CYmR1HFI.mjs").then(n=>n.l).then(({DragIn:n})=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,o()},a)})}catch(n){a(n)}})):i.name&&i.loader&&this.pluginsLoaded.push(new Promise((o,a)=>{try{i.loader().then(n=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins[i.name]=l,o()},a)})}catch(n){a(n)}}))}}const S=()=>{let s,e;return{promise:new Promise((t,r)=>{s=t,e=r}),resolve:s,reject:e}},N=(s,e,t)=>{let r=null;Object.defineProperty(s,e,{get(){return r||t},set(i){i!=null&&i.mute?r=i.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),r=i)}})},R=()=>window.innerHeight*.01+"px",D=s=>{s&&setTimeout(()=>s.style.setProperty(O,R()),0)},L="rml-styles",X=450,O="--rml-full-height",g={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},b=new Map;class Z extends v{constructor(e,t,r,i,o){if(super(),c(this,"_waitForIframe"),c(this,"_container"),c(this,"_configuratorSettings"),c(this,"_initData",{}),c(this,"_iframe"),!e||typeof e.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(b.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(L)){const l=r.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=L;const h="transition:all ease-in-out "+X+"ms;",d=["-webkit-","-o-"].reduce((P,A)=>P+=A+h,"")+h,m=R();u.innerHTML=`
1
+ var H=Object.defineProperty,U=(s,e,t)=>e in s?H(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>U(s,typeof e!="symbol"?e+"":e,t);class I{constructor(e,t,r,i){c(this,"_side"),c(this,"_incomingMessageBus",null),c(this,"_outgoingMessageBus",null),c(this,"_execMessage",null),this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=r,this._execMessage=i,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((r,i)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return r(void 0);const o=new MessageChannel;o.port1.onmessage=n=>{if(!n||!n.data)return o.port1.close(),o.port2.close(),i(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(n.data)}catch(u){return o.port1.close(),o.port2.close(),this._prepareError(u),i(u)}l.error?i(l.error):l.result!==void 0?r(l.result):r(void 0),o.port1.close(),o.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}catch{return i(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return i(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(a,"*",[o.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const r=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(r.args)||(r.args=[r.args]);const i=this._execMessage(r,e);if(i===void 0)return;i.then((o={})=>{let a,n;typeof o=="object"&&o!==null&&(a=o.error,n=o.result),a?t.postMessage(JSON.stringify({error:a})):n!==void 0?t.postMessage(JSON.stringify({result:n})):t.postMessage(JSON.stringify({result:o}))},o=>{t.postMessage(JSON.stringify({error:this._prepareError(o)}))})}catch(r){t.postMessage(JSON.stringify({error:this._prepareError(r)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",f={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},B=async(s,e)=>{if(typeof s!="string")throw new Error('Configurator ID is not a string type: "'+typeof s+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",r=e.overrideTenant||9,i=t+"/configurators/"+s,o="roomle_portal_v2",a="03-"+window.btoa(new Date().toISOString()+";anonymous;"+o),n=()=>{const d={apiKey:o,currentTenant:r,locale:"en",language:"en",device:1,token:a,platform:"web"};return new Headers(d)},l=new Request(i,{method:"GET",headers:n(),mode:"cors",cache:"default"}),u=await fetch(l),{configurator:h}=await u.json();return h},F=()=>{try{return window.self!==window.top}catch{return!0}},C=["127.0.0.1","localhost","0.0.0.0"],k=()=>{const s=F();let e=window.location.href;if(s){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},x=s=>!!(C.includes(s)||s.endsWith("roomle.com")||s.endsWith("gitlab.io")||s.endsWith("gitlab.com")),y=["language","browserLanguage","userLanguage","systemLanguage"],W=(s=null)=>{const e=window.navigator;if(s)return s.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,r=y.length;t<r;t++){const i=e[y[t]];if(i)return i.substr(0,2)}return"en"},V=(s,e)=>{const t=JSON.parse(JSON.stringify(s));return w(t,e)},w=(s,e)=>{for(const t in e)try{e[t].constructor===Object?s[t]=w(s[t],e[t]):s[t]=e[t]}catch{s[t]=e[t]}return s};var T=(s=>(s.BOTTOM_BAR="bottom_bar",s.PARTLIST_BOUNDS="partlist_bounds",s.INTERACTION_NOTES="interaction_notes",s))(T||{}),G={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const J={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[T.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},$="(idle)",j=s=>(E(s),s!=null&&s.customApiUrl&&(s.customApiUrl=decodeURIComponent(s.customApiUrl)),s.shareUrl&&(s.deeplink=s.shareUrl.replace(Y,Q)),s),E=s=>{if(!s)return;const e=Object.keys(s);for(const t of e){const r=s[t];if(!Array.isArray(r)&&typeof r=="object"&&r!==null&&E(r),Array.isArray(r))for(const i of r)E(i);(r==="true"||r==="false")&&(s[t]=r==="true")}},z=(s,e)=>{e.configuratorId=s.id;const t=s.settings||{};return!e.overrideTenant&&s.tenant&&(e.overrideTenant=s.tenant),V(t,e)},q=()=>{const s={...J};s.locale||(s.locale=W()),s.id===$&&delete s.id;const e=k();return e&&x(e)&&(s.configuratorId="demoConfigurator"),s.customApiUrl=G.VITE_RAPI_URL,s.emails=!1,s},Y="<CONF_ID>",Q="#CONFIGURATIONID#",K=s=>{s.featureFlags||(s.featureFlags={}),typeof s.featureFlags.realPartList!="boolean"&&(s.featureFlags.realPartList=!0),typeof s.featureFlags.globalCallbacks!="boolean"&&(s.featureFlags.globalCallbacks=!0),typeof s.featureFlags.mocAr!="boolean"&&(s.featureFlags.mocAr=!1)},M=()=>/(android)/i.test(navigator.userAgent);class v{constructor(){c(this,"_messageHandler",null),c(this,"isSetupDone",!1),c(this,"viewName","main"),c(this,"plugins",{}),c(this,"pluginsLoaded",[]),c(this,"ui",{callbacks:null}),c(this,"extended",{callbacks:null}),c(this,"configurator",{callbacks:null}),c(this,"analytics",{callbacks:{}}),c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:r}=e;t.forEach(i=>{const o=i.split(p),a=o[0],n=o[1];this[a]||(this[a]={}),this[a][n]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(i,[...arguments])}.bind(this)}),r.forEach(i=>{const o=i.split(p),a=o[0],n=o[1],l=o[2];this[a]||(this[a]={}),this[a][n]||(this[a][n]={}),this[a][n][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const r=e.split(p),i=r[0],o=r[1],a=r.length===3?r[2]:null;if(a&&this[i][o][a]){const n=this[i][o][a](...t);return n instanceof Promise?n.then(l=>({result:l})):n!==void 0?Promise.resolve({result:n}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,r="website"){for(const i of e)typeof i=="string"&&i==="dragIn"?this.pluginsLoaded.push(new Promise((o,a)=>{try{import("./drag-in-CYmR1HFI.mjs").then(n=>n.l).then(({DragIn:n})=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,o()},a)})}catch(n){a(n)}})):i.name&&i.loader&&this.pluginsLoaded.push(new Promise((o,a)=>{try{i.loader().then(n=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins[i.name]=l,o()},a)})}catch(n){a(n)}}))}}const S=()=>{let s,e;return{promise:new Promise((t,r)=>{s=t,e=r}),resolve:s,reject:e}},N=(s,e,t)=>{let r=null;Object.defineProperty(s,e,{get(){return r||t},set(i){i!=null&&i.mute?r=i.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),r=i)}})},R=()=>window.innerHeight*.01+"px",D=s=>{s&&setTimeout(()=>s.style.setProperty(O,R()),0)},L="rml-styles",X=450,O="--rml-full-height",g={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},b=new Map;class Z extends v{constructor(e,t,r,i,o){if(super(),c(this,"_waitForIframe"),c(this,"_container"),c(this,"_configuratorSettings"),c(this,"_initData",{}),c(this,"_iframe"),!e||typeof e.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(b.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(L)){const l=r.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=L;const h="transition:all ease-in-out "+X+"ms;",d=["-webkit-","-o-"].reduce((P,A)=>P+=A+h,"")+h,m=R();u.innerHTML=`
2
2
  .${g.CONTAINER}{${O}:${m};}
3
3
  .${g.POSITION}{position:fixed;top:0;left:0;z-index:${l};opacity:0}
4
4
  .${g.TRANSITION}{${d}}
@@ -1,11 +1,11 @@
1
- (function(_,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(_=typeof globalThis<"u"?globalThis:_||self,_["roomle-embedding-lib"]=_["roomle-embedding-lib"]||{},_["roomle-embedding-lib"].umd=_["roomle-embedding-lib"].umd||{},_["roomle-embedding-lib"].umd.js=p())})(this,function(){"use strict";var te=Object.defineProperty;var ee=(_,p,E)=>p in _?te(_,p,{enumerable:!0,configurable:!0,writable:!0,value:E}):_[p]=E;var c=(_,p,E)=>ee(_,typeof p!="symbol"?p+"":p,E);class _{constructor(e,t,s,n){c(this,"_side");c(this,"_incomingMessageBus",null);c(this,"_outgoingMessageBus",null);c(this,"_execMessage",null);this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=a=>{if(!a||!a.data)return i.port1.close(),i.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(a.data)}catch(d){return i.port1.close(),i.port2.close(),this._prepareError(d),n(d)}l.error?n(l.error):l.result!==void 0?s(l.result):s(void 0),i.port1.close(),i.port2.close()};let o="";try{o=JSON.stringify({message:e,args:t})}catch{return n(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return n(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(o,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const s=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const n=this._execMessage(s,e);if(n===void 0)return;n.then((i={})=>{let o,a;typeof i=="object"&&i!==null&&(o=i.error,a=i.result),o?t.postMessage(JSON.stringify({error:o})):a!==void 0?t.postMessage(JSON.stringify({result:a})):t.postMessage(JSON.stringify({result:i}))},i=>{t.postMessage(JSON.stringify({error:this._prepareError(i)}))})}catch(s){t.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",E={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},w={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},pt=async(r,e)=>{if(typeof r!="string")throw new Error('Configurator ID is not a string type: "'+typeof r+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",s=e.overrideTenant||9,n=t+"/configurators/"+r,i="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+i),a=()=>{const u={apiKey:i,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},l=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),d=await fetch(l),{configurator:h}=await d.json();return h},yt=()=>{try{return window.self!==window.top}catch{return!0}},Et=["127.0.0.1","localhost","0.0.0.0"],Dt=()=>{const r=yt();let e=window.location.href;if(r){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},Tt=r=>!!(Et.includes(r)||r.endsWith("roomle.com")||r.endsWith("gitlab.io")||r.endsWith("gitlab.com")),k=["language","browserLanguage","userLanguage","systemLanguage"],St=(r=null)=>{const e=window.navigator;if(r)return r.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,s=k.length;t<s;t++){const n=e[k[t]];if(n)return n.substr(0,2)}return"en"},It=(r,e)=>{const t=JSON.parse(JSON.stringify(r));return L(t,e)},L=(r,e)=>{for(const t in e)try{e[t].constructor===Object?r[t]=L(r[t],e[t]):r[t]=e[t]}catch{r[t]=e[t]}return r};var z=(r=>(r.BOTTOM_BAR="bottom_bar",r.PARTLIST_BOUNDS="partlist_bounds",r.INTERACTION_NOTES="interaction_notes",r))(z||{}),wt={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const At={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[z.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10},bt="(idle)",Ot=r=>(C(r),r!=null&&r.customApiUrl&&(r.customApiUrl=decodeURIComponent(r.customApiUrl)),r.shareUrl&&(r.deeplink=r.shareUrl.replace(Mt,Lt)),r),C=r=>{if(!r)return;const e=Object.keys(r);for(const t of e){const s=r[t];if(!Array.isArray(s)&&typeof s=="object"&&s!==null&&C(s),Array.isArray(s))for(const n of s)C(n);(s==="true"||s==="false")&&(r[t]=s==="true")}},vt=(r,e)=>{e.configuratorId=r.id;const t=r.settings||{};return!e.overrideTenant&&r.tenant&&(e.overrideTenant=r.tenant),It(t,e)},Rt=()=>{const r={...At};r.locale||(r.locale=St()),r.id===bt&&delete r.id;const e=Dt();return e&&Tt(e)&&(r.configuratorId="demoConfigurator"),r.customApiUrl=wt.VITE_RAPI_URL,r.emails=!1,r},Mt="<CONF_ID>",Lt="#CONFIGURATIONID#",Ct=r=>{r.featureFlags||(r.featureFlags={}),typeof r.featureFlags.realPartList!="boolean"&&(r.featureFlags.realPartList=!0),typeof r.featureFlags.globalCallbacks!="boolean"&&(r.featureFlags.globalCallbacks=!0),typeof r.featureFlags.mocAr!="boolean"&&(r.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){c(this,"_messageHandler",null);c(this,"isSetupDone",!1);c(this,"viewName","main");c(this,"plugins",{});c(this,"pluginsLoaded",[]);c(this,"ui",{callbacks:null});c(this,"extended",{callbacks:null});c(this,"configurator",{callbacks:null});c(this,"analytics",{callbacks:{}});c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:s}=e;t.forEach(n=>{const i=n.split(p),o=i[0],a=i[1];this[o]||(this[o]={}),this[o][a]=(function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(n,[...arguments])}).bind(this)}),s.forEach(n=>{const i=n.split(p),o=i[0],a=i[1],l=i[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const s=e.split(p),n=s[0],i=s[1],o=s.length===3?s[2]:null;if(o&&this[n][i][o]){const a=this[n][i][o](...t);return a instanceof Promise?a.then(l=>({result:l})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,s="website"){for(const n of e)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((i,o)=>{try{Promise.resolve().then(()=>Pt).then(({DragIn:a})=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,i()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((i,o)=>{try{n.loader().then(a=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins[n.name]=l,i()},o)})}catch(a){o(a)}}))}}const K=()=>{let r,e;return{promise:new Promise((s,n)=>{r=s,e=n}),resolve:r,reject:e}},J=(r,e,t)=>{let s=null;Object.defineProperty(r,e,{get(){return s||t},set(n){n!=null&&n.mute?s=n.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),s=n)}})},j=()=>window.innerHeight*.01+"px",Q=r=>{r&&setTimeout(()=>r.style.setProperty(N,j()),0)},Z="rml-styles",Nt=450,N="--rml-full-height",m={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},x=new Map;class xt extends q{constructor(t,s,n,i,o){super();c(this,"_waitForIframe");c(this,"_container");c(this,"_configuratorSettings");c(this,"_initData",{});c(this,"_iframe");if(!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(x.has(s))throw new Error("There is already an instance on this DOM element");if(!!!document.getElementById(Z)){const h=n.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=Z;const g="transition:all ease-in-out "+Nt+"ms;",f=["-webkit-","-o-"].reduce((D,y)=>D+=y+g,"")+g,S=j();u.innerHTML=`
1
+ (function(_,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(_=typeof globalThis<"u"?globalThis:_||self,_["roomle-embedding-lib"]=_["roomle-embedding-lib"]||{},_["roomle-embedding-lib"].umd=_["roomle-embedding-lib"].umd||{},_["roomle-embedding-lib"].umd.js=p())})(this,function(){"use strict";var te=Object.defineProperty;var ee=(_,p,E)=>p in _?te(_,p,{enumerable:!0,configurable:!0,writable:!0,value:E}):_[p]=E;var c=(_,p,E)=>ee(_,typeof p!="symbol"?p+"":p,E);class _{constructor(e,t,s,n){c(this,"_side");c(this,"_incomingMessageBus",null);c(this,"_outgoingMessageBus",null);c(this,"_execMessage",null);this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=a=>{if(!a||!a.data)return i.port1.close(),i.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(a.data)}catch(d){return i.port1.close(),i.port2.close(),this._prepareError(d),n(d)}l.error?n(l.error):l.result!==void 0?s(l.result):s(void 0),i.port1.close(),i.port2.close()};let o="";try{o=JSON.stringify({message:e,args:t})}catch{return n(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return n(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(o,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const s=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const n=this._execMessage(s,e);if(n===void 0)return;n.then((i={})=>{let o,a;typeof i=="object"&&i!==null&&(o=i.error,a=i.result),o?t.postMessage(JSON.stringify({error:o})):a!==void 0?t.postMessage(JSON.stringify({result:a})):t.postMessage(JSON.stringify({result:i}))},i=>{t.postMessage(JSON.stringify({error:this._prepareError(i)}))})}catch(s){t.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",E={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},w={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},pt=async(r,e)=>{if(typeof r!="string")throw new Error('Configurator ID is not a string type: "'+typeof r+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",s=e.overrideTenant||9,n=t+"/configurators/"+r,i="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+i),a=()=>{const u={apiKey:i,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},l=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),d=await fetch(l),{configurator:h}=await d.json();return h},yt=()=>{try{return window.self!==window.top}catch{return!0}},Et=["127.0.0.1","localhost","0.0.0.0"],Dt=()=>{const r=yt();let e=window.location.href;if(r){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},Tt=r=>!!(Et.includes(r)||r.endsWith("roomle.com")||r.endsWith("gitlab.io")||r.endsWith("gitlab.com")),k=["language","browserLanguage","userLanguage","systemLanguage"],St=(r=null)=>{const e=window.navigator;if(r)return r.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,s=k.length;t<s;t++){const n=e[k[t]];if(n)return n.substr(0,2)}return"en"},It=(r,e)=>{const t=JSON.parse(JSON.stringify(r));return C(t,e)},C=(r,e)=>{for(const t in e)try{e[t].constructor===Object?r[t]=C(r[t],e[t]):r[t]=e[t]}catch{r[t]=e[t]}return r};var z=(r=>(r.BOTTOM_BAR="bottom_bar",r.PARTLIST_BOUNDS="partlist_bounds",r.INTERACTION_NOTES="interaction_notes",r))(z||{}),wt={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const At={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[z.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},bt="(idle)",Ot=r=>(L(r),r!=null&&r.customApiUrl&&(r.customApiUrl=decodeURIComponent(r.customApiUrl)),r.shareUrl&&(r.deeplink=r.shareUrl.replace(Mt,Ct)),r),L=r=>{if(!r)return;const e=Object.keys(r);for(const t of e){const s=r[t];if(!Array.isArray(s)&&typeof s=="object"&&s!==null&&L(s),Array.isArray(s))for(const n of s)L(n);(s==="true"||s==="false")&&(r[t]=s==="true")}},vt=(r,e)=>{e.configuratorId=r.id;const t=r.settings||{};return!e.overrideTenant&&r.tenant&&(e.overrideTenant=r.tenant),It(t,e)},Rt=()=>{const r={...At};r.locale||(r.locale=St()),r.id===bt&&delete r.id;const e=Dt();return e&&Tt(e)&&(r.configuratorId="demoConfigurator"),r.customApiUrl=wt.VITE_RAPI_URL,r.emails=!1,r},Mt="<CONF_ID>",Ct="#CONFIGURATIONID#",Lt=r=>{r.featureFlags||(r.featureFlags={}),typeof r.featureFlags.realPartList!="boolean"&&(r.featureFlags.realPartList=!0),typeof r.featureFlags.globalCallbacks!="boolean"&&(r.featureFlags.globalCallbacks=!0),typeof r.featureFlags.mocAr!="boolean"&&(r.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){c(this,"_messageHandler",null);c(this,"isSetupDone",!1);c(this,"viewName","main");c(this,"plugins",{});c(this,"pluginsLoaded",[]);c(this,"ui",{callbacks:null});c(this,"extended",{callbacks:null});c(this,"configurator",{callbacks:null});c(this,"analytics",{callbacks:{}});c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:s}=e;t.forEach(n=>{const i=n.split(p),o=i[0],a=i[1];this[o]||(this[o]={}),this[o][a]=(function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(n,[...arguments])}).bind(this)}),s.forEach(n=>{const i=n.split(p),o=i[0],a=i[1],l=i[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const s=e.split(p),n=s[0],i=s[1],o=s.length===3?s[2]:null;if(o&&this[n][i][o]){const a=this[n][i][o](...t);return a instanceof Promise?a.then(l=>({result:l})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,s="website"){for(const n of e)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((i,o)=>{try{Promise.resolve().then(()=>Pt).then(({DragIn:a})=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,i()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((i,o)=>{try{n.loader().then(a=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins[n.name]=l,i()},o)})}catch(a){o(a)}}))}}const K=()=>{let r,e;return{promise:new Promise((s,n)=>{r=s,e=n}),resolve:r,reject:e}},J=(r,e,t)=>{let s=null;Object.defineProperty(r,e,{get(){return s||t},set(n){n!=null&&n.mute?s=n.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),s=n)}})},j=()=>window.innerHeight*.01+"px",Q=r=>{r&&setTimeout(()=>r.style.setProperty(N,j()),0)},Z="rml-styles",Nt=450,N="--rml-full-height",m={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},x=new Map;class xt extends q{constructor(t,s,n,i,o){super();c(this,"_waitForIframe");c(this,"_container");c(this,"_configuratorSettings");c(this,"_initData",{});c(this,"_iframe");if(!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(x.has(s))throw new Error("There is already an instance on this DOM element");if(!!!document.getElementById(Z)){const h=n.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=Z;const g="transition:all ease-in-out "+Nt+"ms;",f=["-webkit-","-o-"].reduce((D,y)=>D+=y+g,"")+g,S=j();u.innerHTML=`
2
2
  .${m.CONTAINER}{${N}:${S};}
3
3
  .${m.POSITION}{position:fixed;top:0;left:0;z-index:${h};opacity:0}
4
4
  .${m.TRANSITION}{${f}}
5
5
  .${m.FILL}{width:100%;height:100%;opacity:1}
6
6
  .${m.ANDROID_HEIGHT}{height:calc(var(${N},1vh)*100)}
7
7
  .${m.OVERFLOW_HIDDEN}{overflow:hidden}
8
- `,document.head.appendChild(u)}this._executeMessage=this._executeMessage.bind(this);const l=new _("website",window,null,this._executeMessage);this.setMessageHandler(l),this._onResize=this._onResize.bind(this),V()&&window.addEventListener("resize",this._onResize),this._container=s,this._initData=n,this._configuratorSettings=t;const d=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=o,this._container.appendChild(d),this._iframe=d,this.setupPlugins(i,this._iframe),x.set(s,!0)}static createPlanner(t,s,n,i=[]){return this._create(t,s,n,i)}static async connect(t,s=[]){const n=new q;n.viewName=t;const{resolve:i,promise:o}=K(),{resolve:a,promise:l}=K(),d=({message:g,args:f})=>{switch(g){case w.REGISTER_CUSTOM_VIEW_DONE:i();break;case w.RETURN_METHODS:n.handleSetup(f[0]),a();break;default:if(n.isSetupDone)return n.executeMessage({message:g,args:f})}},h=new _("custom-view-"+t,window,window.parent,d);n.setMessageHandler(h);const u=[t];return h.sendMessage(w.REGISTER_CUSTOM_VIEW,u),await o,h.sendMessage(w.GET_METHODS,u),await l,n.setupPlugins(s,document.body,"custom-view"),await Promise.allSettled(n.pluginsLoaded),n}static createConfigurator(t,s,n,i=[]){return this._create(t,s,n,i)}static create(t,s,n,i){return this._create(t,s,n,i)}static createViewer(t,s,n,i=[]){return this._create(t,s,n,i)}static async _create(t,s,n,i){return new Promise(async(o,a)=>{try{const l=L(Rt(),Ot(n));Ct(l);const d=await pt(t,l);n=vt(d,l);const h=new this(d,s,n,i,o);return await Promise.allSettled(h.pluginsLoaded),h}catch(l){return a(l)}})}teardown(){this._container&&x.delete(this._container);const t=this._container.querySelector("iframe");t&&this._container.removeChild(t),window.removeEventListener("resize",this._onResize)}_createIframe(){var n;const t=document.createElement("iframe");let s=((n=this._configuratorSettings)==null?void 0:n.url)||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(s=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(s=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(s=this._initData.overrideServerUrl),t.src=s,t.classList.add(m.CONTAINER),t.classList.add(m.FILL),t}_onResize(){Q(this._iframe)}_onUseFullPage(){this._iframe.classList.add(m.POSITION),document.documentElement.classList.add(m.OVERFLOW_HIDDEN),window.document.body.classList.add(m.OVERFLOW_HIDDEN),V()&&(Q(this._iframe),this._iframe.classList.add(m.ANDROID_HEIGHT))}_onBackToWebsite(){this._iframe.classList.remove(m.POSITION),this._iframe.classList.remove(m.ANDROID_HEIGHT),document.documentElement.classList.remove(m.OVERFLOW_HIDDEN),window.document.body.classList.remove(m.OVERFLOW_HIDDEN)}_executeMessage({message:t,args:s},n){var i;if(n.source&&n.source===((i=this._iframe)==null?void 0:i.contentWindow))return t===E.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(n.source),Promise.resolve({result:this._initData})):(console.error("MessageHandler not set"),Promise.resolve({error:"MessageHandler not set"})):t===E.SETUP?(this.handleSetup(s[0]),J(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),J(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{if(!this._messageHandler){console.error("MessageHandler not set");return}this._messageHandler.sendMessage(E.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:t,args:s})}}class Gt{constructor(e,t,s,n){c(this,"_mainDomElement");c(this,"_instance");c(this,"_mode","website");c(this,"_viewName","main");this._instance=e,this._mainDomElement=t,this._mode=s,this._viewName=n}async init(){return Promise.resolve()}}const A="rml-drag-in-styles",b="rml-drag-in-drag-element",O="rml-drag-in-overlay",v="rml-drag-in-drag-ghost",tt="rml-drag-in-fade-in",et="rml-drag-in-fade-out",G={DISPLAY_NONE:"rml-display-none"},st=.5,rt="250ms",nt="forwards",it=`@keyframes ${tt} {from{opacity: 0;}to {opacity: ${st};}}`,ot=`@keyframes ${et} {from{opacity: ${st};}to {opacity: 0;}}`,at=`${tt} ${rt} ${nt}`,ct=`${et} ${rt} ${nt}`,R="https://res.cloudinary.com/roomle/image/upload/v1729679975/fallback_afpyqr.jpg",F=112,P=112;class Ft extends Gt{constructor(t,s,n,i){super(t,s,n,i);c(this,"options",{});c(this,"_customDragSignal",new AbortController);this._mainDomElement=s,this._injectStyles(),this._initializeDragGhost()}_injectStyles(){if(!!!document.getElementById(A)){const s=document.createElement("style");s.type="text/css",s.id=A,s.innerHTML=`
8
+ `,document.head.appendChild(u)}this._executeMessage=this._executeMessage.bind(this);const l=new _("website",window,null,this._executeMessage);this.setMessageHandler(l),this._onResize=this._onResize.bind(this),V()&&window.addEventListener("resize",this._onResize),this._container=s,this._initData=n,this._configuratorSettings=t;const d=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=o,this._container.appendChild(d),this._iframe=d,this.setupPlugins(i,this._iframe),x.set(s,!0)}static createPlanner(t,s,n,i=[]){return this._create(t,s,n,i)}static async connect(t,s=[]){const n=new q;n.viewName=t;const{resolve:i,promise:o}=K(),{resolve:a,promise:l}=K(),d=({message:g,args:f})=>{switch(g){case w.REGISTER_CUSTOM_VIEW_DONE:i();break;case w.RETURN_METHODS:n.handleSetup(f[0]),a();break;default:if(n.isSetupDone)return n.executeMessage({message:g,args:f})}},h=new _("custom-view-"+t,window,window.parent,d);n.setMessageHandler(h);const u=[t];return h.sendMessage(w.REGISTER_CUSTOM_VIEW,u),await o,h.sendMessage(w.GET_METHODS,u),await l,n.setupPlugins(s,document.body,"custom-view"),await Promise.allSettled(n.pluginsLoaded),n}static createConfigurator(t,s,n,i=[]){return this._create(t,s,n,i)}static create(t,s,n,i){return this._create(t,s,n,i)}static createViewer(t,s,n,i=[]){return this._create(t,s,n,i)}static async _create(t,s,n,i){return new Promise(async(o,a)=>{try{const l=C(Rt(),Ot(n));Lt(l);const d=await pt(t,l);n=vt(d,l);const h=new this(d,s,n,i,o);return await Promise.allSettled(h.pluginsLoaded),h}catch(l){return a(l)}})}teardown(){this._container&&x.delete(this._container);const t=this._container.querySelector("iframe");t&&this._container.removeChild(t),window.removeEventListener("resize",this._onResize)}_createIframe(){var n;const t=document.createElement("iframe");let s=((n=this._configuratorSettings)==null?void 0:n.url)||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(s=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(s=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(s=this._initData.overrideServerUrl),t.src=s,t.classList.add(m.CONTAINER),t.classList.add(m.FILL),t}_onResize(){Q(this._iframe)}_onUseFullPage(){this._iframe.classList.add(m.POSITION),document.documentElement.classList.add(m.OVERFLOW_HIDDEN),window.document.body.classList.add(m.OVERFLOW_HIDDEN),V()&&(Q(this._iframe),this._iframe.classList.add(m.ANDROID_HEIGHT))}_onBackToWebsite(){this._iframe.classList.remove(m.POSITION),this._iframe.classList.remove(m.ANDROID_HEIGHT),document.documentElement.classList.remove(m.OVERFLOW_HIDDEN),window.document.body.classList.remove(m.OVERFLOW_HIDDEN)}_executeMessage({message:t,args:s},n){var i;if(n.source&&n.source===((i=this._iframe)==null?void 0:i.contentWindow))return t===E.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(n.source),Promise.resolve({result:this._initData})):(console.error("MessageHandler not set"),Promise.resolve({error:"MessageHandler not set"})):t===E.SETUP?(this.handleSetup(s[0]),J(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),J(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{if(!this._messageHandler){console.error("MessageHandler not set");return}this._messageHandler.sendMessage(E.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:t,args:s})}}class Gt{constructor(e,t,s,n){c(this,"_mainDomElement");c(this,"_instance");c(this,"_mode","website");c(this,"_viewName","main");this._instance=e,this._mainDomElement=t,this._mode=s,this._viewName=n}async init(){return Promise.resolve()}}const A="rml-drag-in-styles",b="rml-drag-in-drag-element",O="rml-drag-in-overlay",v="rml-drag-in-drag-ghost",tt="rml-drag-in-fade-in",et="rml-drag-in-fade-out",G={DISPLAY_NONE:"rml-display-none"},st=.5,rt="250ms",nt="forwards",it=`@keyframes ${tt} {from{opacity: 0;}to {opacity: ${st};}}`,ot=`@keyframes ${et} {from{opacity: ${st};}to {opacity: 0;}}`,at=`${tt} ${rt} ${nt}`,ct=`${et} ${rt} ${nt}`,R="https://res.cloudinary.com/roomle/image/upload/v1729679975/fallback_afpyqr.jpg",F=112,P=112;class Ft extends Gt{constructor(t,s,n,i){super(t,s,n,i);c(this,"options",{});c(this,"_customDragSignal",new AbortController);this._mainDomElement=s,this._injectStyles(),this._initializeDragGhost()}_injectStyles(){if(!!!document.getElementById(A)){const s=document.createElement("style");s.type="text/css",s.id=A,s.innerHTML=`
9
9
  .${G.DISPLAY_NONE}{display:none}
10
10
  .${O}{position:absolute;top:0;left:0;width:100%;height:100%;z-index:999;}
11
11
  .${v}{position:absolute;top:0;left:0;width:1px;height:1px;z-index:999;pointer-events:none;background-color:transparent;}
@@ -1,4 +1,4 @@
1
- (function(p,D){typeof exports=="object"&&typeof module<"u"?module.exports=D():typeof define=="function"&&define.amd?define(D):(p=typeof globalThis<"u"?globalThis:p||self,p["roomle-embedding-lib"]=p["roomle-embedding-lib"]||{},p["roomle-embedding-lib"].umd=p["roomle-embedding-lib"].umd||{},p["roomle-embedding-lib"].umd.min=p["roomle-embedding-lib"].umd.min||{},p["roomle-embedding-lib"].umd.min.js=D())})(this,function(){"use strict";var p=Object.defineProperty,D=(i,t,e)=>t in i?p(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,h=(i,t,e)=>D(i,typeof t!="symbol"?t+"":t,e);class ${constructor(t,e,s,n){h(this,"_side"),h(this,"_incomingMessageBus",null),h(this,"_outgoingMessageBus",null),h(this,"_execMessage",null),this._side=t,this._incomingMessageBus=e,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(t){this._outgoingMessageBus=t}setMessageExecution(t){this._execMessage=t}sendMessage(t,e=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const r=new MessageChannel;r.port1.onmessage=a=>{if(!a||!a.data)return r.port1.close(),r.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let c;try{c=JSON.parse(a.data)}catch(l){return r.port1.close(),r.port2.close(),this._prepareError(l),n(l)}c.error?n(c.error):c.result!==void 0?s(c.result):s(void 0),r.port1.close(),r.port2.close()};let o="";try{o=JSON.stringify({message:t,args:e})}catch{return n(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return n(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(o,"*",[r.port2])})}_handleMessage(t){const e=t.ports&&Array.isArray(t.ports)&&t.ports.length>0?t.ports[0]:null;if(t.data&&e)try{const s=JSON.parse(t.data);if(!this._execMessage)return e.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const n=this._execMessage(s,t);if(n===void 0)return;n.then((r={})=>{let o,a;typeof r=="object"&&r!==null&&(o=r.error,a=r.result),o?e.postMessage(JSON.stringify({error:o})):a!==void 0?e.postMessage(JSON.stringify({result:a})):e.postMessage(JSON.stringify({result:r}))},r=>{e.postMessage(JSON.stringify({error:this._prepareError(r)}))})}catch(s){e.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(t){if(typeof t=="string"){const e=this._side+": "+t;return console.error(e),e}return t.message=this._side+": "+t.message,console.error(t),t.message}}const C=".",N={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},E={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},yt=async(i,t)=>{if(typeof i!="string")throw new Error('Configurator ID is not a string type: "'+typeof i+'"');const e=t.customApiUrl?t.customApiUrl:"https://api.roomle.com/v2",s=t.overrideTenant||9,n=e+"/configurators/"+i,r="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+r),a=()=>{const u={apiKey:r,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},c=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),l=await fetch(c),{configurator:d}=await l.json();return d},vt=()=>{try{return window.self!==window.top}catch{return!0}},Dt=["127.0.0.1","localhost","0.0.0.0"],bt=()=>{const i=vt();let t=window.location.href;if(i){if(!document.referrer)return null;t=document.referrer}const{hostname:e}=new URL(t);return e},wt=i=>!!(Dt.includes(i)||i.endsWith("roomle.com")||i.endsWith("gitlab.io")||i.endsWith("gitlab.com")),j=["language","browserLanguage","userLanguage","systemLanguage"],Et=(i=null)=>{const t=window.navigator;if(i)return i.substr(0,2);if(Array.isArray(t.languages)&&t.languages.length>0)return t.languages[0].substr(0,2);for(let e=0,s=j.length;e<s;e++){const n=t[j[e]];if(n)return n.substr(0,2)}return"en"},Tt=(i,t)=>{const e=JSON.parse(JSON.stringify(i));return A(e,t)},A=(i,t)=>{for(const e in t)try{t[e].constructor===Object?i[e]=A(i[e],t[e]):i[e]=t[e]}catch{i[e]=t[e]}return i};var z=(i=>(i.BOTTOM_BAR="bottom_bar",i.PARTLIST_BOUNDS="partlist_bounds",i.INTERACTION_NOTES="interaction_notes",i))(z||{}),It={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const St={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[z.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10},Ot="(idle)",xt=i=>(L(i),i!=null&&i.customApiUrl&&(i.customApiUrl=decodeURIComponent(i.customApiUrl)),i.shareUrl&&(i.deeplink=i.shareUrl.replace(Nt,At)),i),L=i=>{if(!i)return;const t=Object.keys(i);for(const e of t){const s=i[e];if(!Array.isArray(s)&&typeof s=="object"&&s!==null&&L(s),Array.isArray(s))for(const n of s)L(n);(s==="true"||s==="false")&&(i[e]=s==="true")}},Mt=(i,t)=>{t.configuratorId=i.id;const e=i.settings||{};return!t.overrideTenant&&i.tenant&&(t.overrideTenant=i.tenant),Tt(e,t)},Ct=()=>{const i={...St};i.locale||(i.locale=Et()),i.id===Ot&&delete i.id;const t=bt();return t&&wt(t)&&(i.configuratorId="demoConfigurator"),i.customApiUrl=It.VITE_RAPI_URL,i.emails=!1,i},Nt="<CONF_ID>",At="#CONFIGURATIONID#",Lt=i=>{i.featureFlags||(i.featureFlags={}),typeof i.featureFlags.realPartList!="boolean"&&(i.featureFlags.realPartList=!0),typeof i.featureFlags.globalCallbacks!="boolean"&&(i.featureFlags.globalCallbacks=!0),typeof i.featureFlags.mocAr!="boolean"&&(i.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){h(this,"_messageHandler",null),h(this,"isSetupDone",!1),h(this,"viewName","main"),h(this,"plugins",{}),h(this,"pluginsLoaded",[]),h(this,"ui",{callbacks:null}),h(this,"extended",{callbacks:null}),h(this,"configurator",{callbacks:null}),h(this,"analytics",{callbacks:{}}),h(this,"global",{callbacks:{}})}setMessageHandler(t){this._messageHandler=t}handleSetup(t){const{methods:e,callbacks:s}=t;e.forEach(n=>{const r=n.split(C),o=r[0],a=r[1];this[o]||(this[o]={}),this[o][a]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(n,[...arguments])}.bind(this)}),s.forEach(n=>{const r=n.split(C),o=r[0],a=r[1],c=r[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][c]=()=>{}}),this.isSetupDone=!0}executeMessage({message:t,args:e}){const s=t.split(C),n=s[0],r=s[1],o=s.length===3?s[2]:null;if(o&&this[n][r][o]){const a=this[n][r][o](...e);return a instanceof Promise?a.then(c=>({result:c})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+t+'" is unkown')}setupPlugins(t,e,s="website"){for(const n of t)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((r,o)=>{try{Promise.resolve().then(()=>Ut).then(({DragIn:a})=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins.dragIn=c,r()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((r,o)=>{try{n.loader().then(a=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins[n.name]=c,r()},o)})}catch(a){o(a)}}))}}const J=()=>{let i,t;return{promise:new Promise((e,s)=>{i=e,t=s}),resolve:i,reject:t}},K=(i,t,e)=>{let s=null;Object.defineProperty(i,t,{get(){return s||e},set(n){n!=null&&n.mute?s=n.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),s=n)}})},Q=()=>window.innerHeight*.01+"px",Z=i=>{i&&setTimeout(()=>i.style.setProperty(R,Q()),0)},tt="rml-styles",Rt=450,R="--rml-full-height",m={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},P=new Map;class Pt extends q{constructor(t,e,s,n,r){if(super(),h(this,"_waitForIframe"),h(this,"_container"),h(this,"_configuratorSettings"),h(this,"_initData",{}),h(this,"_iframe"),!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(P.has(e))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(tt)){const c=s.zIndex||9999999,l=document.createElement("style");l.type="text/css",l.id=tt;const d="transition:all ease-in-out "+Rt+"ms;",u=["-webkit-","-o-"].reduce((_,y)=>_+=y+d,"")+d,g=Q();l.innerHTML=`
1
+ (function(p,D){typeof exports=="object"&&typeof module<"u"?module.exports=D():typeof define=="function"&&define.amd?define(D):(p=typeof globalThis<"u"?globalThis:p||self,p["roomle-embedding-lib"]=p["roomle-embedding-lib"]||{},p["roomle-embedding-lib"].umd=p["roomle-embedding-lib"].umd||{},p["roomle-embedding-lib"].umd.min=p["roomle-embedding-lib"].umd.min||{},p["roomle-embedding-lib"].umd.min.js=D())})(this,function(){"use strict";var p=Object.defineProperty,D=(i,t,e)=>t in i?p(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,h=(i,t,e)=>D(i,typeof t!="symbol"?t+"":t,e);class ${constructor(t,e,s,n){h(this,"_side"),h(this,"_incomingMessageBus",null),h(this,"_outgoingMessageBus",null),h(this,"_execMessage",null),this._side=t,this._incomingMessageBus=e,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(t){this._outgoingMessageBus=t}setMessageExecution(t){this._execMessage=t}sendMessage(t,e=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const r=new MessageChannel;r.port1.onmessage=a=>{if(!a||!a.data)return r.port1.close(),r.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let c;try{c=JSON.parse(a.data)}catch(l){return r.port1.close(),r.port2.close(),this._prepareError(l),n(l)}c.error?n(c.error):c.result!==void 0?s(c.result):s(void 0),r.port1.close(),r.port2.close()};let o="";try{o=JSON.stringify({message:t,args:e})}catch{return n(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return n(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(o,"*",[r.port2])})}_handleMessage(t){const e=t.ports&&Array.isArray(t.ports)&&t.ports.length>0?t.ports[0]:null;if(t.data&&e)try{const s=JSON.parse(t.data);if(!this._execMessage)return e.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const n=this._execMessage(s,t);if(n===void 0)return;n.then((r={})=>{let o,a;typeof r=="object"&&r!==null&&(o=r.error,a=r.result),o?e.postMessage(JSON.stringify({error:o})):a!==void 0?e.postMessage(JSON.stringify({result:a})):e.postMessage(JSON.stringify({result:r}))},r=>{e.postMessage(JSON.stringify({error:this._prepareError(r)}))})}catch(s){e.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(t){if(typeof t=="string"){const e=this._side+": "+t;return console.error(e),e}return t.message=this._side+": "+t.message,console.error(t),t.message}}const C=".",N={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},E={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},yt=async(i,t)=>{if(typeof i!="string")throw new Error('Configurator ID is not a string type: "'+typeof i+'"');const e=t.customApiUrl?t.customApiUrl:"https://api.roomle.com/v2",s=t.overrideTenant||9,n=e+"/configurators/"+i,r="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+r),a=()=>{const u={apiKey:r,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},c=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),l=await fetch(c),{configurator:d}=await l.json();return d},vt=()=>{try{return window.self!==window.top}catch{return!0}},Dt=["127.0.0.1","localhost","0.0.0.0"],bt=()=>{const i=vt();let t=window.location.href;if(i){if(!document.referrer)return null;t=document.referrer}const{hostname:e}=new URL(t);return e},wt=i=>!!(Dt.includes(i)||i.endsWith("roomle.com")||i.endsWith("gitlab.io")||i.endsWith("gitlab.com")),j=["language","browserLanguage","userLanguage","systemLanguage"],Et=(i=null)=>{const t=window.navigator;if(i)return i.substr(0,2);if(Array.isArray(t.languages)&&t.languages.length>0)return t.languages[0].substr(0,2);for(let e=0,s=j.length;e<s;e++){const n=t[j[e]];if(n)return n.substr(0,2)}return"en"},Tt=(i,t)=>{const e=JSON.parse(JSON.stringify(i));return A(e,t)},A=(i,t)=>{for(const e in t)try{t[e].constructor===Object?i[e]=A(i[e],t[e]):i[e]=t[e]}catch{i[e]=t[e]}return i};var z=(i=>(i.BOTTOM_BAR="bottom_bar",i.PARTLIST_BOUNDS="partlist_bounds",i.INTERACTION_NOTES="interaction_notes",i))(z||{}),It={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const St={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[z.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},Ot="(idle)",xt=i=>(L(i),i!=null&&i.customApiUrl&&(i.customApiUrl=decodeURIComponent(i.customApiUrl)),i.shareUrl&&(i.deeplink=i.shareUrl.replace(Nt,At)),i),L=i=>{if(!i)return;const t=Object.keys(i);for(const e of t){const s=i[e];if(!Array.isArray(s)&&typeof s=="object"&&s!==null&&L(s),Array.isArray(s))for(const n of s)L(n);(s==="true"||s==="false")&&(i[e]=s==="true")}},Mt=(i,t)=>{t.configuratorId=i.id;const e=i.settings||{};return!t.overrideTenant&&i.tenant&&(t.overrideTenant=i.tenant),Tt(e,t)},Ct=()=>{const i={...St};i.locale||(i.locale=Et()),i.id===Ot&&delete i.id;const t=bt();return t&&wt(t)&&(i.configuratorId="demoConfigurator"),i.customApiUrl=It.VITE_RAPI_URL,i.emails=!1,i},Nt="<CONF_ID>",At="#CONFIGURATIONID#",Lt=i=>{i.featureFlags||(i.featureFlags={}),typeof i.featureFlags.realPartList!="boolean"&&(i.featureFlags.realPartList=!0),typeof i.featureFlags.globalCallbacks!="boolean"&&(i.featureFlags.globalCallbacks=!0),typeof i.featureFlags.mocAr!="boolean"&&(i.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){h(this,"_messageHandler",null),h(this,"isSetupDone",!1),h(this,"viewName","main"),h(this,"plugins",{}),h(this,"pluginsLoaded",[]),h(this,"ui",{callbacks:null}),h(this,"extended",{callbacks:null}),h(this,"configurator",{callbacks:null}),h(this,"analytics",{callbacks:{}}),h(this,"global",{callbacks:{}})}setMessageHandler(t){this._messageHandler=t}handleSetup(t){const{methods:e,callbacks:s}=t;e.forEach(n=>{const r=n.split(C),o=r[0],a=r[1];this[o]||(this[o]={}),this[o][a]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(n,[...arguments])}.bind(this)}),s.forEach(n=>{const r=n.split(C),o=r[0],a=r[1],c=r[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][c]=()=>{}}),this.isSetupDone=!0}executeMessage({message:t,args:e}){const s=t.split(C),n=s[0],r=s[1],o=s.length===3?s[2]:null;if(o&&this[n][r][o]){const a=this[n][r][o](...e);return a instanceof Promise?a.then(c=>({result:c})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+t+'" is unkown')}setupPlugins(t,e,s="website"){for(const n of t)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((r,o)=>{try{Promise.resolve().then(()=>Ut).then(({DragIn:a})=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins.dragIn=c,r()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((r,o)=>{try{n.loader().then(a=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins[n.name]=c,r()},o)})}catch(a){o(a)}}))}}const J=()=>{let i,t;return{promise:new Promise((e,s)=>{i=e,t=s}),resolve:i,reject:t}},K=(i,t,e)=>{let s=null;Object.defineProperty(i,t,{get(){return s||e},set(n){n!=null&&n.mute?s=n.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),s=n)}})},Q=()=>window.innerHeight*.01+"px",Z=i=>{i&&setTimeout(()=>i.style.setProperty(R,Q()),0)},tt="rml-styles",Rt=450,R="--rml-full-height",m={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},P=new Map;class Pt extends q{constructor(t,e,s,n,r){if(super(),h(this,"_waitForIframe"),h(this,"_container"),h(this,"_configuratorSettings"),h(this,"_initData",{}),h(this,"_iframe"),!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(P.has(e))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(tt)){const c=s.zIndex||9999999,l=document.createElement("style");l.type="text/css",l.id=tt;const d="transition:all ease-in-out "+Rt+"ms;",u=["-webkit-","-o-"].reduce((_,y)=>_+=y+d,"")+d,g=Q();l.innerHTML=`
2
2
  .${m.CONTAINER}{${R}:${g};}
3
3
  .${m.POSITION}{position:fixed;top:0;left:0;z-index:${c};opacity:0}
4
4
  .${m.TRANSITION}{${u}}
@@ -1,7 +1,10 @@
1
+ import { SharedUiState } from '../store';
2
+
1
3
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
2
4
  rise: BooleanConstructor;
3
5
  }>, {}, {}, {
4
- isFullscreen(): boolean;
6
+ sharedUiState(): SharedUiState;
7
+ isExpanded(): boolean;
5
8
  }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
6
9
  rise: BooleanConstructor;
7
10
  }>> & Readonly<{}>, {
@@ -1,3 +1,8 @@
1
+ import { SceneSelection } from '../../configurator/store/ui-state';
2
+ import { Nullable } from '../utils/types';
3
+
4
+ export declare const isExternalModuleSelection: (currentSelection: Nullable<SceneSelection>) => boolean;
5
+ export declare const isDeletePossible: (currentSelection: Nullable<SceneSelection>) => boolean;
1
6
  export declare const useConfiguratorActionsVisibility: () => {
2
7
  showStartConfiguring: import('vue').ComputedRef<boolean>;
3
8
  showDelete: import('vue').ComputedRef<any>;
@@ -34,6 +34,7 @@ export declare const useSharedSidebarSetup: (topBar: Ref<HTMLElement> | null) =>
34
34
  tooltip: string;
35
35
  }[];
36
36
  checkboxToggle: Ref<HTMLInputElement, HTMLInputElement>;
37
+ isLandscape: import('vue').ComputedRef<any>;
37
38
  currentViewMode: import('vue').ComputedRef<any>;
38
39
  isPartlistShown: import('vue').ComputedRef<any>;
39
40
  areDimensionsVisible: import('vue').ComputedRef<any>;
@@ -2,8 +2,7 @@ import { TranslationSource } from '../composables/use-intl';
2
2
 
3
3
  export default class LocalTranslationSource implements TranslationSource {
4
4
  private _locale;
5
- private _overrideTranslation;
5
+ private _overrideTranslation?;
6
6
  constructor(locale: string, overrideTranslation?: any);
7
7
  getTranslations(): Promise<any>;
8
- private _getFallbackTranslations;
9
8
  }
@@ -122,6 +122,7 @@ export declare class SdkConnector {
122
122
  initConfigurator(): Promise<void>;
123
123
  getTenant(): Promise<import('@roomle/web-sdk/lib/definitions/typings/rapi-types').RapiTenant>;
124
124
  saveCurrentConfiguration(): Promise<RapiConfigurationEnhanced>;
125
+ saveCurrentPlanOrConfiguration(): Promise<RapiConfigurationEnhanced | RapiPlanSnapshotGetData>;
125
126
  giveGaConsent(): void;
126
127
  get hasPlanner(): boolean;
127
128
  saveCurrentObject(): Promise<RapiPlan | RapiPlanSnapshotGetData | RapiConfigurationEnhanced>;
@@ -14,7 +14,7 @@ import { SelectionPayload } from '@roomle/web-sdk/lib/definitions/planner-core/s
14
14
 
15
15
  export declare const startConfiguring: (store: Store<StoreState>, exposedCallbacks: ExposedCallbacks) => void;
16
16
  export declare const resetCollectionViewStates: (store: Store<StoreState>) => void;
17
- export declare const stopConfiguring: (store: Store<StoreState>, sdkConnector: SdkConnector, embeddingCallbacks: ExposedCallbacks) => Promise<void>;
17
+ export declare const stopConfiguring: (store: Store<StoreState>, sdkConnector: SdkConnector, embeddingCallbacks?: ExposedCallbacks) => Promise<void>;
18
18
  export declare const triggerRequestProduct: (embeddingCallbacks: ExposedCallbacks, sdkConnector: SdkConnector, store: Store<StoreState>, analytics: Analytics) => Promise<void>;
19
19
  export declare const sendSaveDraft: (sdkConnector: SdkConnector, store: Store<StoreState>, currentConfiguration: RapiConfigurationEnhanced | Nullable<RapiPlanSnapshotGetData | RapiPlan>) => Promise<import('@roomle/web-sdk/lib/definitions/typings/rapi-types').RapiJson>;
20
20
  export declare function handleSave(embeddingCallbacks: ExposedCallbacks, sdkConnector: SdkConnector, store: Store<StoreState>, analytics: Analytics, email?: string): Promise<SaveDraft>;
@@ -65,6 +65,16 @@ interface UiFeatureFlags extends FeatureFlags {
65
65
  globalCallbacks?: boolean;
66
66
  mocAr?: boolean;
67
67
  wallAutoHeight?: boolean;
68
+ /**
69
+ * @hidden
70
+ * @description ...
71
+ */
72
+ imosix?: boolean;
73
+ /**
74
+ * @hidden
75
+ * @description ...
76
+ */
77
+ prodmanager?: boolean;
68
78
  }
69
79
  export interface VariantsMap {
70
80
  [key: string]: RapiId;
@@ -409,8 +419,10 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
409
419
  /**
410
420
  * @description when the configurator/Room Designer is embedded into a too small space we start it in view
411
421
  * only mode, then the user has to click the "start" button and the configurator/Room Designer expands over
412
- * the whole window. This is great for UX but it's not always ideal in every use case. Therefore you can
413
- * turn on/off this behavior now with this toggle.
422
+ * the whole window. This is great for UX, but it's not always ideal in every use case. Therefore, you can
423
+ * force either behaviour by setting autoStart to true or false.
424
+ *
425
+ * default: true if screen with is bigger than 1024px otherwise false
414
426
  */
415
427
  autoStart?: boolean;
416
428
  /**
@@ -422,6 +434,12 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
422
434
  * @description For use with planner only, if set to true the room will be shown while configuring a configurable object.
423
435
  */
424
436
  configureInRoom?: boolean;
437
+ /**
438
+ * @internal
439
+ * @description Keeps the interaction container collapsed.
440
+ * This is only used if the room designer is embedded in the technical configurator. (BO PoC 2)
441
+ */
442
+ interactionsCollapsed?: boolean;
425
443
  /**
426
444
  * @description define when you want to show the search bar, currently we hide the search bar until there are more than 10 elements.
427
445
  * since it is a query param the value is a string. Please only provide a string that can be parseInt(x,10) otherwise it will be
@@ -6,12 +6,13 @@ import { RoomleSdkWrapper } from '../../configurator/business-logic/roomle-sdk-w
6
6
  import { UiInitData } from '../../configurator/embedding/types';
7
7
  import { default as RoomlePlanner } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner';
8
8
  import { PLAN_ELEMENT_CHANGE_TYPES, SelectionPayload } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner-ui-callback';
9
- import { RapiId, RapiPlan, RapiPlanSnapshotGetData } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
9
+ import { RapiConfigurationEnhanced, RapiId, RapiPlan, RapiPlanSnapshotGetData } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
10
10
  import { CancelSelectionReasons } from '@roomle/web-sdk/lib/definitions/typings/planner';
11
11
  import { Connector } from '../../common/business-logic/connector';
12
12
  import { default as PlanElementViewModel } from '@roomle/web-sdk/lib/definitions/common-core/src/view-model/plan-element-view-model';
13
13
  import { RuntimeId } from '@roomle/web-sdk/lib/definitions/typings/kernel';
14
14
  import { default as EventEmitter } from '../../common/business-logic/event-emitter';
15
+ import { SdkConnector } from '../../configurator/business-logic/sdk-connector';
15
16
 
16
17
  export declare const getConstructionWallAngle: (selectionElement: Nullable<PlanElementViewModel>) => Nullable<number>;
17
18
  export declare class SdkConnectorPlanner extends Connector {
@@ -22,10 +23,13 @@ export declare class SdkConnectorPlanner extends Connector {
22
23
  private _analytics;
23
24
  private _eventEmitter;
24
25
  private _lastPlanId;
26
+ private _lastPlanWithSingleObjectId;
25
27
  private _currentPlan;
28
+ private _currentPlanWithSingleObject;
26
29
  private _loadedLocalPlan;
27
30
  private _initData;
28
- constructor(store: Store<StoreState>, analytics?: Nullable<Analytics>, eventEmitter?: Nullable<EventEmitter>);
31
+ private _sdkConnector;
32
+ constructor(store: Store<StoreState>, analytics?: Nullable<Analytics>, eventEmitter?: Nullable<EventEmitter>, sdkConnector?: Nullable<SdkConnector>);
29
33
  get api(): Promise<RoomlePlanner>;
30
34
  init(sdkWrapper: RoomleSdkWrapper, element: HTMLElement, initData: UiInitData): Promise<void>;
31
35
  initPlanner(planner: RoomlePlanner): Promise<void>;
@@ -36,6 +40,7 @@ export declare class SdkConnectorPlanner extends Connector {
36
40
  onSelectionCancel(reason: CancelSelectionReasons): Promise<void>;
37
41
  private _checkForVisibleDrawer;
38
42
  saveCurrentPlan(): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
43
+ saveCurrentConfigurationInPlanSnapshot(configuration: RapiConfigurationEnhanced): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
39
44
  private _disableWallDrawingState;
40
45
  private _enableWallDrawingState;
41
46
  switch2D(): Promise<void>;
@@ -62,6 +67,7 @@ export declare class SdkConnectorPlanner extends Connector {
62
67
  private _setSidebarViewNameState;
63
68
  preparePartListData(selectedItemPayload: SelectionPayload): Promise<void>;
64
69
  private _getCurrentPlanXML;
70
+ private _getPlanXmlWithSingleObject;
65
71
  onPlanElementChanged(changeType: Enumify<typeof PLAN_ELEMENT_CHANGE_TYPES>): Promise<void>;
66
72
  private _emitConstructionAttachedWallAngle;
67
73
  }
@@ -9,7 +9,6 @@ export interface XYZCoords {
9
9
  z: number;
10
10
  }
11
11
  export interface ProductListItem extends UiPlanObject {
12
- configurationRuntimeId: number;
13
12
  quantity: number;
14
13
  runtimeIds?: number[];
15
14
  }