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

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