@virtualdisplay.io/client 4.0.0-alpha.16 → 4.0.0-alpha.18

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.
@@ -204,7 +204,7 @@ let mt = !1, C = ht(dt("client", { isDev: !1 }));
204
204
  function Pt() {
205
205
  mt = !0, C = ht(dt("client", { isDev: !0 }));
206
206
  }
207
- function Vi() {
207
+ function ji() {
208
208
  return mt;
209
209
  }
210
210
  class Ft {
@@ -351,6 +351,7 @@ class Bt {
351
351
  }
352
352
  const c = {
353
353
  HANDSHAKE: "handshake",
354
+ SESSION: "session",
354
355
  MUTATION: "mutation",
355
356
  STATE: "state",
356
357
  LOADING_INDICATOR: "loading_indicator",
@@ -358,6 +359,7 @@ const c = {
358
359
  SNAPSHOT: "snapshot",
359
360
  MAPPING: "mapping",
360
361
  AR_ACTIVATE: "ar_activate",
362
+ FULLSCREEN: "fullscreen",
361
363
  CONFIG: "config",
362
364
  ANNOTATION_PLACE_MODE: "annotation_place_mode",
363
365
  ANNOTATION_PLACED: "annotation_placed",
@@ -380,46 +382,50 @@ function Ht(n) {
380
382
  return typeof t.target == "string" ? !1 : typeof t.type == "string" && jt.has(t.type);
381
383
  }
382
384
  function Gt(n) {
383
- const t = k(n);
385
+ const t = w(n);
384
386
  return t !== null && t.type === c.HANDSHAKE;
385
387
  }
386
388
  function qt(n) {
387
- const t = k(n);
388
- return t !== null && t.type === c.MUTATION && Array.isArray(t.results);
389
+ const t = w(n);
390
+ return t !== null && t.type === c.SESSION && typeof t.sessionId == "string";
389
391
  }
390
392
  function Zt(n) {
391
- const t = k(n);
392
- return t !== null && t.type === c.SNAPSHOT && ("data" in t || "error" in t);
393
+ const t = w(n);
394
+ return t !== null && t.type === c.MUTATION && Array.isArray(t.results);
393
395
  }
394
396
  function Wt(n) {
395
- const t = k(n);
396
- return t !== null && t.type === c.CAMERA && Array.isArray(t.transforms);
397
+ const t = w(n);
398
+ return t !== null && t.type === c.SNAPSHOT && ("data" in t || "error" in t);
397
399
  }
398
400
  function Yt(n) {
399
- const t = k(n);
400
- return t !== null && t.type === c.MAPPING && Array.isArray(t.attributes);
401
+ const t = w(n);
402
+ return t !== null && t.type === c.CAMERA && Array.isArray(t.transforms);
401
403
  }
402
404
  function Xt(n) {
403
- const t = k(n);
404
- return t !== null && t.type === c.LOADING_INDICATOR && typeof t.progress == "number";
405
+ const t = w(n);
406
+ return t !== null && t.type === c.MAPPING && Array.isArray(t.attributes);
405
407
  }
406
408
  function Kt(n) {
407
- const t = k(n);
408
- return t !== null && t.type === c.CONFIG && typeof t.viewerSettings == "object";
409
+ const t = w(n);
410
+ return t !== null && t.type === c.LOADING_INDICATOR && typeof t.progress == "number";
409
411
  }
410
412
  function Qt(n) {
411
- const t = k(n);
412
- return t !== null && t.type === c.ANNOTATION_PLACED && typeof t.position == "object" && t.position !== null;
413
+ const t = w(n);
414
+ return t !== null && t.type === c.CONFIG && typeof t.viewerSettings == "object";
413
415
  }
414
416
  function Jt(n) {
415
- const t = k(n);
416
- return t !== null && t.type === c.FOCUS && typeof t.state == "string";
417
+ const t = w(n);
418
+ return t !== null && t.type === c.ANNOTATION_PLACED && typeof t.position == "object" && t.position !== null;
417
419
  }
418
420
  function te(n) {
419
- const t = k(n);
421
+ const t = w(n);
422
+ return t !== null && t.type === c.FOCUS && typeof t.state == "string";
423
+ }
424
+ function ee(n) {
425
+ const t = w(n);
420
426
  return t !== null && t.type === c.PRICING && typeof t.pricing == "object" && t.pricing !== null;
421
427
  }
422
- function k(n) {
428
+ function w(n) {
423
429
  return typeof n != "object" || n === null ? null : n;
424
430
  }
425
431
  class K {
@@ -469,7 +475,7 @@ class K {
469
475
  this.pending.length = 0;
470
476
  }
471
477
  }
472
- class ee {
478
+ class ne {
473
479
  constructor(t, e) {
474
480
  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();
475
481
  }
@@ -578,7 +584,7 @@ class ee {
578
584
  });
579
585
  }
580
586
  }
581
- class ne {
587
+ class ie {
582
588
  constructor(t, e) {
583
589
  this.send = t, this.onMutationFailed = e;
584
590
  }
@@ -657,7 +663,7 @@ class ne {
657
663
  this.pendingCallbacks.length = 0;
658
664
  }
659
665
  }
660
- let ie = class {
666
+ let oe = class {
661
667
  constructor(t) {
662
668
  this.send = t;
663
669
  }
@@ -720,7 +726,7 @@ let ie = class {
720
726
  this.send(t);
721
727
  }
722
728
  };
723
- class oe {
729
+ class se {
724
730
  state;
725
731
  limitsState;
726
732
  changeCallbacks = [];
@@ -808,7 +814,7 @@ class oe {
808
814
  }
809
815
  }
810
816
  }
811
- class se {
817
+ class re {
812
818
  constructor(t, e) {
813
819
  this.send = t, this.dispatch = e;
814
820
  }
@@ -852,20 +858,20 @@ class se {
852
858
  this.dispatch(e);
853
859
  }
854
860
  }
855
- function re(n, t) {
856
- const e = n.filter((s) => ae(s, t));
861
+ function ae(n, t) {
862
+ const e = n.filter((s) => le(s, t));
857
863
  if (e.length === 0)
858
864
  return;
859
865
  const i = Math.max(...e.map(Q)), o = e.filter((s) => Q(s) === i);
860
866
  return o.length === 1 ? o[0] : void 0;
861
867
  }
862
- function ae(n, t) {
868
+ function le(n, t) {
863
869
  return Object.entries(n.attributes).every(([e, i]) => t[e] === i);
864
870
  }
865
871
  function Q(n) {
866
872
  return Object.keys(n.attributes).length;
867
873
  }
868
- class le {
874
+ class ce {
869
875
  constructor(t, e) {
870
876
  this.dispatchChange = t, this.dispatchSubmit = e;
871
877
  }
@@ -975,7 +981,7 @@ class le {
975
981
  resolve() {
976
982
  if (this.pricing === void 0)
977
983
  return;
978
- const t = re(this.pricing.rules, this.selection);
984
+ const t = ae(this.pricing.rules, this.selection);
979
985
  if (!(t === void 0 || t.availability === Vt.HIDDEN))
980
986
  return {
981
987
  attributes: { ...this.selection },
@@ -986,7 +992,7 @@ class le {
986
992
  };
987
993
  }
988
994
  }
989
- class ce {
995
+ class ue {
990
996
  constructor(t) {
991
997
  this.filename = t;
992
998
  }
@@ -1040,7 +1046,7 @@ class ce {
1040
1046
  }
1041
1047
  }
1042
1048
  const J = 3e4;
1043
- class ue {
1049
+ class de {
1044
1050
  constructor(t) {
1045
1051
  this.send = t;
1046
1052
  }
@@ -1056,7 +1062,7 @@ class ue {
1056
1062
  */
1057
1063
  take(t) {
1058
1064
  this.validateFilename(t), C.debug("Taking snapshot", { filename: t });
1059
- const e = new ce(t), i = setTimeout(() => {
1065
+ const e = new ue(t), i = setTimeout(() => {
1060
1066
  this.pendingPhotos.delete(t), C.warn("Snapshot timed out", { filename: t }), e.fail(new f(
1061
1067
  `Snapshot timed out: the viewer did not respond within ${J}ms`,
1062
1068
  A.SNAPSHOT_FAILED
@@ -1127,7 +1133,7 @@ class ue {
1127
1133
  );
1128
1134
  }
1129
1135
  }
1130
- class de {
1136
+ class he {
1131
1137
  container = null;
1132
1138
  attach(t) {
1133
1139
  this.container = t;
@@ -1148,14 +1154,14 @@ class de {
1148
1154
  };
1149
1155
  }
1150
1156
  }
1151
- const he = {}, me = "en", pt = (
1157
+ const me = {}, pe = "en", pt = (
1152
1158
  /** @type {const} */
1153
1159
  ["en", "nl", "de"]
1154
1160
  ), W = [
1155
1161
  "baseLocale"
1156
1162
  ], tt = [];
1157
1163
  let et, nt;
1158
- function pe(n) {
1164
+ function fe(n) {
1159
1165
  if (tt.length === 0)
1160
1166
  return;
1161
1167
  const t = typeof n == "string" ? n : n.href;
@@ -1164,14 +1170,14 @@ function pe(n) {
1164
1170
  const e = new URL(t, "http://dummy.com");
1165
1171
  let i;
1166
1172
  for (const o of tt)
1167
- if (new he(o.match, e.href).exec(e.href)) {
1173
+ if (new me(o.match, e.href).exec(e.href)) {
1168
1174
  i = o;
1169
1175
  break;
1170
1176
  }
1171
1177
  return et = t, nt = i, i;
1172
1178
  }
1173
1179
  function ft(n) {
1174
- const t = pe(n);
1180
+ const t = fe(n);
1175
1181
  return t && t.exclude !== !0 && Array.isArray(t.strategy) ? t.strategy : W;
1176
1182
  }
1177
1183
  const q = typeof window > "u";
@@ -1182,16 +1188,16 @@ globalThis.__paraglide.ssr ?? {};
1182
1188
  let it = !1, h = () => {
1183
1189
  let n = W;
1184
1190
  !q && typeof window < "u" && window.location?.href && (n = ft(window.location.href));
1185
- const t = fe(n);
1191
+ const t = ge(n);
1186
1192
  if (t)
1187
1193
  return it || (it = !0, gt(t, { reload: !1 })), t;
1188
1194
  throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
1189
1195
  };
1190
- function fe(n, t) {
1196
+ function ge(n, t) {
1191
1197
  let e;
1192
1198
  for (const i of n) {
1193
1199
  if (i === "baseLocale")
1194
- e = me;
1200
+ e = pe;
1195
1201
  else if (vt(i) && I.has(i)) {
1196
1202
  const s = I.get(i);
1197
1203
  if (s) {
@@ -1199,7 +1205,7 @@ function fe(n, t) {
1199
1205
  if (r instanceof Promise)
1200
1206
  continue;
1201
1207
  if (r !== void 0)
1202
- return be(r);
1208
+ return ve(r);
1203
1209
  }
1204
1210
  }
1205
1211
  const o = bt(e);
@@ -1207,7 +1213,7 @@ function fe(n, t) {
1207
1213
  return o;
1208
1214
  }
1209
1215
  }
1210
- const ge = (n) => {
1216
+ const be = (n) => {
1211
1217
  window.location.reload();
1212
1218
  };
1213
1219
  let gt = (n, t) => {
@@ -1236,7 +1242,7 @@ let gt = (n, t) => {
1236
1242
  }
1237
1243
  }
1238
1244
  const r = () => {
1239
- !q && e.reload && window.location && n !== i && ge();
1245
+ !q && e.reload && window.location && n !== i && be();
1240
1246
  };
1241
1247
  if (o.length)
1242
1248
  return Promise.all(o).then(() => {
@@ -1252,7 +1258,7 @@ function bt(n) {
1252
1258
  if (e.toLowerCase() === t)
1253
1259
  return e;
1254
1260
  }
1255
- function be(n) {
1261
+ function ve(n) {
1256
1262
  const t = bt(n);
1257
1263
  if (t)
1258
1264
  return t;
@@ -1262,163 +1268,163 @@ const I = /* @__PURE__ */ new Map();
1262
1268
  function vt(n) {
1263
1269
  return typeof n == "string" && /^custom-[A-Za-z0-9_-]+$/.test(n);
1264
1270
  }
1265
- const ve = (
1271
+ const ye = (
1266
1272
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1267
1273
  () => (
1268
1274
  /** @type {LocalizedString} */
1269
1275
  "Activate AR"
1270
1276
  )
1271
- ), ye = (
1277
+ ), _e = (
1272
1278
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1273
1279
  () => (
1274
1280
  /** @type {LocalizedString} */
1275
1281
  "AR activeren"
1276
1282
  )
1277
- ), _e = (
1283
+ ), Ce = (
1278
1284
  /** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
1279
1285
  () => (
1280
1286
  /** @type {LocalizedString} */
1281
1287
  "AR aktivieren"
1282
1288
  )
1283
- ), Ce = (
1289
+ ), we = (
1284
1290
  /** @type {((inputs?: Controls_Ar_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Ar_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1285
1291
  ((n = {}, t = {}) => {
1286
1292
  const e = t.locale ?? h();
1287
- return e === "en" ? ve() : e === "nl" ? ye() : _e();
1293
+ return e === "en" ? ye() : e === "nl" ? _e() : Ce();
1288
1294
  })
1289
- ), we = (
1295
+ ), ke = (
1290
1296
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1291
1297
  () => (
1292
1298
  /** @type {LocalizedString} */
1293
1299
  "Scan to view in AR"
1294
1300
  )
1295
- ), ke = (
1301
+ ), Se = (
1296
1302
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1297
1303
  () => (
1298
1304
  /** @type {LocalizedString} */
1299
1305
  "Scan om in AR te bekijken"
1300
1306
  )
1301
- ), Se = (
1307
+ ), Ae = (
1302
1308
  /** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
1303
1309
  () => (
1304
1310
  /** @type {LocalizedString} */
1305
1311
  "Scannen für AR-Ansicht"
1306
1312
  )
1307
- ), Ae = (
1313
+ ), Ee = (
1308
1314
  /** @type {((inputs?: Controls_Qr_Modaltitle1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaltitle1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1309
1315
  ((n = {}, t = {}) => {
1310
1316
  const e = t.locale ?? h();
1311
- return e === "en" ? we() : e === "nl" ? ke() : Se();
1317
+ return e === "en" ? ke() : e === "nl" ? Se() : Ae();
1312
1318
  })
1313
- ), Ee = (
1319
+ ), xe = (
1314
1320
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1315
1321
  () => (
1316
1322
  /** @type {LocalizedString} */
1317
1323
  "Use your smartphone camera to scan this QR code"
1318
1324
  )
1319
- ), xe = (
1325
+ ), Te = (
1320
1326
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1321
1327
  () => (
1322
1328
  /** @type {LocalizedString} */
1323
1329
  "Gebruik de camera van je smartphone om deze QR-code te scannen"
1324
1330
  )
1325
- ), Te = (
1331
+ ), Re = (
1326
1332
  /** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
1327
1333
  () => (
1328
1334
  /** @type {LocalizedString} */
1329
- "Verwenden Sie die Kamera Ihres Smartphones, um diesen QR-Code zu scannen"
1335
+ "Verwende die Kamera deines Smartphones, um diesen QR-Code zu scannen"
1330
1336
  )
1331
- ), Re = (
1337
+ ), Oe = (
1332
1338
  /** @type {((inputs?: Controls_Qr_Modaldescription1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaldescription1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1333
1339
  ((n = {}, t = {}) => {
1334
1340
  const e = t.locale ?? h();
1335
- return e === "en" ? Ee() : e === "nl" ? xe() : Te();
1341
+ return e === "en" ? xe() : e === "nl" ? Te() : Re();
1336
1342
  })
1337
- ), Oe = (
1343
+ ), Ne = (
1338
1344
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
1339
1345
  () => (
1340
1346
  /** @type {LocalizedString} */
1341
1347
  "Your phone will open the 3D model in AR mode."
1342
1348
  )
1343
- ), Ne = (
1349
+ ), Ie = (
1344
1350
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
1345
1351
  () => (
1346
1352
  /** @type {LocalizedString} */
1347
1353
  "Je telefoon opent het 3D-model in AR-modus."
1348
1354
  )
1349
- ), Ie = (
1355
+ ), Le = (
1350
1356
  /** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
1351
1357
  () => (
1352
1358
  /** @type {LocalizedString} */
1353
- "Das 3D-Modell wird im AR-Modus Ihres Telefons geöffnet"
1359
+ "Dein Telefon öffnet das 3D-Modell im AR-Modus."
1354
1360
  )
1355
- ), Le = (
1361
+ ), Me = (
1356
1362
  /** @type {((inputs?: Controls_Qr_Modalinstructions1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modalinstructions1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1357
1363
  ((n = {}, t = {}) => {
1358
1364
  const e = t.locale ?? h();
1359
- return e === "en" ? Oe() : e === "nl" ? Ne() : Ie();
1365
+ return e === "en" ? Ne() : e === "nl" ? Ie() : Le();
1360
1366
  })
1361
- ), Me = (
1367
+ ), ze = (
1362
1368
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1363
1369
  () => (
1364
1370
  /** @type {LocalizedString} */
1365
1371
  "Close"
1366
1372
  )
1367
- ), ze = (
1373
+ ), Pe = (
1368
1374
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1369
1375
  () => (
1370
1376
  /** @type {LocalizedString} */
1371
1377
  "Sluiten"
1372
1378
  )
1373
- ), Pe = (
1379
+ ), Fe = (
1374
1380
  /** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
1375
1381
  () => (
1376
1382
  /** @type {LocalizedString} */
1377
1383
  "Schließen"
1378
1384
  )
1379
- ), Fe = (
1385
+ ), $e = (
1380
1386
  /** @type {((inputs?: Controls_Qr_Closebutton1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Closebutton1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1381
1387
  ((n = {}, t = {}) => {
1382
1388
  const e = t.locale ?? h();
1383
- return e === "en" ? Me() : e === "nl" ? ze() : Pe();
1389
+ return e === "en" ? ze() : e === "nl" ? Pe() : Fe();
1384
1390
  })
1385
- ), $e = (
1391
+ ), De = (
1386
1392
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1387
1393
  () => (
1388
1394
  /** @type {LocalizedString} */
1389
1395
  "Fullscreen"
1390
1396
  )
1391
- ), De = (
1397
+ ), Be = (
1392
1398
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1393
1399
  () => (
1394
1400
  /** @type {LocalizedString} */
1395
1401
  "Volledig scherm"
1396
1402
  )
1397
- ), Be = (
1403
+ ), Ue = (
1398
1404
  /** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
1399
1405
  () => (
1400
1406
  /** @type {LocalizedString} */
1401
1407
  "Vollbild"
1402
1408
  )
1403
- ), Ue = (
1409
+ ), Ve = (
1404
1410
  /** @type {((inputs?: Controls_Fullscreen_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Fullscreen_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1405
1411
  ((n = {}, t = {}) => {
1406
1412
  const e = t.locale ?? h();
1407
- return e === "en" ? $e() : e === "nl" ? De() : Be();
1413
+ return e === "en" ? De() : e === "nl" ? Be() : Ue();
1408
1414
  })
1409
- ), Ve = (
1415
+ ), je = (
1410
1416
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1411
1417
  () => (
1412
1418
  /** @type {LocalizedString} */
1413
1419
  "Downloading"
1414
1420
  )
1415
- ), je = (
1421
+ ), He = (
1416
1422
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1417
1423
  () => (
1418
1424
  /** @type {LocalizedString} */
1419
1425
  "Downloaden"
1420
1426
  )
1421
- ), He = (
1427
+ ), Ge = (
1422
1428
  /** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
1423
1429
  () => (
1424
1430
  /** @type {LocalizedString} */
@@ -1428,346 +1434,346 @@ const ve = (
1428
1434
  /** @type {((inputs?: Loading_Downloadingshort1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_Downloadingshort1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1429
1435
  ((n = {}, t = {}) => {
1430
1436
  const e = t.locale ?? h();
1431
- return e === "en" ? Ve() : e === "nl" ? je() : He();
1437
+ return e === "en" ? je() : e === "nl" ? He() : Ge();
1432
1438
  })
1433
- ), Ge = (
1439
+ ), qe = (
1434
1440
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1435
1441
  () => (
1436
1442
  /** @type {LocalizedString} */
1437
1443
  "Rendering"
1438
1444
  )
1439
- ), qe = (
1445
+ ), Ze = (
1440
1446
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1441
1447
  () => (
1442
1448
  /** @type {LocalizedString} */
1443
1449
  "Renderen"
1444
1450
  )
1445
- ), Ze = (
1451
+ ), We = (
1446
1452
  /** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
1447
1453
  () => (
1448
1454
  /** @type {LocalizedString} */
1449
1455
  "Rendern"
1450
1456
  )
1451
- ), We = (
1457
+ ), Ye = (
1452
1458
  /** @type {((inputs?: Loading_RenderingInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_RenderingInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1453
1459
  ((n = {}, t = {}) => {
1454
1460
  const e = t.locale ?? h();
1455
- return e === "en" ? Ge() : e === "nl" ? qe() : Ze();
1461
+ return e === "en" ? qe() : e === "nl" ? Ze() : We();
1456
1462
  })
1457
- ), Ye = (
1463
+ ), Xe = (
1458
1464
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1459
1465
  () => (
1460
1466
  /** @type {LocalizedString} */
1461
1467
  "Screenshot"
1462
1468
  )
1463
- ), Xe = (
1469
+ ), Ke = (
1464
1470
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1465
1471
  () => (
1466
1472
  /** @type {LocalizedString} */
1467
1473
  "Screenshot"
1468
1474
  )
1469
- ), Ke = (
1475
+ ), Qe = (
1470
1476
  /** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
1471
1477
  () => (
1472
1478
  /** @type {LocalizedString} */
1473
1479
  "Screenshot"
1474
1480
  )
1475
- ), Qe = (
1481
+ ), Je = (
1476
1482
  /** @type {((inputs?: Controls_Screenshot_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Screenshot_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1477
1483
  ((n = {}, t = {}) => {
1478
1484
  const e = t.locale ?? h();
1479
- return e === "en" ? Ye() : e === "nl" ? Xe() : Ke();
1485
+ return e === "en" ? Xe() : e === "nl" ? Ke() : Qe();
1480
1486
  })
1481
- ), Je = (
1487
+ ), tn = (
1482
1488
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1483
1489
  () => (
1484
1490
  /** @type {LocalizedString} */
1485
1491
  "Configure"
1486
1492
  )
1487
- ), tn = (
1493
+ ), en = (
1488
1494
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1489
1495
  () => (
1490
1496
  /** @type {LocalizedString} */
1491
1497
  "Configureren"
1492
1498
  )
1493
- ), en = (
1499
+ ), nn = (
1494
1500
  /** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
1495
1501
  () => (
1496
1502
  /** @type {LocalizedString} */
1497
1503
  "Konfigurieren"
1498
1504
  )
1499
- ), nn = (
1505
+ ), on = (
1500
1506
  /** @type {((inputs?: Controls_Configurator_OpenInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_OpenInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1501
1507
  ((n = {}, t = {}) => {
1502
1508
  const e = t.locale ?? h();
1503
- return e === "en" ? Je() : e === "nl" ? tn() : en();
1509
+ return e === "en" ? tn() : e === "nl" ? en() : nn();
1504
1510
  })
1505
- ), on = (
1511
+ ), sn = (
1506
1512
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1507
1513
  () => (
1508
1514
  /** @type {LocalizedString} */
1509
1515
  "Close"
1510
1516
  )
1511
- ), sn = (
1517
+ ), rn = (
1512
1518
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1513
1519
  () => (
1514
1520
  /** @type {LocalizedString} */
1515
1521
  "Sluiten"
1516
1522
  )
1517
- ), rn = (
1523
+ ), an = (
1518
1524
  /** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
1519
1525
  () => (
1520
1526
  /** @type {LocalizedString} */
1521
1527
  "Schließen"
1522
1528
  )
1523
- ), an = (
1529
+ ), ln = (
1524
1530
  /** @type {((inputs?: Controls_Configurator_CloseInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_CloseInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1525
1531
  ((n = {}, t = {}) => {
1526
1532
  const e = t.locale ?? h();
1527
- return e === "en" ? on() : e === "nl" ? sn() : rn();
1533
+ return e === "en" ? sn() : e === "nl" ? rn() : an();
1528
1534
  })
1529
- ), ln = (
1535
+ ), cn = (
1530
1536
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1531
1537
  () => (
1532
1538
  /** @type {LocalizedString} */
1533
1539
  "Reset camera"
1534
1540
  )
1535
- ), cn = (
1541
+ ), un = (
1536
1542
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1537
1543
  () => (
1538
1544
  /** @type {LocalizedString} */
1539
1545
  "Camera resetten"
1540
1546
  )
1541
- ), un = (
1547
+ ), dn = (
1542
1548
  /** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
1543
1549
  () => (
1544
1550
  /** @type {LocalizedString} */
1545
1551
  "Kamera zurücksetzen"
1546
1552
  )
1547
- ), dn = (
1553
+ ), hn = (
1548
1554
  /** @type {((inputs?: Controls_Camera_ResetInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_ResetInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1549
1555
  ((n = {}, t = {}) => {
1550
1556
  const e = t.locale ?? h();
1551
- return e === "en" ? ln() : e === "nl" ? cn() : un();
1557
+ return e === "en" ? cn() : e === "nl" ? un() : dn();
1552
1558
  })
1553
- ), hn = (
1559
+ ), mn = (
1554
1560
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1555
1561
  () => (
1556
1562
  /** @type {LocalizedString} */
1557
1563
  "Zoom in"
1558
1564
  )
1559
- ), mn = (
1565
+ ), pn = (
1560
1566
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1561
1567
  () => (
1562
1568
  /** @type {LocalizedString} */
1563
1569
  "Inzoomen"
1564
1570
  )
1565
- ), pn = (
1571
+ ), fn = (
1566
1572
  /** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
1567
1573
  () => (
1568
1574
  /** @type {LocalizedString} */
1569
1575
  "Hineinzoomen"
1570
1576
  )
1571
- ), fn = (
1577
+ ), gn = (
1572
1578
  /** @type {((inputs?: Controls_Camera_Zoomin1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomin1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1573
1579
  ((n = {}, t = {}) => {
1574
1580
  const e = t.locale ?? h();
1575
- return e === "en" ? hn() : e === "nl" ? mn() : pn();
1581
+ return e === "en" ? mn() : e === "nl" ? pn() : fn();
1576
1582
  })
1577
- ), gn = (
1583
+ ), bn = (
1578
1584
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1579
1585
  () => (
1580
1586
  /** @type {LocalizedString} */
1581
1587
  "Zoom out"
1582
1588
  )
1583
- ), bn = (
1589
+ ), vn = (
1584
1590
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1585
1591
  () => (
1586
1592
  /** @type {LocalizedString} */
1587
1593
  "Uitzoomen"
1588
1594
  )
1589
- ), vn = (
1595
+ ), yn = (
1590
1596
  /** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
1591
1597
  () => (
1592
1598
  /** @type {LocalizedString} */
1593
1599
  "Herauszoomen"
1594
1600
  )
1595
- ), yn = (
1601
+ ), _n = (
1596
1602
  /** @type {((inputs?: Controls_Camera_Zoomout1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomout1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1597
1603
  ((n = {}, t = {}) => {
1598
1604
  const e = t.locale ?? h();
1599
- return e === "en" ? gn() : e === "nl" ? bn() : vn();
1605
+ return e === "en" ? bn() : e === "nl" ? vn() : yn();
1600
1606
  })
1601
- ), _n = (
1607
+ ), Cn = (
1602
1608
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1603
1609
  () => (
1604
1610
  /** @type {LocalizedString} */
1605
1611
  "Rotate left"
1606
1612
  )
1607
- ), Cn = (
1613
+ ), wn = (
1608
1614
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1609
1615
  () => (
1610
1616
  /** @type {LocalizedString} */
1611
1617
  "Naar links draaien"
1612
1618
  )
1613
- ), wn = (
1619
+ ), kn = (
1614
1620
  /** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
1615
1621
  () => (
1616
1622
  /** @type {LocalizedString} */
1617
1623
  "Nach links drehen"
1618
1624
  )
1619
- ), kn = (
1625
+ ), Sn = (
1620
1626
  /** @type {((inputs?: Controls_Camera_Rotateleft1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateleft1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1621
1627
  ((n = {}, t = {}) => {
1622
1628
  const e = t.locale ?? h();
1623
- return e === "en" ? _n() : e === "nl" ? Cn() : wn();
1629
+ return e === "en" ? Cn() : e === "nl" ? wn() : kn();
1624
1630
  })
1625
- ), Sn = (
1631
+ ), An = (
1626
1632
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1627
1633
  () => (
1628
1634
  /** @type {LocalizedString} */
1629
1635
  "Rotate right"
1630
1636
  )
1631
- ), An = (
1637
+ ), En = (
1632
1638
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1633
1639
  () => (
1634
1640
  /** @type {LocalizedString} */
1635
1641
  "Naar rechts draaien"
1636
1642
  )
1637
- ), En = (
1643
+ ), xn = (
1638
1644
  /** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
1639
1645
  () => (
1640
1646
  /** @type {LocalizedString} */
1641
1647
  "Nach rechts drehen"
1642
1648
  )
1643
- ), xn = (
1649
+ ), Tn = (
1644
1650
  /** @type {((inputs?: Controls_Camera_Rotateright1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateright1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1645
1651
  ((n = {}, t = {}) => {
1646
1652
  const e = t.locale ?? h();
1647
- return e === "en" ? Sn() : e === "nl" ? An() : En();
1653
+ return e === "en" ? An() : e === "nl" ? En() : xn();
1648
1654
  })
1649
- ), Tn = (
1655
+ ), Rn = (
1650
1656
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1651
1657
  () => (
1652
1658
  /** @type {LocalizedString} */
1653
1659
  "Tilt up"
1654
1660
  )
1655
- ), Rn = (
1661
+ ), On = (
1656
1662
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1657
1663
  () => (
1658
1664
  /** @type {LocalizedString} */
1659
1665
  "Omhoog kantelen"
1660
1666
  )
1661
- ), On = (
1667
+ ), Nn = (
1662
1668
  /** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
1663
1669
  () => (
1664
1670
  /** @type {LocalizedString} */
1665
1671
  "Nach oben kippen"
1666
1672
  )
1667
- ), Nn = (
1673
+ ), In = (
1668
1674
  /** @type {((inputs?: Controls_Camera_Tiltup1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltup1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1669
1675
  ((n = {}, t = {}) => {
1670
1676
  const e = t.locale ?? h();
1671
- return e === "en" ? Tn() : e === "nl" ? Rn() : On();
1677
+ return e === "en" ? Rn() : e === "nl" ? On() : Nn();
1672
1678
  })
1673
- ), In = (
1679
+ ), Ln = (
1674
1680
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1675
1681
  () => (
1676
1682
  /** @type {LocalizedString} */
1677
1683
  "Tilt down"
1678
1684
  )
1679
- ), Ln = (
1685
+ ), Mn = (
1680
1686
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1681
1687
  () => (
1682
1688
  /** @type {LocalizedString} */
1683
1689
  "Omlaag kantelen"
1684
1690
  )
1685
- ), Mn = (
1691
+ ), zn = (
1686
1692
  /** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
1687
1693
  () => (
1688
1694
  /** @type {LocalizedString} */
1689
1695
  "Nach unten kippen"
1690
1696
  )
1691
- ), zn = (
1697
+ ), Pn = (
1692
1698
  /** @type {((inputs?: Controls_Camera_Tiltdown1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltdown1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
1693
1699
  ((n = {}, t = {}) => {
1694
1700
  const e = t.locale ?? h();
1695
- return e === "en" ? In() : e === "nl" ? Ln() : Mn();
1701
+ return e === "en" ? Ln() : e === "nl" ? Mn() : zn();
1696
1702
  })
1697
- ), Pn = (
1703
+ ), Fn = (
1698
1704
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1699
1705
  () => (
1700
1706
  /** @type {LocalizedString} */
1701
1707
  "Working…"
1702
1708
  )
1703
- ), Fn = (
1709
+ ), $n = (
1704
1710
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1705
1711
  () => (
1706
1712
  /** @type {LocalizedString} */
1707
1713
  "Bezig…"
1708
1714
  )
1709
- ), $n = (
1715
+ ), Dn = (
1710
1716
  /** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
1711
1717
  () => (
1712
1718
  /** @type {LocalizedString} */
1713
1719
  "Läuft…"
1714
1720
  )
1715
- ), Dn = (
1721
+ ), Bn = (
1716
1722
  /** @type {((inputs?: Commerce_Submit_BusyInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_BusyInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1717
1723
  ((n = {}, t = {}) => {
1718
1724
  const e = t.locale ?? h();
1719
- return e === "en" ? Pn() : e === "nl" ? Fn() : $n();
1725
+ return e === "en" ? Fn() : e === "nl" ? $n() : Dn();
1720
1726
  })
1721
- ), Bn = (
1727
+ ), Un = (
1722
1728
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1723
1729
  () => (
1724
1730
  /** @type {LocalizedString} */
1725
1731
  "Done"
1726
1732
  )
