@roomle/embedding-lib 6.3.0 → 6.4.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,55 +1,139 @@
1
- ## 6.3.0 (2026-02-12)
1
+ ## 6.4.0-alpha.2 (2026-02-19)
2
2
 
3
- * Apply suggestion from @Copilot ([390b011](https://github.com/roomle-dev/roomle-ui/commit/390b011))
4
- * Apply suggestion from @Copilot ([61c128b](https://github.com/roomle-dev/roomle-ui/commit/61c128b))
5
- * Apply suggestion from @Copilot ([86fd8a9](https://github.com/roomle-dev/roomle-ui/commit/86fd8a9))
6
- * Merge branch 'master' into chore/hi-examples ([1f06634](https://github.com/roomle-dev/roomle-ui/commit/1f06634))
7
- * Merge branch 'master' into chore/migrate-standard-components-to-script-setup ([9c056ae](https://github.com/roomle-dev/roomle-ui/commit/9c056ae))
8
- * Merge branch 'master' into feat/hi-change-property ([4047ae0](https://github.com/roomle-dev/roomle-ui/commit/4047ae0))
9
- * Merge branch 'master' into feat/hi-change-property ([62b4d6f](https://github.com/roomle-dev/roomle-ui/commit/62b4d6f))
10
- * Merge branch 'master' into fix/migration-cleanup-findings ([01aafa6](https://github.com/roomle-dev/roomle-ui/commit/01aafa6))
11
- * Merge branch 'master' into fix/migration-cleanup-findings ([d088258](https://github.com/roomle-dev/roomle-ui/commit/d088258))
12
- * Merge branch 'master' into hf/object-selection ([c1d8a0f](https://github.com/roomle-dev/roomle-ui/commit/c1d8a0f))
13
- * Merge branch 'master' into hf/object-selection ([e043c39](https://github.com/roomle-dev/roomle-ui/commit/e043c39))
14
- * Merge branch 'master' into refactor/batch2-composition-api-migration ([e18967a](https://github.com/roomle-dev/roomle-ui/commit/e18967a))
15
- * Merge branch 'master' into upgraded-by-ci/core-2.70.0-alpha.5 ([16087ec](https://github.com/roomle-dev/roomle-ui/commit/16087ec))
16
- * Merge pull request #2238 from roomle-dev/chore/hi-examples ([1640ee1](https://github.com/roomle-dev/roomle-ui/commit/1640ee1)), closes [#2238](https://github.com/roomle-dev/roomle-ui/issues/2238)
17
- * Merge pull request #2239 from roomle-dev/feat/hi-change-property ([7e22780](https://github.com/roomle-dev/roomle-ui/commit/7e22780)), closes [#2239](https://github.com/roomle-dev/roomle-ui/issues/2239)
18
- * Merge pull request #2241 from roomle-dev/chore/add-options-api-migration-workflow ([19ed3be](https://github.com/roomle-dev/roomle-ui/commit/19ed3be)), closes [#2241](https://github.com/roomle-dev/roomle-ui/issues/2241)
19
- * Merge pull request #2242 from roomle-dev/upgraded-by-ci/core-2.70.0-alpha.5 ([7c99bb9](https://github.com/roomle-dev/roomle-ui/commit/7c99bb9)), closes [#2242](https://github.com/roomle-dev/roomle-ui/issues/2242)
20
- * Merge pull request #2243 from roomle-dev/chore/migrate-standard-components-to-script-setup ([f9eb023](https://github.com/roomle-dev/roomle-ui/commit/f9eb023)), closes [#2243](https://github.com/roomle-dev/roomle-ui/issues/2243)
21
- * Merge pull request #2244 from roomle-dev/hf/object-selection ([fd18d10](https://github.com/roomle-dev/roomle-ui/commit/fd18d10)), closes [#2244](https://github.com/roomle-dev/roomle-ui/issues/2244)
22
- * Merge pull request #2245 from roomle-dev/chore/improve-migration-guidelines-in-refactoring-md ([8f5e78f](https://github.com/roomle-dev/roomle-ui/commit/8f5e78f)), closes [#2245](https://github.com/roomle-dev/roomle-ui/issues/2245)
23
- * Merge pull request #2247 from roomle-dev/fix/migration-cleanup-findings ([ef6e3b6](https://github.com/roomle-dev/roomle-ui/commit/ef6e3b6)), closes [#2247](https://github.com/roomle-dev/roomle-ui/issues/2247)
24
- * Merge pull request #2248 from roomle-dev/refactor/batch2-composition-api-migration ([1ac6f70](https://github.com/roomle-dev/roomle-ui/commit/1ac6f70)), closes [#2248](https://github.com/roomle-dev/roomle-ui/issues/2248)
25
- * Merge pull request #2249 from roomle-dev/chore/migration-cleanup-dead-code ([881a633](https://github.com/roomle-dev/roomle-ui/commit/881a633)), closes [#2249](https://github.com/roomle-dev/roomle-ui/issues/2249)
26
- * fix: address pr review - use script-local variables in templates ([94dcd85](https://github.com/roomle-dev/roomle-ui/commit/94dcd85))
27
- * fix: address PR review comments on migration example ([a34b9f8](https://github.com/roomle-dev/roomle-ui/commit/a34b9f8))
28
- * fix: address pre-existing issues found during options api migration ([53ee9ec](https://github.com/roomle-dev/roomle-ui/commit/53ee9ec))
29
- * fix: address second round of PR review comments ([f47d210](https://github.com/roomle-dev/roomle-ui/commit/f47d210))
30
- * fix: address third round of PR review comments ([76a2a25](https://github.com/roomle-dev/roomle-ui/commit/76a2a25))
31
- * fix(ProductRangeControl): clear longPressTimer on component unmount ([97f79ad](https://github.com/roomle-dev/roomle-ui/commit/97f79ad))
32
- * fix: correct ElementLengthScaling to use 1/2 matching downstream consumers ([0ab4a17](https://github.com/roomle-dev/roomle-ui/commit/0ab4a17))
33
- * fix: correct RoomlePlanner generic type mismatches across planner components ([78553e5](https://github.com/roomle-dev/roomle-ui/commit/78553e5))
34
- * fix: HF - disable bounding box meshes for Roomle configurations ([c5d0909](https://github.com/roomle-dev/roomle-ui/commit/c5d0909))
35
- * fix: HI api - restrict which properties are allowed to be updated ([f92b03d](https://github.com/roomle-dev/roomle-ui/commit/f92b03d))
36
- * fix: re-type Vuex store with StoreState, use localized unref for selectionElement ([3585ddd](https://github.com/roomle-dev/roomle-ui/commit/3585ddd))
37
- * fix: remove duplicated console error ([d57c88d](https://github.com/roomle-dev/roomle-ui/commit/d57c88d))
38
- * fix: remove unused imports from ProductVariant.vue and PlannerMain.vue ([1a26c7e](https://github.com/roomle-dev/roomle-ui/commit/1a26c7e))
39
- * fix: remove unused store import from ProductRangeControl.vue ([0f0b618](https://github.com/roomle-dev/roomle-ui/commit/0f0b618))
40
- * fix: replace $store global property with useStore() composable across all script setup components ([be2accf](https://github.com/roomle-dev/roomle-ui/commit/be2accf))
41
- * chore: add batching guidance for options api migrations ([557a6d0](https://github.com/roomle-dev/roomle-ui/commit/557a6d0))
42
- * chore: add before/after example for options api migration ([accaa8d](https://github.com/roomle-dev/roomle-ui/commit/accaa8d))
43
- * chore: add options api to composition api migration workflow ([f734ed9](https://github.com/roomle-dev/roomle-ui/commit/f734ed9))
44
- * chore: add post-migration checklist, test adaptation, and issue reporting guidelines ([9888e16](https://github.com/roomle-dev/roomle-ui/commit/9888e16)), closes [#2243](https://github.com/roomle-dev/roomle-ui/issues/2243)
45
- * chore: hi examples localisation ([1f1886e](https://github.com/roomle-dev/roomle-ui/commit/1f1886e))
46
- * chore: merge master into migration branch ([cb1a2cc](https://github.com/roomle-dev/roomle-ui/commit/cb1a2cc))
47
- * chore: migrate 38 standard components from Options API to script setup ([32a5c18](https://github.com/roomle-dev/roomle-ui/commit/32a5c18))
48
- * chore: remove dead code discovered during composition API migration ([3e9caac](https://github.com/roomle-dev/roomle-ui/commit/3e9caac))
49
- * test: adapt tests for composition api migration ([1089c8c](https://github.com/roomle-dev/roomle-ui/commit/1089c8c))
50
- * test: update playwright tests ([2cd82c3](https://github.com/roomle-dev/roomle-ui/commit/2cd82c3))
51
- * refactor: migrate 12 low-risk components to composition api ([1dd5a00](https://github.com/roomle-dev/roomle-ui/commit/1dd5a00))
52
- * refactor: migrate 4 medium-risk components to composition api ([2e76a2a](https://github.com/roomle-dev/roomle-ui/commit/2e76a2a))
53
- * feat: core api KernelPart ([32ff8b0](https://github.com/roomle-dev/roomle-ui/commit/32ff8b0))
54
- * feat: glue-logic CHANGEABLE_PROPERTIES ([93ac12f](https://github.com/roomle-dev/roomle-ui/commit/93ac12f))
55
- * feat(core): upgrade to version 2.70.0-alpha.5 ([ef8cfd5](https://github.com/roomle-dev/roomle-ui/commit/ef8cfd5))
3
+ * Apply suggestion from @Copilot ([1337c67](https://github.com/roomle-dev/roomle-ui/commit/1337c67))
4
+ * Merge branch 'feat/web-sdk-agents-md' of github.com:roomle-dev/roomle-ui into feat/web-sdk-agents-md ([0e312c6](https://github.com/roomle-dev/roomle-ui/commit/0e312c6))
5
+ * Merge branch 'feat/web-sdk-agents-md' of github.com:roomle-dev/roomle-ui into feat/web-sdk-agents-md ([f810e30](https://github.com/roomle-dev/roomle-ui/commit/f810e30))
6
+ * Merge branch 'fix/use-correct-id-RML-16113' of github.com:roomle-dev/roomle-ui into fix/use-correct- ([32e7a14](https://github.com/roomle-dev/roomle-ui/commit/32e7a14))
7
+ * Merge branch 'master' into chore/migrate-planner-ui-state-to-pinia ([00efd4f](https://github.com/roomle-dev/roomle-ui/commit/00efd4f))
8
+ * Merge branch 'master' into docs/update-agents-for-composition-api-migration ([e08fa71](https://github.com/roomle-dev/roomle-ui/commit/e08fa71))
9
+ * Merge branch 'master' into docs/update-buildpackage-references ([2e396c3](https://github.com/roomle-dev/roomle-ui/commit/2e396c3))
10
+ * Merge branch 'master' into feat/hi-material-ids ([74d3f4e](https://github.com/roomle-dev/roomle-ui/commit/74d3f4e))
11
+ * Merge branch 'master' into feat/hi-material-ids ([b12a948](https://github.com/roomle-dev/roomle-ui/commit/b12a948))
12
+ * Merge branch 'master' into feat/web-sdk-agents-md ([019fa18](https://github.com/roomle-dev/roomle-ui/commit/019fa18))
13
+ * Merge branch 'master' into fix/addon-selection-style-RML-15964 ([7c60ff0](https://github.com/roomle-dev/roomle-ui/commit/7c60ff0))
14
+ * Merge branch 'master' into fix/addon-selection-style-RML-15964 ([46c50af](https://github.com/roomle-dev/roomle-ui/commit/46c50af))
15
+ * Merge branch 'master' into fix/hi-split-group ([6c875f5](https://github.com/roomle-dev/roomle-ui/commit/6c875f5))
16
+ * Merge branch 'master' into fix/hi-split-group ([a97957e](https://github.com/roomle-dev/roomle-ui/commit/a97957e))
17
+ * Merge branch 'master' into fix/pill-mobile-height-RML-16125 ([89b42bb](https://github.com/roomle-dev/roomle-ui/commit/89b42bb))
18
+ * Merge branch 'master' into fix/pill-mobile-height-RML-16125 ([bca2eba](https://github.com/roomle-dev/roomle-ui/commit/bca2eba))
19
+ * Merge branch 'master' into fix/revert-2209 ([2184309](https://github.com/roomle-dev/roomle-ui/commit/2184309))
20
+ * Merge branch 'master' into fix/RML-16072-catalog-alignment-fix ([9798a32](https://github.com/roomle-dev/roomle-ui/commit/9798a32))
21
+ * Merge branch 'master' into fix/use-correct-id-RML-16113 ([548a2b1](https://github.com/roomle-dev/roomle-ui/commit/548a2b1))
22
+ * Merge branch 'master' into fix/use-correct-id-RML-16113 ([8010b8e](https://github.com/roomle-dev/roomle-ui/commit/8010b8e))
23
+ * Merge branch 'master' into fix/use-correct-id-RML-16113 ([27f82ae](https://github.com/roomle-dev/roomle-ui/commit/27f82ae))
24
+ * Merge branch 'master' into fix/wrong-slopping-roof-icon-state-RML-15729 ([fb42531](https://github.com/roomle-dev/roomle-ui/commit/fb42531))
25
+ * Merge branch 'master' into fix/wrong-slopping-roof-icon-state-RML-15729 ([f50884f](https://github.com/roomle-dev/roomle-ui/commit/f50884f))
26
+ * Merge branch 'master' into style/sidebar-layout-tweaks ([0114242](https://github.com/roomle-dev/roomle-ui/commit/0114242))
27
+ * Merge branch 'master' into style/sidebar-layout-tweaks ([64e8b85](https://github.com/roomle-dev/roomle-ui/commit/64e8b85))
28
+ * Merge branch 'master' into style/sidebar-layout-tweaks ([05fe0da](https://github.com/roomle-dev/roomle-ui/commit/05fe0da))
29
+ * Merge pull request #2190 from roomle-dev/style/sidebar-layout-tweaks ([e22796f](https://github.com/roomle-dev/roomle-ui/commit/e22796f)), closes [#2190](https://github.com/roomle-dev/roomle-ui/issues/2190)
30
+ * Merge pull request #2256 from roomle-dev/fix/addon-selection-style-RML-15964 ([c0ebea9](https://github.com/roomle-dev/roomle-ui/commit/c0ebea9)), closes [#2256](https://github.com/roomle-dev/roomle-ui/issues/2256)
31
+ * Merge pull request #2257 from roomle-dev/fix/use-correct-id-RML-16113 ([98acc29](https://github.com/roomle-dev/roomle-ui/commit/98acc29)), closes [#2257](https://github.com/roomle-dev/roomle-ui/issues/2257)
32
+ * Merge pull request #2258 from roomle-dev/refactor/migrate-ui-state-vuex-to-pinia ([bd942d9](https://github.com/roomle-dev/roomle-ui/commit/bd942d9)), closes [#2258](https://github.com/roomle-dev/roomle-ui/issues/2258)
33
+ * Merge pull request #2259 from roomle-dev/chore/pinia-migration-cleanup ([d4b5003](https://github.com/roomle-dev/roomle-ui/commit/d4b5003)), closes [#2259](https://github.com/roomle-dev/roomle-ui/issues/2259)
34
+ * Merge pull request #2260 from roomle-dev/fix/image-with-fallback-infinite-loop ([460f98d](https://github.com/roomle-dev/roomle-ui/commit/460f98d)), closes [#2260](https://github.com/roomle-dev/roomle-ui/issues/2260)
35
+ * Merge pull request #2261 from roomle-dev/fix/wrong-slopping-roof-icon-state-RML-15729 ([d5e4741](https://github.com/roomle-dev/roomle-ui/commit/d5e4741)), closes [#2261](https://github.com/roomle-dev/roomle-ui/issues/2261)
36
+ * Merge pull request #2262 from roomle-dev/chore/migrate-planner-ui-state-to-pinia ([45c0b82](https://github.com/roomle-dev/roomle-ui/commit/45c0b82)), closes [#2262](https://github.com/roomle-dev/roomle-ui/issues/2262)
37
+ * Merge pull request #2263 from roomle-dev/chore/remove-vuex-store-passthrough ([261abb7](https://github.com/roomle-dev/roomle-ui/commit/261abb7)), closes [#2263](https://github.com/roomle-dev/roomle-ui/issues/2263)
38
+ * Merge pull request #2264 from roomle-dev/chore/remove-vuex ([3b648ca](https://github.com/roomle-dev/roomle-ui/commit/3b648ca)), closes [#2264](https://github.com/roomle-dev/roomle-ui/issues/2264)
39
+ * Merge pull request #2265 from roomle-dev/docs/follow-up-vuex-migration-notes ([bbe4746](https://github.com/roomle-dev/roomle-ui/commit/bbe4746)), closes [#2265](https://github.com/roomle-dev/roomle-ui/issues/2265)
40
+ * Merge pull request #2266 from roomle-dev/docs/update-agents-for-composition-api-migration ([e4b0e8c](https://github.com/roomle-dev/roomle-ui/commit/e4b0e8c)), closes [#2266](https://github.com/roomle-dev/roomle-ui/issues/2266)
41
+ * Merge pull request #2267 from roomle-dev/fix/revert-2209 ([cda0a76](https://github.com/roomle-dev/roomle-ui/commit/cda0a76)), closes [#2267](https://github.com/roomle-dev/roomle-ui/issues/2267)
42
+ * Merge pull request #2271 from roomle-dev/feat/RML-16067-update-edit-icon ([9ab0e4f](https://github.com/roomle-dev/roomle-ui/commit/9ab0e4f)), closes [#2271](https://github.com/roomle-dev/roomle-ui/issues/2271)
43
+ * Merge pull request #2272 from roomle-dev/chore/fix-ts7056-tsconfig-split ([2bbb4a7](https://github.com/roomle-dev/roomle-ui/commit/2bbb4a7)), closes [#2272](https://github.com/roomle-dev/roomle-ui/issues/2272)
44
+ * Merge pull request #2274 from roomle-dev/fix/RML-16072-catalog-alignment-fix ([7033eb1](https://github.com/roomle-dev/roomle-ui/commit/7033eb1)), closes [#2274](https://github.com/roomle-dev/roomle-ui/issues/2274)
45
+ * Merge pull request #2275 from roomle-dev/upgraded-by-ci/core-2.70.0-alpha.8 ([950a67e](https://github.com/roomle-dev/roomle-ui/commit/950a67e)), closes [#2275](https://github.com/roomle-dev/roomle-ui/issues/2275)
46
+ * Merge pull request #2277 from roomle-dev/feat/web-sdk-agents-md ([d79d889](https://github.com/roomle-dev/roomle-ui/commit/d79d889)), closes [#2277](https://github.com/roomle-dev/roomle-ui/issues/2277)
47
+ * Merge pull request #2278 from roomle-dev/feat/hi-material-ids ([1b65c7e](https://github.com/roomle-dev/roomle-ui/commit/1b65c7e)), closes [#2278](https://github.com/roomle-dev/roomle-ui/issues/2278)
48
+ * Merge pull request #2280 from roomle-dev/fix/pill-mobile-height-RML-16125 ([f755ecb](https://github.com/roomle-dev/roomle-ui/commit/f755ecb)), closes [#2280](https://github.com/roomle-dev/roomle-ui/issues/2280)
49
+ * Merge pull request #2281 from roomle-dev/upgraded-by-ci/core-2.70.0-alpha.9 ([6eb5ac0](https://github.com/roomle-dev/roomle-ui/commit/6eb5ac0)), closes [#2281](https://github.com/roomle-dev/roomle-ui/issues/2281)
50
+ * Merge pull request #2282 from roomle-dev/fix/hi-split-group ([6c5610d](https://github.com/roomle-dev/roomle-ui/commit/6c5610d)), closes [#2282](https://github.com/roomle-dev/roomle-ui/issues/2282)
51
+ * Merge pull request #2286 from roomle-dev/chore/generalize-review-pr-comments-workflow ([e5d8f18](https://github.com/roomle-dev/roomle-ui/commit/e5d8f18)), closes [#2286](https://github.com/roomle-dev/roomle-ui/issues/2286)
52
+ * Merge pull request #2288 from roomle-dev/docs/review-workflow-inline-discussions ([3e71b00](https://github.com/roomle-dev/roomle-ui/commit/3e71b00)), closes [#2288](https://github.com/roomle-dev/roomle-ui/issues/2288)
53
+ * Merge pull request #2289 from roomle-dev/docs/update-buildpackage-references ([a7bd209](https://github.com/roomle-dev/roomle-ui/commit/a7bd209)), closes [#2289](https://github.com/roomle-dev/roomle-ui/issues/2289) [#2268](https://github.com/roomle-dev/roomle-ui/issues/2268)
54
+ * Merge pull request #2290 from roomle-dev/chore/no-python-tooling-guideline ([987c01f](https://github.com/roomle-dev/roomle-ui/commit/987c01f)), closes [#2290](https://github.com/roomle-dev/roomle-ui/issues/2290)
55
+ * Merge pull request #2291 from roomle-dev/upgraded-by-ci/core-2.70.0-alpha.10 ([e345ece](https://github.com/roomle-dev/roomle-ui/commit/e345ece)), closes [#2291](https://github.com/roomle-dev/roomle-ui/issues/2291)
56
+ * Merge pull request #2292 from roomle-dev/chore/ai-disclosure-and-github-cli-fixes ([c31498e](https://github.com/roomle-dev/roomle-ui/commit/c31498e)), closes [#2292](https://github.com/roomle-dev/roomle-ui/issues/2292)
57
+ * Merge pull request #2293 from roomle-dev/upgraded-by-ci/core-2.70.0-alpha.11 ([1399f76](https://github.com/roomle-dev/roomle-ui/commit/1399f76)), closes [#2293](https://github.com/roomle-dev/roomle-ui/issues/2293)
58
+ * feat(SDK): add web-sdk info to agents md ([feb34ec](https://github.com/roomle-dev/roomle-ui/commit/feb34ec))
59
+ * feat: core api - door arches ([d79f857](https://github.com/roomle-dev/roomle-ui/commit/d79f857))
60
+ * feat: core api - moveElementToIn2d ([8474c98](https://github.com/roomle-dev/roomle-ui/commit/8474c98))
61
+ * feat: fetch external materials directly via a URL from master data ([0d36aff](https://github.com/roomle-dev/roomle-ui/commit/0d36aff))
62
+ * feat: glue logic, material provider api ([6754db4](https://github.com/roomle-dev/roomle-ui/commit/6754db4))
63
+ * feat: inject materialProvider ([72e7dcb](https://github.com/roomle-dev/roomle-ui/commit/72e7dcb))
64
+ * feat: material provider ([aa0ef2a](https://github.com/roomle-dev/roomle-ui/commit/aa0ef2a))
65
+ * feat: suggestion to fix RML-16113 ([5466315](https://github.com/roomle-dev/roomle-ui/commit/5466315))
66
+ * feat(catalog): update edit icon design [RML-16068] ([0965a6e](https://github.com/roomle-dev/roomle-ui/commit/0965a6e))
67
+ * feat: updated design of edit icon in product list RML-16067 ([c84d860](https://github.com/roomle-dev/roomle-ui/commit/c84d860))
68
+ * feat(core): upgrade to version 2.70.0-alpha.10 ([38358ff](https://github.com/roomle-dev/roomle-ui/commit/38358ff))
69
+ * feat(core): upgrade to version 2.70.0-alpha.11 ([adf0d2f](https://github.com/roomle-dev/roomle-ui/commit/adf0d2f))
70
+ * feat(core): upgrade to version 2.70.0-alpha.8 ([7ba01a4](https://github.com/roomle-dev/roomle-ui/commit/7ba01a4))
71
+ * feat(core): upgrade to version 2.70.0-alpha.9 ([1c93ed5](https://github.com/roomle-dev/roomle-ui/commit/1c93ed5))
72
+ * docs: add ai disclosure guideline and replace python refs in github-cli ([85ad6cd](https://github.com/roomle-dev/roomle-ui/commit/85ad6cd))
73
+ * docs: add dependency pinning rules and shell escaping workaround ([c9ed819](https://github.com/roomle-dev/roomle-ui/commit/c9ed819))
74
+ * docs: add follow-up notes for open PRs affected by Vuex→Pinia migration ([32ba122](https://github.com/roomle-dev/roomle-ui/commit/32ba122)), closes [#2190](https://github.com/roomle-dev/roomle-ui/issues/2190) [#2236](https://github.com/roomle-dev/roomle-ui/issues/2236)
75
+ * docs: add learnings from PR #2278 review to agent guidelines ([c965023](https://github.com/roomle-dev/roomle-ui/commit/c965023)), closes [#2278](https://github.com/roomle-dev/roomle-ui/issues/2278)
76
+ * docs: add no-python tooling guideline for ai agents ([2cac842](https://github.com/roomle-dev/roomle-ui/commit/2cac842))
77
+ * docs: add strict equality and non-null assertion guidelines to typescript.md ([c9acdf5](https://github.com/roomle-dev/roomle-ui/commit/c9acdf5))
78
+ * docs: add workflow for reviewing copilot pr comments ([0aa5654](https://github.com/roomle-dev/roomle-ui/commit/0aa5654))
79
+ * docs: add workflow for reviewing external pull requests ([7bb6ffb](https://github.com/roomle-dev/roomle-ui/commit/7bb6ffb))
80
+ * docs: clarify wallsDimensions initial value rationale in follow-up ([58953e4](https://github.com/roomle-dev/roomle-ui/commit/58953e4))
81
+ * docs: document TS7056 root cause and proposed fix in follow-up ([86b8183](https://github.com/roomle-dev/roomle-ui/commit/86b8183))
82
+ * docs(decisions): enrich vuex-to-pinia migration summary ([f3bd04a](https://github.com/roomle-dev/roomle-ui/commit/f3bd04a))
83
+ * docs: mandate inline review comments and add GitHub CLI reference ([1ca7246](https://github.com/roomle-dev/roomle-ui/commit/1ca7246))
84
+ * docs: update agent guidelines for completed options api to composition api migration ([478fecc](https://github.com/roomle-dev/roomle-ui/commit/478fecc))
85
+ * docs: update buildPackage reference removed in PR #2268 ([0fc215a](https://github.com/roomle-dev/roomle-ui/commit/0fc215a)), closes [#2268](https://github.com/roomle-dev/roomle-ui/issues/2268)
86
+ * docs: update vuex-to-pinia-migration.md decisions ([c68b719](https://github.com/roomle-dev/roomle-ui/commit/c68b719))
87
+ * fix: address copilot review comments on PR #2266 ([5a5d129](https://github.com/roomle-dev/roomle-ui/commit/5a5d129)), closes [#2266](https://github.com/roomle-dev/roomle-ui/issues/2266) [#2241](https://github.com/roomle-dev/roomle-ui/issues/2241) [#2243](https://github.com/roomle-dev/roomle-ui/issues/2243) [#2248](https://github.com/roomle-dev/roomle-ui/issues/2248)
88
+ * fix: address Copilot review comments on PR #2286 ([51f2662](https://github.com/roomle-dev/roomle-ui/commit/51f2662)), closes [#2286](https://github.com/roomle-dev/roomle-ui/issues/2286)
89
+ * fix: address PR review feedback for plannerUiState migration ([1260887](https://github.com/roomle-dev/roomle-ui/commit/1260887))
90
+ * fix: address review comments on PR #2257 ([6e76d5e](https://github.com/roomle-dev/roomle-ui/commit/6e76d5e)), closes [#2257](https://github.com/roomle-dev/roomle-ui/issues/2257)
91
+ * fix: adjust pill alignment, gap and center addons icon for RML-16125 ([8b3b440](https://github.com/roomle-dev/roomle-ui/commit/8b3b440))
92
+ * fix: consistent configurationRuntimeId naming in roomle-configurator and common-kernel-access ([41c6630](https://github.com/roomle-dev/roomle-ui/commit/41c6630))
93
+ * fix: correct unref placement in togglePartList ([fbad703](https://github.com/roomle-dev/roomle-ui/commit/fbad703))
94
+ * fix: migrate remaining Vuex usages and fix all lint errors ([08648d9](https://github.com/roomle-dev/roomle-ui/commit/08648d9))
95
+ * fix: prevent infinite re-render loop in ImageWithFallback on image load error ([014725b](https://github.com/roomle-dev/roomle-ui/commit/014725b))
96
+ * fix(catalog): refine alignment and styling in catalog components [RML-16072] ([317d0d8](https://github.com/roomle-dev/roomle-ui/commit/317d0d8))
97
+ * fix(grid-view): remove dashed border for addon selection [RML-15964] ([a4190c8](https://github.com/roomle-dev/roomle-ui/commit/a4190c8))
98
+ * fix: remove unused Vuex imports and variables from PR review ([7403830](https://github.com/roomle-dev/roomle-ui/commit/7403830))
99
+ * fix: revert partlist closing changes ([9f30100](https://github.com/roomle-dev/roomle-ui/commit/9f30100))
100
+ * fix: sloping roof toggle ignores real state ([4eba921](https://github.com/roomle-dev/roomle-ui/commit/4eba921))
101
+ * fix: split hi group ([e9f12aa](https://github.com/roomle-dev/roomle-ui/commit/e9f12aa))
102
+ * fix(icons): update info tooltip icon [RML-16066] ([08fe2df](https://github.com/roomle-dev/roomle-ui/commit/08fe2df))
103
+ * fix: use consistent placeholder formatting in github-cli reference ([8f22fc3](https://github.com/roomle-dev/roomle-ui/commit/8f22fc3))
104
+ * fix: use correct property name configurationRuntimeId in tests ([dc41bfc](https://github.com/roomle-dev/roomle-ui/commit/dc41bfc))
105
+ * chore: add correct snapshot files ([451620f](https://github.com/roomle-dev/roomle-ui/commit/451620f))
106
+ * chore: add docs ([14f7f96](https://github.com/roomle-dev/roomle-ui/commit/14f7f96))
107
+ * chore: address review feedback — remove remaining vuex references ([4604c6f](https://github.com/roomle-dev/roomle-ui/commit/4604c6f))
108
+ * chore: clean up uiState pinia migration leftovers ([ec4f2ac](https://github.com/roomle-dev/roomle-ui/commit/ec4f2ac))
109
+ * chore: correct naming ([1c2d01b](https://github.com/roomle-dev/roomle-ui/commit/1c2d01b))
110
+ * chore: correct naming ([7dcd80a](https://github.com/roomle-dev/roomle-ui/commit/7dcd80a))
111
+ * chore: do not apply tall class while in mobile ([2876948](https://github.com/roomle-dev/roomle-ui/commit/2876948))
112
+ * chore: fix drawing and remove loc info ([79e8c67](https://github.com/roomle-dev/roomle-ui/commit/79e8c67))
113
+ * chore: fix prettier formatting ([a6fd089](https://github.com/roomle-dev/roomle-ui/commit/a6fd089))
114
+ * chore: fix ts lint ([b85e941](https://github.com/roomle-dev/roomle-ui/commit/b85e941))
115
+ * chore: fix ts7056 via tsconfig split for embedding-lib linting ([1812ba4](https://github.com/roomle-dev/roomle-ui/commit/1812ba4))
116
+ * chore: generalize review workflow to handle all PR comment types ([e153172](https://github.com/roomle-dev/roomle-ui/commit/e153172))
117
+ * chore: implement code review suggestions ([67aa99e](https://github.com/roomle-dev/roomle-ui/commit/67aa99e))
118
+ * chore: implement feedback ([4e14c35](https://github.com/roomle-dev/roomle-ui/commit/4e14c35))
119
+ * chore: move file ([40a9fac](https://github.com/roomle-dev/roomle-ui/commit/40a9fac))
120
+ * chore: remove vuex dependency and consolidate migration docs ([20acf1f](https://github.com/roomle-dev/roomle-ui/commit/20acf1f))
121
+ * chore: remove vuex store pass-through from helpers, classes, and components ([df658b3](https://github.com/roomle-dev/roomle-ui/commit/df658b3))
122
+ * chore: set correct path to pinia migration ([772166a](https://github.com/roomle-dev/roomle-ui/commit/772166a))
123
+ * chore: tidy-up copilot review suggestions ([badc72f](https://github.com/roomle-dev/roomle-ui/commit/badc72f))
124
+ * chore: use correct naming ([fd4a9e4](https://github.com/roomle-dev/roomle-ui/commit/fd4a9e4))
125
+ * chore: use correct variables ([b2fa627](https://github.com/roomle-dev/roomle-ui/commit/b2fa627))
126
+ * style: adjust collapse icon position ([cf55b7d](https://github.com/roomle-dev/roomle-ui/commit/cf55b7d))
127
+ * style: apply prettier formatting ([f0be39c](https://github.com/roomle-dev/roomle-ui/commit/f0be39c))
128
+ * style: apply prettier formatting and add snapshot pitfall docs ([bfe1cdd](https://github.com/roomle-dev/roomle-ui/commit/bfe1cdd))
129
+ * style: fix arroworientation ([cfec73f](https://github.com/roomle-dev/roomle-ui/commit/cfec73f))
130
+ * style: modfing the sidebar element spacing ([f0afce4](https://github.com/roomle-dev/roomle-ui/commit/f0afce4))
131
+ * style: more adaptions ([5e579ed](https://github.com/roomle-dev/roomle-ui/commit/5e579ed))
132
+ * style: run prettier ([9d862a2](https://github.com/roomle-dev/roomle-ui/commit/9d862a2))
133
+ * test: add unit tests for ImageWithFallback infinite loop fix ([68fb638](https://github.com/roomle-dev/roomle-ui/commit/68fb638))
134
+ * test: update test files after store parameter removal ([3dd0a17](https://github.com/roomle-dev/roomle-ui/commit/3dd0a17))
135
+ * refactor: clarify SharedUiState comments in store files ([0a8c4fa](https://github.com/roomle-dev/roomle-ui/commit/0a8c4fa))
136
+ * refactor: migrate plannerUiState from Vuex to Pinia ([2a77c7d](https://github.com/roomle-dev/roomle-ui/commit/2a77c7d))
137
+ * refactor: migrate ui-state from vuex to pinia ([ac3f199](https://github.com/roomle-dev/roomle-ui/commit/ac3f199))
138
+ * refactor: remove unused Vuex useStore imports after migration ([79590cd](https://github.com/roomle-dev/roomle-ui/commit/79590cd))
139
+ * refactor: replace store destructuring with direct property access ([58a3440](https://github.com/roomle-dev/roomle-ui/commit/58a3440))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomle/embedding-lib",
3
- "version": "6.3.0",
3
+ "version": "6.4.0-alpha.2",
4
4
  "description": "This is a small library which can be used to communicate with the Roomle Configurator. ES modules only (browser-compatible).",
5
5
  "type": "module",
6
6
  "main": "./roomle-embedding-lib.js",
@@ -192,7 +192,7 @@ const G = (s) => JSON.parse(JSON.stringify(s)), J = {
192
192
  const s = G(J);
193
193
  s.locale || (s.locale = P(null, !0)), s.id === V && delete s.id;
194
194
  const e = U();
195
- return e && k(e) && (s.configuratorId = "demoConfigurator"), s.customApiUrl = void 0, s.emails = !1, s;
195
+ return e && k(e) && (s.configuratorId = "demoConfigurator"), s.customApiUrl = "https://rubens.alpha.roomle.com/api/v2", s.emails = !1, s;
196
196
  }, Y = "<CONF_ID>", q = "#CONFIGURATIONID#", Q = (s) => {
197
197
  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);
198
198
  }, M = () => /(android)/i.test(navigator.userAgent);
@@ -1 +1 @@
1
- import{expose as e}from"./comlink-CmT64Qi3.mjs";import{g as t}from"./browser-BhHw2H1M.mjs";import{c as s}from"./utils-BqTPLNLs.mjs";class r{_side;_incomingMessageBus=null;_outgoingMessageBus=null;_execMessage=null;constructor(e,t,s,r){this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=r,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,r)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=e=>{if(!e||!e.data)return i.port1.close(),i.port2.close(),r(new Error(this._side+" received message but response can not be interpreted"));let t;try{t=JSON.parse(e.data)}catch(e){return i.port1.close(),i.port2.close(),this._prepareError(e),r(e)}t.error?r(t.error):void 0!==t.result?s(t.result):s(void 0),i.port1.close(),i.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}catch{return r(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return r(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(a,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&("string"==typeof e.data||"connect_hi"!==e.data.type)&&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 r=this._execMessage(s,e);if(void 0===r)return;r.then((e={})=>{let s,r;"object"==typeof e&&null!==e&&(s=e.error,r=e.result),s?t.postMessage(JSON.stringify({error:s})):void 0!==r?t.postMessage(JSON.stringify({result:r})):t.postMessage(JSON.stringify({result:e}))},e=>{t.postMessage(JSON.stringify({error:this._prepareError(e)}))})}catch(e){t.postMessage(JSON.stringify({error:this._prepareError(e)}))}}_prepareError(e){return"string"==typeof e?this._side+": "+e:(e.message=this._side+": "+e.message,e.message)}}const i=["127.0.0.1","localhost","0.0.0.0"],a=(e,t)=>{for(const s in t)try{t[s].constructor===Object?e[s]=a(e[s],t[s]):e[s]=t[s]}catch{e[s]=t[s]}return e};var n=(e=>(e.BOTTOM_BAR="bottom_bar",e.PARTLIST_BOUNDS="partlist_bounds",e.INTERACTION_NOTES="interaction_notes",e.PARAMETER_GROUPS="parameter_groups",e))(n||{});const o={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[n.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1,openCloseAnimation:!0,enableTwoLevelCatalog:!1,webGpu:!1,localExport3d:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},l=e=>{if(!e)return;const t=Object.keys(e);for(const s of t){const t=e[s];if(!Array.isArray(t)&&"object"==typeof t&&null!==t&&l(t),Array.isArray(t))for(const e of t)l(e);("true"===t||"false"===t)&&(e[s]="true"===t)}},c=()=>/(android)/i.test(navigator.userAgent);class u{_messageHandler=null;isSetupDone=!1;viewName="main";plugins={};pluginsLoaded=[];ui={callbacks:null};extended={callbacks:null};configurator={callbacks:null};analytics={callbacks:{}};rapi={callbacks:{}};global={callbacks:{}};setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:s}=e;t.forEach(e=>{const t=e.split(h),s=t[0],r=t[1];this[s]||(this[s]={}),this[s][r]=function(){if(this._messageHandler)return this._messageHandler.sendMessage(e,[...arguments])}.bind(this)}),s.forEach(e=>{const t=e.split(h),s=t[0],r=t[1],i=t[2];this[s]||(this[s]={}),this[s][r]||(this[s][r]={}),this[s][r][i]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const s=e.split(h),r=s[0],i=s[1],a=3===s.length?s[2]:null;if(a&&this[r][i][a]){const e=this[r][i][a](...t);return e instanceof Promise?e.then(e=>({result:e})):void 0!==e?Promise.resolve({result:e}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,s="website"){for(const r of e)"string"==typeof r&&"dragIn"===r?this.pluginsLoaded.push(new Promise((e,r)=>{try{import("./embedding-plugins-Dzhuj1By.mjs").then(e=>e.l).then(({DragIn:i})=>{const a=new i(this.ui,t,s,this.viewName);a.init().then(()=>{this.plugins.dragIn=a,e()},r)})}catch(e){r(e)}})):r.name&&r.loader&&this.pluginsLoaded.push(new Promise((e,i)=>{try{r.loader().then(a=>{const n=new a(this.ui,t,s,this.viewName);n.init().then(()=>{this.plugins[r.name]=n,e()},i)})}catch(e){i(e)}}))}}const d=()=>{let e,t;return{promise:new Promise((s,r)=>{e=s,t=r}),resolve:e,reject:t}},g={SDK:"extended",CONFIGURATOR_SDK:"configurator",CALLBACKS:"callbacks",UI:"ui",ANALYTICS:"analytics",GLOBAL:"global",RAPI:"rapi"},h=".",m=g.SDK+h+g.CALLBACKS,p={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},f=["constructor","callbacks"],w=e=>"_"!==e[0]&&!f.includes(e),E=(e,t,s=!1)=>{if(!e)return[];const r=Object.getOwnPropertyNames(e),i=s?g.CALLBACKS+h:"";return r.filter(w).map(e=>t+h+i+e)},S=async(e,t)=>{if("string"!=typeof e)throw new Error('Configurator ID is not a string type: "'+typeof e+'"');const s=t.customApiUrl?t.customApiUrl:"https://api.roomle.com/v2",r=t.overrideTenant||9,i=s+"/configurators/"+e,a="roomle_portal_v2",n="03-"+window.btoa((new Date).toISOString()+";anonymous;"+a),o=new Request(i,{method:"GET",headers:new Headers({apiKey:a,currentTenant:r,locale:"en",language:"en",device:1,token:n,platform:"web"}),mode:"cors",cache:"default"}),l=await fetch(o),{configurator:c}=await l.json();return c},M="data-rml-interaction-container",b=(e,t,s)=>{let r=null;Object.defineProperty(e,t,{get:()=>r||s,set(e){r=e?.mute?e.value:e}})},y=()=>.01*window.innerHeight+"px",T=e=>{e&&setTimeout(()=>e.style.setProperty(v,y()),0)},O="rml-styles",v="--rml-full-height",A="rml-container",N="rml-fill",R="rml-pos",I="rml-android-height",L="rml-overflow-hidden",C=new Map;class P extends u{static createPlanner(e,t,s,r=[]){return this._create(e,t,s,r)}static async connect(e,t=[]){const s=new u;s.viewName=e;const{resolve:i,promise:a}=d(),{resolve:n,promise:o}=d(),l=new r("custom-view-"+e,window,window.parent,({message:e,args:t})=>{switch(e){case _.REGISTER_CUSTOM_VIEW_DONE:i();break;case _.RETURN_METHODS:s.handleSetup(t[0]),n();break;default:if(s.isSetupDone)return s.executeMessage({message:e,args:t})}});s.setMessageHandler(l);const c=[e];return l.sendMessage(_.REGISTER_CUSTOM_VIEW,c),await a,l.sendMessage(_.GET_METHODS,c),await o,s.setupPlugins(t,document.body,"custom-view"),await Promise.allSettled(s.pluginsLoaded),s}static createConfigurator(e,t,s,r=[]){return this._create(e,t,s,r)}static create(e,t,s,r){return this._create(e,t,s,r)}static createViewer(e,t,s,r=[]){return this._create(e,t,s,r)}static hiMessageHandler=null;static setupHi(t){this.hiMessageHandler&&window.removeEventListener("message",this.hiMessageHandler),this.hiMessageHandler=r=>{if("connect_hi"===r.data.type&&r.data.port){const i=r.data.port;i.start?.(),e(s(t),i)}},window.addEventListener("message",this.hiMessageHandler)}static async _create(e,s,r,n){return new Promise(async(c,u)=>{try{const u=a((()=>{const e=(e=>JSON.parse(JSON.stringify(e)))(o);e.locale||(e.locale=t(null,!0)),"(idle)"===e.id&&delete e.id;const s=(()=>{const e=(()=>{try{return window.self!==window.top}catch{return!0}})();let t=window.location.href;if(e){if(!document.referrer)return null;t=document.referrer}const{hostname:s}=new URL(t);return s})();return s&&(e=>{const t=new RegExp(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/);return!!(i.includes(e)||t.test(e)||e.endsWith("roomle.com")||e.endsWith("gitlab.io")||e.endsWith("gitlab.com"))})(s)&&(e.configuratorId="demoConfigurator"),e.customApiUrl=void 0,e.emails=!1,e})(),(l(d=r),d?.customApiUrl&&(d.customApiUrl=decodeURIComponent(d.customApiUrl)),d.shareUrl&&(d.deeplink=d.shareUrl.replace("<CONF_ID>","#CONFIGURATIONID#")),d));(e=>{e.featureFlags||(e.featureFlags={}),"boolean"!=typeof e.featureFlags.realPartList&&(e.featureFlags.realPartList=!0),"boolean"!=typeof e.featureFlags.globalCallbacks&&(e.featureFlags.globalCallbacks=!0),"boolean"!=typeof e.featureFlags.mocAr&&(e.featureFlags.mocAr=!1)})(u);const g=await S(e,u);r=((e,t)=>{t.configuratorId=e.id;const s=e.settings||{};return!t.overrideTenant&&e.tenant&&(t.overrideTenant=e.tenant),((e,t)=>{const s=JSON.parse(JSON.stringify(e));return a(s,t)})(s,t)})(g,u);const h=new this(g,s,r,n,c);return await Promise.allSettled(h.pluginsLoaded),h}catch(e){return u(e)}var d})}_waitForIframe;_container;_configuratorSettings;_initData={};_iframe;constructor(e,t,s,i,a){if(super(),!e||"string"!=typeof e.id)throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(C.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(O)){const e=s.zIndex||9999999,t=document.createElement("style");t.type="text/css",t.id=O;const r="transition:all ease-in-out 450ms;",i=["-webkit-","-o-"].reduce((e,t)=>e+(t+r),"")+r,a=y();t.innerHTML=`\n .${A}{${v}:${a};}\n .${R}{position:fixed;top:0;left:0;z-index:${e};opacity:0}\n .rml-transition{${i}}\n .${N}{width:100%;height:100%;opacity:1}\n .${I}{height:calc(var(${v},1vh)*100)}\n .${L}{overflow:hidden}\n `,document.head.appendChild(t)}this._executeMessage=this._executeMessage.bind(this);const n=new r("website",window,null,this._executeMessage);this.setMessageHandler(n),this._onResize=this._onResize.bind(this),c()&&window.addEventListener("resize",this._onResize),this._container=t,this._initData=s,this._configuratorSettings=e;const o=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=a,this._container.appendChild(o),this._iframe=o,this.setupPlugins(i,this._iframe),C.set(t,!0)}teardown(){this._container&&C.delete(this._container);const e=this._container.querySelector("iframe");e&&this._container.removeChild(e),window.removeEventListener("resize",this._onResize)}_createIframe(){const e=document.createElement("iframe");let t=this._configuratorSettings?.url||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(t=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(t=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(t=this._initData.overrideServerUrl),e.src=t,e.classList.add(A),e.classList.add(N),e}_onResize(){T(this._iframe)}_onUseFullPage(){this._iframe.classList.add(R),document.documentElement.classList.add(L),window.document.body.classList.add(L),c()&&(T(this._iframe),this._iframe.classList.add(I))}_onBackToWebsite(){this._iframe.classList.remove(R),this._iframe.classList.remove(I),document.documentElement.classList.remove(L),window.document.body.classList.remove(L)}_executeMessage({message:e,args:t},s){if(s.source&&s.source===this._iframe?.contentWindow)return e===p.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(s.source),Promise.resolve({result:this._initData})):Promise.resolve({error:"MessageHandler not set"}):e===p.SETUP?(this.handleSetup(t[0]),b(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),b(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{this._messageHandler&&this._messageHandler.sendMessage(p.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:e,args:t})}}export{p as HANDSHAKE_MESSAGES,M as INTERACTION_CONTAINER_SELECTOR,g as NAMESPACE,h as NAMESPACE_SEPARATOR,m as SDK_CALLBACK,_ as WELL_KNOWN_MESSAGES,P as default,S as getConfiguratorSettings,E as getMethodNames,w as isExposable};
1
+ import{expose as e}from"./comlink-CmT64Qi3.mjs";import{g as t}from"./browser-BhHw2H1M.mjs";import{c as s}from"./utils-BqTPLNLs.mjs";class r{_side;_incomingMessageBus=null;_outgoingMessageBus=null;_execMessage=null;constructor(e,t,s,r){this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=r,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,r)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=e=>{if(!e||!e.data)return i.port1.close(),i.port2.close(),r(new Error(this._side+" received message but response can not be interpreted"));let t;try{t=JSON.parse(e.data)}catch(e){return i.port1.close(),i.port2.close(),this._prepareError(e),r(e)}t.error?r(t.error):void 0!==t.result?s(t.result):s(void 0),i.port1.close(),i.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}catch{return r(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return r(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(a,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&("string"==typeof e.data||"connect_hi"!==e.data.type)&&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 r=this._execMessage(s,e);if(void 0===r)return;r.then((e={})=>{let s,r;"object"==typeof e&&null!==e&&(s=e.error,r=e.result),s?t.postMessage(JSON.stringify({error:s})):void 0!==r?t.postMessage(JSON.stringify({result:r})):t.postMessage(JSON.stringify({result:e}))},e=>{t.postMessage(JSON.stringify({error:this._prepareError(e)}))})}catch(e){t.postMessage(JSON.stringify({error:this._prepareError(e)}))}}_prepareError(e){return"string"==typeof e?this._side+": "+e:(e.message=this._side+": "+e.message,e.message)}}const i=["127.0.0.1","localhost","0.0.0.0"],a=(e,t)=>{for(const s in t)try{t[s].constructor===Object?e[s]=a(e[s],t[s]):e[s]=t[s]}catch{e[s]=t[s]}return e};var n=(e=>(e.BOTTOM_BAR="bottom_bar",e.PARTLIST_BOUNDS="partlist_bounds",e.INTERACTION_NOTES="interaction_notes",e.PARAMETER_GROUPS="parameter_groups",e))(n||{});const o={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[n.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1,openCloseAnimation:!0,enableTwoLevelCatalog:!1,webGpu:!1,localExport3d:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},l=e=>{if(!e)return;const t=Object.keys(e);for(const s of t){const t=e[s];if(!Array.isArray(t)&&"object"==typeof t&&null!==t&&l(t),Array.isArray(t))for(const e of t)l(e);("true"===t||"false"===t)&&(e[s]="true"===t)}},c=()=>/(android)/i.test(navigator.userAgent);class u{_messageHandler=null;isSetupDone=!1;viewName="main";plugins={};pluginsLoaded=[];ui={callbacks:null};extended={callbacks:null};configurator={callbacks:null};analytics={callbacks:{}};rapi={callbacks:{}};global={callbacks:{}};setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:s}=e;t.forEach(e=>{const t=e.split(h),s=t[0],r=t[1];this[s]||(this[s]={}),this[s][r]=function(){if(this._messageHandler)return this._messageHandler.sendMessage(e,[...arguments])}.bind(this)}),s.forEach(e=>{const t=e.split(h),s=t[0],r=t[1],i=t[2];this[s]||(this[s]={}),this[s][r]||(this[s][r]={}),this[s][r][i]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const s=e.split(h),r=s[0],i=s[1],a=3===s.length?s[2]:null;if(a&&this[r][i][a]){const e=this[r][i][a](...t);return e instanceof Promise?e.then(e=>({result:e})):void 0!==e?Promise.resolve({result:e}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,s="website"){for(const r of e)"string"==typeof r&&"dragIn"===r?this.pluginsLoaded.push(new Promise((e,r)=>{try{import("./embedding-plugins-Dzhuj1By.mjs").then(e=>e.l).then(({DragIn:i})=>{const a=new i(this.ui,t,s,this.viewName);a.init().then(()=>{this.plugins.dragIn=a,e()},r)})}catch(e){r(e)}})):r.name&&r.loader&&this.pluginsLoaded.push(new Promise((e,i)=>{try{r.loader().then(a=>{const n=new a(this.ui,t,s,this.viewName);n.init().then(()=>{this.plugins[r.name]=n,e()},i)})}catch(e){i(e)}}))}}const d=()=>{let e,t;return{promise:new Promise((s,r)=>{e=s,t=r}),resolve:e,reject:t}},g={SDK:"extended",CONFIGURATOR_SDK:"configurator",CALLBACKS:"callbacks",UI:"ui",ANALYTICS:"analytics",GLOBAL:"global",RAPI:"rapi"},h=".",m=g.SDK+h+g.CALLBACKS,p={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},f=["constructor","callbacks"],w=e=>"_"!==e[0]&&!f.includes(e),E=(e,t,s=!1)=>{if(!e)return[];const r=Object.getOwnPropertyNames(e),i=s?g.CALLBACKS+h:"";return r.filter(w).map(e=>t+h+i+e)},S=async(e,t)=>{if("string"!=typeof e)throw new Error('Configurator ID is not a string type: "'+typeof e+'"');const s=t.customApiUrl?t.customApiUrl:"https://api.roomle.com/v2",r=t.overrideTenant||9,i=s+"/configurators/"+e,a="roomle_portal_v2",n="03-"+window.btoa((new Date).toISOString()+";anonymous;"+a),o=new Request(i,{method:"GET",headers:new Headers({apiKey:a,currentTenant:r,locale:"en",language:"en",device:1,token:n,platform:"web"}),mode:"cors",cache:"default"}),l=await fetch(o),{configurator:c}=await l.json();return c},M="data-rml-interaction-container",b=(e,t,s)=>{let r=null;Object.defineProperty(e,t,{get:()=>r||s,set(e){r=e?.mute?e.value:e}})},y=()=>.01*window.innerHeight+"px",T=e=>{e&&setTimeout(()=>e.style.setProperty(v,y()),0)},O="rml-styles",v="--rml-full-height",A="rml-container",N="rml-fill",R="rml-pos",I="rml-android-height",L="rml-overflow-hidden",C=new Map;class P extends u{static createPlanner(e,t,s,r=[]){return this._create(e,t,s,r)}static async connect(e,t=[]){const s=new u;s.viewName=e;const{resolve:i,promise:a}=d(),{resolve:n,promise:o}=d(),l=new r("custom-view-"+e,window,window.parent,({message:e,args:t})=>{switch(e){case _.REGISTER_CUSTOM_VIEW_DONE:i();break;case _.RETURN_METHODS:s.handleSetup(t[0]),n();break;default:if(s.isSetupDone)return s.executeMessage({message:e,args:t})}});s.setMessageHandler(l);const c=[e];return l.sendMessage(_.REGISTER_CUSTOM_VIEW,c),await a,l.sendMessage(_.GET_METHODS,c),await o,s.setupPlugins(t,document.body,"custom-view"),await Promise.allSettled(s.pluginsLoaded),s}static createConfigurator(e,t,s,r=[]){return this._create(e,t,s,r)}static create(e,t,s,r){return this._create(e,t,s,r)}static createViewer(e,t,s,r=[]){return this._create(e,t,s,r)}static hiMessageHandler=null;static setupHi(t){this.hiMessageHandler&&window.removeEventListener("message",this.hiMessageHandler),this.hiMessageHandler=r=>{if("connect_hi"===r.data.type&&r.data.port){const i=r.data.port;i.start?.(),e(s(t),i)}},window.addEventListener("message",this.hiMessageHandler)}static async _create(e,s,r,n){return new Promise(async(c,u)=>{try{const u=a((()=>{const e=(e=>JSON.parse(JSON.stringify(e)))(o);e.locale||(e.locale=t(null,!0)),"(idle)"===e.id&&delete e.id;const s=(()=>{const e=(()=>{try{return window.self!==window.top}catch{return!0}})();let t=window.location.href;if(e){if(!document.referrer)return null;t=document.referrer}const{hostname:s}=new URL(t);return s})();return s&&(e=>{const t=new RegExp(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/);return!!(i.includes(e)||t.test(e)||e.endsWith("roomle.com")||e.endsWith("gitlab.io")||e.endsWith("gitlab.com"))})(s)&&(e.configuratorId="demoConfigurator"),e.customApiUrl="https://rubens.alpha.roomle.com/api/v2",e.emails=!1,e})(),(l(d=r),d?.customApiUrl&&(d.customApiUrl=decodeURIComponent(d.customApiUrl)),d.shareUrl&&(d.deeplink=d.shareUrl.replace("<CONF_ID>","#CONFIGURATIONID#")),d));(e=>{e.featureFlags||(e.featureFlags={}),"boolean"!=typeof e.featureFlags.realPartList&&(e.featureFlags.realPartList=!0),"boolean"!=typeof e.featureFlags.globalCallbacks&&(e.featureFlags.globalCallbacks=!0),"boolean"!=typeof e.featureFlags.mocAr&&(e.featureFlags.mocAr=!1)})(u);const g=await S(e,u);r=((e,t)=>{t.configuratorId=e.id;const s=e.settings||{};return!t.overrideTenant&&e.tenant&&(t.overrideTenant=e.tenant),((e,t)=>{const s=JSON.parse(JSON.stringify(e));return a(s,t)})(s,t)})(g,u);const h=new this(g,s,r,n,c);return await Promise.allSettled(h.pluginsLoaded),h}catch(e){return u(e)}var d})}_waitForIframe;_container;_configuratorSettings;_initData={};_iframe;constructor(e,t,s,i,a){if(super(),!e||"string"!=typeof e.id)throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(C.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(O)){const e=s.zIndex||9999999,t=document.createElement("style");t.type="text/css",t.id=O;const r="transition:all ease-in-out 450ms;",i=["-webkit-","-o-"].reduce((e,t)=>e+(t+r),"")+r,a=y();t.innerHTML=`\n .${A}{${v}:${a};}\n .${R}{position:fixed;top:0;left:0;z-index:${e};opacity:0}\n .rml-transition{${i}}\n .${N}{width:100%;height:100%;opacity:1}\n .${I}{height:calc(var(${v},1vh)*100)}\n .${L}{overflow:hidden}\n `,document.head.appendChild(t)}this._executeMessage=this._executeMessage.bind(this);const n=new r("website",window,null,this._executeMessage);this.setMessageHandler(n),this._onResize=this._onResize.bind(this),c()&&window.addEventListener("resize",this._onResize),this._container=t,this._initData=s,this._configuratorSettings=e;const o=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=a,this._container.appendChild(o),this._iframe=o,this.setupPlugins(i,this._iframe),C.set(t,!0)}teardown(){this._container&&C.delete(this._container);const e=this._container.querySelector("iframe");e&&this._container.removeChild(e),window.removeEventListener("resize",this._onResize)}_createIframe(){const e=document.createElement("iframe");let t=this._configuratorSettings?.url||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(t=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(t=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(t=this._initData.overrideServerUrl),e.src=t,e.classList.add(A),e.classList.add(N),e}_onResize(){T(this._iframe)}_onUseFullPage(){this._iframe.classList.add(R),document.documentElement.classList.add(L),window.document.body.classList.add(L),c()&&(T(this._iframe),this._iframe.classList.add(I))}_onBackToWebsite(){this._iframe.classList.remove(R),this._iframe.classList.remove(I),document.documentElement.classList.remove(L),window.document.body.classList.remove(L)}_executeMessage({message:e,args:t},s){if(s.source&&s.source===this._iframe?.contentWindow)return e===p.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(s.source),Promise.resolve({result:this._initData})):Promise.resolve({error:"MessageHandler not set"}):e===p.SETUP?(this.handleSetup(t[0]),b(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),b(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{this._messageHandler&&this._messageHandler.sendMessage(p.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:e,args:t})}}export{p as HANDSHAKE_MESSAGES,M as INTERACTION_CONTAINER_SELECTOR,g as NAMESPACE,h as NAMESPACE_SEPARATOR,m as SDK_CALLBACK,_ as WELL_KNOWN_MESSAGES,P as default,S as getConfiguratorSettings,E as getMethodNames,w as isExposable};