@virtualdisplay.io/client 4.0.0-alpha.24 → 4.0.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/index.d.ts +32 -1
- package/dist/virtualdisplay.client.cjs.js +22 -20
- package/dist/virtualdisplay.client.es.js +461 -379
- package/dist/virtualdisplay.client.umd.js +30 -28
- package/package.json +1 -1
|
@@ -14,7 +14,8 @@ const c = {
|
|
|
14
14
|
FOCUS: "focus",
|
|
15
15
|
PRICING: "pricing",
|
|
16
16
|
QR_SHOWN: "qr_shown",
|
|
17
|
-
SYNC: "sync"
|
|
17
|
+
SYNC: "sync",
|
|
18
|
+
SELECTABLE: "selectable"
|
|
18
19
|
}, tt = {
|
|
19
20
|
FOCUS: "focus",
|
|
20
21
|
UNFOCUS: "unfocus"
|
|
@@ -24,17 +25,17 @@ const c = {
|
|
|
24
25
|
/** Behaves exactly like an unpriced combination: no price, no button. */
|
|
25
26
|
HIDDEN: "hidden"
|
|
26
27
|
}, It = new Set(Object.values(c));
|
|
27
|
-
function
|
|
28
|
+
function Lt(n) {
|
|
28
29
|
if (typeof n != "object" || n === null)
|
|
29
30
|
return !1;
|
|
30
31
|
const t = n;
|
|
31
32
|
return typeof t.target == "string" ? !1 : typeof t.type == "string" && It.has(t.type);
|
|
32
33
|
}
|
|
33
|
-
function
|
|
34
|
+
function Ot(n) {
|
|
34
35
|
const t = S(n);
|
|
35
36
|
return t !== null && t.type === c.HANDSHAKE;
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function Nt(n) {
|
|
38
39
|
const t = S(n);
|
|
39
40
|
return t !== null && t.type === c.SESSION && typeof t.sessionId == "string";
|
|
40
41
|
}
|
|
@@ -64,13 +65,17 @@ function Dt(n) {
|
|
|
64
65
|
}
|
|
65
66
|
function Bt(n) {
|
|
66
67
|
const t = S(n);
|
|
67
|
-
return t !== null && t.type === c.
|
|
68
|
+
return t !== null && t.type === c.SELECTABLE && Array.isArray(t.attributes);
|
|
68
69
|
}
|
|
69
70
|
function Ut(n) {
|
|
70
71
|
const t = S(n);
|
|
71
|
-
return t !== null && t.type === c.
|
|
72
|
+
return t !== null && t.type === c.CONFIG && typeof t.viewerSettings == "object";
|
|
72
73
|
}
|
|
73
74
|
function Vt(n) {
|
|
75
|
+
const t = S(n);
|
|
76
|
+
return t !== null && t.type === c.FOCUS && typeof t.state == "string";
|
|
77
|
+
}
|
|
78
|
+
function jt(n) {
|
|
74
79
|
const t = S(n);
|
|
75
80
|
return t !== null && t.type === c.PRICING && typeof t.pricing == "object" && t.pricing !== null;
|
|
76
81
|
}
|
|
@@ -124,9 +129,9 @@ class et {
|
|
|
124
129
|
this.pending.length = 0;
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
|
-
class
|
|
132
|
+
class Ht {
|
|
128
133
|
constructor(t, e) {
|
|
129
|
-
this.getTarget = t, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = e?.isValid ??
|
|
134
|
+
this.getTarget = t, this.sourceId = `vd-${Math.random().toString(36).slice(2, 8)}`, this.targetOrigin = "*", this.isValid = e?.isValid ?? Lt, this.publisher = new et((i) => this.post(i)), this.consumer = new et((i) => this.routeToHandler(i)), e?.bufferIncoming !== !0 && this.consumer.markReady();
|
|
130
135
|
}
|
|
131
136
|
getTarget;
|
|
132
137
|
handlers = /* @__PURE__ */ new Map();
|
|
@@ -235,7 +240,7 @@ class jt {
|
|
|
235
240
|
});
|
|
236
241
|
}
|
|
237
242
|
}
|
|
238
|
-
class
|
|
243
|
+
class qt {
|
|
239
244
|
constructor(t) {
|
|
240
245
|
this.send = t;
|
|
241
246
|
}
|
|
@@ -247,7 +252,7 @@ class Ht {
|
|
|
247
252
|
});
|
|
248
253
|
}
|
|
249
254
|
}
|
|
250
|
-
class
|
|
255
|
+
class Gt {
|
|
251
256
|
constructor(t, e) {
|
|
252
257
|
this.value = t, this.attribute = e;
|
|
253
258
|
}
|
|
@@ -290,7 +295,7 @@ class f extends Error {
|
|
|
290
295
|
return new f(t, A.INVALID_PARAMETER);
|
|
291
296
|
}
|
|
292
297
|
}
|
|
293
|
-
class
|
|
298
|
+
class Zt {
|
|
294
299
|
name;
|
|
295
300
|
defaultValue;
|
|
296
301
|
values;
|
|
@@ -342,18 +347,18 @@ class Gt {
|
|
|
342
347
|
createValues(t) {
|
|
343
348
|
const e = /* @__PURE__ */ new Map();
|
|
344
349
|
for (const i of t) {
|
|
345
|
-
const o = new
|
|
350
|
+
const o = new Gt(i, this.name);
|
|
346
351
|
i === this.defaultValue && o.setSelected(!0), e.set(i, o);
|
|
347
352
|
}
|
|
348
353
|
return e;
|
|
349
354
|
}
|
|
350
355
|
}
|
|
351
|
-
class
|
|
356
|
+
class Wt {
|
|
352
357
|
attributes = /* @__PURE__ */ new Map();
|
|
353
358
|
constructor(t, e, i) {
|
|
354
359
|
for (const o of t) {
|
|
355
360
|
const s = this.buildOptions(o, e);
|
|
356
|
-
this.attributes.set(o.name, new
|
|
361
|
+
this.attributes.set(o.name, new Zt(s));
|
|
357
362
|
}
|
|
358
363
|
this.onMutationFailed = i;
|
|
359
364
|
}
|
|
@@ -390,13 +395,13 @@ class Zt {
|
|
|
390
395
|
return t.defaultValue !== void 0 ? { ...i, defaultValue: t.defaultValue } : i;
|
|
391
396
|
}
|
|
392
397
|
}
|
|
393
|
-
const
|
|
394
|
-
function
|
|
395
|
-
const t = new Date(n.timestamp).toLocaleTimeString("en-GB", { hour12: !1 }), e = n.level.toUpperCase().padEnd(5), i = n.trace_id?.slice(0, 8) ?? "--------", o = n.msg, s = Object.entries(n).filter(([r]) => !Y.includes(r)).map(([r, a]) => `${r}=${I(a,
|
|
398
|
+
const N = 4096, F = 16384, Yt = [1024, 256, 64], Qt = 20, Y = ["timestamp", "level", "msg", "service", "trace_id", "span_id"];
|
|
399
|
+
function Kt(n) {
|
|
400
|
+
const t = new Date(n.timestamp).toLocaleTimeString("en-GB", { hour12: !1 }), e = n.level.toUpperCase().padEnd(5), i = n.trace_id?.slice(0, 8) ?? "--------", o = n.msg, s = Object.entries(n).filter(([r]) => !Y.includes(r)).map(([r, a]) => `${r}=${I(a, N).line}`).join(" ");
|
|
396
401
|
return `${t} ${e} [${i}] ${o}${s ? " " + s : ""}`;
|
|
397
402
|
}
|
|
398
|
-
function
|
|
399
|
-
for (const o of [
|
|
403
|
+
function Xt(n) {
|
|
404
|
+
for (const o of [N, ...Yt]) {
|
|
400
405
|
const { line: s, truncated: r } = I(n, o);
|
|
401
406
|
if (!r) {
|
|
402
407
|
if (s.length <= F)
|
|
@@ -407,15 +412,15 @@ function Kt(n) {
|
|
|
407
412
|
if (a.length <= F)
|
|
408
413
|
return a;
|
|
409
414
|
}
|
|
410
|
-
const t = Object.keys(n).filter((o) => !Y.includes(o)), e = { ...
|
|
411
|
-
return i.line.length <= F ? i.line : I(e,
|
|
415
|
+
const t = Object.keys(n).filter((o) => !Y.includes(o)), e = { ...te(n, Y), log_truncated: !0, log_dropped_count: t.length }, i = I({ ...e, log_dropped_attrs: t.slice(0, Qt) }, N);
|
|
416
|
+
return i.line.length <= F ? i.line : I(e, N).line;
|
|
412
417
|
}
|
|
413
418
|
function I(n, t) {
|
|
414
419
|
const e = [];
|
|
415
420
|
let i = !1;
|
|
416
421
|
return { line: JSON.stringify(n, function(r, a) {
|
|
417
422
|
if (typeof a == "string")
|
|
418
|
-
return a.length > t && (i = !0),
|
|
423
|
+
return a.length > t && (i = !0), Jt(a, t);
|
|
419
424
|
if (typeof a == "bigint")
|
|
420
425
|
return a.toString();
|
|
421
426
|
if (typeof a != "object" || a === null)
|
|
@@ -425,17 +430,17 @@ function I(n, t) {
|
|
|
425
430
|
return e.includes(a) ? "[Circular]" : (e.push(a), a);
|
|
426
431
|
}), truncated: i };
|
|
427
432
|
}
|
|
428
|
-
function
|
|
433
|
+
function Jt(n, t) {
|
|
429
434
|
return n.length <= t ? n : `${n.slice(0, t)}...[truncated ${n.length - t} chars]`;
|
|
430
435
|
}
|
|
431
|
-
function
|
|
436
|
+
function te(n, t) {
|
|
432
437
|
const e = {};
|
|
433
438
|
for (const i of t)
|
|
434
439
|
n[i] !== void 0 && (e[i] = n[i]);
|
|
435
440
|
return e;
|
|
436
441
|
}
|
|
437
|
-
function
|
|
438
|
-
const e = t ?
|
|
442
|
+
function ee(n, t) {
|
|
443
|
+
const e = t ? Kt(n) : Xt(n);
|
|
439
444
|
n.level === "error" ? console.error(e) : n.level === "warn" ? console.warn(e) : console.log(e);
|
|
440
445
|
}
|
|
441
446
|
function mt(n, t = 0) {
|
|
@@ -452,34 +457,34 @@ function mt(n, t = 0) {
|
|
|
452
457
|
}
|
|
453
458
|
return n.cause !== void 0 && n.cause !== null && (e.cause = n.cause instanceof Error && t < 5 ? mt(n.cause, t + 1) : String(n.cause)), e;
|
|
454
459
|
}
|
|
455
|
-
function
|
|
460
|
+
function ne(n) {
|
|
456
461
|
const t = {};
|
|
457
462
|
for (const [e, i] of Object.entries(n))
|
|
458
463
|
t[e] = i instanceof Error ? mt(i) : i;
|
|
459
464
|
return t;
|
|
460
465
|
}
|
|
461
|
-
function
|
|
466
|
+
function ie() {
|
|
462
467
|
return /* @__PURE__ */ new Date();
|
|
463
468
|
}
|
|
464
|
-
function
|
|
469
|
+
function oe(n) {
|
|
465
470
|
return n.toISOString();
|
|
466
471
|
}
|
|
467
472
|
function pt() {
|
|
468
473
|
return typeof navigator > "u" ? "" : navigator.userAgent;
|
|
469
474
|
}
|
|
470
|
-
function oe() {
|
|
471
|
-
return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
472
|
-
}
|
|
473
475
|
function se() {
|
|
474
|
-
return
|
|
476
|
+
return typeof navigator > "u" ? !1 : navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
475
477
|
}
|
|
476
478
|
function re() {
|
|
477
|
-
return /
|
|
479
|
+
return /iPhone|iPad|iPod/i.test(pt()) || se();
|
|
478
480
|
}
|
|
479
481
|
function ae() {
|
|
480
|
-
return
|
|
482
|
+
return /Android/i.test(pt());
|
|
481
483
|
}
|
|
482
|
-
|
|
484
|
+
function le() {
|
|
485
|
+
return re() || ae();
|
|
486
|
+
}
|
|
487
|
+
class ce {
|
|
483
488
|
constructor(t) {
|
|
484
489
|
this.config = t;
|
|
485
490
|
}
|
|
@@ -489,14 +494,14 @@ class le {
|
|
|
489
494
|
*/
|
|
490
495
|
log(t, e, i = {}) {
|
|
491
496
|
const o = this.config.traceProvider?.() ?? {}, s = {
|
|
492
|
-
timestamp: ie(
|
|
497
|
+
timestamp: oe(ie()),
|
|
493
498
|
level: t,
|
|
494
499
|
msg: e,
|
|
495
500
|
service: this.config.service,
|
|
496
501
|
...o,
|
|
497
|
-
...
|
|
502
|
+
...ne(i)
|
|
498
503
|
};
|
|
499
|
-
|
|
504
|
+
ee(s, this.config.isDev);
|
|
500
505
|
}
|
|
501
506
|
/**
|
|
502
507
|
* Log at DEBUG level (development only).
|
|
@@ -525,28 +530,28 @@ class le {
|
|
|
525
530
|
}
|
|
526
531
|
function ft(n, t) {
|
|
527
532
|
const e = t?.isDev !== void 0 ? t.isDev : typeof process < "u" ? process.env.NODE_ENV !== "production" : !0;
|
|
528
|
-
return new
|
|
533
|
+
return new ce({ service: n, isDev: e, traceProvider: t?.traceProvider });
|
|
529
534
|
}
|
|
530
|
-
function
|
|
535
|
+
function O(n) {
|
|
531
536
|
if (n !== void 0)
|
|
532
537
|
return typeof n == "object" && n !== null && !Array.isArray(n) && !(n instanceof Error) ? n : n instanceof Error ? { error: n.message } : { value: n };
|
|
533
538
|
}
|
|
534
539
|
function gt(n) {
|
|
535
540
|
return {
|
|
536
|
-
debug: (t, e) => n.debug(t,
|
|
537
|
-
info: (t, e) => n.info(t,
|
|
538
|
-
warn: (t, e) => n.warn(t,
|
|
539
|
-
error: (t, e) => n.error(t,
|
|
541
|
+
debug: (t, e) => n.debug(t, O(e)),
|
|
542
|
+
info: (t, e) => n.info(t, O(e)),
|
|
543
|
+
warn: (t, e) => n.warn(t, O(e)),
|
|
544
|
+
error: (t, e) => n.error(t, O(e))
|
|
540
545
|
};
|
|
541
546
|
}
|
|
542
547
|
let bt = !1, _ = gt(ft("client", { isDev: !1 }));
|
|
543
|
-
function
|
|
548
|
+
function de() {
|
|
544
549
|
bt = !0, _ = gt(ft("client", { isDev: !0 }));
|
|
545
550
|
}
|
|
546
|
-
function
|
|
551
|
+
function uo() {
|
|
547
552
|
return bt;
|
|
548
553
|
}
|
|
549
|
-
class
|
|
554
|
+
class ue {
|
|
550
555
|
constructor(t, e) {
|
|
551
556
|
this.send = t, this.onMutationFailed = e;
|
|
552
557
|
}
|
|
@@ -560,7 +565,7 @@ class de {
|
|
|
560
565
|
handleMappingReceived(t) {
|
|
561
566
|
_.debug("Initializing from server mapping", {
|
|
562
567
|
attributeCount: t.attributes.length
|
|
563
|
-
}), this.registry = new
|
|
568
|
+
}), this.registry = new Wt(
|
|
564
569
|
t.attributes,
|
|
565
570
|
(e, i) => this.sendMutation(e, i),
|
|
566
571
|
this.onMutationFailed
|
|
@@ -625,7 +630,27 @@ class de {
|
|
|
625
630
|
this.pendingCallbacks.length = 0;
|
|
626
631
|
}
|
|
627
632
|
}
|
|
628
|
-
|
|
633
|
+
class he {
|
|
634
|
+
snapshot;
|
|
635
|
+
callbacks = [];
|
|
636
|
+
handleSnapshot(t) {
|
|
637
|
+
this.snapshot = t.attributes;
|
|
638
|
+
for (const e of this.callbacks)
|
|
639
|
+
e(t.attributes);
|
|
640
|
+
}
|
|
641
|
+
onChange(t) {
|
|
642
|
+
this.callbacks.push(t), this.snapshot !== void 0 && t(this.snapshot);
|
|
643
|
+
}
|
|
644
|
+
/** The selectable values for one attribute, or null when unrestricted. */
|
|
645
|
+
selectableFor(t) {
|
|
646
|
+
return this.snapshot?.find((i) => i.name === t)?.selectable ?? null;
|
|
647
|
+
}
|
|
648
|
+
/** The latest snapshot; empty before the viewer has reported anything. */
|
|
649
|
+
get current() {
|
|
650
|
+
return this.snapshot ?? [];
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
let me = class {
|
|
629
654
|
constructor(t) {
|
|
630
655
|
this.send = t;
|
|
631
656
|
}
|
|
@@ -688,7 +713,7 @@ let ue = class {
|
|
|
688
713
|
this.send(t);
|
|
689
714
|
}
|
|
690
715
|
};
|
|
691
|
-
class
|
|
716
|
+
class pe {
|
|
692
717
|
state;
|
|
693
718
|
limitsState;
|
|
694
719
|
changeCallbacks = [];
|
|
@@ -776,20 +801,20 @@ class he {
|
|
|
776
801
|
}
|
|
777
802
|
}
|
|
778
803
|
}
|
|
779
|
-
function
|
|
780
|
-
const e = n.filter((s) =>
|
|
804
|
+
function fe(n, t) {
|
|
805
|
+
const e = n.filter((s) => ge(s, t));
|
|
781
806
|
if (e.length === 0)
|
|
782
807
|
return;
|
|
783
808
|
const i = Math.max(...e.map(nt)), o = e.filter((s) => nt(s) === i);
|
|
784
809
|
return o.length === 1 ? o[0] : void 0;
|
|
785
810
|
}
|
|
786
|
-
function
|
|
811
|
+
function ge(n, t) {
|
|
787
812
|
return Object.entries(n.attributes).every(([e, i]) => t[e] === i);
|
|
788
813
|
}
|
|
789
814
|
function nt(n) {
|
|
790
815
|
return Object.keys(n.attributes).length;
|
|
791
816
|
}
|
|
792
|
-
class
|
|
817
|
+
class be {
|
|
793
818
|
constructor(t, e) {
|
|
794
819
|
this.dispatchChange = t, this.dispatchSubmit = e;
|
|
795
820
|
}
|
|
@@ -899,7 +924,7 @@ class fe {
|
|
|
899
924
|
resolve() {
|
|
900
925
|
if (this.pricing === void 0)
|
|
901
926
|
return;
|
|
902
|
-
const t =
|
|
927
|
+
const t = fe(this.pricing.rules, this.selection);
|
|
903
928
|
if (!(t === void 0 || t.availability === Rt.HIDDEN))
|
|
904
929
|
return {
|
|
905
930
|
attributes: { ...this.selection },
|
|
@@ -910,7 +935,7 @@ class fe {
|
|
|
910
935
|
};
|
|
911
936
|
}
|
|
912
937
|
}
|
|
913
|
-
class
|
|
938
|
+
class ve {
|
|
914
939
|
constructor(t, e) {
|
|
915
940
|
this.send = t, this.dispatch = e;
|
|
916
941
|
}
|
|
@@ -954,7 +979,7 @@ class ge {
|
|
|
954
979
|
this.dispatch(e);
|
|
955
980
|
}
|
|
956
981
|
}
|
|
957
|
-
class
|
|
982
|
+
class ye {
|
|
958
983
|
constructor(t) {
|
|
959
984
|
this.filename = t;
|
|
960
985
|
}
|
|
@@ -1008,7 +1033,7 @@ class be {
|
|
|
1008
1033
|
}
|
|
1009
1034
|
}
|
|
1010
1035
|
const it = 3e4;
|
|
1011
|
-
class
|
|
1036
|
+
class we {
|
|
1012
1037
|
constructor(t) {
|
|
1013
1038
|
this.send = t;
|
|
1014
1039
|
}
|
|
@@ -1024,7 +1049,7 @@ class ve {
|
|
|
1024
1049
|
*/
|
|
1025
1050
|
take(t) {
|
|
1026
1051
|
this.validateFilename(t), _.debug("Taking snapshot", { filename: t });
|
|
1027
|
-
const e = new
|
|
1052
|
+
const e = new ye(t), i = setTimeout(() => {
|
|
1028
1053
|
this.pendingPhotos.delete(t), _.warn("Snapshot timed out", { filename: t }), e.fail(new f(
|
|
1029
1054
|
`Snapshot timed out: the viewer did not respond within ${it}ms`,
|
|
1030
1055
|
A.SNAPSHOT_FAILED
|
|
@@ -1095,7 +1120,7 @@ class ve {
|
|
|
1095
1120
|
);
|
|
1096
1121
|
}
|
|
1097
1122
|
}
|
|
1098
|
-
class
|
|
1123
|
+
class Se {
|
|
1099
1124
|
container = null;
|
|
1100
1125
|
attach(t) {
|
|
1101
1126
|
this.container = t;
|
|
@@ -1116,7 +1141,7 @@ class ye {
|
|
|
1116
1141
|
};
|
|
1117
1142
|
}
|
|
1118
1143
|
}
|
|
1119
|
-
const
|
|
1144
|
+
const _e = {}, Ce = "en", vt = (
|
|
1120
1145
|
/** @type {const} */
|
|
1121
1146
|
["en", "nl", "de"]
|
|
1122
1147
|
), K = [
|
|
@@ -1129,24 +1154,24 @@ globalThis.__paraglide.ssr ?? {};
|
|
|
1129
1154
|
let st = !1, u = () => {
|
|
1130
1155
|
let n = K;
|
|
1131
1156
|
!Q && typeof window < "u" && window.location?.href && (n = wt(window.location.href));
|
|
1132
|
-
const t =
|
|
1157
|
+
const t = ke(n);
|
|
1133
1158
|
if (t)
|
|
1134
1159
|
return st || (st = !0, yt(t, { reload: !1 })), t;
|
|
1135
1160
|
throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
|
|
1136
1161
|
};
|
|
1137
|
-
function
|
|
1162
|
+
function ke(n, t) {
|
|
1138
1163
|
let e;
|
|
1139
1164
|
for (const i of n) {
|
|
1140
1165
|
if (i === "baseLocale")
|
|
1141
|
-
e =
|
|
1142
|
-
else if (
|
|
1166
|
+
e = Ce;
|
|
1167
|
+
else if (St(i) && M.has(i)) {
|
|
1143
1168
|
const s = M.get(i);
|
|
1144
1169
|
if (s) {
|
|
1145
1170
|
const r = s.getLocale();
|
|
1146
1171
|
if (r instanceof Promise)
|
|
1147
1172
|
continue;
|
|
1148
1173
|
if (r !== void 0)
|
|
1149
|
-
return
|
|
1174
|
+
return xe(r);
|
|
1150
1175
|
}
|
|
1151
1176
|
}
|
|
1152
1177
|
const o = X(e);
|
|
@@ -1154,7 +1179,7 @@ function Se(n, t) {
|
|
|
1154
1179
|
return o;
|
|
1155
1180
|
}
|
|
1156
1181
|
}
|
|
1157
|
-
const
|
|
1182
|
+
const Ae = (n) => {
|
|
1158
1183
|
window.location.reload();
|
|
1159
1184
|
};
|
|
1160
1185
|
let yt = (n, t) => {
|
|
@@ -1171,26 +1196,26 @@ let yt = (n, t) => {
|
|
|
1171
1196
|
let s = K;
|
|
1172
1197
|
!Q && typeof window < "u" && window.location?.href && (s = wt(window.location.href));
|
|
1173
1198
|
for (const a of s)
|
|
1174
|
-
if (a !== "baseLocale" &&
|
|
1199
|
+
if (a !== "baseLocale" && St(a) && M.has(a)) {
|
|
1175
1200
|
const h = M.get(a);
|
|
1176
1201
|
if (h) {
|
|
1177
1202
|
let d = h.setLocale(n);
|
|
1178
|
-
d instanceof Promise && (d = d.catch((
|
|
1203
|
+
d instanceof Promise && (d = d.catch((m) => {
|
|
1179
1204
|
throw new Error(`Custom strategy "${a}" setLocale failed.`, {
|
|
1180
|
-
cause:
|
|
1205
|
+
cause: m
|
|
1181
1206
|
});
|
|
1182
1207
|
}), o.push(d));
|
|
1183
1208
|
}
|
|
1184
1209
|
}
|
|
1185
1210
|
const r = () => {
|
|
1186
|
-
!Q && e.reload && window.location && n !== i &&
|
|
1211
|
+
!Q && e.reload && window.location && n !== i && Ae();
|
|
1187
1212
|
};
|
|
1188
1213
|
if (o.length)
|
|
1189
1214
|
return Promise.all(o).then(() => {
|
|
1190
1215
|
r();
|
|
1191
1216
|
});
|
|
1192
1217
|
r();
|
|
1193
|
-
},
|
|
1218
|
+
}, Ee = () => typeof window < "u" ? window.location.origin : "http://fallback.com";
|
|
1194
1219
|
function X(n) {
|
|
1195
1220
|
if (typeof n != "string")
|
|
1196
1221
|
return;
|
|
@@ -1199,31 +1224,31 @@ function X(n) {
|
|
|
1199
1224
|
if (e.toLowerCase() === t)
|
|
1200
1225
|
return e;
|
|
1201
1226
|
}
|
|
1202
|
-
function
|
|
1227
|
+
function xe(n) {
|
|
1203
1228
|
const t = X(n);
|
|
1204
1229
|
if (t)
|
|
1205
1230
|
return t;
|
|
1206
1231
|
throw new Error(`Invalid locale: ${n}. Expected one of: ${vt.join(", ")}`);
|
|
1207
1232
|
}
|
|
1208
|
-
function
|
|
1209
|
-
return
|
|
1233
|
+
function Te(n) {
|
|
1234
|
+
return Re(n);
|
|
1210
1235
|
}
|
|
1211
|
-
function
|
|
1212
|
-
const t = typeof n == "string" ? new URL(n,
|
|
1236
|
+
function Re(n) {
|
|
1237
|
+
const t = typeof n == "string" ? new URL(n, Ee()) : new URL(n), e = t.pathname.split("/").filter(Boolean);
|
|
1213
1238
|
return e.length > 0 && X(e[0]) && (t.pathname = "/" + e.slice(1).join("/")), t;
|
|
1214
1239
|
}
|
|
1215
1240
|
let rt, at;
|
|
1216
|
-
function
|
|
1241
|
+
function Ie(n) {
|
|
1217
1242
|
if (ot.length === 0)
|
|
1218
1243
|
return;
|
|
1219
1244
|
const t = typeof n == "string" ? n : n.href;
|
|
1220
1245
|
if (rt === t)
|
|
1221
1246
|
return at;
|
|
1222
|
-
const e = new URL(t, "http://example.com"), i =
|
|
1247
|
+
const e = new URL(t, "http://example.com"), i = Te(e), o = i.href === e.href ? [e] : [e, i];
|
|
1223
1248
|
let s;
|
|
1224
1249
|
for (const r of o) {
|
|
1225
1250
|
for (const a of ot)
|
|
1226
|
-
if (new
|
|
1251
|
+
if (new _e(a.match, r.href).exec(r.href)) {
|
|
1227
1252
|
s = a;
|
|
1228
1253
|
break;
|
|
1229
1254
|
}
|
|
@@ -1233,519 +1258,519 @@ function Te(n) {
|
|
|
1233
1258
|
return rt = t, at = s, s;
|
|
1234
1259
|
}
|
|
1235
1260
|
function wt(n) {
|
|
1236
|
-
const t =
|
|
1261
|
+
const t = Ie(n);
|
|
1237
1262
|
return t && t.exclude !== !0 && Array.isArray(t.strategy) ? t.strategy : K;
|
|
1238
1263
|
}
|
|
1239
1264
|
const M = /* @__PURE__ */ new Map();
|
|
1240
|
-
function
|
|
1265
|
+
function St(n) {
|
|
1241
1266
|
return typeof n == "string" && /^custom-[A-Za-z0-9_-]+$/.test(n);
|
|
1242
1267
|
}
|
|
1243
|
-
const
|
|
1268
|
+
const Le = (
|
|
1244
1269
|
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1245
1270
|
() => (
|
|
1246
1271
|
/** @type {LocalizedString} */
|
|
1247
1272
|
"Activate AR"
|
|
1248
1273
|
)
|
|
1249
|
-
),
|
|
1274
|
+
), Oe = (
|
|
1250
1275
|
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1251
1276
|
() => (
|
|
1252
1277
|
/** @type {LocalizedString} */
|
|
1253
1278
|
"AR activeren"
|
|
1254
1279
|
)
|
|
1255
|
-
),
|
|
1280
|
+
), Ne = (
|
|
1256
1281
|
/** @type {(inputs: Controls_Ar_Buttonlabel1Inputs) => LocalizedString} */
|
|
1257
1282
|
() => (
|
|
1258
1283
|
/** @type {LocalizedString} */
|
|
1259
1284
|
"AR aktivieren"
|
|
1260
1285
|
)
|
|
1261
|
-
),
|
|
1286
|
+
), Me = (
|
|
1262
1287
|
/** @type {((inputs?: Controls_Ar_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Ar_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1263
1288
|
((n = {}, t = {}) => {
|
|
1264
1289
|
const e = t.locale ?? u();
|
|
1265
|
-
return e === "nl" ?
|
|
1290
|
+
return e === "nl" ? Oe() : e === "de" ? Ne() : Le();
|
|
1266
1291
|
})
|
|
1267
|
-
),
|
|
1292
|
+
), ze = (
|
|
1268
1293
|
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1269
1294
|
() => (
|
|
1270
1295
|
/** @type {LocalizedString} */
|
|
1271
1296
|
"Scan to view in AR"
|
|
1272
1297
|
)
|
|
1273
|
-
),
|
|
1298
|
+
), Pe = (
|
|
1274
1299
|
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1275
1300
|
() => (
|
|
1276
1301
|
/** @type {LocalizedString} */
|
|
1277
1302
|
"Scan om in AR te bekijken"
|
|
1278
1303
|
)
|
|
1279
|
-
),
|
|
1304
|
+
), Fe = (
|
|
1280
1305
|
/** @type {(inputs: Controls_Qr_Modaltitle1Inputs) => LocalizedString} */
|
|
1281
1306
|
() => (
|
|
1282
1307
|
/** @type {LocalizedString} */
|
|
1283
1308
|
"Scannen für AR-Ansicht"
|
|
1284
1309
|
)
|
|
1285
|
-
),
|
|
1310
|
+
), $e = (
|
|
1286
1311
|
/** @type {((inputs?: Controls_Qr_Modaltitle1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaltitle1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1287
1312
|
((n = {}, t = {}) => {
|
|
1288
1313
|
const e = t.locale ?? u();
|
|
1289
|
-
return e === "nl" ?
|
|
1314
|
+
return e === "nl" ? Pe() : e === "de" ? Fe() : ze();
|
|
1290
1315
|
})
|
|
1291
|
-
),
|
|
1316
|
+
), De = (
|
|
1292
1317
|
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1293
1318
|
() => (
|
|
1294
1319
|
/** @type {LocalizedString} */
|
|
1295
1320
|
"Use your smartphone camera to scan this QR code"
|
|
1296
1321
|
)
|
|
1297
|
-
),
|
|
1322
|
+
), Be = (
|
|
1298
1323
|
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1299
1324
|
() => (
|
|
1300
1325
|
/** @type {LocalizedString} */
|
|
1301
1326
|
"Gebruik de camera van je smartphone om deze QR-code te scannen"
|
|
1302
1327
|
)
|
|
1303
|
-
),
|
|
1328
|
+
), Ue = (
|
|
1304
1329
|
/** @type {(inputs: Controls_Qr_Modaldescription1Inputs) => LocalizedString} */
|
|
1305
1330
|
() => (
|
|
1306
1331
|
/** @type {LocalizedString} */
|
|
1307
1332
|
"Verwende die Kamera deines Smartphones, um diesen QR-Code zu scannen"
|
|
1308
1333
|
)
|
|
1309
|
-
),
|
|
1334
|
+
), Ve = (
|
|
1310
1335
|
/** @type {((inputs?: Controls_Qr_Modaldescription1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modaldescription1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1311
1336
|
((n = {}, t = {}) => {
|
|
1312
1337
|
const e = t.locale ?? u();
|
|
1313
|
-
return e === "nl" ?
|
|
1338
|
+
return e === "nl" ? Be() : e === "de" ? Ue() : De();
|
|
1314
1339
|
})
|
|
1315
|
-
),
|
|
1340
|
+
), je = (
|
|
1316
1341
|
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1317
1342
|
() => (
|
|
1318
1343
|
/** @type {LocalizedString} */
|
|
1319
1344
|
"Your phone will open the 3D model in AR mode."
|
|
1320
1345
|
)
|
|
1321
|
-
),
|
|
1346
|
+
), He = (
|
|
1322
1347
|
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1323
1348
|
() => (
|
|
1324
1349
|
/** @type {LocalizedString} */
|
|
1325
1350
|
"Je telefoon opent het 3D-model in AR-modus."
|
|
1326
1351
|
)
|
|
1327
|
-
),
|
|
1352
|
+
), qe = (
|
|
1328
1353
|
/** @type {(inputs: Controls_Qr_Modalinstructions1Inputs) => LocalizedString} */
|
|
1329
1354
|
() => (
|
|
1330
1355
|
/** @type {LocalizedString} */
|
|
1331
1356
|
"Dein Telefon öffnet das 3D-Modell im AR-Modus."
|
|
1332
1357
|
)
|
|
1333
|
-
),
|
|
1358
|
+
), Ge = (
|
|
1334
1359
|
/** @type {((inputs?: Controls_Qr_Modalinstructions1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Modalinstructions1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1335
1360
|
((n = {}, t = {}) => {
|
|
1336
1361
|
const e = t.locale ?? u();
|
|
1337
|
-
return e === "nl" ?
|
|
1362
|
+
return e === "nl" ? He() : e === "de" ? qe() : je();
|
|
1338
1363
|
})
|
|
1339
|
-
),
|
|
1364
|
+
), Ze = (
|
|
1340
1365
|
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1341
1366
|
() => (
|
|
1342
1367
|
/** @type {LocalizedString} */
|
|
1343
1368
|
"Close"
|
|
1344
1369
|
)
|
|
1345
|
-
),
|
|
1370
|
+
), We = (
|
|
1346
1371
|
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1347
1372
|
() => (
|
|
1348
1373
|
/** @type {LocalizedString} */
|
|
1349
1374
|
"Sluiten"
|
|
1350
1375
|
)
|
|
1351
|
-
),
|
|
1376
|
+
), Ye = (
|
|
1352
1377
|
/** @type {(inputs: Controls_Qr_Closebutton1Inputs) => LocalizedString} */
|
|
1353
1378
|
() => (
|
|
1354
1379
|
/** @type {LocalizedString} */
|
|
1355
1380
|
"Schließen"
|
|
1356
1381
|
)
|
|
1357
|
-
),
|
|
1382
|
+
), Qe = (
|
|
1358
1383
|
/** @type {((inputs?: Controls_Qr_Closebutton1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Qr_Closebutton1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1359
1384
|
((n = {}, t = {}) => {
|
|
1360
1385
|
const e = t.locale ?? u();
|
|
1361
|
-
return e === "nl" ?
|
|
1386
|
+
return e === "nl" ? We() : e === "de" ? Ye() : Ze();
|
|
1362
1387
|
})
|
|
1363
|
-
),
|
|
1388
|
+
), Ke = (
|
|
1364
1389
|
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1365
1390
|
() => (
|
|
1366
1391
|
/** @type {LocalizedString} */
|
|
1367
1392
|
"Fullscreen"
|
|
1368
1393
|
)
|
|
1369
|
-
),
|
|
1394
|
+
), Xe = (
|
|
1370
1395
|
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1371
1396
|
() => (
|
|
1372
1397
|
/** @type {LocalizedString} */
|
|
1373
1398
|
"Volledig scherm"
|
|
1374
1399
|
)
|
|
1375
|
-
),
|
|
1400
|
+
), Je = (
|
|
1376
1401
|
/** @type {(inputs: Controls_Fullscreen_Buttonlabel1Inputs) => LocalizedString} */
|
|
1377
1402
|
() => (
|
|
1378
1403
|
/** @type {LocalizedString} */
|
|
1379
1404
|
"Vollbild"
|
|
1380
1405
|
)
|
|
1381
|
-
),
|
|
1406
|
+
), tn = (
|
|
1382
1407
|
/** @type {((inputs?: Controls_Fullscreen_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Fullscreen_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1383
1408
|
((n = {}, t = {}) => {
|
|
1384
1409
|
const e = t.locale ?? u();
|
|
1385
|
-
return e === "nl" ?
|
|
1410
|
+
return e === "nl" ? Xe() : e === "de" ? Je() : Ke();
|
|
1386
1411
|
})
|
|
1387
|
-
),
|
|
1412
|
+
), en = (
|
|
1388
1413
|
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1389
1414
|
() => (
|
|
1390
1415
|
/** @type {LocalizedString} */
|
|
1391
1416
|
"Downloading"
|
|
1392
1417
|
)
|
|
1393
|
-
),
|
|
1418
|
+
), nn = (
|
|
1394
1419
|
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1395
1420
|
() => (
|
|
1396
1421
|
/** @type {LocalizedString} */
|
|
1397
1422
|
"Downloaden"
|
|
1398
1423
|
)
|
|
1399
|
-
),
|
|
1424
|
+
), on = (
|
|
1400
1425
|
/** @type {(inputs: Loading_Downloadingshort1Inputs) => LocalizedString} */
|
|
1401
1426
|
() => (
|
|
1402
1427
|
/** @type {LocalizedString} */
|
|
1403
1428
|
"Herunterladen"
|
|
1404
1429
|
)
|
|
1405
|
-
),
|
|
1430
|
+
), _t = (
|
|
1406
1431
|
/** @type {((inputs?: Loading_Downloadingshort1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_Downloadingshort1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1407
1432
|
((n = {}, t = {}) => {
|
|
1408
1433
|
const e = t.locale ?? u();
|
|
1409
|
-
return e === "nl" ?
|
|
1434
|
+
return e === "nl" ? nn() : e === "de" ? on() : en();
|
|
1410
1435
|
})
|
|
1411
|
-
),
|
|
1436
|
+
), sn = (
|
|
1412
1437
|
/** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
|
|
1413
1438
|
() => (
|
|
1414
1439
|
/** @type {LocalizedString} */
|
|
1415
1440
|
"Rendering"
|
|
1416
1441
|
)
|
|
1417
|
-
),
|
|
1442
|
+
), rn = (
|
|
1418
1443
|
/** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
|
|
1419
1444
|
() => (
|
|
1420
1445
|
/** @type {LocalizedString} */
|
|
1421
1446
|
"Renderen"
|
|
1422
1447
|
)
|
|
1423
|
-
),
|
|
1448
|
+
), an = (
|
|
1424
1449
|
/** @type {(inputs: Loading_RenderingInputs) => LocalizedString} */
|
|
1425
1450
|
() => (
|
|
1426
1451
|
/** @type {LocalizedString} */
|
|
1427
1452
|
"Rendern"
|
|
1428
1453
|
)
|
|
1429
|
-
),
|
|
1454
|
+
), ln = (
|
|
1430
1455
|
/** @type {((inputs?: Loading_RenderingInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Loading_RenderingInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1431
1456
|
((n = {}, t = {}) => {
|
|
1432
1457
|
const e = t.locale ?? u();
|
|
1433
|
-
return e === "nl" ?
|
|
1458
|
+
return e === "nl" ? rn() : e === "de" ? an() : sn();
|
|
1434
1459
|
})
|
|
1435
|
-
),
|
|
1460
|
+
), cn = (
|
|
1436
1461
|
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1437
1462
|
() => (
|
|
1438
1463
|
/** @type {LocalizedString} */
|
|
1439
1464
|
"Screenshot"
|
|
1440
1465
|
)
|
|
1441
|
-
),
|
|
1466
|
+
), dn = (
|
|
1442
1467
|
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1443
1468
|
() => (
|
|
1444
1469
|
/** @type {LocalizedString} */
|
|
1445
1470
|
"Screenshot"
|
|
1446
1471
|
)
|
|
1447
|
-
),
|
|
1472
|
+
), un = (
|
|
1448
1473
|
/** @type {(inputs: Controls_Screenshot_Buttonlabel1Inputs) => LocalizedString} */
|
|
1449
1474
|
() => (
|
|
1450
1475
|
/** @type {LocalizedString} */
|
|
1451
1476
|
"Screenshot"
|
|
1452
1477
|
)
|
|
1453
|
-
),
|
|
1478
|
+
), hn = (
|
|
1454
1479
|
/** @type {((inputs?: Controls_Screenshot_Buttonlabel1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Screenshot_Buttonlabel1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1455
1480
|
((n = {}, t = {}) => {
|
|
1456
1481
|
const e = t.locale ?? u();
|
|
1457
|
-
return e === "nl" ?
|
|
1482
|
+
return e === "nl" ? dn() : e === "de" ? un() : cn();
|
|
1458
1483
|
})
|
|
1459
|
-
),
|
|
1484
|
+
), mn = (
|
|
1460
1485
|
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1461
1486
|
() => (
|
|
1462
1487
|
/** @type {LocalizedString} */
|
|
1463
1488
|
"Configure"
|
|
1464
1489
|
)
|
|
1465
|
-
),
|
|
1490
|
+
), pn = (
|
|
1466
1491
|
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1467
1492
|
() => (
|
|
1468
1493
|
/** @type {LocalizedString} */
|
|
1469
1494
|
"Configureren"
|
|
1470
1495
|
)
|
|
1471
|
-
),
|
|
1496
|
+
), fn = (
|
|
1472
1497
|
/** @type {(inputs: Controls_Configurator_OpenInputs) => LocalizedString} */
|
|
1473
1498
|
() => (
|
|
1474
1499
|
/** @type {LocalizedString} */
|
|
1475
1500
|
"Konfigurieren"
|
|
1476
1501
|
)
|
|
1477
|
-
),
|
|
1502
|
+
), gn = (
|
|
1478
1503
|
/** @type {((inputs?: Controls_Configurator_OpenInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_OpenInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1479
1504
|
((n = {}, t = {}) => {
|
|
1480
1505
|
const e = t.locale ?? u();
|
|
1481
|
-
return e === "nl" ?
|
|
1506
|
+
return e === "nl" ? pn() : e === "de" ? fn() : mn();
|
|
1482
1507
|
})
|
|
1483
|
-
),
|
|
1508
|
+
), bn = (
|
|
1484
1509
|
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1485
1510
|
() => (
|
|
1486
1511
|
/** @type {LocalizedString} */
|
|
1487
1512
|
"Close"
|
|
1488
1513
|
)
|
|
1489
|
-
),
|
|
1514
|
+
), vn = (
|
|
1490
1515
|
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1491
1516
|
() => (
|
|
1492
1517
|
/** @type {LocalizedString} */
|
|
1493
1518
|
"Sluiten"
|
|
1494
1519
|
)
|
|
1495
|
-
),
|
|
1520
|
+
), yn = (
|
|
1496
1521
|
/** @type {(inputs: Controls_Configurator_CloseInputs) => LocalizedString} */
|
|
1497
1522
|
() => (
|
|
1498
1523
|
/** @type {LocalizedString} */
|
|
1499
1524
|
"Schließen"
|
|
1500
1525
|
)
|
|
1501
|
-
),
|
|
1526
|
+
), wn = (
|
|
1502
1527
|
/** @type {((inputs?: Controls_Configurator_CloseInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Configurator_CloseInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1503
1528
|
((n = {}, t = {}) => {
|
|
1504
1529
|
const e = t.locale ?? u();
|
|
1505
|
-
return e === "nl" ?
|
|
1530
|
+
return e === "nl" ? vn() : e === "de" ? yn() : bn();
|
|
1506
1531
|
})
|
|
1507
|
-
),
|
|
1532
|
+
), Sn = (
|
|
1508
1533
|
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1509
1534
|
() => (
|
|
1510
1535
|
/** @type {LocalizedString} */
|
|
1511
1536
|
"Reset camera"
|
|
1512
1537
|
)
|
|
1513
|
-
),
|
|
1538
|
+
), _n = (
|
|
1514
1539
|
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1515
1540
|
() => (
|
|
1516
1541
|
/** @type {LocalizedString} */
|
|
1517
1542
|
"Camera resetten"
|
|
1518
1543
|
)
|
|
1519
|
-
),
|
|
1544
|
+
), Cn = (
|
|
1520
1545
|
/** @type {(inputs: Controls_Camera_ResetInputs) => LocalizedString} */
|
|
1521
1546
|
() => (
|
|
1522
1547
|
/** @type {LocalizedString} */
|
|
1523
1548
|
"Kamera zurücksetzen"
|
|
1524
1549
|
)
|
|
1525
|
-
),
|
|
1550
|
+
), kn = (
|
|
1526
1551
|
/** @type {((inputs?: Controls_Camera_ResetInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_ResetInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1527
1552
|
((n = {}, t = {}) => {
|
|
1528
1553
|
const e = t.locale ?? u();
|
|
1529
|
-
return e === "nl" ?
|
|
1554
|
+
return e === "nl" ? _n() : e === "de" ? Cn() : Sn();
|
|
1530
1555
|
})
|
|
1531
|
-
),
|
|
1556
|
+
), An = (
|
|
1532
1557
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1533
1558
|
() => (
|
|
1534
1559
|
/** @type {LocalizedString} */
|
|
1535
1560
|
"Zoom in"
|
|
1536
1561
|
)
|
|
1537
|
-
),
|
|
1562
|
+
), En = (
|
|
1538
1563
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1539
1564
|
() => (
|
|
1540
1565
|
/** @type {LocalizedString} */
|
|
1541
1566
|
"Inzoomen"
|
|
1542
1567
|
)
|
|
1543
|
-
),
|
|
1568
|
+
), xn = (
|
|
1544
1569
|
/** @type {(inputs: Controls_Camera_Zoomin1Inputs) => LocalizedString} */
|
|
1545
1570
|
() => (
|
|
1546
1571
|
/** @type {LocalizedString} */
|
|
1547
1572
|
"Hineinzoomen"
|
|
1548
1573
|
)
|
|
1549
|
-
),
|
|
1574
|
+
), Tn = (
|
|
1550
1575
|
/** @type {((inputs?: Controls_Camera_Zoomin1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomin1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1551
1576
|
((n = {}, t = {}) => {
|
|
1552
1577
|
const e = t.locale ?? u();
|
|
1553
|
-
return e === "nl" ?
|
|
1578
|
+
return e === "nl" ? En() : e === "de" ? xn() : An();
|
|
1554
1579
|
})
|
|
1555
|
-
),
|
|
1580
|
+
), Rn = (
|
|
1556
1581
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1557
1582
|
() => (
|
|
1558
1583
|
/** @type {LocalizedString} */
|
|
1559
1584
|
"Zoom out"
|
|
1560
1585
|
)
|
|
1561
|
-
),
|
|
1586
|
+
), In = (
|
|
1562
1587
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1563
1588
|
() => (
|
|
1564
1589
|
/** @type {LocalizedString} */
|
|
1565
1590
|
"Uitzoomen"
|
|
1566
1591
|
)
|
|
1567
|
-
),
|
|
1592
|
+
), Ln = (
|
|
1568
1593
|
/** @type {(inputs: Controls_Camera_Zoomout1Inputs) => LocalizedString} */
|
|
1569
1594
|
() => (
|
|
1570
1595
|
/** @type {LocalizedString} */
|
|
1571
1596
|
"Herauszoomen"
|
|
1572
1597
|
)
|
|
1573
|
-
),
|
|
1598
|
+
), On = (
|
|
1574
1599
|
/** @type {((inputs?: Controls_Camera_Zoomout1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Zoomout1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1575
1600
|
((n = {}, t = {}) => {
|
|
1576
1601
|
const e = t.locale ?? u();
|
|
1577
|
-
return e === "nl" ?
|
|
1602
|
+
return e === "nl" ? In() : e === "de" ? Ln() : Rn();
|
|
1578
1603
|
})
|
|
1579
|
-
),
|
|
1604
|
+
), Nn = (
|
|
1580
1605
|
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1581
1606
|
() => (
|
|
1582
1607
|
/** @type {LocalizedString} */
|
|
1583
1608
|
"Rotate left"
|
|
1584
1609
|
)
|
|
1585
|
-
),
|
|
1610
|
+
), Mn = (
|
|
1586
1611
|
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1587
1612
|
() => (
|
|
1588
1613
|
/** @type {LocalizedString} */
|
|
1589
1614
|
"Naar links draaien"
|
|
1590
1615
|
)
|
|
1591
|
-
),
|
|
1616
|
+
), zn = (
|
|
1592
1617
|
/** @type {(inputs: Controls_Camera_Rotateleft1Inputs) => LocalizedString} */
|
|
1593
1618
|
() => (
|
|
1594
1619
|
/** @type {LocalizedString} */
|
|
1595
1620
|
"Nach links drehen"
|
|
1596
1621
|
)
|
|
1597
|
-
),
|
|
1622
|
+
), Pn = (
|
|
1598
1623
|
/** @type {((inputs?: Controls_Camera_Rotateleft1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateleft1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1599
1624
|
((n = {}, t = {}) => {
|
|
1600
1625
|
const e = t.locale ?? u();
|
|
1601
|
-
return e === "nl" ?
|
|
1626
|
+
return e === "nl" ? Mn() : e === "de" ? zn() : Nn();
|
|
1602
1627
|
})
|
|
1603
|
-
),
|
|
1628
|
+
), Fn = (
|
|
1604
1629
|
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1605
1630
|
() => (
|
|
1606
1631
|
/** @type {LocalizedString} */
|
|
1607
1632
|
"Rotate right"
|
|
1608
1633
|
)
|
|
1609
|
-
),
|
|
1634
|
+
), $n = (
|
|
1610
1635
|
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1611
1636
|
() => (
|
|
1612
1637
|
/** @type {LocalizedString} */
|
|
1613
1638
|
"Naar rechts draaien"
|
|
1614
1639
|
)
|
|
1615
|
-
),
|
|
1640
|
+
), Dn = (
|
|
1616
1641
|
/** @type {(inputs: Controls_Camera_Rotateright1Inputs) => LocalizedString} */
|
|
1617
1642
|
() => (
|
|
1618
1643
|
/** @type {LocalizedString} */
|
|
1619
1644
|
"Nach rechts drehen"
|
|
1620
1645
|
)
|
|
1621
|
-
),
|
|
1646
|
+
), Bn = (
|
|
1622
1647
|
/** @type {((inputs?: Controls_Camera_Rotateright1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Rotateright1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1623
1648
|
((n = {}, t = {}) => {
|
|
1624
1649
|
const e = t.locale ?? u();
|
|
1625
|
-
return e === "nl" ?
|
|
1650
|
+
return e === "nl" ? $n() : e === "de" ? Dn() : Fn();
|
|
1626
1651
|
})
|
|
1627
|
-
),
|
|
1652
|
+
), Un = (
|
|
1628
1653
|
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1629
1654
|
() => (
|
|
1630
1655
|
/** @type {LocalizedString} */
|
|
1631
1656
|
"Tilt up"
|
|
1632
1657
|
)
|
|
1633
|
-
),
|
|
1658
|
+
), Vn = (
|
|
1634
1659
|
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1635
1660
|
() => (
|
|
1636
1661
|
/** @type {LocalizedString} */
|
|
1637
1662
|
"Omhoog kantelen"
|
|
1638
1663
|
)
|
|
1639
|
-
),
|
|
1664
|
+
), jn = (
|
|
1640
1665
|
/** @type {(inputs: Controls_Camera_Tiltup1Inputs) => LocalizedString} */
|
|
1641
1666
|
() => (
|
|
1642
1667
|
/** @type {LocalizedString} */
|
|
1643
1668
|
"Nach oben kippen"
|
|
1644
1669
|
)
|
|
1645
|
-
),
|
|
1670
|
+
), Hn = (
|
|
1646
1671
|
/** @type {((inputs?: Controls_Camera_Tiltup1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltup1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1647
1672
|
((n = {}, t = {}) => {
|
|
1648
1673
|
const e = t.locale ?? u();
|
|
1649
|
-
return e === "nl" ?
|
|
1674
|
+
return e === "nl" ? Vn() : e === "de" ? jn() : Un();
|
|
1650
1675
|
})
|
|
1651
|
-
),
|
|
1676
|
+
), qn = (
|
|
1652
1677
|
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1653
1678
|
() => (
|
|
1654
1679
|
/** @type {LocalizedString} */
|
|
1655
1680
|
"Tilt down"
|
|
1656
1681
|
)
|
|
1657
|
-
),
|
|
1682
|
+
), Gn = (
|
|
1658
1683
|
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1659
1684
|
() => (
|
|
1660
1685
|
/** @type {LocalizedString} */
|
|
1661
1686
|
"Omlaag kantelen"
|
|
1662
1687
|
)
|
|
1663
|
-
),
|
|
1688
|
+
), Zn = (
|
|
1664
1689
|
/** @type {(inputs: Controls_Camera_Tiltdown1Inputs) => LocalizedString} */
|
|
1665
1690
|
() => (
|
|
1666
1691
|
/** @type {LocalizedString} */
|
|
1667
1692
|
"Nach unten kippen"
|
|
1668
1693
|
)
|
|
1669
|
-
),
|
|
1694
|
+
), Wn = (
|
|
1670
1695
|
/** @type {((inputs?: Controls_Camera_Tiltdown1Inputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Controls_Camera_Tiltdown1Inputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1671
1696
|
((n = {}, t = {}) => {
|
|
1672
1697
|
const e = t.locale ?? u();
|
|
1673
|
-
return e === "nl" ?
|
|
1698
|
+
return e === "nl" ? Gn() : e === "de" ? Zn() : qn();
|
|
1674
1699
|
})
|
|
1675
|
-
),
|
|
1700
|
+
), Yn = (
|
|
1676
1701
|
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1677
1702
|
() => (
|
|
1678
1703
|
/** @type {LocalizedString} */
|
|
1679
1704
|
"Working…"
|
|
1680
1705
|
)
|
|
1681
|
-
),
|
|
1706
|
+
), Qn = (
|
|
1682
1707
|
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1683
1708
|
() => (
|
|
1684
1709
|
/** @type {LocalizedString} */
|
|
1685
1710
|
"Bezig…"
|
|
1686
1711
|
)
|
|
1687
|
-
),
|
|
1712
|
+
), Kn = (
|
|
1688
1713
|
/** @type {(inputs: Commerce_Submit_BusyInputs) => LocalizedString} */
|
|
1689
1714
|
() => (
|
|
1690
1715
|
/** @type {LocalizedString} */
|
|
1691
1716
|
"Läuft…"
|
|
1692
1717
|
)
|
|
1693
|
-
),
|
|
1718
|
+
), Xn = (
|
|
1694
1719
|
/** @type {((inputs?: Commerce_Submit_BusyInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_BusyInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1695
1720
|
((n = {}, t = {}) => {
|
|
1696
1721
|
const e = t.locale ?? u();
|
|
1697
|
-
return e === "nl" ?
|
|
1722
|
+
return e === "nl" ? Qn() : e === "de" ? Kn() : Yn();
|
|
1698
1723
|
})
|
|
1699
|
-
),
|
|
1724
|
+
), Jn = (
|
|
1700
1725
|
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1701
1726
|
() => (
|
|
1702
1727
|
/** @type {LocalizedString} */
|
|
1703
1728
|
"Done"
|
|
1704
1729
|
)
|
|
1705
|
-
),
|
|
1730
|
+
), ti = (
|
|
1706
1731
|
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1707
1732
|
() => (
|
|
1708
1733
|
/** @type {LocalizedString} */
|
|
1709
1734
|
"Gelukt"
|
|
1710
1735
|
)
|
|
1711
|
-
),
|
|
1736
|
+
), ei = (
|
|
1712
1737
|
/** @type {(inputs: Commerce_Submit_SuccessInputs) => LocalizedString} */
|
|
1713
1738
|
() => (
|
|
1714
1739
|
/** @type {LocalizedString} */
|
|
1715
1740
|
"Fertig"
|
|
1716
1741
|
)
|
|
1717
|
-
),
|
|
1742
|
+
), ni = (
|
|
1718
1743
|
/** @type {((inputs?: Commerce_Submit_SuccessInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_SuccessInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1719
1744
|
((n = {}, t = {}) => {
|
|
1720
1745
|
const e = t.locale ?? u();
|
|
1721
|
-
return e === "nl" ?
|
|
1746
|
+
return e === "nl" ? ti() : e === "de" ? ei() : Jn();
|
|
1722
1747
|
})
|
|
1723
|
-
),
|
|
1748
|
+
), ii = (
|
|
1724
1749
|
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1725
1750
|
() => (
|
|
1726
1751
|
/** @type {LocalizedString} */
|
|
1727
1752
|
"Failed"
|
|
1728
1753
|
)
|
|
1729
|
-
),
|
|
1754
|
+
), oi = (
|
|
1730
1755
|
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1731
1756
|
() => (
|
|
1732
1757
|
/** @type {LocalizedString} */
|
|
1733
1758
|
"Mislukt"
|
|
1734
1759
|
)
|
|
1735
|
-
),
|
|
1760
|
+
), si = (
|
|
1736
1761
|
/** @type {(inputs: Commerce_Submit_FailedInputs) => LocalizedString} */
|
|
1737
1762
|
() => (
|
|
1738
1763
|
/** @type {LocalizedString} */
|
|
1739
1764
|
"Fehlgeschlagen"
|
|
1740
1765
|
)
|
|
1741
|
-
),
|
|
1766
|
+
), ri = (
|
|
1742
1767
|
/** @type {((inputs?: Commerce_Submit_FailedInputs, options?: { locale?: "en" | "nl" | "de" }) => LocalizedString) & import('../runtime.js').MessageMetadata<Commerce_Submit_FailedInputs, { locale?: "en" | "nl" | "de" }, {}>} */
|
|
1743
1768
|
((n = {}, t = {}) => {
|
|
1744
1769
|
const e = t.locale ?? u();
|
|
1745
|
-
return e === "nl" ?
|
|
1770
|
+
return e === "nl" ? oi() : e === "de" ? si() : ii();
|
|
1746
1771
|
})
|
|
1747
1772
|
);
|
|
1748
|
-
const
|
|
1773
|
+
const ai = {
|
|
1749
1774
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1750
1775
|
width: 24,
|
|
1751
1776
|
height: 24,
|
|
@@ -1766,12 +1791,12 @@ const Ct = ([n, t, e]) => {
|
|
|
1766
1791
|
}), i;
|
|
1767
1792
|
}, kt = (n, t = {}) => {
|
|
1768
1793
|
const i = {
|
|
1769
|
-
...
|
|
1794
|
+
...ai,
|
|
1770
1795
|
...t
|
|
1771
1796
|
};
|
|
1772
1797
|
return Ct(["svg", i, n]);
|
|
1773
1798
|
};
|
|
1774
|
-
const
|
|
1799
|
+
const li = [
|
|
1775
1800
|
[
|
|
1776
1801
|
"path",
|
|
1777
1802
|
{
|
|
@@ -1781,7 +1806,7 @@ const ri = [
|
|
|
1781
1806
|
["path", { d: "m3.3 7 8.7 5 8.7-5" }],
|
|
1782
1807
|
["path", { d: "M12 22V12" }]
|
|
1783
1808
|
];
|
|
1784
|
-
const
|
|
1809
|
+
const ci = [
|
|
1785
1810
|
[
|
|
1786
1811
|
"path",
|
|
1787
1812
|
{
|
|
@@ -1791,26 +1816,26 @@ const ai = [
|
|
|
1791
1816
|
["circle", { cx: "12", cy: "13", r: "3" }]
|
|
1792
1817
|
];
|
|
1793
1818
|
const At = [["path", { d: "m6 9 6 6 6-6" }]];
|
|
1794
|
-
const
|
|
1795
|
-
const
|
|
1796
|
-
const
|
|
1797
|
-
const
|
|
1819
|
+
const di = [["path", { d: "m15 18-6-6 6-6" }]];
|
|
1820
|
+
const ui = [["path", { d: "m9 18 6-6-6-6" }]];
|
|
1821
|
+
const hi = [["path", { d: "m18 15-6-6-6 6" }]];
|
|
1822
|
+
const mi = [
|
|
1798
1823
|
["path", { d: "M15 3h6v6" }],
|
|
1799
1824
|
["path", { d: "m21 3-7 7" }],
|
|
1800
1825
|
["path", { d: "m3 21 7-7" }],
|
|
1801
1826
|
["path", { d: "M9 21H3v-6" }]
|
|
1802
1827
|
];
|
|
1803
|
-
const
|
|
1828
|
+
const pi = [
|
|
1804
1829
|
["path", { d: "m14 10 7-7" }],
|
|
1805
1830
|
["path", { d: "M20 10h-6V4" }],
|
|
1806
1831
|
["path", { d: "m3 21 7-7" }],
|
|
1807
1832
|
["path", { d: "M4 14h6v6" }]
|
|
1808
1833
|
];
|
|
1809
|
-
const
|
|
1834
|
+
const fi = [
|
|
1810
1835
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
|
|
1811
1836
|
["path", { d: "M3 3v5h5" }]
|
|
1812
1837
|
];
|
|
1813
|
-
const
|
|
1838
|
+
const gi = [
|
|
1814
1839
|
["path", { d: "M10 5H3" }],
|
|
1815
1840
|
["path", { d: "M12 19H3" }],
|
|
1816
1841
|
["path", { d: "M14 3v4" }],
|
|
@@ -1821,16 +1846,16 @@ const pi = [
|
|
|
1821
1846
|
["path", { d: "M8 10v4" }],
|
|
1822
1847
|
["path", { d: "M8 12H3" }]
|
|
1823
1848
|
];
|
|
1824
|
-
const
|
|
1849
|
+
const bi = [
|
|
1825
1850
|
["path", { d: "M18 6 6 18" }],
|
|
1826
1851
|
["path", { d: "m6 6 12 12" }]
|
|
1827
1852
|
];
|
|
1828
|
-
const
|
|
1853
|
+
const vi = [
|
|
1829
1854
|
["circle", { cx: "11", cy: "11", r: "8" }],
|
|
1830
1855
|
["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
|
|
1831
1856
|
["line", { x1: "8", x2: "14", y1: "11", y2: "11" }]
|
|
1832
1857
|
];
|
|
1833
|
-
const
|
|
1858
|
+
const yi = [
|
|
1834
1859
|
["circle", { cx: "11", cy: "11", r: "8" }],
|
|
1835
1860
|
["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65" }],
|
|
1836
1861
|
["line", { x1: "11", x2: "11", y1: "8", y2: "14" }],
|
|
@@ -1840,19 +1865,19 @@ function y(n, { size: t = 20, strokeWidth: e = 1.75 } = {}) {
|
|
|
1840
1865
|
return kt(n, { width: t, height: t, "stroke-width": e });
|
|
1841
1866
|
}
|
|
1842
1867
|
const g = {
|
|
1843
|
-
ar: (n) => y(
|
|
1844
|
-
fullscreen: (n) => y(
|
|
1845
|
-
exitFullscreen: (n) => y(
|
|
1846
|
-
screenshot: (n) => y(
|
|
1847
|
-
tiltUp: (n) => y(
|
|
1868
|
+
ar: (n) => y(li, n),
|
|
1869
|
+
fullscreen: (n) => y(mi, n),
|
|
1870
|
+
exitFullscreen: (n) => y(pi, n),
|
|
1871
|
+
screenshot: (n) => y(ci, n),
|
|
1872
|
+
tiltUp: (n) => y(hi, n),
|
|
1848
1873
|
tiltDown: (n) => y(At, n),
|
|
1849
|
-
rotateLeft: (n) => y(
|
|
1850
|
-
rotateRight: (n) => y(
|
|
1851
|
-
zoomIn: (n) => y(
|
|
1852
|
-
zoomOut: (n) => y(
|
|
1853
|
-
reset: (n) => y(
|
|
1854
|
-
configurator: (n) => y(
|
|
1855
|
-
close: (n) => y(
|
|
1874
|
+
rotateLeft: (n) => y(di, n),
|
|
1875
|
+
rotateRight: (n) => y(ui, n),
|
|
1876
|
+
zoomIn: (n) => y(yi, n),
|
|
1877
|
+
zoomOut: (n) => y(vi, n),
|
|
1878
|
+
reset: (n) => y(fi, n),
|
|
1879
|
+
configurator: (n) => y(gi, n),
|
|
1880
|
+
close: (n) => y(bi, n)
|
|
1856
1881
|
};
|
|
1857
1882
|
class b {
|
|
1858
1883
|
element;
|
|
@@ -1864,7 +1889,7 @@ class b {
|
|
|
1864
1889
|
e !== null ? e.replaceWith(t) : this.element.appendChild(t);
|
|
1865
1890
|
}
|
|
1866
1891
|
}
|
|
1867
|
-
const
|
|
1892
|
+
const p = {
|
|
1868
1893
|
semantic: {
|
|
1869
1894
|
// eslint-disable-next-line vd-custom/enforce-error-codes -- This is a hex color, not an error code
|
|
1870
1895
|
error: "#dc2626"
|
|
@@ -1898,11 +1923,11 @@ const m = {
|
|
|
1898
1923
|
// 32px
|
|
1899
1924
|
9: "2.25rem"
|
|
1900
1925
|
};
|
|
1901
|
-
class
|
|
1926
|
+
class wi {
|
|
1902
1927
|
element;
|
|
1903
1928
|
constructor() {
|
|
1904
1929
|
this.element = document.createElement("div"), Object.assign(this.element.style, {
|
|
1905
|
-
background:
|
|
1930
|
+
background: p.white,
|
|
1906
1931
|
borderRadius: l[3],
|
|
1907
1932
|
padding: l[6],
|
|
1908
1933
|
boxShadow: `0 ${l[2]} ${l[8]} oklch(0% 0 0 / 20%)`,
|
|
@@ -1911,9 +1936,9 @@ class vi {
|
|
|
1911
1936
|
});
|
|
1912
1937
|
}
|
|
1913
1938
|
}
|
|
1914
|
-
class
|
|
1939
|
+
class Si {
|
|
1915
1940
|
constructor(t = {}) {
|
|
1916
|
-
this.options = t, this.card = new
|
|
1941
|
+
this.options = t, this.card = new wi(), this.backdrop = this.createBackdrop(), this.backdrop.appendChild(this.card.element);
|
|
1917
1942
|
}
|
|
1918
1943
|
options;
|
|
1919
1944
|
card;
|
|
@@ -1942,7 +1967,7 @@ class yi {
|
|
|
1942
1967
|
}), t;
|
|
1943
1968
|
}
|
|
1944
1969
|
}
|
|
1945
|
-
class
|
|
1970
|
+
class _i {
|
|
1946
1971
|
element;
|
|
1947
1972
|
selectCallback = null;
|
|
1948
1973
|
constructor(t, e, i) {
|
|
@@ -1963,8 +1988,19 @@ class wi {
|
|
|
1963
1988
|
onSelect(t) {
|
|
1964
1989
|
this.selectCallback = t;
|
|
1965
1990
|
}
|
|
1991
|
+
/**
|
|
1992
|
+
* Enable only the given values; null lifts every restriction. A disabled
|
|
1993
|
+
* value stays visible (the buyer sees the option exists) but cannot be
|
|
1994
|
+
* picked: the selectable snapshot's "not in the list = grey".
|
|
1995
|
+
*/
|
|
1996
|
+
setEnabled(t) {
|
|
1997
|
+
for (const e of this.element.querySelectorAll(".ui-toggle-group-item")) {
|
|
1998
|
+
const i = t === null || t.includes(e.dataset.value ?? "");
|
|
1999
|
+
e.disabled = !i, e.setAttribute("aria-disabled", i ? "false" : "true");
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
1966
2002
|
}
|
|
1967
|
-
class
|
|
2003
|
+
class Ci {
|
|
1968
2004
|
element;
|
|
1969
2005
|
select;
|
|
1970
2006
|
constructor(t, e, i, o, s) {
|
|
@@ -1973,8 +2009,8 @@ class _i {
|
|
|
1973
2009
|
r.value = "", r.disabled = !0, r.textContent = i, this.select.appendChild(r);
|
|
1974
2010
|
let a = !1;
|
|
1975
2011
|
for (let d = 0; d < e.length; d++) {
|
|
1976
|
-
const
|
|
1977
|
-
v.value =
|
|
2012
|
+
const m = e[d], v = document.createElement("option");
|
|
2013
|
+
v.value = m, v.textContent = s?.[d] ?? m, m === o && (v.selected = !0, a = !0), this.select.appendChild(v);
|
|
1978
2014
|
}
|
|
1979
2015
|
a || (r.selected = !0);
|
|
1980
2016
|
const h = kt(At, { width: 16, height: 16, "stroke-width": 2 });
|
|
@@ -1988,6 +2024,11 @@ class _i {
|
|
|
1988
2024
|
t(this.select.value);
|
|
1989
2025
|
});
|
|
1990
2026
|
}
|
|
2027
|
+
/** Enable only the given values; null lifts every restriction (see ToggleGroup.setEnabled). */
|
|
2028
|
+
setEnabled(t) {
|
|
2029
|
+
for (const e of this.select.options)
|
|
2030
|
+
e.value !== "" && (e.disabled = t !== null && !t.includes(e.value));
|
|
2031
|
+
}
|
|
1991
2032
|
}
|
|
1992
2033
|
const w = {
|
|
1993
2034
|
fontFamily: {
|
|
@@ -2006,7 +2047,7 @@ const w = {
|
|
|
2006
2047
|
medium: "500",
|
|
2007
2048
|
semibold: "600"
|
|
2008
2049
|
}
|
|
2009
|
-
}, x = w.fontFamily.sans.join(", "),
|
|
2050
|
+
}, x = w.fontFamily.sans.join(", "), ki = `
|
|
2010
2051
|
--primary: oklch(5% 0 0);
|
|
2011
2052
|
--primary-foreground: oklch(100% 0 0);
|
|
2012
2053
|
--secondary: oklch(92% 0 0);
|
|
@@ -2019,8 +2060,8 @@ const w = {
|
|
|
2019
2060
|
--accent: oklch(92% 0 0);
|
|
2020
2061
|
--accent-foreground: oklch(5% 0 0);
|
|
2021
2062
|
--muted-foreground: oklch(44% 0 0);
|
|
2022
|
-
`,
|
|
2023
|
-
:root { ${
|
|
2063
|
+
`, Ai = `
|
|
2064
|
+
:root { ${ki} }
|
|
2024
2065
|
|
|
2025
2066
|
/* ── Button ──────────────────────────────────────────────── */
|
|
2026
2067
|
.ui-btn {
|
|
@@ -2096,6 +2137,8 @@ const w = {
|
|
|
2096
2137
|
box-shadow: 0 1px 2px oklch(5% 0 0 / 8%);
|
|
2097
2138
|
}
|
|
2098
2139
|
.ui-toggle-group-item:hover { background: var(--accent); border-color: oklch(85% 0 0); }
|
|
2140
|
+
.ui-toggle-group-item:disabled { opacity: 0.4; cursor: not-allowed; }
|
|
2141
|
+
.ui-toggle-group-item:disabled:hover { background: var(--background); border-color: var(--border); }
|
|
2099
2142
|
.ui-toggle-group-item:active { transform: scale(0.98); }
|
|
2100
2143
|
.ui-toggle-group-item:focus-visible {
|
|
2101
2144
|
outline: none;
|
|
@@ -2303,37 +2346,37 @@ function Et() {
|
|
|
2303
2346
|
return;
|
|
2304
2347
|
lt = !0;
|
|
2305
2348
|
const n = document.createElement("style");
|
|
2306
|
-
n.id = "vd-ui-vanilla", n.textContent =
|
|
2349
|
+
n.id = "vd-ui-vanilla", n.textContent = Ai, document.head.appendChild(n);
|
|
2307
2350
|
}
|
|
2308
|
-
const
|
|
2309
|
-
class
|
|
2351
|
+
const Ei = w.fontFamily.sans.join(", ");
|
|
2352
|
+
class xi {
|
|
2310
2353
|
qrLib = null;
|
|
2311
2354
|
dialog = null;
|
|
2312
2355
|
qrSlot = null;
|
|
2313
2356
|
/** Open the modal immediately, with a loading placeholder in the QR slot. */
|
|
2314
2357
|
show() {
|
|
2315
|
-
this.hide(), Et(), this.dialog = new
|
|
2358
|
+
this.hide(), Et(), this.dialog = new Si({ onClose: () => {
|
|
2316
2359
|
this.dialog = null, this.qrSlot = null;
|
|
2317
2360
|
} }), Object.assign(this.dialog.card.element.style, {
|
|
2318
2361
|
display: "flex",
|
|
2319
2362
|
flexDirection: "column",
|
|
2320
2363
|
alignItems: "center",
|
|
2321
2364
|
gap: l[3],
|
|
2322
|
-
fontFamily:
|
|
2323
|
-
}), this.dialog.card.element.appendChild(this.createText(
|
|
2365
|
+
fontFamily: Ei
|
|
2366
|
+
}), this.dialog.card.element.appendChild(this.createText($e(), {
|
|
2324
2367
|
fontSize: w.fontSize.base,
|
|
2325
2368
|
fontWeight: w.fontWeight.semibold,
|
|
2326
|
-
color:
|
|
2327
|
-
})), this.dialog.card.element.appendChild(this.createText(
|
|
2369
|
+
color: p.neutral[900]
|
|
2370
|
+
})), this.dialog.card.element.appendChild(this.createText(Ve(), {
|
|
2328
2371
|
fontSize: w.fontSize.sm,
|
|
2329
|
-
color:
|
|
2330
|
-
})), this.qrSlot = this.createQrSlot(), this.dialog.card.element.appendChild(this.qrSlot), this.dialog.card.element.appendChild(this.createText(
|
|
2372
|
+
color: p.neutral[600]
|
|
2373
|
+
})), this.qrSlot = this.createQrSlot(), this.dialog.card.element.appendChild(this.qrSlot), this.dialog.card.element.appendChild(this.createText(Ge(), {
|
|
2331
2374
|
fontSize: w.fontSize.xs,
|
|
2332
|
-
color:
|
|
2375
|
+
color: p.neutral[500]
|
|
2333
2376
|
}));
|
|
2334
2377
|
const t = new b({
|
|
2335
2378
|
variant: "outline",
|
|
2336
|
-
label:
|
|
2379
|
+
label: Qe(),
|
|
2337
2380
|
onClick: () => {
|
|
2338
2381
|
this.hide();
|
|
2339
2382
|
}
|
|
@@ -2351,7 +2394,7 @@ class Ai {
|
|
|
2351
2394
|
width: 256,
|
|
2352
2395
|
margin: 4,
|
|
2353
2396
|
errorCorrectionLevel: "M",
|
|
2354
|
-
color: { dark:
|
|
2397
|
+
color: { dark: p.black, light: p.white }
|
|
2355
2398
|
});
|
|
2356
2399
|
return this.qrSlot === null ? !1 : (this.qrSlot.classList.remove("ui-qr-slot--loading"), this.qrSlot.replaceChildren(this.createQrImage(e)), !0);
|
|
2357
2400
|
}
|
|
@@ -2375,20 +2418,20 @@ function ct(n) {
|
|
|
2375
2418
|
const t = Math.max(0, Math.min(1, n));
|
|
2376
2419
|
return t * t * (3 - 2 * t);
|
|
2377
2420
|
}
|
|
2378
|
-
function
|
|
2379
|
-
const [r, a, h] = n, d = Math.cos(t),
|
|
2421
|
+
function Ti(n, t, e, i, o, s) {
|
|
2422
|
+
const [r, a, h] = n, d = Math.cos(t), m = Math.sin(t), v = d * r + m * h, E = -m * r + d * h, k = Math.cos(e), C = Math.sin(e), R = k * a - C * E, P = C * a + k * E, J = 0.55;
|
|
2380
2423
|
return [i + v * s * J, o - R * s * J, P];
|
|
2381
2424
|
}
|
|
2382
|
-
function
|
|
2425
|
+
function Ri(n, t, e) {
|
|
2383
2426
|
n.beginPath(), n.moveTo(t[0], t[1]), n.lineTo(e[0], e[1]), n.strokeStyle = "#000", n.lineWidth = 2, n.stroke();
|
|
2384
2427
|
}
|
|
2385
|
-
function
|
|
2428
|
+
function Ii(n, t, e, i, o) {
|
|
2386
2429
|
const s = t(e), r = t(i), a = [
|
|
2387
2430
|
s[0] + (r[0] - s[0]) * o,
|
|
2388
2431
|
s[1] + (r[1] - s[1]) * o,
|
|
2389
2432
|
s[2]
|
|
2390
2433
|
];
|
|
2391
|
-
|
|
2434
|
+
Ri(n, s, a);
|
|
2392
2435
|
}
|
|
2393
2436
|
const $ = [-1, -1, 1], D = [1, -1, 1], B = [1, -1, -1], U = [-1, -1, -1], V = [-1, 1, 1], j = [1, 1, 1], H = [1, 1, -1], q = [-1, 1, -1], dt = [
|
|
2394
2437
|
[$, D],
|
|
@@ -2403,8 +2446,8 @@ const $ = [-1, -1, 1], D = [1, -1, 1], B = [1, -1, -1], U = [-1, -1, -1], V = [-
|
|
|
2403
2446
|
[j, H],
|
|
2404
2447
|
[H, q],
|
|
2405
2448
|
[q, V]
|
|
2406
|
-
],
|
|
2407
|
-
function
|
|
2449
|
+
], Li = 400, ut = '-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
|
|
2450
|
+
function Oi() {
|
|
2408
2451
|
const n = document.createElement("div");
|
|
2409
2452
|
Object.assign(n.style, {
|
|
2410
2453
|
position: "absolute",
|
|
@@ -2447,9 +2490,9 @@ function Ii() {
|
|
|
2447
2490
|
fontSize: "13px",
|
|
2448
2491
|
color: "#000",
|
|
2449
2492
|
fontFamily: ut
|
|
2450
|
-
}), o.textContent =
|
|
2493
|
+
}), o.textContent = _t(), e.appendChild(i), e.appendChild(o), n.appendChild(t), n.appendChild(e), { overlay: n, canvas: t, pctEl: i, phaseEl: o };
|
|
2451
2494
|
}
|
|
2452
|
-
class
|
|
2495
|
+
class Ni {
|
|
2453
2496
|
overlay;
|
|
2454
2497
|
canvas;
|
|
2455
2498
|
ctx;
|
|
@@ -2462,17 +2505,17 @@ class Oi {
|
|
|
2462
2505
|
visible = !1;
|
|
2463
2506
|
constructor(t, e = {}) {
|
|
2464
2507
|
this.startTime = performance.now();
|
|
2465
|
-
const i =
|
|
2508
|
+
const i = Oi();
|
|
2466
2509
|
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());
|
|
2467
|
-
const o = e.showDelay ??
|
|
2510
|
+
const o = e.showDelay ?? Li;
|
|
2468
2511
|
this.showTimerId = setTimeout(() => {
|
|
2469
2512
|
this.reveal();
|
|
2470
2513
|
}, o);
|
|
2471
2514
|
}
|
|
2472
2515
|
get loadingTexts() {
|
|
2473
2516
|
return {
|
|
2474
|
-
downloading:
|
|
2475
|
-
rendering:
|
|
2517
|
+
downloading: _t(),
|
|
2518
|
+
rendering: ln()
|
|
2476
2519
|
};
|
|
2477
2520
|
}
|
|
2478
2521
|
updateProgress(t, e) {
|
|
@@ -2525,7 +2568,7 @@ class Oi {
|
|
|
2525
2568
|
return;
|
|
2526
2569
|
const t = this.canvas.width / Math.min(devicePixelRatio, 2), e = this.canvas.height / Math.min(devicePixelRatio, 2), i = (performance.now() - this.startTime) / 1e3;
|
|
2527
2570
|
this.ctx.fillStyle = "#fff", this.ctx.fillRect(0, 0, t, e);
|
|
2528
|
-
const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, a = 0.785, h = 0.615, d = (C) =>
|
|
2571
|
+
const o = t / 2, s = e * 0.44, r = Math.min(t, e) * 0.08, a = 0.785, h = 0.615, d = (C) => Ti(C, a, h, o, s, r), m = 6, v = i % m / m, E = dt.length;
|
|
2529
2572
|
let k;
|
|
2530
2573
|
v < 0.35 ? k = ct(v / 0.35) * E : v < 0.55 ? k = E : v < 0.9 ? k = (1 - ct((v - 0.55) / 0.35)) * E : k = 0, this.ctx.shadowBlur = 5, this.ctx.shadowColor = "rgba(30,30,30,0.08)";
|
|
2531
2574
|
for (let C = 0; C < E && !(C >= k); C++) {
|
|
@@ -2533,12 +2576,12 @@ class Oi {
|
|
|
2533
2576
|
if (R === void 0)
|
|
2534
2577
|
continue;
|
|
2535
2578
|
const P = Math.min(1, k - C);
|
|
2536
|
-
|
|
2579
|
+
Ii(this.ctx, d, R[0], R[1], P);
|
|
2537
2580
|
}
|
|
2538
2581
|
this.ctx.shadowBlur = 0;
|
|
2539
2582
|
}
|
|
2540
2583
|
}
|
|
2541
|
-
class
|
|
2584
|
+
class Mi {
|
|
2542
2585
|
constructor(t) {
|
|
2543
2586
|
this.options = t, this.element = document.createElement("div"), Object.assign(this.element.style, { display: "flex", gap: "0.375rem" }), this.onFullscreenChange = () => {
|
|
2544
2587
|
this.setFullscreenIcon(document.fullscreenElement !== null);
|
|
@@ -2563,7 +2606,7 @@ class Ni {
|
|
|
2563
2606
|
this.arBtn = this.syncButton(this.arBtn, t.ar !== !1 && this.options.onAr !== void 0, () => new b({
|
|
2564
2607
|
variant: "outline",
|
|
2565
2608
|
size: "icon",
|
|
2566
|
-
label:
|
|
2609
|
+
label: Me(),
|
|
2567
2610
|
icon: g.ar(),
|
|
2568
2611
|
onClick: () => {
|
|
2569
2612
|
this.options.onAr?.();
|
|
@@ -2571,7 +2614,7 @@ class Ni {
|
|
|
2571
2614
|
})), this.fullscreenBtn = this.syncButton(this.fullscreenBtn, t.fullscreen !== !1 && this.options.onFullscreen !== void 0, () => new b({
|
|
2572
2615
|
variant: "outline",
|
|
2573
2616
|
size: "icon",
|
|
2574
|
-
label:
|
|
2617
|
+
label: tn(),
|
|
2575
2618
|
icon: g.fullscreen(),
|
|
2576
2619
|
onClick: () => {
|
|
2577
2620
|
this.options.onFullscreen?.();
|
|
@@ -2592,9 +2635,9 @@ class z {
|
|
|
2592
2635
|
targetTilt: e.tilt,
|
|
2593
2636
|
targetZoom: e.zoom,
|
|
2594
2637
|
thetaOffset: 0
|
|
2595
|
-
}, o =
|
|
2638
|
+
}, o = zi(t, e, i);
|
|
2596
2639
|
e.onChange((s) => {
|
|
2597
|
-
i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom,
|
|
2640
|
+
i.targetRotation = s.rotation - i.thetaOffset, i.targetTilt = s.tilt, i.targetZoom = s.zoom, Pi(o, e, s);
|
|
2598
2641
|
}), this.element.appendChild(z.buildZoom(o.zoomOut, o.zoomIn)), this.element.appendChild(z.buildDpad(o.tiltUp, o.rotateLeft, o.reset, o.rotateRight, o.tiltDown));
|
|
2599
2642
|
}
|
|
2600
2643
|
static buildZoom(t, e) {
|
|
@@ -2615,7 +2658,7 @@ class z {
|
|
|
2615
2658
|
return r;
|
|
2616
2659
|
}
|
|
2617
2660
|
}
|
|
2618
|
-
function
|
|
2661
|
+
function zi(n, t, e) {
|
|
2619
2662
|
const i = (r) => Math.max(t.limits?.minZoom ?? 1, Math.min(t.limits?.maxZoom ?? 1 / 0, r)), o = (r) => {
|
|
2620
2663
|
const a = t.limits?.minRotate, h = t.limits?.maxRotate;
|
|
2621
2664
|
return a !== void 0 || h !== void 0 ? Math.max(a ?? -1 / 0, Math.min(h ?? 1 / 0, r)) : r;
|
|
@@ -2629,34 +2672,34 @@ function Li(n, t, e) {
|
|
|
2629
2672
|
d > 180 || d < 0 ? (e.targetTilt = d > 180 ? 360 - d : -d, e.thetaOffset = (e.thetaOffset + 180) % 360, n.tilt(e.targetTilt).rotate(e.targetRotation + e.thetaOffset).set()) : (e.targetTilt = d, n.tilt(e.targetTilt).set());
|
|
2630
2673
|
};
|
|
2631
2674
|
return {
|
|
2632
|
-
zoomOut: new b({ variant: "outline", size: "icon", label:
|
|
2675
|
+
zoomOut: new b({ variant: "outline", size: "icon", label: On(), icon: g.zoomOut(), onClick: () => {
|
|
2633
2676
|
e.targetZoom = i(e.targetZoom - 10), n.zoom(e.targetZoom).set();
|
|
2634
2677
|
} }),
|
|
2635
|
-
zoomIn: new b({ variant: "outline", size: "icon", label:
|
|
2678
|
+
zoomIn: new b({ variant: "outline", size: "icon", label: Tn(), icon: g.zoomIn(), onClick: () => {
|
|
2636
2679
|
e.targetZoom = i(e.targetZoom + 10), n.zoom(e.targetZoom).set();
|
|
2637
2680
|
} }),
|
|
2638
|
-
tiltUp: new b({ variant: "outline", size: "icon", label:
|
|
2681
|
+
tiltUp: new b({ variant: "outline", size: "icon", label: Hn(), icon: g.tiltUp(), onClick: () => {
|
|
2639
2682
|
s(-15);
|
|
2640
2683
|
} }),
|
|
2641
|
-
rotateLeft: new b({ variant: "outline", size: "icon", label:
|
|
2684
|
+
rotateLeft: new b({ variant: "outline", size: "icon", label: Pn(), icon: g.rotateLeft(), onClick: () => {
|
|
2642
2685
|
e.targetRotation = o(e.targetRotation - 15), n.rotate(e.targetRotation + e.thetaOffset).set();
|
|
2643
2686
|
} }),
|
|
2644
|
-
reset: new b({ variant: "outline", size: "icon", label:
|
|
2687
|
+
reset: new b({ variant: "outline", size: "icon", label: kn(), icon: g.reset(), onClick: () => {
|
|
2645
2688
|
e.thetaOffset = 0, n.reset();
|
|
2646
2689
|
} }),
|
|
2647
|
-
rotateRight: new b({ variant: "outline", size: "icon", label:
|
|
2690
|
+
rotateRight: new b({ variant: "outline", size: "icon", label: Bn(), icon: g.rotateRight(), onClick: () => {
|
|
2648
2691
|
e.targetRotation = o(e.targetRotation + 15), n.rotate(e.targetRotation + e.thetaOffset).set();
|
|
2649
2692
|
} }),
|
|
2650
|
-
tiltDown: new b({ variant: "outline", size: "icon", label:
|
|
2693
|
+
tiltDown: new b({ variant: "outline", size: "icon", label: Wn(), icon: g.tiltDown(), onClick: () => {
|
|
2651
2694
|
s(15);
|
|
2652
2695
|
} })
|
|
2653
2696
|
};
|
|
2654
2697
|
}
|
|
2655
|
-
function
|
|
2698
|
+
function Pi(n, t, e) {
|
|
2656
2699
|
const i = t.limits;
|
|
2657
2700
|
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);
|
|
2658
2701
|
}
|
|
2659
|
-
const
|
|
2702
|
+
const L = {
|
|
2660
2703
|
/** Attribute selection requested (cancelable). `detail`: `{ attribute, value }`. */
|
|
2661
2704
|
SELECT: "ui:select",
|
|
2662
2705
|
/** Attribute selection applied. `detail`: `{ attribute, value }`. */
|
|
@@ -2667,27 +2710,29 @@ const O = {
|
|
|
2667
2710
|
CONFIGURATION_CHANGE: "vd:configuration-change",
|
|
2668
2711
|
/** Configuration submitted (bubbles). `detail`: the resolved configuration handed to the host. */
|
|
2669
2712
|
CONFIGURATION_SUBMIT: "vd:configuration-submit"
|
|
2670
|
-
},
|
|
2671
|
-
let
|
|
2713
|
+
}, Fi = 5;
|
|
2714
|
+
let $i = 0;
|
|
2672
2715
|
function G(n) {
|
|
2673
2716
|
const t = n.replace(/([A-Z])/g, " $1").trim();
|
|
2674
2717
|
return t.charAt(0).toUpperCase() + t.slice(1).toLowerCase();
|
|
2675
2718
|
}
|
|
2676
|
-
function
|
|
2719
|
+
function Di(n, t, e, i, o) {
|
|
2677
2720
|
const s = document.createElement("div");
|
|
2678
2721
|
s.className = "vd-attribute", s.dataset.name = n.name;
|
|
2679
2722
|
const r = document.createElement("span");
|
|
2680
|
-
r.className = "vd-attribute-label", r.textContent = G(n.name), r.id = `vd-attribute-label-${
|
|
2681
|
-
const a = n.values.find((
|
|
2682
|
-
return d.onSelect((
|
|
2683
|
-
e.dispatch(
|
|
2684
|
-
}), o(n.name, (
|
|
2685
|
-
d.setSelected(
|
|
2686
|
-
}), s.appendChild(d.element), s
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2723
|
+
r.className = "vd-attribute-label", r.textContent = G(n.name), r.id = `vd-attribute-label-${$i++}`, s.appendChild(r), s.setAttribute("role", "group"), s.setAttribute("aria-labelledby", r.id);
|
|
2724
|
+
const a = n.values.find((m) => t.getValue(n.name, m)?.isSelected === !0), h = n.values.map(G), d = n.values.length <= Fi ? new _i(n.values, a, h) : new Ci(n.name, n.values, G(n.name), a, h);
|
|
2725
|
+
return d.onSelect((m) => {
|
|
2726
|
+
e.dispatch(L.SELECT, { attribute: n.name, value: m }, !0).defaultPrevented || i(n.name, m);
|
|
2727
|
+
}), o(n.name, (m) => {
|
|
2728
|
+
d.setSelected(m.value), e.dispatch(L.SELECTED, { attribute: n.name, value: m.value });
|
|
2729
|
+
}), s.appendChild(d.element), { element: s, setSelectable: (m) => {
|
|
2730
|
+
d.setEnabled(m);
|
|
2731
|
+
} };
|
|
2732
|
+
}
|
|
2733
|
+
const Bi = 80, Ui = 2500;
|
|
2734
|
+
class Vi {
|
|
2735
|
+
constructor(t, e = Ui) {
|
|
2691
2736
|
this.configuration = t, this.resetMs = e, this.element = document.createElement("div"), this.element.className = "vd-commerce vd-hidden";
|
|
2692
2737
|
const i = document.createElement("div");
|
|
2693
2738
|
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: () => {
|
|
@@ -2719,7 +2764,7 @@ class Bi {
|
|
|
2719
2764
|
this.priceEl.textContent = "", this.vatEl.textContent = "";
|
|
2720
2765
|
return;
|
|
2721
2766
|
}
|
|
2722
|
-
this.priceEl.textContent =
|
|
2767
|
+
this.priceEl.textContent = ji(t.price, t.currency), this.vatEl.textContent = ht(this.configuration.vatDisplay);
|
|
2723
2768
|
}
|
|
2724
2769
|
renderButton() {
|
|
2725
2770
|
const t = this.configuration.submitEnabled;
|
|
@@ -2727,11 +2772,11 @@ class Bi {
|
|
|
2727
2772
|
}
|
|
2728
2773
|
async handleSubmit() {
|
|
2729
2774
|
if (this.state !== "busy") {
|
|
2730
|
-
this.setState("busy",
|
|
2775
|
+
this.setState("busy", Xn());
|
|
2731
2776
|
try {
|
|
2732
|
-
await this.configuration.submit(), this.setState("success",
|
|
2777
|
+
await this.configuration.submit(), this.setState("success", ni());
|
|
2733
2778
|
} catch {
|
|
2734
|
-
this.setState("failed",
|
|
2779
|
+
this.setState("failed", ri());
|
|
2735
2780
|
}
|
|
2736
2781
|
this.scheduleReset();
|
|
2737
2782
|
}
|
|
@@ -2749,9 +2794,9 @@ class Bi {
|
|
|
2749
2794
|
}
|
|
2750
2795
|
}
|
|
2751
2796
|
function ht(n) {
|
|
2752
|
-
return (n ?? "").slice(0,
|
|
2797
|
+
return (n ?? "").slice(0, Bi);
|
|
2753
2798
|
}
|
|
2754
|
-
function
|
|
2799
|
+
function ji(n, t) {
|
|
2755
2800
|
try {
|
|
2756
2801
|
const e = new Intl.NumberFormat(u(), { style: "currency", currency: t }), i = e.resolvedOptions().maximumFractionDigits ?? 2;
|
|
2757
2802
|
return e.format(n / 10 ** i);
|
|
@@ -2772,8 +2817,8 @@ class xt {
|
|
|
2772
2817
|
this.slot?.remove(), this.slot = null, this.panel = null;
|
|
2773
2818
|
}
|
|
2774
2819
|
}
|
|
2775
|
-
const
|
|
2776
|
-
class
|
|
2820
|
+
const Hi = 572;
|
|
2821
|
+
class qi {
|
|
2777
2822
|
/** @param actionBarSlot The shared corner slot the AR/fullscreen buttons live in — the
|
|
2778
2823
|
* "open configurator" toggle joins them there instead of floating as its own overlay. */
|
|
2779
2824
|
constructor(t) {
|
|
@@ -2793,7 +2838,7 @@ class ji {
|
|
|
2793
2838
|
this.container = t, e.classList.add("vd-attributes-sidebar"), this.closeButton = new b({
|
|
2794
2839
|
variant: "ghost",
|
|
2795
2840
|
size: "icon-sm",
|
|
2796
|
-
label:
|
|
2841
|
+
label: wn(),
|
|
2797
2842
|
icon: g.close({ size: 18 }),
|
|
2798
2843
|
onClick: () => {
|
|
2799
2844
|
this.expanded = !1, this.render();
|
|
@@ -2803,7 +2848,7 @@ class ji {
|
|
|
2803
2848
|
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({
|
|
2804
2849
|
variant: "outline",
|
|
2805
2850
|
size: "icon",
|
|
2806
|
-
label:
|
|
2851
|
+
label: gn(),
|
|
2807
2852
|
icon: g.configurator({ size: 18 }),
|
|
2808
2853
|
onClick: () => {
|
|
2809
2854
|
this.expanded = !0, this.render();
|
|
@@ -2819,7 +2864,7 @@ class ji {
|
|
|
2819
2864
|
observe() {
|
|
2820
2865
|
typeof ResizeObserver > "u" || this.container === null || (this.observer = new ResizeObserver((t) => {
|
|
2821
2866
|
const e = t[0]?.contentRect.width ?? 0;
|
|
2822
|
-
this.setCollapsible(e > 0 && e <
|
|
2867
|
+
this.setCollapsible(e > 0 && e < Hi);
|
|
2823
2868
|
}), this.observer.observe(this.container));
|
|
2824
2869
|
}
|
|
2825
2870
|
setCollapsible(t) {
|
|
@@ -2832,7 +2877,7 @@ class ji {
|
|
|
2832
2877
|
this.element.classList.toggle("vd-hidden", !this.visible), this.element.classList.toggle("vd-sidebar-collapsed", e), this.openButton.element.classList.toggle("vd-hidden", !e), this.closeButton.element.style.display = this.collapsible ? "" : "none", this.container.classList.toggle("vd-layout-sidebar-right", t), this.container.classList.toggle("vd-layout-sidebar-permanent", t && !this.collapsible);
|
|
2833
2878
|
}
|
|
2834
2879
|
}
|
|
2835
|
-
class
|
|
2880
|
+
class Gi {
|
|
2836
2881
|
attach(t, e) {
|
|
2837
2882
|
}
|
|
2838
2883
|
setVisible(t) {
|
|
@@ -2840,20 +2885,20 @@ class Hi {
|
|
|
2840
2885
|
destroy() {
|
|
2841
2886
|
}
|
|
2842
2887
|
}
|
|
2843
|
-
const
|
|
2888
|
+
const Zi = {
|
|
2844
2889
|
"inframe-bottom-left": () => new xt(),
|
|
2845
|
-
"sidebar-right": (n) => new
|
|
2846
|
-
hidden: () => new
|
|
2890
|
+
"sidebar-right": (n) => new qi(n),
|
|
2891
|
+
hidden: () => new Gi()
|
|
2847
2892
|
};
|
|
2848
|
-
function
|
|
2849
|
-
return (
|
|
2893
|
+
function Wi(n, t) {
|
|
2894
|
+
return (Zi[n ?? ""] ?? (() => new xt()))(t);
|
|
2850
2895
|
}
|
|
2851
2896
|
const Z = w.fontFamily.sans.join(", "), W = `
|
|
2852
2897
|
position: absolute;
|
|
2853
2898
|
display: flex;
|
|
2854
2899
|
z-index: 10;
|
|
2855
2900
|
transition: inset-inline-end 0.18s ease;
|
|
2856
|
-
`,
|
|
2901
|
+
`, Yi = `
|
|
2857
2902
|
/* Override browser's default black fullscreen backdrop */
|
|
2858
2903
|
.vd-container:fullscreen {
|
|
2859
2904
|
background: oklch(100% 0 0);
|
|
@@ -2891,7 +2936,7 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
2891
2936
|
display: flex;
|
|
2892
2937
|
flex-direction: column;
|
|
2893
2938
|
gap: ${l[1]};
|
|
2894
|
-
background: color-mix(in oklch, ${
|
|
2939
|
+
background: color-mix(in oklch, ${p.white} 85%, transparent);
|
|
2895
2940
|
backdrop-filter: blur(8px);
|
|
2896
2941
|
border-radius: ${l[2]};
|
|
2897
2942
|
padding: ${l[2]};
|
|
@@ -2919,12 +2964,12 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
2919
2964
|
display: flex;
|
|
2920
2965
|
flex-direction: column;
|
|
2921
2966
|
gap: ${l[3]};
|
|
2922
|
-
background: color-mix(in oklch, ${
|
|
2967
|
+
background: color-mix(in oklch, ${p.white} 85%, transparent);
|
|
2923
2968
|
backdrop-filter: blur(8px);
|
|
2924
|
-
border: 1px solid color-mix(in oklch, ${
|
|
2969
|
+
border: 1px solid color-mix(in oklch, ${p.neutral[900]} 8%, transparent);
|
|
2925
2970
|
border-radius: ${l[3]};
|
|
2926
2971
|
padding: ${l[3]};
|
|
2927
|
-
box-shadow: 0 ${l[1]} ${l[4]} color-mix(in oklch, ${
|
|
2972
|
+
box-shadow: 0 ${l[1]} ${l[4]} color-mix(in oklch, ${p.neutral[900]} 6%, transparent);
|
|
2928
2973
|
font-family: ${Z};
|
|
2929
2974
|
}
|
|
2930
2975
|
|
|
@@ -2938,7 +2983,7 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
2938
2983
|
.vd-attribute-label {
|
|
2939
2984
|
font-size: ${w.fontSize.xs};
|
|
2940
2985
|
font-weight: ${w.fontWeight.medium};
|
|
2941
|
-
color: ${
|
|
2986
|
+
color: ${p.neutral[500]};
|
|
2942
2987
|
text-transform: uppercase;
|
|
2943
2988
|
letter-spacing: 0.05em;
|
|
2944
2989
|
font-family: ${Z};
|
|
@@ -2977,10 +3022,10 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
2977
3022
|
z-index: 11;
|
|
2978
3023
|
display: flex;
|
|
2979
3024
|
flex-direction: column;
|
|
2980
|
-
background: color-mix(in oklch, ${
|
|
3025
|
+
background: color-mix(in oklch, ${p.white} 90%, transparent);
|
|
2981
3026
|
backdrop-filter: blur(10px);
|
|
2982
|
-
border-inline-start: 1px solid color-mix(in oklch, ${
|
|
2983
|
-
box-shadow: -${l[1]} 0 ${l[4]} color-mix(in oklch, ${
|
|
3027
|
+
border-inline-start: 1px solid color-mix(in oklch, ${p.neutral[900]} 8%, transparent);
|
|
3028
|
+
box-shadow: -${l[1]} 0 ${l[4]} color-mix(in oklch, ${p.neutral[900]} 5%, transparent);
|
|
2984
3029
|
}
|
|
2985
3030
|
|
|
2986
3031
|
@media (prefers-reduced-motion: no-preference) {
|
|
@@ -3022,7 +3067,7 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
3022
3067
|
flex-direction: column;
|
|
3023
3068
|
gap: ${l[2]};
|
|
3024
3069
|
padding-block-start: ${l[3]};
|
|
3025
|
-
border-block-start: 1px solid color-mix(in oklch, ${
|
|
3070
|
+
border-block-start: 1px solid color-mix(in oklch, ${p.neutral[900]} 8%, transparent);
|
|
3026
3071
|
font-family: ${Z};
|
|
3027
3072
|
}
|
|
3028
3073
|
|
|
@@ -3035,12 +3080,12 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
3035
3080
|
.vd-price {
|
|
3036
3081
|
font-size: ${w.fontSize.lg};
|
|
3037
3082
|
font-weight: ${w.fontWeight.semibold};
|
|
3038
|
-
color: ${
|
|
3083
|
+
color: ${p.neutral[900]};
|
|
3039
3084
|
}
|
|
3040
3085
|
|
|
3041
3086
|
.vd-vat {
|
|
3042
3087
|
font-size: ${w.fontSize.xs};
|
|
3043
|
-
color: ${
|
|
3088
|
+
color: ${p.neutral[500]};
|
|
3044
3089
|
}
|
|
3045
3090
|
|
|
3046
3091
|
.vd-cta {
|
|
@@ -3050,23 +3095,23 @@ const Z = w.fontFamily.sans.join(", "), W = `
|
|
|
3050
3095
|
|
|
3051
3096
|
/* Failed submit is the one place red belongs: a clear, recoverable error state. */
|
|
3052
3097
|
.vd-commerce[data-submit="failed"] .vd-cta {
|
|
3053
|
-
background: ${
|
|
3054
|
-
border-color: ${
|
|
3055
|
-
color: ${
|
|
3098
|
+
background: ${p.semantic.error};
|
|
3099
|
+
border-color: ${p.semantic.error};
|
|
3100
|
+
color: ${p.white};
|
|
3056
3101
|
}
|
|
3057
3102
|
|
|
3058
3103
|
`;
|
|
3059
|
-
function
|
|
3104
|
+
function Qi() {
|
|
3060
3105
|
if (Et(), document.getElementById("vd-styles") !== null)
|
|
3061
3106
|
return;
|
|
3062
3107
|
const n = document.createElement("style");
|
|
3063
|
-
n.id = "vd-styles", n.textContent =
|
|
3108
|
+
n.id = "vd-styles", n.textContent = Yi, document.head.appendChild(n);
|
|
3064
3109
|
}
|
|
3065
|
-
function
|
|
3110
|
+
function Ki(n, t) {
|
|
3066
3111
|
const e = document.createElement("a");
|
|
3067
3112
|
e.href = `data:image/png;base64,${n}`, e.download = t, e.click();
|
|
3068
3113
|
}
|
|
3069
|
-
class
|
|
3114
|
+
class Xi {
|
|
3070
3115
|
options;
|
|
3071
3116
|
settings = {};
|
|
3072
3117
|
container = null;
|
|
@@ -3076,13 +3121,17 @@ class Qi {
|
|
|
3076
3121
|
actionBar = null;
|
|
3077
3122
|
cameraControls = null;
|
|
3078
3123
|
attributes = null;
|
|
3124
|
+
/** Rendered attribute groups by name, so a selectable snapshot can reach their controls. */
|
|
3125
|
+
groupHandles = /* @__PURE__ */ new Map();
|
|
3126
|
+
/** The latest selectable snapshot, re-applied when the controls re-render. */
|
|
3127
|
+
lastSelectable = null;
|
|
3079
3128
|
layout = null;
|
|
3080
3129
|
commerce = null;
|
|
3081
3130
|
constructor(t) {
|
|
3082
3131
|
this.options = t;
|
|
3083
3132
|
}
|
|
3084
3133
|
attach(t) {
|
|
3085
|
-
|
|
3134
|
+
Qi(), this.container = t, this.loading = new Ni(t), this.slots.topRight = this.createSlot(t, "vd-slot-top-right"), this.slots.bottomRight = this.createSlot(t, "vd-slot-bottom-right");
|
|
3086
3135
|
}
|
|
3087
3136
|
onReady() {
|
|
3088
3137
|
this.loading?.hide(), this.loading = null, this.mountToolbar(), this.cameraControls !== null && (this.cameraControls.element.style.display = "flex"), this.layout?.setVisible(!0);
|
|
@@ -3091,7 +3140,7 @@ class Qi {
|
|
|
3091
3140
|
if (this.actionBar !== null || this.slots.bottomRight === null || this.container === null)
|
|
3092
3141
|
return;
|
|
3093
3142
|
const t = typeof this.container.requestFullscreen == "function";
|
|
3094
|
-
this.actionBar = new
|
|
3143
|
+
this.actionBar = new Mi({
|
|
3095
3144
|
onAr: this.options.onAr,
|
|
3096
3145
|
onFullscreen: t ? () => {
|
|
3097
3146
|
this.toggleFullscreen();
|
|
@@ -3112,16 +3161,31 @@ class Qi {
|
|
|
3112
3161
|
}
|
|
3113
3162
|
renderAttributeControls(t, e) {
|
|
3114
3163
|
if (!(this.container === null || this.slots.topRight === null || this.slots.bottomRight === null) && (this.cameraControls?.element.remove(), this.cameraControls = null, this.teardownConfigurator(), this.settings.cameraControls === !0 && (this.cameraControls = new z(this.options.cameraApi, this.options.cameraPositionApi), this.cameraControls.element.style.display = "none", this.slots.topRight.appendChild(this.cameraControls.element)), this.placeScreenshotButton(), e.length !== 0)) {
|
|
3115
|
-
this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes";
|
|
3116
|
-
for (const i of e)
|
|
3117
|
-
|
|
3164
|
+
this.attributes = document.createElement("div"), this.attributes.className = "vd-attributes", this.groupHandles = /* @__PURE__ */ new Map();
|
|
3165
|
+
for (const i of e) {
|
|
3166
|
+
const o = Di(
|
|
3118
3167
|
i,
|
|
3119
3168
|
t,
|
|
3120
3169
|
this.options.eventBus,
|
|
3121
3170
|
this.options.onSelect,
|
|
3122
3171
|
this.options.onSubscribe
|
|
3123
|
-
)
|
|
3124
|
-
|
|
3172
|
+
);
|
|
3173
|
+
this.groupHandles.set(i.name, o), this.attributes.appendChild(o.element);
|
|
3174
|
+
}
|
|
3175
|
+
this.commerce = new Vi(this.options.configuration), this.attributes.appendChild(this.commerce.element), this.layout = Wi(this.settings.configuratorLayout, this.slots.bottomRight), this.layout.attach(this.container, this.attributes), this.lastSelectable !== null && this.applySelectable(this.lastSelectable);
|
|
3176
|
+
}
|
|
3177
|
+
}
|
|
3178
|
+
/**
|
|
3179
|
+
* Grey out what the viewer reports as not pickable: per attribute in the
|
|
3180
|
+
* snapshot only the listed values stay enabled; attributes the snapshot
|
|
3181
|
+
* does not name are unrestricted. The interface renders, it never knows
|
|
3182
|
+
* the exclusion rules (kiesbaarheid live, binding-studio task 17).
|
|
3183
|
+
*/
|
|
3184
|
+
applySelectable(t) {
|
|
3185
|
+
this.lastSelectable = t;
|
|
3186
|
+
for (const [e, i] of this.groupHandles) {
|
|
3187
|
+
const o = t.find((s) => s.name === e);
|
|
3188
|
+
i.setSelectable(o?.selectable ?? null);
|
|
3125
3189
|
}
|
|
3126
3190
|
}
|
|
3127
3191
|
get viewerSettings() {
|
|
@@ -3129,7 +3193,7 @@ class Qi {
|
|
|
3129
3193
|
}
|
|
3130
3194
|
/** Tear down the configurator panel: price + CTA, attribute controls, layout. */
|
|
3131
3195
|
teardownConfigurator() {
|
|
3132
|
-
this.commerce?.destroy(), this.commerce = null, this.attributes?.remove(), this.attributes = null, this.layout?.destroy(), this.layout = null;
|
|
3196
|
+
this.commerce?.destroy(), this.commerce = null, this.attributes?.remove(), this.attributes = null, this.groupHandles = /* @__PURE__ */ new Map(), this.layout?.destroy(), this.layout = null;
|
|
3133
3197
|
}
|
|
3134
3198
|
destroy() {
|
|
3135
3199
|
this.loading?.destroy(), this.screenshotBtn?.element.remove(), this.actionBar?.destroy(), this.actionBar?.element.remove(), this.cameraControls?.element.remove(), this.teardownConfigurator();
|
|
@@ -3146,11 +3210,11 @@ class Qi {
|
|
|
3146
3210
|
t && this.screenshotBtn === null && (this.screenshotBtn = new b({
|
|
3147
3211
|
variant: "outline",
|
|
3148
3212
|
size: "icon",
|
|
3149
|
-
label:
|
|
3213
|
+
label: hn(),
|
|
3150
3214
|
icon: g.screenshot(),
|
|
3151
3215
|
onClick: () => {
|
|
3152
3216
|
this.options.snapshotApi.take("snapshot.png").onDeveloped(({ data: e, filename: i }) => {
|
|
3153
|
-
|
|
3217
|
+
Ki(e, i);
|
|
3154
3218
|
});
|
|
3155
3219
|
}
|
|
3156
3220
|
})), !t && this.screenshotBtn !== null && (this.screenshotBtn.element.remove(), this.screenshotBtn = null);
|
|
@@ -3159,8 +3223,8 @@ class Qi {
|
|
|
3159
3223
|
this.screenshotBtn === null || this.slots.topRight === null || (this.cameraControls !== null ? this.cameraControls.element.appendChild(this.screenshotBtn.element) : this.slots.topRight.appendChild(this.screenshotBtn.element));
|
|
3160
3224
|
}
|
|
3161
3225
|
}
|
|
3162
|
-
const
|
|
3163
|
-
class
|
|
3226
|
+
const Ji = {};
|
|
3227
|
+
class to {
|
|
3164
3228
|
defaultServer = "https://server.virtualdisplay.io";
|
|
3165
3229
|
options;
|
|
3166
3230
|
serverHost;
|
|
@@ -3201,7 +3265,7 @@ class Xi {
|
|
|
3201
3265
|
getServerUrl() {
|
|
3202
3266
|
if (this.serverHost !== void 0)
|
|
3203
3267
|
return this.serverHost;
|
|
3204
|
-
if (
|
|
3268
|
+
if (Ji?.VITE_VIRTUALDISPLAY_SERVER_HOST === void 0)
|
|
3205
3269
|
return this.defaultServer;
|
|
3206
3270
|
}
|
|
3207
3271
|
getParentElement() {
|
|
@@ -3213,12 +3277,12 @@ class Xi {
|
|
|
3213
3277
|
return t;
|
|
3214
3278
|
}
|
|
3215
3279
|
}
|
|
3216
|
-
function
|
|
3280
|
+
function eo(n) {
|
|
3217
3281
|
const { messenger: t } = n;
|
|
3218
3282
|
t.on(c.HANDSHAKE, (e) => {
|
|
3219
|
-
|
|
3283
|
+
Ot(e) && (_.info("Server handshake received, flushing publisher queue"), t.markReady());
|
|
3220
3284
|
}), t.on(c.SESSION, (e) => {
|
|
3221
|
-
|
|
3285
|
+
Nt(e) && n.onSession(e.sessionId);
|
|
3222
3286
|
}), t.on(c.MUTATION, (e) => {
|
|
3223
3287
|
Mt(e) && (n.attributes.handleMutationResult(e), n.configuration.handleSelectionChanged(n.attributes.getSelection()));
|
|
3224
3288
|
}), t.on(c.SNAPSHOT, (e) => {
|
|
@@ -3228,22 +3292,24 @@ function Ji(n) {
|
|
|
3228
3292
|
}), t.on(c.LOADING_INDICATOR, (e) => {
|
|
3229
3293
|
$t(e) && (e.error !== void 0 ? n.ui.showError(e.error) : n.ui.updateProgress(e.progress, e.phase));
|
|
3230
3294
|
}), t.on(c.CONFIG, (e) => {
|
|
3231
|
-
|
|
3295
|
+
Ut(e) && n.applyConfig(e);
|
|
3232
3296
|
}), t.on(c.MAPPING, (e) => {
|
|
3233
3297
|
Ft(e) && (n.attributes.handleMappingReceived(e), n.configuration.handleSelectionChanged(n.attributes.getSelection()), n.ui.renderAttributeControls(n.attributes, e.attributes), n.readyStateTracker.handleMappingReceived());
|
|
3234
|
-
}),
|
|
3298
|
+
}), no(n);
|
|
3235
3299
|
}
|
|
3236
|
-
function
|
|
3300
|
+
function no(n) {
|
|
3237
3301
|
const { messenger: t } = n;
|
|
3238
3302
|
t.on(c.FOCUS, (e) => {
|
|
3239
|
-
|
|
3303
|
+
Vt(e) && n.focus.handleStateReceived(e);
|
|
3240
3304
|
}), t.on(c.PRICING, (e) => {
|
|
3241
|
-
|
|
3305
|
+
jt(e) && n.configuration.handlePricingReceived(e.pricing);
|
|
3242
3306
|
}), t.on(c.SYNC, (e) => {
|
|
3243
3307
|
Dt(e) && n.onSync(e.connected);
|
|
3308
|
+
}), t.on(c.SELECTABLE, (e) => {
|
|
3309
|
+
Bt(e) && (n.selectable.handleSnapshot(e), n.ui.applySelectable(e.attributes));
|
|
3244
3310
|
});
|
|
3245
3311
|
}
|
|
3246
|
-
class
|
|
3312
|
+
class io {
|
|
3247
3313
|
ready = !1;
|
|
3248
3314
|
onReady;
|
|
3249
3315
|
constructor(t) {
|
|
@@ -3259,8 +3325,9 @@ class eo {
|
|
|
3259
3325
|
this.ready = !1;
|
|
3260
3326
|
}
|
|
3261
3327
|
}
|
|
3262
|
-
class
|
|
3328
|
+
class oo {
|
|
3263
3329
|
attributes;
|
|
3330
|
+
selectableState;
|
|
3264
3331
|
readyStateTracker;
|
|
3265
3332
|
messenger;
|
|
3266
3333
|
cameraApi;
|
|
@@ -3287,29 +3354,29 @@ class no {
|
|
|
3287
3354
|
constructor(t, e) {
|
|
3288
3355
|
this.options = t;
|
|
3289
3356
|
const i = e ?? {};
|
|
3290
|
-
this.serverHost = i.serverHost, this.iframeParams = i.iframeParams, this.initializeLogging(), this.messenger = new
|
|
3357
|
+
this.serverHost = i.serverHost, this.iframeParams = i.iframeParams, this.initializeLogging(), this.messenger = new Ht(
|
|
3291
3358
|
() => this.iframe?.contentWindow ?? null,
|
|
3292
3359
|
i.messengerOptions
|
|
3293
3360
|
);
|
|
3294
3361
|
const o = (r) => {
|
|
3295
3362
|
this.messenger.send(r);
|
|
3296
3363
|
};
|
|
3297
|
-
this.attributes = new
|
|
3364
|
+
this.attributes = new ue(o, (r, a) => {
|
|
3298
3365
|
this.notifyMutationFailed(r, a);
|
|
3299
|
-
}), this.snapshotApi = new
|
|
3366
|
+
}), this.selectableState = new he(), this.snapshotApi = new we(o), this.annotationsApi = new qt(o), this.cameraApi = new me(o), this.cameraPositionApi = new pe(), this.focusApi = new ve(o, (r) => {
|
|
3300
3367
|
this.dispatchFocusChange(r);
|
|
3301
|
-
}), this.configurationApi = new
|
|
3368
|
+
}), this.configurationApi = new be(
|
|
3302
3369
|
(r) => {
|
|
3303
3370
|
this.dispatchConfigurationChange(r);
|
|
3304
3371
|
},
|
|
3305
3372
|
(r) => {
|
|
3306
3373
|
this.dispatchConfigurationSubmit(r);
|
|
3307
3374
|
}
|
|
3308
|
-
), this.eventBus = new
|
|
3375
|
+
), this.eventBus = new Se(), this.arActivation = i.createArActivation?.(o), this.syncTracker = i.createSyncTracker?.(), this.readyStateTracker = new io(() => {
|
|
3309
3376
|
this.notifyReady();
|
|
3310
3377
|
});
|
|
3311
3378
|
const s = this.arActivation;
|
|
3312
|
-
this.ui = new
|
|
3379
|
+
this.ui = new Xi({
|
|
3313
3380
|
snapshotApi: this.snapshotApi,
|
|
3314
3381
|
cameraApi: this.cameraApi,
|
|
3315
3382
|
cameraPositionApi: this.cameraPositionApi,
|
|
@@ -3327,9 +3394,10 @@ class no {
|
|
|
3327
3394
|
}
|
|
3328
3395
|
/** Wire the inbound viewer protocol to the facades. */
|
|
3329
3396
|
wireIncomingMessages() {
|
|
3330
|
-
|
|
3397
|
+
eo({
|
|
3331
3398
|
messenger: this.messenger,
|
|
3332
3399
|
attributes: this.attributes,
|
|
3400
|
+
selectable: this.selectableState,
|
|
3333
3401
|
configuration: this.configurationApi,
|
|
3334
3402
|
snapshot: this.snapshotApi,
|
|
3335
3403
|
cameraPosition: this.cameraPositionApi,
|
|
@@ -3370,7 +3438,7 @@ class no {
|
|
|
3370
3438
|
*/
|
|
3371
3439
|
dispatchFocusChange(t) {
|
|
3372
3440
|
this.container?.dispatchEvent(
|
|
3373
|
-
new CustomEvent(
|
|
3441
|
+
new CustomEvent(L.FOCUS_CHANGE, { detail: t, bubbles: !0 })
|
|
3374
3442
|
);
|
|
3375
3443
|
}
|
|
3376
3444
|
/**
|
|
@@ -3379,13 +3447,13 @@ class no {
|
|
|
3379
3447
|
*/
|
|
3380
3448
|
dispatchConfigurationChange(t) {
|
|
3381
3449
|
this.container?.dispatchEvent(
|
|
3382
|
-
new CustomEvent(
|
|
3450
|
+
new CustomEvent(L.CONFIGURATION_CHANGE, { detail: t ?? null, bubbles: !0 })
|
|
3383
3451
|
);
|
|
3384
3452
|
}
|
|
3385
3453
|
/** Dispatch a bubbling `vd:configuration-submit` event when the CTA is used. */
|
|
3386
3454
|
dispatchConfigurationSubmit(t) {
|
|
3387
3455
|
this.container?.dispatchEvent(
|
|
3388
|
-
new CustomEvent(
|
|
3456
|
+
new CustomEvent(L.CONFIGURATION_SUBMIT, { detail: t, bubbles: !0 })
|
|
3389
3457
|
);
|
|
3390
3458
|
}
|
|
3391
3459
|
handleConfig(t) {
|
|
@@ -3405,10 +3473,10 @@ class no {
|
|
|
3405
3473
|
this.messenger.send({ type: c.FULLSCREEN });
|
|
3406
3474
|
}
|
|
3407
3475
|
initializeLogging() {
|
|
3408
|
-
this.options.debug === !0 &&
|
|
3476
|
+
this.options.debug === !0 && de(), _.info("Initializing Virtualdisplay client", { model: this.options.model });
|
|
3409
3477
|
}
|
|
3410
3478
|
createAndConnectIframe() {
|
|
3411
|
-
const e = new
|
|
3479
|
+
const e = new to(this.options, this.serverHost, this.iframeParams).create();
|
|
3412
3480
|
this.container = e.container, this.iframe = e.iframe, this.eventBus.attach(this.container), this.ui.attach(this.container);
|
|
3413
3481
|
try {
|
|
3414
3482
|
const i = new URL(this.iframe.src).origin;
|
|
@@ -3444,6 +3512,20 @@ class no {
|
|
|
3444
3512
|
onMutationFailed(t) {
|
|
3445
3513
|
this.mutationFailedCallbacks.push(t);
|
|
3446
3514
|
}
|
|
3515
|
+
/**
|
|
3516
|
+
* Subscribe to the viewer's selectability snapshots (kiesbaarheid live):
|
|
3517
|
+
* per attribute, which values the buyer can pick right now. Fires with the
|
|
3518
|
+
* current snapshot immediately when one already arrived. A model without
|
|
3519
|
+
* exclusions never sends one: everything stays selectable and this never
|
|
3520
|
+
* fires.
|
|
3521
|
+
*/
|
|
3522
|
+
onSelectableChange(t) {
|
|
3523
|
+
this.selectableState.onChange(t);
|
|
3524
|
+
}
|
|
3525
|
+
/** The selectable values for one attribute right now, or null when unrestricted. */
|
|
3526
|
+
getSelectable(t) {
|
|
3527
|
+
return this.selectableState.selectableFor(t);
|
|
3528
|
+
}
|
|
3447
3529
|
/**
|
|
3448
3530
|
* Trigger the composed AR flow directly (ar-session-handoff task 035): a host
|
|
3449
3531
|
* page that hides the built-in corner button (`viewerSettings.ar = false`,
|
|
@@ -3486,15 +3568,15 @@ class no {
|
|
|
3486
3568
|
this.readyStateTracker.clear(), this.readyCallbacks = [], this.mutationFailedCallbacks.length = 0, this.snapshotApi.clear(), this.messenger.destroy(), this.arActivation?.destroy(), this.ui.destroy(), this.container?.parentElement !== null && this.container?.parentElement !== void 0 && this.container.parentElement.removeChild(this.container), this.container = void 0, this.iframe = void 0;
|
|
3487
3569
|
}
|
|
3488
3570
|
}
|
|
3489
|
-
const
|
|
3490
|
-
function
|
|
3491
|
-
const t = new URL(`https://${
|
|
3571
|
+
const so = "ar.virtualdisplay.io";
|
|
3572
|
+
function ro(n) {
|
|
3573
|
+
const t = new URL(`https://${so}/go`);
|
|
3492
3574
|
return n.sessionId !== void 0 ? t.searchParams.set("session", n.sessionId) : (t.searchParams.set("license", n.license), t.searchParams.set("model", n.model)), t.toString();
|
|
3493
3575
|
}
|
|
3494
|
-
const
|
|
3495
|
-
class
|
|
3576
|
+
const ao = 1500;
|
|
3577
|
+
class lo {
|
|
3496
3578
|
options;
|
|
3497
|
-
qrModal = new
|
|
3579
|
+
qrModal = new xi();
|
|
3498
3580
|
/** The viewer's tracking session id, once the engine announces it (SESSION). */
|
|
3499
3581
|
sessionId;
|
|
3500
3582
|
/** Callbacks waiting on the SESSION message, resolved (or timed out) exactly once each. */
|
|
@@ -3516,7 +3598,7 @@ class ro {
|
|
|
3516
3598
|
}
|
|
3517
3599
|
/** The AR button handler: mobile activates AR in the engine, desktop shows the hand-off QR. */
|
|
3518
3600
|
activate() {
|
|
3519
|
-
if (
|
|
3601
|
+
if (le()) {
|
|
3520
3602
|
this.options.send({ type: c.AR_ACTIVATE });
|
|
3521
3603
|
return;
|
|
3522
3604
|
}
|
|
@@ -3540,7 +3622,7 @@ class ro {
|
|
|
3540
3622
|
const t = await this.waitForSessionId();
|
|
3541
3623
|
if (this.destroyed)
|
|
3542
3624
|
return;
|
|
3543
|
-
const e =
|
|
3625
|
+
const e = ro({
|
|
3544
3626
|
sessionId: t,
|
|
3545
3627
|
license: this.options.license,
|
|
3546
3628
|
model: this.options.model
|
|
@@ -3561,14 +3643,14 @@ class ro {
|
|
|
3561
3643
|
return this.sessionId !== void 0 ? Promise.resolve(this.sessionId) : new Promise((t) => {
|
|
3562
3644
|
const e = setTimeout(() => {
|
|
3563
3645
|
this.pendingTimers.delete(e), t(void 0);
|
|
3564
|
-
},
|
|
3646
|
+
}, ao);
|
|
3565
3647
|
this.pendingTimers.add(e), this.waiters.push((i) => {
|
|
3566
3648
|
this.pendingTimers.delete(e), clearTimeout(e), t(i);
|
|
3567
3649
|
});
|
|
3568
3650
|
});
|
|
3569
3651
|
}
|
|
3570
3652
|
}
|
|
3571
|
-
class
|
|
3653
|
+
class co {
|
|
3572
3654
|
callbacks = [];
|
|
3573
3655
|
lastKnown;
|
|
3574
3656
|
handleSync(t) {
|
|
@@ -3580,12 +3662,12 @@ class ao {
|
|
|
3580
3662
|
this.callbacks.push(t), this.lastKnown !== void 0 && t(this.lastKnown);
|
|
3581
3663
|
}
|
|
3582
3664
|
}
|
|
3583
|
-
class
|
|
3665
|
+
class mo extends oo {
|
|
3584
3666
|
syncStatusTracker;
|
|
3585
3667
|
constructor(t) {
|
|
3586
|
-
const e = new
|
|
3668
|
+
const e = new co();
|
|
3587
3669
|
super(t, {
|
|
3588
|
-
createArActivation: (i) => new
|
|
3670
|
+
createArActivation: (i) => new lo({
|
|
3589
3671
|
license: t.license,
|
|
3590
3672
|
model: t.model,
|
|
3591
3673
|
send: i
|
|
@@ -3599,19 +3681,19 @@ class uo extends no {
|
|
|
3599
3681
|
}
|
|
3600
3682
|
}
|
|
3601
3683
|
export {
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3684
|
+
qt as Annotations,
|
|
3685
|
+
Zt as Attribute,
|
|
3686
|
+
Gt as AttributeValue,
|
|
3687
|
+
me as Camera,
|
|
3688
|
+
be as Configuration,
|
|
3607
3689
|
A as ERROR_CODES,
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3690
|
+
ve as Focus,
|
|
3691
|
+
ye as Photo,
|
|
3692
|
+
we as Snapshot,
|
|
3693
|
+
L as VD_EVENTS,
|
|
3694
|
+
mo as VirtualdisplayClient,
|
|
3613
3695
|
f as VirtualdisplayError,
|
|
3614
|
-
|
|
3615
|
-
|
|
3696
|
+
de as enableDebugMode,
|
|
3697
|
+
uo as isDebugMode,
|
|
3616
3698
|
_ as logger
|
|
3617
3699
|
};
|