1727
- ), Un = (
1733
+ ), Vn = (
1728
1734
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1729
1735
  () => (
1730
1736
  /** @type {LocalizedString} */
1731
1737
  "Gelukt"
1732
1738
  )
1733
- ), Vn = (
1739
+ ), jn = (
1734
1740
  /** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
1735
1741
  () => (
1736
1742
  /** @type {LocalizedString} */
1737
1743
  "Fertig"
1738
1744
  )
1739
- ), jn = (
1745
+ ), Hn = (
1740
1746
  /** @type {((inputs?: Commerce_Submit_SuccessInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_SuccessInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1741
1747
  ((n = {}, t = {}) => {
1742
1748
  const e = t.locale ?? h();
1743
- return e === "en" ? Bn() : e === "nl" ? Un() : Vn();
1749
+ return e === "en" ? Un() : e === "nl" ? Vn() : jn();
1744
1750
  })
1745
- ), Hn = (
1751
+ ), Gn = (
1746
1752
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1747
1753
  () => (
1748
1754
  /** @type {LocalizedString} */
1749
1755
  "Failed"
1750
1756
  )
1751
- ), Gn = (
1757
+ ), qn = (
1752
1758
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1753
1759
  () => (
1754
1760
  /** @type {LocalizedString} */
1755
1761
  "Mislukt"
1756
1762
  )
1757
- ), qn = (
1763
+ ), Zn = (
1758
1764
  /** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
1759
1765
  () => (
1760
1766
  /** @type {LocalizedString} */
1761
1767
  "Fehlgeschlagen"
1762
1768
  )
