@virtualdisplay.io/client 4.0.0-alpha.26 → 4.0.0-alpha.27

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.
@@ -17,7 +17,7 @@ const c = {
17
17
  SYNC: "sync",
18
18
  SELECTABLE: "selectable",
19
19
  APP_RESOLVED: "app_resolved"
20
- }, ee = {
20
+ }, F = "main", te = {
21
21
  FOCUS: "focus",
22
22
  UNFOCUS: "unfocus"
23
23
  }, Ie = {
@@ -46,19 +46,19 @@ function Pe(n) {
46
46
  }
47
47
  function Fe(n) {
48
48
  const e = S(n);
49
- return e !== null && e.type === c.MUTATION && Array.isArray(e.results);
49
+ return e !== null && e.type === c.MUTATION && typeof e.instance == "string" && e.instance !== "" && Array.isArray(e.results);
50
50
  }
51
- function $e(n) {
51
+ function De(n) {
52
52
  const e = S(n);
53
53
  return e !== null && e.type === c.SNAPSHOT && ("data" in e || "error" in e);
54
54
  }
55
- function De(n) {
55
+ function $e(n) {
56
56
  const e = S(n);
57
57
  return e !== null && e.type === c.CAMERA && Array.isArray(e.transforms);
58
58
  }
59
59
  function Ue(n) {
60
60
  const e = S(n);
61
- return e !== null && e.type === c.MAPPING && Array.isArray(e.attributes);
61
+ return e !== null && e.type === c.MAPPING && typeof e.instance == "string" && e.instance !== "" && Array.isArray(e.attributes);
62
62
  }
63
63
  function Be(n) {
64
64
  const e = S(n);
@@ -70,7 +70,7 @@ function Ve(n) {
70
70
  }
71
71
  function je(n) {
72
72
  const e = S(n);
73
- return e !== null && e.type === c.SELECTABLE && Array.isArray(e.attributes);
73
+ return e !== null && e.type === c.SELECTABLE && typeof e.instance == "string" && e.instance !== "" && Array.isArray(e.attributes);
74
74
  }
75
75
  function He(n) {
76
76
  const e = S(n);
@@ -78,16 +78,16 @@ function He(n) {
78
78
  }
79
79
  function qe(n) {
80
80
  const e = S(n);
81
- return e !== null && e.type === c.FOCUS && typeof e.state == "string";
81
+ return e !== null && e.type === c.FOCUS && typeof e.instance == "string" && e.instance !== "" && typeof e.state == "string";
82
82
  }
83
83
  function Ge(n) {
84
84
  const e = S(n);
85
- return e !== null && e.type === c.PRICING && typeof e.pricing == "object" && e.pricing !== null;
85
+ return e !== null && e.type === c.PRICING && typeof e.instance == "string" && e.instance !== "" && typeof e.pricing == "object" && e.pricing !== null;
86
86
  }
87
87
  function S(n) {
88
88
  return typeof n != "object" || n === null ? null : n;
89
89
  }
90
- class te {
90
+ class ne {
91
91
  constructor(e) {
92
92
  this.processor = e;
93
93
  }
@@ -136,7 +136,7 @@ class te {
136
136
  }
137
137
  class Ze {
138
138
  constructor(e, t) {
139
- this.getTarget = e, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = t?.isValid ?? Ne, this.publisher = new te((i) => this.post(i)), this.consumer = new te((i) => this.routeToHandler(i)), t?.bufferIncoming !== !0 && this.consumer.markReady();
139
+ this.getTarget = e, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = t?.isValid ?? Ne, this.publisher = new ne((i) => this.post(i)), this.consumer = new ne((i) => this.routeToHandler(i)), t?.bufferIncoming !== !0 && this.consumer.markReady();
140
140
  }
141
141
  getTarget;
142
142
  handlers = /* @__PURE__ */ new Map();
@@ -218,18 +218,6 @@ class Ze {
218
218
  destroy() {
219
219
  this.listener !== null && (window.removeEventListener("message", this.listener), this.listener = null), this.publisher.clear(), this.consumer.clear(), this.handlers.clear();
220
220
  }
221
- /**
222
- * Whether the messenger is ready to send
223
- */
224
- get ready() {
225
- return this.publisher.ready;
226
- }
227
- /**
228
- * Number of messages waiting in the outgoing queue
229
- */
230
- get pendingCount() {
231
- return this.publisher.pendingCount;
232
- }
233
221
  post(e) {
234
222
  const t = this.getTarget();
235
223
  t !== null && t.postMessage({ ...e, _source: this.sourceId }, this.targetOrigin);
@@ -246,13 +234,15 @@ class Ze {
246
234
  }
247
235
  }
248
236
  class We {
249
- constructor(e) {
250
- this.send = e;
237
+ constructor(e, t) {
238
+ this.send = e, this.instance = t;
251
239
  }
252
240
  send;
241
+ instance;
253
242
  setEnabled(e) {
254
243
  this.send({
255
244
  type: c.ANNOTATION_TOGGLE,
245
+ instance: this.instance,
256
246
  enabled: e
257
247
  });
258
248
  }
@@ -400,25 +390,25 @@ class Ke {
400
390
  return e.defaultValue !== void 0 ? { ...i, defaultValue: e.defaultValue } : i;
401
391
  }
402
392
  }
403
- const N = 4096, F = 16384, Xe = [1024, 256, 64], Je = 20, W = ["timestamp", "level", "msg", "service", "trace_id", "span_id"];
393
+ const N = 4096, D = 16384, Xe = [1024, 256, 64], Je = 20, Y = ["timestamp", "level", "msg", "service", "trace_id", "span_id"];
404
394
  function et(n) {
405
- const e = new Date(n.timestamp).toLocaleTimeString("en-GB", { hour12: !1 }), t = n.level.toUpperCase().padEnd(5), i = n.trace_id?.slice(0, 8) ?? "--------", s = n.msg, o = Object.entries(n).filter(([r]) => !W.includes(r)).map(([r, a]) => `${r}=${L(a, N).line}`).join(" ");
395
+ const e = new Date(n.timestamp).toLocaleTimeString("en-GB", { hour12: !1 }), t = n.level.toUpperCase().padEnd(5), i = n.trace_id?.slice(0, 8) ?? "--------", s = n.msg, o = Object.entries(n).filter(([r]) => !Y.includes(r)).map(([r, a]) => `${r}=${L(a, N).line}`).join(" ");
406
396
  return `${e} ${t} [${i}] ${s}${o ? " " + o : ""}`;
407
397
  }
408
398
  function tt(n) {
409
399
  for (const s of [N, ...Xe]) {
410
400
  const { line: o, truncated: r } = L(n, s);
411
401
  if (!r) {
412
- if (o.length <= F)
402
+ if (o.length <= D)
413
403
  return o;
414
404
  continue;
415
405
  }
416
406
  const { line: a } = L({ ...n, log_truncated: !0 }, s);
417
- if (a.length <= F)
407
+ if (a.length <= D)
418
408
  return a;
419
409
  }
420
- const e = Object.keys(n).filter((s) => !W.includes(s)), t = { ...it(n, W), log_truncated: !0, log_dropped_count: e.length }, i = L({ ...t, log_dropped_attrs: e.slice(0, Je) }, N);
421
- return i.line.length <= F ? i.line : L(t, N).line;
410
+ const e = Object.keys(n).filter((s) => !Y.includes(s)), t = { ...it(n, Y), log_truncated: !0, log_dropped_count: e.length }, i = L({ ...t, log_dropped_attrs: e.slice(0, Je) }, N);
411
+ return i.line.length <= D ? i.line : L(t, N).line;
422
412
  }
423
413
  function L(n, e) {
424
414
  const t = [];
@@ -448,7 +438,7 @@ function st(n, e) {
448
438
  const t = e ? et(n) : tt(n);
449
439
  n.level === "error" ? console.error(t) : n.level === "warn" ? console.warn(t) : console.log(t);
450
440
  }
451
- function pe(n, e = 0) {
441
+ function fe(n, e = 0) {
452
442
  const t = {
453
443
  name: n.name,
454
444
  message: n.message
@@ -460,12 +450,12 @@ function pe(n, e = 0) {
460
450
  const s = n[i];
461
451
  s !== void 0 && (t[i] = s);
462
452
  }
463
- return n.cause !== void 0 && n.cause !== null && (t.cause = n.cause instanceof Error && e < 5 ? pe(n.cause, e + 1) : String(n.cause)), t;
453
+ return n.cause !== void 0 && n.cause !== null && (t.cause = n.cause instanceof Error && e < 5 ? fe(n.cause, e + 1) : String(n.cause)), t;
464
454
  }
465
455
  function ot(n) {
466
456
  const e = {};
467
457
  for (const [t, i] of Object.entries(n))
468
- e[t] = i instanceof Error ? pe(i) : i;
458
+ e[t] = i instanceof Error ? fe(i) : i;
469
459
  return e;
470
460
  }
471
461
  function rt() {
@@ -474,20 +464,20 @@ function rt() {
474
464
  function at(n) {
475
465
  return n.toISOString();
476
466
  }
477
- function fe() {
467
+ function ge() {
478
468
  return typeof navigator > "u" ? "" : navigator.userAgent;
479
469
  }
480
470
  function lt() {
481
471
  return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
482
472
  }
483
473
  function ct() {
484
- return /iPhone|iPad|iPod/i.test(fe()) || lt();
485
- }
486
- function dt() {
487
- return /Android/i.test(fe());
474
+ return /iPhone|iPad|iPod/i.test(ge()) || lt();
488
475
  }
489
476
  function ut() {
490
- return ct() || dt();
477
+ return /Android/i.test(ge());
478
+ }
479
+ function dt() {
480
+ return ct() || ut();
491
481
  }
492
482
  class ht {
493
483
  constructor(e) {
@@ -533,7 +523,7 @@ class ht {
533
523
  this.log("error", e, t);
534
524
  }
535
525
  }
536
- function ge(n, e) {
526
+ function be(n, e) {
537
527
  const t = e?.isDev !== void 0 ? e.isDev : typeof process < "u" ? process.env.NODE_ENV !== "production" : !0;
538
528
  return new ht({ service: n, isDev: t, traceProvider: e?.traceProvider });
539
529
  }
@@ -541,7 +531,7 @@ function O(n) {
541
531
  if (n !== void 0)
542
532
  return typeof n == "object" && n !== null && !Array.isArray(n) && !(n instanceof Error) ? n : n instanceof Error ? { error: n.message } : { value: n };
543
533
  }
544
- function be(n) {
534
+ function ve(n) {
545
535
  return {
546
536
  debug: (e, t) => n.debug(e, O(t)),
547
537
  info: (e, t) => n.info(e, O(t)),
@@ -549,18 +539,19 @@ function be(n) {
549
539
  error: (e, t) => n.error(e, O(t))
550
540
  };
551
541
  }
552
- let ve = !1, C = be(ge("client", { isDev: !1 }));
542
+ let ye = !1, C = ve(be("client", { isDev: !1 }));
553
543
  function mt() {
554
- ve = !0, C = be(ge("client", { isDev: !0 }));
544
+ ye = !0, C = ve(be("client", { isDev: !0 }));
555
545
  }
556
- function vs() {
557
- return ve;
546
+ function gs() {
547
+ return ye;
558
548
  }
559
549
  class pt {
560
- constructor(e, t) {
561
- this.send = e, this.onMutationFailed = t;
550
+ constructor(e, t, i) {
551
+ this.send = e, this.instance = t, this.onMutationFailed = i;
562
552
  }
563
553
  send;
554
+ instance;
564
555
  onMutationFailed;
565
556
  registry;
566
557
  pendingCallbacks = [];
@@ -627,12 +618,10 @@ class pt {
627
618
  getSelection() {
628
619
  return this.registry?.getSelection() ?? {};
629
620
  }
630
- get hasMapping() {
631
- return this.registry !== void 0;
632
- }
633
621
  sendMutation(e, t, i = !1) {
634
622
  const s = {
635
623
  type: c.MUTATION,
624
+ instance: this.instance,
636
625
  mutations: e,
637
626
  isInitial: t,
638
627
  ...i && { transient: !0 }
@@ -822,13 +811,13 @@ function vt(n, e) {
822
811
  const t = n.filter((o) => yt(o, e));
823
812
  if (t.length === 0)
824
813
  return;
825
- const i = Math.max(...t.map(ne)), s = t.filter((o) => ne(o) === i);
814
+ const i = Math.max(...t.map(ie)), s = t.filter((o) => ie(o) === i);
826
815
  return s.length === 1 ? s[0] : void 0;
827
816
  }
828
817
  function yt(n, e) {
829
818
  return Object.entries(n.attributes).every(([t, i]) => e[t] === i);
830
819
  }
831
- function ne(n) {
820
+ function ie(n) {
832
821
  return Object.keys(n.attributes).length;
833
822
  }
834
823
  class St {
@@ -953,11 +942,12 @@ class St {
953
942
  }
954
943
  }
955
944
  class wt {
956
- constructor(e, t) {
957
- this.send = e, this.dispatch = t;
945
+ constructor(e, t, i) {
946
+ this.send = e, this.dispatch = t, this.instance = i;
958
947
  }
959
948
  send;
960
949
  dispatch;
950
+ instance;
961
951
  focused = null;
962
952
  attributes = [];
963
953
  changeCallbacks = [];
@@ -974,11 +964,16 @@ class wt {
974
964
  throw g.invalidParameter(
975
965
  `set() requires a non-empty component name, got ${String(e)}`
976
966
  );
977
- this.send({ type: c.FOCUS, action: ee.FOCUS, component: e });
967
+ this.send({
968
+ type: c.FOCUS,
969
+ instance: this.instance,
970
+ action: te.FOCUS,
971
+ component: e
972
+ });
978
973
  }
979
974
  /** Return to the overview — unfocus the current component. */
980
975
  clear() {
981
- this.send({ type: c.FOCUS, action: ee.UNFOCUS });
976
+ this.send({ type: c.FOCUS, instance: this.instance, action: te.UNFOCUS });
982
977
  }
983
978
  /**
984
979
  * Subscribe to focus changes. The callback fires with the focus state when a
@@ -1049,8 +1044,8 @@ class Ct {
1049
1044
  }), this.developedCallbacks.clear(), this.errorCallbacks.clear());
1050
1045
  }
1051
1046
  }
1052
- const ie = 3e4;
1053
- class _t {
1047
+ const se = 3e4;
1048
+ class kt {
1054
1049
  constructor(e) {
1055
1050
  this.send = e;
1056
1051
  }
@@ -1068,10 +1063,10 @@ class _t {
1068
1063
  this.validateFilename(e), C.debug("Taking snapshot", { filename: e });
1069
1064
  const t = new Ct(e), i = setTimeout(() => {
1070
1065
  this.pendingPhotos.delete(e), C.warn("Snapshot timed out", { filename: e }), t.fail(new g(
1071
- `Snapshot timed out: the viewer did not respond within ${ie}ms`,
1066
+ `Snapshot timed out: the viewer did not respond within ${se}ms`,
1072
1067
  A.SNAPSHOT_FAILED
1073
1068
  ));
1074
- }, ie);
1069
+ }, se);
1075
1070
  return this.pendingPhotos.set(e, { photo: t, timeout: i }), this.send({
1076
1071
  type: c.SNAPSHOT,
1077
1072
  filename: e
@@ -1137,7 +1132,7 @@ class _t {
1137
1132
  );
1138
1133
  }
1139
1134
  }
1140
- class kt {
1135
+ class _t {
1141
1136
  container = null;
1142
1137
  attach(e) {
1143
1138
  this.container = e;
@@ -1158,22 +1153,22 @@ class kt {
1158
1153
  };
1159
1154
  }
1160
1155
  }
1161
- const At = {}, Et = "en", ye = (
1156
+ const At = {}, Et = "en", Se = (
1162
1157
  /** @type {const} */
1163
1158
  ["en", "nl", "de"]
1164
- ), K = [
1159
+ ), X = [
1165
1160
  "baseLocale"
1166
- ], se = [], Y = typeof window > "u";
1161
+ ], oe = [], Q = typeof window > "u";
1167
1162
  globalThis.__paraglide = /** @type {any} */
1168
1163
  globalThis.__paraglide ?? {};
1169
1164
  globalThis.__paraglide.ssr = /** @type {any} */
1170
1165
  globalThis.__paraglide.ssr ?? {};
1171
- let oe = !1, m = () => {
1172
- let n = K;
1173
- !Y && typeof window < "u" && window.location?.href && (n = we(window.location.href));
1166
+ let re = !1, m = () => {
1167
+ let n = X;
1168
+ !Q && typeof window < "u" && window.location?.href && (n = Ce(window.location.href));
1174
1169
  const e = xt(n);
1175
1170
  if (e)
1176
- return oe || (oe = !0, Se(e, { reload: !1 })), e;
1171
+ return re || (re = !0, we(e, { reload: !1 })), e;
1177
1172
  throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
1178
1173
  };
1179
1174
  function xt(n, e) {
@@ -1181,7 +1176,7 @@ function xt(n, e) {
1181
1176
  for (const i of n) {
1182
1177
  if (i === "baseLocale")
1183
1178
  t = Et;
1184
- else if (Ce(i) && M.has(i)) {
1179
+ else if (ke(i) && M.has(i)) {
1185
1180
  const o = M.get(i);
1186
1181
  if (o) {
1187
1182
  const r = o.getLocale();
@@ -1191,7 +1186,7 @@ function xt(n, e) {
1191
1186
  return It(r);
1192
1187
  }
1193
1188
  }
1194
- const s = X(t);
1189
+ const s = J(t);
1195
1190
  if (s)
1196
1191
  return s;
1197
1192
  }
@@ -1199,7 +1194,7 @@ function xt(n, e) {
1199
1194
  const Tt = (n) => {
1200
1195
  window.location.reload();
1201
1196
  };
1202
- let Se = (n, e) => {
1197
+ let we = (n, e) => {
1203
1198
  const t = {
1204
1199
  reload: !0,
1205
1200
  ...e
@@ -1210,22 +1205,22 @@ let Se = (n, e) => {
1210
1205
  } catch {
1211
1206
  }
1212
1207
  const s = [];
1213
- let o = K;
1214
- !Y && typeof window < "u" && window.location?.href && (o = we(window.location.href));
1208
+ let o = X;
1209
+ !Q && typeof window < "u" && window.location?.href && (o = Ce(window.location.href));
1215
1210
  for (const a of o)
1216
- if (a !== "baseLocale" && Ce(a) && M.has(a)) {
1217
- const d = M.get(a);
1218
- if (d) {
1219
- let u = d.setLocale(n);
1220
- u instanceof Promise && (u = u.catch((f) => {
1211
+ if (a !== "baseLocale" && ke(a) && M.has(a)) {
1212
+ const u = M.get(a);
1213
+ if (u) {
1214
+ let d = u.setLocale(n);
1215
+ d instanceof Promise && (d = d.catch((f) => {
1221
1216
  throw new Error(`Custom strategy "${a}" setLocale failed.`, {
1222
1217
  cause: f
1223
1218
  });
1224
- }), s.push(u));
1219
+ }), s.push(d));
1225
1220
  }
1226
1221
  }
1227
1222
  const r = () => {
1228
- !Y && t.reload && window.location && n !== i && Tt();
1223
+ !Q && t.reload && window.location && n !== i && Tt();
1229
1224
  };
1230
1225
  if (s.length)
1231
1226
  return Promise.all(s).then(() => {
@@ -1233,38 +1228,38 @@ let Se = (n, e) => {
1233
1228
  });
1234
1229
  r();
1235
1230
  }, Rt = () => typeof window < "u" ? window.location.origin : "http://fallback.com";
1236
- function X(n) {
1231
+ function J(n) {
1237
1232
  if (typeof n != "string")
1238
1233
  return;
1239
1234
  const e = n.toLowerCase();
1240
- for (const t of ye)
1235
+ for (const t of Se)
1241
1236
  if (t.toLowerCase() === e)
1242
1237
  return t;
1243
1238
  }
1244
1239
  function It(n) {
1245
- const e = X(n);
1240
+ const e = J(n);
1246
1241
  if (e)
1247
1242
  return e;
1248
- throw new Error(`Invalid locale: ${n}. Expected one of: ${ye.join(", ")}`);
1243
+ throw new Error(`Invalid locale: ${n}. Expected one of: ${Se.join(", ")}`);
1249
1244
  }
1250
1245
  function Lt(n) {
1251
1246
  return Ot(n);
1252
1247
  }
1253
1248
  function Ot(n) {
1254
1249
  const e = typeof n == "string" ? new URL(n, Rt()) : new URL(n), t = e.pathname.split("/").filter(Boolean);
1255
- return t.length > 0 && X(t[0]) && (e.pathname = "/" + t.slice(1).join("/")), e;
1250
+ return t.length > 0 && J(t[0]) && (e.pathname = "/" + t.slice(1).join("/")), e;
1256
1251
  }
1257
- let re, ae;
1252
+ let ae, le;
1258
1253
  function Nt(n) {
1259
- if (se.length === 0)
1254
+ if (oe.length === 0)
1260
1255
  return;
1261
1256
  const e = typeof n == "string" ? n : n.href;
1262
- if (re === e)
1263
- return ae;
1257
+ if (ae === e)
1258
+ return le;
1264
1259
  const t = new URL(e, "http://example.com"), i = Lt(t), s = i.href === t.href ? [t] : [t, i];
1265
1260
  let o;
1266
1261
  for (const r of s) {
1267
- for (const a of se)
1262
+ for (const a of oe)
1268
1263
  if (new At(a.match, r.href).exec(r.href)) {
1269
1264
  o = a;
1270
1265
  break;
@@ -1272,14 +1267,14 @@ function Nt(n) {
1272
1267
  if (o)
1273
1268
  break;
1274
1269
  }
1275
- return re = e, ae = o, o;
1270
+ return ae = e, le = o, o;
1276
1271
  }
1277
- function we(n) {
1272
+ function Ce(n) {
1278
1273
  const e = Nt(n);
1279
- return e && e.exclude !== !0 && Array.isArray(e.strategy) ? e.strategy : K;
1274
+ return e && e.exclude !== !0 && Array.isArray(e.strategy) ? e.strategy : X;
1280
1275
  }
1281
1276
  const M = /* @__PURE__ */ new Map();
1282
- function Ce(n) {
1277
+ function ke(n) {
1283
1278
  return typeof n == "string" && /^custom-[A-Za-z0-9_-]+$/.test(n);
1284
1279
  }
1285
1280
  const Mt = (
@@ -1306,13 +1301,13 @@ const Mt = (
1306
1301
  const t = e.locale ?? m();
1307
1302
  return t === "nl" ? zt() : t === "de" ? Pt() : Mt();
1308
1303
  })
1309
- ), $t = (
1304
+ ), Dt = (
1310
1305
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1311
1306
  () => (
1312
1307
  /** @type {LocalizedString} */
1313
1308
  "Scan to view in AR"
1314
1309
  )
1315
- ), Dt = (
1310
+ ), $t = (
1316
1311
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1317
1312
  () => (
1318
1313
  /** @type {LocalizedString} */
@@ -1328,7 +1323,7 @@ const Mt = (
1328
1323
  /** @type {((inputs?: Controls_Qr_Modaltitle1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaltitle1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1329
1324
  ((n = {}, e = {}) => {
1330
1325
  const t = e.locale ?? m();
1331
- return t === "nl" ? Dt() : t === "de" ? Ut() : $t();
1326
+ return t === "nl" ? $t() : t === "de" ? Ut() : Dt();
1332
1327
  })
1333
1328
  ), Vt = (
1334
1329
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
@@ -1444,350 +1439,326 @@ const Mt = (
1444
1439
  /** @type {LocalizedString} */
1445
1440
  "Herunterladen"
1446
1441
  )
1447
- ), _e = (
1442
+ ), ln = (
1448
1443
  /** @type {((inputs?: Loading_Downloadingshort1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_Downloadingshort1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1449
1444
  ((n = {}, e = {}) => {
1450
1445
  const t = e.locale ?? m();
1451
1446
  return t === "nl" ? rn() : t === "de" ? an() : on();
1452
1447
  })
1453
- ), ln = (
1454
- /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1455
- () => (
1456
- /** @type {LocalizedString} */
1457
- "Rendering"
1458
- )
1459
1448
  ), cn = (
1460
- /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1461
- () => (
1462
- /** @type {LocalizedString} */
1463
- "Renderen"
1464
- )
1465
- ), dn = (
1466
- /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1467
- () => (
1468
- /** @type {LocalizedString} */
1469
- "Rendern"
1470
- )
1471
- ), un = (
1472
- /** @type {((inputs?: Loading_RenderingInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_RenderingInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1473
- ((n = {}, e = {}) => {
1474
- const t = e.locale ?? m();
1475
- return t === "nl" ? cn() : t === "de" ? dn() : ln();
1476
- })
1477
- ), hn = (
1478
1449
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1479
1450
  () => (
1480
1451
  /** @type {LocalizedString} */
1481
1452
  "Screenshot"
1482
1453
  )
1483
- ), mn = (
1454
+ ), un = (
1484
1455
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1485
1456
  () => (
1486
1457
  /** @type {LocalizedString} */
1487
1458
  "Screenshot"
1488
1459
  )
1489
- ), pn = (
1460
+ ), dn = (
1490
1461
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1491
1462
  () => (
1492
1463
  /** @type {LocalizedString} */
1493
1464
  "Screenshot"
1494
1465
  )
1495
- ), fn = (
1466
+ ), hn = (
1496
1467
  /** @type {((inputs?: Controls_Screenshot_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Screenshot_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1497
1468
  ((n = {}, e = {}) => {
1498
1469
  const t = e.locale ?? m();
1499
- return t === "nl" ? mn() : t === "de" ? pn() : hn();
1470
+ return t === "nl" ? un() : t === "de" ? dn() : cn();
1500
1471
  })
1501
- ), gn = (
1472
+ ), mn = (
1502
1473
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1503
1474
  () => (
1504
1475
  /** @type {LocalizedString} */
1505
1476
  "Configure"
1506
1477
  )
1507
- ), bn = (
1478
+ ), pn = (
1508
1479
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1509
1480
  () => (
1510
1481
  /** @type {LocalizedString} */
1511
1482
  "Configureren"
1512
1483
  )
1513
- ), vn = (
1484
+ ), fn = (
1514
1485
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1515
1486
  () => (
1516
1487
  /** @type {LocalizedString} */
1517
1488
  "Konfigurieren"
1518
1489
  )
1519
- ), yn = (
1490
+ ), gn = (
1520
1491
  /** @type {((inputs?: Controls_Configurator_OpenInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_OpenInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1521
1492
  ((n = {}, e = {}) => {
1522
1493
  const t = e.locale ?? m();
1523
- return t === "nl" ? bn() : t === "de" ? vn() : gn();
1494
+ return t === "nl" ? pn() : t === "de" ? fn() : mn();
1524
1495
  })
1525
- ), Sn = (
1496
+ ), bn = (
1526
1497
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1527
1498
  () => (
1528
1499
  /** @type {LocalizedString} */
1529
1500
  "Close"
1530
1501
  )
1531
- ), wn = (
1502
+ ), vn = (
1532
1503
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1533
1504
  () => (
1534
1505
  /** @type {LocalizedString} */
1535
1506
  "Sluiten"
1536
1507
  )
1537
- ), Cn = (
1508
+ ), yn = (
1538
1509
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1539
1510
  () => (
1540
1511
  /** @type {LocalizedString} */
1541
1512
  "Schließen"
1542
1513
  )
1543
- ), _n = (
1514
+ ), Sn = (
1544
1515
  /** @type {((inputs?: Controls_Configurator_CloseInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_CloseInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1545
1516
  ((n = {}, e = {}) => {
1546
1517
  const t = e.locale ?? m();
1547
- return t === "nl" ? wn() : t === "de" ? Cn() : Sn();
1518
+ return t === "nl" ? vn() : t === "de" ? yn() : bn();
1548
1519
  })
1549
- ), kn = (
1520
+ ), wn = (
1550
1521
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1551
1522
  () => (
1552
1523
  /** @type {LocalizedString} */
1553
1524
  "Reset camera"
1554
1525
  )
1555
- ), An = (
1526
+ ), Cn = (
1556
1527
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1557
1528
  () => (
1558
1529
  /** @type {LocalizedString} */
1559
1530
  "Camera resetten"
1560
1531
  )
1561
- ), En = (
1532
+ ), kn = (
1562
1533
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1563
1534
  () => (
1564
1535
  /** @type {LocalizedString} */
1565
1536
  "Kamera zurücksetzen"
1566
1537
  )
1567
- ), xn = (
1538
+ ), _n = (
1568
1539
  /** @type {((inputs?: Controls_Camera_ResetInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_ResetInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1569
1540
  ((n = {}, e = {}) => {
1570
1541
  const t = e.locale ?? m();
1571
- return t === "nl" ? An() : t === "de" ? En() : kn();
1542
+ return t === "nl" ? Cn() : t === "de" ? kn() : wn();
1572
1543
  })
1573
- ), Tn = (
1544
+ ), An = (
1574
1545
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1575
1546
  () => (
1576
1547
  /** @type {LocalizedString} */
1577
1548
  "Zoom in"
1578
1549
  )
1579
- ), Rn = (
1550
+ ), En = (
1580
1551
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1581
1552
  () => (
1582
1553
  /** @type {LocalizedString} */
1583
1554
  "Inzoomen"
1584
1555
  )
1585
- ), In = (
1556
+ ), xn = (
1586
1557
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1587
1558
  () => (
1588
1559
  /** @type {LocalizedString} */
1589
1560
  "Hineinzoomen"
1590
1561
  )
1591
- ), Ln = (
1562
+ ), Tn = (
1592
1563
  /** @type {((inputs?: Controls_Camera_Zoomin1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomin1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1593
1564
  ((n = {}, e = {}) => {
1594
1565
  const t = e.locale ?? m();
1595
- return t === "nl" ? Rn() : t === "de" ? In() : Tn();
1566
+ return t === "nl" ? En() : t === "de" ? xn() : An();
1596
1567
  })
1597
- ), On = (
1568
+ ), Rn = (
1598
1569
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1599
1570
  () => (
1600
1571
  /** @type {LocalizedString} */
1601
1572
  "Zoom out"
1602
1573
  )
1603
- ), Nn = (
1574
+ ), In = (
1604
1575
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1605
1576
  () => (
1606
1577
  /** @type {LocalizedString} */
1607
1578
  "Uitzoomen"
1608
1579
  )
1609
- ), Mn = (
1580
+ ), Ln = (
1610
1581
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1611
1582
  () => (
1612
1583
  /** @type {LocalizedString} */
1613
1584
  "Herauszoomen"
1614
1585
  )
1615
- ), zn = (
1586
+ ), On = (
1616
1587
  /** @type {((inputs?: Controls_Camera_Zoomout1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomout1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1617
1588
  ((n = {}, e = {}) => {
1618
1589
  const t = e.locale ?? m();
1619
- return t === "nl" ? Nn() : t === "de" ? Mn() : On();
1590
+ return t === "nl" ? In() : t === "de" ? Ln() : Rn();
1620
1591
  })
1621
- ), Pn = (
1592
+ ), Nn = (
1622
1593
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1623
1594
  () => (
1624
1595
  /** @type {LocalizedString} */
1625
1596
  "Rotate left"
1626
1597
  )
1627
- ), Fn = (
1598
+ ), Mn = (
1628
1599
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1629
1600
  () => (
1630
1601
  /** @type {LocalizedString} */
1631
1602
  "Naar links draaien"
1632
1603
  )
1633
- ), $n = (
1604
+ ), zn = (
1634
1605
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1635
1606
  () => (
1636
1607
  /** @type {LocalizedString} */
1637
1608
  "Nach links drehen"
1638
1609
  )
1639
- ), Dn = (
1610
+ ), Pn = (
1640
1611
  /** @type {((inputs?: Controls_Camera_Rotateleft1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateleft1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1641
1612
  ((n = {}, e = {}) => {
1642
1613
  const t = e.locale ?? m();
1643
- return t === "nl" ? Fn() : t === "de" ? $n() : Pn();
1614
+ return t === "nl" ? Mn() : t === "de" ? zn() : Nn();
1644
1615
  })
1645
- ), Un = (
1616
+ ), Fn = (
1646
1617
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1647
1618
  () => (
1648
1619
  /** @type {LocalizedString} */
1649
1620
  "Rotate right"
1650
1621
  )
1651
- ), Bn = (
1622
+ ), Dn = (
1652
1623
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1653
1624
  () => (
1654
1625
  /** @type {LocalizedString} */
1655
1626
  "Naar rechts draaien"
1656
1627
  )
1657
- ), Vn = (
1628
+ ), $n = (
1658
1629
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1659
1630
  () => (
1660
1631
  /** @type {LocalizedString} */
1661
1632
  "Nach rechts drehen"
1662
1633
  )
1663
- ), jn = (
1634
+ ), Un = (
1664
1635
  /** @type {((inputs?: Controls_Camera_Rotateright1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateright1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1665
1636
  ((n = {}, e = {}) => {
1666
1637
  const t = e.locale ?? m();
1667
- return t === "nl" ? Bn() : t === "de" ? Vn() : Un();
1638
+ return t === "nl" ? Dn() : t === "de" ? $n() : Fn();
1668
1639
  })
1669
- ), Hn = (
1640
+ ), Bn = (
1670
1641
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1671
1642
  () => (
1672
1643
  /** @type {LocalizedString} */
1673
1644
  "Tilt up"
1674
1645
  )
1675
- ), qn = (
1646
+ ), Vn = (
1676
1647
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1677
1648
  () => (
1678
1649
  /** @type {LocalizedString} */
1679
1650
  "Omhoog kantelen"
1680
1651
  )
1681
- ), Gn = (
1652
+ ), jn = (
1682
1653
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1683
1654
  () => (
1684
1655
  /** @type {LocalizedString} */
1685
1656
  "Nach oben kippen"
1686
1657
  )
1687
- ), Zn = (
1658
+ ), Hn = (
1688
1659
  /** @type {((inputs?: Controls_Camera_Tiltup1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltup1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1689
1660
  ((n = {}, e = {}) => {
1690
1661
  const t = e.locale ?? m();
1691
- return t === "nl" ? qn() : t === "de" ? Gn() : Hn();
1662
+ return t === "nl" ? Vn() : t === "de" ? jn() : Bn();
1692
1663
  })
1693
- ), Wn = (
1664
+ ), qn = (
1694
1665
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1695
1666
  () => (
1696
1667
  /** @type {LocalizedString} */
1697
1668
  "Tilt down"
1698
1669
  )
1699
- ), Yn = (
1670
+ ), Gn = (
1700
1671
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1701
1672
  () => (
1702
1673
  /** @type {LocalizedString} */
1703
1674
  "Omlaag kantelen"
1704
1675
  )
1705
- ), Qn = (
1676
+ ), Zn = (
1706
1677
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1707
1678
  () => (
1708
1679
  /** @type {LocalizedString} */
1709
1680
  "Nach unten kippen"
1710
1681
  )
1711
- ), Kn = (
1682
+ ), Wn = (
1712
1683
  /** @type {((inputs?: Controls_Camera_Tiltdown1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltdown1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1713
1684
  ((n = {}, e = {}) => {
1714
1685
  const t = e.locale ?? m();
1715
- return t === "nl" ? Yn() : t === "de" ? Qn() : Wn();
1686
+ return t === "nl" ? Gn() : t === "de" ? Zn() : qn();
1716
1687
  })
1717
- ), Xn = (
1688
+ ), Yn = (
1718
1689
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1719
1690
  () => (
1720
1691
  /** @type {LocalizedString} */
1721
1692
  "Working…"
1722
1693
  )
1723
- ), Jn = (
1694
+ ), Qn = (
1724
1695
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1725
1696
  () => (
1726
1697
  /** @type {LocalizedString} */
1727
1698
  "Bezig…"
1728
1699
  )
1729
- ), ei = (
1700
+ ), Kn = (
1730
1701
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1731
1702
  () => (
1732
1703
  /** @type {LocalizedString} */
1733
1704
  "Läuft…"
1734
1705
  )
1735
- ), ti = (
1706
+ ), Xn = (
1736
1707
  /** @type {((inputs?: Commerce_Submit_BusyInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_BusyInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1737
1708
  ((n = {}, e = {}) => {
1738
1709
  const t = e.locale ?? m();
1739
- return t === "nl" ? Jn() : t === "de" ? ei() : Xn();
1710
+ return t === "nl" ? Qn() : t === "de" ? Kn() : Yn();
1740
1711
  })
1741
- ), ni = (
1712
+ ), Jn = (
1742
1713
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1743
1714
  () => (
1744
1715
  /** @type {LocalizedString} */
1745
1716
  "Done"
1746
1717
  )
1747
- ), ii = (
1718
+ ), ei = (
1748
1719
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1749
1720
  () => (
1750
1721
  /** @type {LocalizedString} */
1751
1722
  "Gelukt"
1752
1723
  )
1753
- ), si = (
1724
+ ), ti = (
1754
1725
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1755
1726
  () => (
1756
1727
  /** @type {LocalizedString} */
1757
1728
  "Fertig"
1758
1729
  )
1759
- ), oi = (
1730
+ ), ni = (
1760
1731
  /** @type {((inputs?: Commerce_Submit_SuccessInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_SuccessInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1761
1732
  ((n = {}, e = {}) => {
1762
1733
  const t = e.locale ?? m();
1763
- return t === "nl" ? ii() : t === "de" ? si() : ni();
1734
+ return t === "nl" ? ei() : t === "de" ? ti() : Jn();
1764
1735
  })
1765
- ), ri = (
1736
+ ), ii = (
1766
1737
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1767
1738
  () => (
1768
1739
  /** @type {LocalizedString} */
1769
1740
  "Failed"
1770
1741
  )
1771
- ), ai = (
1742
+ ), si = (
1772
1743
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1773
1744
  () => (
1774
1745
  /** @type {LocalizedString} */
1775
1746
  "Mislukt"
1776
1747
  )
1777
- ), li = (
1748
+ ), oi = (
1778
1749
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1779
1750
  () => (
1780
1751
  /** @type {LocalizedString} */
1781
1752
  "Fehlgeschlagen"
1782
1753
  )
1783
- ), ci = (
1754
+ ), ri = (
1784
1755
  /** @type {((inputs?: Commerce_Submit_FailedInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_FailedInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1785
1756
  ((n = {}, e = {}) => {
1786
1757
  const t = e.locale ?? m();
1787
- return t === "nl" ? ai() : t === "de" ? li() : ri();
1758
+ return t === "nl" ? si() : t === "de" ? oi() : ii();
1788
1759
  })
1789
1760
  );
1790
- const di = {
1761
+ const ai = {
1791
1762
  xmlns: "http://www.w3.org/2000/svg",
1792
1763
  width: 24,
1793
1764
  height: 24,
@@ -1798,22 +1769,22 @@ const di = {
1798
1769
  "stroke-linecap": "round",
1799
1770
  "stroke-linejoin": "round"
1800
1771
  };
1801
- const ke = ([n, e, t]) => {
1772
+ const _e = ([n, e, t]) => {
1802
1773
  const i = document.createElementNS("http://www.w3.org/2000/svg", n);
1803
1774
  return Object.keys(e).forEach((s) => {
1804
1775
  i.setAttribute(s, String(e[s]));
1805
1776
  }), t?.length && t.forEach((s) => {
1806
- const o = ke(s);
1777
+ const o = _e(s);
1807
1778
  i.appendChild(o);
1808
1779
  }), i;
1809
1780
  }, Ae = (n, e = {}) => {
1810
1781
  const i = {
1811
- ...di,
1782
+ ...ai,
1812
1783
  ...e
1813
1784
  };
1814
- return ke(["svg", i, n]);
1785
+ return _e(["svg", i, n]);
1815
1786
  };
1816
- const ui = [
1787
+ const li = [
1817
1788
  [
1818
1789
  "path",
1819
1790
  {
@@ -1823,7 +1794,7 @@ const ui = [
1823
1794
  ["path", { d: "m3.3 7 8.7 5 8.7-5" }],
1824
1795
  ["path", { d: "M12 22V12" }]
1825
1796
  ];
1826
- const hi = [
1797
+ const ci = [
1827
1798
  [
1828
1799
  "path",
1829
1800
  {
@@ -1833,26 +1804,26 @@ const hi = [
1833
1804
  ["circle", { cx: "12", cy: "13", r: "3" }]
1834
1805
  ];
1835
1806
  const Ee = [["path", { d: "m6 9 6 6 6-6" }]];
1836
- const mi = [["path", { d: "m15 18-6-6 6-6" }]];
1837
- const pi = [["path", { d: "m9 18 6-6-6-6" }]];
1838
- const fi = [["path", { d: "m18 15-6-6-6 6" }]];
1839
- const gi = [
1807
+ const ui = [["path", { d: "m15 18-6-6 6-6" }]];
1808
+ const di = [["path", { d: "m9 18 6-6-6-6" }]];
1809
+ const hi = [["path", { d: "m18 15-6-6-6 6" }]];
1810
+ const mi = [
1840
1811
  ["path", { d: "M15 3h6v6" }],
1841
1812
  ["path", { d: "m21 3-7 7" }],
1842
1813
  ["path", { d: "m3 21 7-7" }],
1843
1814
  ["path", { d: "M9 21H3v-6" }]
1844
1815
  ];
1845
- const bi = [
1816
+ const pi = [
1846
1817
  ["path", { d: "m14 10 7-7" }],
1847
1818
  ["path", { d: "M20 10h-6V4" }],
1848
1819
  ["path", { d: "m3 21 7-7" }],
1849
1820
  ["path", { d: "M4 14h6v6" }]
1850
1821
  ];
1851
- const vi = [
1822
+ const fi = [
1852
1823
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
1853
1824
  ["path", { d: "M3 3v5h5" }]
1854
1825
  ];
1855
- const yi = [
1826
+ const gi = [
1856
1827
  ["path", { d: "M10 5H3" }],
1857
1828
  ["path", { d: "M12 19H3" }],
1858
1829
  ["path", { d: "M14 3v4" }],
@@ -1863,17 +1834,17 @@ const yi = [
1863
1834
  ["path", { d: "M8 10v4" }],
1864
1835
  ["path", { d: "M8 12H3" }]
1865
1836
  ];
1866
- const Si = [
1837
+ const bi = [
1867
1838
  ["path", { d: "M18 6 6 18" }],
1868
1839
  ["path", { d: "m6 6 12 12" }]
1869
1840
  ];
1870
- const wi = [
1841
+ const vi = [
1871
1842
  ["circle", { cx: "11", cy: "11", r: "8" }],
1872
1843
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1873
1844
  ["line", { x1: "11", x2: "11", y1: "8", y2: "14" }],
1874
1845
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
1875
1846
  ];
1876
- const Ci = [
1847
+ const yi = [
1877
1848
  ["circle", { cx: "11", cy: "11", r: "8" }],
1878
1849
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1879
1850
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
@@ -1882,19 +1853,19 @@ function y(n, { size: e = 20, strokeWidth: t = 1.75 } = {}) {
1882
1853
  return Ae(n, { width: e, height: e, "stroke-width": t });
1883
1854
  }
1884
1855
  const b = {
1885
- ar: (n) => y(ui, n),
1886
- fullscreen: (n) => y(gi, n),
1887
- exitFullscreen: (n) => y(bi, n),
1888
- screenshot: (n) => y(hi, n),
1889
- tiltUp: (n) => y(fi, n),
1856
+ ar: (n) => y(li, n),
1857
+ fullscreen: (n) => y(mi, n),
1858
+ exitFullscreen: (n) => y(pi, n),
1859
+ screenshot: (n) => y(ci, n),
1860
+ tiltUp: (n) => y(hi, n),
1890
1861
  tiltDown: (n) => y(Ee, n),
1891
- rotateLeft: (n) => y(mi, n),
1892
- rotateRight: (n) => y(pi, n),
1893
- zoomIn: (n) => y(wi, n),
1894
- zoomOut: (n) => y(Ci, n),
1895
- reset: (n) => y(vi, n),
1896
- configurator: (n) => y(yi, n),
1897
- close: (n) => y(Si, n)
1862
+ rotateLeft: (n) => y(ui, n),
1863
+ rotateRight: (n) => y(di, n),
1864
+ zoomIn: (n) => y(vi, n),
1865
+ zoomOut: (n) => y(yi, n),
1866
+ reset: (n) => y(fi, n),
1867
+ configurator: (n) => y(gi, n),
1868
+ close: (n) => y(bi, n)
1898
1869
  };
1899
1870
  class v {
1900
1871
  element;
@@ -1940,7 +1911,7 @@ const p = {
1940
1911
  // 32px
1941
1912
  9: "2.25rem"
1942
1913
  };
1943
- class _i {
1914
+ class Si {
1944
1915
  element;
1945
1916
  constructor() {
1946
1917
  this.element = document.createElement("div"), Object.assign(this.element.style, {
@@ -1953,9 +1924,9 @@ class _i {
1953
1924
  });
1954
1925
  }
1955
1926
  }
1956
- class ki {
1927
+ class wi {
1957
1928
  constructor(e = {}) {
1958
- this.options = e, this.card = new _i(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1929
+ this.options = e, this.card = new Si(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1959
1930
  }
1960
1931
  options;
1961
1932
  card;
@@ -1984,7 +1955,7 @@ class ki {
1984
1955
  }), e;
1985
1956
  }
1986
1957
  }
1987
- class Ai {
1958
+ class Ci {
1988
1959
  element;
1989
1960
  selectCallback = null;
1990
1961
  constructor(e, t, i) {
@@ -2017,7 +1988,7 @@ class Ai {
2017
1988
  }
2018
1989
  }
2019
1990
  }
2020
- class Ei {
1991
+ class ki {
2021
1992
  element;
2022
1993
  select;
2023
1994
  constructor(e, t, i, s, o) {
@@ -2025,13 +1996,13 @@ class Ei {
2025
1996
  const r = document.createElement("option");
2026
1997
  r.value = "", r.disabled = !0, r.textContent = i, this.select.appendChild(r);
2027
1998
  let a = !1;
2028
- for (let u = 0; u < t.length; u++) {
2029
- const f = t[u], h = document.createElement("option");
2030
- h.value = f, h.textContent = o?.[u] ?? f, f === s && (h.selected = !0, a = !0), this.select.appendChild(h);
1999
+ for (let d = 0; d < t.length; d++) {
2000
+ const f = t[d], h = document.createElement("option");
2001
+ h.value = f, h.textContent = o?.[d] ?? f, f === s && (h.selected = !0, a = !0), this.select.appendChild(h);
2031
2002
  }
2032
2003
  a || (r.selected = !0);
2033
- const d = Ae(Ee, { width: 16, height: 16, "stroke-width": 2 });
2034
- 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);
2004
+ const u = Ae(Ee, { width: 16, height: 16, "stroke-width": 2 });
2005
+ u.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(u);
2035
2006
  }
2036
2007
  setSelected(e) {
2037
2008
  this.select.value = e;
@@ -2047,7 +2018,7 @@ class Ei {
2047
2018
  t.value !== "" && (t.disabled = e !== null && !e.includes(t.value));
2048
2019
  }
2049
2020
  }
2050
- class xi {
2021
+ class _i {
2051
2022
  element;
2052
2023
  input;
2053
2024
  valueText;
@@ -2129,7 +2100,7 @@ const w = {
2129
2100
  medium: "500",
2130
2101
  semibold: "600"
2131
2102
  }
2132
- }, x = w.fontFamily.sans.join(", "), Ti = `
2103
+ }, x = w.fontFamily.sans.join(", "), Ai = `
2133
2104
  --primary: oklch(5% 0 0);
2134
2105
  --primary-foreground: oklch(100% 0 0);
2135
2106
  --secondary: oklch(92% 0 0);
@@ -2142,8 +2113,8 @@ const w = {
2142
2113
  --accent: oklch(92% 0 0);
2143
2114
  --accent-foreground: oklch(5% 0 0);
2144
2115
  --muted-foreground: oklch(44% 0 0);
2145
- `, Ri = `
2146
- :root { ${Ti} }
2116
+ `, Ei = `
2117
+ :root { ${Ai} }
2147
2118
 
2148
2119
  /* ── Button ──────────────────────────────────────────────── */
2149
2120
  .ui-btn {
@@ -2513,29 +2484,29 @@ const w = {
2513
2484
  50% { opacity: 0.55; }
2514
2485
  }
2515
2486
  `;
2516
- let le = !1;
2487
+ let ce = !1;
2517
2488
  function xe() {
2518
- if (le || typeof document > "u")
2489
+ if (ce || typeof document > "u")
2519
2490
  return;
2520
- le = !0;
2491
+ ce = !0;
2521
2492
  const n = document.createElement("style");
2522
- n.id = "vd-ui-vanilla", n.textContent = Ri, document.head.appendChild(n);
2493
+ n.id = "vd-ui-vanilla", n.textContent = Ei, document.head.appendChild(n);
2523
2494
  }
2524
- const Ii = w.fontFamily.sans.join(", ");
2525
- class Li {
2495
+ const xi = w.fontFamily.sans.join(", ");
2496
+ class Ti {
2526
2497
  qrLib = null;
2527
2498
  dialog = null;
2528
2499
  qrSlot = null;
2529
2500
  /** Open the modal immediately, with a loading placeholder in the QR slot. */
2530
2501
  show() {
2531
- this.hide(), xe(), this.dialog = new ki({ onClose: () => {
2502
+ this.hide(), xe(), this.dialog = new wi({ onClose: () => {
2532
2503
  this.dialog = null, this.qrSlot = null;
2533
2504
  } }), Object.assign(this.dialog.card.element.style, {
2534
2505
  display: "flex",
2535
2506
  flexDirection: "column",
2536
2507
  alignItems: "center",
2537
2508
  gap: l[3],
2538
- fontFamily: Ii
2509
+ fontFamily: xi
2539
2510
  }), this.dialog.card.element.appendChild(this.createText(Bt(), {
2540
2511
  fontSize: w.fontSize.base,
2541
2512
  fontWeight: w.fontWeight.semibold,
@@ -2587,40 +2558,40 @@ class Li {
2587
2558
  return t.src = e, t.alt = "QR code", t;
2588
2559
  }
2589
2560
  }
2590
- function ce(n) {
2561
+ function ue(n) {
2591
2562
  const e = Math.max(0, Math.min(1, n));
2592
2563
  return e * e * (3 - 2 * e);
2593
2564
  }
2594
- function Oi(n, e, t, i, s, o) {
2595
- const [r, a, d] = n, u = Math.cos(e), f = Math.sin(e), h = u * r + f * d, E = -f * r + u * d, k = Math.cos(t), _ = Math.sin(t), I = k * a - _ * E, P = _ * a + k * E, J = 0.55;
2596
- return [i + h * o * J, s - I * o * J, P];
2565
+ function Ri(n, e, t, i, s, o) {
2566
+ const [r, a, u] = n, d = Math.cos(e), f = Math.sin(e), h = d * r + f * u, E = -f * r + d * u, _ = Math.cos(t), k = Math.sin(t), I = _ * a - k * E, P = k * a + _ * E, ee = 0.55;
2567
+ return [i + h * o * ee, s - I * o * ee, P];
2597
2568
  }
2598
- function Ni(n, e, t) {
2569
+ function Ii(n, e, t) {
2599
2570
  n.beginPath(), n.moveTo(e[0], e[1]), n.lineTo(t[0], t[1]), n.strokeStyle = "#000", n.lineWidth = 2, n.stroke();
2600
2571
  }
2601
- function Mi(n, e, t, i, s) {
2572
+ function Li(n, e, t, i, s) {
2602
2573
  const o = e(t), r = e(i), a = [
2603
2574
  o[0] + (r[0] - o[0]) * s,
2604
2575
  o[1] + (r[1] - o[1]) * s,
2605
2576
  o[2]
2606
2577
  ];
2607
- Ni(n, o, a);
2578
+ Ii(n, o, a);
2608
2579
  }
2609
- const $ = [-1, -1, 1], D = [1, -1, 1], U = [1, -1, -1], B = [-1, -1, -1], V = [-1, 1, 1], j = [1, 1, 1], H = [1, 1, -1], q = [-1, 1, -1], de = [
2610
- [$, D],
2611
- [D, U],
2580
+ const $ = [-1, -1, 1], U = [1, -1, 1], B = [1, -1, -1], V = [-1, -1, -1], j = [-1, 1, 1], H = [1, 1, 1], q = [1, 1, -1], G = [-1, 1, -1], de = [
2581
+ [$, U],
2612
2582
  [U, B],
2613
- [B, $],
2614
- [$, V],
2615
- [D, j],
2583
+ [B, V],
2584
+ [V, $],
2585
+ [$, j],
2616
2586
  [U, H],
2617
2587
  [B, q],
2618
- [V, j],
2588
+ [V, G],
2619
2589
  [j, H],
2620
2590
  [H, q],
2621
- [q, V]
2622
- ], zi = 400, ue = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2623
- function Pi() {
2591
+ [q, G],
2592
+ [G, j]
2593
+ ], Oi = 400, he = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2594
+ function Ni() {
2624
2595
  const n = document.createElement("div");
2625
2596
  Object.assign(n.style, {
2626
2597
  position: "absolute",
@@ -2656,16 +2627,16 @@ function Pi() {
2656
2627
  fontWeight: "400",
2657
2628
  color: "#000",
2658
2629
  fontVariantNumeric: "tabular-nums",
2659
- fontFamily: ue
2630
+ fontFamily: he
2660
2631
  });
2661
2632
  const s = document.createElement("span");
2662
2633
  return Object.assign(s.style, {
2663
2634
  fontSize: "13px",
2664
2635
  color: "#000",
2665
- fontFamily: ue
2666
- }), s.textContent = _e(), t.appendChild(i), t.appendChild(s), n.appendChild(e), n.appendChild(t), { overlay: n, canvas: e, pctEl: i, phaseEl: s };
2636
+ fontFamily: he
2637
+ }), s.textContent = ln(), t.appendChild(i), t.appendChild(s), n.appendChild(e), n.appendChild(t), { overlay: n, canvas: e, pctEl: i, phaseEl: s };
2667
2638
  }
2668
- class Fi {
2639
+ class Mi {
2669
2640
  overlay;
2670
2641
  canvas;
2671
2642
  ctx;
@@ -2678,19 +2649,13 @@ class Fi {
2678
2649
  visible = !1;
2679
2650
  constructor(e, t = {}) {
2680
2651
  this.startTime = performance.now();
2681
- const i = Pi();
2652
+ const i = Ni();
2682
2653
  this.overlay = i.overlay, this.canvas = i.canvas, this.pctEl = i.pctEl, this.phaseEl = i.phaseEl, e.appendChild(this.overlay), this.ctx = this.canvas.getContext("2d"), this.ctx !== null && (this.sizeCanvas(), this.tick());
2683
- const s = t.showDelay ?? zi;
2654
+ const s = t.showDelay ?? Oi;
2684
2655
  this.showTimerId = setTimeout(() => {
2685
2656
  this.reveal();
2686
2657
  }, s);
2687
2658
  }
2688
- get loadingTexts() {
2689
- return {
2690
- downloading: _e(),
2691
- rendering: un()
2692
- };
2693
- }
2694
2659
  updateProgress(e, t) {
2695
2660
  this.hidden || (this.pctEl.textContent = `${Math.round(e)}%`, this.phaseEl.textContent = t !== "" ? ` · ${t}` : "");
2696
2661
  }
@@ -2741,20 +2706,20 @@ class Fi {
2741
2706
  return;
2742
2707
  const e = this.canvas.width / Math.min(devicePixelRatio, 2), t = this.canvas.height / Math.min(devicePixelRatio, 2), i = (performance.now() - this.startTime) / 1e3;
2743
2708
  this.ctx.fillStyle = "#fff", this.ctx.fillRect(0, 0, e, t);
2744
- const s = e / 2, o = t * 0.44, r = Math.min(e, t) * 0.08, a = 0.785, d = 0.615, u = (_) => Oi(_, a, d, s, o, r), f = 6, h = i % f / f, E = de.length;
2745
- let k;
2746
- h < 0.35 ? k = ce(h / 0.35) * E : h < 0.55 ? k = E : h < 0.9 ? k = (1 - ce((h - 0.55) / 0.35)) * E : k = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
2747
- for (let _ = 0; _ < E && !(_ >= k); _++) {
2748
- const I = de[_];
2709
+ const s = e / 2, o = t * 0.44, r = Math.min(e, t) * 0.08, a = 0.785, u = 0.615, d = (k) => Ri(k, a, u, s, o, r), f = 6, h = i % f / f, E = de.length;
2710
+ let _;
2711
+ h < 0.35 ? _ = ue(h / 0.35) * E : h < 0.55 ? _ = E : h < 0.9 ? _ = (1 - ue((h - 0.55) / 0.35)) * E : _ = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
2712
+ for (let k = 0; k < E && !(k >= _); k++) {
2713
+ const I = de[k];
2749
2714
  if (I === void 0)
2750
2715
  continue;
2751
- const P = Math.min(1, k - _);
2752
- Mi(this.ctx, u, I[0], I[1], P);
2716
+ const P = Math.min(1, _ - k);
2717
+ Li(this.ctx, d, I[0], I[1], P);
2753
2718
  }
2754
2719
  this.ctx.shadowBlur = 0;
2755
2720
  }
2756
2721
  }
2757
- class $i {
2722
+ class zi {
2758
2723
  constructor(e) {
2759
2724
  this.options = e, this.element = document.createElement("div"), Object.assign(this.element.style, { display: "flex", gap: "0.375rem" }), this.onFullscreenChange = () => {
2760
2725
  this.setFullscreenIcon(document.fullscreenElement !== null);
@@ -2808,9 +2773,9 @@ class z {
2808
2773
  targetTilt: t.tilt,
2809
2774
  targetZoom: t.zoom,
2810
2775
  thetaOffset: 0
2811
- }, s = Di(e, t, i);
2776
+ }, s = Pi(e, t, i);
2812
2777
  t.onChange((o) => {
2813
- i.targetRotation = o.rotation - i.thetaOffset, i.targetTilt = o.tilt, i.targetZoom = o.zoom, Ui(s, t, o);
2778
+ i.targetRotation = o.rotation - i.thetaOffset, i.targetTilt = o.tilt, i.targetZoom = o.zoom, Fi(s, t, o);
2814
2779
  }), this.element.appendChild(z.buildZoom(s.zoomOut, s.zoomIn)), this.element.appendChild(z.buildDpad(s.tiltUp, s.rotateLeft, s.reset, s.rotateRight, s.tiltDown));
2815
2780
  }
2816
2781
  static buildZoom(e, t) {
@@ -2820,55 +2785,55 @@ class z {
2820
2785
  static buildDpad(e, t, i, s, o) {
2821
2786
  const r = document.createElement("div");
2822
2787
  r.className = "vd-dpad";
2823
- for (const [a, d] of [
2788
+ for (const [a, u] of [
2824
2789
  [e, "up"],
2825
2790
  [t, "left"],
2826
2791
  [i, "center"],
2827
2792
  [s, "right"],
2828
2793
  [o, "down"]
2829
2794
  ])
2830
- a.element.classList.add(`vd-dpad-${d}`), r.appendChild(a.element);
2795
+ a.element.classList.add(`vd-dpad-${u}`), r.appendChild(a.element);
2831
2796
  return r;
2832
2797
  }
2833
2798
  }
2834
- function Di(n, e, t) {
2799
+ function Pi(n, e, t) {
2835
2800
  const i = (r) => Math.max(e.limits?.minZoom ?? 1, Math.min(e.limits?.maxZoom ?? 1 / 0, r)), s = (r) => {
2836
- const a = e.limits?.minRotate, d = e.limits?.maxRotate;
2837
- return a !== void 0 || d !== void 0 ? Math.max(a ?? -1 / 0, Math.min(d ?? 1 / 0, r)) : r;
2801
+ const a = e.limits?.minRotate, u = e.limits?.maxRotate;
2802
+ return a !== void 0 || u !== void 0 ? Math.max(a ?? -1 / 0, Math.min(u ?? 1 / 0, r)) : r;
2838
2803
  }, o = (r) => {
2839
- const a = e.limits?.minTilt, d = e.limits?.maxTilt;
2840
- if (a !== void 0 || d !== void 0) {
2841
- t.targetTilt = Math.max(a ?? 0, Math.min(d ?? 180, t.targetTilt + r)), n.tilt(t.targetTilt).set();
2804
+ const a = e.limits?.minTilt, u = e.limits?.maxTilt;
2805
+ if (a !== void 0 || u !== void 0) {
2806
+ t.targetTilt = Math.max(a ?? 0, Math.min(u ?? 180, t.targetTilt + r)), n.tilt(t.targetTilt).set();
2842
2807
  return;
2843
2808
  }
2844
- const u = t.targetTilt + r;
2845
- u > 180 || u < 0 ? (t.targetTilt = u > 180 ? 360 - u : -u, t.thetaOffset = (t.thetaOffset + 180) % 360, n.tilt(t.targetTilt).rotate(t.targetRotation + t.thetaOffset).set()) : (t.targetTilt = u, n.tilt(t.targetTilt).set());
2809
+ const d = t.targetTilt + r;
2810
+ d > 180 || d < 0 ? (t.targetTilt = d > 180 ? 360 - d : -d, t.thetaOffset = (t.thetaOffset + 180) % 360, n.tilt(t.targetTilt).rotate(t.targetRotation + t.thetaOffset).set()) : (t.targetTilt = d, n.tilt(t.targetTilt).set());
2846
2811
  };
2847
2812
  return {
2848
- zoomOut: new v({ variant: "outline", size: "icon", label: zn(), icon: b.zoomOut(), onClick: () => {
2813
+ zoomOut: new v({ variant: "outline", size: "icon", label: On(), icon: b.zoomOut(), onClick: () => {
2849
2814
  t.targetZoom = i(t.targetZoom - 10), n.zoom(t.targetZoom).set();
2850
2815
  } }),
2851
- zoomIn: new v({ variant: "outline", size: "icon", label: Ln(), icon: b.zoomIn(), onClick: () => {
2816
+ zoomIn: new v({ variant: "outline", size: "icon", label: Tn(), icon: b.zoomIn(), onClick: () => {
2852
2817
  t.targetZoom = i(t.targetZoom + 10), n.zoom(t.targetZoom).set();
2853
2818
  } }),
2854
- tiltUp: new v({ variant: "outline", size: "icon", label: Zn(), icon: b.tiltUp(), onClick: () => {
2819
+ tiltUp: new v({ variant: "outline", size: "icon", label: Hn(), icon: b.tiltUp(), onClick: () => {
2855
2820
  o(-15);
2856
2821
  } }),
2857
- rotateLeft: new v({ variant: "outline", size: "icon", label: Dn(), icon: b.rotateLeft(), onClick: () => {
2822
+ rotateLeft: new v({ variant: "outline", size: "icon", label: Pn(), icon: b.rotateLeft(), onClick: () => {
2858
2823
  t.targetRotation = s(t.targetRotation - 15), n.rotate(t.targetRotation + t.thetaOffset).set();
2859
2824
  } }),
2860
- reset: new v({ variant: "outline", size: "icon", label: xn(), icon: b.reset(), onClick: () => {
2825
+ reset: new v({ variant: "outline", size: "icon", label: _n(), icon: b.reset(), onClick: () => {
2861
2826
  t.thetaOffset = 0, n.reset();
2862
2827
  } }),
2863
- rotateRight: new v({ variant: "outline", size: "icon", label: jn(), icon: b.rotateRight(), onClick: () => {
2828
+ rotateRight: new v({ variant: "outline", size: "icon", label: Un(), icon: b.rotateRight(), onClick: () => {
2864
2829
  t.targetRotation = s(t.targetRotation + 15), n.rotate(t.targetRotation + t.thetaOffset).set();
2865
2830
  } }),
2866
- tiltDown: new v({ variant: "outline", size: "icon", label: Kn(), icon: b.tiltDown(), onClick: () => {
2831
+ tiltDown: new v({ variant: "outline", size: "icon", label: Wn(), icon: b.tiltDown(), onClick: () => {
2867
2832
  o(15);
2868
2833
  } })
2869
2834
  };
2870
2835
  }
2871
- function Ui(n, e, t) {
2836
+ function Fi(n, e, t) {
2872
2837
  const i = e.limits;
2873
2838
  i !== void 0 && (n.zoomOut.element.disabled = i.minZoom !== void 0 && t.zoom <= i.minZoom + R, n.zoomIn.element.disabled = i.maxZoom !== void 0 && t.zoom >= i.maxZoom - R, n.tiltUp.element.disabled = i.minTilt !== void 0 && t.tilt <= i.minTilt + R, n.tiltDown.element.disabled = i.maxTilt !== void 0 && t.tilt >= i.maxTilt - R, n.rotateLeft.element.disabled = i.minRotate !== void 0 && t.rotation <= i.minRotate + R, n.rotateRight.element.disabled = i.maxRotate !== void 0 && t.rotation >= i.maxRotate - R);
2874
2839
  }
@@ -2888,29 +2853,29 @@ const T = {
2888
2853
  cm: 10,
2889
2854
  m: 1e3,
2890
2855
  in: 25.4
2891
- }, he = 3;
2892
- function Bi(n) {
2856
+ }, me = 3;
2857
+ function Di(n) {
2893
2858
  const e = n.stepMm / Te[n.displayUnit];
2894
- for (let t = 0; t <= he; t++) {
2859
+ for (let t = 0; t <= me; t++) {
2895
2860
  const i = e * 10 ** t;
2896
2861
  if (Math.abs(i - Math.round(i)) < 1e-9)
2897
2862
  return t;
2898
2863
  }
2899
- return he;
2864
+ return me;
2900
2865
  }
2901
- function Vi(n, e, t) {
2902
- const i = Bi(e), s = n / Te[e.displayUnit];
2866
+ function $i(n, e, t) {
2867
+ const i = Di(e), s = n / Te[e.displayUnit];
2903
2868
  return new Intl.NumberFormat(t, {
2904
2869
  minimumFractionDigits: i,
2905
2870
  maximumFractionDigits: i
2906
2871
  }).format(s);
2907
2872
  }
2908
- function ji(n, e, t, i, s, o, r) {
2909
- const a = m(), d = n.values.map((h) => Vi(Number(h), e, a)), u = n.values.find((h) => t.getValue(n.name, h)?.isSelected === !0) ?? n.defaultValue, f = new xi(n.values, {
2873
+ function Ui(n, e, t, i, s, o, r) {
2874
+ const a = m(), u = n.values.map((h) => $i(Number(h), e, a)), d = n.values.find((h) => t.getValue(n.name, h)?.isSelected === !0) ?? n.defaultValue, f = new _i(n.values, {
2910
2875
  label: n.name,
2911
- labels: d,
2876
+ labels: u,
2912
2877
  unit: e.displayUnit,
2913
- ...u !== void 0 && { initialSelected: u }
2878
+ ...d !== void 0 && { initialSelected: d }
2914
2879
  });
2915
2880
  return f.onSelect((h) => {
2916
2881
  s(n.name, h);
@@ -2929,20 +2894,20 @@ function ji(n, e, t, i, s, o, r) {
2929
2894
  }
2930
2895
  };
2931
2896
  }
2932
- const Hi = 5;
2933
- let qi = 0;
2934
- function Q(n) {
2897
+ const Bi = 5;
2898
+ let Vi = 0;
2899
+ function K(n) {
2935
2900
  const e = n.replace(/([A-Z])/g, " $1").trim();
2936
2901
  return e.charAt(0).toUpperCase() + e.slice(1).toLowerCase();
2937
2902
  }
2938
- function Gi(n, e, t, i, s, o) {
2903
+ function ji(n, e, t, i, s, o) {
2939
2904
  const r = document.createElement("div");
2940
2905
  r.className = "vd-attribute", r.dataset.name = n.name;
2941
2906
  const a = document.createElement("span");
2942
- a.className = "vd-attribute-label", a.textContent = Q(n.name), a.id = `vd-attribute-label-${qi++}`, r.appendChild(a), r.setAttribute("role", "group"), r.setAttribute("aria-labelledby", a.id);
2943
- const d = (f) => {
2907
+ a.className = "vd-attribute-label", a.textContent = K(n.name), a.id = `vd-attribute-label-${Vi++}`, r.appendChild(a), r.setAttribute("role", "group"), r.setAttribute("aria-labelledby", a.id);
2908
+ const u = (f) => {
2944
2909
  r.style.display = f ? "none" : "";
2945
- }, u = n.dimension !== void 0 ? ji(
2910
+ }, d = n.dimension !== void 0 ? Ui(
2946
2911
  n,
2947
2912
  n.dimension,
2948
2913
  e,
@@ -2950,27 +2915,27 @@ function Gi(n, e, t, i, s, o) {
2950
2915
  s,
2951
2916
  i,
2952
2917
  o
2953
- ) : Zi(n, e, t, i, o);
2954
- return r.appendChild(u.element), { element: r, setSelectable: u.setSelectable, setHidden: d };
2918
+ ) : Hi(n, e, t, i, o);
2919
+ return r.appendChild(d.element), { element: r, setSelectable: d.setSelectable, setHidden: u };
2955
2920
  }
2956
- function Zi(n, e, t, i, s) {
2921
+ function Hi(n, e, t, i, s) {
2957
2922
  const o = n.values.find(
2958
- (d) => e.getValue(n.name, d)?.isSelected === !0
2959
- ), r = n.values.map(Q), a = n.values.length <= Hi ? new Ai(n.values, o, r) : new Ei(n.name, n.values, Q(n.name), o, r);
2960
- return a.onSelect((d) => {
2961
- t.dispatch(T.SELECT, { attribute: n.name, value: d }, !0).defaultPrevented || i(n.name, d);
2962
- }), s(n.name, (d) => {
2963
- a.setSelected(d.value), t.dispatch(T.SELECTED, { attribute: n.name, value: d.value });
2923
+ (u) => e.getValue(n.name, u)?.isSelected === !0
2924
+ ), r = n.values.map(K), a = n.values.length <= Bi ? new Ci(n.values, o, r) : new ki(n.name, n.values, K(n.name), o, r);
2925
+ return a.onSelect((u) => {
2926
+ t.dispatch(T.SELECT, { attribute: n.name, value: u }, !0).defaultPrevented || i(n.name, u);
2927
+ }), s(n.name, (u) => {
2928
+ a.setSelected(u.value), t.dispatch(T.SELECTED, { attribute: n.name, value: u.value });
2964
2929
  }), {
2965
2930
  element: a.element,
2966
- setSelectable: (d) => {
2967
- a.setEnabled(d);
2931
+ setSelectable: (u) => {
2932
+ a.setEnabled(u);
2968
2933
  }
2969
2934
  };
2970
2935
  }
2971
- const Wi = 80, Yi = 2500;
2972
- class Qi {
2973
- constructor(e, t = Yi) {
2936
+ const qi = 80, Gi = 2500;
2937
+ class Zi {
2938
+ constructor(e, t = Gi) {
2974
2939
  this.configuration = e, this.resetMs = t, this.element = document.createElement("div"), this.element.className = "vd-commerce vd-hidden";
2975
2940
  const i = document.createElement("div");
2976
2941
  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 v({ variant: "default", onClick: () => {
@@ -3002,19 +2967,19 @@ class Qi {
3002
2967
  this.priceEl.textContent = "", this.vatEl.textContent = "";
3003
2968
  return;
3004
2969
  }
3005
- this.priceEl.textContent = Ki(e.price, e.currency), this.vatEl.textContent = me(this.configuration.vatDisplay);
2970
+ this.priceEl.textContent = Wi(e.price, e.currency), this.vatEl.textContent = pe(this.configuration.vatDisplay);
3006
2971
  }
3007
2972
  renderButton() {
3008
2973
  const e = this.configuration.submitEnabled;
3009
- this.button.element.classList.toggle("vd-hidden", !e), e && this.state === "idle" && this.setButtonText(me(this.configuration.buttonLabel));
2974
+ this.button.element.classList.toggle("vd-hidden", !e), e && this.state === "idle" && this.setButtonText(pe(this.configuration.buttonLabel));
3010
2975
  }
3011
2976
  async handleSubmit() {
3012
2977
  if (this.state !== "busy") {
3013
- this.setState("busy", ti());
2978
+ this.setState("busy", Xn());
3014
2979
  try {
3015
- await this.configuration.submit(), this.setState("success", oi());
2980
+ await this.configuration.submit(), this.setState("success", ni());
3016
2981
  } catch {
3017
- this.setState("failed", ci());
2982
+ this.setState("failed", ri());
3018
2983
  }
3019
2984
  this.scheduleReset();
3020
2985
  }
@@ -3031,10 +2996,10 @@ class Qi {
3031
2996
  this.button.element.textContent = e, this.button.element.setAttribute("aria-label", e);
3032
2997
  }
3033
2998
  }
3034
- function me(n) {
3035
- return (n ?? "").slice(0, Wi);
2999
+ function pe(n) {
3000
+ return (n ?? "").slice(0, qi);
3036
3001
  }
3037
- function Ki(n, e) {
3002
+ function Wi(n, e) {
3038
3003
  try {
3039
3004
  const t = new Intl.NumberFormat(m(), { style: "currency", currency: e }), i = t.resolvedOptions().maximumFractionDigits ?? 2;
3040
3005
  return t.format(n / 10 ** i);
@@ -3055,8 +3020,8 @@ class Re {
3055
3020
  this.slot?.remove(), this.slot = null, this.panel = null;
3056
3021
  }
3057
3022
  }
3058
- const Xi = 572;
3059
- class Ji {
3023
+ const Yi = 572;
3024
+ class Qi {
3060
3025
  /** @param actionBarSlot The shared corner slot the AR/fullscreen buttons live in — the
3061
3026
  * "open configurator" toggle joins them there instead of floating as its own overlay. */
3062
3027
  constructor(e) {
@@ -3076,7 +3041,7 @@ class Ji {
3076
3041
  this.container = e, t.classList.add("vd-attributes-sidebar"), this.closeButton = new v({
3077
3042
  variant: "ghost",
3078
3043
  size: "icon-sm",
3079
- label: _n(),
3044
+ label: Sn(),
3080
3045
  icon: b.close({ size: 18 }),
3081
3046
  onClick: () => {
3082
3047
  this.expanded = !1, this.render();
@@ -3086,7 +3051,7 @@ class Ji {
3086
3051
  i.className = "vd-sidebar-header", i.appendChild(this.closeButton.element), this.body = document.createElement("div"), this.body.className = "vd-sidebar-body", this.body.appendChild(t), this.element = document.createElement("div"), this.element.className = "vd-sidebar vd-hidden", this.element.append(i, this.body), e.appendChild(this.element), this.openButton = new v({
3087
3052
  variant: "outline",
3088
3053
  size: "icon",
3089
- label: yn(),
3054
+ label: gn(),
3090
3055
  icon: b.configurator({ size: 18 }),
3091
3056
  onClick: () => {
3092
3057
  this.expanded = !0, this.render();
@@ -3102,7 +3067,7 @@ class Ji {
3102
3067
  observe() {
3103
3068
  typeof ResizeObserver > "u" || this.container === null || (this.observer = new ResizeObserver((e) => {
3104
3069
  const t = e[0]?.contentRect.width ?? 0;
3105
- this.setCollapsible(t > 0 && t < Xi);
3070
+ this.setCollapsible(t > 0 && t < Yi);
3106
3071
  }), this.observer.observe(this.container));
3107
3072
  }
3108
3073
  setCollapsible(e) {
@@ -3115,7 +3080,7 @@ class Ji {
3115
3080
  this.element.classList.toggle("vd-hidden", !this.visible), this.element.classList.toggle("vd-sidebar-collapsed", t), this.openButton.element.classList.toggle("vd-hidden", !t), this.closeButton.element.style.display = this.collapsible ? "" : "none", this.container.classList.toggle("vd-layout-sidebar-right", e), this.container.classList.toggle("vd-layout-sidebar-permanent", e && !this.collapsible);
3116
3081
  }
3117
3082
  }
3118
- class es {
3083
+ class Ki {
3119
3084
  attach(e, t) {
3120
3085
  }
3121
3086
  setVisible(e) {
@@ -3123,20 +3088,20 @@ class es {
3123
3088
  destroy() {
3124
3089
  }
3125
3090
  }
3126
- const ts = {
3091
+ const Xi = {
3127
3092
  "inframe-bottom-left": () => new Re(),
3128
- "sidebar-right": (n) => new Ji(n),
3129
- hidden: () => new es()
3093
+ "sidebar-right": (n) => new Qi(n),
3094
+ hidden: () => new Ki()
3130
3095
  };
3131
- function ns(n, e) {
3132
- return (ts[n ?? ""] ?? (() => new Re()))(e);
3096
+ function Ji(n, e) {
3097
+ return (Xi[n ?? ""] ?? (() => new Re()))(e);
3133
3098
  }
3134
- const G = w.fontFamily.sans.join(", "), Z = `
3099
+ const Z = w.fontFamily.sans.join(", "), W = `
3135
3100
  position: absolute;
3136
3101
  display: flex;
3137
3102
  z-index: 10;
3138
3103
  transition: inset-inline-end 0.18s ease;
3139
- `, is = `
3104
+ `, es = `
3140
3105
  /* Override browser's default black fullscreen backdrop */
3141
3106
  .vd-container:fullscreen {
3142
3107
  background: oklch(100% 0 0);
@@ -3144,7 +3109,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3144
3109
 
3145
3110
  /* Layout slots — four corners */
3146
3111
  .vd-slot-top-right {
3147
- ${Z}
3112
+ ${W}
3148
3113
  inset-block-start: ${l[3]};
3149
3114
  inset-inline-end: ${l[3]};
3150
3115
  flex-direction: column;
@@ -3153,7 +3118,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3153
3118
  }
3154
3119
 
3155
3120
  .vd-slot-bottom-left {
3156
- ${Z}
3121
+ ${W}
3157
3122
  inset-block-end: ${l[3]};
3158
3123
  inset-inline-start: ${l[3]};
3159
3124
  flex-direction: column;
@@ -3162,7 +3127,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3162
3127
  }
3163
3128
 
3164
3129
  .vd-slot-bottom-right {
3165
- ${Z}
3130
+ ${W}
3166
3131
  inset-block-end: ${l[3]};
3167
3132
  inset-inline-end: ${l[3]};
3168
3133
  flex-direction: row;
@@ -3208,7 +3173,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3208
3173
  border-radius: ${l[3]};
3209
3174
  padding: ${l[3]};
3210
3175
  box-shadow: 0 ${l[1]} ${l[4]} color-mix(in oklch, ${p.neutral[900]} 6%, transparent);
3211
- font-family: ${G};
3176
+ font-family: ${Z};
3212
3177
  }
3213
3178
 
3214
3179
  .vd-attribute {
@@ -3224,7 +3189,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3224
3189
  color: ${p.neutral[500]};
3225
3190
  text-transform: uppercase;
3226
3191
  letter-spacing: 0.05em;
3227
- font-family: ${G};
3192
+ font-family: ${Z};
3228
3193
  }
3229
3194
 
3230
3195
  /* sidebar-right layout — a docked, full-height right panel */
@@ -3306,7 +3271,7 @@ const G = w.fontFamily.sans.join(", "), Z = `
3306
3271
  gap: ${l[2]};
3307
3272
  padding-block-start: ${l[3]};
3308
3273
  border-block-start: 1px solid color-mix(in oklch, ${p.neutral[900]} 8%, transparent);
3309
- font-family: ${G};
3274
+ font-family: ${Z};
3310
3275
  }
3311
3276
 
3312
3277
  .vd-commerce-price {
@@ -3339,17 +3304,17 @@ const G = w.fontFamily.sans.join(", "), Z = `
3339
3304
  }
3340
3305
 
3341
3306
  `;
3342
- function ss() {
3307
+ function ts() {
3343
3308
  if (xe(), document.getElementById("vd-styles") !== null)
3344
3309
  return;
3345
3310
  const n = document.createElement("style");
3346
- n.id = "vd-styles", n.textContent = is, document.head.appendChild(n);
3311
+ n.id = "vd-styles", n.textContent = es, document.head.appendChild(n);
3347
3312
  }
3348
- function os(n, e) {
3313
+ function ns(n, e) {
3349
3314
  const t = document.createElement("a");
3350
3315
  t.href = `data:image/png;base64,${n}`, t.download = e, t.click();
3351
3316
  }
3352
- class rs {
3317
+ class is {
3353
3318
  options;
3354
3319
  settings = {};
3355
3320
  container = null;
@@ -3369,7 +3334,7 @@ class rs {
3369
3334
  this.options = e;
3370
3335
  }
3371
3336
  attach(e) {
3372
- ss(), this.container = e, this.loading = new Fi(e), this.slots.topRight = this.createSlot(e, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(e, "vd-slot-bottom-right");
3337
+ ts(), this.container = e, this.loading = new Mi(e), this.slots.topRight = this.createSlot(e, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(e, "vd-slot-bottom-right");
3373
3338
  }
3374
3339
  onReady() {
3375
3340
  this.loading?.hide(), this.loading = null, this.mountToolbar(), this.cameraControls !== null && (this.cameraControls.element.style.display = "flex"), this.layout?.setVisible(!0);
@@ -3378,7 +3343,7 @@ class rs {
3378
3343
  if (this.actionBar !== null || this.slots.bottomRight === null || this.container === null)
3379
3344
  return;
3380
3345
  const e = typeof this.container.requestFullscreen == "function";
3381
- this.actionBar = new $i({
3346
+ this.actionBar = new zi({
3382
3347
  onAr: this.options.onAr,
3383
3348
  onFullscreen: e ? () => {
3384
3349
  this.toggleFullscreen();
@@ -3395,7 +3360,7 @@ class rs {
3395
3360
  this.loading?.showError(e);
3396
3361
  }
3397
3362
  applyViewerSettings(e) {
3398
- this.settings = e, e.language !== void 0 && Se(e.language, { reload: !1 }), this.syncScreenshotButton(), this.actionBar?.applySettings(e), this.cameraControls !== null && (this.cameraControls.element.style.display = e.cameraControls === !0 ? "flex" : "none"), this.placeScreenshotButton();
3363
+ this.settings = e, e.language !== void 0 && we(e.language, { reload: !1 }), this.syncScreenshotButton(), this.actionBar?.applySettings(e), this.cameraControls !== null && (this.cameraControls.element.style.display = e.cameraControls === !0 ? "flex" : "none"), this.placeScreenshotButton();
3399
3364
  }
3400
3365
  renderAttributeControls(e, t) {
3401
3366
  if (!(this.container === null || this.slots.topRight === null || this.slots.bottomRight === null) && (this.cameraControls?.element.remove(), this.cameraControls = null, this.teardownConfigurator(), this.settings.cameraControls === !0 && (this.cameraControls = new z(
@@ -3404,7 +3369,7 @@ class rs {
3404
3369
  ), this.cameraControls.element.style.display = "none", this.slots.topRight.appendChild(this.cameraControls.element)), this.placeScreenshotButton(), t.length !== 0)) {
3405
3370
  this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes", this.groupHandles = /* @__PURE__ */ new Map();
3406
3371
  for (const i of t) {
3407
- const s = Gi(
3372
+ const s = ji(
3408
3373
  i,
3409
3374
  e,
3410
3375
  this.options.eventBus,
@@ -3414,7 +3379,7 @@ class rs {
3414
3379
  );
3415
3380
  this.groupHandles.set(i.name, s), this.attributes.appendChild(s.element);
3416
3381
  }
3417
- this.commerce = new Qi(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = ns(
3382
+ this.commerce = new Zi(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = Ji(
3418
3383
  this.settings.configuratorLayout,
3419
3384
  this.slots.bottomRight
3420
3385
  ), this.layout.attach(this.container, this.attributes), this.lastSelectable !== null && this.applySelectable(this.lastSelectable);
@@ -3455,11 +3420,11 @@ class rs {
3455
3420
  e && this.screenshotBtn === null && (this.screenshotBtn = new v({
3456
3421
  variant: "outline",
3457
3422
  size: "icon",
3458
- label: fn(),
3423
+ label: hn(),
3459
3424
  icon: b.screenshot(),
3460
3425
  onClick: () => {
3461
3426
  this.options.snapshotApi.take("snapshot.png").onDeveloped(({ data: t, filename: i }) => {
3462
- os(t, i);
3427
+ ns(t, i);
3463
3428
  });
3464
3429
  }
3465
3430
  })), !e && this.screenshotBtn !== null && (this.screenshotBtn.element.remove(), this.screenshotBtn = null);
@@ -3468,8 +3433,8 @@ class rs {
3468
3433
  this.screenshotBtn === null || this.slots.topRight === null || (this.cameraControls !== null ? this.cameraControls.element.appendChild(this.screenshotBtn.element) : this.slots.topRight.appendChild(this.screenshotBtn.element));
3469
3434
  }
3470
3435
  }
3471
- const as = {};
3472
- class ls {
3436
+ const ss = {};
3437
+ class os {
3473
3438
  defaultServer = "https://server.virtualdisplay.io";
3474
3439
  options;
3475
3440
  serverHost;
@@ -3523,7 +3488,7 @@ class ls {
3523
3488
  getServerUrl() {
3524
3489
  if (this.serverHost !== void 0)
3525
3490
  return this.serverHost;
3526
- if (as?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
3491
+ if (ss?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
3527
3492
  return this.defaultServer;
3528
3493
  }
3529
3494
  getParentElement() {
@@ -3535,7 +3500,7 @@ class ls {
3535
3500
  return e;
3536
3501
  }
3537
3502
  }
3538
- function cs(n) {
3503
+ function rs(n) {
3539
3504
  const { messenger: e } = n;
3540
3505
  e.on(c.HANDSHAKE, (t) => {
3541
3506
  Me(t) && (C.info("Server handshake received, flushing publisher queue"), e.markReady());
@@ -3544,18 +3509,18 @@ function cs(n) {
3544
3509
  }), e.on(c.MUTATION, (t) => {
3545
3510
  Fe(t) && (n.attributes.handleMutationResult(t), n.configuration.handleSelectionChanged(n.attributes.getSelection()));
3546
3511
  }), e.on(c.SNAPSHOT, (t) => {
3547
- $e(t) && n.snapshot.handleSnapshotResult(t);
3512
+ De(t) && n.snapshot.handleSnapshotResult(t);
3548
3513
  }), e.on(c.CAMERA, (t) => {
3549
- De(t) && n.cameraPosition.handlePositionUpdate(t);
3514
+ $e(t) && n.cameraPosition.handlePositionUpdate(t);
3550
3515
  }), e.on(c.LOADING_INDICATOR, (t) => {
3551
3516
  Be(t) && (t.error !== void 0 ? n.ui.showError(t.error) : n.ui.updateProgress(t.progress, t.phase));
3552
3517
  }), e.on(c.CONFIG, (t) => {
3553
3518
  He(t) && n.applyConfig(t);
3554
3519
  }), e.on(c.MAPPING, (t) => {
3555
3520
  Ue(t) && (n.attributes.handleMappingReceived(t), n.configuration.handleSelectionChanged(n.attributes.getSelection()), n.ui.renderAttributeControls(n.attributes, t.attributes), n.readyStateTracker.handleMappingReceived());
3556
- }), ds(n);
3521
+ }), as(n);
3557
3522
  }
3558
- function ds(n) {
3523
+ function as(n) {
3559
3524
  const { messenger: e } = n;
3560
3525
  e.on(c.FOCUS, (t) => {
3561
3526
  qe(t) && n.focus.handleStateReceived(t);
@@ -3569,7 +3534,7 @@ function ds(n) {
3569
3534
  Pe(t) && n.onAppResolved(t);
3570
3535
  });
3571
3536
  }
3572
- class us {
3537
+ class ls {
3573
3538
  ready = !1;
3574
3539
  onReady;
3575
3540
  constructor(e) {
@@ -3585,7 +3550,13 @@ class us {
3585
3550
  this.ready = !1;
3586
3551
  }
3587
3552
  }
3588
- class hs {
3553
+ function cs(n) {
3554
+ if (n === void 0)
3555
+ return;
3556
+ const { annotations: e, ...t } = n;
3557
+ return e === void 0 ? t : e === !0 ? { ...t, annotations: "show" } : e === !1 ? { ...t, annotations: "hide" } : { ...t, annotations: e };
3558
+ }
3559
+ class us {
3589
3560
  attributes;
3590
3561
  selectableState;
3591
3562
  readyStateTracker;
@@ -3624,25 +3595,25 @@ class hs {
3624
3595
  const s = (o) => {
3625
3596
  this.messenger.send(o);
3626
3597
  };
3627
- this.attributes = new pt(s, (o, r) => {
3598
+ this.attributes = new pt(s, F, (o, r) => {
3628
3599
  this.notifyMutationFailed(o, r);
3629
- }), this.selectableState = new ft(), this.snapshotApi = new _t(s), this.annotationsApi = new We(s), this.cameraApi = new gt(s), this.cameraPositionApi = new bt(), this.focusApi = new wt(s, (o) => {
3600
+ }), this.selectableState = new ft(), this.snapshotApi = new kt(s), this.annotationsApi = new We(s, F), this.cameraApi = new gt(s), this.cameraPositionApi = new bt(), this.focusApi = new wt(s, (o) => {
3630
3601
  this.dispatchFocusChange(o);
3631
- }), this.configurationApi = new St(
3602
+ }, F), this.configurationApi = new St(
3632
3603
  (o) => {
3633
3604
  this.dispatchConfigurationChange(o);
3634
3605
  },
3635
3606
  (o) => {
3636
3607
  this.dispatchConfigurationSubmit(o);
3637
3608
  }
3638
- ), this.eventBus = new kt(), this.arActivation = i.createArActivation?.(s), this.syncTracker = i.createSyncTracker?.(), this.readyStateTracker = new us(() => {
3609
+ ), this.eventBus = new _t(), this.arActivation = i.createArActivation?.(s), this.syncTracker = i.createSyncTracker?.(), this.readyStateTracker = new ls(() => {
3639
3610
  this.notifyReady();
3640
3611
  }), this.ui = this.createStandardInterface(), this.wireIncomingMessages(), i.registerHandlers?.(this.messenger, s), this.messenger.start(), this.createAndConnectIframe();
3641
3612
  }
3642
3613
  /** The configurator UI, every callback bridging it to the facade that owns the action. */
3643
3614
  createStandardInterface() {
3644
3615
  const e = this.arActivation;
3645
- return new rs({
3616
+ return new is({
3646
3617
  snapshotApi: this.snapshotApi,
3647
3618
  cameraApi: this.cameraApi,
3648
3619
  cameraPositionApi: this.cameraPositionApi,
@@ -3663,7 +3634,7 @@ class hs {
3663
3634
  }
3664
3635
  /** Wire the inbound viewer protocol to the facades. */
3665
3636
  wireIncomingMessages() {
3666
- cs({
3637
+ rs({
3667
3638
  messenger: this.messenger,
3668
3639
  attributes: this.attributes,
3669
3640
  selectable: this.selectableState,
@@ -3740,7 +3711,7 @@ class hs {
3740
3711
  );
3741
3712
  }
3742
3713
  handleConfig(e) {
3743
- const t = e.viewerSettings, i = this.options.viewerSettings;
3714
+ const t = e.viewerSettings, i = cs(this.options.viewerSettings);
3744
3715
  if (t !== void 0 || i !== void 0) {
3745
3716
  const s = i !== void 0 ? { ...t ?? {}, ...i } : t;
3746
3717
  if (i !== void 0 && t !== void 0) {
@@ -3749,10 +3720,20 @@ class hs {
3749
3720
  );
3750
3721
  o.length > 0 && C.warn(`Viewer settings override active: ${o.join(", ")}`);
3751
3722
  }
3752
- this.ui.applyViewerSettings(s), this.annotationsApi.setEnabled(s.annotations !== !1);
3723
+ this.ui.applyViewerSettings(s), this.echoAnnotationsDifference(t?.annotations, s.annotations);
3753
3724
  }
3754
3725
  this.cameraPositionApi.applyLimits(e.cameraLimits);
3755
3726
  }
3727
+ /**
3728
+ * The difference echo: the viewer already applied the app-config mode
3729
+ * itself, so the client only speaks up when the merged mode (config plus
3730
+ * integrator override) differs from what CONFIG announced, in either
3731
+ * direction. Equal modes echo nothing, so a boot without overrides sends
3732
+ * no toggle at all.
3733
+ */
3734
+ echoAnnotationsDifference(e, t) {
3735
+ t === void 0 || t === e || this.annotationsApi.setEnabled(t === "show" || t === "toggle-shown");
3736
+ }
3756
3737
  /** Tell the viewer the user entered fullscreen, so it records the engagement. */
3757
3738
  trackFullscreen() {
3758
3739
  this.messenger.send({ type: c.FULLSCREEN });
@@ -3763,7 +3744,7 @@ class hs {
3763
3744
  });
3764
3745
  }
3765
3746
  createAndConnectIframe() {
3766
- const t = new ls(this.options, this.serverHost, this.iframeParams).create();
3747
+ const t = new os(this.options, this.serverHost, this.iframeParams).create();
3767
3748
  this.container = t.container, this.iframe = t.iframe, this.eventBus.attach(this.container), this.ui.attach(this.container);
3768
3749
  try {
3769
3750
  const i = new URL(this.iframe.src).origin;
@@ -3863,15 +3844,15 @@ class hs {
3863
3844
  this.readyStateTracker.clear(), this.readyCallbacks = [], this.mutationFailedCallbacks.length = 0, this.snapshotApi.clear(), this.messenger.destroy(), this.arActivation?.destroy(), this.ui.destroy(), this.container?.parentElement !== null && this.container?.parentElement !== void 0 && this.container.parentElement.removeChild(this.container), this.container = void 0, this.iframe = void 0;
3864
3845
  }
3865
3846
  }
3866
- const ms = "ar.virtualdisplay.io";
3867
- function ps(n) {
3868
- const e = new URL(`https://${ms}/go`);
3847
+ const ds = "ar.virtualdisplay.io";
3848
+ function hs(n) {
3849
+ const e = new URL(`https://${ds}/go`);
3869
3850
  return n.sessionId !== void 0 ? e.searchParams.set("session", n.sessionId) : n.app !== void 0 ? e.searchParams.set("app", n.app) : n.license !== void 0 && n.model !== void 0 && (e.searchParams.set("license", n.license), e.searchParams.set("model", n.model)), e.toString();
3870
3851
  }
3871
- const fs = 1500;
3872
- class gs {
3852
+ const ms = 1500;
3853
+ class ps {
3873
3854
  options;
3874
- qrModal = new Li();
3855
+ qrModal = new Ti();
3875
3856
  /** The viewer's tracking session id, once the engine announces it (SESSION). */
3876
3857
  sessionId;
3877
3858
  /** Callbacks waiting on the SESSION message, resolved (or timed out) exactly once each. */
@@ -3893,7 +3874,7 @@ class gs {
3893
3874
  }
3894
3875
  /** The AR button handler: mobile activates AR in the engine, desktop shows the hand-off QR. */
3895
3876
  activate() {
3896
- if (ut()) {
3877
+ if (dt()) {
3897
3878
  this.options.send({ type: c.AR_ACTIVATE });
3898
3879
  return;
3899
3880
  }
@@ -3917,7 +3898,7 @@ class gs {
3917
3898
  const e = await this.waitForSessionId();
3918
3899
  if (this.destroyed)
3919
3900
  return;
3920
- const t = ps({
3901
+ const t = hs({
3921
3902
  sessionId: e,
3922
3903
  app: this.options.app,
3923
3904
  license: this.options.license,
@@ -3939,14 +3920,14 @@ class gs {
3939
3920
  return this.sessionId !== void 0 ? Promise.resolve(this.sessionId) : new Promise((e) => {
3940
3921
  const t = setTimeout(() => {
3941
3922
  this.pendingTimers.delete(t), e(void 0);
3942
- }, fs);
3923
+ }, ms);
3943
3924
  this.pendingTimers.add(t), this.waiters.push((i) => {
3944
3925
  this.pendingTimers.delete(t), clearTimeout(t), e(i);
3945
3926
  });
3946
3927
  });
3947
3928
  }
3948
3929
  }
3949
- class bs {
3930
+ class fs {
3950
3931
  callbacks = [];
3951
3932
  lastKnown;
3952
3933
  handleSync(e) {
@@ -3958,12 +3939,12 @@ class bs {
3958
3939
  this.callbacks.push(e), this.lastKnown !== void 0 && e(this.lastKnown);
3959
3940
  }
3960
3941
  }
3961
- class Ss extends hs {
3942
+ class vs extends us {
3962
3943
  syncStatusTracker;
3963
3944
  constructor(e) {
3964
- const t = new bs();
3945
+ const t = new fs();
3965
3946
  super(e, {
3966
- createArActivation: (i) => new gs({
3947
+ createArActivation: (i) => new ps({
3967
3948
  app: e.app,
3968
3949
  license: e.license,
3969
3950
  model: e.model,
@@ -3986,11 +3967,11 @@ export {
3986
3967
  A as ERROR_CODES,
3987
3968
  wt as Focus,
3988
3969
  Ct as Photo,
3989
- _t as Snapshot,
3970
+ kt as Snapshot,
3990
3971
  T as VD_EVENTS,
3991
- Ss as VirtualdisplayClient,
3972
+ vs as VirtualdisplayClient,
3992
3973
  g as VirtualdisplayError,
3993
3974
  mt as enableDebugMode,
3994
- vs as isDebugMode,
3975
+ gs as isDebugMode,
3995
3976
  C as logger
3996
3977
  };