@imagineio/configurator-sdk 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +294 -0
- package/README.md +103 -0
- package/dist/00a41227ff.js +1 -0
- package/dist/00ab3dcbb5.js +1 -0
- package/dist/01a664fa9f.css +51 -0
- package/dist/04746bff9a.js +1 -0
- package/dist/04931f795e.js +1 -0
- package/dist/05973a4da2.js +3 -0
- package/dist/061b81ad81.js +1 -0
- package/dist/066fc9aa40.js +1 -0
- package/dist/09c4973968.js +1 -0
- package/dist/0a35b2c5f4.js +1 -0
- package/dist/0af28430ab.js +1 -0
- package/dist/0e2dedae0d.js +1 -0
- package/dist/0f7c8345a8.js +1 -0
- package/dist/12b8165d6d.js +1 -0
- package/dist/1458417bdb.js +1 -0
- package/dist/14c83bc57a.js +1 -0
- package/dist/15d6bec3b5.css +150 -0
- package/dist/16a399703e.js +1 -0
- package/dist/17876f4322.css +114 -0
- package/dist/1870fc037b.js +1 -0
- package/dist/1a2629800a.css +196 -0
- package/dist/1e243363f6.js +1 -0
- package/dist/1fac915f8b.js +1 -0
- package/dist/1fff100656.js +1 -0
- package/dist/205827c5c8.js +1 -0
- package/dist/20b0104576.js +1 -0
- package/dist/2239b22616.js +1 -0
- package/dist/22bd38ddcf.js +1 -0
- package/dist/239b619005.css +1849 -0
- package/dist/23dc0ccf32.js +1 -0
- package/dist/26155bf68c.js +1 -0
- package/dist/2774152dd2.js +1 -0
- package/dist/27fee7007f.js +1 -0
- package/dist/281cf952fa.js +1 -0
- package/dist/28a9d58274.js +1 -0
- package/dist/28d887bf8a.js +1 -0
- package/dist/28df2aa12f.js +1 -0
- package/dist/297e653adf.js +1 -0
- package/dist/2990ba64d6.js +1 -0
- package/dist/2b6aa27f6d.js +1 -0
- package/dist/2c7c1bcef1.js +1 -0
- package/dist/2cab5c5c23.js +1 -0
- package/dist/2cafe3274b.js +1 -0
- package/dist/2e366d7386.js +1 -0
- package/dist/2f8cc8b292.js +1 -0
- package/dist/30be653f00.css +110 -0
- package/dist/31ea036f5c.js +1 -0
- package/dist/32861ea2b0.js +1 -0
- package/dist/33fa2c8ca2.js +1 -0
- package/dist/35d8449ed8.js +1 -0
- package/dist/3656ffa1b8.js +1 -0
- package/dist/367a479d3a.js +1 -0
- package/dist/371ed78aa2.js +1 -0
- package/dist/37596ace72.js +1 -0
- package/dist/37addc7fb3.js +1 -0
- package/dist/388cadacbd.js +1 -0
- package/dist/39a62ef7b8.js +1 -0
- package/dist/3bbcee0334.js +1 -0
- package/dist/3c916f744f.js +1 -0
- package/dist/3f37665dd1.js +1 -0
- package/dist/3fb3ab6757.js +1 -0
- package/dist/40d6aeb28c.js +1 -0
- package/dist/41ed5985ad.js +1 -0
- package/dist/431a2d8618.js +1 -0
- package/dist/44a229099f.js +1 -0
- package/dist/4741e5d07d.css +263 -0
- package/dist/4910c07ca8.css +411 -0
- package/dist/4a99ddb3fd.js +1 -0
- package/dist/4aa671f9f6.js +1 -0
- package/dist/4b8958aa4c.js +1 -0
- package/dist/4ba4f544b9.js +1 -0
- package/dist/4c24338793.js +1 -0
- package/dist/4d7a0d1897.js +1 -0
- package/dist/4e1db1e3b0.js +1 -0
- package/dist/4e7d0a0d4a.js +1 -0
- package/dist/51b23203e5.css +1447 -0
- package/dist/52436e0169.js +1 -0
- package/dist/54413c1eae.js +1 -0
- package/dist/54f0fcf38b.js +1 -0
- package/dist/55ab45ada4.css +370 -0
- package/dist/561dc3f1ab.js +1 -0
- package/dist/58e6419ba8.js +1 -0
- package/dist/5c9fd9201c.js +1 -0
- package/dist/5d05e8982e.js +1 -0
- package/dist/5d5e8a9c58.js +3 -0
- package/dist/5e4f2349ff.js +1 -0
- package/dist/609e5e5d28.js +1 -0
- package/dist/60d697292c.js +1 -0
- package/dist/61e0c0c9b5.js +1 -0
- package/dist/631a9f7fac.js +1 -0
- package/dist/64e9020b49.js +1 -0
- package/dist/66c461dc2c.js +1 -0
- package/dist/672404d987.js +1 -0
- package/dist/67f6338a4a.js +1 -0
- package/dist/6855e6a3b1.js +1 -0
- package/dist/6b0a81e4f8.js +1 -0
- package/dist/6ba86aa3b8.js +1 -0
- package/dist/6bff84d27e.js +1 -0
- package/dist/6c0a2572dd.js +1 -0
- package/dist/6d238282c1.js +1 -0
- package/dist/6e2595aa36.js +1 -0
- package/dist/6f9ae59d6c.js +1 -0
- package/dist/70dd811d74.js +1 -0
- package/dist/710c1ab641.js +1 -0
- package/dist/7206ce49c6.js +1 -0
- package/dist/7281d77ed9.js +1 -0
- package/dist/73f7d65985.js +1 -0
- package/dist/776277593f.js +1 -0
- package/dist/79a397bb92.js +1 -0
- package/dist/7a748aae59.js +1 -0
- package/dist/7bfb0ecfbb.css +572 -0
- package/dist/7bfcd0a517.js +1 -0
- package/dist/7d9ddaeb47.js +1 -0
- package/dist/7f833bc5af.js +1 -0
- package/dist/811b403d43.js +1 -0
- package/dist/817d930a49.js +1 -0
- package/dist/81802759ca.js +1 -0
- package/dist/81eb433604.js +1 -0
- package/dist/82a8a4bc35.js +1 -0
- package/dist/85af90fade.js +1 -0
- package/dist/872c4302e0.js +1 -0
- package/dist/87bb469216.js +1 -0
- package/dist/87dcc12b65.js +1 -0
- package/dist/87f511c4a8.js +1 -0
- package/dist/88251d6671.js +1 -0
- package/dist/882bc739c8.js +1 -0
- package/dist/89ab18ebc5.js +1 -0
- package/dist/8a22e8944f.css +563 -0
- package/dist/8a3a57c008.js +1 -0
- package/dist/8ade32d067.js +1 -0
- package/dist/8bf6d26ad6.css +233 -0
- package/dist/8c27edda0f.js +1 -0
- package/dist/8db8655f21.js +24 -0
- package/dist/8f60e5059a.js +1 -0
- package/dist/91707f5ca0.css +78 -0
- package/dist/921bf270dd.js +20 -0
- package/dist/9326c23506.js +1 -0
- package/dist/94a0a79c65.js +1 -0
- package/dist/9526094bb7.js +1 -0
- package/dist/9544661159.js +1 -0
- package/dist/95a44ebec2.js +1 -0
- package/dist/970313b92b.js +1 -0
- package/dist/9794652102.js +1 -0
- package/dist/983cbed22c.js +1 -0
- package/dist/9840b9ce12.js +1 -0
- package/dist/98f3644031.js +1 -0
- package/dist/992778075d.css +353 -0
- package/dist/9c6c598569.js +1 -0
- package/dist/9f474b5d1a.js +1 -0
- package/dist/a0f71d0bf5.js +1 -0
- package/dist/a3c983d431.js +1 -0
- package/dist/a3f18e76fe.js +1 -0
- package/dist/a493e9aa8f.js +1 -0
- package/dist/a77b15c0d6.js +1 -0
- package/dist/a811c90bd5.js +1 -0
- package/dist/a822c5e4f2.js +1 -0
- package/dist/aaa0e82d7f.css +69 -0
- package/dist/ab6c80484f.js +1 -0
- package/dist/ae96f219e3.js +1 -0
- package/dist/b11b38869d.css +427 -0
- package/dist/b1349d5a21.js +4 -0
- package/dist/b14379d31b.css +151 -0
- package/dist/b3efb26fd7.js +1 -0
- package/dist/b59b0dde17.js +1 -0
- package/dist/b5c372377f.js +1 -0
- package/dist/b976df09ec.js +1 -0
- package/dist/baeaed46c9.js +1 -0
- package/dist/bb719febc6.js +1 -0
- package/dist/bcd44b4040.js +1 -0
- package/dist/bdc4e4c5b9.css +209 -0
- package/dist/bdec200d00.js +1 -0
- package/dist/be0cfe2236.js +1 -0
- package/dist/be337ddda5.js +1 -0
- package/dist/c12c112c6f.js +1 -0
- package/dist/c2a14a77ae.js +1 -0
- package/dist/c3b8f1973b.js +1 -0
- package/dist/c44d37da7a.js +1 -0
- package/dist/c4790179f1.js +1 -0
- package/dist/c5e990946e.js +1 -0
- package/dist/c71892453b.js +1 -0
- package/dist/c9a1656c62.js +1 -0
- package/dist/ca497b066c.js +1 -0
- package/dist/cdb4a0f7b3.js +3 -0
- package/dist/ce663020e4.js +60 -0
- package/dist/cec035efb1.js +1 -0
- package/dist/d0f9681634.js +1 -0
- package/dist/d118c2e7ba.js +1 -0
- package/dist/d20718159b.js +3 -0
- package/dist/d30f1f506e.js +1 -0
- package/dist/d3cd7f1bc1.js +1 -0
- package/dist/d4378d9afa.js +1 -0
- package/dist/d464da28a5.js +1 -0
- package/dist/d566d3874b.js +1 -0
- package/dist/d617bbb9f5.js +26 -0
- package/dist/d65f32e004.js +1 -0
- package/dist/d6851ea979.js +1 -0
- package/dist/d7c9500ba9.js +1 -0
- package/dist/d803155241.js +1 -0
- package/dist/d903df4e0d.js +1 -0
- package/dist/d94df858ea.js +1 -0
- package/dist/da7b5f450d.js +1 -0
- package/dist/daa11edd01.js +1 -0
- package/dist/db4afd43c9.js +1 -0
- package/dist/dbd5ba1d07.js +1 -0
- package/dist/dc2a1a0e13.js +1 -0
- package/dist/dc812f3e14.js +1 -0
- package/dist/dcbf419090.css +122 -0
- package/dist/dcdba78ddf.js +1 -0
- package/dist/de408c4516.js +1 -0
- package/dist/e1cd279733.js +1 -0
- package/dist/e379e0039b.js +1 -0
- package/dist/e4fe0551fd.js +1 -0
- package/dist/e6eed481cc.css +28 -0
- package/dist/e75f1e5992.js +1 -0
- package/dist/ea8577d22b.js +1 -0
- package/dist/ec4a34fc80.css +313 -0
- package/dist/ed6a54cdf6.js +1 -0
- package/dist/ee242c0099.js +1 -0
- package/dist/ee9b9fd7d1.js +1 -0
- package/dist/f0c3d8a28a.js +1 -0
- package/dist/f11a45a150.js +1 -0
- package/dist/f1b3b2622a.js +1 -0
- package/dist/f7b4a178e3.js +1 -0
- package/dist/f89d7cd931.js +1 -0
- package/dist/f8cb80a93c.js +1 -0
- package/dist/f8fec86f10.js +1 -0
- package/dist/fbd844f2d1.js +1 -0
- package/dist/fe235d7160.js +1 -0
- package/dist/fe58a84b85.js +1 -0
- package/dist/fe68b361ba.js +1 -0
- package/dist/ff5b3d17e2.js +1 -0
- package/dist/styles/globals.css +442 -0
- package/dist/styles/themes.css +532 -0
- package/dist/styles/variables.css +299 -0
- package/package.json +68 -0
- package/static/assets/draco/README.md +32 -0
- package/static/assets/draco/draco_decoder.js +34 -0
- package/static/assets/draco/draco_decoder.wasm +0 -0
- package/static/assets/draco/draco_encoder.js +35 -0
- package/static/assets/draco/draco_encoder.wasm +0 -0
- package/static/assets/draco/draco_encoder_wrapper.js +98 -0
- package/static/assets/draco/draco_wasm_wrapper.js +117 -0
- package/static/favicon.svg +28 -0
- package/static/version.txt +1 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/* Chat bar - compact sidebar-embedded version */
|
|
2
|
+
.chat-bar {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: 8px;
|
|
6
|
+
width: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Embedded mode — fills parent height */
|
|
10
|
+
.chat-bar--embedded {
|
|
11
|
+
border-top: none;
|
|
12
|
+
height: 100%;
|
|
13
|
+
gap: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.chat-bar--embedded .chat-bar__content {
|
|
17
|
+
flex: 1;
|
|
18
|
+
min-height: 0;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* CHAT label with sparkle - clickable toggle */
|
|
25
|
+
.chat-bar__label {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: 6px;
|
|
29
|
+
width: 100%;
|
|
30
|
+
font-size: 11px;
|
|
31
|
+
font-weight: 600;
|
|
32
|
+
text-transform: uppercase;
|
|
33
|
+
letter-spacing: 0.5px;
|
|
34
|
+
color: var(--text-primary, #363636);
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
user-select: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.chat-bar__label svg {
|
|
40
|
+
color: var(--text-primary, #363636);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.chat-bar__label--disabled {
|
|
44
|
+
opacity: 0.45;
|
|
45
|
+
pointer-events: none;
|
|
46
|
+
cursor: default;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Toggle chevron */
|
|
50
|
+
.chat-bar__toggle {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
margin-left: auto;
|
|
54
|
+
color: var(--text-tertiary, #999);
|
|
55
|
+
transition: transform 0.2s ease;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.chat-bar__toggle--open {
|
|
59
|
+
transform: rotate(180deg);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* AI message bubble */
|
|
63
|
+
.chat-bar__bubble {
|
|
64
|
+
background: var(--bg-secondary, #f5f7fa);
|
|
65
|
+
border-radius: 8px;
|
|
66
|
+
padding: 10px 12px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.chat-bar__bubble-text {
|
|
70
|
+
font-size: 12px;
|
|
71
|
+
color: var(--text-secondary, #555);
|
|
72
|
+
line-height: 1.5;
|
|
73
|
+
margin: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Form */
|
|
77
|
+
.chat-bar__form {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
gap: 8px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Standalone input field */
|
|
84
|
+
.chat-bar__input {
|
|
85
|
+
width: 100%;
|
|
86
|
+
border: none;
|
|
87
|
+
background: transparent;
|
|
88
|
+
padding: 6px 0;
|
|
89
|
+
font-size: 16px;
|
|
90
|
+
color: var(--text-primary, #333);
|
|
91
|
+
outline: none;
|
|
92
|
+
border-bottom: 1px solid var(--border-light, #e1e1e1);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.chat-bar__input::placeholder {
|
|
96
|
+
color: var(--text-tertiary, #aaa);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Actions row: chips, send button */
|
|
100
|
+
.chat-bar__actions-row {
|
|
101
|
+
display: flex;
|
|
102
|
+
align-items: center;
|
|
103
|
+
gap: 6px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Quick chips */
|
|
107
|
+
.chat-bar__chips {
|
|
108
|
+
display: flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
gap: 6px;
|
|
111
|
+
flex: 1;
|
|
112
|
+
overflow-x: auto;
|
|
113
|
+
min-width: 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.chat-bar__chips::-webkit-scrollbar {
|
|
117
|
+
display: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.chat-bar__chip {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
gap: 5px;
|
|
124
|
+
padding: 5px 10px;
|
|
125
|
+
background: var(--bg-primary, #fff);
|
|
126
|
+
border: 1px solid var(--border-light, #e1e1e1);
|
|
127
|
+
border-radius: 14px;
|
|
128
|
+
font-size: 11px;
|
|
129
|
+
font-weight: 500;
|
|
130
|
+
color: var(--text-secondary, #555);
|
|
131
|
+
white-space: nowrap;
|
|
132
|
+
cursor: pointer;
|
|
133
|
+
transition: all 0.15s ease;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.chat-bar__chip:hover {
|
|
137
|
+
border-color: var(--border-dark, #ccc);
|
|
138
|
+
background: var(--bg-muted, #f8f8f8);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Chip color swatch */
|
|
142
|
+
.chat-bar__chip-color {
|
|
143
|
+
width: 12px;
|
|
144
|
+
height: 12px;
|
|
145
|
+
border-radius: 50%;
|
|
146
|
+
flex-shrink: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Chip icon */
|
|
150
|
+
.chat-bar__chip-icon {
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
color: var(--text-tertiary, #888);
|
|
154
|
+
flex-shrink: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* Send button */
|
|
158
|
+
.chat-bar__send-btn {
|
|
159
|
+
display: flex;
|
|
160
|
+
align-items: center;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
width: 28px;
|
|
163
|
+
height: 28px;
|
|
164
|
+
border: 1px solid var(--border-light, #e1e1e1);
|
|
165
|
+
background: var(--bg-primary, #fff);
|
|
166
|
+
border-radius: 50%;
|
|
167
|
+
cursor: pointer;
|
|
168
|
+
color: var(--text-tertiary, #888);
|
|
169
|
+
flex-shrink: 0;
|
|
170
|
+
margin-left: auto;
|
|
171
|
+
transition: all 0.15s ease;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.chat-bar__send-btn:hover {
|
|
175
|
+
border-color: var(--border-dark, #ccc);
|
|
176
|
+
color: var(--text-secondary, #555);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.chat-bar__send-btn svg {
|
|
180
|
+
width: 14px;
|
|
181
|
+
height: 14px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* Desktop non-embedded: cap at 400px */
|
|
185
|
+
.chat-bar__content {
|
|
186
|
+
max-height: 400px;
|
|
187
|
+
overflow-y: auto;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* In embedded mode (mobile tabs), fill all available height */
|
|
191
|
+
.chat-bar--embedded .chat-bar__content {
|
|
192
|
+
max-height: none;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* Tablet */
|
|
196
|
+
@media (max-width: 1023px) and (min-width: 768px) {
|
|
197
|
+
.chat-bar__chip {
|
|
198
|
+
padding: 4px 8px;
|
|
199
|
+
font-size: 10px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.chat-bar__input {
|
|
203
|
+
font-size: 11px;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Mobile */
|
|
208
|
+
@media (max-width: 767px) {
|
|
209
|
+
.chat-bar__bubble {
|
|
210
|
+
display: none;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.chat-bar__chip {
|
|
214
|
+
padding: 4px 8px;
|
|
215
|
+
font-size: 10px;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.chat-bar__input {
|
|
219
|
+
font-size: 11px;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.chat-bar__label {
|
|
223
|
+
font-size: 10px;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* ============================================
|
|
228
|
+
CopilotKit Overrides
|
|
229
|
+
============================================ */
|
|
230
|
+
|
|
231
|
+
/* Hide specific CopilotChat buttons */
|
|
232
|
+
.copilotKitMessageControlButton[title="Regenerate response"],
|
|
233
|
+
.copilotKitMessageControlButton[title="Copy to clipboard"],
|
|
234
|
+
.copilotKitMessageControlButton[title="Thumbs up"],
|
|
235
|
+
.copilotKitMessageControlButton[title="Thumbs down"] {
|
|
236
|
+
display: none !important;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* CopilotKit's "Powered by CopilotKit" footer. Since react-ui 1.6x the library injects its
|
|
240
|
+
own stylesheet AFTER ours with `.poweredBy { display: block !important }` and inline styles,
|
|
241
|
+
so a bare `.poweredBy` rule lost the cascade and the footer came back. Higher specificity +
|
|
242
|
+
!important wins over both; the size/visibility lines cover a future class rename. */
|
|
243
|
+
.poweredBy,
|
|
244
|
+
.chat-bar .poweredBy,
|
|
245
|
+
.chat-bar p.poweredBy,
|
|
246
|
+
.chat-bar .copilotKitInputContainer .poweredBy,
|
|
247
|
+
.chat-bar [class~="poweredBy"] {
|
|
248
|
+
display: none !important;
|
|
249
|
+
visibility: hidden !important;
|
|
250
|
+
height: 0 !important;
|
|
251
|
+
padding: 0 !important;
|
|
252
|
+
margin: 0 !important;
|
|
253
|
+
overflow: hidden !important;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Make CopilotChat fill the available height */
|
|
257
|
+
.chat-bar--embedded .copilotKitChat {
|
|
258
|
+
display: flex !important;
|
|
259
|
+
flex-direction: column !important;
|
|
260
|
+
height: 100% !important;
|
|
261
|
+
max-height: none !important;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.chat-bar--embedded .copilotKitMessages {
|
|
265
|
+
flex: 1 !important;
|
|
266
|
+
min-height: 0 !important;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.chat-bar--embedded .copilotKitInputContainer {
|
|
270
|
+
flex-shrink: 0 !important;
|
|
271
|
+
padding-bottom: 8px !important;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* Fix: CopilotKit calculates textarea height=0 when mounted inside display:none
|
|
275
|
+
(mobile tabs). Override inline 0px values so the textarea is always usable. */
|
|
276
|
+
.chat-bar--embedded .copilotKitInput > textarea {
|
|
277
|
+
min-height: 20px !important;
|
|
278
|
+
max-height: 150px !important;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Input field — cleaner, compact style for all devices */
|
|
282
|
+
.copilotKitInput {
|
|
283
|
+
border-radius: 12px !important;
|
|
284
|
+
border: 1px solid var(--border-light, #e1e1e1) !important;
|
|
285
|
+
padding: 8px 12px !important;
|
|
286
|
+
min-height: 44px !important;
|
|
287
|
+
width: calc(100% - 24px) !important;
|
|
288
|
+
margin: 0 auto !important;
|
|
289
|
+
background-color: var(--bg-muted, #fafafa) !important;
|
|
290
|
+
transition: border-color 0.15s ease !important;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.copilotKitInput:focus-within {
|
|
294
|
+
border-color: var(--text-tertiary, #999) !important;
|
|
295
|
+
background-color: var(--bg-primary, #fff) !important;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.copilotKitInput > textarea {
|
|
299
|
+
font-size: 16px !important;
|
|
300
|
+
line-height: 1.4 !important;
|
|
301
|
+
color: var(--text-primary, #333) !important;
|
|
302
|
+
-webkit-text-fill-color: var(--text-primary, #333) !important;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.copilotKitInput > textarea::placeholder {
|
|
306
|
+
color: var(--text-tertiary, #aaa) !important;
|
|
307
|
+
font-size: 16px !important;
|
|
308
|
+
opacity: 1 !important;
|
|
309
|
+
-webkit-text-fill-color: var(--text-tertiary, #aaa) !important;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/* Messages — tighter spacing */
|
|
313
|
+
.copilotKitMessagesContainer {
|
|
314
|
+
padding: 12px 16px !important;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.copilotKitMessage {
|
|
318
|
+
font-size: 13px !important;
|
|
319
|
+
line-height: 1.5 !important;
|
|
320
|
+
padding: 8px 12px !important;
|
|
321
|
+
border-radius: 12px !important;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.copilotKitMessage.copilotKitUserMessage {
|
|
325
|
+
font-size: 13px !important;
|
|
326
|
+
line-height: 1.5 !important;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* Header — hide it in embedded mode */
|
|
330
|
+
.chat-bar--embedded .copilotKitHeader {
|
|
331
|
+
display: none !important;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Mobile-specific adjustments */
|
|
335
|
+
@media (max-width: 767px) {
|
|
336
|
+
.copilotKitMessagesContainer {
|
|
337
|
+
padding: 10px 12px !important;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.copilotKitMessage {
|
|
341
|
+
font-size: 12px !important;
|
|
342
|
+
padding: 6px 10px !important;
|
|
343
|
+
border-radius: 10px !important;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.copilotKitMessage.copilotKitUserMessage {
|
|
347
|
+
font-size: 12px !important;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.chat-bar--embedded .copilotKitInputContainer {
|
|
351
|
+
padding-bottom: 6px !important;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{create as I}from"zustand";import{emitEvent as p,EVENTS as S}from"./2e366d7386.js";import{subscribeWithSelector as g}from"zustand/middleware";import{devtools as v}from"./52436e0169.js";import{v4 as h}from"uuid";import{FRONT_VIEW_POSITION as P,FRONT_VIEW_TARGET as C,PERSPECTIVE_VIEW_DIR_LEFT as T}from"./23dc0ccf32.js";import"./d94df858ea.js";import"./be337ddda5.js";import"./872c4302e0.js";import F from"./8f60e5059a.js";import{getR3FState as u}from"./e1cd279733.js";import{computeTopDownView as O,computeFitView as E,ORTHO_FOV as b,PERSP_FOV as _}from"./85af90fade.js";const N=I(v(g((c,f)=>({activeSceneId:null,activeSceneConfigId:null,productInstances:{},pendingPlacementPiece:null,componentStates:{},placementSelections:{},placementOverrides:{},selectedInstanceId:null,selectedComponentId:null,hoveredInstanceId:null,hoveredComponentId:null,cameraPosition:[0,1.08,3.92],cameraTarget:[0,1,0],cameraFov:45,focusTarget:null,isFocusing:!1,isSceneLoading:!1,viewMode:"3d",initializeScene:e=>{c({activeSceneConfigId:e,isSceneLoading:!0,productInstances:{},componentStates:{},placementOverrides:{},selectedInstanceId:null,selectedComponentId:null})},setActiveSceneId:e=>{c({activeSceneId:e})},addProductInstance:(e,t,o=[0,0,0],n=[0,0,0])=>{const a=h();return c(i=>({productInstances:{...i.productInstances,[a]:{id:a,productId:e,configId:t,position:o,rotation:n,scale:[1,1,1],createdAt:Date.now()}}})),a},removeProductInstance:e=>{c(t=>{const o=t.productInstances||{},n=new Set([String(e)]);let a=!0;for(;a;){a=!1;for(const s of Object.values(o)){const l=String(s?.id??s?.instanceId??"");if(!l||n.has(l))continue;const d=s?.positionedAbove??s?.positioned_above??null;d!=null&&n.has(String(d))&&(n.add(l),a=!0)}}const i={};for(const[s,l]of Object.entries(o))n.has(String(s))||(i[s]=l);const r={};for(const[s,l]of Object.entries(t.componentStates||{}))n.has(String(s))||(r[s]=l);const m=n.has(String(t.selectedInstanceId));return{productInstances:i,componentStates:r,selectedInstanceId:m?null:t.selectedInstanceId,selectedComponentId:m?null:t.selectedComponentId}})},updateInstancePosition:(e,t)=>{c(o=>({productInstances:{...o.productInstances,[e]:{...o.productInstances[e],position:t}}}))},updateInstanceRotation:(e,t)=>{c(o=>({productInstances:{...o.productInstances,[e]:{...o.productInstances[e],rotation:t}}}))},updateInstanceScale:(e,t)=>{c(o=>({productInstances:{...o.productInstances,[e]:{...o.productInstances[e],scale:t}}}))},updateInstanceVariant:(e,t)=>{c(o=>{const n=o.productInstances[e];return n?{productInstances:{...o.productInstances,[e]:{...n,productId:t,variantId:t}}}:o})},setComponentMaterial:(e,t,o)=>{c(n=>({componentStates:{...n.componentStates,[e]:{...n.componentStates[e],[t]:{...n.componentStates[e]?.[t],materialId:o}}}}))},setComponentVariant:(e,t,o)=>{c(n=>({componentStates:{...n.componentStates,[e]:{...n.componentStates[e],[t]:{...n.componentStates[e]?.[t],variant:o}}}}))},setComponentVisibility:(e,t,o)=>{c(n=>({componentStates:{...n.componentStates,[e]:{...n.componentStates[e],[t]:{...n.componentStates[e]?.[t],visible:o}}}}))},setPlacementSelections:(e,t)=>{!e||typeof t!="object"||c(o=>({placementSelections:{...o.placementSelections,[e]:t||{}}}))},setPlacementOverrides:(e,t)=>{e&&c(o=>({placementOverrides:{...o.placementOverrides,[e]:t||{}}}))},setComponentSwap:(e,t,o)=>{c(n=>({componentStates:{...n.componentStates,[e]:{...n.componentStates[e],[t]:{...n.componentStates[e]?.[t],componentId:o}}}}))},initializeComponentStates:(e,t,o={})=>{const n={};t.forEach(a=>{n[a.id]={visible:!0,material:a.default_material,variant:null}}),c(a=>({componentStates:{...a.componentStates,[e]:n}}))},selectInstance:(e,t=null)=>{c({selectedInstanceId:e,selectedComponentId:t});try{p(S.SELECTION_CHANGED,{placementId:e,componentId:t})}catch{}},clearSelection:()=>{c({selectedInstanceId:null,selectedComponentId:null});try{p(S.SELECTION_CHANGED,{placementId:null,componentId:null})}catch{}},setPendingPlacementPiece:e=>c({pendingPlacementPiece:e}),clearPendingPlacementPiece:()=>c({pendingPlacementPiece:null}),setHoveredInstance:(e,t=null)=>{c({hoveredInstanceId:e,hoveredComponentId:t})},setCameraPosition:e=>{c({cameraPosition:e})},setCameraTarget:e=>{c({cameraTarget:e})},setCameraFov:e=>{c({cameraFov:e})},setCameraPreset:(e={})=>{const t=f(),o=Array.isArray(e.position)?e.position:t.cameraPosition,n=Array.isArray(e.target)?e.target:t.cameraTarget,a=Number.isFinite(Number(e.fov))?Number(e.fov):t.cameraFov;if(Number.isFinite(Number(e.fov))){const i=u()?.camera;i&&i.fov!==a&&(i.fov=a,i.updateProjectionMatrix?.())}c({cameraPosition:[...o],cameraTarget:[...n],cameraFov:a,focusTarget:{position:[...o],target:[...n],instant:!!e.instant},isFocusing:!0})},focusOnObject:(e,t,o)=>{const n=Math.max(t*2.5,.8);let a,i,r;if(o!=null){const m=Math.sin(o),s=Math.cos(o);a=e[0]+m*n,i=e[1]+n*.3,r=e[2]+s*n}else a=e[0],i=e[1]+n*.3,r=e[2]+n;c({focusTarget:{position:[a,i,r],target:[...e]},isFocusing:!0})},clearFocus:()=>{c({focusTarget:null,isFocusing:!1})},resetCameraToDefault:(e={})=>{const t=!!e.instant;if(!F.getState().is3D){const r=u(),m=r?.scene,s=r?.gl?.domElement;if(m&&s&&s.clientWidth&&s.clientHeight){const l=O({scene:m,aspect:s.clientWidth/s.clientHeight,fov:b});if(l){c({focusTarget:{position:l.position,target:l.target,instant:t},isFocusing:!0});return}}return}const n=u(),a=n?.scene,i=n?.gl?.domElement;if(a&&i&&i.clientWidth&&i.clientHeight){const r=E({scene:a,aspect:i.clientWidth/i.clientHeight,fov:_,dir:T});if(r){c({focusTarget:{position:r.position,target:r.target},isFocusing:!0});return}}c({focusTarget:{position:P,target:C,instant:t},isFocusing:!0})},setViewMode:e=>{c({viewMode:e})},setSceneLoading:e=>{c({isSceneLoading:e})},resetScene:()=>{c({productInstances:{},componentStates:{},placementOverrides:{},selectedInstanceId:null,selectedComponentId:null,hoveredInstanceId:null,hoveredComponentId:null,isSceneLoading:!1})}})),{name:"scene-graph"}));var U=N;export{U as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useSyncExternalStore as b}from"react";import{isOptionVisible as g,isOptionAvailable as y,getPlacementBinding as p}from"./817d930a49.js";const _=20;let r=null,l=[],o=0,d=0;const s=new Set;function c(){d+=1;for(const t of s)try{t(r)}catch{}}function O(){o+=1,c()}function h(){o=Math.max(0,o-1),c()}function S(t,a,e,i){const n=Object.freeze({at:new Date().toISOString(),kind:t,durationMs:Number.isFinite(i)?i:null,...a,optionVisibility:e?.optionVisibility??null,optionAvailability:e?.optionAvailability??null,defaultOptionOverrides:e?.defaultOptionOverrides??null,messages:Array.isArray(e?.messages)?e.messages:[],events:Array.isArray(e?.events)?e.events:[],customEffects:Array.isArray(e?.customEffects)?e.customEffects:[],customDiagnostics:Array.isArray(e?.customDiagnostics)?e.customDiagnostics:[],addedPlacements:e?.addedPlacements??null,removedPlacements:e?.removedPlacements??null,catalogVersion:e?.catalogVersion??null,refetchCatalog:!!e?.refetchCatalog});r=n,l=[n,...l].slice(0,_),c()}function P(){return r}function V(){return l.slice()}function D(){return o>0}function w(t){return typeof t!="function"?()=>{}:(s.add(t),()=>{s.delete(t)})}function C(t,a,{placementId:e=null}={}){const i=g(t,a);let n=y(t,a),f=i?n?null:"disabled_by_rule":"hidden_by_rule";if(i&&n&&e!=null){const u=p(e,t);u&&Array.isArray(u.available)&&!u.available.some(m=>String(m)===String(a))&&(n=!1,f="not_available_on_placement")}return{optionSetId:t,optionId:a,placementId:e,visible:i,available:n,selectable:i&&n,reason:f}}const A=t=>(s.add(t),()=>s.delete(t)),v=()=>d;function H(){return b(A,v,v),{last:r,history:l,pending:o>0}}function M(){r=null,l=[],o=0,c()}export{M as _resetEvaluation,C as explainOption,V as getEvaluationHistory,P as getLastEvaluation,D as isEvaluationPending,S as recordEvaluationResult,h as recordEvaluationSettled,O as recordEvaluationStarted,w as subscribeEvaluation,H as useEvaluation};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{addProduct as q,removeProduct as N,moveProduct as K,transformProduct as Y,changeProductVariant as z,placeHostedProduct as W,applyLayoutPreset as J,setRoomDimensions as X,restoreConfiguration as Z,clearProductOption as $,selectOptionForProduct as ee,selectOptionForScene as te,clearSceneOption as oe}from"./a77b15c0d6.js";import{selectProduct as re,deselect as ne,getSelectedProduct as se,moveSelectedLeft as ae,moveSelectedRight as ie,duplicateSelected as le,deleteSelected as ce,resetScene as de,undo as ue,redo as me,canUndo as pe,canRedo as ge,clearHistory as fe,toggleDimensions as Se,toggleWalls as Pe,toggleFloor as he,toggleCeiling as ve,resetCamera as ye,setCameraPreset as Ie,focusOnObject as be,setRoomFootprint as Ce,toggleView as Te,isView3D as Ae,view2D as Oe,view3D as xe,toggleSidebar as Re,setSidebarTab as Ee,closeModal as Me,notify as Le,setGuiVisible as Be,openQuote as De,setUIRegions as He,hideUI as Fe,showUI as we,showInfo as Ue,setSceneLoading as Ge,clearSceneLoading as Qe,setSceneSelection as Ve,clearSceneSelection as je,removeSceneInstance as _e,setSceneInstanceVariant as ke,setPendingSlotPlacement as T,clearPendingSlotPlacement as A,clearDeferredHostedProductPlacement as qe,setHostedProductFeatureForSlot as O,updateHostedProductSlotForProduct as Ne,addHostedProduct as Ke,removeHostedProduct as Ye,clearHostedProducts as ze,placeHostedProductAtHost as We}from"./2cafe3274b.js";import{registerPlacementStrategy as Je,listPlacementStrategies as Xe,hasPlacementStrategy as Ze,setPlacementStrategy as $e,getPlacementStrategy as et,clearPlacementStrategy as tt,getPlacementStrategyOverride as ot,resolvePlacementStrategyConfig as rt,setPlacementStrategyConfig as nt,placementKit as st,STRATEGIES as at,DEFAULT_STRATEGY_ID as it,PLACEMENT_TYPES as lt,getPlacementType as ct,currentConfiguratorKey as dt,armPlacement as x,disarmPlacement as R,getPendingPlacement as E,armHostedProduct as M,disarmHostedProduct as L,computeTargets as ut,resolveTarget as mt,registerTargetRenderer as pt}from"./a77b15c0d6.js";import{registerComponentRenderer as gt,registerMaterialResolver as ft,registerInteraction as St,onSceneReady as Pt,readSceneBounds as ht,onSceneSettled as vt,listComponentRenderers as yt,listMaterialResolvers as It,listInteractions as bt,hideComponent as Ct,showComponent as Tt,transformComponent as At,setComponentMaterial as Ot,clearComponentOverrides as xt,listComponents as Rt,setToggles as Et,getToggles as Mt,registerAssetResolver as Lt,resolveAssetUrl as Bt,registerButton as Dt}from"./a77b15c0d6.js";import{registerComponent as Ht,resolveComponent as Ft,hasComponent as wt,listComponentOverrides as Ut,registerLayout as Gt,resolveLayout as Qt,hasLayout as Vt,listLayouts as jt,setLayout as _t,activeLayoutKey as kt,registerRoute as qt,resolveRoute as Nt,hasRoute as Kt,listRoutes as Yt,registerSlot as zt,listSlots as Wt,hasSlot as Jt,registerAction as Xt,runAction as Zt,listActions as $t,actions as eo,registerIcon as to,resolveIcon as oo,listIcons as ro,hasIcon as no,registerModal as so,listModals as ao,setLabels as io,getLabel as lo,getLabels as co,setLocale as uo,getLocale as mo,setCurrency as po,getCurrency as go,isRtl as fo,formatMoney as So,formatNumber as Po,applyTheme as ho,applyThemeById as vo,validateTheme as yo,checkThemeContrast as Io,contrastRatio as bo,applyCustomCss as Co,applyFontUrl as To}from"./a77b15c0d6.js";import{openModal as Ao}from"./09c4973968.js";import{useComponentRegistry as Oo}from"./882bc739c8.js";import{getLastEvaluation as xo,getEvaluationHistory as Ro,isEvaluationPending as Eo,subscribeEvaluation as Mo,explainOption as Lo}from"./9f474b5d1a.js";import{selectOption as Bo}from"./dbd5ba1d07.js";import P from"./872c4302e0.js";function h(e,o,a){let i=a;if(!i){const l=P.getState().features||{};i=l[e]??l[String(e)]??null}return Bo(e,o,i??{id:e})}const c=e=>String(e??"").trim().toLowerCase();function Do(e,o){const a=P.getState(),i=a.features||{},l=a.options||{},m=t=>i[t]??i[String(t)]??null,d=t=>Object.values(i).filter(r=>c(r?.name)===c(t)),p=Object.entries(l).filter(([,t])=>t&&typeof t=="object").map(([t,r])=>r.id==null?{...r,id:t}:r),b=t=>{const r=Array.isArray(t?.options)?t.options.map(n=>{if(n&&typeof n=="object")return n;const u=l[n]??l[String(n)];return u&&typeof u=="object"?u.id==null?{...u,id:n}:u:n==null?null:{id:n}}):[],s=p.filter(n=>String(n?.optionSetId??n?.option_set_id??"")===String(t?.id??""));return[...r,...s].filter(Boolean)},k=(t,r)=>t.find(s=>String(s?.id)===String(r))??t.find(s=>c(s?.name)===c(r))??null;if(o!=null){const t=m(e)?[m(e)]:d(e);if(!t.length||t.length>1)return null;const r=t[0],s=k(b(r),o);return s?{optionSetId:r.id,optionId:s.id,optionSet:r}:null}const C=p.filter(t=>String(t?.id)===String(e)),S=C.length?C:p.filter(t=>c(t?.name)===c(e)||c(t?.label)===c(e));if(!S.length){const t=m(e)??d(e)[0]??null;if(t){const r=b(t).map(s=>s?.name??s?.id).filter(Boolean);return null}return p.length,null}if(S.length>1)return null;const f=S[0];let g=f.optionSetId??f.option_set_id??null;if(g==null){const t=Object.entries(i).find(([r,s])=>Array.isArray(s?.options)&&s.options.some(n=>{const u=n&&typeof n=="object"?n.id:n;return String(u)===String(f.id)})&&r);t&&(g=t[1]?.id??t[0])}return g==null?null:{optionSetId:g,optionId:f.id,optionSet:m(g)}}function Ho(e,o,a){const l=P.getState().features||{};if(o!=null&&(l[e]!=null||l[String(e)]!=null))return h(e,o,a);const d=Do(e,o);return d?h(d.optionSetId,d.optionId,a??d.optionSet):!1}import{use as B,runIntent as v,INTENTS as y,onEvent as D,onceEvent as H,offEvent as F,on as w,registerEffectHandler as U,onRequest as Fo,onResponse as wo,setTransport as Uo,hasTransport as Go,readBom as Qo,readQuote as I,readGeneratedAssets as Vo,getUIRegions as jo,UI_REGIONS as _o,collectGenericBom as ko,setMetadata as qo,readMetadata as No,serializeMetadata as Ko,restoreMetadata as Yo,registerQuoteTemplate as zo,hasQuoteTemplate as Wo,setQuoteTemplate as Jo,listQuoteTemplates as Xo,activeQuoteTemplateKey as Zo,listQuotePdfBuilders as $o,buildQuotePdfBlob as er,saveQuotePdf as tr,registerQuotePdf as or,registerQuotePdfEndpoint as rr,hasQuotePdf as nr,generateSilo as sr,generateLifestyle as ar,generateArAsset as ir,generateBomPdf as lr,generateAll as cr,generationStatus as dr,METADATA_LIMITS as ur}from"./a77b15c0d6.js";import{bootConfigurator as G,mountConfigurator as Q,loadConfigurator as V,configureSDK as j,getVersion as _,saveProject as mr,loadProject as pr,restoreProject as gr,buildShareUrl as fr,parseShareToken as Sr,getShareToken as Pr,fetchEmbedBoot as hr,setEmbedSlug as vr,getEmbedSlug as yr,setEmbedContext as Ir,trackEmbed as br,setIframeAllowedOrigins as Cr,getIframeAllowedOrigins as Tr,getApiBaseUrl as Ar,setApiKey as Or,setChannelId as xr,getChannelId as Rr,setEmbedded as Er,getEffectiveSelections as Mr,recomputePrice as Lr,getProduct as Br,getProductName as Dr,getPlacedProductName as Hr,getProductVariants as Fr,listProducts as wr,getOptionSet as Ur,getOption as Gr,listOptionSets as Qr,listSceneOptionSets as Vr,listProductOptionSets as jr,listOptions as _r,listMaterials as kr,getMaterial as qr,buildDesignPdf as Nr,captureDesignViews as Kr,generateArForCurrentScene as Yr,checkCopilotAvailability as zr,getCopilotRuntimeUrl as Wr,setCopilotApiUrl as Jr}from"./a77b15c0d6.js";const Xr={add:(e={})=>v({type:y.PRODUCT_ADD,productGraphId:e.productGraphId,variantId:e.variantId,placementGroup:e.placementGroup??null,sequence:e.sequence??null},o=>q({...e,productGraphId:o.productGraphId,variantId:o.variantId,placementGroup:o.placementGroup??e.placementGroup,sequence:o.sequence??e.sequence})),remove:(e,o)=>v({type:y.PRODUCT_REMOVE,placementId:e},a=>N(a.placementId,o)),move:(e={})=>v({type:y.PRODUCT_MOVE,placementId:e.placementId,sequence:e.sequence??null,direction:null},o=>K({...e,placementId:o.placementId,sequence:o.sequence??e.sequence})),transform:Y,changeVariant:z,addHosted:W,select:re,deselect:ne,getSelected:se,moveLeft:ae,moveRight:ie,duplicate:le,deleteSelected:ce,anchor:x,unanchor:R,getAnchored:E,anchorHosted:M,unanchorHosted:L,arm:x,disarm:R,getArmed:E,armHosted:M,disarmHosted:L,hosted:{add:Ke,remove:Ye,clear:ze,placeAtHost:We}},Zr={select:Ho,selectByIds:h,selectForProduct:ee,clearForProduct:$,selectForScene:te,clearForScene:oe,effective:Mr},$r={applyPreset:J,setRoomDimensions:X,setRoomFootprint:Ce,restoreState:Z,reset:de,recomputePrice:Lr,camera:{reset:ye,preset:Ie,focusOn:be},view:{toggle:Te,is3D:Ae,to2D:Oe,to3D:xe},toggle:{dimensions:Se,walls:Pe,floor:he,ceiling:ve},onReady:Pt,readBounds:ht,onSettled:vt,registerRenderer:gt,registerMaterial:ft,registerInteraction:St,listRenderers:yt,listMaterials:It,listInteractions:bt,capture:Kr,buildPdf:Nr,generateAr:Yr,setSelection:Ve,clearSelection:je,removeInstance:_e,setInstanceVariant:ke,anchorSlot:T,unanchorSlot:A,armSlot:T,disarmSlot:A,clearDeferredHostedPlacement:qe,setHostedOptionForSlot:O,setHostedFeatureForSlot:O,moveHostedToSlot:Ne,hideComponent:Ct,showComponent:Tt,transformComponent:At,setComponentMaterial:Ot,clearComponentOverrides:xt,listComponents:Rt},en={registerComponent:Ht,resolveComponent:Ft,hasComponent:wt,listComponentOverrides:Ut,useComponentRegistry:Oo,registerLayout:Gt,resolveLayout:Qt,hasLayout:Vt,listLayouts:jt,activeLayout:kt,setLayout:_t,registerRoute:qt,resolveRoute:Nt,hasRoute:Kt,listRoutes:Yt,setToggles:Et,getToggles:Mt,registerAssetResolver:Lt,resolveAssetUrl:Bt,registerButton:Dt,registerSlot:zt,listSlots:Wt,hasSlot:Jt,registerAction:Xt,runAction:Zt,listActions:$t,actions:eo,registerIcon:to,resolveIcon:oo,listIcons:ro,hasIcon:no,registerModal:so,openModal:Ao,closeModal:Me,listModals:ao,setLabels:io,getLabel:lo,getLabels:co,setLocale:uo,getLocale:mo,setCurrency:po,getCurrency:go,isRtl:fo,formatMoney:So,formatNumber:Po,applyTheme:ho,applyThemeById:vo,validateTheme:yo,checkThemeContrast:Io,contrastRatio:bo,applyCustomCss:Co,applyFontUrl:To,hide:Fe,show:we,setVisible:He,visible:jo,regions:_o,sidebar:{toggle:Re,setTab:Ee},notify:Le,setSceneOverlaysVisible:Be,showInfo:Ue,setLoading:Ge,clearLoading:Qe},tn={read:I,registerTemplate:zo,hasTemplate:Wo,setTemplate:Jo,listTemplates:Xo,activeTemplate:Zo,listPdfBuilders:$o,open:De,images:Vo,generateSilo:sr,generateLifestyle:ar,generateAr:ir,generateBomPdf:lr,generateAll:cr,generationStatus:dr,toPdf:(e={})=>er(I(),e),savePdf:(e={})=>tr(I(),e),registerPdf:or,registerPdfEndpoint:rr,hasPdf:nr,setDocument:jn,hasDocument:_n,resetDocument:kn},on={registerStrategy:Je,listStrategies:Xe,hasStrategy:Ze,setStrategy:$e,strategyOverride:ot,config:rt,setConfig:nt,kit:st,getStrategy:et,clearStrategy:tt,computeTargets:ut,resolveTarget:mt,registerTargetRenderer:pt,getType:ct,currentKey:dt,STRATEGIES:at,DEFAULT_STRATEGY_ID:it,TYPES:lt},rn={readBom:Qo,collectBom:ko,setMetadata:qo,readMetadata:No,serializeMetadata:Ko,restoreMetadata:Yo,LIMITS:ur},nn={onRequest:Fo,onResponse:wo,setTransport:Uo,hasTransport:Go},sn={save:mr,load:pr,restore:gr,shareUrl:fr,parseShareToken:Sr,getShareToken:Pr},an={undo:ue,redo:me,canUndo:pe,canRedo:ge,clear:fe},ln={fetchBoot:hr,setSlug:vr,getSlug:yr,setContext:Ir,track:br,setEmbedded:Er,setAllowedOrigins:Cr,getAllowedOrigins:Tr},cn={isAvailable:zr,runtimeUrl:Wr,setApiUrl:Jr},As={quota:ds},dn={getProduct:Br,getProductName:Dr,getProductVariants:Fr,getPlacedProductName:Hr,listProducts:wr,listOptionSets:Qr,listSceneOptionSets:Vr,listProductOptionSets:jr,listOptions:_r,listMaterials:kr,getMaterial:qr,getOptionSet:Ur,getOption:Gr},Os={last:xo,history:Ro,pending:Eo,subscribe:Mo,explainOption:Lo},un={getApiBaseUrl:Ar,setChannelId:xr,getChannelId:Rr,setApiKey:Or};import{default as ks}from"./2990ba64d6.js";import{useComponentRegistry as Ns}from"./882bc739c8.js";import{default as Ys}from"./60d697292c.js";import{default as Ws}from"./6ba86aa3b8.js";import{default as Xs}from"./811b403d43.js";import{useSelection as $s,useProducts as ea,usePrice as ta}from"./16a399703e.js";import{default as ra}from"./d0f9681634.js";import{useBootStatus as sa,useSystem as aa}from"./066fc9aa40.js";import{useEvaluation as la}from"./9f474b5d1a.js";import{useLabel as da,useLabels as ua,useFormatters as ma}from"./28d887bf8a.js";import{useProduct as ga,useCatalogMaps as fa}from"./1458417bdb.js";import{useSceneState as Pa}from"./16a399703e.js";import{useUIState as va,useOptionGating as ya,useHostedProductState as Ia,useUIRegion as ba,useUIRegions as Ca}from"./9840b9ce12.js";import{useSystemConfig as Aa}from"./6855e6a3b1.js";import{useIcon as xa}from"./09c4973968.js";import{default as Ea}from"./921bf270dd.js";import{usePlacementInteraction as La}from"./4b8958aa4c.js";import{default as Da}from"./f11a45a150.js";import{useCopilotAvailable as Fa}from"./672404d987.js";import mn from"./3fb3ab6757.js";import pn from"./7206ce49c6.js";import gn from"./0f7c8345a8.js";import fn from"./82a8a4bc35.js";import Sn from"./e379e0039b.js";import{Sidebar as Pn,SaveProjectButton as hn,GenerateAssetsButton as vn,LiveStatusPanel as yn,ChatBar as In,NotificationContainer as bn,EvaluatingOverlay as Cn,Modals as Tn,SaveProjectModal as An,ExportModal as On,ARModal as xn,GeneratedAssetsModal as Rn,Header as En,SceneToolbar as Mn,SidebarFrame as Ln,OptionSidebar as Bn,LoadingScreen as Dn,ConfirmDialog as Hn,Modal as Fn,Button as wn,ARViewer as Un,SceneRoom as Gn,SceneDimensions as Qn,CameraAnimator as Vn}from"./64e9020b49.js";import{setQuoteDocument as jn,hasQuoteDocument as _n,resetQuoteDocument as kn}from"./12b8165d6d.js";import{SlotHost as qn}from"./73f7d65985.js";import{ModalHost as Nn}from"./09c4973968.js";import{OptionThumbnail as Kn,FinishThumbnail as Yn,LayoutThumbnail as zn,ColorSwatch as Wn,WidthSlider as Jn,FrameSizeButton as Xn,HostedProductThumbnail as Zn,ProductFeaturePickers as $n,AddProductToggle as es}from"./c12c112c6f.js";import{ProductInstance as ts,ComponentMesh as os,SceneStage as rs,SceneEnvironment as ns,SelectionBox as ss,FreeMovable as as,PlacementGaps as is,SelectionActionPanel as ls}from"./8a3a57c008.js";import cs from"./205827c5c8.js";import{refreshAiQuota as ds}from"./2f8cc8b292.js";const us={Sidebar:Pn,SidebarFrame:Ln,OptionSetSection:mn,OptionThumbnail:Kn,FinishThumbnail:Yn,LayoutThumbnail:zn,ColorSwatch:Wn,WidthSlider:Jn,FrameSizeButton:Xn,HostedProductThumbnail:Zn,ProductFeaturePickers:$n,AddProductToggle:es,QuoteRenders:gn,QuoteQr:Sn,ConfigurationSummary:fn,SaveProjectButton:hn,GenerateAssetsButton:vn,LiveStatusPanel:yn,ChatBar:In,NotificationContainer:bn,EvaluatingOverlay:Cn,Header:En,SceneToolbar:Mn,OptionSidebar:Bn,LoadingScreen:Dn,Modals:Tn,SaveProjectModal:An,ExportModal:On,ARModal:xn,GeneratedAssetsModal:Rn,Modal:Fn,Button:wn,ConfirmDialog:Hn,ARViewer:Un,SceneRoom:Gn,SceneDimensions:Qn,CameraAnimator:Vn,Popover:pn,SlotHost:qn,ModalHost:Nn,ProductInstance:ts,ComponentMesh:os,SceneStage:rs,SceneEnvironment:ns,SelectionBox:ss,FreeMovable:as,PlacementGaps:is,PlacementTargets:cs,SelectionActionPanel:ls},ms={products:Xr,options:Zr,scene:$r,ui:en,placement:on,commerce:rn,http:nn,project:sn,history:an,embed:ln,config:un,copilot:cn,catalog:dn,parts:us,quote:tn,boot:G,mount:Q,load:V,configure:j,version:_,on:D,once:H,off:F,onBackendEvent:w,registerEffectHandler:U,addMiddleware:B};var Vs=ms;export{B as addMiddleware,As as ai,G as boot,dn as catalog,rn as commerce,un as config,j as configure,cn as copilot,Vs as default,ln as embed,Os as evaluation,an as history,nn as http,V as load,Q as mount,F as off,D as on,w as onBackendEvent,H as once,Zr as options,us as parts,on as placement,Xr as products,sn as project,tn as quote,U as registerEffectHandler,$r as scene,en as ui,Da as useAppVersion,sa as useBootStatus,fa as useCatalogMaps,Ns as useComponentRegistry,Fa as useCopilotAvailable,la as useEvaluation,ma as useFormatters,Ea as useGenerateAssets,Ia as useHostedProductState,xa as useIcon,da as useLabel,ua as useLabels,ya as useOptionGating,ks as useOptionSets,La as usePlacementInteraction,ta as usePrice,ga as useProduct,Ys as useProductOrder,Ws as useProductOverrides,ea as useProducts,Pa as useSceneState,$s as useSelection,Xs as useSelectionActions,aa as useSystem,Aa as useSystemConfig,ra as useToolbar,ba as useUIRegion,Ca as useUIRegions,va as useUIState,_ as version};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useSyncExternalStore as h}from"react";const o=new Map,c=new Map;let d=0;const f=new Set;function u(){d+=1;for(const e of f)try{e()}catch{}}const l=e=>e==null?null:String(e).trim().toLowerCase();function s(e,n,r){const t=l(e);if(!t)return()=>{};const i=o.has(t)?{...o.get(t)}:void 0,_={...o.get(t)||{},[n]:r};return o.set(t,_),u(),()=>{const p=o.get(t);!p||p[n]!==r||(i!==void 0?o.set(t,i):o.delete(t),u())}}function y(e){return s(e,"hidden",!0)}function k(e){return s(e,"hidden",!1)}function S(e,n){if(!n||typeof n!="object")return()=>{};const r={};for(const t of["position","rotation","scale"])Array.isArray(n[t])&&n[t].length===3&&(r[t]=n[t].map(Number));return Object.keys(r).length?s(e,"transform",r):()=>{}}function b(e,n){return n==null||n===""?()=>{}:s(e,"materialId",String(n))}function v(e){if(e!==void 0){o.delete(l(e))&&u();return}o.size&&(o.clear(),u())}function w(){return[...c.values()].map(e=>({...e,hidden:!!a(e.slotName,e.name,e.componentId)?.hidden}))}function a(...e){let n=null;for(const r of e){const t=l(r);if(t==null)continue;const i=o.get(t);i&&(n=n?{...n,...i}:{...i})}return n}function M(...e){return h(g,x,x),a(...e)}let m=0;function O(e){m+=1;const n=m;return c.set(n,e),()=>{c.delete(n)}}function g(e){return f.add(e),()=>{f.delete(e)}}const x=()=>d;function A(){o.clear(),c.clear(),u()}export{A as _resetComponentApi,O as _trackMount,v as clearComponentOverrides,a as componentOverrideFor,y as hideComponent,w as listComponents,b as setComponentMaterial,k as showComponent,S as transformComponent,M as useComponentOverride};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const r=[],s=[];let u=null;function p(t){return typeof t!="function"?()=>{}:(r.push(t),()=>{const e=r.indexOf(t);e!==-1&&r.splice(e,1)})}function i(t){return typeof t!="function"?()=>{}:(s.push(t),()=>{const e=s.indexOf(t);e!==-1&&s.splice(e,1)})}function f(t){u=typeof t=="function"?t:null}function l(){return!!u}function x(){r.length=0,s.length=0,u=null}function a(t){let e=t;for(const n of r.slice())try{const o=n(e);o&&(e=o)}catch{}return e}function h(t,e){let n=t;for(const o of s.slice())try{const c=o(n,e);c&&(n=c)}catch{}return n}function y(t,e){return(u||e)(t)}export{x as _resetHttp,a as applyRequestInterceptors,h as applyResponseInterceptors,l as hasTransport,p as onRequest,i as onResponse,y as performRequest,f as setTransport};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const E=.0254,L=.9,P=.95,O=Math.PI/2,D=1,A=t=>t*180/Math.PI,F=t=>t*Math.PI/180;function l(t,r={}){const s=t?.productId??t?.variantId??t,e=r.getDims?.(s),o=r.getProduct?.(s),n=typeof o?.width=="number"&&o.width>0?o.width*.0254:.9,h=typeof o?.depth=="number"&&o.depth>0?o.depth*.0254:.95;return{width:e?.width>0?e.width:n,depth:e?.depth>0?e.depth:h,cx:e?.cx||0,cz:e?.cz||0}}function u(t){return{hx:Math.cos(t),hz:Math.sin(t),fx:-Math.sin(t)*D,fz:Math.cos(t)*D}}function N(t,r){const s=(r?.[0]??0)-(t?.[0]??0),e=(r?.[2]??0)-(t?.[2]??0);return Math.hypot(s,e)<1e-6?null:Math.atan2(e,s)}const I=t=>!!(t?.corner??t?.isCorner);function U(t,r={},s={}){const e=typeof s.turn=="number"?s.turn:O,o=r.openSlots&&r.candidate?l(r.candidate,r).width:0;let n=0,h=0,i=0;const d=[];for(const a of t||[]){if(o){const w=u(n);h+=w.hx*o,i+=w.hz*o}const{width:c,depth:p,cx:f,cz:g}=l(a,r),{hx:x,hz:M,fx:z,fz:_}=u(n),m=I(a);d.push({position:[h+x*(c/2)+z*(p/2)-(x*f+z*g),0,i+M*(c/2)+_*(p/2)-(M*f+_*g)],rotation:[0,-n,0]}),h+=x*c,i+=M*c,m&&(n+=e,h+=Math.cos(n)*p,i+=Math.sin(n)*p)}return d}function T(t,r,s={}){return Array.isArray(t)?t.map((e,o)=>{const n=e?.position||[0,0,0],h=-(e?.rotation?.[1]??0),{hx:i,hz:d}=u(h),a=l(r?.[o],s).width/2;return{heading:h,trailing:[n[0]-i*a,n[1]??0,n[2]-d*a],leading:[n[0]+i*a,n[1]??0,n[2]+d*a]}}):[]}function y(t,r,s={},e=0){const o=T(t,r,s);if(!o.length)return[];const n=e/2,h=o.map((c,p)=>{const{hx:f,hz:g}=u(c.heading);return{index:p,heading:c.heading,position:[c.trailing[0]-f*n,c.trailing[1],c.trailing[2]-g*n]}}),i=o[o.length-1],{hx:d,hz:a}=u(i.heading);return h.push({index:o.length,heading:i.heading,position:[i.leading[0]+d*n,i.leading[1],i.leading[2]+a*n]}),h}var W={dimsOf:l,axesFor:u,headingOf:N,isCorner:I,chain:U,edgesOf:T,gapCentres:y,toDegrees:A,toRadians:F};export{D as FRONT_SIGN,O as TURN,u as axesFor,U as chain,W as default,l as dimsOf,T as edgesOf,y as gapCentres,N as headingOf,I as isCorner,A as toDegrees,F as toRadians};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import S from"./be337ddda5.js";import v from"./9c6c598569.js";import C from"./872c4302e0.js";import A from"./8f60e5059a.js";import L from"./1fac915f8b.js";import I from"./d94df858ea.js";import{dispatch as h,setRefetchCatalogHandler as U,setFocusProvider as F,setRejectionHandler as $,setEvaluationStateHandler as q}from"./776277593f.js";import{coalescedDispatch as _}from"./4e1db1e3b0.js";import{dispatchEvents as Q,dispatchCustomEffects as G}from"./970313b92b.js";import{emitEvent as x,EVENTS as P}from"./2e366d7386.js";import{setConfigState as d,setInitial as Y,resetConfigState as z}from"./817d930a49.js";import{buildCanonicalState as m,applyResolvedToScene as k,applyRemovedPlacements as N,applyAddedPlacements as V,applyWarnings as J,applyMessages as w,applyWallMountedPlacements as X,applyPresetPieceTrims as Z,applyInitialSelections as ee,getHostedProductSpawnSelections as te,applyResolvedPieceAdds as oe,hydrateProductInstancesFromState as H,syncOwnedInstanceVariants as re,applyOwnedTransforms as ne}from"./bcd44b4040.js";import{applyBackendPricing as j}from"./67f6338a4a.js";import{fetchInitialConfiguration as ae}from"./fbd844f2d1.js";import*as p from"./3c916f744f.js";import{resolveReplaceTarget as se}from"./4d7a0d1897.js";import{authHeaders as le,isAuthFailure as ce,reportAuthFailure as ie}from"./431a2d8618.js";import{assertLicensed as ue}from"./fe235d7160.js";import{setApiKey as dt,setChannelId as mt,getChannelId as pt,setEmbedSlug as ft,getEmbedSlug as gt,setShareToken as St,getShareToken as yt}from"./431a2d8618.js";import{isReadOnlyCredential as xt,onReadOnlyChange as Pt}from"./431a2d8618.js";import{setTokenProvider as Ct,clearSessionToken as It,getSessionScope as Tt}from"./33fa2c8ca2.js";import{getApiBaseUrl as de}from"./8ade32d067.js";async function me(){const e=S.getState().systemId;try{const t=`/api/v1/systems/${e}/`;await ue(t);const r=await fetch(`${de()}${t}`,{cache:"no-store",headers:{...le(t)}});ce(r)&&await ie(r,{url:t,method:"GET"});const o=await r.json(),n=o?.catalogVersion??o?.catalog_version??null;return n!=null&&S.setState({catalogVersion:n}),{catalogVersion:n}}catch{return{catalogVersion:S.getState().catalogVersion}}}let O=0;function M(e){O=Math.max(0,O+(e?1:-1));try{A.setState({isEvaluating:O>0})}catch{}}function W(e){const t=e?.uiToggles??e?.ui_toggles??null;if(!(!t||typeof t!="object"))try{C.getState().mergeSystemUiToggles(t)}catch{}}function pe(e){const t=e?.placementBoundsExclude??e?.placement_bounds_exclude??e?.state?.placementBoundsExclude??e?.state?.placement_bounds_exclude??e?.system?.placementBoundsExclude??e?.system?.placement_bounds_exclude??null,r=t?.componentIds??t?.component_ids??null,o=Array.isArray(r)?r.map(n=>String(n)):[];try{C.setState({placementBoundsExcludeIds:o})}catch{}}async function fe({onRefetchCatalog:e}={}){U(e||me),F(he),$(t=>{try{A.getState().showWarning?.(B(t))}catch{}}),q(M),ge(),d(m())}let T=null,R=null;function ge(){if(T){try{T()}catch{}T=null}T=v.subscribe(e=>`${e.selectedInstanceId??""}|${e.selectedComponentId??""}`,()=>{R&&clearTimeout(R),R=setTimeout(()=>{ye()},120)})}function Se(){if(R&&(clearTimeout(R),R=null),T){try{T()}catch{}T=null}}async function ye(){let e=null;try{e=v.getState().selectedInstanceId}catch{}try{if(A.getState().isLayoutLoading)return null}catch{}d(m());let t=null;try{t=await _(p.noop())}catch{return null}return g(t)}function he(){const e=v.getState(),t=e.selectedInstanceId;if(t==null)return{};if(String(t).endsWith("__host")){const a=String(t).replace(/__host$/,""),s=(e.productInstances||{})[a]||null,l=C.getState(),c=s?l.getProduct?.(s.variantId??s.productId):null,i=c?.hostVariants??c?.host_variants,u=Array.isArray(i)?i.find(b=>b?.isDefault??b?.is_default)??i[0]:null,f=u?.hostVariantId??u?.host_variant_id??null,y={placementId:String(t)};return f!=null&&(y.variantId=f),y.componentId=e.selectedComponentId??null,y}const r=(e.productInstances||{})[String(t)]||null,o=r?.variantId??r?.productId??null,n={placementId:String(t)};return o!=null&&(n.variantId=o),n.componentId=e.selectedComponentId??null,n}async function xe(e,t,r,o){const n=e&&typeof e=="object"?e:{placementId:e,optionSetId:t,optionId:r,...o||{}},{placementId:a,optionSetId:s,optionId:l,optimistic:c,rollback:i}=n;if(a==null||s==null||l==null)return null;try{if(v.getState().productInstances?.[String(a)]?.locked)return A.getState().showWarning?.("This item is locked and can\u2019t be changed."),null}catch{}d(m());let u=null;try{u=await _(p.selectOption(a,s,l),{optimistic:c,rollback:i})}catch{return null}return g(u)}async function We(e){if(e==null)return null;const{osId:t,assignments:r}=te(),o=r.find(s=>String(s.instanceId)===String(e));if(t==null||!o)return null;d(m({excludeHostedProductInstanceId:e}));const n=Number(t)||t;let a=null;try{a=await h(p.selectOption(o.pieceId,n,o.optionId))}catch{return null}return g(a)}async function Ke(e,t,r){const o=e&&typeof e=="object"?e:{optionSetId:e,optionId:t,...r||{}},{optionSetId:n,optionId:a,optimistic:s,rollback:l}=o;if(n==null||a==null)return null;const c=I.getState(),i=c.sceneSelections?.[n];c.setSceneSelection?.(n,a),d(m());let u=null;try{u=await _(p.selectSystemOption(n,a),{optimistic:s,rollback:l})}catch{return I.getState().setSceneSelection?.(n,i),null}return u&&u.rejected&&I.getState().setSceneSelection?.(n,i),g(u)}async function $e({optionSetId:e,optionId:t,overrides:r={}}={}){if(e==null||t==null)return null;const o=C.getState().options||{},n=o[t]||o[String(t)];if(!n)return null;const a=n.value??n.valueText??n.value_text,s=C.getState().products||{},l=a!=null?s[a]||s[String(a)]:null;if(!l&&r.productGraphId==null)return null;const c=r.productGraphId??l?.productGraph??l?.product_graph??l?.productGraphId??null,i=r.placementGroup??l?.placementGroup??l?.placement_group??null,u=r.variantId??a,f=r.replacePlacementId!==void 0?r.replacePlacementId:se({placementGroup:i});return ve({productGraphId:c,variantId:u,placementGroup:i,position:r.position,replace:f!=null,replacePlacementId:f})}async function qe(e,t,r){const o=e&&typeof e=="object"?e:{placementId:e,variantId:t,...r||{}},{placementId:n,variantId:a,optimistic:s,rollback:l}=o;if(n==null||a==null)return null;d(m());let c=null;try{c=await _(p.changeVariant(n,a),{optimistic:s,rollback:l})}catch{return null}return g(c)}function K(){let e=null,t=null;try{e=S.getState().systemId??null}catch{}try{const r=v.getState(),o=S.getState();t=r.activeSceneConfigId||o.defaultPresetId||Object.keys(o.sceneConfigurations||{})[0]||null}catch{}return e==null?null:`${e}|${t??""}`}let E=null;const D=new Set;async function Ye({force:e=!1}={}){const t=K();if(!e&&t!=null&&D.has(t))return null;if(E)return E;E=Pe(),M(!0);try{const r=await E;t!=null&&D.add(t);const o=K();return o!=null&&D.add(o),r}finally{E=null,M(!1)}}async function Pe(){const e=S.getState().systemId;if(e==null)return null;const t=v.getState().activeSceneConfigId??null;let r=null;try{r=await ae({systemId:e,presetId:t})}catch{return null}if(W(r?.system),pe(r),!r?.state)return null;Y(r);try{ee(r.state)}catch{}try{w(r.messages)}catch{}try{w(r.customDiagnostics)}catch{}try{Q(r.events)}catch{}try{G(r.customEffects)}catch{}try{const o=r.state.sceneId??r.state.scene_id;o!=null&&v.getState().setActiveSceneId?.(o)}catch{}try{Z(r.removedPlacements)}catch{}try{N(r.removedPlacements)}catch{}try{X(r.state)}catch{}try{V(r.addedPlacements,r.state)}catch{}try{H(r.state)}catch{}try{k(r.state)}catch{}try{ne(r.state)}catch{}try{j(r.pricing)}catch{}try{I.getState().markSceneSelectionsSettled?.()}catch{}try{x(P.READY,{systemId:r?.state?.systemId??null})}catch{}return r}function B(e){const r=(Array.isArray(e?.errors)?e.errors:[]).map(n=>typeof n=="string"?n:n?.message??n?.detail??null).filter(Boolean),o=[...new Set(r)];return o.length?o.join(" "):"That change isn\u2019t allowed by the current design rules \u2014 reverted."}function ze(e){const t=A.getState();if(t.isLayoutLoading||t._snapshotOverridesOnLoadComplete){try{t.showWarning?.(B(e))}catch{}return}try{t.showError?.(B(e))}catch{}if((L.getState().past||[]).length>0)try{L.getState().undo()}catch{}}async function Je(){try{d(m())}catch{}return null}function g(e){if(W(e?.system),e&&e.applied&&e.resolvedState&&(k(e.resolvedState),N(e.removedPlacements),V(e.addedPlacements,e.resolvedState),oe(e.resolvedState),H(e.resolvedState),re(e.resolvedState),J(e.warnings)),e){try{w(e.messages)}catch{}try{w(e.customDiagnostics)}catch{}try{Q(e.events)}catch{}try{G(e.customEffects)}catch{}try{e.pricing&&j(e.pricing)}catch{}}return e}async function ve({productGraphId:e,variantId:t,placementGroup:r,position:o,sequence:n,hostPlacementId:a,hostVariantId:s,replace:l,replacePlacementId:c,excludePieceIndex:i,optimistic:u,rollback:f}={}){d(m(i!=null?{excludePieceIndex:i}:{}));let y=null;try{y=await h(p.addPlacement({productGraphId:e,variantId:t,placementGroup:r,position:o,sequence:n,hostPlacementId:a,hostVariantId:s,replace:l,replacePlacementId:c}),{optimistic:u,rollback:f})}catch{return x(P.ERROR,{op:"addPlacement"}),null}const b=g(y);return y?.applied&&x(P.PRODUCT_ADDED,{variantId:t,productGraphId:e,placementGroup:r,placementIds:Object.keys(y?.resolvedState?.placements||{})}),b}async function Xe(e,{optimistic:t,rollback:r}={}){if(e==null)return null;d(m());let o=null;try{o=await h(p.removePlacement(e),{optimistic:t,rollback:r})}catch{return x(P.ERROR,{op:"removePlacement"}),null}const n=g(o);return o?.applied&&x(P.PRODUCT_REMOVED,{placementId:e}),n}async function Ze({placementId:e,sequence:t,placementGroup:r,position:o,rotation:n,hostPlacementId:a,hostVariantId:s,optimistic:l,rollback:c}={}){if(e==null)return null;if(!(t!=null&&Number.isInteger(Number(t))))return o!=null||n!=null?Ce(e,o,n):null;d(m());let u=null;try{u=await h(p.movePlacement({placementId:e,sequence:Number(t),placementGroup:r,position:o,rotation:n,hostPlacementId:a,hostVariantId:s}),{optimistic:l,rollback:c})}catch{return x(P.ERROR,{op:"movePlacement"}),null}const f=g(u);return u?.applied&&x(P.PRODUCT_MOVED,{placementId:e,sequence:Number(t)}),f}async function et(e,{optimistic:t,rollback:r}={}){if(e==null)return null;d(m());let o=null;try{o=await h(p.applyPreset(e),{optimistic:t,rollback:r})}catch{return x(P.ERROR,{op:"applyPreset"}),null}const n=g(o);return o?.applied&&x(P.LAYOUT_CHANGED,{presetId:e}),n}async function tt(e,{optimistic:t,rollback:r}={}){if(!e)return null;let o=null;try{o=await h(p.restoreState(e),{optimistic:t,rollback:r})}catch{return null}return g(o)}async function ot(e,t,r,{optimistic:o,rollback:n}={}){d(m());let a=null;try{a=await _(p.setRoomDimensions(e,t,r),{optimistic:o,rollback:n})}catch{return null}return g(a)}async function rt(e,t,{optimistic:r,rollback:o}={}){if(e==null||t==null)return null;d(m());let n=null;try{n=await h(p.clearSelection(e,t),{optimistic:r,rollback:o})}catch{return null}return g(n)}async function nt(e,{optimistic:t,rollback:r}={}){if(e==null)return null;const o=I.getState(),n=o.sceneSelections?.[e],a=C.getState(),s=a.features?.[e]??a.features?.[String(e)],l=s?.defaultOption??s?.default_option_id??s?.default_option??void 0;o.setSceneSelection?.(e,l),d(m());let c=null;try{c=await h(p.clearSystemSelection(e),{optimistic:t,rollback:r})}catch{return I.getState().setSceneSelection?.(e,n),null}if(c&&c.rejected)I.getState().setSceneSelection?.(e,n);else{const i=c?.defaultOptionOverrides?.[e]??c?.defaultOptionOverrides?.[String(e)];i!=null&&I.getState().setSceneSelection?.(e,i)}return g(c)}function Ce(e,t,r){if(e==null)return null;const o=String(e),n=v.getState(),a=n.productInstances?.[o];if(!a)return null;const s=Array.isArray(t)?t:null,l=Array.isArray(r)?r:null;if(!s&&!l)return null;s&&n.updateInstancePosition(o,s),l&&n.updateInstanceRotation(o,l);const c=C.getState(),i=c.getProduct?.(a.variantId)||c.getProduct?.(a.productId),u=i?.hostVariants??i?.host_variants,y=!(a.positionedAbove!=null||Array.isArray(u)&&u.length>0)&&!!i?.movable;return d(m()),h(p.setTransform(o,s??a.position,l??a.rotation)),{placementId:o,position:s??a.position??null,rotation:l??a.rotation??null,freeMovable:y}}async function Ie(e=null){const t=C.getState(),r=S.getState(),o=typeof window<"u"&&window.location?new URLSearchParams(window.location.search).get("system"):null,n=e??o??null;await t.loadCatalog({systemId:n}),await r.loadConfigurations(n??e);try{const s=S.getState(),l=s.systemDomainDefaults??s.systemRoom?.domain_defaults??null;if(l){const{loadDomainDefaults:c}=await import("./ee242c0099.js");c(l)}}catch{}return fe(),{systemId:S.getState().systemId,sceneConfigurations:S.getState().sceneConfigurations}}const at=(e=null)=>Ie(e);function st(){return S.getState().systemId??null}const lt=({pieceIndex:e,...t}={})=>xe({placementId:e,...t});function ct(){U(null),F(null),Se(),z()}import{dispatch as At}from"./776277593f.js";import{subscribe as Et,getVersion as bt,getConfigState as wt,getResolved as Ot,getBindingAvailable as Mt,getPlacementBinding as Dt,getPlacementBindings as Bt,getEffectiveSelections as Lt,resetConfigState as Ut}from"./817d930a49.js";import{getPlacementOverrides as Qt,getSlotOverride as Gt,resolveComponentTransform as kt,resolveComponentVisibility as Nt,resolveComponentMaterial as Vt}from"./c3b8f1973b.js";export*from"./3c916f744f.js";import{buildCanonicalState as Wt,hostedProductPlacementId as Kt,getHostedProductSpawnSelections as $t,applySceneConfigDefaults as qt,queuePieceAdd as Yt,dequeuePieceAdd as zt,wasPieceAddConsumed as Jt}from"./bcd44b4040.js";import{recomputePrice as Zt,applyBackendPricing as eo}from"./67f6338a4a.js";import{on as oo,registerEffectHandler as ro,_resetEventBus as no}from"./970313b92b.js";import{registerComponent as so,resolveComponent as lo,hasComponent as co,listComponentOverrides as io,_resetComponents as uo}from"./882bc739c8.js";import{registerSlot as po,listSlots as fo,hasSlot as go,SlotHost as So,_resetSlots as yo}from"./73f7d65985.js";import{use as xo,runIntent as Po,listMiddleware as vo,INTENTS as Co,_resetMiddleware as Io}from"./6d238282c1.js";import{onEvent as Ro,onceEvent as Ao,offEvent as _o,listEvents as Eo,emitEvent as bo,EVENTS as wo,_resetEvents as Oo}from"./2e366d7386.js";import{onRequest as Do,onResponse as Bo,setTransport as Lo,hasTransport as Uo,_resetHttp as Fo}from"./a3f18e76fe.js";import{readBom as Go,readQuote as ko,readGeneratedAssets as No,setMetadata as Vo,readMetadata as Ho,serializeMetadata as jo,restoreMetadata as Wo,METADATA_LIMITS as Ko,_resetMetadata as $o}from"./3656ffa1b8.js";import{collectGenericBom as Yo,collectGenericBom as zo,collectPlacementParts as Jo}from"./81802759ca.js";import{readBounds as Zo,onSettled as er}from"./da7b5f450d.js";import{registerComponentRenderer as or,resolveComponentRenderer as rr,listComponentRenderers as nr,registerMaterialResolver as ar,listMaterialResolvers as sr,registerInteraction as lr,runInteraction as cr,listInteractions as ir,onSceneReady as ur,getSceneContext as dr,_resetSceneRegistry as mr}from"./95a44ebec2.js";import{registerAction as fr,runAction as gr,listActions as Sr,actions as yr,registerIcon as hr,resolveIcon as xr,listIcons as Pr,hasIcon as vr,useIcon as Cr,useHasIcon as Ir,registerModal as Tr,listModals as Rr,ModalHost as Ar,openModal as _r,_resetUiRegistry as Er}from"./09c4973968.js";import{setLabels as wr,getLabel as Or,getLabels as Mr,useLabel as Dr,setLocale as Br,getLocale as Lr,setCurrency as Ur,getCurrency as Fr,isRtl as Qr,formatMoney as Gr,formatNumber as kr,useFormatters as Nr,useLabels as Vr,_resetLabels as Hr}from"./28d887bf8a.js";import{computeTargets as Wr,resolveTarget as Kr,registerTargetRenderer as $r,resolveTargetRenderer as qr,resolveInsertSequence as Yr,_resetTargets as zr}from"./58e6419ba8.js";import{default as Xr}from"./205827c5c8.js";import{registerQuoteTemplate as en,resolveQuoteTemplate as tn,hasQuoteTemplate as on,useQuoteTemplate as rn,setQuoteTemplate as nn,setBackendQuoteTemplate as an,activeQuoteTemplateKey as sn,activeQuoteDesignKey as ln,listQuoteTemplates as cn,_resetQuoteTemplate as un}from"./4ba4f544b9.js";import{useUIRegion as mn,useUIRegions as pn,getUIRegions as fn,UI_REGIONS as gn}from"./9840b9ce12.js";import{default as yn}from"./b976df09ec.js";import{default as xn}from"./6c0a2572dd.js";import{default as vn}from"./cdb4a0f7b3.js";import{default as In}from"./0f7c8345a8.js";import{default as Rn}from"./82a8a4bc35.js";import{default as _n}from"./e379e0039b.js";import{registerRoute as bn,resolveRoute as wn,hasRoute as On,listRoutes as Mn,useRouteRegistry as Dn,_resetRoutes as Bn}from"./61e0c0c9b5.js";import{hideComponent as Un,showComponent as Fn,transformComponent as Qn,setComponentMaterial as Gn,clearComponentOverrides as kn,listComponents as Nn,componentOverrideFor as Vn,useComponentOverride as Hn,_resetComponentApi as jn}from"./a3c983d431.js";import{setToggles as Kn,getToggles as $n,useHostToggles as qn,_resetToggles as Yn}from"./41ed5985ad.js";import{registerAssetResolver as Jn,hasAssetResolver as Xn,resolveAssetUrl as Zn,_resetAssetResolver as ea}from"./cec035efb1.js";import{registerButton as oa}from"./f1b3b2622a.js";import{SaveProjectButton as na,GenerateAssetsButton as aa,LiveStatusPanel as sa,ChatBar as la,NotificationContainer as ca,EvaluatingOverlay as ia,Modals as ua,SaveProjectModal as da,ExportModal as ma,ARModal as pa,GeneratedAssetsModal as fa,Header as ga,SceneToolbar as Sa,Sidebar as ya,SidebarFrame as ha,OptionSidebar as xa,LoadingScreen as Pa,ConfirmDialog as va,Modal as Ca,Button as Ia,ARViewer as Ta,SceneRoom as Ra,SceneDimensions as Aa,CameraAnimator as _a}from"./64e9020b49.js";import{default as ba}from"./921bf270dd.js";import{registerLayout as Oa,resolveLayout as Ma,hasLayout as Da,listLayouts as Ba,useLayoutRegistry as La,setLayout as Ua,activeLayoutKey as Fa,_resetLayouts as Qa}from"./31ea036f5c.js";import{setQuoteDocument as ka,getQuoteDocument as Na,hasQuoteDocument as Va,resetQuoteDocument as Ha,subscribeQuoteDocument as ja,QUOTE_COLUMNS as Wa,COLUMN_DEFS as Ka}from"./12b8165d6d.js";import{useQuoteDocument as qa}from"./d464da28a5.js";import{generateSilo as za,generateLifestyle as Ja,generateAr as Xa,generateBomPdf as Za,generateAll as es,generationStatus as ts,waitForAssets as os,ASSET_GROUPS as rs}from"./5d05e8982e.js";import{buildQuotePdfBlob as as,saveQuotePdf as ss,registerQuotePdf as ls,registerQuotePdfEndpoint as cs,hasQuotePdf as is,listQuotePdfBuilders as us,_resetQuotePdf as ds}from"./d20718159b.js";import{configureSDK as ps}from"./db4afd43c9.js";import{default as gs}from"./7206ce49c6.js";import{default as ys}from"./d0f9681634.js";import{default as xs}from"./2990ba64d6.js";import{useSelection as vs,useProducts as Cs,usePrice as Is}from"./16a399703e.js";import{getProduct as Rs,getProductName as As,getPlacedProductName as _s,getProductVariants as Es,listProducts as bs,getOptionSet as ws,getOption as Os,useProduct as Ms,listOptionSets as Ds,listSceneOptionSets as Bs,listProductOptionSets as Ls,listOptions as Us,listMaterials as Fs,getMaterial as Qs}from"./1458417bdb.js";import{useBootStatus as ks,useSystem as Ns,endBootLoading as Vs,markThemeReady as Hs,setEmbedded as js,setSystemTheme as Ws}from"./066fc9aa40.js";import{default as $s}from"./60d697292c.js";import{default as Ys}from"./811b403d43.js";import{default as Js}from"./6ba86aa3b8.js";import{default as Zs}from"./3fb3ab6757.js";import{OptionThumbnail as tl,FinishThumbnail as ol,LayoutThumbnail as rl,HostedProductThumbnail as nl,WidthSlider as al,ColorSwatch as sl,FrameSizeButton as ll,ProductFeaturePickers as cl}from"./c12c112c6f.js";import{loadWallMaterial as ul,getConcreteWallMaterial as dl,getWallBoxMaterials as ml,createWallDiffuse as pl,createWallNormalMap as fl,createWallRoughnessMap as gl}from"./22bd38ddcf.js";import{SelectionBox as yl,SELECTION_COLOR as hl,SelectionActionPanel as xl,ProductInstance as Pl,ComponentMesh as vl,FreeMovable as Cl,PlacementGaps as Il,SceneStage as Tl,SceneEnvironment as Rl,applyEnvironmentToRenderer as Al}from"./8a3a57c008.js";import{PLACEMENT_TYPES as El,getPlacementType as bl,resolveReplaceTarget as wl}from"./4d7a0d1897.js";import{FEATURE_ACTIONS as Ml,resolveFeatureAction as Dl,isAddFeature as Bl}from"./8c27edda0f.js";import{getPlacementStrategy as Ul,resolvePlacementStrategyId as Fl,setPlacementStrategy as Ql,clearPlacementStrategy as Gl,getPlacementStrategyOverride as kl,resolvePlacementStrategyConfig as Nl,setPlacementStrategyConfig as Vl,DEFAULT_STRATEGY_ID as Hl,STRATEGIES as jl}from"./281cf952fa.js";import{default as Kl}from"./a493e9aa8f.js";import{registerPlacementStrategy as ql,hasPlacementStrategy as Yl,listPlacementStrategies as zl,currentConfiguratorKey as Jl,_resetPlacementStrategies as Xl}from"./281cf952fa.js";import{enforceCorners as ec}from"./388cadacbd.js";import{resolveAddMode as oc,armPlacement as rc,disarmPlacement as nc,getPendingPlacement as ac,computeGaps as sc}from"./ab6c80484f.js";import{armHostedProduct as cc,disarmHostedProduct as ic}from"./ab6c80484f.js";import{usePlacementInteraction as dc}from"./4b8958aa4c.js";import{bootConfigurator as pc}from"./371ed78aa2.js";import{setAllowedOrigins as gc,getAllowedOrigins as Sc}from"./1e243363f6.js";import{mountConfigurator as hc}from"./1870fc037b.js";import*as xc from"./d30f1f506e.js";export*from"./2cafe3274b.js";import{registerCommand as Cc,runCommand as Ic,hasCommand as Tc,listCommands as Rc,resetCommands as Ac,COMMANDS as _c}from"./d6851ea979.js";import{captureDesignViews as bc,buildDesignPdf as wc,saveProject as Oc,loadProject as Mc,restoreProject as Dc,parseShareToken as Bc,buildShareUrl as Lc,adoptShareTokenInUrl as Uc,generateArForCurrentScene as Fc}from"./d30f1f506e.js";import{default as Gc}from"./be337ddda5.js";import{default as Nc}from"./872c4302e0.js";import{default as Hc}from"./9c6c598569.js";import{default as Wc}from"./8f60e5059a.js";import{default as $c}from"./1fac915f8b.js";import{default as Yc}from"./3f37665dd1.js";import{default as Jc,fetchEmbedBoot as Xc}from"./79a397bb92.js";import{getApiKey as ei}from"./431a2d8618.js";import{setApiBaseUrl as oi,getApiBaseUrl as ri}from"./8ade32d067.js";import{setServiceUrls as ai}from"./9544661159.js";import{applyTheme as li,applyThemeById as ci,themeMode as ii,normalizeThemeId as ui,themeLayoutKey as di}from"./5c9fd9201c.js";import{validateTheme as pi,checkThemeContrast as fi,contrastRatio as gi,applyCustomCss as Si,applyFontUrl as yi}from"./b1349d5a21.js";import{default as xi}from"./f11a45a150.js";import{setEmbedContext as vi,trackEmbed as Ci}from"./0af28430ab.js";import{CopilotContext as Ti,useCopilotAvailable as Ri}from"./672404d987.js";import{checkCopilotAvailability as _i,getCopilotRuntimeUrl as Ei,getCopilotWarmupUrl as bi,getCopilotApiUrl as wi,setCopilotApiUrl as Oi}from"./fe58a84b85.js";export{pa as ARModal,Ta as ARViewer,rs as ASSET_GROUPS,Ia as Button,Ka as COLUMN_DEFS,_c as COMMANDS,_a as CameraAnimator,la as ChatBar,sl as ColorSwatch,vl as ComponentMesh,Rn as ConfigurationSummary,va as ConfirmDialog,Ti as CopilotContext,Hl as DEFAULT_STRATEGY_ID,vn as DefaultQuoteTemplate,wo as EVENTS,ia as EvaluatingOverlay,ma as ExportModal,Ml as FEATURE_ACTIONS,ol as FinishThumbnail,ll as FrameSizeButton,Cl as FreeMovable,aa as GenerateAssetsButton,fa as GeneratedAssetsModal,ga as Header,nl as HostedProductThumbnail,Co as INTENTS,rl as LayoutThumbnail,sa as LiveStatusPanel,Pa as LoadingScreen,Ko as METADATA_LIMITS,Ca as Modal,Ar as ModalHost,ua as Modals,ca as NotificationContainer,Zs as OptionSetSection,xa as OptionSidebar,tl as OptionThumbnail,El as PLACEMENT_TYPES,Il as PlacementGaps,Xr as PlacementTargets,gs as Popover,cl as ProductFeaturePickers,Pl as ProductInstance,Wa as QUOTE_COLUMNS,_n as QuoteQr,In as QuoteRenders,xn as QuoteView,hl as SELECTION_COLOR,jl as STRATEGIES,na as SaveProjectButton,da as SaveProjectModal,Aa as SceneDimensions,Rl as SceneEnvironment,Ra as SceneRoom,Tl as SceneStage,Sa as SceneToolbar,xl as SelectionActionPanel,yl as SelectionBox,ya as Sidebar,ha as SidebarFrame,So as SlotHost,gn as UI_REGIONS,al as WidthSlider,ea as _resetAssetResolver,jn as _resetComponentApi,uo as _resetComponents,no as _resetEventBus,Oo as _resetEvents,Fo as _resetHttp,Hr as _resetLabels,Qa as _resetLayouts,$o as _resetMetadata,Io as _resetMiddleware,Xl as _resetPlacementStrategies,ds as _resetQuotePdf,un as _resetQuoteTemplate,Bn as _resetRoutes,mr as _resetSceneRegistry,yo as _resetSlots,zr as _resetTargets,Yn as _resetToggles,Er as _resetUiRegistry,yr as actions,Fa as activeLayoutKey,ln as activeQuoteDesignKey,sn as activeQuoteTemplateKey,ve as addProduct,$e as addProductFromOption,Uc as adoptShareTokenInUrl,Jc as apiService,eo as applyBackendPricing,Si as applyCustomCss,Al as applyEnvironmentToRenderer,yi as applyFontUrl,et as applyLayoutPreset,qt as applySceneConfigDefaults,li as applyTheme,ci as applyThemeById,cc as armHostedProduct,rc as armPlacement,pc as bootConfigurator,Wt as buildCanonicalState,wc as buildDesignPdf,he as buildFocusContext,as as buildQuotePdfBlob,Lc as buildShareUrl,bc as captureDesignViews,qe as changeProductVariant,_i as checkCopilotAvailability,fi as checkThemeContrast,kn as clearComponentOverrides,Gl as clearPlacementStrategy,rt as clearProductOption,nt as clearSceneOption,It as clearSessionToken,zo as collectBom,Yo as collectGenericBom,Jo as collectPlacementParts,Vn as componentOverrideFor,sc as computeGaps,Wr as computeTargets,ps as configureSDK,gi as contrastRatio,pl as createWallDiffuse,fl as createWallNormalMap,gl as createWallRoughnessMap,Jl as currentConfiguratorKey,zt as dequeuePieceAdd,ic as disarmHostedProduct,nc as disarmPlacement,At as dispatch,bo as emitEvent,Vs as endBootLoading,ec as enforceCorners,Xc as fetchEmbedBoot,Gr as formatMoney,kr as formatNumber,es as generateAll,Xa as generateArAsset,Fc as generateArForCurrentScene,Za as generateBomPdf,Ja as generateLifestyle,za as generateSilo,ts as generationStatus,ri as getApiBaseUrl,ei as getApiKey,Mt as getBindingAvailable,pt as getChannelId,dl as getConcreteWallMaterial,wt as getConfigState,wi as getCopilotApiUrl,Ei as getCopilotRuntimeUrl,bi as getCopilotWarmupUrl,Fr as getCurrency,Lt as getEffectiveSelections,gt as getEmbedSlug,$t as getHostedProductSpawnSelections,Sc as getIframeAllowedOrigins,Or as getLabel,Mr as getLabels,Lr as getLocale,Qs as getMaterial,Os as getOption,ws as getOptionSet,ac as getPendingPlacement,_s as getPlacedProductName,Dt as getPlacementBinding,Bt as getPlacementBindings,Qt as getPlacementOverrides,Ul as getPlacementStrategy,kl as getPlacementStrategyOverride,bl as getPlacementType,Rs as getProduct,As as getProductName,Es as getProductVariants,Na as getQuoteDocument,Ot as getResolved,dr as getSceneContext,st as getSelectedSystemId,Tt as getSessionScope,yt as getShareToken,Gt as getSlotOverride,$n as getToggles,fn as getUIRegions,bt as getVersion,ml as getWallBoxMaterials,Xn as hasAssetResolver,Tc as hasCommand,co as hasComponent,vr as hasIcon,Da as hasLayout,Yl as hasPlacementStrategy,Va as hasQuoteDocument,is as hasQuotePdf,on as hasQuoteTemplate,On as hasRoute,go as hasSlot,Uo as hasTransport,Un as hideComponent,Kt as hostedProductPlacementId,fe as initConfigEngine,Bl as isAddFeature,xt as isReadOnlyCredential,Qr as isRtl,Sr as listActions,Rc as listCommands,io as listComponentOverrides,nr as listComponentRenderers,Nn as listComponents,Eo as listEvents,Pr as listIcons,ir as listInteractions,Ba as listLayouts,sr as listMaterialResolvers,Fs as listMaterials,vo as listMiddleware,Rr as listModals,Ds as listOptionSets,Us as listOptions,zl as listPlacementStrategies,Ls as listProductOptionSets,bs as listProducts,us as listQuotePdfBuilders,cn as listQuoteTemplates,Mn as listRoutes,Bs as listSceneOptionSets,fo as listSlots,Ie as loadConfigurator,Mc as loadProject,ul as loadWallMaterial,Hs as markThemeReady,hc as mountConfigurator,Ze as moveProduct,ui as normalizeThemeId,_o as offEvent,oo as on,Ro as onEvent,Pt as onReadOnlyChange,Do as onRequest,Bo as onResponse,ur as onSceneReady,er as onSceneSettled,Ao as onceEvent,_r as openModal,Bc as parseShareToken,lt as pilotFinishSelect,We as placeHostedProduct,Kl as placementKit,xc as projects,Yt as queuePieceAdd,Go as readBom,No as readGeneratedAssets,Ho as readMetadata,ko as readQuote,Zo as readSceneBounds,Zt as recomputePrice,ye as reevaluateForFocus,Je as refreshCanonicalState,fr as registerAction,Jn as registerAssetResolver,oa as registerButton,Cc as registerCommand,so as registerComponent,or as registerComponentRenderer,ro as registerEffectHandler,hr as registerIcon,lr as registerInteraction,Oa as registerLayout,ar as registerMaterialResolver,Tr as registerModal,ql as registerPlacementStrategy,ls as registerQuotePdf,cs as registerQuotePdfEndpoint,en as registerQuoteTemplate,bn as registerRoute,po as registerSlot,$r as registerTargetRenderer,Xe as removeProduct,Ac as resetCommands,Ut as resetConfigState,Ha as resetQuoteDocument,oc as resolveAddMode,Zn as resolveAssetUrl,lo as resolveComponent,Vt as resolveComponentMaterial,rr as resolveComponentRenderer,kt as resolveComponentTransform,Nt as resolveComponentVisibility,Dl as resolveFeatureAction,xr as resolveIcon,Yr as resolveInsertSequence,Ma as resolveLayout,Nl as resolvePlacementStrategyConfig,Fl as resolvePlacementStrategyId,tn as resolveQuoteTemplate,wl as resolveReplaceTarget,wn as resolveRoute,Kr as resolveTarget,qr as resolveTargetRenderer,tt as restoreConfiguration,Wo as restoreMetadata,Dc as restoreProject,gr as runAction,Ic as runCommand,Po as runIntent,cr as runInteraction,Oc as saveProject,ss as saveQuotePdf,Ye as seedInitialState,xe as selectOptionForProduct,Ke as selectOptionForScene,at as selectSystem,jo as serializeMetadata,oi as setApiBaseUrl,dt as setApiKey,an as setBackendQuoteTemplate,mt as setChannelId,Gn as setComponentMaterial,Oi as setCopilotApiUrl,Ur as setCurrency,vi as setEmbedContext,ft as setEmbedSlug,js as setEmbedded,gc as setIframeAllowedOrigins,wr as setLabels,Ua as setLayout,Br as setLocale,Vo as setMetadata,Ql as setPlacementStrategy,Vl as setPlacementStrategyConfig,ka as setQuoteDocument,nn as setQuoteTemplate,ot as setRoomDimensions,ai as setServiceUrls,St as setShareToken,Ws as setSystemTheme,Kn as setToggles,Ct as setTokenProvider,Lo as setTransport,Fn as showComponent,Et as subscribe,ja as subscribeQuoteDocument,ct as teardownConfigEngine,di as themeLayoutKey,ii as themeMode,Ci as trackEmbed,Qn as transformComponent,Ce as transformProduct,xo as use,xi as useAppVersion,ks as useBootStatus,Hn as useComponentOverride,Gc as useConfigurationGraphStore,Ri as useCopilotAvailable,Nr as useFormatters,ba as useGenerateAssets,Yc as useGeneratedAssetsStore,Ir as useHasIcon,qn as useHostToggles,Cr as useIcon,Dr as useLabel,Vr as useLabels,La as useLayoutRegistry,Nc as useObjectGraphStore,xs as useOptionSets,dc as usePlacementInteraction,Is as usePrice,Ms as useProduct,$s as useProductOrder,Js as useProductOverrides,Cs as useProducts,qa as useQuoteDocument,rn as useQuoteTemplate,yn as useReadOnly,Dn as useRouteRegistry,Hc as useSceneGraphStore,vs as useSelection,Ys as useSelectionActions,Ns as useSystem,ys as useToolbar,mn as useUIRegion,pn as useUIRegions,Wc as useUIStore,$c as useUndoRedoStore,pi as validateTheme,os as waitForAssets,Jt as wasPieceAddConsumed};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o="https://api-configurator.imagine.io",t="https://api-configurator.imagine.io/frontend";export{o as BAKED_API_BASE_URL,t as BAKED_COPILOT_API_URL};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as B}from"react/jsx-runtime";import m from"./921bf270dd.js";import{useUIRegion as u}from"./9840b9ce12.js";import d from"./d0f9681634.js";import l from"./54413c1eae.js";import{resolveComponent as e,useComponentRegistry as c}from"./882bc739c8.js";import p from"./26155bf68c.js";import f from"./2cab5c5c23.js";import"./ec4a34fc80.css";function h(){c();const r=e("SceneToolbar",l),n=e("GenerateAssetsButton",p),s=e("SaveProjectButton",f),{isLayoutLoading:o}=d(),{handleGenerateAssets:a,isGenerating:i}=m();return u("header")?B("header",{className:"header",children:[t(r,{variant:"desktop"}),t(s,{disabled:o}),t(n,{onClick:a,isGenerating:i,disabled:o,className:"header__generate-btn"})]}):null}var P=h;export{P as default};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@layer sdk-base, vendor, sdk;
|
|
2
|
+
@layer sdk {
|
|
3
|
+
/* Licence-gate refusal — fixed palette, deliberately NO theme tokens (see LicenceNotice.jsx).
|
|
4
|
+
Every value is literal so neither applyTheme() nor a dark skin can restyle it, and every
|
|
5
|
+
property .error-screen would otherwise supply is set here at higher specificity. */
|
|
6
|
+
.error-screen.licence-notice {
|
|
7
|
+
position: absolute;
|
|
8
|
+
inset: 0;
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
height: 100%;
|
|
13
|
+
padding: 24px;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
background: #f4f5f7;
|
|
16
|
+
color: #111111;
|
|
17
|
+
color-scheme: light;
|
|
18
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
19
|
+
text-align: center;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.error-screen.licence-notice .licence-notice__card {
|
|
23
|
+
max-width: 440px;
|
|
24
|
+
padding: 28px 32px;
|
|
25
|
+
background: #ffffff;
|
|
26
|
+
border: 1px solid #e3e5e8;
|
|
27
|
+
border-radius: 12px;
|
|
28
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.error-screen.licence-notice h1.licence-notice__title {
|
|
32
|
+
margin: 0 0 10px;
|
|
33
|
+
font-size: 17px;
|
|
34
|
+
font-weight: 600;
|
|
35
|
+
line-height: 1.35;
|
|
36
|
+
color: #111111;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.error-screen.licence-notice p.licence-notice__body {
|
|
40
|
+
margin: 0;
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
line-height: 1.55;
|
|
43
|
+
color: #555b66;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* The way forward. Quieter than the refusal above it — separated by a hairline so it reads as
|
|
47
|
+
a next step rather than as more of the same bad news. Literal colours like everything else
|
|
48
|
+
here, so no theme can restyle or hide it. */
|
|
49
|
+
.error-screen.licence-notice p.licence-notice__action {
|
|
50
|
+
margin: 16px 0 0;
|
|
51
|
+
padding-top: 14px;
|
|
52
|
+
border-top: 1px solid #ecedf0;
|
|
53
|
+
font-size: 13px;
|
|
54
|
+
line-height: 1.55;
|
|
55
|
+
color: #6b7280;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.error-screen.licence-notice a.licence-notice__link {
|
|
59
|
+
color: #d8481f;
|
|
60
|
+
font-weight: 600;
|
|
61
|
+
text-decoration: none;
|
|
62
|
+
border-bottom: 1px solid rgba(216, 72, 31, 0.35);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.error-screen.licence-notice a.licence-notice__link:hover {
|
|
66
|
+
border-bottom-color: #d8481f;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import m from"./8f60e5059a.js";import i from"./9c6c598569.js";import{getPlacementType as d,PLACEMENT_TYPES as u}from"./4d7a0d1897.js";import{getPlacementStrategy as g}from"./281cf952fa.js";import{resolveTargetRenderer as P}from"./58e6419ba8.js";function h(e){i.getState().setPendingPlacementPiece?.(e)}function y(){i.getState().clearPendingPlacementPiece?.()}function H(){return i.getState().pendingPlacementPiece||null}function b(e,a={}){try{const t=i.getState().productInstances||{};if(Object.keys(t).length===0)return"append"}catch{}if(!a?.movable)try{if(typeof g()?.computeTargets=="function"&&P())return"arm"}catch{}return d()===u.INSERT_BETWEEN&&!a?.movable?"arm":"append"}function v(e,a,{y:t=.6,spread:o=.45}={}){const s=n=>a(n)||[0,0,0],l=[];for(let n=0;n<=e;n++){let c;if(e===0)c=[0,t,0];else if(n===0){const r=s(0);c=[r[0]-o,t,r[2]]}else if(n===e){const r=s(e-1);c=[r[0]+o,t,r[2]]}else{const r=s(n-1),f=s(n);c=[(r[0]+f[0])/2,t,(r[2]+f[2])/2]}l.push({index:n,position:c})}return l}function I(e,{modelUrl:a,name:t}={}){const o=e?.id??e;if(o==null)return!1;const s=m.getState();return typeof s.setPendingHostedProduct!="function"?!1:(s.setPendingHostedProduct({id:o,hostedProductId:o,name:t??e?.name??null,modelUrl:a??e?.modelUrl??null,scale:e?.scale??[1,1,1]}),!0)}function N(){m.getState().clearPendingHostedProduct?.()}export{I as armHostedProduct,h as armPlacement,v as computeGaps,N as disarmHostedProduct,y as disarmPlacement,H as getPendingPlacement,b as resolveAddMode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var h=(r,e,n)=>e in r?f(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n;var u=(r,e,n)=>h(r,typeof e!="symbol"?e+"":e,n);import{parseShareTokenFromUrl as S}from"./1fff100656.js";import o from"./79a397bb92.js";import _ from"./be337ddda5.js";import{buildSceneSnapshot as i,restoreSceneSnapshot as g}from"./7f833bc5af.js";function y(r){if(r==null)return null;const e=Number(r);return Number.isFinite(e)&&String(e)===String(r)?e:r}const t=r=>r&&String(r).trim()||null;function s(r={}){return t(r.projectName)||t(r.name)||null}function m(r={}){const e=t(r.firstName),n=t(r.lastName);return{customer_first_name:e,customer_last_name:n,customer_name:[e,n].filter(Boolean).join(" ")||null,customer_email:t(r.email),customer_phone:t(r.phone),company_name:t(r.company),address:t(r.address),note:t(r.note),requests:Array.isArray(r.requests)?r.requests:[],...t(r.arUrl)?{ar_url:t(r.arUrl)}:{},...t(r.pdfUrl)?{pdf_url:t(r.pdfUrl)}:{}}}class c{async save(e={}){const n={name:s(e)||"Untitled design",...m(e),system:y(_.getState().systemId),scene_snapshot:i()};return o.saveProject(n)}async update(e,n={}){const a={scene_snapshot:i(),...m(n),...s(n)?{name:s(n)}:{}};return o.updateProject(e,a)}async uploadDesignPdf(e,n,a){if(e==null||!n)return null;const l=t(a)||`design_${e}_${Date.now()}.pdf`,p=new File([n],l,{type:"application/pdf"}),d=await o.uploadProjectRenderFile(e,p,"design_pdf");return t(d?.pdf_url)||null}async recordDesignPdf(e,n){return e==null||!t(n)?null:o.uploadProjectRender(e,{render_type:"design_pdf",pdf_url:t(n)})}async load(e){return o.loadProject(e)}restore(e){return g(e?.scene_snapshot)}buildShareUrl(e){return`${window.location.origin}/${e}`}parseShareToken(){return S()}parseSystemSlug(){const e=window.location.pathname.match(/\/configure\/([^/?#]+)/);return e?decodeURIComponent(e[1]):null}adoptShareTokenInUrl(e){const n=new URL(window.location.href);n.searchParams.delete("project"),n.searchParams.delete("config"),window.history.replaceState({},"",`/${e}${n.search}${n.hash}`)}}u(c,"RESERVED_SEGMENTS",new Set(["p","embed","ar-viewer","configure","health","copilotkit","assets","favicon.svg","index.html","warmup"]));const w=new c;var R=w;export{c as ProjectService,R as default};
|