@imagineio/configurator-sdk 0.1.6 → 0.1.7

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/README.md CHANGED
@@ -21,10 +21,6 @@ To install with React 18, use this command:
21
21
  npm install @imagineio/configurator-sdk react@^18.2 react-dom@^18.2 three@~0.159.0 @react-three/fiber@^8.15 @react-three/drei@^9.88 @react-three/postprocessing@^2.16 postprocessing@~6.36.0
22
22
  ```
23
23
 
24
- (The second line matters even in a JavaScript project: create-vite scaffolds React 19
25
- *types*, and pinning the runtime alone leaves them mismatched — no error, just wrong
26
- autocomplete everywhere.)
27
-
28
24
  Then either add the Vite plugin (recommended — serves the SDK's static assets and
29
25
  dedupes three/react for you):
30
26
 
@@ -1 +1 @@
1
- import{themeLayoutKey as u}from"./5c9fd9201c.js";import o from"./8f60e5059a.js";import m from"./872c4302e0.js";import a from"./be337ddda5.js";function p(){const t=o(e=>e.bootLoading),r=o(e=>e.uiReady),s=o(e=>e.bootDetail),n=o(e=>e.bootProgress),c=o(e=>e.themeReady),i=m(e=>e.isLoading),d=a(e=>e.isLoading);return{loading:!!t,uiReady:!!r,detail:s??null,progress:n??null,themeReady:!!c,catalogLoading:!!i,configLoading:!!d,ready:!i&&!d}}function h(){try{o.getState().endBootLoading?.()}catch{}}function L(){const t=a(n=>n.systemId),r=a(n=>n.systemName),s=a(n=>n.systemConfiguratorKey);return{id:t??null,name:r??null,configuratorKey:s??null}}function S(){try{o.setState(t=>t.themeReady?t:{themeReady:!0})}catch{}}function b(t){try{o.setState({embedded:!!t})}catch{}}function R(t){try{a.setState({systemTheme:u(t),systemThemeRecord:t&&typeof t=="object"?t:null})}catch{}}export{h as endBootLoading,S as markThemeReady,b as setEmbedded,R as setSystemTheme,p as useBootStatus,L as useSystem};
1
+ import{themeLayoutKey as c}from"./5c9fd9201c.js";import o from"./8f60e5059a.js";import m from"./872c4302e0.js";import s from"./be337ddda5.js";function p(){const e=o(t=>t.bootLoading),a=o(t=>t.uiReady),n=o(t=>t.bootDetail),r=o(t=>t.bootProgress),u=o(t=>t.themeReady),d=m(t=>t.isLoading),i=s(t=>t.isLoading);return{loading:!!e,uiReady:!!a,detail:n??null,progress:r??null,themeReady:!!u,catalogLoading:!!d,configLoading:!!i,ready:!d&&!i}}function h(){try{o.getState().endBootLoading?.()}catch{}}function L(){const e=s(r=>r.systemId),a=s(r=>r.systemName),n=s(r=>r.systemConfiguratorKey);return{id:e??null,name:a??null,configuratorKey:n??null}}function R(){try{o.setState(e=>e.themeReady?e:{themeReady:!0})}catch{}}function S(e){try{o.setState({embedded:!!e})}catch{}}function b(e){try{s.setState({systemTheme:c(e),systemThemeRecord:e&&typeof e=="object"?e:null})}catch{}}function x(){return o(e=>e.hostMode)||"public"}function K(){const e=s(n=>n.systemRenderMode)||"3d",a=s(n=>n.systemRender)||null;return{mode:e,render:a}}export{h as endBootLoading,R as markThemeReady,S as setEmbedded,b as setSystemTheme,p as useBootStatus,x as useHostMode,K as useRenderMode,L as useSystem};
@@ -54,6 +54,24 @@
54
54
  transition: background 0.2s;
55
55
  }
56
56
 
57
+ /* why AR did not start (Android, 2026-11-11): above the button */
58
+ .arv-status {
59
+ position: absolute;
60
+ left: 16px;
61
+ right: 16px;
62
+ bottom: 104px;
63
+ z-index: 10;
64
+ margin: 0;
65
+ padding: 10px 14px;
66
+ border-radius: 10px;
67
+ background: rgba(255, 255, 255, 0.92);
68
+ color: #b42318;
69
+ font-size: 13px;
70
+ line-height: 1.4;
71
+ text-align: center;
72
+ word-break: break-word;
73
+ }
74
+
57
75
  .arv-view-btn:active {
58
76
  background: var(--color-brand-primary-dark, #e64a19);
59
77
  }
@@ -0,0 +1,564 @@
1
+ @layer sdk-base, vendor, sdk;
2
+ @layer sdk {
3
+ /* THE FINAL-RENDER STRIP under the configurator's 3D scene (ui/FinalRendersDock.jsx, 2026-10-23).
4
+ The Studio's final-viewer rules (studio/studio.css, `.studio-final-*`, `.studio-btn`, `.studio-muted`),
5
+ verbatim but anchored to the scene stage: the Studio's stage begins right of its sidebar, so its
6
+ `left` offsets were the sidebar's width; here the `.scene-canvas` wrapper is the stage, so they are
7
+ 0 / 16px. Generated by scratchpad/patch_public_dock.py from the Studio file; edit there, then rerun. */
8
+ /* ── Shared atoms ──────────────────────────────────────────────────────── */
9
+ .studio-muted {
10
+ color: var(--text-secondary, #6b6b6b);
11
+ font-size: 12px;
12
+ }
13
+ .studio-btn {
14
+ padding: 7px 14px;
15
+ border: 1px solid var(--border-color, #e1e1e1);
16
+ border-radius: var(--border-radius, 6px);
17
+ background: transparent;
18
+ color: var(--text-primary, #1a1a1a);
19
+ font: inherit;
20
+ font-size: 13px;
21
+ cursor: pointer;
22
+ }
23
+ .studio-btn:hover:not(:disabled) { background: rgba(0, 0, 0, 0.04); }
24
+ .studio-btn:disabled { opacity: 0.55; cursor: not-allowed; }
25
+ .studio-btn--primary {
26
+ border-color: transparent;
27
+ background: var(--color-primary, #e07b39);
28
+ color: var(--text-inverse, #fff);
29
+ }
30
+ .studio-btn--primary:hover:not(:disabled) { background: var(--color-primary-dark, #c8692c); }
31
+ /* ── A final version is read-only ─────────────────────────────────────────── */
32
+ .studio-final-banner {
33
+ position: absolute;
34
+ bottom: 16px;
35
+ left: 50%;
36
+ transform: translateX(-50%);
37
+ z-index: 30;
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ align-items: center;
41
+ gap: 8px 16px;
42
+ max-width: min(720px, calc(100% - 24px));
43
+ padding: 10px 14px;
44
+ border-radius: var(--radius-md, 8px);
45
+ background: var(--bg-primary, #fff);
46
+ color: var(--text-primary, #1f2328);
47
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.05);
48
+ font-size: 13px;
49
+ line-height: 1.4;
50
+ }
51
+ .studio-final-banner__text { flex: 1 1 320px; }
52
+ .studio-final-banner__prompt { margin: 0; padding: 0; border: 0; flex: 1 1 280px; }
53
+ .studio-final-banner__prompt > .studio-muted { display: none; }
54
+ .studio-final-banner__prompt .studio-field { margin: 0; }
55
+ /* -- The final-render page: the dock along the bottom of the stage (2026-10-15) -- */
56
+ .studio-final-dock {
57
+ position: absolute;
58
+ left: 16px;
59
+ right: 16px;
60
+ bottom: 16px;
61
+ z-index: 30;
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: 10px;
65
+ padding: 10px 12px 12px;
66
+ border-radius: var(--radius-md, 10px);
67
+ background: var(--bg-primary, #fff);
68
+ color: var(--text-primary, #1f2328);
69
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.05);
70
+ font-size: 13px;
71
+ }
72
+ .studio-final-dock--closed { padding-bottom: 10px; }
73
+ .studio-final-dock__head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
74
+ .studio-final-dock__title { display: flex; align-items: baseline; gap: 10px; }
75
+ .studio-final-dock__head { justify-content: space-between; }
76
+ .studio-final-dock__error { color: #b42318; font-size: 12px; }
77
+ .studio-final-dock__cards {
78
+ display: flex;
79
+ gap: 10px;
80
+ overflow-x: auto;
81
+ padding-bottom: 2px;
82
+ }
83
+ .studio-final-card {
84
+ flex: none;
85
+ display: flex;
86
+ flex-direction: column;
87
+ gap: 3px;
88
+ width: 168px;
89
+ padding: 0;
90
+ border: 0;
91
+ background: transparent;
92
+ color: inherit;
93
+ font: inherit;
94
+ text-align: left;
95
+ cursor: pointer;
96
+ }
97
+ .studio-final-card:disabled { cursor: default; }
98
+ .studio-final-card__img {
99
+ position: relative;
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ width: 168px;
104
+ height: 94px;
105
+ overflow: hidden;
106
+ border: 1px solid var(--border-light, #e6e8eb);
107
+ border-radius: 8px;
108
+ background: var(--bg-secondary, #f4f5f7);
109
+ transition: border-color 0.12s ease, box-shadow 0.12s ease;
110
+ }
111
+ .studio-final-card:not(:disabled):hover .studio-final-card__img {
112
+ border-color: var(--color-primary, #ff5a1f);
113
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary, #ff5a1f) 20%, transparent);
114
+ }
115
+ .studio-final-card__img img { width: 100%; height: 100%; object-fit: contain; }
116
+ .studio-final-card__img--text { font-weight: 600; color: var(--color-primary, #ff5a1f); }
117
+ .studio-final-card__wait {
118
+ width: 100%;
119
+ height: 100%;
120
+ background: linear-gradient(90deg, rgba(0,0,0,0.03), rgba(0,0,0,0.08), rgba(0,0,0,0.03));
121
+ background-size: 200% 100%;
122
+ animation: studio-final-shimmer 1.4s linear infinite;
123
+ }
124
+ @keyframes studio-final-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
125
+ .studio-final-card__badge {
126
+ position: absolute;
127
+ top: 6px;
128
+ left: 6px;
129
+ padding: 1px 6px;
130
+ border-radius: 999px;
131
+ background: rgba(26, 26, 26, 0.75);
132
+ color: #fff;
133
+ font-size: 10px;
134
+ font-weight: 700;
135
+ }
136
+ .studio-final-card__progress {
137
+ position: absolute;
138
+ left: 8px;
139
+ right: 8px;
140
+ bottom: 8px;
141
+ height: 4px;
142
+ border-radius: 999px;
143
+ background: rgba(0, 0, 0, 0.12);
144
+ overflow: hidden;
145
+ }
146
+ .studio-final-card__progress > span { display: block; height: 100%; background: var(--color-primary, #ff5a1f); transition: width 0.3s ease; }
147
+ .studio-final-card__name { font-weight: 600; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
148
+ .studio-final-card__meta { font-size: 11px; color: var(--text-secondary, #6b7280); }
149
+ .studio-final-card--failed .studio-final-card__meta { color: #b42318; }
150
+ .studio-final-card.is-dragging { opacity: 0.4; }
151
+ .studio-final-card[aria-disabled] { cursor: grab; }
152
+ .studio-final-card__grip {
153
+ position: absolute;
154
+ top: 6px;
155
+ right: 6px;
156
+ padding: 2px;
157
+ border-radius: 4px;
158
+ background: rgba(255, 255, 255, 0.85);
159
+ color: var(--text-secondary, #6b7280);
160
+ opacity: 0;
161
+ transition: opacity 0.12s ease;
162
+ cursor: grab;
163
+ }
164
+ .studio-final-card:hover .studio-final-card__grip { opacity: 1; }
165
+ .studio-final-card__img--ar { color: var(--color-primary, #ff5a1f); background: color-mix(in srgb, var(--color-primary, #ff5a1f) 7%, var(--bg-primary, #fff)); }
166
+ /* -- The final viewer's slide: an image over the canvas, no popup (2026-10-15) -- */
167
+ .studio-final-stage {
168
+ position: absolute;
169
+ top: 0;
170
+ bottom: 0;
171
+ left: 0;
172
+ right: 0;
173
+ z-index: 12; /* over the canvas, under the toolbar (15) and the dock (30) */
174
+ overflow: hidden;
175
+ pointer-events: none;
176
+ }
177
+ /* One item on the slide: a view's image or AR. Two at once only while one leaves. */
178
+ .studio-final-stage__panel {
179
+ position: absolute;
180
+ inset: 0;
181
+ display: flex;
182
+ flex-direction: column;
183
+ align-items: center;
184
+ gap: 10px;
185
+ padding: 72px 24px 24px;
186
+ /* the SCENE's own backdrop, not the panel surface (2026-11-05): the dark-mode themes paint
187
+ --bg-secondary near-black, and a black field around a render read as a fault */
188
+ background: var(--bg-final-stage, #ececef);
189
+ pointer-events: auto;
190
+ will-change: transform;
191
+ }
192
+ .studio-final-stage.has-dock .studio-final-stage__panel { padding-bottom: 236px; }
193
+ .studio-final-stage__panel[aria-hidden="true"] { pointer-events: none; }
194
+ /* Forward: in from the right, out to the left. Back: the mirror. 380 ms = SLIDE_MS. */
195
+ .studio-final-stage__panel.is-entering-next { animation: studio-final-in-right 0.38s cubic-bezier(0.22, 0.8, 0.24, 1) both; }
196
+ .studio-final-stage__panel.is-entering-prev { animation: studio-final-in-left 0.38s cubic-bezier(0.22, 0.8, 0.24, 1) both; }
197
+ .studio-final-stage__panel.is-leaving-next { animation: studio-final-out-left 0.38s cubic-bezier(0.22, 0.8, 0.24, 1) both; }
198
+ .studio-final-stage__panel.is-leaving-prev { animation: studio-final-out-right 0.38s cubic-bezier(0.22, 0.8, 0.24, 1) both; }
199
+ @keyframes studio-final-in-right { from { transform: translateX(100%); } to { transform: translateX(0); } }
200
+ @keyframes studio-final-in-left { from { transform: translateX(-100%); } to { transform: translateX(0); } }
201
+ @keyframes studio-final-out-left { from { transform: translateX(0); } to { transform: translateX(-100%); } }
202
+ @keyframes studio-final-out-right { from { transform: translateX(0); } to { transform: translateX(100%); } }
203
+ @media (prefers-reduced-motion: reduce) {
204
+ .studio-final-stage__panel { animation: none !important; }
205
+ }
206
+ .studio-final-stage__bar { display: flex; align-items: center; gap: 12px; align-self: stretch; font-size: 13px; }
207
+ .studio-final-stage__bar .studio-btn { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
208
+ .studio-final-stage__image { user-select: none; -webkit-user-select: none;
209
+ position: relative;
210
+ display: flex;
211
+ flex: 1;
212
+ min-height: 0;
213
+ align-self: stretch;
214
+ align-items: center;
215
+ justify-content: center;
216
+ }
217
+ .studio-final-stage__image--spin { cursor: grab; touch-action: none; }
218
+ .studio-final-stage__image--spin:active { cursor: grabbing; }
219
+ .studio-final-stage__image img {
220
+ max-width: 100%;
221
+ max-height: 100%;
222
+ object-fit: contain;
223
+ border-radius: 6px;
224
+ user-select: none;
225
+ transition: opacity 0.2s ease;
226
+ }
227
+ .studio-final-stage__image img.is-loading { opacity: 0.6; }
228
+ /* zoom (2026-10-21): the image in a wrapper the zoom transforms, clipped to the stage */
229
+ .studio-final-stage__image { overflow: hidden; }
230
+ .studio-final-stage__image.is-zoomed { cursor: grab; touch-action: none; }
231
+ .studio-final-stage__image.is-zoomed:active { cursor: grabbing; }
232
+ .studio-final-stage__zoom { display: flex; align-items: center; justify-content: center; max-width: 100%; max-height: 100%; will-change: transform; }
233
+ .studio-final-stage__zoom-badge {
234
+ position: absolute;
235
+ left: 50%;
236
+ bottom: 12px;
237
+ transform: translateX(-50%); /* centred under the image (2026-10-23) */
238
+ padding: 4px 8px;
239
+ border-radius: 999px;
240
+ background: rgba(15, 17, 20, 0.6);
241
+ color: #fff;
242
+ font-size: 12px;
243
+ pointer-events: none;
244
+ }
245
+ .studio-final-stage__frames { width: min(520px, 100%); accent-color: var(--color-primary, #ff5a1f); }
246
+ .studio-final-stage__ar {
247
+ display: flex;
248
+ flex: 1;
249
+ flex-direction: column;
250
+ align-items: center;
251
+ justify-content: center;
252
+ gap: 12px;
253
+ text-align: center;
254
+ }
255
+ .studio-final-stage__qr { padding: 14px; border-radius: 12px; background: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.06); }
256
+ .studio-final-stage__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
257
+ .studio-final-stage__actions .studio-btn { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }
258
+ .studio-final-card.is-active .studio-final-card__img {
259
+ border-color: var(--color-primary, #ff5a1f);
260
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary, #ff5a1f) 25%, transparent);
261
+ }
262
+ .studio-final-card--not_rendered .studio-final-card__wait { animation: none; background: repeating-linear-gradient(45deg, rgba(0,0,0,0.03) 0 8px, rgba(0,0,0,0.06) 8px 16px); }
263
+ /* pointer reordering: the row is the drag surface */
264
+ .studio-final-card { touch-action: pan-y; user-select: none; -webkit-user-select: none; }
265
+ .studio-final-dock.is-reordering, .studio-final-dock.is-reordering .studio-final-card { cursor: grabbing; }
266
+ .studio-final-card.is-dragging { opacity: 0.55; transform: scale(0.97); transition: transform 0.12s ease; }
267
+ /* -- Arrows on the stage: step through the final viewer (2026-10-15) -- */
268
+ .studio-final-nav {
269
+ position: absolute;
270
+ top: 0;
271
+ bottom: 0;
272
+ left: 0;
273
+ right: 0;
274
+ z-index: 14; /* over the slide (12), under the toolbar (15) and the dock (30) */
275
+ pointer-events: none;
276
+ }
277
+ .studio-final-nav.has-dock { bottom: 220px; }
278
+ .studio-final-nav__btn {
279
+ position: absolute;
280
+ top: 50%;
281
+ display: inline-flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ width: 44px;
285
+ height: 44px;
286
+ padding: 0;
287
+ border: 0;
288
+ border-radius: 50%;
289
+ background: var(--bg-primary, #fff);
290
+ color: var(--text-primary, #1f2328);
291
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(0, 0, 0, 0.05);
292
+ cursor: pointer;
293
+ pointer-events: auto;
294
+ transform: translateY(-50%);
295
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
296
+ }
297
+ .studio-final-nav__btn:hover { transform: translateY(-50%) scale(1.06); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18); }
298
+ .studio-final-nav__btn--prev { left: 16px; }
299
+ .studio-final-nav__btn--next { right: 16px; }
300
+ /* =====================================================================================
301
+ FINAL VIEWER GALLERY (2026-10-15) — in the THEME's colours: surfaces, text, borders,
302
+ shadows, radii and the accent all come from theme tokens, so it reads as part of the
303
+ configurator in any theme. At the very bottom of the stage; the selected-product bar
304
+ moves up above it. Later rules win over the first pass above.
305
+ ===================================================================================== */
306
+ .studio-final-dock {
307
+ left: 0;
308
+ right: 16px;
309
+ bottom: 14px;
310
+ flex-direction: row;
311
+ align-items: flex-end;
312
+ justify-content: center;
313
+ padding: 0;
314
+ border-radius: 0;
315
+ background: transparent;
316
+ box-shadow: none;
317
+ pointer-events: none;
318
+ }
319
+ .studio-final-dock__strip {
320
+ display: flex;
321
+ align-items: center;
322
+ gap: 8px;
323
+ max-width: 100%;
324
+ padding: 6px;
325
+ border: 1px solid var(--border-light, #e6e8eb);
326
+ border-radius: var(--radius-lg, 14px);
327
+ background: color-mix(in srgb, var(--bg-primary, #fff) 88%, transparent);
328
+ -webkit-backdrop-filter: blur(14px);
329
+ backdrop-filter: blur(14px);
330
+ box-shadow: var(--shadow-lg, 0 10px 30px rgba(0, 0, 0, 0.12));
331
+ pointer-events: auto;
332
+ }
333
+ .studio-final-dock__cards {
334
+ display: flex;
335
+ gap: 6px;
336
+ padding: 3px;
337
+ min-width: 0;
338
+ overflow-x: auto;
339
+ scrollbar-width: none;
340
+ }
341
+ .studio-final-dock__cards::-webkit-scrollbar { display: none; }
342
+ .studio-final-dock__status {
343
+ flex: none;
344
+ align-self: center;
345
+ margin-left: 4px;
346
+ padding: 4px 9px;
347
+ border-radius: var(--radius-full, 999px);
348
+ background: var(--color-primary-light, color-mix(in srgb, var(--color-primary, #ff5a1f) 12%, transparent));
349
+ color: var(--color-primary, #ff5a1f);
350
+ font-size: var(--font-size-xs, 11px);
351
+ font-weight: var(--font-weight-semibold, 600);
352
+ white-space: nowrap;
353
+ }
354
+ .studio-final-dock__status.is-error { background: #fdecec; color: #b42318; }
355
+ /* tiles */
356
+ .studio-final-card {
357
+ position: relative;
358
+ flex: none;
359
+ width: 76px;
360
+ padding: 0;
361
+ border: 0;
362
+ background: transparent;
363
+ cursor: pointer;
364
+ opacity: 1;
365
+ transition: transform 0.15s ease;
366
+ }
367
+ .studio-final-card[aria-disabled] { opacity: 0.45; }
368
+ .studio-final-card__img {
369
+ position: relative;
370
+ display: flex;
371
+ align-items: center;
372
+ justify-content: center;
373
+ width: 76px;
374
+ height: 50px;
375
+ overflow: hidden;
376
+ border: 1px solid var(--border-light, #e6e8eb);
377
+ border-radius: var(--radius-md, 10px);
378
+ background: var(--bg-thumbnail, var(--bg-secondary, #f2f3f5));
379
+ box-shadow: none;
380
+ transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
381
+ }
382
+ .studio-final-card__img img { width: 100%; height: 100%; object-fit: cover; }
383
+ .studio-final-card:not([aria-disabled]):hover .studio-final-card__img {
384
+ transform: translateY(-2px);
385
+ border-color: var(--border-dark, #c9ced4);
386
+ box-shadow: var(--shadow-md, 0 2px 8px rgba(0, 0, 0, 0.08));
387
+ }
388
+ .studio-final-card.is-active .studio-final-card__img,
389
+ .studio-final-card.is-active:hover .studio-final-card__img {
390
+ border-color: var(--color-primary, #ff5a1f);
391
+ box-shadow: 0 0 0 1px var(--color-primary, #ff5a1f);
392
+ }
393
+ /* 3D and AR: an icon and a word, on the same footing as the photos */
394
+ .studio-final-card__img--ar {
395
+ flex-direction: column;
396
+ gap: 2px;
397
+ color: var(--text-primary, #1f2328);
398
+ background: var(--bg-secondary, #f2f3f5);
399
+ }
400
+ .studio-final-card.is-active .studio-final-card__img--ar { color: var(--color-primary, #ff5a1f); }
401
+ .studio-final-card--3d .studio-final-card__img svg,
402
+ .studio-final-card--ar .studio-final-card__img svg { width: 20px !important; height: 20px !important; margin: 0 0 12px; }
403
+ /* names: inside the 3D/AR tiles; a tooltip above the photos, on hover */
404
+ .studio-final-card__name {
405
+ position: absolute;
406
+ left: 50%;
407
+ bottom: calc(100% + 10px);
408
+ max-width: 160px;
409
+ padding: 4px 9px;
410
+ border-radius: var(--radius-sm, 6px);
411
+ background: var(--bg-tooltip, rgba(0, 0, 0, 0.8));
412
+ color: var(--text-inverse, #fff);
413
+ font-size: var(--font-size-xs, 11px);
414
+ font-weight: var(--font-weight-semibold, 600);
415
+ white-space: nowrap;
416
+ overflow: hidden;
417
+ text-overflow: ellipsis;
418
+ opacity: 0;
419
+ transform: translate(-50%, 4px);
420
+ transition: opacity 0.15s ease, transform 0.15s ease;
421
+ pointer-events: none;
422
+ }
423
+ .studio-final-card:hover .studio-final-card__name { opacity: 1; transform: translate(-50%, 0); }
424
+ .studio-final-card--3d .studio-final-card__name,
425
+ .studio-final-card--ar .studio-final-card__name {
426
+ bottom: 7px;
427
+ max-width: none;
428
+ padding: 0;
429
+ background: transparent;
430
+ color: inherit;
431
+ font-size: 10px;
432
+ letter-spacing: 0.04em;
433
+ opacity: 1;
434
+ transform: translate(-50%, 0);
435
+ }
436
+ .studio-final-card--3d .studio-final-card__name { color: var(--text-secondary, #5b6470); }
437
+ .studio-final-card--ar .studio-final-card__name { color: var(--text-secondary, #5b6470); }
438
+ .studio-final-card.is-active .studio-final-card__name { color: var(--color-primary, #ff5a1f); }
439
+ .studio-final-card__meta { display: none; }
440
+ .studio-final-card__badge {
441
+ top: 4px;
442
+ left: 4px;
443
+ padding: 0 5px;
444
+ border-radius: var(--radius-xs, 4px);
445
+ background: var(--bg-tooltip, rgba(0, 0, 0, 0.75));
446
+ color: var(--text-inverse, #fff);
447
+ font-size: 9px;
448
+ line-height: 15px;
449
+ }
450
+ .studio-final-card__grip { display: none; }
451
+ .studio-final-card__progress { left: 5px; right: 5px; bottom: 5px; height: 3px; background: var(--border-light, #e6e8eb); }
452
+ .studio-final-card__progress > span { background: var(--color-primary, #ff5a1f); }
453
+ .studio-final-dock.is-reordering .studio-final-card { cursor: grabbing; }
454
+ .studio-final-card.is-dragging { transform: translateY(-6px) scale(1.06); z-index: 2; }
455
+ .studio-final-card.is-dragging .studio-final-card__img { box-shadow: var(--shadow-lg, 0 12px 26px rgba(0, 0, 0, 0.18)); }
456
+ /* arrows: the theme's surface and text, set in; a label on hover */
457
+ .studio-final-nav.has-dock { bottom: 90px; }
458
+ .studio-final-nav__btn {
459
+ width: 40px;
460
+ height: 40px;
461
+ border: 1px solid var(--border-light, #e6e8eb);
462
+ background: var(--bg-primary, #fff);
463
+ color: var(--text-primary, #1f2328);
464
+ -webkit-backdrop-filter: none;
465
+ backdrop-filter: none;
466
+ box-shadow: var(--shadow-md, 0 2px 8px rgba(0, 0, 0, 0.08));
467
+ }
468
+ .studio-final-nav__btn:hover { background: var(--bg-secondary, #f6f7f9); color: var(--color-primary, #ff5a1f); }
469
+ .studio-final-nav__btn--prev { left: 24px; }
470
+ .studio-final-nav__btn--next { right: 24px; }
471
+ .studio-final-nav__btn::after {
472
+ content: attr(data-label);
473
+ position: absolute;
474
+ top: 50%;
475
+ padding: 4px 9px;
476
+ border-radius: var(--radius-sm, 6px);
477
+ background: var(--bg-tooltip, rgba(0, 0, 0, 0.8));
478
+ color: var(--text-inverse, #fff);
479
+ font-size: var(--font-size-xs, 11px);
480
+ font-weight: var(--font-weight-semibold, 600);
481
+ white-space: nowrap;
482
+ opacity: 0;
483
+ pointer-events: none;
484
+ transform: translateY(-50%);
485
+ transition: opacity 0.15s ease;
486
+ }
487
+ .studio-final-nav__btn--prev::after { left: calc(100% + 8px); }
488
+ .studio-final-nav__btn--next::after { right: calc(100% + 8px); }
489
+ .studio-final-nav__btn:hover::after { opacity: 1; }
490
+ /* the slide: the image framed; caption and download TOGETHER at the top left, clear of the
491
+ configurator's own toolbar on the right */
492
+ /* the later, winning rule (2026-11-05): a light field of its own on dark themes — --bg-final-stage,
493
+ set in themes.css for dark mode — else the scene's backdrop */
494
+ .studio-final-stage__panel { padding: 64px 84px 24px; background: var(--bg-final-stage, #ececef); }
495
+ .studio-final-stage.has-dock .studio-final-stage__panel { padding-bottom: 100px; }
496
+ .studio-final-stage__image img { border-radius: var(--radius-lg, 12px); box-shadow: var(--shadow-lg, 0 18px 50px rgba(0, 0, 0, 0.14)); }
497
+ .studio-final-stage__caption {
498
+ position: absolute;
499
+ top: 16px;
500
+ left: 24px;
501
+ display: inline-flex;
502
+ align-items: baseline;
503
+ gap: 8px;
504
+ height: 36px;
505
+ padding: 0 12px;
506
+ align-items: center;
507
+ border: 1px solid var(--border-light, #e6e8eb);
508
+ border-radius: var(--radius-md, 10px);
509
+ background: var(--bg-primary, #fff);
510
+ box-shadow: var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.06));
511
+ color: var(--text-primary, #1f2328);
512
+ font-size: var(--font-size-sm, 12.5px);
513
+ -webkit-backdrop-filter: none;
514
+ backdrop-filter: none;
515
+ }
516
+ .studio-final-stage__caption span { color: var(--text-secondary, #6b7280); font-size: var(--font-size-xs, 11.5px); font-variant-numeric: tabular-nums; }
517
+ .studio-final-stage__download {
518
+ position: absolute;
519
+ top: 16px;
520
+ right: auto;
521
+ left: var(--final-download-left, 24px);
522
+ display: inline-flex;
523
+ align-items: center;
524
+ justify-content: center;
525
+ width: 36px;
526
+ height: 36px;
527
+ padding: 0;
528
+ border: 1px solid var(--border-light, #e6e8eb);
529
+ border-radius: var(--radius-md, 10px);
530
+ background: var(--bg-primary, #fff);
531
+ color: var(--text-primary, #1f2328);
532
+ box-shadow: var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.06));
533
+ -webkit-backdrop-filter: none;
534
+ backdrop-filter: none;
535
+ cursor: pointer;
536
+ }
537
+ .studio-final-stage__download:hover:not(:disabled) { color: var(--color-primary, #ff5a1f); border-color: var(--border-dark, #c9ced4); }
538
+ .studio-final-stage__download:disabled { opacity: 0.5; cursor: default; }
539
+ .studio-final-stage__frames { width: min(420px, 80%); accent-color: var(--color-primary, #ff5a1f); }
540
+ /* caption and download side by side, top left */
541
+ .studio-final-stage__top { position: absolute; top: 16px; left: 24px; display: flex; align-items: center; gap: 8px; z-index: 1; }
542
+ .studio-final-stage__top .studio-final-stage__caption,
543
+ .studio-final-stage__top .studio-final-stage__download { position: static; }
544
+
545
+ /* THE STRIP IS LAST: the selected-product bar sits above it, and steps aside while an image is on
546
+ the slide (it acts on the 3D scene). The dock renders before the bar in the stage overlay. */
547
+ .scene-canvas:has(.studio-final-dock) .selection-panel-overlay { bottom: 92px; }
548
+ .scene-canvas .studio-final-stage.is-open ~ .selection-panel-overlay,
549
+ .scene-canvas .studio-final-stage.is-open ~ * .selection-panel-overlay { opacity: 0; pointer-events: none; }
550
+ /* One stage, one strip: inside the wrapper the stage fills it, so nothing else is offset. */
551
+ .scene-canvas .studio-final-dock { left: 16px; right: 16px; }
552
+ .scene-canvas .studio-final-stage, .scene-canvas .studio-final-nav { left: 0; right: 0; }
553
+ /* Under the shell's own overlays: the scene toolbar and the price chip (z 4) and the chat
554
+ button (z 21) stay usable over an image, as in the Studio. The strip stays on top. */
555
+ .scene-canvas .studio-final-stage { z-index: 3; }
556
+ .scene-canvas .studio-final-nav { z-index: 5; }
557
+
558
+ /* IMAGE AND 360 VIEWS STAND ON WHITE (2026-11-05, user's rule): a view with no backdrop of its own
559
+ is a transparent picture, and it was showing the field's grey through — the farm's light
560
+ setup renders on white, so white it is. A view's own backdrop is merged into the picture
561
+ and covers this; a snap is opaque anyway. */
562
+ .studio-final-stage__image img, .studio-final-stage__image .spin-frames { background: #fff; }
563
+
564
+ }
@@ -1 +1 @@
1
- import{getApiBaseUrl as F}from"./8ade32d067.js";import{describeBootFailure as K,probeBackendReachable as N,warnIntegrator as q}from"./05973a4da2.js";import{adoptUrlCredentials as J}from"./1fff100656.js";import Q from"./872c4302e0.js";import f from"./be337ddda5.js";import X from"./9c6c598569.js";import i from"./8f60e5059a.js";import b from"./1fac915f8b.js";import{recomputePrice as A}from"./67f6338a4a.js";import{setUseMobileTextures as Y}from"./c44d37da7a.js";import{initIframeMessageService as Z}from"./1e243363f6.js";import{whenPiecePositionsReady as ee,waitForAssetsIdle as D}from"./2774152dd2.js";import{applyLayoutSceneSelections as te,applyLayoutStyling as ae}from"./37addc7fb3.js";import{setTokenProvider as ne}from"./33fa2c8ca2.js";import{hideUI as G}from"./2cafe3274b.js";import{UI_REGIONS as k}from"./9840b9ce12.js";const be="This configurator is unavailable.";function ke({resolveInitialSystemId:W,resolveConfigurator:v,resolveConfiguratorKey:R,resolveInitialChannelId:B,getToken:T,onReady:M,onError:P}={}){typeof T=="function"&&ne(T);let s=!1,w=null;return(async()=>{const u=await import("./a77b15c0d6.js"),C=B?.();C!=null&&u.setChannelId?.(C),import.meta.env?.DEV&&!window.__sdkEventLoggerRegistered&&(window.__sdkEventLoggerRegistered=!0,u.on?.("*",n=>{}));let m=W?.();const y=J().shareToken;y&&u.setShareToken?.(y);let r=null;if(y)try{r=await u.loadProject(y);const n=r?.system?.id??r?.system??r?.scene_snapshot?.canonical?.systemId??null;n!=null&&(m=n);try{const d=(r?.scene_snapshot??r?.sceneSnapshot??null)?.theme??null,o=d?.systemThemeRecord??d?.systemTheme??null;if(o!=null){const{applySystemTheme:h}=await import("./5c9fd9201c.js");h(o),i.setState({themeReady:!0})}}catch{}}catch{}const{checkConfiguratorLicence:x,getConfiguratorBlockedMessage:$}=await import("./3bbcee0334.js"),H=await x({systemId:m});if(s)return;if(!H){i.getState().markUiReady?.(),P?.($(),{code:"unlicensed"});return}try{const{refreshEntitlements:n}=await import("./32861ea2b0.js");n().catch(()=>{})}catch{}try{const{ui:n,sceneCapabilities:c}=v?.(m)||{};n&&Object.keys(n).length&&i.setState(n),c&&i.setState({sceneCapabilities:c});const d=R?.(m);d!=null&&f.setState({configuratorKey:d}),i.setState({showWalls:!!c?.walls})}catch{}let L=!1;try{const{prepareTheme:n}=await import("./be0cfe2236.js");L=await n(m)}catch{}if(!s)try{try{await u.loadConfigurator(m)}catch(e){if(e?.status===401||e?.status===403||e?.status===404)throw e;await Q.getState().loadCatalog({systemId:m}),await f.getState().loadConfigurations(m);const t=f.getState(),a=t.systemDomainDefaults??t.systemRoom?.domain_defaults??null;a&&await u.loadDomainDefaults(a)}try{const e=f.getState(),t=e.systemId??m,a=v?.(t)||{};a.ui&&Object.keys(a.ui).length&&i.setState(a.ui);const l=!!e.systemRoom;i.setState({sceneCapabilities:{dimensions:l,walls:l},showWalls:l});const p=R?.(t);p!=null&&f.setState({configuratorKey:p})}catch{}if(!L)try{const{applySystemTheme:e}=await import("./5c9fd9201c.js");let t=null,a=!1;try{const S=new URLSearchParams(window.location.search);S.has("theme")&&(t=S.get("theme"),a=!0)}catch{}if(!a)for(let S=0;S<20;S+=1){const O=f.getState();if(t=O.systemThemeRecord??O.systemTheme,t!=null||s)break;await new Promise(z=>setTimeout(z,100))}if(s)return;const l=typeof document<"u"&&!!document.documentElement.getAttribute("data-theme-id"),p=typeof t=="string"&&/^\d+$/.test(t.trim()),V=l&&p&&!a;(t!=null||a)&&!V&&e(t)}catch{}if(s)return;i.setState({themeReady:!0});const n="ontouchstart"in window||navigator.maxTouchPoints>0,c=Math.min(window.innerWidth,window.innerHeight)<768;Y(n&&c);const d=r?null:await u.parseShareLink(),o=f.getState().sceneConfigurations,h=f.getState().defaultPresetId;let _=h!=null&&o[h]?h:null;_||(_=Object.values(o||{})[0]?.id);const I=r?.scene_snapshot?._state?.sceneGraph?.activeSceneConfigId,g=I!=null&&o[I]?I:d?.sc||_;u.preloadMaterials(o[g]),X.getState().initializeScene(g);try{const{applySceneConfigDefaults:e}=await import("./a77b15c0d6.js");e(g)}catch{}te(o[g]),ae(o[g]),!r&&d&&await u.restoreShareLink(d);const U=new URLSearchParams(window.location.search),E=U.get("gui");(E==="false"||E==="0")&&i.getState().setGuiVisible(!1);const j=U.get("hide");if(j){const e=j.split(",").map(t=>t.trim()).filter(Boolean);if(e.includes("all"))G();else{const t=e.filter(l=>k.includes(l)),a=e.filter(l=>!k.includes(l)&&l!=="all");a.length&&console.warn(`[sdk] ?hide= ignored unknown region(s): ${a.join(", ")}. Known regions: ${k.join(", ")}, or "all".`),t.length&&G(t)}}A(),b.getState().clearHistory(),Z(),import("./a77b15c0d6.js").then(({initConfigEngine:e})=>e()).catch(()=>{}),(()=>{if(s)return;i.setState({bootEvaluating:!0});const e=b.getState();e.pauseTracking();let t=!1;const a=()=>{t||(t=!0,i.setState({bootEvaluating:!1}),e.resumeTracking())};D().then(()=>{if(s){a();return}import("./a77b15c0d6.js").then(async({seedInitialState:l,reevaluateForFocus:p})=>{await l(),!s&&await p()}).catch(()=>{}).finally(()=>{a(),u.prefetchRemainingMaterialsWhenIdle?.()})}).catch(a)})(),M?.(),setTimeout(()=>{s||i.getState().markUiReady?.()},2500),r?(i.setState({isLayoutLoading:!0}),i.getState().setSceneLoading(!0,"Loading your saved design..."),w=ee(async()=>{s||(await u.restoreProject(r),A(),D().then(()=>{if(s)return;i.getState().setInitialPerPieceOverrides(),i.setState({isLayoutLoading:!1}),i.getState().clearSceneLoading(),b.getState().clearHistory();const e=r?.scene_snapshot?.canonical||null;import("./a77b15c0d6.js").then(({restoreConfiguration:t,refreshCanonicalState:a})=>e?t(e):a()).catch(()=>{})}))})):i.getState().setInitialPerPieceOverrides()}catch(n){i.getState().markUiReady?.();const c=n?.status,d=c==null?await N(F()):null,o=K(n,{reachable:d});q(o,n);const h=o.code==="unavailable"?"unavailable":c===401||c===403?"unauthorized":c===404?"unavailable":"network";P?.(`${o.title} ${o.body}`,{code:h,reason:o.code,title:o.title,body:o.body,fix:o.fix,status:c,cause:n})}})(),{cancel(){s=!0,w&&w()}}}export{be as ORG_UNAVAILABLE_MESSAGE,ke as bootConfigurator};
1
+ import{getApiBaseUrl as q}from"./8ade32d067.js";import{describeBootFailure as J,probeBackendReachable as Q,warnIntegrator as X}from"./05973a4da2.js";import{adoptUrlCredentials as Y}from"./1fff100656.js";import Z from"./872c4302e0.js";import f from"./be337ddda5.js";import tt from"./9c6c598569.js";import n from"./8f60e5059a.js";import k from"./1fac915f8b.js";import{recomputePrice as D}from"./67f6338a4a.js";import{setUseMobileTextures as et}from"./c44d37da7a.js";import{initIframeMessageService as at}from"./1e243363f6.js";import{whenPiecePositionsReady as nt,waitForAssetsIdle as G}from"./2774152dd2.js";import{applyLayoutSceneSelections as ot,applyLayoutStyling as it}from"./37addc7fb3.js";import{setTokenProvider as st}from"./33fa2c8ca2.js";import{setOrganizationId as rt}from"./431a2d8618.js";import{hideUI as M}from"./2cafe3274b.js";import{UI_REGIONS as v}from"./9840b9ce12.js";const Tt="This configurator is unavailable.";function Ct({resolveInitialSystemId:W,resolveConfigurator:P,resolveConfiguratorKey:R,resolveInitialChannelId:B,getToken:T,host:x="public",organizationId:H=null,engine:w=!0,onReady:$,onError:C}={}){typeof T=="function"&&st(T),rt(H);try{n.getState().setHostMode?.(x)}catch{}let s=!1,_=null;return(async()=>{const u=await import("./a77b15c0d6.js"),L=B?.();L!=null&&u.setChannelId?.(L),import.meta.env?.DEV&&!window.__sdkEventLoggerRegistered&&(window.__sdkEventLoggerRegistered=!0,u.on?.("*",o=>{}));let m=W?.();const S=Y().shareToken;S&&u.setShareToken?.(S);let r=null;if(S)try{r=await u.loadProject(S);const o=r?.system?.id??r?.system??r?.scene_snapshot?.canonical?.systemId??null;o!=null&&(m=o);try{const d=(r?.scene_snapshot??r?.sceneSnapshot??null)?.theme??null,i=d?.systemThemeRecord??d?.systemTheme??null;if(i!=null){const{applySystemTheme:h}=await import("./5c9fd9201c.js");h(i),n.setState({themeReady:!0})}}catch{}}catch{}const{checkConfiguratorLicence:z,getConfiguratorBlockedMessage:V}=await import("./3bbcee0334.js"),F=await z({systemId:m});if(s)return;if(!F){n.getState().markUiReady?.(),C?.(V(),{code:"unlicensed"});return}try{const{refreshEntitlements:o}=await import("./32861ea2b0.js");o().catch(()=>{})}catch{}try{const{ui:o,sceneCapabilities:c}=P?.(m)||{};o&&Object.keys(o).length&&n.setState(o),c&&n.setState({sceneCapabilities:c});const d=R?.(m);d!=null&&f.setState({configuratorKey:d}),n.setState({showWalls:!!c?.walls})}catch{}let U=!1;try{const{prepareTheme:o}=await import("./be0cfe2236.js");U=await o(m)}catch{}if(!s)try{try{await u.loadConfigurator(m,{geometry:w})}catch(t){if(t?.status===401||t?.status===403||t?.status===404)throw t;await Z.getState().loadCatalog({systemId:m,skipProducts:!w}),await f.getState().loadConfigurations(m);const e=f.getState(),a=e.systemDomainDefaults??e.systemRoom?.domain_defaults??null;a&&await u.loadDomainDefaults(a)}try{const t=f.getState(),e=t.systemId??m,a=P?.(e)||{};a.ui&&Object.keys(a.ui).length&&n.setState(a.ui);const l=!!t.systemRoom;n.setState({sceneCapabilities:{dimensions:l,walls:l},showWalls:l});const p=R?.(e);p!=null&&f.setState({configuratorKey:p})}catch{}if(!U)try{const{applySystemTheme:t}=await import("./5c9fd9201c.js");let e=null,a=!1;try{const y=new URLSearchParams(window.location.search);y.has("theme")&&(e=y.get("theme"),a=!0)}catch{}if(!a)for(let y=0;y<20;y+=1){const A=f.getState();if(e=A.systemThemeRecord??A.systemTheme,e!=null||s)break;await new Promise(N=>setTimeout(N,100))}if(s)return;const l=typeof document<"u"&&!!document.documentElement.getAttribute("data-theme-id"),p=typeof e=="string"&&/^\d+$/.test(e.trim()),K=l&&p&&!a;(e!=null||a)&&!K&&t(e)}catch{}if(s)return;n.setState({themeReady:!0});const o="ontouchstart"in window||navigator.maxTouchPoints>0,c=Math.min(window.innerWidth,window.innerHeight)<768;et(o&&c);const d=r?null:await u.parseShareLink(),i=f.getState().sceneConfigurations,h=f.getState().defaultPresetId;let I=h!=null&&i[h]?h:null;I||(I=Object.values(i||{})[0]?.id);const b=r?.scene_snapshot?._state?.sceneGraph?.activeSceneConfigId,g=b!=null&&i[b]?b:d?.sc||I;u.preloadMaterials(i[g]),tt.getState().initializeScene(g);try{const{applySceneConfigDefaults:t}=await import("./a77b15c0d6.js");t(g)}catch{}ot(i[g]),it(i[g]),!r&&d&&await u.restoreShareLink(d);const E=new URLSearchParams(window.location.search),j=E.get("gui");(j==="false"||j==="0")&&n.getState().setGuiVisible(!1);const O=E.get("hide");if(O){const t=O.split(",").map(e=>e.trim()).filter(Boolean);if(t.includes("all"))M();else{const e=t.filter(l=>v.includes(l)),a=t.filter(l=>!v.includes(l)&&l!=="all");a.length&&console.warn(`[sdk] ?hide= ignored unknown region(s): ${a.join(", ")}. Known regions: ${v.join(", ")}, or "all".`),e.length&&M(e)}}D(),k.getState().clearHistory(),at(),import("./a77b15c0d6.js").then(({initConfigEngine:t})=>t()).catch(()=>{}),w&&(()=>{if(s)return;n.setState({bootEvaluating:!0});const t=k.getState();t.pauseTracking();let e=!1;const a=()=>{e||(e=!0,n.setState({bootEvaluating:!1}),t.resumeTracking())};G().then(()=>{if(s){a();return}import("./a77b15c0d6.js").then(async({seedInitialState:l,reevaluateForFocus:p})=>{await l(),!s&&await p()}).catch(()=>{}).finally(()=>{a(),u.prefetchRemainingMaterialsWhenIdle?.()})}).catch(a)})(),$?.(),setTimeout(()=>{s||n.getState().markUiReady?.()},2500),r?(n.setState({isLayoutLoading:!0}),n.getState().setSceneLoading(!0,"Loading your saved design..."),_=nt(async()=>{s||(await u.restoreProject(r),D(),G().then(()=>{if(s)return;n.getState().setInitialPerPieceOverrides(),n.setState({isLayoutLoading:!1}),n.getState().clearSceneLoading(),k.getState().clearHistory();const t=r?.scene_snapshot?.canonical||null;import("./a77b15c0d6.js").then(({restoreConfiguration:e,refreshCanonicalState:a})=>t?e(t):a()).catch(()=>{})}))})):n.getState().setInitialPerPieceOverrides()}catch(o){n.getState().markUiReady?.();const c=o?.status,d=c==null?await Q(q()):null,i=J(o,{reachable:d});X(i,o);const h=i.code==="unavailable"?"unavailable":c===401||c===403?"unauthorized":c===404?"unavailable":"network";C?.(`${i.title} ${i.body}`,{code:h,reason:i.code,title:i.title,body:i.body,fix:i.fix,status:c,cause:o})}})(),{cancel(){s=!0,_&&_()}}}export{Tt as ORG_UNAVAILABLE_MESSAGE,Ct as bootConfigurator};