@roomle/embedding-lib 6.0.0-alpha.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,43 +1,572 @@
1
- ## 6.0.0-alpha.3 (2026-01-09)
1
+ ## 6.0.0 (2026-01-13)
2
2
 
3
+ * Apply suggestion from @Copilot ([c91e6b0](https://github.com/roomle-dev/roomle-ui/commit/c91e6b0))
4
+ * Apply suggestion from @Copilot ([7abc564](https://github.com/roomle-dev/roomle-ui/commit/7abc564))
5
+ * Apply suggestion from @Copilot ([780b8de](https://github.com/roomle-dev/roomle-ui/commit/780b8de))
6
+ * Apply suggestion from @tschoartschi ([e2d544f](https://github.com/roomle-dev/roomle-ui/commit/e2d544f))
7
+ * Apply suggestion from @tschoartschi ([de7a735](https://github.com/roomle-dev/roomle-ui/commit/de7a735))
8
+ * Apply suggestions from code review ([a4025d2](https://github.com/roomle-dev/roomle-ui/commit/a4025d2))
9
+ * docs!: @roomle/web-sdk now exports TypeScript types from a single entry point ([a546bf0](https://github.com/roomle-dev/roomle-ui/commit/a546bf0))
10
+ * Merge branch 'feat/embedding-lib-exports' of github.com:roomle-dev/roomle-ui into feat/embedding-lib ([0c9be8e](https://github.com/roomle-dev/roomle-ui/commit/0c9be8e))
11
+ * Merge branch 'feat/types-qa-fresh-RML-15338' of github.com:roomle-dev/roomle-ui into feat/types-qa-f ([f290e82](https://github.com/roomle-dev/roomle-ui/commit/f290e82))
12
+ * Merge branch 'feat/use-correct-version-of-vite-plugin-dts' into ci/test ([5735f7c](https://github.com/roomle-dev/roomle-ui/commit/5735f7c))
13
+ * Merge branch 'fix/broken-examples-build-RML-15843' of github.com:roomle-dev/roomle-ui into fix/broke ([ba69f5c](https://github.com/roomle-dev/roomle-ui/commit/ba69f5c))
14
+ * Merge branch 'fix/sdk-build' of github.com:roomle-dev/roomle-ui into fix/sdk-build ([5a85fce](https://github.com/roomle-dev/roomle-ui/commit/5a85fce))
15
+ * Merge branch 'master' into chore/hi-examples ([301db78](https://github.com/roomle-dev/roomle-ui/commit/301db78))
16
+ * Merge branch 'master' into chore/hi-examples ([6391c01](https://github.com/roomle-dev/roomle-ui/commit/6391c01))
17
+ * Merge branch 'master' into chore/hi-examples ([0db95b3](https://github.com/roomle-dev/roomle-ui/commit/0db95b3))
18
+ * Merge branch 'master' into chore/hi-examples ([e6127b8](https://github.com/roomle-dev/roomle-ui/commit/e6127b8))
19
+ * Merge branch 'master' into chore/tidy-up-glue-logic-api ([d1db7d2](https://github.com/roomle-dev/roomle-ui/commit/d1db7d2))
20
+ * Merge branch 'master' into chore/tidy-up-glue-logic-api ([e2e695a](https://github.com/roomle-dev/roomle-ui/commit/e2e695a))
21
+ * Merge branch 'master' into chore/tidy-up-glue-logic-api ([febfa52](https://github.com/roomle-dev/roomle-ui/commit/febfa52))
22
+ * Merge branch 'master' into docs/add-migration-guides-RML-15708 ([3a37b2f](https://github.com/roomle-dev/roomle-ui/commit/3a37b2f))
23
+ * Merge branch 'master' into docs/add-migration-guides-RML-15708 ([a9cd472](https://github.com/roomle-dev/roomle-ui/commit/a9cd472))
24
+ * Merge branch 'master' into docs/add-migration-guides-RML-15708 ([e65dd8f](https://github.com/roomle-dev/roomle-ui/commit/e65dd8f))
25
+ * Merge branch 'master' into feat/2d-selection ([a3db494](https://github.com/roomle-dev/roomle-ui/commit/a3db494))
26
+ * Merge branch 'master' into feat/async-group-calculation ([51a59ef](https://github.com/roomle-dev/roomle-ui/commit/51a59ef))
27
+ * Merge branch 'master' into feat/async-group-calculation ([dfe6040](https://github.com/roomle-dev/roomle-ui/commit/dfe6040))
28
+ * Merge branch 'master' into feat/async-group-calculation ([2d04751](https://github.com/roomle-dev/roomle-ui/commit/2d04751))
29
+ * Merge branch 'master' into feat/async-group-calculation ([27b5541](https://github.com/roomle-dev/roomle-ui/commit/27b5541))
30
+ * Merge branch 'master' into feat/build-step-examples-RML-15712 ([26fb23d](https://github.com/roomle-dev/roomle-ui/commit/26fb23d))
31
+ * Merge branch 'master' into feat/delete-module ([f06bca2](https://github.com/roomle-dev/roomle-ui/commit/f06bca2))
3
32
  * Merge branch 'master' into feat/delete-sub-article ([fb4fd0f](https://github.com/roomle-dev/roomle-ui/commit/fb4fd0f))
4
33
  * Merge branch 'master' into feat/delete-sub-article ([50fffe5](https://github.com/roomle-dev/roomle-ui/commit/50fffe5))
5
34
  * Merge branch 'master' into feat/delete-sub-article ([593daab](https://github.com/roomle-dev/roomle-ui/commit/593daab))
6
35
  * Merge branch 'master' into feat/delete-sub-article ([0993afb](https://github.com/roomle-dev/roomle-ui/commit/0993afb))
36
+ * Merge branch 'master' into feat/embedding-lib-exports ([faab691](https://github.com/roomle-dev/roomle-ui/commit/faab691))
37
+ * Merge branch 'master' into feat/embedding-lib-exports ([72ab3e0](https://github.com/roomle-dev/roomle-ui/commit/72ab3e0))
38
+ * Merge branch 'master' into feat/embedding-lib-exports-v2 ([03a5a3f](https://github.com/roomle-dev/roomle-ui/commit/03a5a3f))
39
+ * Merge branch 'master' into feat/foldable-sidebar-sections ([42b04b2](https://github.com/roomle-dev/roomle-ui/commit/42b04b2))
40
+ * Merge branch 'master' into feat/foldable-sidebar-sections ([e5e5ec9](https://github.com/roomle-dev/roomle-ui/commit/e5e5ec9))
41
+ * Merge branch 'master' into feat/hi-3d-export ([191d503](https://github.com/roomle-dev/roomle-ui/commit/191d503))
42
+ * Merge branch 'master' into feat/hi-3d-export ([459d4eb](https://github.com/roomle-dev/roomle-ui/commit/459d4eb))
43
+ * Merge branch 'master' into feat/hi-order-export ([696c03d](https://github.com/roomle-dev/roomle-ui/commit/696c03d))
44
+ * Merge branch 'master' into feat/hi-order-export ([2bf17e2](https://github.com/roomle-dev/roomle-ui/commit/2bf17e2))
45
+ * Merge branch 'master' into feat/hi-order-export ([637924c](https://github.com/roomle-dev/roomle-ui/commit/637924c))
46
+ * Merge branch 'master' into feat/hi-validate-attribute-options ([4abc759](https://github.com/roomle-dev/roomle-ui/commit/4abc759))
47
+ * Merge branch 'master' into feat/hi-validate-attribute-options ([2d77cfe](https://github.com/roomle-dev/roomle-ui/commit/2d77cfe))
48
+ * Merge branch 'master' into feat/hi-validate-attribute-options ([25cdf7d](https://github.com/roomle-dev/roomle-ui/commit/25cdf7d))
49
+ * Merge branch 'master' into feat/hi-validate-attribute-options ([47189a6](https://github.com/roomle-dev/roomle-ui/commit/47189a6))
50
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([eedd11e](https://github.com/roomle-dev/roomle-ui/commit/eedd11e))
51
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([2cc42ac](https://github.com/roomle-dev/roomle-ui/commit/2cc42ac))
52
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([be17f58](https://github.com/roomle-dev/roomle-ui/commit/be17f58))
53
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([445b103](https://github.com/roomle-dev/roomle-ui/commit/445b103))
54
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([139086b](https://github.com/roomle-dev/roomle-ui/commit/139086b))
55
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([bb14505](https://github.com/roomle-dev/roomle-ui/commit/bb14505))
56
+ * Merge branch 'master' into feat/integrate-types-qa-into-ci-RML-15421 ([3bfdd2a](https://github.com/roomle-dev/roomle-ui/commit/3bfdd2a))
57
+ * Merge branch 'master' into feat/no-reset-camera-on-switch-to-3d ([febd455](https://github.com/roomle-dev/roomle-ui/commit/febd455))
7
58
  * Merge branch 'master' into feat/product-thumbnails--generate ([352173e](https://github.com/roomle-dev/roomle-ui/commit/352173e))
8
59
  * Merge branch 'master' into feat/product-thumbnails--generate ([b66b40b](https://github.com/roomle-dev/roomle-ui/commit/b66b40b))
60
+ * Merge branch 'master' into feat/right-click-pan ([d04956c](https://github.com/roomle-dev/roomle-ui/commit/d04956c))
61
+ * Merge branch 'master' into feat/right-click-pan ([f5c799e](https://github.com/roomle-dev/roomle-ui/commit/f5c799e))
62
+ * Merge branch 'master' into feat/right-click-pan ([2ca7c64](https://github.com/roomle-dev/roomle-ui/commit/2ca7c64))
63
+ * Merge branch 'master' into feat/right-click-pan ([9f27de5](https://github.com/roomle-dev/roomle-ui/commit/9f27de5))
64
+ * Merge branch 'master' into feat/right-click-pan ([4aa28af](https://github.com/roomle-dev/roomle-ui/commit/4aa28af))
65
+ * Merge branch 'master' into feat/swap-element-condition ([1c838af](https://github.com/roomle-dev/roomle-ui/commit/1c838af))
66
+ * Merge branch 'master' into feat/swap-element-condition ([eee9d2d](https://github.com/roomle-dev/roomle-ui/commit/eee9d2d))
67
+ * Merge branch 'master' into feat/types-qa-fresh-RML-15338 ([846d8bf](https://github.com/roomle-dev/roomle-ui/commit/846d8bf))
68
+ * Merge branch 'master' into feat/types-qa-fresh-RML-15338 ([7ff00d8](https://github.com/roomle-dev/roomle-ui/commit/7ff00d8))
69
+ * Merge branch 'master' into feat/types-qa-fresh-RML-15338 ([6c9ea1e](https://github.com/roomle-dev/roomle-ui/commit/6c9ea1e))
70
+ * Merge branch 'master' into feat/types-qa-fresh-RML-15338 ([94a73ec](https://github.com/roomle-dev/roomle-ui/commit/94a73ec))
71
+ * Merge branch 'master' into feat/wildcard-whitelisting-RML-15492 ([c7ed01f](https://github.com/roomle-dev/roomle-ui/commit/c7ed01f))
72
+ * Merge branch 'master' into feat/wildcard-whitelisting-RML-15492 ([8acf584](https://github.com/roomle-dev/roomle-ui/commit/8acf584))
73
+ * Merge branch 'master' into fix/allow-custom-supademo-tuts ([e63bba0](https://github.com/roomle-dev/roomle-ui/commit/e63bba0))
74
+ * Merge branch 'master' into fix/allow-custom-supademo-tuts ([e7024a6](https://github.com/roomle-dev/roomle-ui/commit/e7024a6))
75
+ * Merge branch 'master' into fix/broken-examples-build-RML-15843 ([6cdfe1c](https://github.com/roomle-dev/roomle-ui/commit/6cdfe1c))
76
+ * Merge branch 'master' into fix/catalog-l1-sort-RML-15596 ([5a88077](https://github.com/roomle-dev/roomle-ui/commit/5a88077))
77
+ * Merge branch 'master' into fix/catalog-l1-sort-RML-15596 ([5a2e5f1](https://github.com/roomle-dev/roomle-ui/commit/5a2e5f1))
78
+ * Merge branch 'master' into fix/delete-preview-component ([e388c88](https://github.com/roomle-dev/roomle-ui/commit/e388c88))
79
+ * Merge branch 'master' into fix/delete-preview-component ([c7c7f20](https://github.com/roomle-dev/roomle-ui/commit/c7c7f20))
80
+ * Merge branch 'master' into fix/drag-configurable-object ([328d22b](https://github.com/roomle-dev/roomle-ui/commit/328d22b))
81
+ * Merge branch 'master' into fix/exception ([b1bdcec](https://github.com/roomle-dev/roomle-ui/commit/b1bdcec))
82
+ * Merge branch 'master' into fix/hi-materials ([ca50500](https://github.com/roomle-dev/roomle-ui/commit/ca50500))
83
+ * Merge branch 'master' into fix/missing-labels ([2f8ff97](https://github.com/roomle-dev/roomle-ui/commit/2f8ff97))
84
+ * Merge branch 'master' into fix/mobile-keyboard-ux--rotation-test ([1ca62a5](https://github.com/roomle-dev/roomle-ui/commit/1ca62a5))
85
+ * Merge branch 'master' into fix/mobile-keyboard-ux--rotation-test ([5d7e15c](https://github.com/roomle-dev/roomle-ui/commit/5d7e15c))
86
+ * Merge branch 'master' into fix/mobile-keyboard-ux--rotation-test ([94de923](https://github.com/roomle-dev/roomle-ui/commit/94de923))
87
+ * Merge branch 'master' into fix/mobile-keyboard-ux--rotation-test ([b8333ec](https://github.com/roomle-dev/roomle-ui/commit/b8333ec))
88
+ * Merge branch 'master' into fix/mobile-keyboard-ux--rotation-test ([53a72c8](https://github.com/roomle-dev/roomle-ui/commit/53a72c8))
89
+ * Merge branch 'master' into fix/mobile-rotation-input-detection ([a1f7333](https://github.com/roomle-dev/roomle-ui/commit/a1f7333))
90
+ * Merge branch 'master' into fix/mobile-rotation-input-detection ([811e52c](https://github.com/roomle-dev/roomle-ui/commit/811e52c))
91
+ * Merge branch 'master' into fix/multi-seelction ([15b73aa](https://github.com/roomle-dev/roomle-ui/commit/15b73aa))
92
+ * Merge branch 'master' into fix/multi-seelction ([d909b84](https://github.com/roomle-dev/roomle-ui/commit/d909b84))
93
+ * Merge branch 'master' into fix/multi-seelction ([560e13a](https://github.com/roomle-dev/roomle-ui/commit/560e13a))
94
+ * Merge branch 'master' into fix/no-camera-change-when-measuring ([735c371](https://github.com/roomle-dev/roomle-ui/commit/735c371))
95
+ * Merge branch 'master' into fix/no-camera-change-when-measuring ([7dbc4bd](https://github.com/roomle-dev/roomle-ui/commit/7dbc4bd))
96
+ * Merge branch 'master' into fix/no-camera-change-when-measuring ([ff500fc](https://github.com/roomle-dev/roomle-ui/commit/ff500fc))
97
+ * Merge branch 'master' into fix/sdk-build ([c4b861e](https://github.com/roomle-dev/roomle-ui/commit/c4b861e))
98
+ * Merge branch 'master' into fix/sidebar-content-height ([9c9e983](https://github.com/roomle-dev/roomle-ui/commit/9c9e983))
9
99
  * Merge branch 'master' into fix/submodule-rotation-fixes ([36d8b49](https://github.com/roomle-dev/roomle-ui/commit/36d8b49))
100
+ * Merge branch 'master' into fix/undo-wall-material-changes ([f2a543f](https://github.com/roomle-dev/roomle-ui/commit/f2a543f))
101
+ * Merge branch 'master' into fix/undo-wall-material-changes ([bfbeaeb](https://github.com/roomle-dev/roomle-ui/commit/bfbeaeb))
102
+ * Merge branch 'master' into refactor/build-types--dogfood ([9beb119](https://github.com/roomle-dev/roomle-ui/commit/9beb119))
103
+ * Merge branch 'master' into refactor/build-types--dogfood ([cf98072](https://github.com/roomle-dev/roomle-ui/commit/cf98072))
104
+ * Merge branch 'master' into refactor/build-types--dogfood ([45ac4d5](https://github.com/roomle-dev/roomle-ui/commit/45ac4d5))
105
+ * Merge branch 'master' into refactor/place-order ([ca42890](https://github.com/roomle-dev/roomle-ui/commit/ca42890))
106
+ * Merge branch 'master' into refactor/place-order ([3b3d844](https://github.com/roomle-dev/roomle-ui/commit/3b3d844))
107
+ * Merge branch 'master' into refactor/place-order ([502b876](https://github.com/roomle-dev/roomle-ui/commit/502b876))
108
+ * Merge branch 'master' into style/change-show-more-style ([3cae6db](https://github.com/roomle-dev/roomle-ui/commit/3cae6db))
109
+ * Merge branch 'master' into style/sidebar-action-button-redesign ([be917e4](https://github.com/roomle-dev/roomle-ui/commit/be917e4))
110
+ * Merge branch 'master' into style/sidebar-action-button-redesign ([964a237](https://github.com/roomle-dev/roomle-ui/commit/964a237))
111
+ * Merge branch 'master' into style/sidebar-action-button-redesign ([e708b81](https://github.com/roomle-dev/roomle-ui/commit/e708b81))
112
+ * Merge branch 'master' into style/sidebar-action-button-redesign ([286475b](https://github.com/roomle-dev/roomle-ui/commit/286475b))
113
+ * Merge branch 'master' into test/changing-breakpoints-in-js ([e60f5ae](https://github.com/roomle-dev/roomle-ui/commit/e60f5ae))
114
+ * Merge branch 'master' into test/changing-breakpoints-in-js ([5b2d334](https://github.com/roomle-dev/roomle-ui/commit/5b2d334))
115
+ * Merge branch 'master' into test/changing-breakpoints-in-js ([4d21438](https://github.com/roomle-dev/roomle-ui/commit/4d21438))
116
+ * Merge branch 'master' into upgraded-by-ci/core-2.65.0 ([bf3e963](https://github.com/roomle-dev/roomle-ui/commit/bf3e963))
117
+ * Merge branch 'refactor/place-order' of github.com:roomle-dev/roomle-ui into refactor/place-order ([c4a8c47](https://github.com/roomle-dev/roomle-ui/commit/c4a8c47))
118
+ * Merge branch 'test/changing-breakpoints-in-js' of github.com:roomle-dev/roomle-ui into test/changing ([ae83489](https://github.com/roomle-dev/roomle-ui/commit/ae83489))
119
+ * Merge pull request #2059 from roomle-dev/feat/wildcard-whitelisting-RML-15492 ([91bf88d](https://github.com/roomle-dev/roomle-ui/commit/91bf88d)), closes [#2059](https://github.com/roomle-dev/roomle-ui/issues/2059)
120
+ * Merge pull request #2062 from roomle-dev/fix/missing-labels ([052dca0](https://github.com/roomle-dev/roomle-ui/commit/052dca0)), closes [#2062](https://github.com/roomle-dev/roomle-ui/issues/2062)
121
+ * Merge pull request #2064 from roomle-dev/style/change-show-more-style ([9481890](https://github.com/roomle-dev/roomle-ui/commit/9481890)), closes [#2064](https://github.com/roomle-dev/roomle-ui/issues/2064)
122
+ * Merge pull request #2067 from roomle-dev/feat/delete-module ([4c27f5f](https://github.com/roomle-dev/roomle-ui/commit/4c27f5f)), closes [#2067](https://github.com/roomle-dev/roomle-ui/issues/2067)
123
+ * Merge pull request #2071 from roomle-dev/fix/mobile-keyboard-ux--rotation-test ([508ebb2](https://github.com/roomle-dev/roomle-ui/commit/508ebb2)), closes [#2071](https://github.com/roomle-dev/roomle-ui/issues/2071)
124
+ * Merge pull request #2074 from roomle-dev/docs/readme ([3753a33](https://github.com/roomle-dev/roomle-ui/commit/3753a33)), closes [#2074](https://github.com/roomle-dev/roomle-ui/issues/2074)
125
+ * Merge pull request #2075 from roomle-dev/feat/no-reset-camera-on-switch-to-3d ([aa377bc](https://github.com/roomle-dev/roomle-ui/commit/aa377bc)), closes [#2075](https://github.com/roomle-dev/roomle-ui/issues/2075)
126
+ * Merge pull request #2076 from roomle-dev/refactor/build-types--dogfood ([644c2fa](https://github.com/roomle-dev/roomle-ui/commit/644c2fa)), closes [#2076](https://github.com/roomle-dev/roomle-ui/issues/2076)
127
+ * Merge pull request #2077 from roomle-dev/fix/update-oc-scripts-domain-models ([d86ebb1](https://github.com/roomle-dev/roomle-ui/commit/d86ebb1)), closes [#2077](https://github.com/roomle-dev/roomle-ui/issues/2077)
128
+ * Merge pull request #2078 from roomle-dev/fix/hi-single-object-configurator ([710fedc](https://github.com/roomle-dev/roomle-ui/commit/710fedc)), closes [#2078](https://github.com/roomle-dev/roomle-ui/issues/2078)
129
+ * Merge pull request #2079 from roomle-dev/feat/2d-selection ([75290fd](https://github.com/roomle-dev/roomle-ui/commit/75290fd)), closes [#2079](https://github.com/roomle-dev/roomle-ui/issues/2079)
130
+ * Merge pull request #2080 from roomle-dev/feat/foldable-sidebar-sections ([34a5712](https://github.com/roomle-dev/roomle-ui/commit/34a5712)), closes [#2080](https://github.com/roomle-dev/roomle-ui/issues/2080)
131
+ * Merge pull request #2081 from roomle-dev/feat/right-click-pan ([2cf28f2](https://github.com/roomle-dev/roomle-ui/commit/2cf28f2)), closes [#2081](https://github.com/roomle-dev/roomle-ui/issues/2081)
132
+ * Merge pull request #2082 from roomle-dev/fix/update-add-subarticles-logic ([ce01a4c](https://github.com/roomle-dev/roomle-ui/commit/ce01a4c)), closes [#2082](https://github.com/roomle-dev/roomle-ui/issues/2082)
133
+ * Merge pull request #2084 from roomle-dev/style/sidebar-action-button-redesign ([a6092f7](https://github.com/roomle-dev/roomle-ui/commit/a6092f7)), closes [#2084](https://github.com/roomle-dev/roomle-ui/issues/2084)
134
+ * Merge pull request #2085 from roomle-dev/fix/no-camera-change-when-measuring ([e5dfab9](https://github.com/roomle-dev/roomle-ui/commit/e5dfab9)), closes [#2085](https://github.com/roomle-dev/roomle-ui/issues/2085)
135
+ * Merge pull request #2086 from roomle-dev/fix/delete-preview-component ([db2c032](https://github.com/roomle-dev/roomle-ui/commit/db2c032)), closes [#2086](https://github.com/roomle-dev/roomle-ui/issues/2086)
136
+ * Merge pull request #2087 from roomle-dev/feat/core-update ([19c06f5](https://github.com/roomle-dev/roomle-ui/commit/19c06f5)), closes [#2087](https://github.com/roomle-dev/roomle-ui/issues/2087)
137
+ * Merge pull request #2088 from roomle-dev/fix/embedding-alias ([04e0f5d](https://github.com/roomle-dev/roomle-ui/commit/04e0f5d)), closes [#2088](https://github.com/roomle-dev/roomle-ui/issues/2088)
138
+ * Merge pull request #2089 from roomle-dev/fix/catalog-l1-sort-RML-15596 ([8b00ff0](https://github.com/roomle-dev/roomle-ui/commit/8b00ff0)), closes [#2089](https://github.com/roomle-dev/roomle-ui/issues/2089)
139
+ * Merge pull request #2090 from roomle-dev/feat/types-qa-fresh-RML-15338 ([16423bd](https://github.com/roomle-dev/roomle-ui/commit/16423bd)), closes [#2090](https://github.com/roomle-dev/roomle-ui/issues/2090)
140
+ * Merge pull request #2091 from roomle-dev/fix/sidebar-content-height ([37a7b5f](https://github.com/roomle-dev/roomle-ui/commit/37a7b5f)), closes [#2091](https://github.com/roomle-dev/roomle-ui/issues/2091)
141
+ * Merge pull request #2092 from roomle-dev/chore/hi-examples ([db481dc](https://github.com/roomle-dev/roomle-ui/commit/db481dc)), closes [#2092](https://github.com/roomle-dev/roomle-ui/issues/2092)
142
+ * Merge pull request #2093 from roomle-dev/upgraded-by-ci/core-2.65.0 ([e2acad3](https://github.com/roomle-dev/roomle-ui/commit/e2acad3)), closes [#2093](https://github.com/roomle-dev/roomle-ui/issues/2093)
143
+ * Merge pull request #2094 from roomle-dev/upgraded-by-ci/core-2.66.0-alpha.1 ([3e1031b](https://github.com/roomle-dev/roomle-ui/commit/3e1031b)), closes [#2094](https://github.com/roomle-dev/roomle-ui/issues/2094)
144
+ * Merge pull request #2095 from roomle-dev/fix/hi-sub-article-thumbnail ([0839f56](https://github.com/roomle-dev/roomle-ui/commit/0839f56)), closes [#2095](https://github.com/roomle-dev/roomle-ui/issues/2095)
145
+ * Merge pull request #2096 from roomle-dev/fix/hi-materials ([e1946aa](https://github.com/roomle-dev/roomle-ui/commit/e1946aa)), closes [#2096](https://github.com/roomle-dev/roomle-ui/issues/2096)
146
+ * Merge pull request #2097 from roomle-dev/fix/drag-configurable-object ([53a873d](https://github.com/roomle-dev/roomle-ui/commit/53a873d)), closes [#2097](https://github.com/roomle-dev/roomle-ui/issues/2097)
147
+ * Merge pull request #2098 from roomle-dev/feat/build-step-examples-RML-15712 ([ffaf9e2](https://github.com/roomle-dev/roomle-ui/commit/ffaf9e2)), closes [#2098](https://github.com/roomle-dev/roomle-ui/issues/2098)
148
+ * Merge pull request #2099 from roomle-dev/ci/remove-oxlint-linux-dependency ([ed911cb](https://github.com/roomle-dev/roomle-ui/commit/ed911cb)), closes [#2099](https://github.com/roomle-dev/roomle-ui/issues/2099)
149
+ * Merge pull request #2100 from roomle-dev/fix/undo-wall-material-changes ([0e79a19](https://github.com/roomle-dev/roomle-ui/commit/0e79a19)), closes [#2100](https://github.com/roomle-dev/roomle-ui/issues/2100)
150
+ * Merge pull request #2101 from roomle-dev/feat/hi-order-export ([3d8bef3](https://github.com/roomle-dev/roomle-ui/commit/3d8bef3)), closes [#2101](https://github.com/roomle-dev/roomle-ui/issues/2101)
151
+ * Merge pull request #2102 from roomle-dev/feat/integrate-types-qa-into-ci-RML-15421 ([ba5555a](https://github.com/roomle-dev/roomle-ui/commit/ba5555a)), closes [#2102](https://github.com/roomle-dev/roomle-ui/issues/2102)
152
+ * Merge pull request #2103 from roomle-dev/upgraded-by-ci/core-2.66.0-alpha.2 ([6ece73e](https://github.com/roomle-dev/roomle-ui/commit/6ece73e)), closes [#2103](https://github.com/roomle-dev/roomle-ui/issues/2103)
153
+ * Merge pull request #2106 from roomle-dev/upgraded-by-ci/core-2.66.0-alpha.3 ([02a575d](https://github.com/roomle-dev/roomle-ui/commit/02a575d)), closes [#2106](https://github.com/roomle-dev/roomle-ui/issues/2106)
154
+ * Merge pull request #2107 from roomle-dev/upgraded-by-ci/core-2.66.0 ([416b94b](https://github.com/roomle-dev/roomle-ui/commit/416b94b)), closes [#2107](https://github.com/roomle-dev/roomle-ui/issues/2107)
155
+ * Merge pull request #2110 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.1 ([94fac39](https://github.com/roomle-dev/roomle-ui/commit/94fac39)), closes [#2110](https://github.com/roomle-dev/roomle-ui/issues/2110)
156
+ * Merge pull request #2111 from roomle-dev/chore/tidy-up-glue-logic-api ([d51e83a](https://github.com/roomle-dev/roomle-ui/commit/d51e83a)), closes [#2111](https://github.com/roomle-dev/roomle-ui/issues/2111)
157
+ * Merge pull request #2112 from roomle-dev/feat/hi-validate-attribute-options ([0002459](https://github.com/roomle-dev/roomle-ui/commit/0002459)), closes [#2112](https://github.com/roomle-dev/roomle-ui/issues/2112)
158
+ * Merge pull request #2113 from roomle-dev/feat/embedding-lib-exports-suggestion-2 ([7075571](https://github.com/roomle-dev/roomle-ui/commit/7075571)), closes [#2113](https://github.com/roomle-dev/roomle-ui/issues/2113)
159
+ * Merge pull request #2114 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.2 ([91afdc5](https://github.com/roomle-dev/roomle-ui/commit/91afdc5)), closes [#2114](https://github.com/roomle-dev/roomle-ui/issues/2114)
160
+ * Merge pull request #2115 from roomle-dev/chore/lint-errors ([4e34c28](https://github.com/roomle-dev/roomle-ui/commit/4e34c28)), closes [#2115](https://github.com/roomle-dev/roomle-ui/issues/2115)
161
+ * Merge pull request #2116 from roomle-dev/docs/add-migration-guides-RML-15708 ([b2b084b](https://github.com/roomle-dev/roomle-ui/commit/b2b084b)), closes [#2116](https://github.com/roomle-dev/roomle-ui/issues/2116)
162
+ * Merge pull request #2117 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.3 ([7be8480](https://github.com/roomle-dev/roomle-ui/commit/7be8480)), closes [#2117](https://github.com/roomle-dev/roomle-ui/issues/2117)
163
+ * Merge pull request #2118 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.4 ([7bb9f9d](https://github.com/roomle-dev/roomle-ui/commit/7bb9f9d)), closes [#2118](https://github.com/roomle-dev/roomle-ui/issues/2118)
164
+ * Merge pull request #2119 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.5 ([2b93abb](https://github.com/roomle-dev/roomle-ui/commit/2b93abb)), closes [#2119](https://github.com/roomle-dev/roomle-ui/issues/2119)
165
+ * Merge pull request #2120 from roomle-dev/fix/multi-seelction ([f0c0b53](https://github.com/roomle-dev/roomle-ui/commit/f0c0b53)), closes [#2120](https://github.com/roomle-dev/roomle-ui/issues/2120)
10
166
  * Merge pull request #2121 from roomle-dev/feat/delete-sub-article ([0cdc2fd](https://github.com/roomle-dev/roomle-ui/commit/0cdc2fd)), closes [#2121](https://github.com/roomle-dev/roomle-ui/issues/2121)
167
+ * Merge pull request #2122 from roomle-dev/feat/hf-hi-room-information ([093a236](https://github.com/roomle-dev/roomle-ui/commit/093a236)), closes [#2122](https://github.com/roomle-dev/roomle-ui/issues/2122)
168
+ * Merge pull request #2124 from roomle-dev/refactor/place-order ([76bdbb7](https://github.com/roomle-dev/roomle-ui/commit/76bdbb7)), closes [#2124](https://github.com/roomle-dev/roomle-ui/issues/2124)
169
+ * Merge pull request #2125 from roomle-dev/fix/oidc-auth-for-npm-RML-15792 ([62b9db4](https://github.com/roomle-dev/roomle-ui/commit/62b9db4)), closes [#2125](https://github.com/roomle-dev/roomle-ui/issues/2125)
170
+ * Merge pull request #2126 from roomle-dev/chore/package-lock ([915321d](https://github.com/roomle-dev/roomle-ui/commit/915321d)), closes [#2126](https://github.com/roomle-dev/roomle-ui/issues/2126)
171
+ * Merge pull request #2127 from roomle-dev/fix/exception ([203c752](https://github.com/roomle-dev/roomle-ui/commit/203c752)), closes [#2127](https://github.com/roomle-dev/roomle-ui/issues/2127)
172
+ * Merge pull request #2128 from roomle-dev/chore/fix-embedding-type-problems ([aed8a9a](https://github.com/roomle-dev/roomle-ui/commit/aed8a9a)), closes [#2128](https://github.com/roomle-dev/roomle-ui/issues/2128)
173
+ * Merge pull request #2129 from roomle-dev/fix/npm-release-with-oidc-token ([106d576](https://github.com/roomle-dev/roomle-ui/commit/106d576)), closes [#2129](https://github.com/roomle-dev/roomle-ui/issues/2129)
174
+ * Merge pull request #2130 from roomle-dev/feat/embedding-lib-exports-v2 ([517ccde](https://github.com/roomle-dev/roomle-ui/commit/517ccde)), closes [#2130](https://github.com/roomle-dev/roomle-ui/issues/2130)
175
+ * Merge pull request #2131 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.6 ([a15bdc0](https://github.com/roomle-dev/roomle-ui/commit/a15bdc0)), closes [#2131](https://github.com/roomle-dev/roomle-ui/issues/2131)
11
176
  * Merge pull request #2132 from roomle-dev/feat/product-thumbnails--generate ([424c46e](https://github.com/roomle-dev/roomle-ui/commit/424c46e)), closes [#2132](https://github.com/roomle-dev/roomle-ui/issues/2132)
177
+ * Merge pull request #2133 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.7 ([d590fed](https://github.com/roomle-dev/roomle-ui/commit/d590fed)), closes [#2133](https://github.com/roomle-dev/roomle-ui/issues/2133)
178
+ * Merge pull request #2134 from roomle-dev/feat/hi-3d-export ([4559b23](https://github.com/roomle-dev/roomle-ui/commit/4559b23)), closes [#2134](https://github.com/roomle-dev/roomle-ui/issues/2134)
179
+ * Merge pull request #2135 from roomle-dev/fix/allow-custom-supademo-tuts ([c60b54e](https://github.com/roomle-dev/roomle-ui/commit/c60b54e)), closes [#2135](https://github.com/roomle-dev/roomle-ui/issues/2135)
12
180
  * Merge pull request #2136 from roomle-dev/fix/submodule-rotation-fixes ([4a25d44](https://github.com/roomle-dev/roomle-ui/commit/4a25d44)), closes [#2136](https://github.com/roomle-dev/roomle-ui/issues/2136)
181
+ * Merge pull request #2137 from roomle-dev/fix/flying-menu-on-new-walls ([a7aec1e](https://github.com/roomle-dev/roomle-ui/commit/a7aec1e)), closes [#2137](https://github.com/roomle-dev/roomle-ui/issues/2137)
182
+ * Merge pull request #2139 from roomle-dev/fix/sdk-release ([36cecaf](https://github.com/roomle-dev/roomle-ui/commit/36cecaf)), closes [#2139](https://github.com/roomle-dev/roomle-ui/issues/2139)
183
+ * Merge pull request #2140 from roomle-dev/refactor/place-order ([6540d7c](https://github.com/roomle-dev/roomle-ui/commit/6540d7c)), closes [#2140](https://github.com/roomle-dev/roomle-ui/issues/2140)
184
+ * Merge pull request #2141 from roomle-dev/test/changing-breakpoints-in-js ([cb3bf43](https://github.com/roomle-dev/roomle-ui/commit/cb3bf43)), closes [#2141](https://github.com/roomle-dev/roomle-ui/issues/2141)
185
+ * Merge pull request #2142 from roomle-dev/fix/sdk-build ([8042d68](https://github.com/roomle-dev/roomle-ui/commit/8042d68)), closes [#2142](https://github.com/roomle-dev/roomle-ui/issues/2142)
13
186
  * Merge pull request #2143 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.8 ([7060b12](https://github.com/roomle-dev/roomle-ui/commit/7060b12)), closes [#2143](https://github.com/roomle-dev/roomle-ui/issues/2143)
14
187
  * Merge pull request #2144 from roomle-dev/cd/auth-google-cloud ([c6350b1](https://github.com/roomle-dev/roomle-ui/commit/c6350b1)), closes [#2144](https://github.com/roomle-dev/roomle-ui/issues/2144)
15
- * cd: authenticate on google cloud to upload changelog ([b9cd6af](https://github.com/roomle-dev/roomle-ui/commit/b9cd6af))
188
+ * Merge pull request #2145 from roomle-dev/feat/async-group-calculation ([0960ef3](https://github.com/roomle-dev/roomle-ui/commit/0960ef3)), closes [#2145](https://github.com/roomle-dev/roomle-ui/issues/2145)
189
+ * Merge pull request #2146 from roomle-dev/fix/duplicate-root-module ([7b7481d](https://github.com/roomle-dev/roomle-ui/commit/7b7481d)), closes [#2146](https://github.com/roomle-dev/roomle-ui/issues/2146)
190
+ * Merge pull request #2147 from roomle-dev/upgraded-by-ci/core-2.67.0-alpha.9 ([82c5ac4](https://github.com/roomle-dev/roomle-ui/commit/82c5ac4)), closes [#2147](https://github.com/roomle-dev/roomle-ui/issues/2147)
191
+ * Merge pull request #2148 from roomle-dev/feat/add-BCP-47-for-lang-codes ([5fb6eb1](https://github.com/roomle-dev/roomle-ui/commit/5fb6eb1)), closes [#2148](https://github.com/roomle-dev/roomle-ui/issues/2148)
192
+ * Merge pull request #2149 from roomle-dev/fix/broken-examples-build-RML-15843 ([261d809](https://github.com/roomle-dev/roomle-ui/commit/261d809)), closes [#2149](https://github.com/roomle-dev/roomle-ui/issues/2149)
193
+ * Merge pull request #2150 from roomle-dev/feat/swap-element-condition ([efd7375](https://github.com/roomle-dev/roomle-ui/commit/efd7375)), closes [#2150](https://github.com/roomle-dev/roomle-ui/issues/2150)
194
+ * Merge pull request #2151 from roomle-dev/fix/mobile-rotation-input-detection ([dad369a](https://github.com/roomle-dev/roomle-ui/commit/dad369a)), closes [#2151](https://github.com/roomle-dev/roomle-ui/issues/2151)
195
+ * Merge pull request #2152 from roomle-dev/upgraded-by-ci/core-2.67.0 ([76713b5](https://github.com/roomle-dev/roomle-ui/commit/76713b5)), closes [#2152](https://github.com/roomle-dev/roomle-ui/issues/2152)
196
+ * Merge pull request #2154 from roomle-dev/fix/update-ground-contact-shadow ([05a37aa](https://github.com/roomle-dev/roomle-ui/commit/05a37aa)), closes [#2154](https://github.com/roomle-dev/roomle-ui/issues/2154)
197
+ * Update packages/embedding-lib/README.md ([ca78974](https://github.com/roomle-dev/roomle-ui/commit/ca78974))
198
+ * Update packages/embedding-lib/src/examples/ext-catalog.ts ([3c8fd44](https://github.com/roomle-dev/roomle-ui/commit/3c8fd44))
199
+ * Update packages/embedding-lib/src/examples/utils/query-params.ts ([52177b2](https://github.com/roomle-dev/roomle-ui/commit/52177b2))
200
+ * Update packages/embedding-lib/src/examples/utils/server-url.ts ([ef6327d](https://github.com/roomle-dev/roomle-ui/commit/ef6327d))
201
+ * fix(SDK): add missing module resolution to types QA ([40fdd6b](https://github.com/roomle-dev/roomle-ui/commit/40fdd6b))
202
+ * fix: add Types QA check to package.json ([84637f6](https://github.com/roomle-dev/roomle-ui/commit/84637f6))
203
+ * fix(planner): add wall material changes to interaction handler ([f97e874](https://github.com/roomle-dev/roomle-ui/commit/f97e874))
204
+ * fix: AddAbsoluteDimensioning and dimensionings throw ERROR due to missing font family ([56c00d0](https://github.com/roomle-dev/roomle-ui/commit/56c00d0))
205
+ * fix: adjust the height of sidebar content if showing header ([72b0f55](https://github.com/roomle-dev/roomle-ui/commit/72b0f55))
206
+ * fix: all the stuff ([6691f13](https://github.com/roomle-dev/roomle-ui/commit/6691f13))
207
+ * fix: also format count correctly ([504edb4](https://github.com/roomle-dev/roomle-ui/commit/504edb4))
208
+ * fix: also set correct locale in Core, because Core also uses ISO 639-1 for language and nothing for ([8505372](https://github.com/roomle-dev/roomle-ui/commit/8505372))
209
+ * fix: also upload index.html of examples ([2dcfbb5](https://github.com/roomle-dev/roomle-ui/commit/2dcfbb5))
210
+ * fix: another critical bug found by CoPilot ([90496e5](https://github.com/roomle-dev/roomle-ui/commit/90496e5))
211
+ * fix: better check for manual rotation input ([3000303](https://github.com/roomle-dev/roomle-ui/commit/3000303))
212
+ * fix: bounding geometry for dragging plan object ([65bf415](https://github.com/roomle-dev/roomle-ui/commit/65bf415))
213
+ * fix: broken test ([f86350a](https://github.com/roomle-dev/roomle-ui/commit/f86350a))
214
+ * fix: bugs found through code review ([ec6e5a8](https://github.com/roomle-dev/roomle-ui/commit/ec6e5a8))
215
+ * fix: build script ([a7a0a9d](https://github.com/roomle-dev/roomle-ui/commit/a7a0a9d))
216
+ * fix: correct package-lock ([9549e7e](https://github.com/roomle-dev/roomle-ui/commit/9549e7e))
217
+ * fix: correct package-lock ([ed10ed7](https://github.com/roomle-dev/roomle-ui/commit/ed10ed7))
218
+ * fix: correct package.json ([3896adc](https://github.com/roomle-dev/roomle-ui/commit/3896adc))
219
+ * fix: correct package.json entries ([8158c41](https://github.com/roomle-dev/roomle-ui/commit/8158c41))
220
+ * fix: decorators working ([380b5c6](https://github.com/roomle-dev/roomle-ui/commit/380b5c6))
221
+ * fix: detect supademo link pattern, even with custom domain ([da52633](https://github.com/roomle-dev/roomle-ui/commit/da52633))
222
+ * fix: do not send hi callbacks for sub article preview groups ([974e47c](https://github.com/roomle-dev/roomle-ui/commit/974e47c))
223
+ * fix: do not show delete button if all root modules are selected ([eb0abcd](https://github.com/roomle-dev/roomle-ui/commit/eb0abcd))
224
+ * fix: dont render anything when multiselection ([a306899](https://github.com/roomle-dev/roomle-ui/commit/a306899))
225
+ * fix: duplicate one rotated root module from a group ([58d0d5b](https://github.com/roomle-dev/roomle-ui/commit/58d0d5b))
226
+ * fix: embedding alias configs ([2d8fba4](https://github.com/roomle-dev/roomle-ui/commit/2d8fba4))
227
+ * fix: failing playwright tests ([bf66eb4](https://github.com/roomle-dev/roomle-ui/commit/bf66eb4))
228
+ * fix: failing test ([2eca507](https://github.com/roomle-dev/roomle-ui/commit/2eca507))
229
+ * fix: failing test ([ddf58c5](https://github.com/roomle-dev/roomle-ui/commit/ddf58c5))
230
+ * fix: failing tests ([f1bcfdf](https://github.com/roomle-dev/roomle-ui/commit/f1bcfdf))
231
+ * fix: failing tests ([18b7f1a](https://github.com/roomle-dev/roomle-ui/commit/18b7f1a))
232
+ * fix: far plane clipping issue ([b1586c4](https://github.com/roomle-dev/roomle-ui/commit/b1586c4))
233
+ * fix: feedback changes ([fb9a27b](https://github.com/roomle-dev/roomle-ui/commit/fb9a27b))
234
+ * fix: feedback changes ([453d6e3](https://github.com/roomle-dev/roomle-ui/commit/453d6e3))
235
+ * fix: flying menu not showing on new wealls ([18dc57c](https://github.com/roomle-dev/roomle-ui/commit/18dc57c))
236
+ * fix: flying menu positioning bugs ([f47f1b2](https://github.com/roomle-dev/roomle-ui/commit/f47f1b2))
237
+ * fix: handle edge cases so unit tests do not break ([4367e01](https://github.com/roomle-dev/roomle-ui/commit/4367e01))
238
+ * fix: handle null return value from getSaveDataGroups ([b8d1cb8](https://github.com/roomle-dev/roomle-ui/commit/b8d1cb8))
239
+ * fix: import mergeGeometries instead of BufferGeometryUtils ([38aafc4](https://github.com/roomle-dev/roomle-ui/commit/38aafc4))
240
+ * fix: invoke deleteComponent for external sub article preview ([67551c9](https://github.com/roomle-dev/roomle-ui/commit/67551c9))
241
+ * fix: linting ([4ac2b10](https://github.com/roomle-dev/roomle-ui/commit/4ac2b10))
242
+ * fix: looks good now ([31bff51](https://github.com/roomle-dev/roomle-ui/commit/31bff51))
243
+ * fix: make it work ([c53c838](https://github.com/roomle-dev/roomle-ui/commit/c53c838))
244
+ * fix: make it work ([eb69783](https://github.com/roomle-dev/roomle-ui/commit/eb69783))
245
+ * fix: make it work with Vite HMR ([eb8bc40](https://github.com/roomle-dev/roomle-ui/commit/eb8bc40))
246
+ * fix: make tests work ([e84ea45](https://github.com/roomle-dev/roomle-ui/commit/e84ea45))
247
+ * fix: make things work ([8820bf2](https://github.com/roomle-dev/roomle-ui/commit/8820bf2))
248
+ * fix: mobile mode not exiting edit ([e7f8d9c](https://github.com/roomle-dev/roomle-ui/commit/e7f8d9c))
249
+ * fix: multiselection event data ([aedf480](https://github.com/roomle-dev/roomle-ui/commit/aedf480))
250
+ * fix(planner): not reset camera on drawing measurement line ([5df4155](https://github.com/roomle-dev/roomle-ui/commit/5df4155))
251
+ * fix: package lock ([7908b7a](https://github.com/roomle-dev/roomle-ui/commit/7908b7a))
252
+ * fix: pass room information to getOrderData ([0770775](https://github.com/roomle-dev/roomle-ui/commit/0770775))
253
+ * fix: potential fix for sdk builds ([1230f9c](https://github.com/roomle-dev/roomle-ui/commit/1230f9c))
254
+ * fix: re-enable render pass update of ground shadows ([dc1f037](https://github.com/roomle-dev/roomle-ui/commit/dc1f037))
255
+ * fix: remove deprecated material mapping (LIGNA hack) ([e372501](https://github.com/roomle-dev/roomle-ui/commit/e372501))
256
+ * fix: remove prettier errors ([ea1ac6c](https://github.com/roomle-dev/roomle-ui/commit/ea1ac6c))
257
+ * fix: remove type problems. Again we hit an issue with vite-plugin-dts and the underlying api-extract ([7cbda6c](https://github.com/roomle-dev/roomle-ui/commit/7cbda6c))
258
+ * fix: request order data with and without price ([4b07d02](https://github.com/roomle-dev/roomle-ui/commit/4b07d02))
259
+ * fix(SDK): resolution of common files ([5df3987](https://github.com/roomle-dev/roomle-ui/commit/5df3987))
260
+ * fix: save artifact ([5cb00da](https://github.com/roomle-dev/roomle-ui/commit/5cb00da))
261
+ * fix: sort order for single level catalog structure ([9c54cd1](https://github.com/roomle-dev/roomle-ui/commit/9c54cd1))
262
+ * fix: switch back to --global so that is runs properly ([a94abf1](https://github.com/roomle-dev/roomle-ui/commit/a94abf1))
263
+ * fix: test and lint should work ([2c84943](https://github.com/roomle-dev/roomle-ui/commit/2c84943))
264
+ * fix: thumbnail for hi sub article ([36f3025](https://github.com/roomle-dev/roomle-ui/commit/36f3025))
265
+ * fix: try to fix failing test ([d699130](https://github.com/roomle-dev/roomle-ui/commit/d699130))
266
+ * fix: try to fix flaky test ([765437c](https://github.com/roomle-dev/roomle-ui/commit/765437c))
267
+ * fix: try to fix git clone on CI ([077556b](https://github.com/roomle-dev/roomle-ui/commit/077556b))
268
+ * fix: try to make it run ([9c5c8f8](https://github.com/roomle-dev/roomle-ui/commit/9c5c8f8))
269
+ * fix: try to make it run ([c33d7dc](https://github.com/roomle-dev/roomle-ui/commit/c33d7dc))
270
+ * fix: try to make it work ([367daa2](https://github.com/roomle-dev/roomle-ui/commit/367daa2))
271
+ * fix: try to make it work on CI ([44bd05d](https://github.com/roomle-dev/roomle-ui/commit/44bd05d))
272
+ * fix: TS error ([644b696](https://github.com/roomle-dev/roomle-ui/commit/644b696))
273
+ * fix: type ([1ab8161](https://github.com/roomle-dev/roomle-ui/commit/1ab8161))
274
+ * fix: typescript errors ([d74fad4](https://github.com/roomle-dev/roomle-ui/commit/d74fad4))
275
+ * fix: typescript errors ([755afe6](https://github.com/roomle-dev/roomle-ui/commit/755afe6))
276
+ * fix: undefined property exception in configurator ([58f641b](https://github.com/roomle-dev/roomle-ui/commit/58f641b))
277
+ * fix: Updated CheckDropDownEntryKind enum by adding Invalid ([4be0934](https://github.com/roomle-dev/roomle-ui/commit/4be0934))
278
+ * fix: updated handling of subarticles ([53c99a2](https://github.com/roomle-dev/roomle-ui/commit/53c99a2))
279
+ * fix: use import.meta.glob to tell Vite what we import ([4e2f958](https://github.com/roomle-dev/roomle-ui/commit/4e2f958))
280
+ * fix: use relative paths ([c0908db](https://github.com/roomle-dev/roomle-ui/commit/c0908db))
281
+ * fix: verify whether recalculating a group actually returns an object ([8e278fc](https://github.com/roomle-dev/roomle-ui/commit/8e278fc))
282
+ * feat: add check for specific version ([448422d](https://github.com/roomle-dev/roomle-ui/commit/448422d))
283
+ * feat: add feature flag for local 3d export ([05da022](https://github.com/roomle-dev/roomle-ui/commit/05da022))
284
+ * feat: add type checking ([726d5c5](https://github.com/roomle-dev/roomle-ui/commit/726d5c5))
285
+ * feat: allow BCP-47 (e.g.: `de-CH`) for language-country/region codes for locale: ([73b20d8](https://github.com/roomle-dev/roomle-ui/commit/73b20d8))
286
+ * feat: check if it is necessary to switch back to planner after delete ([5c5e428](https://github.com/roomle-dev/roomle-ui/commit/5c5e428))
287
+ * feat: collapsible sidebar addons segments ([5d73a98](https://github.com/roomle-dev/roomle-ui/commit/5d73a98))
288
+ * feat: core api - isRootComponentOfChildObject ([9d048f4](https://github.com/roomle-dev/roomle-ui/commit/9d048f4))
289
+ * feat: core api rootModuleIds ([0917197](https://github.com/roomle-dev/roomle-ui/commit/0917197))
290
+ * feat: create a build step for examples ([d725c64](https://github.com/roomle-dev/roomle-ui/commit/d725c64))
291
+ * feat: default hi library callbacks ([3736bcb](https://github.com/roomle-dev/roomle-ui/commit/3736bcb))
16
292
  * feat: delete sub articles ([a475fe4](https://github.com/roomle-dev/roomle-ui/commit/a475fe4))
293
+ * feat: embedding lib hi exports ([0521bf8](https://github.com/roomle-dev/roomle-ui/commit/0521bf8))
294
+ * feat(planner): enable panning with right mouse click ([cb14b51](https://github.com/roomle-dev/roomle-ui/commit/cb14b51))
295
+ * feat: evaluate permissionToDeleteInIsolation for configurator mode ([57332a9](https://github.com/roomle-dev/roomle-ui/commit/57332a9))
296
+ * feat: flying menu condition "isSwapElementPossible" ([7c296d6](https://github.com/roomle-dev/roomle-ui/commit/7c296d6))
297
+ * feat: Hide the 'Swap' button in the product settings if swapping elements is not possible. ([e196731](https://github.com/roomle-dev/roomle-ui/commit/e196731))
17
298
  * feat: initial implementation of thumbnail viewer ([f32a06f](https://github.com/roomle-dev/roomle-ui/commit/f32a06f))
299
+ * feat: library localization ([e56dd7a](https://github.com/roomle-dev/roomle-ui/commit/e56dd7a))
300
+ * feat: lock group against any manipulation while group is being recalculated ([80130f1](https://github.com/roomle-dev/roomle-ui/commit/80130f1))
301
+ * feat: make break point adjustable ([b71e7c4](https://github.com/roomle-dev/roomle-ui/commit/b71e7c4))
302
+ * feat(planner): not reset camera when switching to 3d ([c053a16](https://github.com/roomle-dev/roomle-ui/commit/c053a16))
303
+ * feat(planner): not reset camera when switching to 3d ([2bc9f73](https://github.com/roomle-dev/roomle-ui/commit/2bc9f73))
304
+ * feat: optional hi order header for placeOrder and fetchPrice ([f050ee7](https://github.com/roomle-dev/roomle-ui/commit/f050ee7))
305
+ * feat: raycaster filter for 2d selection ([f325c47](https://github.com/roomle-dev/roomle-ui/commit/f325c47))
306
+ * feat: recalculate group asynchronously ([98bb900](https://github.com/roomle-dev/roomle-ui/commit/98bb900))
307
+ * feat: recalculate group asynchronously when deleting a sub-article ([fa08460](https://github.com/roomle-dev/roomle-ui/commit/fa08460))
308
+ * feat: Subdomain Wildcard Support for Domain Whitelisting ([a4c2c86](https://github.com/roomle-dev/roomle-ui/commit/a4c2c86))
309
+ * feat(core): upgrade to version 2.65.0-alpha.8 ([bb9d7b7](https://github.com/roomle-dev/roomle-ui/commit/bb9d7b7))
310
+ * feat(core): upgrade to version 2.65.0 ([e45dbea](https://github.com/roomle-dev/roomle-ui/commit/e45dbea))
311
+ * feat(core): upgrade to version 2.66.0-alpha.1 ([f24d03c](https://github.com/roomle-dev/roomle-ui/commit/f24d03c))
312
+ * feat(core): upgrade to version 2.66.0-alpha.2 ([28cdd2d](https://github.com/roomle-dev/roomle-ui/commit/28cdd2d))
313
+ * feat(core): upgrade to version 2.66.0-alpha.3 ([3de1d4a](https://github.com/roomle-dev/roomle-ui/commit/3de1d4a))
314
+ * feat(core): upgrade to version 2.66.0 ([da53848](https://github.com/roomle-dev/roomle-ui/commit/da53848))
315
+ * feat(core): upgrade to version 2.67.0-alpha.1 ([f8af01a](https://github.com/roomle-dev/roomle-ui/commit/f8af01a))
316
+ * feat(core): upgrade to version 2.67.0-alpha.2 ([eba64c3](https://github.com/roomle-dev/roomle-ui/commit/eba64c3))
317
+ * feat(core): upgrade to version 2.67.0-alpha.3 ([d2fe8b4](https://github.com/roomle-dev/roomle-ui/commit/d2fe8b4))
318
+ * feat(core): upgrade to version 2.67.0-alpha.4 ([f4f7e23](https://github.com/roomle-dev/roomle-ui/commit/f4f7e23))
319
+ * feat(core): upgrade to version 2.67.0-alpha.5 ([2282bfc](https://github.com/roomle-dev/roomle-ui/commit/2282bfc))
320
+ * feat(core): upgrade to version 2.67.0-alpha.6 ([223ea5e](https://github.com/roomle-dev/roomle-ui/commit/223ea5e))
321
+ * feat(core): upgrade to version 2.67.0-alpha.7 ([c0e5ce9](https://github.com/roomle-dev/roomle-ui/commit/c0e5ce9))
18
322
  * feat(core): upgrade to version 2.67.0-alpha.8 ([7818d62](https://github.com/roomle-dev/roomle-ui/commit/7818d62))
323
+ * feat(core): upgrade to version 2.67.0-alpha.9 ([d6b61d6](https://github.com/roomle-dev/roomle-ui/commit/d6b61d6))
324
+ * feat(core): upgrade to version 2.67.0 ([d03e544](https://github.com/roomle-dev/roomle-ui/commit/d03e544))
325
+ * feat: validate hi attribute options ([b948473](https://github.com/roomle-dev/roomle-ui/commit/b948473))
326
+ * chore: adapt failing tests ([3db206a](https://github.com/roomle-dev/roomle-ui/commit/3db206a))
327
+ * chore: adapt sdk build ([627012f](https://github.com/roomle-dev/roomle-ui/commit/627012f))
328
+ * chore: add better eslint rules ([316e1e2](https://github.com/roomle-dev/roomle-ui/commit/316e1e2))
329
+ * chore: add cross-env as devDependency, but had to do it manually because `@oxlint/linux-x64-gnu` bre ([88d912f](https://github.com/roomle-dev/roomle-ui/commit/88d912f))
330
+ * chore(SDK): add embedding lib hi path ([42a1fd1](https://github.com/roomle-dev/roomle-ui/commit/42a1fd1))
331
+ * chore: add env variable ([9fa5d1e](https://github.com/roomle-dev/roomle-ui/commit/9fa5d1e))
332
+ * chore: add missing lock file ([c344094](https://github.com/roomle-dev/roomle-ui/commit/c344094))
333
+ * chore: add oxlint rule ([37657d1](https://github.com/roomle-dev/roomle-ui/commit/37657d1))
334
+ * chore: add README.md ([0e6013f](https://github.com/roomle-dev/roomle-ui/commit/0e6013f))
19
335
  * chore: add tests ([bfe9b77](https://github.com/roomle-dev/roomle-ui/commit/bfe9b77))
336
+ * chore: add tests ([c82b0be](https://github.com/roomle-dev/roomle-ui/commit/c82b0be))
337
+ * chore: add things from code review ([51d5b2a](https://github.com/roomle-dev/roomle-ui/commit/51d5b2a))
338
+ * chore: add to the CI workflow ([e777ee6](https://github.com/roomle-dev/roomle-ui/commit/e777ee6))
339
+ * chore: adjust docs path ([6c2b018](https://github.com/roomle-dev/roomle-ui/commit/6c2b018))
340
+ * chore: adjust paths and so on ([14d3a6f](https://github.com/roomle-dev/roomle-ui/commit/14d3a6f))
341
+ * chore(code-review): adjust paths in docs as mentioned by CoPilot and Dash ([2b12b56](https://github.com/roomle-dev/roomle-ui/commit/2b12b56))
342
+ * chore: adjust to new structure that is needed due to PR2130: ([c9a3308](https://github.com/roomle-dev/roomle-ui/commit/c9a3308))
343
+ * chore: adjust to new stuff ([8cdbebf](https://github.com/roomle-dev/roomle-ui/commit/8cdbebf))
344
+ * chore: allow breaking change indicator in commit messages ([26a4b04](https://github.com/roomle-dev/roomle-ui/commit/26a4b04))
20
345
  * chore: allow dev over network ([1b5ad8e](https://github.com/roomle-dev/roomle-ui/commit/1b5ad8e))
346
+ * chore: another idea ([69da390](https://github.com/roomle-dev/roomle-ui/commit/69da390))
347
+ * chore: apply code review ([837f420](https://github.com/roomle-dev/roomle-ui/commit/837f420))
348
+ * chore(prettier): apply formatting ([3b9e2d9](https://github.com/roomle-dev/roomle-ui/commit/3b9e2d9))
349
+ * chore: apply review suggestions ([f3cf0b4](https://github.com/roomle-dev/roomle-ui/commit/f3cf0b4))
350
+ * chore(code-review): apply suggested changes ([0acb426](https://github.com/roomle-dev/roomle-ui/commit/0acb426))
351
+ * chore: apply suggestions from code review ([f6378a5](https://github.com/roomle-dev/roomle-ui/commit/f6378a5))
352
+ * chore: attempt build ([f144d75](https://github.com/roomle-dev/roomle-ui/commit/f144d75))
353
+ * chore: before AI ([107509c](https://github.com/roomle-dev/roomle-ui/commit/107509c))
354
+ * chore: better docs ([99daf2b](https://github.com/roomle-dev/roomle-ui/commit/99daf2b))
355
+ * chore: better docs ([8d3adbb](https://github.com/roomle-dev/roomle-ui/commit/8d3adbb))
356
+ * chore: better error handling ([b8391b7](https://github.com/roomle-dev/roomle-ui/commit/b8391b7))
357
+ * chore: cleanup ([1a393c4](https://github.com/roomle-dev/roomle-ui/commit/1a393c4))
21
358
  * chore: cleanup ([8d88a4f](https://github.com/roomle-dev/roomle-ui/commit/8d88a4f))
359
+ * chore: cleanup ([5186bc6](https://github.com/roomle-dev/roomle-ui/commit/5186bc6))
360
+ * chore: cleanup ([68b986b](https://github.com/roomle-dev/roomle-ui/commit/68b986b))
361
+ * chore: cleanup ([7386f5c](https://github.com/roomle-dev/roomle-ui/commit/7386f5c))
362
+ * chore: cleanup a bit ([544d7f5](https://github.com/roomle-dev/roomle-ui/commit/544d7f5))
363
+ * chore: cleanups ([c35bf32](https://github.com/roomle-dev/roomle-ui/commit/c35bf32))
364
+ * chore: code cleaning ([80586cf](https://github.com/roomle-dev/roomle-ui/commit/80586cf))
365
+ * chore: code cleaning ([56d9a9e](https://github.com/roomle-dev/roomle-ui/commit/56d9a9e))
366
+ * chore: code review ([0d79854](https://github.com/roomle-dev/roomle-ui/commit/0d79854))
367
+ * chore: code reviews suggestions ([3f864ff](https://github.com/roomle-dev/roomle-ui/commit/3f864ff))
368
+ * chore: commit before AI does stuff ([c873c5a](https://github.com/roomle-dev/roomle-ui/commit/c873c5a))
369
+ * chore: commit lint ([01d21f2](https://github.com/roomle-dev/roomle-ui/commit/01d21f2))
370
+ * chore: commit new package-lock ([f4bb8c1](https://github.com/roomle-dev/roomle-ui/commit/f4bb8c1))
371
+ * chore: copy in parallel ([94a4ebc](https://github.com/roomle-dev/roomle-ui/commit/94a4ebc))
372
+ * chore: correct formatting ([8c0db08](https://github.com/roomle-dev/roomle-ui/commit/8c0db08))
373
+ * chore: correct package-lock ([57e000b](https://github.com/roomle-dev/roomle-ui/commit/57e000b))
374
+ * chore: correct prettier ignore ([6ee7e6d](https://github.com/roomle-dev/roomle-ui/commit/6ee7e6d))
375
+ * chore: delete unneeded fonts since the text is render in the UI ([e99bfee](https://github.com/roomle-dev/roomle-ui/commit/e99bfee))
376
+ * chore: do not apply in e22 ([7365219](https://github.com/roomle-dev/roomle-ui/commit/7365219))
22
377
  * chore: do not hide rotation indicator when resizing window ([d8665c1](https://github.com/roomle-dev/roomle-ui/commit/d8665c1))
378
+ * chore: do some cleanup ([ebed6dc](https://github.com/roomle-dev/roomle-ui/commit/ebed6dc))
379
+ * chore: embedding-lib examples favicon ([bd74654](https://github.com/roomle-dev/roomle-ui/commit/bd74654))
380
+ * chore: export all types ([cdd65ad](https://github.com/roomle-dev/roomle-ui/commit/cdd65ad))
381
+ * chore: export all types ([5342cb7](https://github.com/roomle-dev/roomle-ui/commit/5342cb7))
382
+ * chore: feedback fixes, make whole section clickable ([50aff98](https://github.com/roomle-dev/roomle-ui/commit/50aff98))
23
383
  * chore: finishing up ([ad5b07c](https://github.com/roomle-dev/roomle-ui/commit/ad5b07c))
24
384
  * chore: fix android mobile keyboard disappeaering ([11650dd](https://github.com/roomle-dev/roomle-ui/commit/11650dd))
385
+ * chore: fix broken types ([62bde75](https://github.com/roomle-dev/roomle-ui/commit/62bde75))
386
+ * chore: fix embedding lint problems ([9921196](https://github.com/roomle-dev/roomle-ui/commit/9921196))
387
+ * chore: fix failing tests ([5e784f1](https://github.com/roomle-dev/roomle-ui/commit/5e784f1))
388
+ * chore: fix flakey test ([70ba151](https://github.com/roomle-dev/roomle-ui/commit/70ba151))
389
+ * chore: fix frontend build ([a7cd408](https://github.com/roomle-dev/roomle-ui/commit/a7cd408))
25
390
  * chore: fix import ([5d4bb95](https://github.com/roomle-dev/roomle-ui/commit/5d4bb95))
391
+ * chore: fix lint error ([7f63ea3](https://github.com/roomle-dev/roomle-ui/commit/7f63ea3))
392
+ * chore: fix rml asset type ([dbaafec](https://github.com/roomle-dev/roomle-ui/commit/dbaafec))
393
+ * chore: fix rml asset type ([87630f3](https://github.com/roomle-dev/roomle-ui/commit/87630f3))
394
+ * chore: fix ts ([e29d87f](https://github.com/roomle-dev/roomle-ui/commit/e29d87f))
395
+ * chore: fix type issue ([da701e3](https://github.com/roomle-dev/roomle-ui/commit/da701e3))
396
+ * chore: fix type issue ([e233a58](https://github.com/roomle-dev/roomle-ui/commit/e233a58))
26
397
  * chore: fix types ([e26cc4b](https://github.com/roomle-dev/roomle-ui/commit/e26cc4b))
398
+ * chore: fix typescript errors on build ([a77f136](https://github.com/roomle-dev/roomle-ui/commit/a77f136))
399
+ * chore: force mobile ([87d09e7](https://github.com/roomle-dev/roomle-ui/commit/87d09e7))
400
+ * chore: format manual exports ([435228e](https://github.com/roomle-dev/roomle-ui/commit/435228e))
401
+ * chore: format manual exports ([63d90f4](https://github.com/roomle-dev/roomle-ui/commit/63d90f4))
402
+ * chore: get git clone to work ([fc42fa1](https://github.com/roomle-dev/roomle-ui/commit/fc42fa1))
403
+ * chore: get tests working ([5351d20](https://github.com/roomle-dev/roomle-ui/commit/5351d20))
404
+ * chore: github copilot review suggestions ([f5c05d8](https://github.com/roomle-dev/roomle-ui/commit/f5c05d8))
405
+ * chore: give the function a more meaningful name ([45956d1](https://github.com/roomle-dev/roomle-ui/commit/45956d1))
406
+ * chore: hi order types and interfaces ([1333a8d](https://github.com/roomle-dev/roomle-ui/commit/1333a8d))
407
+ * chore: ignore ([69d82de](https://github.com/roomle-dev/roomle-ui/commit/69d82de))
408
+ * chore: improve naming ([b4ef027](https://github.com/roomle-dev/roomle-ui/commit/b4ef027))
409
+ * chore: initally collapse ([67fe9ab](https://github.com/roomle-dev/roomle-ui/commit/67fe9ab))
410
+ * chore: initial implementation ([c91ad7d](https://github.com/roomle-dev/roomle-ui/commit/c91ad7d))
411
+ * chore: lint ([e4f5f2a](https://github.com/roomle-dev/roomle-ui/commit/e4f5f2a))
412
+ * chore: lint ([441b65f](https://github.com/roomle-dev/roomle-ui/commit/441b65f))
413
+ * chore: lint ([30b583e](https://github.com/roomle-dev/roomle-ui/commit/30b583e))
414
+ * chore(wip): make it more correct ([f8196d6](https://github.com/roomle-dev/roomle-ui/commit/f8196d6))
415
+ * chore: make less changes ([b2115bf](https://github.com/roomle-dev/roomle-ui/commit/b2115bf))
27
416
  * chore: make manual input rotations not snap ([603a3f4](https://github.com/roomle-dev/roomle-ui/commit/603a3f4))
417
+ * chore: make the scrollbar smaller ([be4cb20](https://github.com/roomle-dev/roomle-ui/commit/be4cb20))
418
+ * chore: manually re-export ([c19ccf3](https://github.com/roomle-dev/roomle-ui/commit/c19ccf3))
419
+ * chore: manually re-export ([ee90594](https://github.com/roomle-dev/roomle-ui/commit/ee90594))
28
420
  * chore: merge master ([bb35c4c](https://github.com/roomle-dev/roomle-ui/commit/bb35c4c))
421
+ * chore: merge master ([43bb0bd](https://github.com/roomle-dev/roomle-ui/commit/43bb0bd))
422
+ * chore: merge master ([e9f662f](https://github.com/roomle-dev/roomle-ui/commit/e9f662f))
423
+ * chore: merge master ([adeeefb](https://github.com/roomle-dev/roomle-ui/commit/adeeefb))
424
+ * chore: merge master ([79c9fcd](https://github.com/roomle-dev/roomle-ui/commit/79c9fcd))
425
+ * chore: merge master ([4b091bd](https://github.com/roomle-dev/roomle-ui/commit/4b091bd))
426
+ * chore: merge master ([2321f6a](https://github.com/roomle-dev/roomle-ui/commit/2321f6a))
427
+ * chore: migrating more imports ([f35d832](https://github.com/roomle-dev/roomle-ui/commit/f35d832))
428
+ * chore: more cleanup ([0b4158f](https://github.com/roomle-dev/roomle-ui/commit/0b4158f))
429
+ * chore: more docs ([8a78f5c](https://github.com/roomle-dev/roomle-ui/commit/8a78f5c))
430
+ * chore: more tests ([95b7ab8](https://github.com/roomle-dev/roomle-ui/commit/95b7ab8))
431
+ * chore: more tests ([e8aed77](https://github.com/roomle-dev/roomle-ui/commit/e8aed77))
432
+ * chore: move actions into product settings info section ([0cc0bf3](https://github.com/roomle-dev/roomle-ui/commit/0cc0bf3))
433
+ * chore: move hi library request from examples to embedding-lib ([db2789b](https://github.com/roomle-dev/roomle-ui/commit/db2789b))
29
434
  * chore: move into own method ([99d3c80](https://github.com/roomle-dev/roomle-ui/commit/99d3c80))
435
+ * chore: move om requests from example to embedding-lib ([505cdf7](https://github.com/roomle-dev/roomle-ui/commit/505cdf7))
436
+ * chore: move out example.ts since it's not a demo ([adbe00d](https://github.com/roomle-dev/roomle-ui/commit/adbe00d))
30
437
  * chore: move some magic numbers into consts ([6ea46ea](https://github.com/roomle-dev/roomle-ui/commit/6ea46ea))
438
+ * chore: no implicit any for callback names ([17daed3](https://github.com/roomle-dev/roomle-ui/commit/17daed3))
439
+ * chore: only build SDK once ([6cbb599](https://github.com/roomle-dev/roomle-ui/commit/6cbb599))
440
+ * chore: only show collapse via prop ([780e50b](https://github.com/roomle-dev/roomle-ui/commit/780e50b))
441
+ * chore: prettier ([dc4a235](https://github.com/roomle-dev/roomle-ui/commit/dc4a235))
442
+ * chore: re-export the main classes ([123ac33](https://github.com/roomle-dev/roomle-ui/commit/123ac33))
443
+ * chore: reexport all stuff used in UI ([ae2e965](https://github.com/roomle-dev/roomle-ui/commit/ae2e965))
444
+ * chore: reexport all stuff used in UI ([757b7f6](https://github.com/roomle-dev/roomle-ui/commit/757b7f6))
445
+ * chore: refactor configs ([accded0](https://github.com/roomle-dev/roomle-ui/commit/accded0))
446
+ * chore: refactor configs ([f9e505d](https://github.com/roomle-dev/roomle-ui/commit/f9e505d))
447
+ * chore: remove aliases ([700bbee](https://github.com/roomle-dev/roomle-ui/commit/700bbee))
448
+ * chore: remove comments ([5342d02](https://github.com/roomle-dev/roomle-ui/commit/5342d02))
449
+ * chore: remove comments ([98a4f91](https://github.com/roomle-dev/roomle-ui/commit/98a4f91))
450
+ * chore: remove deprecated hi settings ([9ae82c2](https://github.com/roomle-dev/roomle-ui/commit/9ae82c2))
451
+ * chore: remove example codde ([e366b99](https://github.com/roomle-dev/roomle-ui/commit/e366b99))
452
+ * chore: remove fake root tag from sdk exports ([f03e017](https://github.com/roomle-dev/roomle-ui/commit/f03e017))
453
+ * chore: remove hack ([e438e1a](https://github.com/roomle-dev/roomle-ui/commit/e438e1a))
454
+ * chore: remove legacy builds ([68bfb74](https://github.com/roomle-dev/roomle-ui/commit/68bfb74))
455
+ * chore: remove lint errors ([7775e9f](https://github.com/roomle-dev/roomle-ui/commit/7775e9f))
456
+ * chore: remove logs errors ([10f5669](https://github.com/roomle-dev/roomle-ui/commit/10f5669))
457
+ * chore(code-review): remove out dated to do ([241ef52](https://github.com/roomle-dev/roomle-ui/commit/241ef52))
458
+ * chore: remove product rotation from drawer ([f091bad](https://github.com/roomle-dev/roomle-ui/commit/f091bad))
459
+ * chore: remove too much docs ([a2db53c](https://github.com/roomle-dev/roomle-ui/commit/a2db53c))
460
+ * chore: remove unnecessary assignment ([bd69b17](https://github.com/roomle-dev/roomle-ui/commit/bd69b17))
461
+ * chore: remove unused variable ([21ebede](https://github.com/roomle-dev/roomle-ui/commit/21ebede))
462
+ * chore: renaming hi-requests ([ccaba9c](https://github.com/roomle-dev/roomle-ui/commit/ccaba9c))
463
+ * chore: run eslint ([10ee96d](https://github.com/roomle-dev/roomle-ui/commit/10ee96d))
464
+ * chore: set entrypoint ([3488cb5](https://github.com/roomle-dev/roomle-ui/commit/3488cb5))
465
+ * chore: some logs ([8b17a23](https://github.com/roomle-dev/roomle-ui/commit/8b17a23))
466
+ * chore: testing ([1bfe6a4](https://github.com/roomle-dev/roomle-ui/commit/1bfe6a4))
467
+ * chore: tidy-up and adapt unit test ([4576061](https://github.com/roomle-dev/roomle-ui/commit/4576061))
468
+ * chore: tidy-up github copilot review suggestions ([39ba561](https://github.com/roomle-dev/roomle-ui/commit/39ba561))
469
+ * chore: tidy-up Homage Intelligence examples ([5c51898](https://github.com/roomle-dev/roomle-ui/commit/5c51898))
470
+ * chore: try more fine grained git command ([f507d1b](https://github.com/roomle-dev/roomle-ui/commit/f507d1b))
471
+ * chore: try responsive keyboard open ([12d8856](https://github.com/roomle-dev/roomle-ui/commit/12d8856))
472
+ * chore: update docs ([03453c2](https://github.com/roomle-dev/roomle-ui/commit/03453c2))
473
+ * chore(wip): update formatting ([5feebc7](https://github.com/roomle-dev/roomle-ui/commit/5feebc7))
31
474
  * chore: update loco ([17ca8e6](https://github.com/roomle-dev/roomle-ui/commit/17ca8e6))
475
+ * chore: update packagejson ([0957fcb](https://github.com/roomle-dev/roomle-ui/commit/0957fcb))
476
+ * chore: update packages ([cf9f3e1](https://github.com/roomle-dev/roomle-ui/commit/cf9f3e1))
477
+ * chore: update readme ([08cb3d5](https://github.com/roomle-dev/roomle-ui/commit/08cb3d5))
478
+ * chore: update sdk readme ([39ac9fc](https://github.com/roomle-dev/roomle-ui/commit/39ac9fc))
479
+ * chore: update show-less style ([529a5ab](https://github.com/roomle-dev/roomle-ui/commit/529a5ab))
480
+ * chore: update translations ([365ca58](https://github.com/roomle-dev/roomle-ui/commit/365ca58))
481
+ * chore: upgrade node to 24.12.0, npm to 11.6.2, semantic-release to 25.0.2 ([ac082d3](https://github.com/roomle-dev/roomle-ui/commit/ac082d3))
482
+ * chore: use a more random value than 1024px so that it does not break so easily accidentally ([39c4faa](https://github.com/roomle-dev/roomle-ui/commit/39c4faa))
483
+ * chore: use new setupHi ([5087543](https://github.com/roomle-dev/roomle-ui/commit/5087543))
32
484
  * chore: working generated thumbs ([ffc2a51](https://github.com/roomle-dev/roomle-ui/commit/ffc2a51))
33
485
  * chore: working refactor ([98995cd](https://github.com/roomle-dev/roomle-ui/commit/98995cd))
34
- * fix: dont render anything when multiselection ([a306899](https://github.com/roomle-dev/roomle-ui/commit/a306899))
35
- * fix: far plane clipping issue ([b1586c4](https://github.com/roomle-dev/roomle-ui/commit/b1586c4))
36
- * fix: feedback changes ([fb9a27b](https://github.com/roomle-dev/roomle-ui/commit/fb9a27b))
37
- * fix: feedback changes ([453d6e3](https://github.com/roomle-dev/roomle-ui/commit/453d6e3))
38
- * fix: linting ([4ac2b10](https://github.com/roomle-dev/roomle-ui/commit/4ac2b10))
39
- * fix: mobile mode not exiting edit ([e7f8d9c](https://github.com/roomle-dev/roomle-ui/commit/e7f8d9c))
40
- * style: remove focus style on rotation input ([9067364](https://github.com/roomle-dev/roomle-ui/commit/9067364))
486
+ * refactor: code review suggestions ([afb014e](https://github.com/roomle-dev/roomle-ui/commit/afb014e))
487
+ * refactor: delete external object sub module ([3df933f](https://github.com/roomle-dev/roomle-ui/commit/3df933f))
488
+ * refactor: element selection fetchPayloadData ([067cf34](https://github.com/roomle-dev/roomle-ui/commit/067cf34))
489
+ * refactor: fix formatting ([d73c522](https://github.com/roomle-dev/roomle-ui/commit/d73c522))
490
+ * refactor: isDeleteElementPossible ([4b6c12c](https://github.com/roomle-dev/roomle-ui/commit/4b6c12c))
491
+ * refactor: removed deprecated hi api ([6bdff41](https://github.com/roomle-dev/roomle-ui/commit/6bdff41))
492
+ * refactor: removed deprecated hi callbacks ([599e3b7](https://github.com/roomle-dev/roomle-ui/commit/599e3b7))
493
+ * refactor: setting up simplified types build config ([e093981](https://github.com/roomle-dev/roomle-ui/commit/e093981))
494
+ * refactor: tidy-up fetch hi order data with price ([ef6732e](https://github.com/roomle-dev/roomle-ui/commit/ef6732e))
495
+ * refactor: tidy-up save and collect hi order data ([376f345](https://github.com/roomle-dev/roomle-ui/commit/376f345))
496
+ * test: add migration script ([69deefc](https://github.com/roomle-dev/roomle-ui/commit/69deefc))
497
+ * test: add tests ([4e5626f](https://github.com/roomle-dev/roomle-ui/commit/4e5626f))
498
+ * test: add tests to check if height is css classes are applied correctly ([5e2216d](https://github.com/roomle-dev/roomle-ui/commit/5e2216d))
499
+ * test: adjust tests according to the latest changes ([2956f5b](https://github.com/roomle-dev/roomle-ui/commit/2956f5b))
500
+ * test: barrel file for development ([4ec82e8](https://github.com/roomle-dev/roomle-ui/commit/4ec82e8))
501
+ * test: check if start and end interaction is called when setting wall material ([e8dbffb](https://github.com/roomle-dev/roomle-ui/commit/e8dbffb))
502
+ * test: check reset camera behaviour of enableWallDrawing ([f9b5e03](https://github.com/roomle-dev/roomle-ui/commit/f9b5e03))
41
503
  * test: fix failing tests ([1795d1f](https://github.com/roomle-dev/roomle-ui/commit/1795d1f))
504
+ * test: hi request functions ([0e032b4](https://github.com/roomle-dev/roomle-ui/commit/0e032b4))
505
+ * test: initial idea implementation ([0adca09](https://github.com/roomle-dev/roomle-ui/commit/0adca09))
506
+ * test: panning on right mouse click ([d48796f](https://github.com/roomle-dev/roomle-ui/commit/d48796f))
507
+ * test: placeOrder and fetchPrice ([4522a1d](https://github.com/roomle-dev/roomle-ui/commit/4522a1d))
508
+ * test: remove unused tests ([8f0aeab](https://github.com/roomle-dev/roomle-ui/commit/8f0aeab))
509
+ * test: resolve merge conflicts - await duplicateGroup ([489b95f](https://github.com/roomle-dev/roomle-ui/commit/489b95f))
510
+ * test: test that camera is not reset when switching to 3d ([f08277f](https://github.com/roomle-dev/roomle-ui/commit/f08277f))
511
+ * test: test that camera is not reset when switching to 3d ([d7ce5af](https://github.com/roomle-dev/roomle-ui/commit/d7ce5af))
512
+ * test: throw exception in calculateGroup ([bfe1d45](https://github.com/roomle-dev/roomle-ui/commit/bfe1d45))
513
+ * docs: add description ([56374a0](https://github.com/roomle-dev/roomle-ui/commit/56374a0))
514
+ * docs: getParametersOfComponent migration ([a8583f9](https://github.com/roomle-dev/roomle-ui/commit/a8583f9))
515
+ * docs: HI api "sendToOM" ([b49081f](https://github.com/roomle-dev/roomle-ui/commit/b49081f))
516
+ * docs: Homag Intelligence Embedding ([0c27f5e](https://github.com/roomle-dev/roomle-ui/commit/0c27f5e))
517
+ * docs: improve deprecation warning ([a1f73fa](https://github.com/roomle-dev/roomle-ui/commit/a1f73fa))
518
+ * docs: readme - correct headline formatting ([04ec78a](https://github.com/roomle-dev/roomle-ui/commit/04ec78a))
519
+ * docs: refine docu ([db89b59](https://github.com/roomle-dev/roomle-ui/commit/db89b59))
520
+ * perf: do not defeat caching of getComputedStyle(document.documentElement); ([485ca1d](https://github.com/roomle-dev/roomle-ui/commit/485ca1d))
521
+ * cd: add check if package.json exists ([e023e6e](https://github.com/roomle-dev/roomle-ui/commit/e023e6e))
522
+ * cd: authenticate on google cloud to upload changelog ([b9cd6af](https://github.com/roomle-dev/roomle-ui/commit/b9cd6af))
523
+ * cd: release debug version to verify publishing works ([1173b19](https://github.com/roomle-dev/roomle-ui/commit/1173b19))
524
+ * cd: remove dry-run flag ([c42e057](https://github.com/roomle-dev/roomle-ui/commit/c42e057))
525
+ * cd: run release embedding lib in dry-run mode ([2221bb4](https://github.com/roomle-dev/roomle-ui/commit/2221bb4))
526
+ * cd: test eslint-plugin-roomle release ([1642b74](https://github.com/roomle-dev/roomle-ui/commit/1642b74))
527
+ * cd: use embedding pre-release branch as trigger ([d133026](https://github.com/roomle-dev/roomle-ui/commit/d133026))
528
+ * cd: use github hosted runner to allow npm oidc token auth ([ac66586](https://github.com/roomle-dev/roomle-ui/commit/ac66586))
529
+ * style: fix formatting ([b929262](https://github.com/roomle-dev/roomle-ui/commit/b929262))
530
+ * style: redesign sidebar actions buttons ([d234d4c](https://github.com/roomle-dev/roomle-ui/commit/d234d4c))
531
+ * style: remove focus style on rotation input ([9067364](https://github.com/roomle-dev/roomle-ui/commit/9067364))
532
+ * style: reorganize product info div ([f78e895](https://github.com/roomle-dev/roomle-ui/commit/f78e895))
533
+ * style: update gridview show more button style ([d81ddfb](https://github.com/roomle-dev/roomle-ui/commit/d81ddfb))
42
534
  * wip: generate thumbs ([201a2fa](https://github.com/roomle-dev/roomle-ui/commit/201a2fa))
43
- * refactor: delete external object sub module ([3df933f](https://github.com/roomle-dev/roomle-ui/commit/3df933f))
535
+ * ci: add fetch_head option ([aa4dd85](https://github.com/roomle-dev/roomle-ui/commit/aa4dd85))
536
+ * ci: add include optional flag ([30a3b6c](https://github.com/roomle-dev/roomle-ui/commit/30a3b6c))
537
+ * ci: add platform flag to container job ([d795044](https://github.com/roomle-dev/roomle-ui/commit/d795044))
538
+ * ci: autoformat package.json ([c21010d](https://github.com/roomle-dev/roomle-ui/commit/c21010d))
539
+ * ci: fix git url, set provenance to false ([f1e66fc](https://github.com/roomle-dev/roomle-ui/commit/f1e66fc))
540
+ * ci: install optional dependencies, print npm config ([8f9062b](https://github.com/roomle-dev/roomle-ui/commit/8f9062b))
541
+ * ci: install oxlint explicitly ([2605274](https://github.com/roomle-dev/roomle-ui/commit/2605274))
542
+ * ci: install root dependencies, enable dry-run mode, remove unused gcloud auth ([3ad31f3](https://github.com/roomle-dev/roomle-ui/commit/3ad31f3))
543
+ * ci: print system infos before dependency upgrade ([8facf53](https://github.com/roomle-dev/roomle-ui/commit/8facf53))
544
+ * ci: re-use the types-qa tag ([79f5734](https://github.com/roomle-dev/roomle-ui/commit/79f5734))
545
+ * ci: remove git config command ([9a25526](https://github.com/roomle-dev/roomle-ui/commit/9a25526))
546
+ * ci: remove npm token ([8a9f4ef](https://github.com/roomle-dev/roomle-ui/commit/8a9f4ef))
547
+ * ci: remove oxlint linux dependency ([02c7c1c](https://github.com/roomle-dev/roomle-ui/commit/02c7c1c))
548
+ * ci: remove unused @semantic-release/exec ([9ea9bfb](https://github.com/roomle-dev/roomle-ui/commit/9ea9bfb))
549
+ * ci: revert out-commented steps ([c252ce7](https://github.com/roomle-dev/roomle-ui/commit/c252ce7))
550
+ * ci: use github hosted runners, autoformat workflow file ([5b4776b](https://github.com/roomle-dev/roomle-ui/commit/5b4776b))
551
+ * build: remove oxlint linux ([b8d4ffd](https://github.com/roomle-dev/roomle-ui/commit/b8d4ffd))
552
+
553
+
554
+ ### BREAKING CHANGE
555
+
556
+ * @roomle/web-sdk now exports TypeScript types from a single entry point
557
+ this means that imports of the SDK change from deeply nested import paths to just the main
558
+ file. This means the following changes
559
+
560
+ ```typescript
561
+ // **Before (v2.x):**
562
+ import { type PlanElementViewModel } from '@roomle/web-sdk/common-core/src/view-model/plan-element-view-model';
563
+ import type { WallDimensionTransferable } from '@roomle/web-sdk/planner-core/src/view-model/wall-plan-element-view-model';
564
+
565
+ // **After (v3.0.0):**
566
+ import type {
567
+ PlanElementViewModel,
568
+ WallDimensionTransferable
569
+ } from '@roomle/web-sdk';
570
+ ```
571
+
572
+ For more details see: packages/web-sdk/MIGRATION-v2-to-v3.md
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomle/embedding-lib",
3
- "version": "6.0.0-alpha.3",
3
+ "version": "6.0.0",
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",
@@ -1,6 +1,6 @@
1
- import { expose as D } from "./comlink-BAiXCcU9.mjs";
2
- import { c as B } from "./utils-D--vltCL.mjs";
3
- class S {
1
+ import { expose as B } from "./comlink-BAiXCcU9.mjs";
2
+ import { c as F } from "./utils-D--vltCL.mjs";
3
+ class T {
4
4
  _side;
5
5
  // for better debugging (who handles message? iframe or website?)
6
6
  _incomingMessageBus = null;
@@ -105,14 +105,14 @@ class S {
105
105
  return e.message = this._side + ": " + e.message, console.error(e), e.message;
106
106
  }
107
107
  }
108
- const F = () => {
108
+ const x = () => {
109
109
  try {
110
110
  return window.self !== window.top;
111
111
  } catch {
112
112
  return !0;
113
113
  }
114
- }, U = ["127.0.0.1", "localhost", "0.0.0.0"], x = () => {
115
- const s = F();
114
+ }, U = ["127.0.0.1", "localhost", "0.0.0.0"], W = () => {
115
+ const s = x();
116
116
  let e = window.location.href;
117
117
  if (s) {
118
118
  if (!document.referrer)
@@ -121,37 +121,42 @@ const F = () => {
121
121
  }
122
122
  const { hostname: t } = new URL(e);
123
123
  return t;
124
- }, W = (s) => !!(U.includes(s) || s.includes("192.168") || s.endsWith("roomle.com") || s.endsWith("gitlab.io") || s.endsWith("gitlab.com")), T = [
124
+ }, k = (s) => {
125
+ const e = new RegExp(
126
+ /^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/
127
+ );
128
+ return !!(U.includes(s) || e.test(s) || s.endsWith("roomle.com") || s.endsWith("gitlab.io") || s.endsWith("gitlab.com"));
129
+ }, M = [
125
130
  "language",
126
131
  "browserLanguage",
127
132
  "userLanguage",
128
133
  "systemLanguage"
129
- ], k = (s = null) => {
130
- const e = window.navigator;
134
+ ], p = (s, e = !0) => !s || s.length < 2 ? "en" : e ? s.substring(0, 2) : s, G = (s = null, e = !1) => {
135
+ const t = window.navigator;
131
136
  if (s)
132
- return s.substr(0, 2);
133
- if (Array.isArray(e.languages) && e.languages.length > 0)
134
- return e.languages[0].substr(0, 2);
135
- for (let t = 0, r = T.length; t < r; t++) {
136
- const o = e[T[t]];
137
- if (o)
138
- return o.substr(0, 2);
137
+ return p(s, !e);
138
+ if (Array.isArray(t.languages) && t.languages.length > 0)
139
+ return p(t.languages[0], !e);
140
+ for (let r = 0, o = M.length; r < o; r++) {
141
+ const n = t[M[r]];
142
+ if (n)
143
+ return p(n, !e);
139
144
  }
140
145
  return "en";
141
- }, G = (s, e) => {
146
+ }, J = (s, e) => {
142
147
  const t = JSON.parse(JSON.stringify(s));
143
- return A(t, e);
144
- }, A = (s, e) => {
148
+ return S(t, e);
149
+ }, S = (s, e) => {
145
150
  for (const t in e)
146
151
  try {
147
- e[t].constructor === Object ? s[t] = A(s[t], e[t]) : s[t] = e[t];
152
+ e[t].constructor === Object ? s[t] = S(s[t], e[t]) : s[t] = e[t];
148
153
  } catch {
149
154
  s[t] = e[t];
150
155
  }
151
156
  return s;
152
157
  };
153
- var L = /* @__PURE__ */ ((s) => (s.BOTTOM_BAR = "bottom_bar", s.PARTLIST_BOUNDS = "partlist_bounds", s.INTERACTION_NOTES = "interaction_notes", s.PARAMETER_GROUPS = "parameter_groups", s))(L || {});
154
- const J = (s) => JSON.parse(JSON.stringify(s)), K = {
158
+ var H = /* @__PURE__ */ ((s) => (s.BOTTOM_BAR = "bottom_bar", s.PARTLIST_BOUNDS = "partlist_bounds", s.INTERACTION_NOTES = "interaction_notes", s.PARAMETER_GROUPS = "parameter_groups", s))(H || {});
159
+ const K = (s) => JSON.parse(JSON.stringify(s)), V = {
155
160
  mobileLandscape: !0,
156
161
  floorMaterialRootTag: "materials_root",
157
162
  buttons: {
@@ -162,7 +167,7 @@ const J = (s) => JSON.parse(JSON.stringify(s)), K = {
162
167
  partlist_print: !0
163
168
  },
164
169
  elements: {
165
- [L.INTERACTION_NOTES]: !0
170
+ [H.INTERACTION_NOTES]: !0
166
171
  },
167
172
  helpcenter: {
168
173
  roomdesigner: !0,
@@ -181,32 +186,32 @@ const J = (s) => JSON.parse(JSON.stringify(s)), K = {
181
186
  },
182
187
  rotationSnapDegrees: 10,
183
188
  interactionsCollapsed: !1
184
- }, V = "(idle)", $ = (s) => (E(s), s?.customApiUrl && (s.customApiUrl = decodeURIComponent(s.customApiUrl)), s.shareUrl && (s.deeplink = s.shareUrl.replace(
185
- q,
186
- Q
187
- )), s), E = (s) => {
189
+ }, $ = "(idle)", z = (s) => (w(s), s?.customApiUrl && (s.customApiUrl = decodeURIComponent(s.customApiUrl)), s.shareUrl && (s.deeplink = s.shareUrl.replace(
190
+ Q,
191
+ X
192
+ )), s), w = (s) => {
188
193
  if (!s)
189
194
  return;
190
195
  const e = Object.keys(s);
191
196
  for (const t of e) {
192
197
  const r = s[t];
193
- if (!Array.isArray(r) && typeof r == "object" && r !== null && E(r), Array.isArray(r))
198
+ if (!Array.isArray(r) && typeof r == "object" && r !== null && w(r), Array.isArray(r))
194
199
  for (const o of r)
195
- E(o);
200
+ w(o);
196
201
  (r === "true" || r === "false") && (s[t] = r === "true");
197
202
  }
198
- }, z = (s, e) => {
203
+ }, Y = (s, e) => {
199
204
  e.configuratorId = s.id;
200
205
  const t = s.settings || {};
201
- return !e.overrideTenant && s.tenant && (e.overrideTenant = s.tenant), G(t, e);
202
- }, Y = () => {
203
- const s = J(K);
204
- s.locale || (s.locale = k()), s.id === V && delete s.id;
205
- const e = x();
206
- return e && W(e) && (s.configuratorId = "demoConfigurator"), s.customApiUrl = void 0, s.emails = !1, s;
207
- }, q = "<CONF_ID>", Q = "#CONFIGURATIONID#", X = (s) => {
206
+ return !e.overrideTenant && s.tenant && (e.overrideTenant = s.tenant), J(t, e);
207
+ }, q = () => {
208
+ const s = K(V);
209
+ s.locale || (s.locale = G(null, !0)), s.id === $ && delete s.id;
210
+ const e = W();
211
+ return e && k(e) && (s.configuratorId = "demoConfigurator"), s.customApiUrl = void 0, s.emails = !1, s;
212
+ }, Q = "<CONF_ID>", X = "#CONFIGURATIONID#", Z = (s) => {
208
213
  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);
209
- }, M = () => /(android)/i.test(navigator.userAgent);
214
+ }, R = () => /(android)/i.test(navigator.userAgent);
210
215
  class y {
211
216
  _messageHandler = null;
212
217
  isSetupDone = !1;
@@ -297,12 +302,12 @@ class y {
297
302
  );
298
303
  }
299
304
  }
300
- const R = () => {
305
+ const I = () => {
301
306
  let s, e;
302
307
  return { promise: new Promise((r, o) => {
303
308
  s = r, e = o;
304
309
  }), resolve: s, reject: e };
305
- }, w = {
310
+ }, O = {
306
311
  SDK: "extended",
307
312
  CONFIGURATOR_SDK: "configurator",
308
313
  CALLBACKS: "callbacks",
@@ -310,7 +315,7 @@ const R = () => {
310
315
  ANALYTICS: "analytics",
311
316
  GLOBAL: "global",
312
317
  RAPI: "rapi"
313
- }, h = ".", oe = w.SDK + h + w.CALLBACKS, p = {
318
+ }, h = ".", ne = O.SDK + h + O.CALLBACKS, _ = {
314
319
  REQUEST_BOOT: "requestBoot",
315
320
  SETUP: "setup",
316
321
  WEBSITE_READY: "websiteReady"
@@ -319,12 +324,12 @@ const R = () => {
319
324
  RETURN_METHODS: "returnMethods",
320
325
  REGISTER_CUSTOM_VIEW: "registerCustomView",
321
326
  REGISTER_CUSTOM_VIEW_DONE: "registerCustomViewDone"
322
- }, Z = ["constructor", "callbacks"], j = (s) => s[0] !== "_" && !Z.includes(s), ne = (s, e, t = !1) => {
327
+ }, j = ["constructor", "callbacks"], ee = (s) => s[0] !== "_" && !j.includes(s), ie = (s, e, t = !1) => {
323
328
  if (!s)
324
329
  return [];
325
- const r = Object.getOwnPropertyNames(s), o = t ? w.CALLBACKS + h : "";
326
- return r.filter(j).map((n) => e + h + o + n);
327
- }, ee = async (s, e) => {
330
+ const r = Object.getOwnPropertyNames(s), o = t ? O.CALLBACKS + h : "";
331
+ return r.filter(ee).map((n) => e + h + o + n);
332
+ }, se = async (s, e) => {
328
333
  if (typeof s != "string")
329
334
  throw new Error(
330
335
  'Configurator ID is not a string type: "' + typeof s + '"'
@@ -347,7 +352,7 @@ const R = () => {
347
352
  cache: "default"
348
353
  }), u = await fetch(l), { configurator: d } = await u.json();
349
354
  return d;
350
- }, ie = "data-rml-interaction-container", I = (s, e, t) => {
355
+ }, ae = "data-rml-interaction-container", N = (s, e, t) => {
351
356
  let r = null;
352
357
  Object.defineProperty(s, e, {
353
358
  get() {
@@ -359,20 +364,20 @@ const R = () => {
359
364
  ), console.warn("{ mute: true, value: () => void }"), r = o);
360
365
  }
361
366
  });
362
- }, H = () => window.innerHeight * 0.01 + "px", N = (s) => {
367
+ }, C = () => window.innerHeight * 0.01 + "px", L = (s) => {
363
368
  s && setTimeout(
364
- () => s.style.setProperty(O, H()),
369
+ () => s.style.setProperty(A, C()),
365
370
  0
366
371
  );
367
- }, b = "rml-styles", se = 450, O = "--rml-full-height", c = {
372
+ }, b = "rml-styles", te = 450, A = "--rml-full-height", c = {
368
373
  CONTAINER: "rml-container",
369
374
  FILL: "rml-fill",
370
375
  POSITION: "rml-pos",
371
376
  TRANSITION: "rml-transition",
372
377
  ANDROID_HEIGHT: "rml-android-height",
373
378
  OVERFLOW_HIDDEN: "rml-overflow-hidden"
374
- }, _ = /* @__PURE__ */ new Map();
375
- class ae extends y {
379
+ }, E = /* @__PURE__ */ new Map();
380
+ class le extends y {
376
381
  static createPlanner(e, t, r, o = []) {
377
382
  return this._create(
378
383
  e,
@@ -384,7 +389,7 @@ class ae extends y {
384
389
  static async connect(e, t = []) {
385
390
  const r = new y();
386
391
  r.viewName = e;
387
- const { resolve: o, promise: n } = R(), { resolve: a, promise: i } = R(), l = ({
392
+ const { resolve: o, promise: n } = I(), { resolve: a, promise: i } = I(), l = ({
388
393
  message: g,
389
394
  args: m
390
395
  }) => {
@@ -399,7 +404,7 @@ class ae extends y {
399
404
  if (r.isSetupDone)
400
405
  return r.executeMessage({ message: g, args: m });
401
406
  }
402
- }, u = new S(
407
+ }, u = new T(
403
408
  "custom-view-" + e,
404
409
  window,
405
410
  window.parent,
@@ -467,23 +472,23 @@ Migration: import { setupHi } from '@roomle/embedding-lib/hi'; setupHi(libraryId
467
472
  ), this.hiMessageHandler && window.removeEventListener("message", this.hiMessageHandler), this.hiMessageHandler = (t) => {
468
473
  if (t.data.type === "connect_hi" && t.data.port) {
469
474
  const r = t.data.port;
470
- r.start?.(), D(B(e), r);
475
+ r.start?.(), B(F(e), r);
471
476
  }
472
477
  }, window.addEventListener("message", this.hiMessageHandler);
473
478
  }
474
479
  static async _create(e, t, r, o) {
475
480
  return new Promise(async (n, a) => {
476
481
  try {
477
- const i = A(
478
- Y(),
479
- $(r)
482
+ const i = S(
483
+ q(),
484
+ z(r)
480
485
  );
481
- X(i);
482
- const l = await ee(
486
+ Z(i);
487
+ const l = await se(
483
488
  e,
484
489
  i
485
490
  );
486
- r = z(l, i);
491
+ r = Y(l, i);
487
492
  const u = new this(
488
493
  l,
489
494
  t,
@@ -507,37 +512,37 @@ Migration: import { setupHi } from '@roomle/embedding-lib/hi'; setupHi(libraryId
507
512
  throw new Error(
508
513
  "Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person"
509
514
  );
510
- if (_.has(t))
515
+ if (E.has(t))
511
516
  throw new Error("There is already an instance on this DOM element");
512
517
  if (!!!document.getElementById(b)) {
513
518
  const u = r.zIndex || 9999999, d = document.createElement("style");
514
519
  d.type = "text/css", d.id = b;
515
- const g = "transition:all ease-in-out " + se + "ms;", m = ["-webkit-", "-o-"].reduce(
516
- (v, P) => v += P + g,
520
+ const g = "transition:all ease-in-out " + te + "ms;", m = ["-webkit-", "-o-"].reduce(
521
+ (P, D) => P += D + g,
517
522
  ""
518
- ) + g, C = H();
523
+ ) + g, v = C();
519
524
  d.innerHTML = `
520
- .${c.CONTAINER}{${O}:${C};}
525
+ .${c.CONTAINER}{${A}:${v};}
521
526
  .${c.POSITION}{position:fixed;top:0;left:0;z-index:${u};opacity:0}
522
527
  .${c.TRANSITION}{${m}}
523
528
  .${c.FILL}{width:100%;height:100%;opacity:1}
524
- .${c.ANDROID_HEIGHT}{height:calc(var(${O},1vh)*100)}
529
+ .${c.ANDROID_HEIGHT}{height:calc(var(${A},1vh)*100)}
525
530
  .${c.OVERFLOW_HIDDEN}{overflow:hidden}
526
531
  `, document.head.appendChild(d);
527
532
  }
528
533
  this._executeMessage = this._executeMessage.bind(this);
529
- const i = new S(
534
+ const i = new T(
530
535
  "website",
531
536
  window,
532
537
  null,
533
538
  this._executeMessage
534
539
  );
535
- this.setMessageHandler(i), this._onResize = this._onResize.bind(this), M() && window.addEventListener("resize", this._onResize), this._container = t, this._initData = r, this._configuratorSettings = e;
540
+ this.setMessageHandler(i), this._onResize = this._onResize.bind(this), R() && window.addEventListener("resize", this._onResize), this._container = t, this._initData = r, this._configuratorSettings = e;
536
541
  const l = this._createIframe();
537
- this._onUseFullPage = this._onUseFullPage.bind(this), this._onBackToWebsite = this._onBackToWebsite.bind(this), this._waitForIframe = n, this._container.appendChild(l), this._iframe = l, this.setupPlugins(o, this._iframe), _.set(t, !0);
542
+ this._onUseFullPage = this._onUseFullPage.bind(this), this._onBackToWebsite = this._onBackToWebsite.bind(this), this._waitForIframe = n, this._container.appendChild(l), this._iframe = l, this.setupPlugins(o, this._iframe), E.set(t, !0);
538
543
  }
539
544
  teardown() {
540
- this._container && _.delete(this._container);
545
+ this._container && E.delete(this._container);
541
546
  const e = this._container.querySelector("iframe");
542
547
  e && this._container.removeChild(e), window.removeEventListener("resize", this._onResize);
543
548
  }
@@ -547,21 +552,21 @@ Migration: import { setupHi } from '@roomle/embedding-lib/hi'; setupHi(libraryId
547
552
  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(c.CONTAINER), e.classList.add(c.FILL), e;
548
553
  }
549
554
  _onResize() {
550
- N(this._iframe);
555
+ L(this._iframe);
551
556
  }
552
557
  _onUseFullPage() {
553
- this._iframe.classList.add(c.POSITION), document.documentElement.classList.add(c.OVERFLOW_HIDDEN), window.document.body.classList.add(c.OVERFLOW_HIDDEN), M() && (N(this._iframe), this._iframe.classList.add(c.ANDROID_HEIGHT));
558
+ this._iframe.classList.add(c.POSITION), document.documentElement.classList.add(c.OVERFLOW_HIDDEN), window.document.body.classList.add(c.OVERFLOW_HIDDEN), R() && (L(this._iframe), this._iframe.classList.add(c.ANDROID_HEIGHT));
554
559
  }
555
560
  _onBackToWebsite() {
556
561
  this._iframe.classList.remove(c.POSITION), this._iframe.classList.remove(c.ANDROID_HEIGHT), document.documentElement.classList.remove(c.OVERFLOW_HIDDEN), window.document.body.classList.remove(c.OVERFLOW_HIDDEN);
557
562
  }
558
563
  _executeMessage({ message: e, args: t }, r) {
559
564
  if (r.source && r.source === this._iframe?.contentWindow)
560
- return e === p.REQUEST_BOOT ? this._messageHandler ? (this._messageHandler.setOutgoingMessageBus(r.source), Promise.resolve({ result: this._initData })) : (console.error("MessageHandler not set"), Promise.resolve({ error: "MessageHandler not set" })) : e === p.SETUP ? (this.handleSetup(t[0]), I(
565
+ return e === _.REQUEST_BOOT ? this._messageHandler ? (this._messageHandler.setOutgoingMessageBus(r.source), Promise.resolve({ result: this._initData })) : (console.error("MessageHandler not set"), Promise.resolve({ error: "MessageHandler not set" })) : e === _.SETUP ? (this.handleSetup(t[0]), N(
561
566
  this.ui.callbacks,
562
567
  "onUseFullPage",
563
568
  this._onUseFullPage
564
- ), I(
569
+ ), N(
565
570
  this.ui.callbacks,
566
571
  "onBackToWebsite",
567
572
  this._onBackToWebsite
@@ -570,19 +575,19 @@ Migration: import { setupHi } from '@roomle/embedding-lib/hi'; setupHi(libraryId
570
575
  console.error("MessageHandler not set");
571
576
  return;
572
577
  }
573
- this._messageHandler.sendMessage(p.WEBSITE_READY);
578
+ this._messageHandler.sendMessage(_.WEBSITE_READY);
574
579
  }, 0), Promise.resolve({ result: null })) : this.executeMessage({ message: e, args: t });
575
580
  }
576
581
  }
577
582
  export {
578
- p as HANDSHAKE_MESSAGES,
579
- ie as INTERACTION_CONTAINER_SELECTOR,
580
- w as NAMESPACE,
583
+ _ as HANDSHAKE_MESSAGES,
584
+ ae as INTERACTION_CONTAINER_SELECTOR,
585
+ O as NAMESPACE,
581
586
  h as NAMESPACE_SEPARATOR,
582
- oe as SDK_CALLBACK,
587
+ ne as SDK_CALLBACK,
583
588
  f as WELL_KNOWN_MESSAGES,
584
- ae as default,
585
- ee as getConfiguratorSettings,
586
- ne as getMethodNames,
587
- j as isExposable
589
+ le as default,
590
+ se as getConfiguratorSettings,
591
+ ie as getMethodNames,
592
+ ee as isExposable
588
593
  };
@@ -1 +1 @@
1
- import{expose as e}from"./comlink-CmT64Qi3.mjs";import{c as t}from"./utils-uEcN1DUR.mjs";class s{_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 r=["127.0.0.1","localhost","0.0.0.0"],i=["language","browserLanguage","userLanguage","systemLanguage"],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-DePKqSKW.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 g=()=>{let e,t;return{promise:new Promise((s,r)=>{e=s,t=r}),resolve:e,reject:t}},d={SDK:"extended",CONFIGURATOR_SDK:"configurator",CALLBACKS:"callbacks",UI:"ui",ANALYTICS:"analytics",GLOBAL:"global",RAPI:"rapi"},h=".",m=d.SDK+h+d.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?d.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},b="data-rml-interaction-container",y=(e,t,s)=>{let r=null;Object.defineProperty(e,t,{get:()=>r||s,set(e){r=e?.mute?e.value:e}})},M=()=>.01*window.innerHeight+"px",T=e=>{e&&setTimeout(()=>e.style.setProperty(A,M()),0)},v="rml-styles",A="--rml-full-height",O="rml-container",L="rml-fill",N="rml-pos",I="rml-android-height",R="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 r=new u;r.viewName=e;const{resolve:i,promise:a}=g(),{resolve:n,promise:o}=g(),l=new s("custom-view-"+e,window,window.parent,({message:e,args:t})=>{switch(e){case _.REGISTER_CUSTOM_VIEW_DONE:i();break;case _.RETURN_METHODS:r.handleSetup(t[0]),n();break;default:if(r.isSetupDone)return r.executeMessage({message:e,args:t})}});r.setMessageHandler(l);const c=[e];return l.sendMessage(_.REGISTER_CUSTOM_VIEW,c),await a,l.sendMessage(_.GET_METHODS,c),await o,r.setupPlugins(t,document.body,"custom-view"),await Promise.allSettled(r.pluginsLoaded),r}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(s){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(t(s),i)}},window.addEventListener("message",this.hiMessageHandler)}static async _create(e,t,s,n){return new Promise(async(c,u)=>{try{const u=a((()=>{const e=(e=>JSON.parse(JSON.stringify(e)))(o);e.locale||(e.locale=((e=null)=>{const t=window.navigator;if(e)return e.substr(0,2);if(Array.isArray(t.languages)&&t.languages.length>0)return t.languages[0].substr(0,2);for(let e=0,s=i.length;e<s;e++){const s=t[i[e]];if(s)return s.substr(0,2)}return"en"})()),"(idle)"===e.id&&delete e.id;const t=(()=>{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 t&&(e=>!!(r.includes(e)||e.includes("192.168")||e.endsWith("roomle.com")||e.endsWith("gitlab.io")||e.endsWith("gitlab.com")))(t)&&(e.configuratorId="demoConfigurator"),e.customApiUrl=void 0,e.emails=!1,e})(),(l(g=s),g?.customApiUrl&&(g.customApiUrl=decodeURIComponent(g.customApiUrl)),g.shareUrl&&(g.deeplink=g.shareUrl.replace("<CONF_ID>","#CONFIGURATIONID#")),g));(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 d=await S(e,u);s=((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)})(d,u);const h=new this(d,t,s,n,c);return await Promise.allSettled(h.pluginsLoaded),h}catch(e){return u(e)}var g})}_waitForIframe;_container;_configuratorSettings;_initData={};_iframe;constructor(e,t,r,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(v)){const e=r.zIndex||9999999,t=document.createElement("style");t.type="text/css",t.id=v;const s="transition:all ease-in-out 450ms;",i=["-webkit-","-o-"].reduce((e,t)=>e+(t+s),"")+s,a=M();t.innerHTML=`\n .${O}{${A}:${a};}\n .${N}{position:fixed;top:0;left:0;z-index:${e};opacity:0}\n .rml-transition{${i}}\n .${L}{width:100%;height:100%;opacity:1}\n .${I}{height:calc(var(${A},1vh)*100)}\n .${R}{overflow:hidden}\n `,document.head.appendChild(t)}this._executeMessage=this._executeMessage.bind(this);const n=new s("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=r,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(O),e.classList.add(L),e}_onResize(){T(this._iframe)}_onUseFullPage(){this._iframe.classList.add(N),document.documentElement.classList.add(R),window.document.body.classList.add(R),c()&&(T(this._iframe),this._iframe.classList.add(I))}_onBackToWebsite(){this._iframe.classList.remove(N),this._iframe.classList.remove(I),document.documentElement.classList.remove(R),window.document.body.classList.remove(R)}_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]),y(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),y(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,b as INTERACTION_CONTAINER_SELECTOR,d 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{c as t}from"./utils-uEcN1DUR.mjs";class s{_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 r=["127.0.0.1","localhost","0.0.0.0"],i=["language","browserLanguage","userLanguage","systemLanguage"],a=(e,t=!0)=>!e||e.length<2?"en":t?e.substring(0,2):e,n=(e,t)=>{for(const s in t)try{t[s].constructor===Object?e[s]=n(e[s],t[s]):e[s]=t[s]}catch{e[s]=t[s]}return e};var o=(e=>(e.BOTTOM_BAR="bottom_bar",e.PARTLIST_BOUNDS="partlist_bounds",e.INTERACTION_NOTES="interaction_notes",e.PARAMETER_GROUPS="parameter_groups",e))(o||{});const l={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[o.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},c=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&&c(t),Array.isArray(t))for(const e of t)c(e);("true"===t||"false"===t)&&(e[s]="true"===t)}},u=()=>/(android)/i.test(navigator.userAgent);class g{_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(m),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(m),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(m),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-DePKqSKW.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}},h={SDK:"extended",CONFIGURATOR_SDK:"configurator",CALLBACKS:"callbacks",UI:"ui",ANALYTICS:"analytics",GLOBAL:"global",RAPI:"rapi"},m=".",p=h.SDK+m+h.CALLBACKS,_={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},f={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},w=["constructor","callbacks"],E=e=>"_"!==e[0]&&!w.includes(e),S=(e,t,s=!1)=>{if(!e)return[];const r=Object.getOwnPropertyNames(e),i=s?h.CALLBACKS+m:"";return r.filter(E).map(e=>t+m+i+e)},y=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}})},T=()=>.01*window.innerHeight+"px",v=e=>{e&&setTimeout(()=>e.style.setProperty(O,T()),0)},A="rml-styles",O="--rml-full-height",L="rml-container",N="rml-fill",R="rml-pos",I="rml-android-height",C="rml-overflow-hidden",P=new Map;class B extends g{static createPlanner(e,t,s,r=[]){return this._create(e,t,s,r)}static async connect(e,t=[]){const r=new g;r.viewName=e;const{resolve:i,promise:a}=d(),{resolve:n,promise:o}=d(),l=new s("custom-view-"+e,window,window.parent,({message:e,args:t})=>{switch(e){case f.REGISTER_CUSTOM_VIEW_DONE:i();break;case f.RETURN_METHODS:r.handleSetup(t[0]),n();break;default:if(r.isSetupDone)return r.executeMessage({message:e,args:t})}});r.setMessageHandler(l);const c=[e];return l.sendMessage(f.REGISTER_CUSTOM_VIEW,c),await a,l.sendMessage(f.GET_METHODS,c),await o,r.setupPlugins(t,document.body,"custom-view"),await Promise.allSettled(r.pluginsLoaded),r}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(s){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(t(s),i)}},window.addEventListener("message",this.hiMessageHandler)}static async _create(e,t,s,o){return new Promise(async(u,g)=>{try{const g=n((()=>{const e=(e=>JSON.parse(JSON.stringify(e)))(l);e.locale||(e.locale=((e=null,t=!1)=>{const s=window.navigator;if(e)return a(e,!t);if(Array.isArray(s.languages)&&s.languages.length>0)return a(s.languages[0],!t);for(let e=0,r=i.length;e<r;e++){const r=s[i[e]];if(r)return a(r,!t)}return"en"})(null,!0)),"(idle)"===e.id&&delete e.id;const t=(()=>{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 t&&(e=>{const t=new RegExp(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/);return!!(r.includes(e)||t.test(e)||e.endsWith("roomle.com")||e.endsWith("gitlab.io")||e.endsWith("gitlab.com"))})(t)&&(e.configuratorId="demoConfigurator"),e.customApiUrl=void 0,e.emails=!1,e})(),(c(d=s),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)})(g);const h=await y(e,g);s=((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 n(s,t)})(s,t)})(h,g);const m=new this(h,t,s,o,u);return await Promise.allSettled(m.pluginsLoaded),m}catch(e){return g(e)}var d})}_waitForIframe;_container;_configuratorSettings;_initData={};_iframe;constructor(e,t,r,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(P.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(A)){const e=r.zIndex||9999999,t=document.createElement("style");t.type="text/css",t.id=A;const s="transition:all ease-in-out 450ms;",i=["-webkit-","-o-"].reduce((e,t)=>e+(t+s),"")+s,a=T();t.innerHTML=`\n .${L}{${O}:${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(${O},1vh)*100)}\n .${C}{overflow:hidden}\n `,document.head.appendChild(t)}this._executeMessage=this._executeMessage.bind(this);const n=new s("website",window,null,this._executeMessage);this.setMessageHandler(n),this._onResize=this._onResize.bind(this),u()&&window.addEventListener("resize",this._onResize),this._container=t,this._initData=r,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),P.set(t,!0)}teardown(){this._container&&P.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(L),e.classList.add(N),e}_onResize(){v(this._iframe)}_onUseFullPage(){this._iframe.classList.add(R),document.documentElement.classList.add(C),window.document.body.classList.add(C),u()&&(v(this._iframe),this._iframe.classList.add(I))}_onBackToWebsite(){this._iframe.classList.remove(R),this._iframe.classList.remove(I),document.documentElement.classList.remove(C),window.document.body.classList.remove(C)}_executeMessage({message:e,args:t},s){if(s.source&&s.source===this._iframe?.contentWindow)return e===_.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(s.source),Promise.resolve({result:this._initData})):Promise.resolve({error:"MessageHandler not set"}):e===_.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(_.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:e,args:t})}}export{_ as HANDSHAKE_MESSAGES,M as INTERACTION_CONTAINER_SELECTOR,h as NAMESPACE,m as NAMESPACE_SEPARATOR,p as SDK_CALLBACK,f as WELL_KNOWN_MESSAGES,B as default,y as getConfiguratorSettings,S as getMethodNames,E as isExposable};