1763
- ), Zn = (
1769
+ ), Wn = (
1764
1770
  /** @type {((inputs?: Commerce_Submit_FailedInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_FailedInputs, { locale?: "en" | "nl" | "de" }, {}>} */
1765
1771
  ((n = {}, t = {}) => {
1766
1772
  const e = t.locale ?? h();
1767
- return e === "en" ? Hn() : e === "nl" ? Gn() : qn();
1773
+ return e === "en" ? Gn() : e === "nl" ? qn() : Zn();
1768
1774
  })
1769
1775
  );
1770
- const Wn = {
1776
+ const Yn = {
1771
1777
  xmlns: "http://www.w3.org/2000/svg",
1772
1778
  width: 24,
1773
1779
  height: 24,
@@ -1788,12 +1794,12 @@ const _t = ([n, t, e]) => {
1788
1794
  }), i;
1789
1795
  }, Ct = (n, t = {}) => {
1790
1796
  const i = {
1791
- ...Wn,
1797
+ ...Yn,
1792
1798
  ...t
1793
1799
  };
1794
1800
  return _t(["svg", i, n]);
1795
1801
  };
1796
- const Yn = [
1802
+ const Xn = [
1797
1803
  [
1798
1804
  "path",
1799
1805
  {
@@ -1803,7 +1809,7 @@ const Yn = [
1803
1809
  ["path", { d: "m3.3 7 8.7 5 8.7-5" }],
1804
1810
  ["path", { d: "M12 22V12" }]
1805
1811
  ];
1806
- const Xn = [
1812
+ const Kn = [
1807
1813
  [
1808
1814
  "path",
1809
1815
  {
@@ -1813,26 +1819,26 @@ const Xn = [
1813
1819
  ["circle", { cx: "12", cy: "13", r: "3" }]
1814
1820
  ];
1815
1821
  const wt = [["path", { d: "m6 9 6 6 6-6" }]];
1816
- const Kn = [["path", { d: "m15 18-6-6 6-6" }]];
1817
- const Qn = [["path", { d: "m9 18 6-6-6-6" }]];
1818
- const Jn = [["path", { d: "m18 15-6-6-6 6" }]];
1819
- const ti = [
1822
+ const Qn = [["path", { d: "m15 18-6-6 6-6" }]];
1823
+ const Jn = [["path", { d: "m9 18 6-6-6-6" }]];
1824
+ const ti = [["path", { d: "m18 15-6-6-6 6" }]];
1825
+ const ei = [
1820
1826
  ["path", { d: "M15 3h6v6" }],
1821
1827
  ["path", { d: "m21 3-7 7" }],
1822
1828
  ["path", { d: "m3 21 7-7" }],
1823
1829
  ["path", { d: "M9 21H3v-6" }]
1824
1830
  ];
1825
- const ei = [
1831
+ const ni = [
1826
1832
  ["path", { d: "m14 10 7-7" }],
1827
1833
  ["path", { d: "M20 10h-6V4" }],
1828
1834
  ["path", { d: "m3 21 7-7" }],
1829
1835
  ["path", { d: "M4 14h6v6" }]
1830
1836
  ];
1831
- const ni = [
1837
+ const ii = [
1832
1838
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
1833
1839
  ["path", { d: "M3 3v5h5" }]
1834
1840
  ];
1835
- const ii = [
1841
+ const oi = [
1836
1842
  ["path", { d: "M10 5H3" }],
1837
1843
  ["path", { d: "M12 19H3" }],
1838
1844
  ["path", { d: "M14 3v4" }],
@@ -1843,17 +1849,17 @@ const ii = [
1843
1849
  ["path", { d: "M8 10v4" }],
1844
1850
  ["path", { d: "M8 12H3" }]
1845
1851
  ];
1846
- const oi = [
1852
+ const si = [
1847
1853
  ["path", { d: "M18 6 6 18" }],
1848
1854
  ["path", { d: "m6 6 12 12" }]
1849
1855
  ];
1850
- const si = [
1856
+ const ri = [
1851
1857
  ["circle", { cx: "11", cy: "11", r: "8" }],
1852
1858
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1853
1859
  ["line", { x1: "11", x2: "11", y1: "8", y2: "14" }],
1854
1860
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
1855
1861
  ];
1856
- const ri = [
1862
+ const ai = [
1857
1863
  ["circle", { cx: "11", cy: "11", r: "8" }],
1858
1864
  ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
1859
1865
  ["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
@@ -1862,19 +1868,19 @@ function y(n, { size: t = 20, strokeWidth: e = 1.75 } = {}) {
1862
1868
  return Ct(n, { width: t, height: t, "stroke-width": e });
1863
1869
  }
1864
1870
  const g = {
1865
- ar: (n) => y(Yn, n),
1866
- fullscreen: (n) => y(ti, n),
1867
- exitFullscreen: (n) => y(ei, n),
1868
- screenshot: (n) => y(Xn, n),
1869
- tiltUp: (n) => y(Jn, n),
1871
+ ar: (n) => y(Xn, n),
1872
+ fullscreen: (n) => y(ei, n),
1873
+ exitFullscreen: (n) => y(ni, n),
1874
+ screenshot: (n) => y(Kn, n),
1875
+ tiltUp: (n) => y(ti, n),
1870
1876
  tiltDown: (n) => y(wt, n),
1871
- rotateLeft: (n) => y(Kn, n),
1872
- rotateRight: (n) => y(Qn, n),
1873
- zoomIn: (n) => y(si, n),
1874
- zoomOut: (n) => y(ri, n),
1875
- reset: (n) => y(ni, n),
1876
- configurator: (n) => y(ii, n),
1877
- close: (n) => y(oi, n)
1877
+ rotateLeft: (n) => y(Qn, n),
1878
+ rotateRight: (n) => y(Jn, n),
1879
+ zoomIn: (n) => y(ri, n),
1880
+ zoomOut: (n) => y(ai, n),
1881
+ reset: (n) => y(ii, n),
1882
+ configurator: (n) => y(oi, n),
1883
+ close: (n) => y(si, n)
1878
1884
  };
1879
1885
  class b {
1880
1886
  element;
@@ -1923,7 +1929,7 @@ const m = {
1923
1929
  24: "6rem"
1924
1930
  // 96px
1925
1931
  };
1926
- class ai {
1932
+ class li {
1927
1933
  element;
1928
1934
  constructor() {
1929
1935
  this.element = document.createElement("div"), Object.assign(this.element.style, {
@@ -1936,9 +1942,9 @@ class ai {
1936
1942
  });
1937
1943
  }
1938
1944
  }
1939
- class li {
1945
+ class ci {
1940
1946
  constructor(t = {}) {
1941
- this.options = t, this.card = new ai(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1947
+ this.options = t, this.card = new li(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
1942
1948
  }
1943
1949
  options;
1944
1950
  card;
@@ -1967,7 +1973,7 @@ class li {
1967
1973
  }), t;
1968
1974
  }
1969
1975
  }
1970
- class ci {
1976
+ class ui {
1971
1977
  element;
1972
1978
  selectCallback = null;
1973
1979
  constructor(t, e, i) {
@@ -1989,7 +1995,7 @@ class ci {
1989
1995
  this.selectCallback = t;
1990
1996
  }
1991
1997
  }
1992
- class ui {
1998
+ class di {
1993
1999
  element;
1994
2000
  select;
1995
2001
  constructor(t, e, i, o, s) {
@@ -2031,8 +2037,8 @@ const _ = {
2031
2037
  medium: "500",
2032
2038
  semibold: "600"
2033
2039
  }
2034
- }, di = _.fontFamily.sans.join(", ");
2035
- class hi {
2040
+ }, hi = _.fontFamily.sans.join(", ");
2041
+ class mi {
2036
2042
  qrLib = null;
2037
2043
  dialog = null;
2038
2044
  async show(t) {
@@ -2043,28 +2049,28 @@ class hi {
2043
2049
  errorCorrectionLevel: "M",
2044
2050
  color: { dark: m.black, light: m.white }
2045
2051
  });
2046
- this.dialog = new li({ onClose: () => {
2052
+ this.dialog = new ci({ onClose: () => {
2047
2053
  this.dialog = null;
2048
2054
  } }), Object.assign(this.dialog.card.element.style, {
2049
2055
  display: "flex",
2050
2056
  flexDirection: "column",
2051
2057
  alignItems: "center",
2052
2058
  gap: a[3],
2053
- fontFamily: di
2054
- }), this.dialog.card.element.appendChild(this.createText(Ae(), {
2059
+ fontFamily: hi
2060
+ }), this.dialog.card.element.appendChild(this.createText(Ee(), {
2055
2061
  fontSize: _.fontSize.base,
2056
2062
  fontWeight: _.fontWeight.semibold,
2057
2063
  color: m.neutral[900]
2058
- })), this.dialog.card.element.appendChild(this.createText(Re(), {
2064
+ })), this.dialog.card.element.appendChild(this.createText(Oe(), {
2059
2065
  fontSize: _.fontSize.sm,
2060
2066
  color: m.neutral[600]
2061
- })), this.dialog.card.element.appendChild(this.createQrImage(e)), this.dialog.card.element.appendChild(this.createText(Le(), {
2067
+ })), this.dialog.card.element.appendChild(this.createQrImage(e)), this.dialog.card.element.appendChild(this.createText(Me(), {
2062
2068
  fontSize: _.fontSize.xs,
2063
2069
  color: m.neutral[500]
2064
2070
  }));
2065
2071
  const i = new b({
2066
2072
  variant: "outline",
2067
- label: Fe(),
2073
+ label: $e(),
2068
2074
  onClick: () => {
2069
2075
  this.hide();
2070
2076
  }
@@ -2087,7 +2093,7 @@ class hi {
2087
2093
  }), e;
2088
2094
  }
2089
2095
  }
2090
- const x = _.fontFamily.sans.join(", "), mi = `
2096
+ const x = _.fontFamily.sans.join(", "), pi = `
2091
2097
  --primary: oklch(5% 0 0);
2092
2098
  --primary-foreground: oklch(100% 0 0);
2093
2099
  --secondary: oklch(92% 0 0);
@@ -2100,8 +2106,8 @@ const x = _.fontFamily.sans.join(", "), mi = `
2100
2106
  --accent: oklch(92% 0 0);
2101
2107
  --accent-foreground: oklch(5% 0 0);
2102
2108
  --muted-foreground: oklch(44% 0 0);
2103
- `, pi = `
2104
- :root { ${mi} }
2109
+ `, fi = `
2110
+ :root { ${pi} }
2105
2111
 
2106
2112
  /* ── Button ──────────────────────────────────────────────── */
2107
2113
  .ui-btn {
@@ -2347,31 +2353,31 @@ const x = _.fontFamily.sans.join(", "), mi = `
2347
2353
  }
2348
2354
  `;
2349
2355
  let ot = !1;
2350
- function fi() {
2356
+ function gi() {
2351
2357
  if (ot || typeof document > "u")
2352
2358
  return;
2353
2359
  ot = !0;
2354
2360
  const n = document.createElement("style");
2355
- n.id = "vd-ui-vanilla", n.textContent = pi, document.head.appendChild(n);
2361
+ n.id = "vd-ui-vanilla", n.textContent = fi, document.head.appendChild(n);
2356
2362
  }
2357
2363
  function st(n) {
2358
2364
  const t = Math.max(0, Math.min(1, n));
2359
2365
  return t * t * (3 - 2 * t);
2360
2366
  }
2361
- function gi(n, t, e, i, o, s) {
2362
- 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;
2367
+ function bi(n, t, e, i, o, s) {
2368
+ 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), k = Math.sin(e), R = S * l - k * E, M = k * l + S * E, Y = 0.55;
2363
2369
  return [i + v * s * Y, o - R * s * Y, M];
2364
2370
  }
2365
- function bi(n, t, e) {
2371
+ function vi(n, t, e) {
2366
2372
  n.beginPath(), n.moveTo(t[0], t[1]), n.lineTo(e[0], e[1]), n.strokeStyle = "#000", n.lineWidth = 2, n.stroke();
2367
2373
  }
2368
- function vi(n, t, e, i, o) {
2374
+ function yi(n, t, e, i, o) {
2369
2375
  const s = t(e), r = t(i), l = [
2370
2376
  s[0] + (r[0] - s[0]) * o,
2371
2377
  s[1] + (r[1] - s[1]) * o,
2372
2378
  s[2]
2373
2379
  ];
2374
- bi(n, s, l);
2380
+ vi(n, s, l);
2375
2381
  }
2376
2382
  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 = [
2377
2383
  [z, P],
@@ -2386,8 +2392,8 @@ const z = [-1, -1, 1], P = [1, -1, 1], F = [1, -1, -1], $ = [-1, -1, -1], D = [-
2386
2392
  [B, U],
2387
2393
  [U, V],
2388
2394
  [V, D]
2389
- ], yi = 400, at = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2390
- function _i() {
2395
+ ], _i = 400, at = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2396
+ function Ci() {
2391
2397
  const n = document.createElement("div");
2392
2398
  Object.assign(n.style, {
2393
2399
  position: "absolute",
@@ -2432,7 +2438,7 @@ function _i() {
2432
2438
  fontFamily: at
2433
2439
  }), o.textContent = yt(), e.appendChild(i), e.appendChild(o), n.appendChild(t), n.appendChild(e), { overlay: n, canvas: t, pctEl: i, phaseEl: o };
2434
2440
  }
2435
- class Ci {
2441
+ class wi {
2436
2442
  overlay;
2437
2443
  canvas;
2438
2444
  ctx;
@@ -2445,9 +2451,9 @@ class Ci {
2445
2451
  visible = !1;
2446
2452
  constructor(t, e = {}) {
2447
2453
  this.startTime = performance.now();
2448
- const i = _i();
2454
+ const i = Ci();
2449
2455
  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());
2450
- const o = e.showDelay ?? yi;
2456
+ const o = e.showDelay ?? _i;
2451
2457
  this.showTimerId = setTimeout(() => {
2452
2458
  this.reveal();
2453
2459
  }, o);
@@ -2455,7 +2461,7 @@ class Ci {
2455
2461
  get loadingTexts() {
2456
2462
  return {
2457
2463
  downloading: yt(),
2458
- rendering: We()
2464
+ rendering: Ye()
2459
2465
  };
2460
2466
  }
2461
2467
  updateProgress(t, e) {
@@ -2508,20 +2514,20 @@ class Ci {
2508
2514
  return;
2509
2515
  const t = this.canvas.width / Math.min(devicePixelRatio, 2), e = this.canvas.height / Math.min(devicePixelRatio, 2), i = (performance.now() - this.startTime) / 1e3;
2510
2516
  this.ctx.fillStyle = "#fff", this.ctx.fillRect(0, 0, t, e);
2511
- 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 = rt.length;
2517
+ const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, l = 0.785, d = 0.615, u = (k) => bi(k, l, d, o, s, r), p = 6, v = i % p / p, E = rt.length;
2512
2518
  let S;
2513
2519
  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)";
2514
- for (let w = 0; w < E && !(w >= S); w++) {
2515
- const R = rt[w];
2520
+ for (let k = 0; k < E && !(k >= S); k++) {
2521
+ const R = rt[k];
2516
2522
  if (R === void 0)
2517
2523
  continue;
2518
- const M = Math.min(1, S - w);
2519
- vi(this.ctx, u, R[0], R[1], M);
2524
+ const M = Math.min(1, S - k);
2525
+ yi(this.ctx, u, R[0], R[1], M);
2520
2526
  }
2521
2527
  this.ctx.shadowBlur = 0;
2522
2528
  }
2523
2529
  }
2524
- class wi {
2530
+ class ki {
2525
2531
  constructor(t) {
2526
2532
  this.options = t, this.element = document.createElement("div"), Object.assign(this.element.style, { display: "flex", gap: "0.375rem" }), this.onFullscreenChange = () => {
2527
2533
  this.setFullscreenIcon(document.fullscreenElement !== null);
@@ -2546,7 +2552,7 @@ class wi {
2546
2552
  this.arBtn = this.syncButton(this.arBtn, t.ar !== !1 && this.options.onAr !== void 0, () => new b({
2547
2553
  variant: "outline",
2548
2554
  size: "icon",
2549
- label: Ce(),
2555
+ label: we(),
2550
2556
  icon: g.ar(),
2551
2557
  onClick: () => {
2552
2558
  this.options.onAr?.();
@@ -2554,7 +2560,7 @@ class wi {
2554
2560
  })), this.fullscreenBtn = this.syncButton(this.fullscreenBtn, t.fullscreen !== !1 && this.options.onFullscreen !== void 0, () => new b({
2555
2561
  variant: "outline",
2556
2562
  size: "icon",
2557
- label: Ue(),
2563
+ label: Ve(),
2558
2564
  icon: g.fullscreen(),
2559
2565
  onClick: () => {
2560
2566
  this.options.onFullscreen?.();
@@ -2575,9 +2581,9 @@ class L {
2575
2581
  targetTilt: e.tilt,
2576
2582
  targetZoom: e.zoom,
2577
2583
  thetaOffset: 0
2578
- }, o = ki(t, e, i);
2584
+ }, o = Si(t, e, i);
2579
2585
  e.onChange((s) => {
2580
- i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, Si(o, e, s);
2586
+ i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, Ai(o, e, s);
2581
2587
  }), this.element.appendChild(L.buildZoom(o.zoomOut, o.zoomIn)), this.element.appendChild(L.buildDpad(o.tiltUp, o.rotateLeft, o.reset, o.rotateRight, o.tiltDown));
2582
2588
  }
2583
2589
  static buildZoom(t, e) {
@@ -2598,7 +2604,7 @@ class L {
2598
2604
  return r;
2599
2605
  }
2600
2606
  }
2601
- function ki(n, t, e) {
2607
+ function Si(n, t, e) {
2602
2608
  const i = (r) => Math.max(t.limits?.minZoom ?? 1, Math.min(t.limits?.maxZoom ?? 1 / 0, r)), o = (r) => {
2603
2609
  const l = t.limits?.minRotate, d = t.limits?.maxRotate;
2604
2610
  return l !== void 0 || d !== void 0 ? Math.max(l ?? -1 / 0, Math.min(d ?? 1 / 0, r)) : r;
@@ -2612,54 +2618,54 @@ function ki(n, t, e) {
2612
2618
  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());
2613
2619
  };
2614
2620
  return {
2615
- zoomOut: new b({ variant: "outline", size: "icon", label: yn(), icon: g.zoomOut(), onClick: () => {
2621
+ zoomOut: new b({ variant: "outline", size: "icon", label: _n(), icon: g.zoomOut(), onClick: () => {
2616
2622
  e.targetZoom = i(e.targetZoom - 10), n.zoom(e.targetZoom).set();
2617
2623
  } }),
2618
- zoomIn: new b({ variant: "outline", size: "icon", label: fn(), icon: g.zoomIn(), onClick: () => {
2624
+ zoomIn: new b({ variant: "outline", size: "icon", label: gn(), icon: g.zoomIn(), onClick: () => {
2619
2625
  e.targetZoom = i(e.targetZoom + 10), n.zoom(e.targetZoom).set();
2620
2626
  } }),
2621
- tiltUp: new b({ variant: "outline", size: "icon", label: Nn(), icon: g.tiltUp(), onClick: () => {
2627
+ tiltUp: new b({ variant: "outline", size: "icon", label: In(), icon: g.tiltUp(), onClick: () => {
2622
2628
  s(-15);
2623
2629
  } }),
2624
- rotateLeft: new b({ variant: "outline", size: "icon", label: kn(), icon: g.rotateLeft(), onClick: () => {
2630
+ rotateLeft: new b({ variant: "outline", size: "icon", label: Sn(), icon: g.rotateLeft(), onClick: () => {
2625
2631
  e.targetRotation = o(e.targetRotation - 15), n.rotate(e.targetRotation + e.thetaOffset).set();
2626
2632
  } }),
2627
- reset: new b({ variant: "outline", size: "icon", label: dn(), icon: g.reset(), onClick: () => {
2633
+ reset: new b({ variant: "outline", size: "icon", label: hn(), icon: g.reset(), onClick: () => {
2628
2634
  e.thetaOffset = 0, n.reset();
2629
2635
  } }),
2630
- rotateRight: new b({ variant: "outline", size: "icon", label: xn(), icon: g.rotateRight(), onClick: () => {
2636
+ rotateRight: new b({ variant: "outline", size: "icon", label: Tn(), icon: g.rotateRight(), onClick: () => {
2631
2637
  e.targetRotation = o(e.targetRotation + 15), n.rotate(e.targetRotation + e.thetaOffset).set();
2632
2638
  } }),
2633
- tiltDown: new b({ variant: "outline", size: "icon", label: zn(), icon: g.tiltDown(), onClick: () => {
2639
+ tiltDown: new b({ variant: "outline", size: "icon", label: Pn(), icon: g.tiltDown(), onClick: () => {
2634
2640
  s(15);
2635
2641
  } })
2636
2642
  };
2637
2643
  }
2638
- function Si(n, t, e) {
2644
+ function Ai(n, t, e) {
2639
2645
  const i = t.limits;
2640
2646
  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);
2641
2647
  }
2642
- const Ai = 5;
2643
- let Ei = 0;
2648
+ const Ei = 5;
2649
+ let xi = 0;
2644
2650
  function j(n) {
2645
2651
  const t = n.replace(/([A-Z])/g, " $1").trim();
2646
2652
  return t.charAt(0).toUpperCase() + t.slice(1).toLowerCase();
2647
2653
  }
2648
- function xi(n, t, e, i, o) {
2654
+ function Ti(n, t, e, i, o) {
2649
2655
  const s = document.createElement("div");
2650
2656
  s.className = "vd-attribute", s.dataset.name = n.name;
2651
2657
  const r = document.createElement("span");
2652
- 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);
2653
- 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);
2658
+ 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);
2659
+ 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);
2654
2660
  return u.onSelect((p) => {
2655
2661
  e.dispatch(O.SELECT, { attribute: n.name, value: p }, !0).defaultPrevented || i(n.name, p);
2656
2662
  }), o(n.name, (p) => {
2657
2663
  u.setSelected(p.value), e.dispatch(O.SELECTED, { attribute: n.name, value: p.value });
2658
2664
  }), s.appendChild(u.element), s;
2659
2665
  }
2660
- const Ti = 80, Ri = 2500;
2661
- class Oi {
2662
- constructor(t, e = Ri) {
2666
+ const Ri = 80, Oi = 2500;
2667
+ class Ni {
2668
+ constructor(t, e = Oi) {
2663
2669
  this.configuration = t, this.resetMs = e, this.element = document.createElement("div"), this.element.className = "vd-commerce vd-hidden";
2664
2670
  const i = document.createElement("div");
2665
2671
  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: () => {
@@ -2691,7 +2697,7 @@ class Oi {
2691
2697
  this.priceEl.textContent = "", this.vatEl.textContent = "";
2692
2698
  return;
2693
2699
  }
2694
- this.priceEl.textContent = Ni(t.price, t.currency), this.vatEl.textContent = lt(this.configuration.vatDisplay);
2700
+ this.priceEl.textContent = Ii(t.price, t.currency), this.vatEl.textContent = lt(this.configuration.vatDisplay);
2695
2701
  }
2696
2702
  renderButton() {
2697
2703
  const t = this.configuration.submitEnabled;
@@ -2699,11 +2705,11 @@ class Oi {
2699
2705
  }
2700
2706
  async handleSubmit() {
2701
2707
  if (this.state !== "busy") {
2702
- this.setState("busy", Dn());
2708
+ this.setState("busy", Bn());
2703
2709
  try {
2704
- await this.configuration.submit(), this.setState("success", jn());
2710
+ await this.configuration.submit(), this.setState("success", Hn());
2705
2711
  } catch {
2706
- this.setState("failed", Zn());
2712
+ this.setState("failed", Wn());
2707
2713
  }
2708
2714
  this.scheduleReset();
2709
2715
  }
@@ -2721,9 +2727,9 @@ class Oi {
2721
2727
  }
2722
2728
  }
2723
2729
  function lt(n) {
2724
- return (n ?? "").slice(0, Ti);
2730
+ return (n ?? "").slice(0, Ri);
2725
2731
  }
2726
- function Ni(n, t) {
2732
+ function Ii(n, t) {
2727
2733
  try {
2728
2734
  const e = new Intl.NumberFormat(h(), { style: "currency", currency: t }), i = e.resolvedOptions().maximumFractionDigits ?? 2;
2729
2735
  return e.format(n / 10 ** i);
@@ -2744,8 +2750,8 @@ class kt {
2744
2750
  this.slot?.remove(), this.slot = null, this.panel = null;
2745
2751
  }
2746
2752
  }
2747
- const Ii = 572;
2748
- class Li {
2753
+ const Li = 572;
2754
+ class Mi {
2749
2755
  element = null;
2750
2756
  body = null;
2751
2757
  openButton = null;
@@ -2759,7 +2765,7 @@ class Li {
2759
2765
  this.container = t, e.classList.add("vd-attributes-sidebar"), this.closeButton = new b({
2760
2766
  variant: "ghost",
2761
2767
  size: "icon-sm",
2762
- label: an(),
2768
+ label: ln(),
2763
2769
  icon: g.close({ size: 18 }),
2764
2770
  onClick: () => {
2765
2771
  this.expanded = !1, this.render();
@@ -2769,7 +2775,7 @@ class Li {
2769
2775
  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({
2770
2776
  variant: "outline",
2771
2777
  size: "default",
2772
- label: nn(),
2778
+ label: on(),
2773
2779
  icon: g.configurator({ size: 18 }),
2774
2780
  onClick: () => {
2775
2781
  this.expanded = !0, this.render();
@@ -2785,7 +2791,7 @@ class Li {
2785
2791
  observe() {
2786
2792
  typeof ResizeObserver > "u" || this.container === null || (this.observer = new ResizeObserver((t) => {
2787
2793
  const e = t[0]?.contentRect.width ?? 0;
2788
- this.setCollapsible(e > 0 && e < Ii);
2794
+ this.setCollapsible(e > 0 && e < Li);
2789
2795
  }), this.observer.observe(this.container));
2790
2796
  }
2791
2797
  setCollapsible(t) {
@@ -2798,7 +2804,7 @@ class Li {
2798
2804
  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);
2799
2805
  }
2800
2806
  }
2801
- class Mi {
2807
+ class zi {
2802
2808
  attach(t, e) {
2803
2809
  }
2804
2810
  setVisible(t) {
@@ -2806,20 +2812,20 @@ class Mi {
2806
2812
  destroy() {
2807
2813
  }
2808
2814
  }
2809
- const zi = {
2815
+ const Pi = {
2810
2816
  "inframe-bottom-left": () => new kt(),
2811
- "sidebar-right": () => new Li(),
2812
- hidden: () => new Mi()
2817
+ "sidebar-right": () => new Mi(),
2818
+ hidden: () => new zi()
2813
2819
  };
2814
- function Pi(n) {
2815
- return (zi[n ?? ""] ?? (() => new kt()))();
2820
+ function Fi(n) {
2821
+ return (Pi[n ?? ""] ?? (() => new kt()))();
2816
2822
  }
2817
2823
  const H = _.fontFamily.sans.join(", "), G = `
2818
2824
  position: absolute;
2819
2825
  display: flex;
2820
2826
  z-index: 10;
2821
2827
  transition: inset-inline-end 0.18s ease;
2822
- `, Fi = `
2828
+ `, $i = `
2823
2829
  /* Override browser's default black fullscreen backdrop */
2824
2830
  .vd-container:fullscreen {
2825
2831
  background: oklch(100% 0 0);
@@ -3010,17 +3016,17 @@ const H = _.fontFamily.sans.join(", "), G = `
3010
3016
  }
3011
3017
 
3012
3018
  `;
3013
- function $i() {
3014
- if (fi(), document.getElementById("vd-styles") !== null)
3019
+ function Di() {
3020
+ if (gi(), document.getElementById("vd-styles") !== null)
3015
3021
  return;
3016
3022
  const n = document.createElement("style");
3017
- n.id = "vd-styles", n.textContent = Fi, document.head.appendChild(n);
3023
+ n.id = "vd-styles", n.textContent = $i, document.head.appendChild(n);
3018
3024
  }
3019
- function Di(n, t) {
3025
+ function Bi(n, t) {
3020
3026
  const e = document.createElement("a");
3021
3027
  e.href = `data:image/png;base64,${n}`, e.download = t, e.click();
3022
3028
  }
3023
- class Bi {
3029
+ class Ui {
3024
3030
  options;
3025
3031
  settings = {};
3026
3032
  container = null;
@@ -3036,7 +3042,7 @@ class Bi {
3036
3042
  this.options = t;
3037
3043
  }
3038
3044
  attach(t) {
3039
- $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");
3045
+ 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");
3040
3046
  }
3041
3047
  onReady() {
3042
3048
  this.loading?.hide(), this.loading = null, this.mountToolbar(), this.cameraControls !== null && (this.cameraControls.element.style.display = "flex"), this.layout?.setVisible(!0);
@@ -3045,7 +3051,7 @@ class Bi {
3045
3051
  if (this.actionBar !== null || this.slots.bottomRight === null || this.container === null)
3046
3052
  return;
3047
3053
  const t = typeof this.container.requestFullscreen == "function";
3048
- this.actionBar = new wi({
3054
+ this.actionBar = new ki({
3049
3055
  onAr: this.options.onAr,
3050
3056
  onFullscreen: t ? () => {
3051
3057
  this.toggleFullscreen();
@@ -3053,7 +3059,7 @@ class Bi {
3053
3059
  }), this.actionBar.applySettings(this.settings), this.slots.bottomRight.appendChild(this.actionBar.element), this.syncScreenshotButton(), this.placeScreenshotButton();
3054
3060
  }
3055
3061
  toggleFullscreen() {
3056
- this.container !== null && (document.fullscreenElement !== null ? document.exitFullscreen() : this.container.requestFullscreen());
3062
+ this.container !== null && (document.fullscreenElement !== null ? document.exitFullscreen() : (this.options.onFullscreenEnter?.(), this.container.requestFullscreen()));
3057
3063
  }
3058
3064
  updateProgress(t, e) {
3059
3065
  this.loading?.updateProgress(t, e);
@@ -3068,14 +3074,14 @@ class Bi {
3068
3074
  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)) {
3069
3075
  this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes";
3070
3076
  for (const i of e)
3071
- this.attributes.appendChild(xi(
3077
+ this.attributes.appendChild(Ti(
3072
3078
  i,
3073
3079
  t,
3074
3080
  this.options.eventBus,
3075
3081
  this.options.onSelect,
3076
3082
  this.options.onSubscribe
3077
3083
  ));
3078
- this.commerce = new Oi(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = Pi(this.settings.configuratorLayout), this.layout.attach(this.container, this.attributes);
3084
+ 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);
3079
3085
  }
3080
3086
  }
3081
3087
  get viewerSettings() {
@@ -3100,11 +3106,11 @@ class Bi {
3100
3106
  t && this.screenshotBtn === null && (this.screenshotBtn = new b({
3101
3107
  variant: "outline",
3102
3108
  size: "icon",
3103
- label: Qe(),
3109
+ label: Je(),
3104
3110
  icon: g.screenshot(),
3105
3111
  onClick: () => {
3106
3112
  this.options.snapshotApi.take("snapshot.png").onDeveloped(({ data: e, filename: i }) => {
3107
- Di(e, i);
3113
+ Bi(e, i);
3108
3114
  });
3109
3115
  }
3110
3116
  })), !t && this.screenshotBtn !== null && (this.screenshotBtn.element.remove(), this.screenshotBtn = null);
@@ -3113,7 +3119,7 @@ class Bi {
3113
3119
  this.screenshotBtn === null || this.slots.topRight === null || (this.cameraControls !== null ? this.cameraControls.element.appendChild(this.screenshotBtn.element) : this.slots.topRight.appendChild(this.screenshotBtn.element));
3114
3120
  }
3115
3121
  }
3116
- class Ui {
3122
+ class Vi {
3117
3123
  constructor(t) {
3118
3124
  this.send = t;
3119
3125
  }
@@ -3146,7 +3152,7 @@ class Ui {
3146
3152
  e(t);
3147
3153
  }
3148
3154
  }
3149
- class Hi {
3155
+ class Gi {
3150
3156
  attributes;
3151
3157
  readyStateTracker;
3152
3158
  messenger;
@@ -3162,32 +3168,33 @@ class Hi {
3162
3168
  options;
3163
3169
  iframe;
3164
3170
  container;
3171
+ viewerSessionId;
3165
3172
  readyCallbacks = [];
3166
3173
  mutationFailedCallbacks = [];
3167
3174
  constructor(t) {
3168
- this.options = t, this.initializeLogging(), this.messenger = new ee(() => this.iframe?.contentWindow ?? null);
3175
+ this.options = t, this.initializeLogging(), this.messenger = new ne(() => this.iframe?.contentWindow ?? null);
3169
3176
  const e = (i) => {
3170
3177
  this.messenger.send(i);
3171
3178
  };
3172
- this.attributes = new ne(e, (i, o) => {
3179
+ this.attributes = new ie(e, (i, o) => {
3173
3180
  for (const s of this.mutationFailedCallbacks)
3174
3181
  s({ attribute: i, value: o });
3175
- }), this.snapshotApi = new ue(e), this.annotationsApi = new Ui(e), this.cameraApi = new ie(e), this.cameraPositionApi = new oe(), this.focusApi = new se(e, (i) => {
3182
+ }), this.snapshotApi = new de(e), this.annotationsApi = new Vi(e), this.cameraApi = new oe(e), this.cameraPositionApi = new se(), this.focusApi = new re(e, (i) => {
3176
3183
  this.dispatchFocusChange(i);
3177
- }), this.configurationApi = new le(
3184
+ }), this.configurationApi = new ce(
3178
3185
  (i) => {
3179
3186
  this.dispatchConfigurationChange(i);
3180
3187
  },
3181
3188
  (i) => {
3182
3189
  this.dispatchConfigurationSubmit(i);
3183
3190
  }
3184
- ), this.eventBus = new de(), this.qrModal = new hi(), this.readyStateTracker = new Ft(() => {
3191
+ ), this.eventBus = new he(), this.qrModal = new mi(), this.readyStateTracker = new Ft(() => {
3185
3192
  const i = this.readyCallbacks;
3186
3193
  this.readyCallbacks = [];
3187
3194
  for (const o of i)
3188
3195
  o(this);
3189
3196
  this.ui.onReady();
3190
- }), this.ui = new Bi({
3197
+ }), this.ui = new Ui({
3191
3198
  snapshotApi: this.snapshotApi,
3192
3199
  cameraApi: this.cameraApi,
3193
3200
  cameraPositionApi: this.cameraPositionApi,
@@ -3197,34 +3204,43 @@ class Hi {
3197
3204
  onSubscribe: (i, o) => this.attributes.onChange(i, o),
3198
3205
  onAr: () => {
3199
3206
  this.activateAr();
3207
+ },
3208
+ onFullscreenEnter: () => {
3209
+ this.trackFullscreen();
3200
3210
  }
3201
3211
  }), this.registerHandlers(), this.messenger.start(), this.createAndConnectIframe();
3202
3212
  }
3203
3213
  registerHandlers() {
3204
- this.messenger.on(c.HANDSHAKE, (t) => {
3205
- Gt(t) && (C.info("Server handshake received, flushing publisher queue"), this.messenger.markReady());
3206
- }), this.messenger.on(c.MUTATION, (t) => {
3207
- qt(t) && (this.attributes.handleMutationResult(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()));
3214
+ this.registerLifecycleHandlers(), this.messenger.on(c.MUTATION, (t) => {
3215
+ Zt(t) && (this.attributes.handleMutationResult(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()));
3208
3216
  }), this.messenger.on(c.SNAPSHOT, (t) => {
3209
- Zt(t) && this.snapshotApi.handleSnapshotResult(t);
3217
+ Wt(t) && this.snapshotApi.handleSnapshotResult(t);
3210
3218
  }), this.messenger.on(c.CAMERA, (t) => {
3211
- Wt(t) && this.cameraPositionApi.handlePositionUpdate(t);
3219
+ Yt(t) && this.cameraPositionApi.handlePositionUpdate(t);
3212
3220
  }), this.messenger.on(c.LOADING_INDICATOR, (t) => {
3213
- Xt(t) && (t.error !== void 0 ? this.ui.showError(t.error) : this.ui.updateProgress(t.progress, t.phase));
3221
+ Kt(t) && (t.error !== void 0 ? this.ui.showError(t.error) : this.ui.updateProgress(t.progress, t.phase));
3214
3222
  }), this.messenger.on(c.CONFIG, (t) => {
3215
- Kt(t) && this.handleConfig(t);
3223
+ Qt(t) && this.handleConfig(t);
3216
3224
  }), this.messenger.on(c.ANNOTATION_PLACED, (t) => {
3217
- Qt(t) && this.annotationsApi.handlePlaced(t.position);
3225
+ Jt(t) && this.annotationsApi.handlePlaced(t.position);
3218
3226
  }), this.messenger.on(c.MAPPING, (t) => {
3219
- Yt(t) && (this.attributes.handleMappingReceived(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()), this.ui.renderAttributeControls(this.attributes, t.attributes), this.readyStateTracker.handleMappingReceived());
3227
+ Xt(t) && (this.attributes.handleMappingReceived(t), this.configurationApi.handleSelectionChanged(this.attributes.getSelection()), this.ui.renderAttributeControls(this.attributes, t.attributes), this.readyStateTracker.handleMappingReceived());
3220
3228
  }), this.registerFacadeStateHandlers();
3221
3229
  }
3230
+ /** Lifecycle handlers: the handshake (queue flush) and the tracking session id. */
3231
+ registerLifecycleHandlers() {
3232
+ this.messenger.on(c.HANDSHAKE, (t) => {
3233
+ Gt(t) && (C.info("Server handshake received, flushing publisher queue"), this.messenger.markReady());
3234
+ }), this.messenger.on(c.SESSION, (t) => {
3235
+ qt(t) && (this.viewerSessionId = t.sessionId);
3236
+ });
3237
+ }
3222
3238
  /** Handlers that feed viewer-reported state into the facades (focus, pricing). */
3223
3239
  registerFacadeStateHandlers() {
3224
3240
  this.messenger.on(c.FOCUS, (t) => {
3225
- Jt(t) && this.focusApi.handleStateReceived(t);
3241
+ te(t) && this.focusApi.handleStateReceived(t);
3226
3242
  }), this.messenger.on(c.PRICING, (t) => {
3227
- te(t) && this.configurationApi.handlePricingReceived(t.pricing);
3243
+ ee(t) && this.configurationApi.handlePricingReceived(t.pricing);
3228
3244
  });
3229
3245
  }
3230
3246
  /**
@@ -3270,6 +3286,10 @@ class Hi {
3270
3286
  }
3271
3287
  this.qrModal.show(this.iframe?.src ?? "");
3272
3288
  }
3289
+ /** Tell the viewer the user entered fullscreen, so it records the engagement. */
3290
+ trackFullscreen() {
3291
+ this.messenger.send({ type: c.FULLSCREEN });
3292
+ }
3273
3293
  initializeLogging() {
3274
3294
  this.options.debug === !0 && Pt(), C.info("Initializing Virtualdisplay client", { model: this.options.model });
3275
3295
  }
@@ -3334,24 +3354,33 @@ class Hi {
3334
3354
  get viewerSettings() {
3335
3355
  return this.ui.viewerSettings;
3336
3356
  }
3357
+ /**
3358
+ * The viewer's tracking session id, once the viewer has established it (the id
3359
+ * is generated inside the iframe and announced to the client). `undefined`
3360
+ * until then. A host page can use it to correlate its own actions, e.g. a
3361
+ * configurator conversion, with the viewer session.
3362
+ */
3363
+ get sessionId() {
3364
+ return this.viewerSessionId;
3365
+ }
3337
3366
  destroy() {
3338
3367
  this.readyStateTracker.clear(), this.readyCallbacks = [], this.mutationFailedCallbacks.length = 0, this.snapshotApi.clear(), this.messenger.destroy(), this.qrModal.hide(), 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;
3339
3368
  }
3340
3369
  }
3341
3370
  export {
3342
- Ui as Annotations,
3371
+ Vi as Annotations,
3343
3372
  Dt as Attribute,
3344
3373
  $t as AttributeValue,
3345
- ie as Camera,
3346
- le as Configuration,
3374
+ oe as Camera,
3375
+ ce as Configuration,
3347
3376
  A as ERROR_CODES,
3348
- se as Focus,
3349
- ce as Photo,
3350
- ue as Snapshot,
3377
+ re as Focus,
3378
+ ue as Photo,
3379
+ de as Snapshot,
3351
3380
  O as VD_EVENTS,
3352
- Hi as VirtualdisplayClient,
3381
+ Gi as VirtualdisplayClient,
3353
3382
  f as VirtualdisplayError,
3354
3383
  Pt as enableDebugMode,
3355
- Vi as isDebugMode,
3384
+ ji as isDebugMode,
3356
3385
  C as logger
3357
3386
  };