@virtualdisplay.io/client 4.0.0-alpha.14 → 4.0.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- const C = {
1
+ const A = {
2
2
  NO_MAPPING: "NO_MAPPING",
3
3
  ATTRIBUTE_NOT_FOUND: "ATTRIBUTE_NOT_FOUND",
4
4
  VALUE_NOT_FOUND: "VALUE_NOT_FOUND",
@@ -11,42 +11,24 @@ class f extends Error {
11
11
  constructor(t, e) {
12
12
  super(t), this.name = "VirtualdisplayError", this.code = e;
13
13
  }
14
- static noMapping() {
15
- return new f(
16
- "No attributes available. Waiting for server metadata.",
17
- C.NO_MAPPING
18
- );
19
- }
20
- static attributeNotFound(t) {
21
- return new f(
22
- `Attribute "${t}" not found in mapping`,
23
- C.ATTRIBUTE_NOT_FOUND
24
- );
25
- }
26
14
  static valueNotFound(t, e) {
27
15
  return new f(
28
16
  `Value "${e}" not found for attribute "${t}"`,
29
- C.VALUE_NOT_FOUND
17
+ A.VALUE_NOT_FOUND
30
18
  );
31
19
  }
32
20
  static parentNotFound(t) {
33
21
  return new f(
34
22
  `Parent element not found: ${t}`,
35
- C.PARENT_NOT_FOUND
23
+ A.PARENT_NOT_FOUND
36
24
  );
37
25
  }
38
26
  static invalidParameter(t) {
39
- return new f(t, C.INVALID_PARAMETER);
40
- }
41
- static snapshotFailed(t, e) {
42
- return new f(
43
- `Snapshot failed for "${t}": ${e}`,
44
- C.SNAPSHOT_FAILED
45
- );
27
+ return new f(t, A.INVALID_PARAMETER);
46
28
  }
47
29
  }
48
- const kt = {};
49
- class St {
30
+ const St = {};
31
+ class At {
50
32
  defaultServer = "https://server.virtualdisplay.io";
51
33
  options;
52
34
  constructor(t) {
@@ -85,7 +67,7 @@ class St {
85
67
  return e.searchParams.set("license", this.options.license), e.searchParams.set("model", this.options.model), this.options.language !== void 0 && e.searchParams.set("language", this.options.language), this.options.debug === !0 && e.searchParams.set("debug", "true"), this.options.traceparent !== void 0 && e.searchParams.set("traceparent", this.options.traceparent), e.toString();
86
68
  }
87
69
  getServerUrl() {
88
- if (kt?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
70
+ if (St?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
89
71
  return this.defaultServer;
90
72
  }
91
73
  getParentElement() {
@@ -97,18 +79,18 @@ class St {
97
79
  return t;
98
80
  }
99
81
  }
100
- function At(n) {
82
+ function Et(n) {
101
83
  const t = new Date(n.timestamp).toLocaleTimeString("en-GB", { hour12: !1 }), e = n.level.toUpperCase().padEnd(5), i = n.trace_id?.slice(0, 8) ?? "--------", o = n.msg, s = ["timestamp", "level", "msg", "service", "trace_id", "span_id"], r = Object.entries(n).filter(([l]) => !s.includes(l)).map(([l, d]) => `${l}=${JSON.stringify(d)}`).join(" ");
102
84
  return `${t} ${e} [${i}] ${o}${r ? " " + r : ""}`;
103
85
  }
104
- function Et(n) {
86
+ function xt(n) {
105
87
  return JSON.stringify(n);
106
88
  }
107
- function xt(n, t) {
108
- const e = t ? At(n) : Et(n);
89
+ function Tt(n, t) {
90
+ const e = t ? Et(n) : xt(n);
109
91
  n.level === "error" ? console.error(e) : n.level === "warn" ? console.warn(e) : console.log(e);
110
92
  }
111
- function lt(n, t = 0) {
93
+ function ct(n, t = 0) {
112
94
  const e = {
113
95
  name: n.name,
114
96
  message: n.message
@@ -120,34 +102,34 @@ function lt(n, t = 0) {
120
102
  const o = n[i];
121
103
  o !== void 0 && (e[i] = o);
122
104
  }
123
- return n.cause !== void 0 && n.cause !== null && (e.cause = n.cause instanceof Error && t < 5 ? lt(n.cause, t + 1) : String(n.cause)), e;
105
+ return n.cause !== void 0 && n.cause !== null && (e.cause = n.cause instanceof Error && t < 5 ? ct(n.cause, t + 1) : String(n.cause)), e;
124
106
  }
125
- function Tt(n) {
107
+ function Rt(n) {
126
108
  const t = {};
127
109
  for (const [e, i] of Object.entries(n))
128
- t[e] = i instanceof Error ? lt(i) : i;
110
+ t[e] = i instanceof Error ? ct(i) : i;
129
111
  return t;
130
112
  }
131
- function Rt() {
113
+ function Ot() {
132
114
  return /* @__PURE__ */ new Date();
133
115
  }
134
116
  function Nt(n) {
135
117
  return n.toISOString();
136
118
  }
137
- function ct() {
119
+ function ut() {
138
120
  return typeof navigator > "u" ? "" : navigator.userAgent;
139
121
  }
140
- function Ot() {
141
- return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
142
- }
143
122
  function It() {
144
- return /iPhone|iPad|iPod/i.test(ct()) || Ot();
123
+ return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
145
124
  }
146
125
  function Lt() {
147
- return /Android/i.test(ct());
126
+ return /iPhone|iPad|iPod/i.test(ut()) || It();
148
127
  }
149
128
  function Mt() {
150
- return It() || Lt();
129
+ return /Android/i.test(ut());
130
+ }
131
+ function zt() {
132
+ return Lt() || Mt();
151
133
  }
152
134
  class Z {
153
135
  constructor(t) {
@@ -159,14 +141,14 @@ class Z {
159
141
  */
160
142
  log(t, e, i = {}) {
161
143
  const o = this.config.traceProvider?.() ?? {}, s = {
162
- timestamp: Nt(Rt()),
144
+ timestamp: Nt(Ot()),
163
145
  level: t,
164
146
  msg: e,
165
147
  service: this.config.service,
166
148
  ...o,
167
- ...Tt(i)
149
+ ...Rt(i)
168
150
  };
169
- xt(s, this.config.isDev);
151
+ Tt(s, this.config.isDev);
170
152
  }
171
153
  /**
172
154
  * Log at DEBUG level (development only).
@@ -202,37 +184,37 @@ class Z {
202
184
  }).bind(this), e;
203
185
  }
204
186
  }
205
- function ut(n, t) {
187
+ function dt(n, t) {
206
188
  const e = t?.isDev !== void 0 ? t.isDev : typeof process < "u" ? process.env.NODE_ENV !== "production" : !0;
207
189
  return new Z({ service: n, isDev: e, traceProvider: t?.traceProvider });
208
190
  }
209
- function O(n) {
191
+ function N(n) {
210
192
  if (n !== void 0)
211
193
  return typeof n == "object" && n !== null && !Array.isArray(n) && !(n instanceof Error) ? n : n instanceof Error ? { error: n.message } : { value: n };
212
194
  }
213
- function dt(n) {
195
+ function ht(n) {
214
196
  return {
215
- debug: (t, e) => n.debug(t, O(e)),
216
- info: (t, e) => n.info(t, O(e)),
217
- warn: (t, e) => n.warn(t, O(e)),
218
- error: (t, e) => n.error(t, O(e))
197
+ debug: (t, e) => n.debug(t, N(e)),
198
+ info: (t, e) => n.info(t, N(e)),
199
+ warn: (t, e) => n.warn(t, N(e)),
200
+ error: (t, e) => n.error(t, N(e))
219
201
  };
220
202
  }
221
- let ht = !1, k = dt(ut("client", { isDev: !1 }));
222
- function zt() {
223
- ht = !0, k = dt(ut("client", { isDev: !0 }));
203
+ let mt = !1, C = ht(dt("client", { isDev: !1 }));
204
+ function Pt() {
205
+ mt = !0, C = ht(dt("client", { isDev: !0 }));
224
206
  }
225
- function Ui() {
226
- return ht;
207
+ function Vi() {
208
+ return mt;
227
209
  }
228
- class Pt {
210
+ class Ft {
229
211
  ready = !1;
230
212
  onReady;
231
213
  constructor(t) {
232
214
  this.onReady = t;
233
215
  }
234
216
  handleMappingReceived() {
235
- this.ready || (this.ready = !0, k.info("Mapping received from server, client is now ready"), this.onReady?.());
217
+ this.ready || (this.ready = !0, C.info("Mapping received from server, client is now ready"), this.onReady?.());
236
218
  }
237
219
  get isReady() {
238
220
  return this.ready;
@@ -259,59 +241,59 @@ const c = {
259
241
  }, X = {
260
242
  FOCUS: "focus",
261
243
  UNFOCUS: "unfocus"
262
- }, Ft = {
263
- FOCUSED: "focused"
264
244
  }, $t = {
245
+ FOCUSED: "focused"
246
+ }, Dt = {
265
247
  /** Behaves exactly like an unpriced combination: no price, no button. */
266
248
  HIDDEN: "hidden"
267
- }, Dt = new Set(Object.values(c));
268
- function Bt(n) {
249
+ }, Bt = new Set(Object.values(c));
250
+ function Ut(n) {
269
251
  if (typeof n != "object" || n === null)
270
252
  return !1;
271
253
  const t = n;
272
- return typeof t.target == "string" ? !1 : typeof t.type == "string" && Dt.has(t.type);
254
+ return typeof t.target == "string" ? !1 : typeof t.type == "string" && Bt.has(t.type);
273
255
  }
274
- function Ut(n) {
275
- const t = S(n);
256
+ function Vt(n) {
257
+ const t = k(n);
276
258
  return t !== null && t.type === c.HANDSHAKE;
277
259
  }
278
- function Vt(n) {
279
- const t = S(n);
260
+ function jt(n) {
261
+ const t = k(n);
280
262
  return t !== null && t.type === c.MUTATION && Array.isArray(t.results);
281
263
  }
282
- function jt(n) {
283
- const t = S(n);
264
+ function Ht(n) {
265
+ const t = k(n);
284
266
  return t !== null && t.type === c.SNAPSHOT && ("data" in t || "error" in t);
285
267
  }
286
- function Ht(n) {
287
- const t = S(n);
268
+ function Gt(n) {
269
+ const t = k(n);
288
270
  return t !== null && t.type === c.CAMERA && Array.isArray(t.transforms);
289
271
  }
290
- function Gt(n) {
291
- const t = S(n);
272
+ function qt(n) {
273
+ const t = k(n);
292
274
  return t !== null && t.type === c.MAPPING && Array.isArray(t.attributes);
293
275
  }
294
- function qt(n) {
295
- const t = S(n);
276
+ function Zt(n) {
277
+ const t = k(n);
296
278
  return t !== null && t.type === c.LOADING_INDICATOR && typeof t.progress == "number";
297
279
  }
298
- function Zt(n) {
299
- const t = S(n);
280
+ function Wt(n) {
281
+ const t = k(n);
300
282
  return t !== null && t.type === c.CONFIG && typeof t.viewerSettings == "object";
301
283
  }
302
- function Wt(n) {
303
- const t = S(n);
284
+ function Yt(n) {
285
+ const t = k(n);
304
286
  return t !== null && t.type === c.ANNOTATION_PLACED && typeof t.position == "object" && t.position !== null;
305
287
  }
306
- function Yt(n) {
307
- const t = S(n);
288
+ function Xt(n) {
289
+ const t = k(n);
308
290
  return t !== null && t.type === c.FOCUS && typeof t.state == "string";
309
291
  }
310
- function Xt(n) {
311
- const t = S(n);
292
+ function Kt(n) {
293
+ const t = k(n);
312
294
  return t !== null && t.type === c.PRICING && typeof t.pricing == "object" && t.pricing !== null;
313
295
  }
314
- function S(n) {
296
+ function k(n) {
315
297
  return typeof n != "object" || n === null ? null : n;
316
298
  }
317
299
  class K {
@@ -361,7 +343,7 @@ class K {
361
343
  this.pending.length = 0;
362
344
  }
363
345
  }
364
- class Kt {
346
+ class Qt {
365
347
  constructor(t, e) {
366
348
  this.getTarget = t, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = e?.targetOrigin ?? "*", this.publisher = new K((i) => this.post(i)), this.consumer = new K((i) => this.routeToHandler(i)), this.shouldBuffer = e?.shouldBuffer ?? null, e?.bufferIncoming !== !0 && this.consumer.markReady();
367
349
  }
@@ -424,7 +406,7 @@ class Kt {
424
406
  start() {
425
407
  this.listener === null && (this.listener = (t) => {
426
408
  const { data: e } = t;
427
- if (!Bt(e) || e._source === this.sourceId)
409
+ if (!Ut(e) || e._source === this.sourceId)
428
410
  return;
429
411
  const i = this.getTarget();
430
412
  if (i !== null && t.source !== null && t.source !== i)
@@ -470,7 +452,7 @@ class Kt {
470
452
  });
471
453
  }
472
454
  }
473
- class Qt {
455
+ class Jt {
474
456
  constructor(t) {
475
457
  this.send = t;
476
458
  }
@@ -503,7 +485,7 @@ class Qt {
503
485
  e(t);
504
486
  }
505
487
  }
506
- class Jt {
488
+ class te {
507
489
  constructor(t, e) {
508
490
  this.value = t, this.attribute = e;
509
491
  }
@@ -517,7 +499,7 @@ class Jt {
517
499
  this.isSelectedValue = t;
518
500
  }
519
501
  }
520
- class te {
502
+ class ee {
521
503
  name;
522
504
  defaultValue;
523
505
  values;
@@ -569,18 +551,18 @@ class te {
569
551
  createValues(t) {
570
552
  const e = /* @__PURE__ */ new Map();
571
553
  for (const i of t) {
572
- const o = new Jt(i, this.name);
554
+ const o = new te(i, this.name);
573
555
  i === this.defaultValue && o.setSelected(!0), e.set(i, o);
574
556
  }
575
557
  return e;
576
558
  }
577
559
  }
578
- class ee {
560
+ class ne {
579
561
  attributes = /* @__PURE__ */ new Map();
580
562
  constructor(t, e, i) {
581
563
  for (const o of t) {
582
564
  const s = this.buildOptions(o, e);
583
- this.attributes.set(o.name, new te(s));
565
+ this.attributes.set(o.name, new ee(s));
584
566
  }
585
567
  this.onMutationFailed = i;
586
568
  }
@@ -617,7 +599,7 @@ class ee {
617
599
  return t.defaultValue !== void 0 ? { ...i, defaultValue: t.defaultValue } : i;
618
600
  }
619
601
  }
620
- class ne {
602
+ class ie {
621
603
  constructor(t, e) {
622
604
  this.send = t, this.onMutationFailed = e;
623
605
  }
@@ -629,9 +611,9 @@ class ne {
629
611
  * Handle incoming MAPPING message from server
630
612
  */
631
613
  handleMappingReceived(t) {
632
- k.debug("Initializing from server mapping", {
614
+ C.debug("Initializing from server mapping", {
633
615
  attributeCount: t.attributes.length
634
- }), this.registry = new ee(
616
+ }), this.registry = new ne(
635
617
  t.attributes,
636
618
  (e, i) => this.sendMutation(e, i),
637
619
  this.onMutationFailed
@@ -665,7 +647,7 @@ class ne {
665
647
  }
666
648
  const i = this.registry.get(t);
667
649
  if (i === void 0) {
668
- k.warn(`onChange: attribute "${t}" not found — callback will not fire`);
650
+ C.warn(`onChange: attribute "${t}" not found — callback will not fire`);
669
651
  return;
670
652
  }
671
653
  i.onChange(e);
@@ -691,12 +673,12 @@ class ne {
691
673
  replayPendingCallbacks() {
692
674
  for (const { name: t, callback: e } of this.pendingCallbacks) {
693
675
  const i = this.registry?.get(t);
694
- i === void 0 && k.warn(`onChange: attribute "${t}" not found — buffered callback will not fire`), i?.onChange(e);
676
+ i === void 0 && C.warn(`onChange: attribute "${t}" not found — buffered callback will not fire`), i?.onChange(e);
695
677
  }
696
678
  this.pendingCallbacks.length = 0;
697
679
  }
698
680
  }
699
- let ie = class {
681
+ let oe = class {
700
682
  constructor(t) {
701
683
  this.send = t;
702
684
  }
@@ -759,7 +741,7 @@ let ie = class {
759
741
  this.send(t);
760
742
  }
761
743
  };
762
- class oe {
744
+ class se {
763
745
  state;
764
746
  limitsState;
765
747
  changeCallbacks = [];
@@ -847,7 +829,7 @@ class oe {
847
829
  }
848
830
  }
849
831
  }
850
- const N = {
832
+ const O = {
851
833
  /** Attribute selection requested (cancelable). `detail`: `{ attribute, value }`. */
852
834
  SELECT: "ui:select",
853
835
  /** Attribute selection applied. `detail`: `{ attribute, value }`. */
@@ -859,7 +841,7 @@ const N = {
859
841
  /** Configuration submitted (bubbles). `detail`: the resolved configuration handed to the host. */
860
842
  CONFIGURATION_SUBMIT: "vd:configuration-submit"
861
843
  };
862
- class se {
844
+ class re {
863
845
  constructor(t, e) {
864
846
  this.send = t, this.dispatch = e;
865
847
  }
@@ -896,27 +878,27 @@ class se {
896
878
  }
897
879
  /** Called by the client when a FocusStateMessage is received from the viewer. */
898
880
  handleStateReceived(t) {
899
- t.state === Ft.FOCUSED && t.component !== void 0 ? (this.focused = t.component, this.attributes = t.attributes ?? []) : (this.focused = null, this.attributes = []);
881
+ t.state === $t.FOCUSED && t.component !== void 0 ? (this.focused = t.component, this.attributes = t.attributes ?? []) : (this.focused = null, this.attributes = []);
900
882
  const e = this.focused !== null ? { component: this.focused, attributes: this.attributes } : null;
901
883
  for (const i of this.changeCallbacks)
902
884
  i(e);
903
885
  this.dispatch(e);
904
886
  }
905
887
  }
906
- function re(n, t) {
907
- const e = n.filter((s) => ae(s, t));
888
+ function ae(n, t) {
889
+ const e = n.filter((s) => le(s, t));
908
890
  if (e.length === 0)
909
891
  return;
910
892
  const i = Math.max(...e.map(Q)), o = e.filter((s) => Q(s) === i);
911
893
  return o.length === 1 ? o[0] : void 0;
912
894
  }
913
- function ae(n, t) {
895
+ function le(n, t) {
914
896
  return Object.entries(n.attributes).every(([e, i]) => t[e] === i);
915
897
  }
916
898
  function Q(n) {
917
899
  return Object.keys(n.attributes).length;
918
900
  }
919
- class le {
901
+ class ce {
920
902
  constructor(t, e) {
921
903
  this.dispatchChange = t, this.dispatchSubmit = e;
922
904
  }
@@ -1026,8 +1008,8 @@ class le {
1026
1008
  resolve() {
1027
1009
  if (this.pricing === void 0)
1028
1010
  return;
1029
- const t = re(this.pricing.rules, this.selection);
1030
- if (!(t === void 0 || t.availability === $t.HIDDEN))
1011
+ const t = ae(this.pricing.rules, this.selection);
1012
+ if (!(t === void 0 || t.availability === Dt.HIDDEN))
1031
1013
  return {
1032
1014
  attributes: { ...this.selection },
1033
1015
  reference: t.reference,
@@ -1037,7 +1019,7 @@ class le {
1037
1019
  };
1038
1020
  }
1039
1021
  }
1040
- class ce {
1022
+ class ue {
1041
1023
  constructor(t) {
1042
1024
  this.filename = t;
1043
1025
  }
@@ -1090,7 +1072,8 @@ class ce {
1090
1072
  }), this.developedCallbacks.clear(), this.errorCallbacks.clear());
1091
1073
  }
1092
1074
  }
1093
- class ue {
1075
+ const J = 3e4;
1076
+ class de {
1094
1077
  constructor(t) {
1095
1078
  this.send = t;
1096
1079
  }
@@ -1105,9 +1088,14 @@ class ue {
1105
1088
  * @throws VirtualdisplayError if filename is invalid
1106
1089
  */
1107
1090
  take(t) {
1108
- this.validateFilename(t), k.debug("Taking snapshot", { filename: t });
1109
- const e = new ce(t);
1110
- return this.pendingPhotos.set(e.getFilename(), e), this.send({
1091
+ this.validateFilename(t), C.debug("Taking snapshot", { filename: t });
1092
+ const e = new ue(t), i = setTimeout(() => {
1093
+ this.pendingPhotos.delete(t), C.warn("Snapshot timed out", { filename: t }), e.fail(new f(
1094
+ `Snapshot timed out: the viewer did not respond within ${J}ms`,
1095
+ A.SNAPSHOT_FAILED
1096
+ ));
1097
+ }, J);
1098
+ return this.pendingPhotos.set(t, { photo: e, timeout: i }), this.send({
1111
1099
  type: c.SNAPSHOT,
1112
1100
  filename: t
1113
1101
  }), e;
@@ -1119,17 +1107,19 @@ class ue {
1119
1107
  handleSnapshotResult(t) {
1120
1108
  const e = this.pendingPhotos.get(t.filename);
1121
1109
  if (e === void 0) {
1122
- k.warn("No pending photo found for filename", {
1110
+ C.warn("No pending photo found for filename", {
1123
1111
  filename: t.filename,
1124
1112
  pendingFilenames: Array.from(this.pendingPhotos.keys())
1125
1113
  });
1126
1114
  return;
1127
1115
  }
1128
- if (this.pendingPhotos.delete(t.filename), t.error !== void 0) {
1129
- e.fail(new f(t.error, C.SNAPSHOT_FAILED));
1116
+ clearTimeout(e.timeout), this.pendingPhotos.delete(t.filename);
1117
+ const { photo: i } = e;
1118
+ if (t.error !== void 0) {
1119
+ i.fail(new f(t.error, A.SNAPSHOT_FAILED));
1130
1120
  return;
1131
1121
  }
1132
- t.data !== void 0 && e.develop({ filename: t.filename, data: t.data });
1122
+ t.data !== void 0 && i.develop({ filename: t.filename, data: t.data });
1133
1123
  }
1134
1124
  /**
1135
1125
  * Fail any pending photos and forget them. Called from client destroy
@@ -1141,10 +1131,10 @@ class ue {
1141
1131
  return;
1142
1132
  const t = new f(
1143
1133
  "Client destroyed before snapshot completed",
1144
- C.SNAPSHOT_FAILED
1134
+ A.SNAPSHOT_FAILED
1145
1135
  );
1146
- for (const e of this.pendingPhotos.values())
1147
- e.fail(t);
1136
+ for (const { photo: e, timeout: i } of this.pendingPhotos.values())
1137
+ clearTimeout(i), e.fail(t);
1148
1138
  this.pendingPhotos.clear();
1149
1139
  }
1150
1140
  /**
@@ -1154,23 +1144,23 @@ class ue {
1154
1144
  if (t === "" || typeof t != "string")
1155
1145
  throw new f(
1156
1146
  "Filename must be a non-empty string",
1157
- C.INVALID_PARAMETER
1147
+ A.INVALID_PARAMETER
1158
1148
  );
1159
1149
  if (!this.validExtensions.some(
1160
1150
  (i) => t.toLowerCase().endsWith(i)
1161
1151
  ))
1162
1152
  throw new f(
1163
1153
  `Invalid filename: "${t}". Filename must end with one of: ${this.validExtensions.join(", ")}`,
1164
- C.INVALID_PARAMETER
1154
+ A.INVALID_PARAMETER
1165
1155
  );
1166
1156
  if (t.includes("..") || t.includes("/") || t.includes("\\"))
1167
1157
  throw new f(
1168
1158
  'Filename cannot contain path separators or ".."',
1169
- C.INVALID_PARAMETER
1159
+ A.INVALID_PARAMETER
1170
1160
  );
1171
1161
  }
1172
1162
  }
1173
- class de {
1163
+ class he {
1174
1164
  container = null;
1175
1165
  attach(t) {
1176
1166
  this.container = t;
@@ -1191,30 +1181,30 @@ class de {
1191
1181
  };
1192
1182
  }
1193
1183
  }
1194
- const he = {}, me = "en", mt = (
1184
+ const me = {}, pe = "en", pt = (
1195
1185
  /** @type {const} */
1196
1186
  ["en", "nl", "de"]
1197
1187
  ), W = [
1198
1188
  "baseLocale"
1199
- ], J = [];
1200
- let tt, et;
1201
- function pe(n) {
1202
- if (J.length === 0)
1189
+ ], tt = [];
1190
+ let et, nt;
1191
+ function fe(n) {
1192
+ if (tt.length === 0)
1203
1193
  return;
1204
1194
  const t = typeof n == "string" ? n : n.href;
1205
- if (tt === t)
1206
- return et;
1195
+ if (et === t)
1196
+ return nt;
1207
1197
  const e = new URL(t, "http://dummy.com");
1208
1198
  let i;
1209
- for (const o of J)
1210
- if (new he(o.match, e.href).exec(e.href)) {
1199
+ for (const o of tt)
1200
+ if (new me(o.match, e.href).exec(e.href)) {
1211
1201
  i = o;
1212
1202
  break;
1213
1203
  }
1214
- return tt = t, et = i, i;
1204
+ return et = t, nt = i, i;
1215
1205
  }
1216
- function pt(n) {
1217
- const t = pe(n);
1206
+ function ft(n) {
1207
+ const t = fe(n);
1218
1208
  return t && t.exclude !== !0 && Array.isArray(t.strategy) ? t.strategy : W;
1219
1209
  }
1220
1210
  const q = typeof window > "u";
@@ -1222,38 +1212,38 @@ globalThis.__paraglide = /** @type {any} */
1222
1212
  globalThis.__paraglide ?? {};
1223
1213
  globalThis.__paraglide.ssr = /** @type {any} */
1224
1214
  globalThis.__paraglide.ssr ?? {};
1225
- let nt = !1, h = () => {
1215
+ let it = !1, h = () => {
1226
1216
  let n = W;
1227
- !q && typeof window < "u" && window.location?.href && (n = pt(window.location.href));
1228
- const t = fe(n);
1217
+ !q && typeof window < "u" && window.location?.href && (n = ft(window.location.href));
1218
+ const t = ge(n);
1229
1219
  if (t)
1230
- return nt || (nt = !0, ft(t, { reload: !1 })), t;
1220
+ return it || (it = !0, gt(t, { reload: !1 })), t;
1231
1221
  throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
1232
1222
  };
1233
- function fe(n, t) {
1223
+ function ge(n, t) {
1234
1224
  let e;
1235
1225
  for (const i of n) {
1236
1226
  if (i === "baseLocale")
1237
- e = me;
1238
- else if (bt(i) && I.has(i)) {
1227
+ e = pe;
1228
+ else if (vt(i) && I.has(i)) {
1239
1229
  const s = I.get(i);
1240
1230
  if (s) {
1241
1231
  const r = s.getLocale();
1242
1232
  if (r instanceof Promise)
1243
1233
  continue;
1244
1234
  if (r !== void 0)
1245
- return be(r);
1235
+ return ve(r);
1246
1236
  }
1247
1237
  }
1248
- const o = gt(e);
1238
+ const o = bt(e);
1249
1239
  if (o)
1250
1240
  return o;
1251
1241
  }
1252
1242
  }
1253
- const ge = (n) => {
1243
+ const be = (n) => {
1254
1244
  window.location.reload();
1255
1245
  };
1256
- let ft = (n, t) => {
1246
+ let gt = (n, t) => {
1257
1247
  const e = {
1258
1248
  reload: !0,
1259
1249
  ...t
@@ -1265,9 +1255,9 @@ let ft = (n, t) => {
1265
1255
  }
1266
1256
  const o = [];
1267
1257
  let s = W;
1268
- !q && typeof window < "u" && window.location?.href && (s = pt(window.location.href));
1258
+ !q && typeof window < "u" && window.location?.href && (s = ft(window.location.href));
1269
1259
  for (const l of s)
1270
- if (l !== "baseLocale" && bt(l) && I.has(l)) {
1260
+ if (l !== "baseLocale" && vt(l) && I.has(l)) {
1271
1261
  const d = I.get(l);
1272
1262
  if (d) {
1273
1263
  let u = d.setLocale(n);
@@ -1279,7 +1269,7 @@ let ft = (n, t) => {
1279
1269
  }
1280
1270
  }
1281
1271
  const r = () => {
1282
- !q && e.reload && window.location && n !== i && ge();
1272
+ !q && e.reload && window.location && n !== i && be();
1283
1273
  };
1284
1274
  if (o.length)
1285
1275
  return Promise.all(o).then(() => {
@@ -1287,95 +1277,95 @@ let ft = (n, t) => {
1287
1277
  });
1288
1278
  r();
1289
1279
  };
1290
- function gt(n) {
1280
+ function bt(n) {
1291
1281
  if (typeof n != "string")
1292
1282
  return;
1293
1283
  const t = n.toLowerCase();
1294
- for (const e of mt)
1284
+ for (const e of pt)
1295
1285
  if (e.toLowerCase() === t)
1296
1286
  return e;
1297
1287
  }
1298
- function be(n) {
1299
- const t = gt(n);
1288
+ function ve(n) {
1289
+ const t = bt(n);
1300
1290
  if (t)
1301
1291
  return t;
1302
- throw new Error(`Invalid locale: ${n}. Expected one of: ${mt.join(", ")}`);
1292
+ throw new Error(`Invalid locale: ${n}. Expected one of: ${pt.join(", ")}`);
1303
1293
  }
1304
1294
  const I = /* @__PURE__ */ new Map();
1305
- function bt(n) {
1295
+ function vt(n) {
1306
1296
  return typeof n == "string" && /^custom-[A-Za-z0-9_-]+$/.test(n);
1307
1297
  }
1308
- const ve = (
1298
+ const ye = (
1309
1299
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1310
1300
  () => (
1311
1301
  /** @type {LocalizedString} */
1312
1302
  "Activate AR"
1313
1303
  )
1314
- ), ye = (
1304
+ ), _e = (
1315
1305
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1316
1306
  () => (
1317
1307
  /** @type {LocalizedString} */
1318
1308
  "AR activeren"
1319
1309
  )
1320
- ), _e = (
1310
+ ), Ce = (
1321
1311
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1322
1312
  () => (
1323
1313
  /** @type {LocalizedString} */
1324
1314
  "AR aktivieren"
1325
1315
  )
1326
- ), Ce = (
1316
+ ), we = (
1327
1317
  /** @type {((inputs?: Controls_Ar_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Ar_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1328
1318
  ((n = {}, t = {}) => {
1329
1319
  const e = t.locale ?? h();
1330
- return e === "en" ? ve() : e === "nl" ? ye() : _e();
1320
+ return e === "en" ? ye() : e === "nl" ? _e() : Ce();
1331
1321
  })
1332
- ), we = (
1322
+ ), ke = (
1333
1323
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1334
1324
  () => (
1335
1325
  /** @type {LocalizedString} */
1336
1326
  "Scan to view in AR"
1337
1327
  )
1338
- ), ke = (
1328
+ ), Se = (
1339
1329
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1340
1330
  () => (
1341
1331
  /** @type {LocalizedString} */
1342
1332
  "Scan om in AR te bekijken"
1343
1333
  )
1344
- ), Se = (
1334
+ ), Ae = (
1345
1335
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1346
1336
  () => (
1347
1337
  /** @type {LocalizedString} */
1348
1338
  "Scannen für AR-Ansicht"
1349
1339
  )
1350
- ), Ae = (
1340
+ ), Ee = (
1351
1341
  /** @type {((inputs?: Controls_Qr_Modaltitle1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaltitle1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1352
1342
  ((n = {}, t = {}) => {
1353
1343
  const e = t.locale ?? h();
1354
- return e === "en" ? we() : e === "nl" ? ke() : Se();
1344
+ return e === "en" ? ke() : e === "nl" ? Se() : Ae();
1355
1345
  })
1356
- ), Ee = (
1346
+ ), xe = (
1357
1347
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1358
1348
  () => (
1359
1349
  /** @type {LocalizedString} */
1360
1350
  "Use your smartphone camera to scan this QR code"
1361
1351
  )
1362
- ), xe = (
1352
+ ), Te = (
1363
1353
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1364
1354
  () => (
1365
1355
  /** @type {LocalizedString} */
1366
1356
  "Gebruik de camera van je smartphone om deze QR-code te scannen"
1367
1357
  )
1368
- ), Te = (
1358
+ ), Re = (
1369
1359
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1370
1360
  () => (
1371
1361
  /** @type {LocalizedString} */
1372
1362
  "Verwenden Sie die Kamera Ihres Smartphones, um diesen QR-Code zu scannen"
1373
1363
  )
1374
- ), Re = (
1364
+ ), Oe = (
1375
1365
  /** @type {((inputs?: Controls_Qr_Modaldescription1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaldescription1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1376
1366
  ((n = {}, t = {}) => {
1377
1367
  const e = t.locale ?? h();
1378
- return e === "en" ? Ee() : e === "nl" ? xe() : Te();
1368
+ return e === "en" ? xe() : e === "nl" ? Te() : Re();
1379
1369
  })
1380
1370
  ), Ne = (
1381
1371
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
@@ -1383,319 +1373,319 @@ const ve = (
1383
1373
  /** @type {LocalizedString} */
1384
1374
  "Your phone will open the 3D model in AR mode."
1385
1375
  )
1386
- ), Oe = (
1376
+ ), Ie = (
1387
1377
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
1388
1378
  () => (
1389
1379
  /** @type {LocalizedString} */
1390
1380
  "Je telefoon opent het 3D-model in AR-modus."
1391
1381
  )
1392
- ), Ie = (
1382
+ ), Le = (
1393
1383
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
1394
1384
  () => (
1395
1385
  /** @type {LocalizedString} */
1396
1386
  "Das 3D-Modell wird im AR-Modus Ihres Telefons geöffnet"
1397
1387
  )
1398
- ), Le = (
1388
+ ), Me = (
1399
1389
  /** @type {((inputs?: Controls_Qr_Modalinstructions1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modalinstructions1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1400
1390
  ((n = {}, t = {}) => {
1401
1391
  const e = t.locale ?? h();
1402
- return e === "en" ? Ne() : e === "nl" ? Oe() : Ie();
1392
+ return e === "en" ? Ne() : e === "nl" ? Ie() : Le();
1403
1393
  })
1404
- ), Me = (
1394
+ ), ze = (
1405
1395
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1406
1396
  () => (
1407
1397
  /** @type {LocalizedString} */
1408
1398
  "Close"
1409
1399
  )
1410
- ), ze = (
1400
+ ), Pe = (
1411
1401
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1412
1402
  () => (
1413
1403
  /** @type {LocalizedString} */
1414
1404
  "Sluiten"
1415
1405
  )
1416
- ), Pe = (
1406
+ ), Fe = (
1417
1407
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1418
1408
  () => (
1419
1409
  /** @type {LocalizedString} */
1420
1410
  "Schließen"
1421
1411
  )
1422
- ), Fe = (
1412
+ ), $e = (
1423
1413
  /** @type {((inputs?: Controls_Qr_Closebutton1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Closebutton1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1424
1414
  ((n = {}, t = {}) => {
1425
1415
  const e = t.locale ?? h();
1426
- return e === "en" ? Me() : e === "nl" ? ze() : Pe();
1416
+ return e === "en" ? ze() : e === "nl" ? Pe() : Fe();
1427
1417
  })
1428
- ), $e = (
1418
+ ), De = (
1429
1419
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1430
1420
  () => (
1431
1421
  /** @type {LocalizedString} */
1432
1422
  "Fullscreen"
1433
1423
  )
1434
- ), De = (
1424
+ ), Be = (
1435
1425
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1436
1426
  () => (
1437
1427
  /** @type {LocalizedString} */
1438
1428
  "Volledig scherm"
1439
1429
  )
1440
- ), Be = (
1430
+ ), Ue = (
1441
1431
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1442
1432
  () => (
1443
1433
  /** @type {LocalizedString} */
1444
1434
  "Vollbild"
1445
1435
  )
1446
- ), Ue = (
1436
+ ), Ve = (
1447
1437
  /** @type {((inputs?: Controls_Fullscreen_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Fullscreen_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1448
1438
  ((n = {}, t = {}) => {
1449
1439
  const e = t.locale ?? h();
1450
- return e === "en" ? $e() : e === "nl" ? De() : Be();
1440
+ return e === "en" ? De() : e === "nl" ? Be() : Ue();
1451
1441
  })
1452
- ), Ve = (
1442
+ ), je = (
1453
1443
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1454
1444
  () => (
1455
1445
  /** @type {LocalizedString} */
1456
1446
  "Downloading"
1457
1447
  )
1458
- ), je = (
1448
+ ), He = (
1459
1449
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1460
1450
  () => (
1461
1451
  /** @type {LocalizedString} */
1462
1452
  "Downloaden"
1463
1453
  )
1464
- ), He = (
1454
+ ), Ge = (
1465
1455
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1466
1456
  () => (
1467
1457
  /** @type {LocalizedString} */
1468
1458
  "Herunterladen"
1469
1459
  )
1470
- ), vt = (
1460
+ ), yt = (
1471
1461
  /** @type {((inputs?: Loading_Downloadingshort1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_Downloadingshort1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1472
1462
  ((n = {}, t = {}) => {
1473
1463
  const e = t.locale ?? h();
1474
- return e === "en" ? Ve() : e === "nl" ? je() : He();
1464
+ return e === "en" ? je() : e === "nl" ? He() : Ge();
1475
1465
  })
1476
- ), Ge = (
1466
+ ), qe = (
1477
1467
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1478
1468
  () => (
1479
1469
  /** @type {LocalizedString} */
1480
1470
  "Rendering"
1481
1471
  )
1482
- ), qe = (
1472
+ ), Ze = (
1483
1473
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1484
1474
  () => (
1485
1475
  /** @type {LocalizedString} */
1486
1476
  "Renderen"
1487
1477
  )
1488
- ), Ze = (
1478
+ ), We = (
1489
1479
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1490
1480
  () => (
1491
1481
  /** @type {LocalizedString} */
1492
1482
  "Rendern"
1493
1483
  )
1494
- ), We = (
1484
+ ), Ye = (
1495
1485
  /** @type {((inputs?: Loading_RenderingInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_RenderingInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1496
1486
  ((n = {}, t = {}) => {
1497
1487
  const e = t.locale ?? h();
1498
- return e === "en" ? Ge() : e === "nl" ? qe() : Ze();
1488
+ return e === "en" ? qe() : e === "nl" ? Ze() : We();
1499
1489
  })
1500
- ), Ye = (
1490
+ ), Xe = (
1501
1491
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1502
1492
  () => (
1503
1493
  /** @type {LocalizedString} */
1504
1494
  "Screenshot"
1505
1495
  )
1506
- ), Xe = (
1496
+ ), Ke = (
1507
1497
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1508
1498
  () => (
1509
1499
  /** @type {LocalizedString} */
1510
1500
  "Screenshot"
1511
1501
  )
1512
- ), Ke = (
1502
+ ), Qe = (
1513
1503
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1514
1504
  () => (
1515
1505
  /** @type {LocalizedString} */
1516
1506
  "Screenshot"
1517
1507
  )
1518
- ), Qe = (
1508
+ ), Je = (
1519
1509
  /** @type {((inputs?: Controls_Screenshot_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Screenshot_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1520
1510
  ((n = {}, t = {}) => {
1521
1511
  const e = t.locale ?? h();
1522
- return e === "en" ? Ye() : e === "nl" ? Xe() : Ke();
1512
+ return e === "en" ? Xe() : e === "nl" ? Ke() : Qe();
1523
1513
  })
1524
- ), Je = (
1514
+ ), tn = (
1525
1515
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1526
1516
  () => (
1527
1517
  /** @type {LocalizedString} */
1528
1518
  "Configure"
1529
1519
  )
1530
- ), tn = (
1520
+ ), en = (
1531
1521
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1532
1522
  () => (
1533
1523
  /** @type {LocalizedString} */
1534
1524
  "Configureer"
1535
1525
  )
1536
- ), en = (
1526
+ ), nn = (
1537
1527
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1538
1528
  () => (
1539
1529
  /** @type {LocalizedString} */
1540
1530
  "Konfigurieren"
1541
1531
  )
1542
- ), nn = (
1532
+ ), on = (
1543
1533
  /** @type {((inputs?: Controls_Configurator_OpenInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_OpenInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1544
1534
  ((n = {}, t = {}) => {
1545
1535
  const e = t.locale ?? h();
1546
- return e === "en" ? Je() : e === "nl" ? tn() : en();
1536
+ return e === "en" ? tn() : e === "nl" ? en() : nn();
1547
1537
  })
1548
- ), on = (
1538
+ ), sn = (
1549
1539
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1550
1540
  () => (
1551
1541
  /** @type {LocalizedString} */
1552
1542
  "Close"
1553
1543
  )
1554
- ), sn = (
1544
+ ), rn = (
1555
1545
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1556
1546
  () => (
1557
1547
  /** @type {LocalizedString} */
1558
1548
  "Sluiten"
1559
1549
  )
1560
- ), rn = (
1550
+ ), an = (
1561
1551
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1562
1552
  () => (
1563
1553
  /** @type {LocalizedString} */
1564
1554
  "Schließen"
1565
1555
  )
1566
- ), an = (
1556
+ ), ln = (
1567
1557
  /** @type {((inputs?: Controls_Configurator_CloseInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_CloseInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1568
1558
  ((n = {}, t = {}) => {
1569
1559
  const e = t.locale ?? h();
1570
- return e === "en" ? on() : e === "nl" ? sn() : rn();
1560
+ return e === "en" ? sn() : e === "nl" ? rn() : an();
1571
1561
  })
1572
- ), ln = (
1562
+ ), cn = (
1573
1563
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1574
1564
  () => (
1575
1565
  /** @type {LocalizedString} */
1576
1566
  "Reset camera"
1577
1567
  )
1578
- ), cn = (
1568
+ ), un = (
1579
1569
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1580
1570
  () => (
1581
1571
  /** @type {LocalizedString} */
1582
1572
  "Camera resetten"
1583
1573
  )
1584
- ), un = (
1574
+ ), dn = (
1585
1575
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1586
1576
  () => (
1587
1577
  /** @type {LocalizedString} */
1588
1578
  "Kamera zurücksetzen"
1589
1579
  )
1590
- ), dn = (
1580
+ ), hn = (
1591
1581
  /** @type {((inputs?: Controls_Camera_ResetInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_ResetInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1592
1582
  ((n = {}, t = {}) => {
1593
1583
  const e = t.locale ?? h();
1594
- return e === "en" ? ln() : e === "nl" ? cn() : un();
1584
+ return e === "en" ? cn() : e === "nl" ? un() : dn();
1595
1585
  })
1596
- ), hn = (
1586
+ ), mn = (
1597
1587
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1598
1588
  () => (
1599
1589
  /** @type {LocalizedString} */
1600
1590
  "Zoom in"
1601
1591
  )
1602
- ), mn = (
1592
+ ), pn = (
1603
1593
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1604
1594
  () => (
1605
1595
  /** @type {LocalizedString} */
1606
1596
  "Inzoomen"
1607
1597
  )
1608
- ), pn = (
1598
+ ), fn = (
1609
1599
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1610
1600
  () => (
1611
1601
  /** @type {LocalizedString} */
1612
1602
  "Hineinzoomen"
1613
1603
  )
1614
- ), fn = (
1604
+ ), gn = (
1615
1605
  /** @type {((inputs?: Controls_Camera_Zoomin1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomin1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1616
1606
  ((n = {}, t = {}) => {
1617
1607
  const e = t.locale ?? h();
1618
- return e === "en" ? hn() : e === "nl" ? mn() : pn();
1608
+ return e === "en" ? mn() : e === "nl" ? pn() : fn();
1619
1609
  })
1620
- ), gn = (
1610
+ ), bn = (
1621
1611
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1622
1612
  () => (
1623
1613
  /** @type {LocalizedString} */
1624
1614
  "Zoom out"
1625
1615
  )
1626
- ), bn = (
1616
+ ), vn = (
1627
1617
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1628
1618
  () => (
1629
1619
  /** @type {LocalizedString} */
1630
1620
  "Uitzoomen"
1631
1621
  )
1632
- ), vn = (
1622
+ ), yn = (
1633
1623
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1634
1624
  () => (
1635
1625
  /** @type {LocalizedString} */
1636
1626
  "Herauszoomen"
1637
1627
  )
1638
- ), yn = (
1628
+ ), _n = (
1639
1629
  /** @type {((inputs?: Controls_Camera_Zoomout1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomout1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1640
1630
  ((n = {}, t = {}) => {
1641
1631
  const e = t.locale ?? h();
1642
- return e === "en" ? gn() : e === "nl" ? bn() : vn();
1632
+ return e === "en" ? bn() : e === "nl" ? vn() : yn();
1643
1633
  })
1644
- ), _n = (
1634
+ ), Cn = (
1645
1635
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1646
1636
  () => (
1647
1637
  /** @type {LocalizedString} */
1648
1638
  "Rotate left"
1649
1639
  )
1650
- ), Cn = (
1640
+ ), wn = (
1651
1641
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1652
1642
  () => (
1653
1643
  /** @type {LocalizedString} */
1654
1644
  "Naar links draaien"
1655
1645
  )
1656
- ), wn = (
1646
+ ), kn = (
1657
1647
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1658
1648
  () => (
1659
1649
  /** @type {LocalizedString} */
1660
1650
  "Nach links drehen"
1661
1651
  )
1662
- ), kn = (
1652
+ ), Sn = (
1663
1653
  /** @type {((inputs?: Controls_Camera_Rotateleft1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateleft1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1664
1654
  ((n = {}, t = {}) => {
1665
1655
  const e = t.locale ?? h();
1666
- return e === "en" ? _n() : e === "nl" ? Cn() : wn();
1656
+ return e === "en" ? Cn() : e === "nl" ? wn() : kn();
1667
1657
  })
1668
- ), Sn = (
1658
+ ), An = (
1669
1659
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1670
1660
  () => (
1671
1661
  /** @type {LocalizedString} */
1672
1662
  "Rotate right"
1673
1663
  )
1674
- ), An = (
1664
+ ), En = (
1675
1665
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1676
1666
  () => (
1677
1667
  /** @type {LocalizedString} */
1678
1668
  "Naar rechts draaien"
1679
1669
  )
1680
- ), En = (
1670
+ ), xn = (
1681
1671
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1682
1672
  () => (
1683
1673
  /** @type {LocalizedString} */
1684
1674
  "Nach rechts drehen"
1685
1675
  )
1686
- ), xn = (
1676
+ ), Tn = (
1687
1677
  /** @type {((inputs?: Controls_Camera_Rotateright1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateright1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1688
1678
  ((n = {}, t = {}) => {
1689
1679
  const e = t.locale ?? h();
1690
- return e === "en" ? Sn() : e === "nl" ? An() : En();
1680
+ return e === "en" ? An() : e === "nl" ? En() : xn();
1691
1681
  })
1692
- ), Tn = (
1682
+ ), Rn = (
1693
1683
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1694
1684
  () => (
1695
1685
  /** @type {LocalizedString} */
1696
1686
  "Tilt up"
1697
1687
  )
1698
- ), Rn = (
1688
+ ), On = (
1699
1689
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1700
1690
  () => (
1701
1691
  /** @type {LocalizedString} */
@@ -1707,110 +1697,110 @@ const ve = (
1707
1697
  /** @type {LocalizedString} */
1708
1698
  "Nach oben kippen"
1709
1699
  )
1710
- ), On = (
1700
+ ), In = (
1711
1701
  /** @type {((inputs?: Controls_Camera_Tiltup1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltup1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1712
1702
  ((n = {}, t = {}) => {
1713
1703
  const e = t.locale ?? h();
1714
- return e === "en" ? Tn() : e === "nl" ? Rn() : Nn();
1704
+ return e === "en" ? Rn() : e === "nl" ? On() : Nn();
1715
1705
  })
1716
- ), In = (
1706
+ ), Ln = (
1717
1707
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1718
1708
  () => (
1719
1709
  /** @type {LocalizedString} */
1720
1710
  "Tilt down"
1721
1711
  )
1722
- ), Ln = (
1712
+ ), Mn = (
1723
1713
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1724
1714
  () => (
1725
1715
  /** @type {LocalizedString} */
1726
1716
  "Omlaag kantelen"
1727
1717
  )
1728
- ), Mn = (
1718
+ ), zn = (
1729
1719
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1730
1720
  () => (
1731
1721
  /** @type {LocalizedString} */
1732
1722
  "Nach unten kippen"
1733
1723
  )
1734
- ), zn = (
1724
+ ), Pn = (
1735
1725
  /** @type {((inputs?: Controls_Camera_Tiltdown1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltdown1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1736
1726
  ((n = {}, t = {}) => {
1737
1727
  const e = t.locale ?? h();
1738
- return e === "en" ? In() : e === "nl" ? Ln() : Mn();
1728
+ return e === "en" ? Ln() : e === "nl" ? Mn() : zn();
1739
1729
  })
1740
- ), Pn = (
1730
+ ), Fn = (
1741
1731
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1742
1732
  () => (
1743
1733
  /** @type {LocalizedString} */
1744
1734
  "Working…"
1745
1735
  )
1746
- ), Fn = (
1736
+ ), $n = (
1747
1737
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1748
1738
  () => (
1749
1739
  /** @type {LocalizedString} */
1750
1740
  "Bezig…"
1751
1741
  )
1752
- ), $n = (
1742
+ ), Dn = (
1753
1743
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1754
1744
  () => (
1755
1745
  /** @type {LocalizedString} */
1756
1746
  "Läuft…"
1757
1747
  )
1758
- ), Dn = (
1748
+ ), Bn = (
1759
1749
  /** @type {((inputs?: Commerce_Submit_BusyInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_BusyInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1760
1750
  ((n = {}, t = {}) => {
1761
1751
  const e = t.locale ?? h();
1762
- return e === "en" ? Pn() : e === "nl" ? Fn() : $n();
1752
+ return e === "en" ? Fn() : e === "nl" ? $n() : Dn();
1763
1753
  })
1764
- ), Bn = (
1754
+ ), Un = (
1765
1755
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1766
1756
  () => (
1767
1757
  /** @type {LocalizedString} */
1768
1758
  "Done"
1769
1759
  )
1770
- ), Un = (
1760
+ ), Vn = (
1771
1761
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1772
1762
  () => (
1773
1763
  /** @type {LocalizedString} */
1774
1764
  "Gelukt"
1775
1765
  )
1776
- ), Vn = (
1766
+ ), jn = (
1777
1767
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1778
1768
  () => (
1779
1769
  /** @type {LocalizedString} */
1780
1770
  "Fertig"
1781
1771
  )
1782
- ), jn = (
1772
+ ), Hn = (
1783
1773
  /** @type {((inputs?: Commerce_Submit_SuccessInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_SuccessInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1784
1774
  ((n = {}, t = {}) => {
1785
1775
  const e = t.locale ?? h();
1786
- return e === "en" ? Bn() : e === "nl" ? Un() : Vn();
1776
+ return e === "en" ? Un() : e === "nl" ? Vn() : jn();
1787
1777
  })
1788
- ), Hn = (
1778
+ ), Gn = (
1789
1779
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1790
1780
  () => (
1791
1781
  /** @type {LocalizedString} */
1792
1782
  "Failed"
1793
1783
  )
1794
- ), Gn = (
1784
+ ), qn = (
1795
1785
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1796
1786
  () => (
1797
1787
  /** @type {LocalizedString} */
1798
1788
  "Mislukt"
1799
1789
  )
1800
- ), qn = (
1790
+ ), Zn = (
1801
1791
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1802
1792
  () => (
1803
1793
  /** @type {LocalizedString} */
1804
1794
  "Fehlgeschlagen"
1805
1795
  )
1806
- ), Zn = (
1796
+ ), Wn = (
1807
1797
  /** @type {((inputs?: Commerce_Submit_FailedInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_FailedInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1808
1798
  ((n = {}, t = {}) => {
1809
1799
  const e = t.locale ?? h();
1810
- return e === "en" ? Hn() : e === "nl" ? Gn() : qn();
1800
+ return e === "en" ? Gn() : e === "nl" ? qn() : Zn();
1811
1801
  })
1812
1802
  );
1813
- const Wn = {
1803
+ const Yn = {
1814
1804
  xmlns: "http://www.w3.org/2000/svg",
1815
1805
  width: 24,
1816
1806
  height: 24,
@@ -1821,22 +1811,22 @@ const Wn = {
1821
1811
  "stroke-linecap": "round",
1822
1812
  "stroke-linejoin": "round"
1823
1813
  };
1824
- const yt = ([n, t, e]) => {
1814
+ const _t = ([n, t, e]) => {
1825
1815
  const i = document.createElementNS("http://www.w3.org/2000/svg", n);
1826
1816
  return Object.keys(t).forEach((o) => {
1827
1817
  i.setAttribute(o, String(t[o]));
1828
1818
  }), e?.length && e.forEach((o) => {
1829
- const s = yt(o);
1819
+ const s = _t(o);
1830
1820
  i.appendChild(s);
1831
1821
  }), i;
1832
- }, _t = (n, t = {}) => {
1822
+ }, Ct = (n, t = {}) => {
1833
1823
  const i = {
1834
- ...Wn,
1824
+ ...Yn,
1835
1825
  ...t
1836
1826
  };
1837
- return yt(["svg", i, n]);
1827
+ return _t(["svg", i, n]);
1838
1828
  };
1839
- const Yn = [
1829
+ const Xn = [
1840
1830
  [
1841
1831
  "path",
1842
1832
  {
@@ -1846,7 +1836,7 @@ const Yn = [
1846
1836
  ["path", { d: "m3.3 7 8.7 5 8.7-5" }],
1847
1837
  ["path", { d: "M12 22V12" }]
1848
1838
  ];
1849
- const Xn = [
1839
+ const Kn = [
1850
1840
  [
1851
1841
  "path",
1852
1842
  {
@@ -1855,27 +1845,27 @@ const Xn = [
1855
1845
  ],
1856
1846
  ["circle", { cx: "12", cy: "13", r: "3" }]
1857
1847
  ];
1858
- const Ct = [["path", { d: "m6 9 6 6 6-6" }]];
1859
- const Kn = [["path", { d: "m15 18-6-6 6-6" }]];
1860
- const Qn = [["path", { d: "m9 18 6-6-6-6" }]];
1861
- const Jn = [["path", { d: "m18 15-6-6-6 6" }]];
1862
- const ti = [
1848
+ const wt = [["path", { d: "m6 9 6 6 6-6" }]];
1849
+ const Qn = [["path", { d: "m15 18-6-6 6-6" }]];
1850
+ const Jn = [["path", { d: "m9 18 6-6-6-6" }]];
1851
+ const ti = [["path", { d: "m18 15-6-6-6 6" }]];
1852
+ const ei = [
1863
1853
  ["path", { d: "M15 3h6v6" }],
1864
1854
  ["path", { d: "m21 3-7 7" }],
1865
1855
  ["path", { d: "m3 21 7-7" }],
1866
1856
  ["path", { d: "M9 21H3v-6" }]
1867
1857
  ];
1868
- const ei = [
1858
+ const ni = [
1869
1859
  ["path", { d: "m14 10 7-7" }],
1870
1860
  ["path", { d: "M20 10h-6V4" }],
1871
1861
  ["path", { d: "m3 21 7-7" }],
1872
1862
  ["path", { d: "M4 14h6v6" }]
1873
1863
  ];
1874
- const ni = [
1864
+ const ii = [
1875
1865
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
1876
1866
  ["path", { d: "M3 3v5h5" }]
1877
1867
  ];
1878
- const ii = [
1868
+ const oi = [
1879
1869
  ["path", { d: "M10 5H3" }],
1880
1870
  ["path", { d: "M12 19H3" }],
1881
1871
  ["path", { d: "M14 3v4" }],
@@ -1886,38 +1876,38 @@ const ii = [
1886
1876
  ["path", { d: "M8 10v4" }],
1887
1877
  ["path", { d: "M8 12H3" }]
1888
1878
  ];
1889
- const oi = [
1879
+ const si = [
1890
1880
  ["path", { d: "M18 6 6 18" }],
1891
1881
  ["path", { d: "m6 6 12 12" }]
1892
1882
  ];
1893
- const si = [
1883
+ const ri = [
1894
1884
  ["circle", { cx: "11", cy: "11", r: "8" }],
1895
1885
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1896
1886
  ["line", { x1: "11", x2: "11", y1: "8", y2: "14" }],
1897
1887
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
1898
1888
  ];
1899
- const ri = [
1889
+ const ai = [
1900
1890
  ["circle", { cx: "11", cy: "11", r: "8" }],
1901
1891
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1902
1892
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
1903
1893
  ];
1904
1894
  function y(n, { size: t = 20, strokeWidth: e = 1.75 } = {}) {
1905
- return _t(n, { width: t, height: t, "stroke-width": e });
1895
+ return Ct(n, { width: t, height: t, "stroke-width": e });
1906
1896
  }
1907
1897
  const g = {
1908
- ar: (n) => y(Yn, n),
1909
- fullscreen: (n) => y(ti, n),
1910
- exitFullscreen: (n) => y(ei, n),
1911
- screenshot: (n) => y(Xn, n),
1912
- tiltUp: (n) => y(Jn, n),
1913
- tiltDown: (n) => y(Ct, n),
1914
- rotateLeft: (n) => y(Kn, n),
1915
- rotateRight: (n) => y(Qn, n),
1916
- zoomIn: (n) => y(si, n),
1917
- zoomOut: (n) => y(ri, n),
1918
- reset: (n) => y(ni, n),
1919
- configurator: (n) => y(ii, n),
1920
- close: (n) => y(oi, n)
1898
+ ar: (n) => y(Xn, n),
1899
+ fullscreen: (n) => y(ei, n),
1900
+ exitFullscreen: (n) => y(ni, n),
1901
+ screenshot: (n) => y(Kn, n),
1902
+ tiltUp: (n) => y(ti, n),
1903
+ tiltDown: (n) => y(wt, n),
1904
+ rotateLeft: (n) => y(Qn, n),
1905
+ rotateRight: (n) => y(Jn, n),
1906
+ zoomIn: (n) => y(ri, n),
1907
+ zoomOut: (n) => y(ai, n),
1908
+ reset: (n) => y(ii, n),
1909
+ configurator: (n) => y(oi, n),
1910
+ close: (n) => y(si, n)
1921
1911
  };
1922
1912
  class b {
1923
1913
  element;
@@ -1966,7 +1956,7 @@ const m = {
1966
1956
  24: "6rem"
1967
1957
  // 96px
1968
1958
  };
1969
- class ai {
1959
+ class li {
1970
1960
  element;
1971
1961
  constructor() {
1972
1962
  this.element = document.createElement("div"), Object.assign(this.element.style, {
@@ -1979,9 +1969,9 @@ class ai {
1979
1969
  });
1980
1970
  }
1981
1971
  }
1982
- class li {
1972
+ class ci {
1983
1973
  constructor(t = {}) {
1984
- this.options = t, this.card = new ai(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1974
+ this.options = t, this.card = new li(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1985
1975
  }
1986
1976
  options;
1987
1977
  card;
@@ -2010,7 +2000,7 @@ class li {
2010
2000
  }), t;
2011
2001
  }
2012
2002
  }
2013
- class ci {
2003
+ class ui {
2014
2004
  element;
2015
2005
  selectCallback = null;
2016
2006
  constructor(t, e, i) {
@@ -2032,7 +2022,7 @@ class ci {
2032
2022
  this.selectCallback = t;
2033
2023
  }
2034
2024
  }
2035
- class ui {
2025
+ class di {
2036
2026
  element;
2037
2027
  select;
2038
2028
  constructor(t, e, i, o, s) {
@@ -2045,7 +2035,7 @@ class ui {
2045
2035
  v.value = p, v.textContent = s?.[u] ?? p, p === o && (v.selected = !0, l = !0), this.select.appendChild(v);
2046
2036
  }
2047
2037
  l || (r.selected = !0);
2048
- const d = _t(Ct, { width: 16, height: 16, "stroke-width": 2 });
2038
+ const d = Ct(wt, { width: 16, height: 16, "stroke-width": 2 });
2049
2039
  d.classList.add("ui-native-select-icon"), this.element = document.createElement("div"), this.element.className = "ui-native-select-wrap", this.element.appendChild(this.select), this.element.appendChild(d);
2050
2040
  }
2051
2041
  setSelected(t) {
@@ -2074,8 +2064,8 @@ const _ = {
2074
2064
  medium: "500",
2075
2065
  semibold: "600"
2076
2066
  }
2077
- }, di = _.fontFamily.sans.join(", ");
2078
- class hi {
2067
+ }, hi = _.fontFamily.sans.join(", ");
2068
+ class mi {
2079
2069
  qrLib = null;
2080
2070
  dialog = null;
2081
2071
  async show(t) {
@@ -2086,28 +2076,28 @@ class hi {
2086
2076
  errorCorrectionLevel: "M",
2087
2077
  color: { dark: m.black, light: m.white }
2088
2078
  });
2089
- this.dialog = new li({ onClose: () => {
2079
+ this.dialog = new ci({ onClose: () => {
2090
2080
  this.dialog = null;
2091
2081
  } }), Object.assign(this.dialog.card.element.style, {
2092
2082
  display: "flex",
2093
2083
  flexDirection: "column",
2094
2084
  alignItems: "center",
2095
2085
  gap: a[3],
2096
- fontFamily: di
2097
- }), this.dialog.card.element.appendChild(this.createText(Ae(), {
2086
+ fontFamily: hi
2087
+ }), this.dialog.card.element.appendChild(this.createText(Ee(), {
2098
2088
  fontSize: _.fontSize.base,
2099
2089
  fontWeight: _.fontWeight.semibold,
2100
2090
  color: m.neutral[900]
2101
- })), this.dialog.card.element.appendChild(this.createText(Re(), {
2091
+ })), this.dialog.card.element.appendChild(this.createText(Oe(), {
2102
2092
  fontSize: _.fontSize.sm,
2103
2093
  color: m.neutral[600]
2104
- })), this.dialog.card.element.appendChild(this.createQrImage(e)), this.dialog.card.element.appendChild(this.createText(Le(), {
2094
+ })), this.dialog.card.element.appendChild(this.createQrImage(e)), this.dialog.card.element.appendChild(this.createText(Me(), {
2105
2095
  fontSize: _.fontSize.xs,
2106
2096
  color: m.neutral[500]
2107
2097
  }));
2108
2098
  const i = new b({
2109
2099
  variant: "outline",
2110
- label: Fe(),
2100
+ label: $e(),
2111
2101
  onClick: () => {
2112
2102
  this.hide();
2113
2103
  }
@@ -2130,7 +2120,7 @@ class hi {
2130
2120
  }), e;
2131
2121
  }
2132
2122
  }
2133
- const x = _.fontFamily.sans.join(", "), mi = `
2123
+ const x = _.fontFamily.sans.join(", "), pi = `
2134
2124
  --primary: oklch(5% 0 0);
2135
2125
  --primary-foreground: oklch(100% 0 0);
2136
2126
  --secondary: oklch(92% 0 0);
@@ -2143,8 +2133,8 @@ const x = _.fontFamily.sans.join(", "), mi = `
2143
2133
  --accent: oklch(92% 0 0);
2144
2134
  --accent-foreground: oklch(5% 0 0);
2145
2135
  --muted-foreground: oklch(44% 0 0);
2146
- `, pi = `
2147
- :root { ${mi} }
2136
+ `, fi = `
2137
+ :root { ${pi} }
2148
2138
 
2149
2139
  /* ── Button ──────────────────────────────────────────────── */
2150
2140
  .ui-btn {
@@ -2389,34 +2379,34 @@ const x = _.fontFamily.sans.join(", "), mi = `
2389
2379
  margin-block-start: 0.25rem;
2390
2380
  }
2391
2381
  `;
2392
- let it = !1;
2393
- function fi() {
2394
- if (it || typeof document > "u")
2382
+ let ot = !1;
2383
+ function gi() {
2384
+ if (ot || typeof document > "u")
2395
2385
  return;
2396
- it = !0;
2386
+ ot = !0;
2397
2387
  const n = document.createElement("style");
2398
- n.id = "vd-ui-vanilla", n.textContent = pi, document.head.appendChild(n);
2388
+ n.id = "vd-ui-vanilla", n.textContent = fi, document.head.appendChild(n);
2399
2389
  }
2400
- function ot(n) {
2390
+ function st(n) {
2401
2391
  const t = Math.max(0, Math.min(1, n));
2402
2392
  return t * t * (3 - 2 * t);
2403
2393
  }
2404
- function gi(n, t, e, i, o, s) {
2405
- const [r, l, d] = n, u = Math.cos(t), p = Math.sin(t), v = u * r + p * d, E = -p * r + u * d, A = Math.cos(e), w = Math.sin(e), R = A * l - w * E, M = w * l + A * E, Y = 0.55;
2394
+ function bi(n, t, e, i, o, s) {
2395
+ const [r, l, d] = n, u = Math.cos(t), p = Math.sin(t), v = u * r + p * d, E = -p * r + u * d, S = Math.cos(e), w = Math.sin(e), R = S * l - w * E, M = w * l + S * E, Y = 0.55;
2406
2396
  return [i + v * s * Y, o - R * s * Y, M];
2407
2397
  }
2408
- function bi(n, t, e) {
2398
+ function vi(n, t, e) {
2409
2399
  n.beginPath(), n.moveTo(t[0], t[1]), n.lineTo(e[0], e[1]), n.strokeStyle = "#000", n.lineWidth = 2, n.stroke();
2410
2400
  }
2411
- function vi(n, t, e, i, o) {
2401
+ function yi(n, t, e, i, o) {
2412
2402
  const s = t(e), r = t(i), l = [
2413
2403
  s[0] + (r[0] - s[0]) * o,
2414
2404
  s[1] + (r[1] - s[1]) * o,
2415
2405
  s[2]
2416
2406
  ];
2417
- bi(n, s, l);
2407
+ vi(n, s, l);
2418
2408
  }
2419
- const z = [-1, -1, 1], P = [1, -1, 1], F = [1, -1, -1], $ = [-1, -1, -1], D = [-1, 1, 1], B = [1, 1, 1], U = [1, 1, -1], V = [-1, 1, -1], st = [
2409
+ const z = [-1, -1, 1], P = [1, -1, 1], F = [1, -1, -1], $ = [-1, -1, -1], D = [-1, 1, 1], B = [1, 1, 1], U = [1, 1, -1], V = [-1, 1, -1], rt = [
2420
2410
  [z, P],
2421
2411
  [P, F],
2422
2412
  [F, $],
@@ -2429,8 +2419,8 @@ const z = [-1, -1, 1], P = [1, -1, 1], F = [1, -1, -1], $ = [-1, -1, -1], D = [-
2429
2419
  [B, U],
2430
2420
  [U, V],
2431
2421
  [V, D]
2432
- ], yi = 400, rt = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2433
- function _i() {
2422
+ ], _i = 400, at = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2423
+ function Ci() {
2434
2424
  const n = document.createElement("div");
2435
2425
  Object.assign(n.style, {
2436
2426
  position: "absolute",
@@ -2466,16 +2456,16 @@ function _i() {
2466
2456
  fontWeight: "400",
2467
2457
  color: "#000",
2468
2458
  fontVariantNumeric: "tabular-nums",
2469
- fontFamily: rt
2459
+ fontFamily: at
2470
2460
  });
2471
2461
  const o = document.createElement("span");
2472
2462
  return Object.assign(o.style, {
2473
2463
  fontSize: "13px",
2474
2464
  color: "#000",
2475
- fontFamily: rt
2476
- }), o.textContent = vt(), e.appendChild(i), e.appendChild(o), n.appendChild(t), n.appendChild(e), { overlay: n, canvas: t, pctEl: i, phaseEl: o };
2465
+ fontFamily: at
2466
+ }), o.textContent = yt(), e.appendChild(i), e.appendChild(o), n.appendChild(t), n.appendChild(e), { overlay: n, canvas: t, pctEl: i, phaseEl: o };
2477
2467
  }
2478
- class Ci {
2468
+ class wi {
2479
2469
  overlay;
2480
2470
  canvas;
2481
2471
  ctx;
@@ -2488,17 +2478,17 @@ class Ci {
2488
2478
  visible = !1;
2489
2479
  constructor(t, e = {}) {
2490
2480
  this.startTime = performance.now();
2491
- const i = _i();
2481
+ const i = Ci();
2492
2482
  this.overlay = i.overlay, this.canvas = i.canvas, this.pctEl = i.pctEl, this.phaseEl = i.phaseEl, t.appendChild(this.overlay), this.ctx = this.canvas.getContext("2d"), this.ctx !== null && (this.sizeCanvas(), this.tick());
2493
- const o = e.showDelay ?? yi;
2483
+ const o = e.showDelay ?? _i;
2494
2484
  this.showTimerId = setTimeout(() => {
2495
2485
  this.reveal();
2496
2486
  }, o);
2497
2487
  }
2498
2488
  get loadingTexts() {
2499
2489
  return {
2500
- downloading: vt(),
2501
- rendering: We()
2490
+ downloading: yt(),
2491
+ rendering: Ye()
2502
2492
  };
2503
2493
  }
2504
2494
  updateProgress(t, e) {
@@ -2551,20 +2541,20 @@ class Ci {
2551
2541
  return;
2552
2542
  const t = this.canvas.width / Math.min(devicePixelRatio, 2), e = this.canvas.height / Math.min(devicePixelRatio, 2), i = (performance.now() - this.startTime) / 1e3;
2553
2543
  this.ctx.fillStyle = "#fff", this.ctx.fillRect(0, 0, t, e);
2554
- const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, l = 0.785, d = 0.615, u = (w) => gi(w, l, d, o, s, r), p = 6, v = i % p / p, E = st.length;
2555
- let A;
2556
- v < 0.35 ? A = ot(v / 0.35) * E : v < 0.55 ? A = E : v < 0.9 ? A = (1 - ot((v - 0.55) / 0.35)) * E : A = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
2557
- for (let w = 0; w < E && !(w >= A); w++) {
2558
- const R = st[w];
2544
+ const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, l = 0.785, d = 0.615, u = (w) => bi(w, l, d, o, s, r), p = 6, v = i % p / p, E = rt.length;
2545
+ let S;
2546
+ v < 0.35 ? S = st(v / 0.35) * E : v < 0.55 ? S = E : v < 0.9 ? S = (1 - st((v - 0.55) / 0.35)) * E : S = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
2547
+ for (let w = 0; w < E && !(w >= S); w++) {
2548
+ const R = rt[w];
2559
2549
  if (R === void 0)
2560
2550
  continue;
2561
- const M = Math.min(1, A - w);
2562
- vi(this.ctx, u, R[0], R[1], M);
2551
+ const M = Math.min(1, S - w);
2552
+ yi(this.ctx, u, R[0], R[1], M);
2563
2553
  }
2564
2554
  this.ctx.shadowBlur = 0;
2565
2555
  }
2566
2556
  }
2567
- class wi {
2557
+ class ki {
2568
2558
  constructor(t) {
2569
2559
  this.options = t, this.element = document.createElement("div"), Object.assign(this.element.style, { display: "flex", gap: "0.375rem" }), this.onFullscreenChange = () => {
2570
2560
  this.setFullscreenIcon(document.fullscreenElement !== null);
@@ -2589,7 +2579,7 @@ class wi {
2589
2579
  this.arBtn = this.syncButton(this.arBtn, t.ar !== !1 && this.options.onAr !== void 0, () => new b({
2590
2580
  variant: "outline",
2591
2581
  size: "icon",
2592
- label: Ce(),
2582
+ label: we(),
2593
2583
  icon: g.ar(),
2594
2584
  onClick: () => {
2595
2585
  this.options.onAr?.();
@@ -2597,7 +2587,7 @@ class wi {
2597
2587
  })), this.fullscreenBtn = this.syncButton(this.fullscreenBtn, t.fullscreen !== !1 && this.options.onFullscreen !== void 0, () => new b({
2598
2588
  variant: "outline",
2599
2589
  size: "icon",
2600
- label: Ue(),
2590
+ label: Ve(),
2601
2591
  icon: g.fullscreen(),
2602
2592
  onClick: () => {
2603
2593
  this.options.onFullscreen?.();
@@ -2618,9 +2608,9 @@ class L {
2618
2608
  targetTilt: e.tilt,
2619
2609
  targetZoom: e.zoom,
2620
2610
  thetaOffset: 0
2621
- }, o = ki(t, e, i);
2611
+ }, o = Si(t, e, i);
2622
2612
  e.onChange((s) => {
2623
- i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, Si(o, e, s);
2613
+ i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, Ai(o, e, s);
2624
2614
  }), this.element.appendChild(L.buildZoom(o.zoomOut, o.zoomIn)), this.element.appendChild(L.buildDpad(o.tiltUp, o.rotateLeft, o.reset, o.rotateRight, o.tiltDown));
2625
2615
  }
2626
2616
  static buildZoom(t, e) {
@@ -2641,7 +2631,7 @@ class L {
2641
2631
  return r;
2642
2632
  }
2643
2633
  }
2644
- function ki(n, t, e) {
2634
+ function Si(n, t, e) {
2645
2635
  const i = (r) => Math.max(t.limits?.minZoom ?? 1, Math.min(t.limits?.maxZoom ?? 1 / 0, r)), o = (r) => {
2646
2636
  const l = t.limits?.minRotate, d = t.limits?.maxRotate;
2647
2637
  return l !== void 0 || d !== void 0 ? Math.max(l ?? -1 / 0, Math.min(d ?? 1 / 0, r)) : r;
@@ -2655,54 +2645,54 @@ function ki(n, t, e) {
2655
2645
  u > 180 || u < 0 ? (e.targetTilt = u > 180 ? 360 - u : -u, e.thetaOffset = (e.thetaOffset + 180) % 360, n.tilt(e.targetTilt).rotate(e.targetRotation + e.thetaOffset).set()) : (e.targetTilt = u, n.tilt(e.targetTilt).set());
2656
2646
  };
2657
2647
  return {
2658
- zoomOut: new b({ variant: "outline", size: "icon", label: yn(), icon: g.zoomOut(), onClick: () => {
2648
+ zoomOut: new b({ variant: "outline", size: "icon", label: _n(), icon: g.zoomOut(), onClick: () => {
2659
2649
  e.targetZoom = i(e.targetZoom - 10), n.zoom(e.targetZoom).set();
2660
2650
  } }),
2661
- zoomIn: new b({ variant: "outline", size: "icon", label: fn(), icon: g.zoomIn(), onClick: () => {
2651
+ zoomIn: new b({ variant: "outline", size: "icon", label: gn(), icon: g.zoomIn(), onClick: () => {
2662
2652
  e.targetZoom = i(e.targetZoom + 10), n.zoom(e.targetZoom).set();
2663
2653
  } }),
2664
- tiltUp: new b({ variant: "outline", size: "icon", label: On(), icon: g.tiltUp(), onClick: () => {
2654
+ tiltUp: new b({ variant: "outline", size: "icon", label: In(), icon: g.tiltUp(), onClick: () => {
2665
2655
  s(-15);
2666
2656
  } }),
2667
- rotateLeft: new b({ variant: "outline", size: "icon", label: kn(), icon: g.rotateLeft(), onClick: () => {
2657
+ rotateLeft: new b({ variant: "outline", size: "icon", label: Sn(), icon: g.rotateLeft(), onClick: () => {
2668
2658
  e.targetRotation = o(e.targetRotation - 15), n.rotate(e.targetRotation + e.thetaOffset).set();
2669
2659
  } }),
2670
- reset: new b({ variant: "outline", size: "icon", label: dn(), icon: g.reset(), onClick: () => {
2660
+ reset: new b({ variant: "outline", size: "icon", label: hn(), icon: g.reset(), onClick: () => {
2671
2661
  e.thetaOffset = 0, n.reset();
2672
2662
  } }),
2673
- rotateRight: new b({ variant: "outline", size: "icon", label: xn(), icon: g.rotateRight(), onClick: () => {
2663
+ rotateRight: new b({ variant: "outline", size: "icon", label: Tn(), icon: g.rotateRight(), onClick: () => {
2674
2664
  e.targetRotation = o(e.targetRotation + 15), n.rotate(e.targetRotation + e.thetaOffset).set();
2675
2665
  } }),
2676
- tiltDown: new b({ variant: "outline", size: "icon", label: zn(), icon: g.tiltDown(), onClick: () => {
2666
+ tiltDown: new b({ variant: "outline", size: "icon", label: Pn(), icon: g.tiltDown(), onClick: () => {
2677
2667
  s(15);
2678
2668
  } })
2679
2669
  };
2680
2670
  }
2681
- function Si(n, t, e) {
2671
+ function Ai(n, t, e) {
2682
2672
  const i = t.limits;
2683
2673
  i !== void 0 && (n.zoomOut.element.disabled = i.minZoom !== void 0 && e.zoom <= i.minZoom + T, n.zoomIn.element.disabled = i.maxZoom !== void 0 && e.zoom >= i.maxZoom - T, n.tiltUp.element.disabled = i.minTilt !== void 0 && e.tilt <= i.minTilt + T, n.tiltDown.element.disabled = i.maxTilt !== void 0 && e.tilt >= i.maxTilt - T, n.rotateLeft.element.disabled = i.minRotate !== void 0 && e.rotation <= i.minRotate + T, n.rotateRight.element.disabled = i.maxRotate !== void 0 && e.rotation >= i.maxRotate - T);
2684
2674
  }
2685
- const Ai = 5;
2686
- let Ei = 0;
2675
+ const Ei = 5;
2676
+ let xi = 0;
2687
2677
  function j(n) {
2688
2678
  const t = n.replace(/([A-Z])/g, " $1").trim();
2689
2679
  return t.charAt(0).toUpperCase() + t.slice(1).toLowerCase();
2690
2680
  }
2691
- function xi(n, t, e, i, o) {
2681
+ function Ti(n, t, e, i, o) {
2692
2682
  const s = document.createElement("div");
2693
2683
  s.className = "vd-attribute", s.dataset.name = n.name;
2694
2684
  const r = document.createElement("span");
2695
- r.className = "vd-attribute-label", r.textContent = j(n.name), r.id = `vd-attribute-label-${Ei++}`, s.appendChild(r), s.setAttribute("role", "group"), s.setAttribute("aria-labelledby", r.id);
2696
- const l = n.values.find((p) => t.getValue(n.name, p)?.isSelected === !0), d = n.values.map(j), u = n.values.length <= Ai ? new ci(n.values, l, d) : new ui(n.name, n.values, j(n.name), l, d);
2685
+ r.className = "vd-attribute-label", r.textContent = j(n.name), r.id = `vd-attribute-label-${xi++}`, s.appendChild(r), s.setAttribute("role", "group"), s.setAttribute("aria-labelledby", r.id);
2686
+ const l = n.values.find((p) => t.getValue(n.name, p)?.isSelected === !0), d = n.values.map(j), u = n.values.length <= Ei ? new ui(n.values, l, d) : new di(n.name, n.values, j(n.name), l, d);
2697
2687
  return u.onSelect((p) => {
2698
- e.dispatch(N.SELECT, { attribute: n.name, value: p }, !0).defaultPrevented || i(n.name, p);
2688
+ e.dispatch(O.SELECT, { attribute: n.name, value: p }, !0).defaultPrevented || i(n.name, p);
2699
2689
  }), o(n.name, (p) => {
2700
- u.setSelected(p.value), e.dispatch(N.SELECTED, { attribute: n.name, value: p.value });
2690
+ u.setSelected(p.value), e.dispatch(O.SELECTED, { attribute: n.name, value: p.value });
2701
2691
  }), s.appendChild(u.element), s;
2702
2692
  }
2703
- const Ti = 80, Ri = 2500;
2693
+ const Ri = 80, Oi = 2500;
2704
2694
  class Ni {
2705
- constructor(t, e = Ri) {
2695
+ constructor(t, e = Oi) {
2706
2696
  this.configuration = t, this.resetMs = e, this.element = document.createElement("div"), this.element.className = "vd-commerce vd-hidden";
2707
2697
  const i = document.createElement("div");
2708
2698
  i.className = "vd-commerce-price", this.priceEl = document.createElement("span"), this.priceEl.className = "vd-price", this.vatEl = document.createElement("span"), this.vatEl.className = "vd-vat", i.append(this.priceEl, this.vatEl), this.button = new b({ variant: "default", onClick: () => {
@@ -2734,19 +2724,19 @@ class Ni {
2734
2724
  this.priceEl.textContent = "", this.vatEl.textContent = "";
2735
2725
  return;
2736
2726
  }
2737
- this.priceEl.textContent = Oi(t.price, t.currency), this.vatEl.textContent = at(this.configuration.vatDisplay);
2727
+ this.priceEl.textContent = Ii(t.price, t.currency), this.vatEl.textContent = lt(this.configuration.vatDisplay);
2738
2728
  }
2739
2729
  renderButton() {
2740
2730
  const t = this.configuration.submitEnabled;
2741
- this.button.element.classList.toggle("vd-hidden", !t), t && this.state === "idle" && this.setButtonText(at(this.configuration.buttonLabel));
2731
+ this.button.element.classList.toggle("vd-hidden", !t), t && this.state === "idle" && this.setButtonText(lt(this.configuration.buttonLabel));
2742
2732
  }
2743
2733
  async handleSubmit() {
2744
2734
  if (this.state !== "busy") {
2745
- this.setState("busy", Dn());
2735
+ this.setState("busy", Bn());
2746
2736
  try {
2747
- await this.configuration.submit(), this.setState("success", jn());
2737
+ await this.configuration.submit(), this.setState("success", Hn());
2748
2738
  } catch {
2749
- this.setState("failed", Zn());
2739
+ this.setState("failed", Wn());
2750
2740
  }
2751
2741
  this.scheduleReset();
2752
2742
  }
@@ -2763,10 +2753,10 @@ class Ni {
2763
2753
  this.button.element.textContent = t, this.button.element.setAttribute("aria-label", t);
2764
2754
  }
2765
2755
  }
2766
- function at(n) {
2767
- return (n ?? "").slice(0, Ti);
2756
+ function lt(n) {
2757
+ return (n ?? "").slice(0, Ri);
2768
2758
  }
2769
- function Oi(n, t) {
2759
+ function Ii(n, t) {
2770
2760
  try {
2771
2761
  const e = new Intl.NumberFormat(h(), { style: "currency", currency: t }), i = e.resolvedOptions().maximumFractionDigits ?? 2;
2772
2762
  return e.format(n / 10 ** i);
@@ -2774,7 +2764,7 @@ function Oi(n, t) {
2774
2764
  return `${t} ${(n / 100).toFixed(2)}`;
2775
2765
  }
2776
2766
  }
2777
- class wt {
2767
+ class kt {
2778
2768
  slot = null;
2779
2769
  panel = null;
2780
2770
  attach(t, e) {
@@ -2787,8 +2777,8 @@ class wt {
2787
2777
  this.slot?.remove(), this.slot = null, this.panel = null;
2788
2778
  }
2789
2779
  }
2790
- const Ii = 572;
2791
- class Li {
2780
+ const Li = 572;
2781
+ class Mi {
2792
2782
  element = null;
2793
2783
  body = null;
2794
2784
  openButton = null;
@@ -2802,7 +2792,7 @@ class Li {
2802
2792
  this.container = t, e.classList.add("vd-attributes-sidebar"), this.closeButton = new b({
2803
2793
  variant: "ghost",
2804
2794
  size: "icon-sm",
2805
- label: an(),
2795
+ label: ln(),
2806
2796
  icon: g.close({ size: 18 }),
2807
2797
  onClick: () => {
2808
2798
  this.expanded = !1, this.render();
@@ -2812,7 +2802,7 @@ class Li {
2812
2802
  i.className = "vd-sidebar-header", i.appendChild(this.closeButton.element), this.body = document.createElement("div"), this.body.className = "vd-sidebar-body", this.body.appendChild(e), this.element = document.createElement("div"), this.element.className = "vd-sidebar vd-hidden", this.element.append(i, this.body), t.appendChild(this.element), this.openButton = new b({
2813
2803
  variant: "outline",
2814
2804
  size: "default",
2815
- label: nn(),
2805
+ label: on(),
2816
2806
  icon: g.configurator({ size: 18 }),
2817
2807
  onClick: () => {
2818
2808
  this.expanded = !0, this.render();
@@ -2828,7 +2818,7 @@ class Li {
2828
2818
  observe() {
2829
2819
  typeof ResizeObserver > "u" || this.container === null || (this.observer = new ResizeObserver((t) => {
2830
2820
  const e = t[0]?.contentRect.width ?? 0;
2831
- this.setCollapsible(e > 0 && e < Ii);
2821
+ this.setCollapsible(e > 0 && e < Li);
2832
2822
  }), this.observer.observe(this.container));
2833
2823
  }
2834
2824
  setCollapsible(t) {
@@ -2841,7 +2831,7 @@ class Li {
2841
2831
  this.element.classList.toggle("vd-hidden", !this.visible), this.element.classList.toggle("vd-sidebar-collapsed", this.visible && !this.expanded), this.openButton.element.classList.toggle("vd-hidden", !(this.visible && !this.expanded)), this.closeButton.element.style.display = this.collapsible ? "" : "none", this.container.classList.toggle("vd-layout-sidebar-right", t);
2842
2832
  }
2843
2833
  }
2844
- class Mi {
2834
+ class zi {
2845
2835
  attach(t, e) {
2846
2836
  }
2847
2837
  setVisible(t) {
@@ -2849,20 +2839,20 @@ class Mi {
2849
2839
  destroy() {
2850
2840
  }
2851
2841
  }
2852
- const zi = {
2853
- "inframe-bottom-left": () => new wt(),
2854
- "sidebar-right": () => new Li(),
2855
- hidden: () => new Mi()
2842
+ const Pi = {
2843
+ "inframe-bottom-left": () => new kt(),
2844
+ "sidebar-right": () => new Mi(),
2845
+ hidden: () => new zi()
2856
2846
  };
2857
- function Pi(n) {
2858
- return (zi[n ?? ""] ?? (() => new wt()))();
2847
+ function Fi(n) {
2848
+ return (Pi[n ?? ""] ?? (() => new kt()))();
2859
2849
  }
2860
2850
  const H = _.fontFamily.sans.join(", "), G = `
2861
2851
  position: absolute;
2862
2852
  display: flex;
2863
2853
  z-index: 10;
2864
2854
  transition: inset-inline-end 0.18s ease;
2865
- `, Fi = `
2855
+ `, $i = `
2866
2856
  /* Override browser's default black fullscreen backdrop */
2867
2857
  .vd-container:fullscreen {
2868
2858
  background: oklch(100% 0 0);
@@ -3053,17 +3043,17 @@ const H = _.fontFamily.sans.join(", "), G = `
3053
3043
  }
3054
3044
 
3055
3045
  `;
3056
- function $i() {
3057
- if (fi(), document.getElementById("vd-styles") !== null)
3046
+ function Di() {
3047
+ if (gi(), document.getElementById("vd-styles") !== null)
3058
3048
  return;
3059
3049
  const n = document.createElement("style");
3060
- n.id = "vd-styles", n.textContent = Fi, document.head.appendChild(n);
3050
+ n.id = "vd-styles", n.textContent = $i, document.head.appendChild(n);
3061
3051
  }
3062
- function Di(n, t) {
3052
+ function Bi(n, t) {
3063
3053
  const e = document.createElement("a");
3064
3054
  e.href = `data:image/png;base64,${n}`, e.download = t, e.click();
3065
3055
  }
3066
- class Bi {
3056
+ class Ui {
3067
3057
  options;
3068
3058
  settings = {};
3069
3059
  container = null;
@@ -3079,7 +3069,7 @@ class Bi {
3079
3069
  this.options = t;
3080
3070
  }
3081
3071
  attach(t) {
3082
- $i(), this.container = t, this.loading = new Ci(t), this.slots.topRight = this.createSlot(t, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(t, "vd-slot-bottom-right");
3072
+ Di(), this.container = t, this.loading = new wi(t), this.slots.topRight = this.createSlot(t, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(t, "vd-slot-bottom-right");
3083
3073
  }
3084
3074
  onReady() {
3085
3075
  this.loading?.hide(), this.loading = null, this.mountToolbar(), this.cameraControls !== null && (this.cameraControls.element.style.display = "flex"), this.layout?.setVisible(!0);
@@ -3088,7 +3078,7 @@ class Bi {
3088
3078
  if (this.actionBar !== null || this.slots.bottomRight === null || this.container === null)
3089
3079
  return;
3090
3080
  const t = typeof this.container.requestFullscreen == "function";
3091
- this.actionBar = new wi({
3081
+ this.actionBar = new ki({
3092
3082
  onAr: this.options.onAr,
3093
3083
  onFullscreen: t ? () => {
3094
3084
  this.toggleFullscreen();
@@ -3105,20 +3095,20 @@ class Bi {
3105
3095
  this.loading?.showError(t);
3106
3096
  }
3107
3097
  applyViewerSettings(t) {
3108
- this.settings = t, t.language !== void 0 && ft(t.language, { reload: !1 }), this.syncScreenshotButton(), this.actionBar?.applySettings(t), this.cameraControls !== null && (this.cameraControls.element.style.display = t.cameraControls === !0 ? "flex" : "none"), this.placeScreenshotButton();
3098
+ this.settings = t, t.language !== void 0 && gt(t.language, { reload: !1 }), this.syncScreenshotButton(), this.actionBar?.applySettings(t), this.cameraControls !== null && (this.cameraControls.element.style.display = t.cameraControls === !0 ? "flex" : "none"), this.placeScreenshotButton();
3109
3099
  }
3110
3100
  renderAttributeControls(t, e) {
3111
3101
  if (!(this.container === null || this.slots.topRight === null) && (this.cameraControls?.element.remove(), this.cameraControls = null, this.teardownConfigurator(), this.settings.cameraControls === !0 && (this.cameraControls = new L(this.options.cameraApi, this.options.cameraPositionApi), this.cameraControls.element.style.display = "none", this.slots.topRight.appendChild(this.cameraControls.element)), this.placeScreenshotButton(), e.length !== 0)) {
3112
3102
  this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes";
3113
3103
  for (const i of e)
3114
- this.attributes.appendChild(xi(
3104
+ this.attributes.appendChild(Ti(
3115
3105
  i,
3116
3106
  t,
3117
3107
  this.options.eventBus,
3118
3108
  this.options.onSelect,
3119
3109
  this.options.onSubscribe
3120
3110
  ));
3121
- this.commerce = new Ni(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = Pi(this.settings.configuratorLayout), this.layout.attach(this.container, this.attributes);
3111
+ this.commerce = new Ni(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = Fi(this.settings.configuratorLayout), this.layout.attach(this.container, this.attributes);
3122
3112
  }
3123
3113
  }
3124
3114
  get viewerSettings() {
@@ -3143,11 +3133,11 @@ class Bi {
3143
3133
  t && this.screenshotBtn === null && (this.screenshotBtn = new b({
3144
3134
  variant: "outline",
3145
3135
  size: "icon",
3146
- label: Qe(),
3136
+ label: Je(),
3147
3137
  icon: g.screenshot(),
3148
3138
  onClick: () => {
3149
3139
  this.options.snapshotApi.take("snapshot.png").onDeveloped(({ data: e, filename: i }) => {
3150
- Di(e, i);
3140
+ Bi(e, i);
3151
3141
  });
3152
3142
  }
3153
3143
  })), !t && this.screenshotBtn !== null && (this.screenshotBtn.element.remove(), this.screenshotBtn = null);
@@ -3156,7 +3146,7 @@ class Bi {
3156
3146
  this.screenshotBtn === null || this.slots.topRight === null || (this.cameraControls !== null ? this.cameraControls.element.appendChild(this.screenshotBtn.element) : this.slots.topRight.appendChild(this.screenshotBtn.element));
3157
3147
  }
3158
3148
  }
3159
- class ji {
3149
+ class Hi {
3160
3150
  attributes;
3161
3151
  readyStateTracker;
3162
3152
  messenger;
@@ -3175,29 +3165,29 @@ class ji {
3175
3165
  readyCallbacks = [];
3176
3166
  mutationFailedCallbacks = [];
3177
3167
  constructor(t) {
3178
- this.options = t, this.initializeLogging(), this.messenger = new Kt(() => this.iframe?.contentWindow ?? null);
3168
+ this.options = t, this.initializeLogging(), this.messenger = new Qt(() => this.iframe?.contentWindow ?? null);
3179
3169
  const e = (i) => {
3180
3170
  this.messenger.send(i);
3181
3171
  };
3182
- this.attributes = new ne(e, (i, o) => {
3172
+ this.attributes = new ie(e, (i, o) => {
3183
3173
  for (const s of this.mutationFailedCallbacks)
3184
3174
  s({ attribute: i, value: o });
3185
- }), this.snapshotApi = new ue(e), this.annotationsApi = new Qt(e), this.cameraApi = new ie(e), this.cameraPositionApi = new oe(), this.focusApi = new se(e, (i) => {
3175
+ }), this.snapshotApi = new de(e), this.annotationsApi = new Jt(e), this.cameraApi = new oe(e), this.cameraPositionApi = new se(), this.focusApi = new re(e, (i) => {
3186
3176
  this.dispatchFocusChange(i);
3187
- }), this.configurationApi = new le(
3177
+ }), this.configurationApi = new ce(
3188
3178
  (i) => {
3189
3179
  this.dispatchConfigurationChange(i);
3190
3180
  },
3191
3181
  (i) => {
3192
3182
  this.dispatchConfigurationSubmit(i);
3193
3183
  }
3194
- ), this.eventBus = new de(), this.qrModal = new hi(), this.readyStateTracker = new Pt(() => {
3184
+ ), this.eventBus = new he(), this.qrModal = new mi(), this.readyStateTracker = new Ft(() => {
3195
3185
  const i = this.readyCallbacks;
3196
3186
  this.readyCallbacks = [];
3197
3187
  for (const o of i)
3198
3188
  o(this);
3199
3189
  this.ui.onReady();
3200
- }), this.ui = new Bi({
3190
+ }), this.ui = new Ui({
3201
3191
  snapshotApi: this.snapshotApi,
3202
3192
  cameraApi: this.cameraApi,
3203
3193
  cameraPositionApi: this.cameraPositionApi,
@@ -3212,29 +3202,29 @@ class ji {
3212
3202
  }
3213
3203
  registerHandlers() {
3214
3204
  this.messenger.on(c.HANDSHAKE, (t) => {
3215
- Ut(t) && (k.info("Server handshake received, flushing publisher queue"), this.messenger.markReady());
3205
+ Vt(t) && (C.info("Server handshake received, flushing publisher queue"), this.messenger.markReady());
3216
3206
  }), this.messenger.on(c.MUTATION, (t) => {
3217
- Vt(t) && (this.attributes.handleMutationResult(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()));
3207
+ jt(t) && (this.attributes.handleMutationResult(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()));
3218
3208
  }), this.messenger.on(c.SNAPSHOT, (t) => {
3219
- jt(t) && this.snapshotApi.handleSnapshotResult(t);
3209
+ Ht(t) && this.snapshotApi.handleSnapshotResult(t);
3220
3210
  }), this.messenger.on(c.CAMERA, (t) => {
3221
- Ht(t) && this.cameraPositionApi.handlePositionUpdate(t);
3211
+ Gt(t) && this.cameraPositionApi.handlePositionUpdate(t);
3222
3212
  }), this.messenger.on(c.LOADING_INDICATOR, (t) => {
3223
- qt(t) && (t.error !== void 0 ? this.ui.showError(t.error) : this.ui.updateProgress(t.progress, t.phase));
3213
+ Zt(t) && (t.error !== void 0 ? this.ui.showError(t.error) : this.ui.updateProgress(t.progress, t.phase));
3224
3214
  }), this.messenger.on(c.CONFIG, (t) => {
3225
- Zt(t) && this.handleConfig(t);
3215
+ Wt(t) && this.handleConfig(t);
3226
3216
  }), this.messenger.on(c.ANNOTATION_PLACED, (t) => {
3227
- Wt(t) && this.annotationsApi.handlePlaced(t.position);
3217
+ Yt(t) && this.annotationsApi.handlePlaced(t.position);
3228
3218
  }), this.messenger.on(c.MAPPING, (t) => {
3229
- Gt(t) && (this.attributes.handleMappingReceived(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()), this.ui.renderAttributeControls(this.attributes, t.attributes), this.readyStateTracker.handleMappingReceived());
3219
+ qt(t) && (this.attributes.handleMappingReceived(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()), this.ui.renderAttributeControls(this.attributes, t.attributes), this.readyStateTracker.handleMappingReceived());
3230
3220
  }), this.registerFacadeStateHandlers();
3231
3221
  }
3232
3222
  /** Handlers that feed viewer-reported state into the facades (focus, pricing). */
3233
3223
  registerFacadeStateHandlers() {
3234
3224
  this.messenger.on(c.FOCUS, (t) => {
3235
- Yt(t) && this.focusApi.handleStateReceived(t);
3225
+ Xt(t) && this.focusApi.handleStateReceived(t);
3236
3226
  }), this.messenger.on(c.PRICING, (t) => {
3237
- Xt(t) && this.configurationApi.handlePricingReceived(t.pricing);
3227
+ Kt(t) && this.configurationApi.handlePricingReceived(t.pricing);
3238
3228
  });
3239
3229
  }
3240
3230
  /**
@@ -3243,7 +3233,7 @@ class ji {
3243
3233
  */
3244
3234
  dispatchFocusChange(t) {
3245
3235
  this.container?.dispatchEvent(
3246
- new CustomEvent(N.FOCUS_CHANGE, { detail: t, bubbles: !0 })
3236
+ new CustomEvent(O.FOCUS_CHANGE, { detail: t, bubbles: !0 })
3247
3237
  );
3248
3238
  }
3249
3239
  /**
@@ -3252,13 +3242,13 @@ class ji {
3252
3242
  */
3253
3243
  dispatchConfigurationChange(t) {
3254
3244
  this.container?.dispatchEvent(
3255
- new CustomEvent(N.CONFIGURATION_CHANGE, { detail: t ?? null, bubbles: !0 })
3245
+ new CustomEvent(O.CONFIGURATION_CHANGE, { detail: t ?? null, bubbles: !0 })
3256
3246
  );
3257
3247
  }
3258
3248
  /** Dispatch a bubbling `vd:configuration-submit` event when the CTA is used. */
3259
3249
  dispatchConfigurationSubmit(t) {
3260
3250
  this.container?.dispatchEvent(
3261
- new CustomEvent(N.CONFIGURATION_SUBMIT, { detail: t, bubbles: !0 })
3251
+ new CustomEvent(O.CONFIGURATION_SUBMIT, { detail: t, bubbles: !0 })
3262
3252
  );
3263
3253
  }
3264
3254
  handleConfig(t) {
@@ -3267,24 +3257,24 @@ class ji {
3267
3257
  const o = i !== void 0 ? { ...e ?? {}, ...i } : e;
3268
3258
  if (i !== void 0 && e !== void 0) {
3269
3259
  const s = Object.entries(i).filter(([r, l]) => e[r] !== l).map(([r, l]) => `${r} (metadata: ${e[r] ?? "undefined"}, override: ${l})`);
3270
- s.length > 0 && k.warn(`Viewer settings override active: ${s.join(", ")}`);
3260
+ s.length > 0 && C.warn(`Viewer settings override active: ${s.join(", ")}`);
3271
3261
  }
3272
3262
  this.ui.applyViewerSettings(o), this.annotationsApi.setEnabled(o.annotations !== !1);
3273
3263
  }
3274
3264
  this.cameraPositionApi.applyLimits(t.cameraLimits);
3275
3265
  }
3276
3266
  activateAr() {
3277
- if (Mt()) {
3267
+ if (zt()) {
3278
3268
  this.messenger.send({ type: c.AR_ACTIVATE });
3279
3269
  return;
3280
3270
  }
3281
3271
  this.qrModal.show(this.iframe?.src ?? "");
3282
3272
  }
3283
3273
  initializeLogging() {
3284
- this.options.debug === !0 && zt(), k.info("Initializing Virtualdisplay client", { model: this.options.model });
3274
+ this.options.debug === !0 && Pt(), C.info("Initializing Virtualdisplay client", { model: this.options.model });
3285
3275
  }
3286
3276
  createAndConnectIframe() {
3287
- const e = new St(this.options).create();
3277
+ const e = new At(this.options).create();
3288
3278
  this.container = e.container, this.iframe = e.iframe, this.eventBus.attach(this.container), this.ui.attach(this.container);
3289
3279
  try {
3290
3280
  const i = new URL(this.iframe.src).origin;
@@ -3349,19 +3339,19 @@ class ji {
3349
3339
  }
3350
3340
  }
3351
3341
  export {
3352
- Qt as Annotations,
3353
- te as Attribute,
3354
- Jt as AttributeValue,
3355
- ie as Camera,
3356
- le as Configuration,
3357
- C as ERROR_CODES,
3358
- se as Focus,
3359
- ce as Photo,
3360
- ue as Snapshot,
3361
- N as VD_EVENTS,
3362
- ji as VirtualdisplayClient,
3342
+ Jt as Annotations,
3343
+ ee as Attribute,
3344
+ te as AttributeValue,
3345
+ oe as Camera,
3346
+ ce as Configuration,
3347
+ A as ERROR_CODES,
3348
+ re as Focus,
3349
+ ue as Photo,
3350
+ de as Snapshot,
3351
+ O as VD_EVENTS,
3352
+ Hi as VirtualdisplayClient,
3363
3353
  f as VirtualdisplayError,
3364
- zt as enableDebugMode,
3365
- Ui as isDebugMode,
3366
- k as logger
3354
+ Pt as enableDebugMode,
3355
+ Vi as isDebugMode,
3356
+ C as logger
3367
3357
  };